From 50c1256723c1048c0a968d3f4191ab356ea68b1c Mon Sep 17 00:00:00 2001 From: chrischristiansen-glitch Date: Mon, 15 Jun 2026 19:28:52 +0200 Subject: [PATCH] =?UTF-8?q?docs(handoff):=20komplett=20handoff=202026-06-1?= =?UTF-8?q?5=20=E2=80=94=20Jason=20live,=20Gitea=20oppe,=20opax-mcp=20tilk?= =?UTF-8?q?obla?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/HANDOFF.md | 158 +++++++++++++++++++++++++++++------------------- 1 file changed, 96 insertions(+), 62 deletions(-) diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md index d32e31d..9e00dbf 100644 --- a/docs/HANDOFF.md +++ b/docs/HANDOFF.md @@ -1,8 +1,8 @@ # HANDOFF — Vauco OS -**Sist oppdatert:** 2026-06-15 17:42 CEST -**Skrevet av:** Perplexity (Orchestrator) -**Status:** Fase B — aktiv sesjon +**Sist oppdatert:** 2026-06-15 19:27 CEST +**Skrevet av:** Perplexity (Orchestrator) +**Status:** Fase B — Jason operativ, Gitea oppe, GitHub fases ut --- @@ -15,84 +15,118 @@ - **ALDRI** `--audiences`-flag i smoke-tests - **Smoke-test:** peker på `/health` - **Curl mot prod:** alltid identity token — `TOKEN=$(gcloud auth print-identity-token)` -- **Ingen tredjepartsverktøy:** Cursor, Copilot og lignende skal IKKE brukes. Alt eies og kjøres i eget GCP/GitHub. +- **Ingen tredjepartsverktøy:** Cursor, Copilot og lignende skal IKKE brukes. Alt eies og kjøres i eget GCP/Gitea. - **MCP-server** (`opax-mcp/`) er intern binding mellom Jason/Emma og OPAX — ikke en ekstern klientintegrasjon. +- **Primær Git:** Gitea på `http://34.59.131.162:3000` — GitHub er mirror under utfasing. --- -## ✅ Levert denne sesjonen (2026-06-15) +## ✅ Levert denne sesjonen (2026-06-15 — del 2) | SHA | Commit | Hva | |-----|--------|-----| -| `2b79145` | `feat(CI1): opax-mcp server — full OPAX tool coverage + Dockerfile + cloudbuild` | MCP-server med 20 tools + CI/CD | -| `4f3a802` | `feat(CG5-onboard): token-basert invite-system + offentlig onboard-flow` | Invite-tokens, offentlig onboard, e-post | -| `099c1cc` | `feat(OQ-26): docs/gemma/world.md — Emma boot context` | Emma sin kontekstpakke | +| `e96e932` | `feat(jason): koble opax-mcp til Jason` | `opax_mcp_client.py` (25 tools), `mcp_tools.py` oppdatert, `jason-vauger.md` oppdatert | +| `5d137c1` | `fix(deploy_agent): rett import til vertexai.agent_engines` | SDK 1.157.0 import-fix | --- -## ✅ Lukkede issues denne sesjonen +## ✅ Fullført denne sesjonen -| ID | Hva | Løsning | -|----|-----|---------| -| OQ-26 | `docs/gemma/world.md` mangler — Emma blokkert | Opprettet ✅ | -| CG5-onboard | Ingen salgsflyt for kunde-onboarding | Token-invite system ✅ | -| CI1 (kode) | `opax-mcp/` var tom | server.py + Dockerfile + cloudbuild.mcp.yaml ✅ | - ---- - -## 🔴 CI1 — Siste steg (manuelt i GCP Console) - -`cloudbuild.mcp.yaml` er klar. Trigger må opprettes **av Chris** i GCP Console: - -**GCP Console → Cloud Build → Triggers → Create trigger** - -| Felt | Verdi | -|------|-------| -| Navn | `opax-mcp-deploy` | -| Repo | `vauco-saas/OSVauco` | -| Branch | `^main$` | -| Build config | `cloudbuild.mcp.yaml` | -| Included files | `opax-mcp/**` | -| Service account | `osvauco-agent-sa@propane-will-491900-m5.iam.gserviceaccount.com` | - -Alt kjører i ditt eget GCP — ingen tredjeparter. - ---- - -## 🟠 Gjenstår (prioritert) - -| # | Oppgave | Blokkering | -|---|---------|------------| -| 1 | Opprett Cloud Build-trigger for `opax-mcp` (se over) | Manuelt i GCP Console | -| 2 | Sett env-vars som mangler på `osvauco-agent` Cloud Run | GCP Console / gcloud | -| 3 | ML-3a VM — GPU Spot VM for Emma | Planlegging | -| 4 | C4 — Medioteq partnerstrategimøte | Aktiveres nå | -| 5 | CG5c — SMS (Twilio) | Venter på TWILIO_* env-vars | -| 6 | Verifiser Terminal + MD-panel + Docs Browser i nettleser | Manuell test | +| Oppgave | Status | +|---------|--------| +| `agents/tools/opax_mcp_client.py` — REST-klient alle 25 tools | ✅ | +| `agents/tools/mcp_tools.py` — X-MCP-Secret fix + delegerer til opax_mcp_client | ✅ | +| Jason deployet til Vertex AI Agent Engine | ✅ | +| Jason svarer på norsk og kallar tools automatisk | ✅ | +| Gitea installert på VM (`34.59.131.162:3000`) | ✅ | +| Gitea køyrer som systemd-teneste (overlever reboot) | ✅ | +| OSVauco mirror frå GitHub → Gitea (8h auto-sync) | ✅ | +| Firewall-regel `allow-gitea` (tcp:3000) | ✅ | --- ## 🏗 Systemstatus -| Komponent | Status | -|-----------|--------| -| `osvauco-agent` Cloud Run | ✅ Live `us-central1` | -| `opax.vauco.no` | ✅ Live | -| `opax-mcp/` kode | ✅ Pushet, venter på Cloud Build trigger | -| `docs/gemma/world.md` | ✅ Opprettet | -| Emma boot | ✅ Laster world.md ved oppstart | -| Invite-system | ✅ Live (`/onboard/invite/{token}`) | -| Kreditt | 2911 NOK, utløper 2026-07-10 | +| Komponent | URL / Referanse | Status | +|-----------|-----------------|--------| +| `osvauco-agent` Cloud Run | `us-central1` | ✅ Live | +| `opax-mcp` Cloud Run | `https://opax-mcp-zjbqp3prqq-uc.a.run.app` | ✅ Live (25 tools) | +| Jason Vertex AI Agent Engine | `reasoningEngines/237959055262351360` | ✅ Live | +| Gitea (eigen Git-server) | `http://34.59.131.162:3000` | ✅ Live + systemd | +| OSVauco repo på Gitea | `http://34.59.131.162:3000/chris/OSVauco` | ✅ Mirror aktiv | +| GitHub OSVauco | `https://github.com/vauco-saas/OSVauco` | 🔄 Under utfasing | +| `opax.vauco.no` | — | ✅ Live | +| Emma (Gemma, lokal VM) | — | ⏳ Neste fase | -**Env-vars som MANGLER på Cloud Run:** -`SENDGRID_API_KEY`, `TWILIO_ACCOUNT_SID`, `TWILIO_AUTH_TOKEN`, `TWILIO_FROM_NUMBER`, -`GOOGLE_CREDIT_TOTAL_USD`, `NOTIFY_EMAIL_TO`, `NOTIFY_WEBHOOK_URL`, `VAUCO_INTERNAL_WEBHOOK` +--- + +## 🔑 Credentials å hugse + +| System | Brukar | Passord/Nøkkel | +|--------|--------|----------------| +| Gitea | `chris` | `OSVauco@Gitea2026!` | +| Gitea API | `chris` | Basic auth eller token frå Settings → Applications | +| opax-mcp | — | `MCP_SECRET` i Secret Manager (`mcp-server-key`) | +| Jason Agent Engine | — | `reasoningEngines/237959055262351360` | + +--- + +## 🟠 Gjenstår (prioritert) + +| # | Oppgave | Notat | +|---|---------|-------| +| 1 | Opprett Gitea API-token for Jason/opax-mcp | Gitea → Settings → Applications | +| 2 | Oppdater `opax_mcp_client.py` GitHub-tools → Gitea API | Byt `api.github.com` → `34.59.131.162:3000/api/v1` | +| 3 | Sett `git.vauco.no` DNS → `34.59.131.162` | Domene for Gitea | +| 4 | HTTPS/TLS for Gitea (Caddy eller Nginx) | Etter DNS | +| 5 | Emma — Gemma lokal på ML-3a GPU VM | Eiga fase | +| 6 | Sett manglande env-vars på `osvauco-agent` | `SENDGRID_API_KEY`, `TWILIO_*`, `NOTIFY_*` | +| 7 | Test Jason end-to-end: prompt → opax-mcp tool → Gitea | Verifiser full stack | --- ## 📌 Neste sesjon — start her -1. GCP Console → Cloud Build → opprett trigger `opax-mcp-deploy` -2. Sett manglende env-vars på `osvauco-agent` -3. Test invite-flow: `POST /onboard/invite` → link → `GET /onboard/invite/{token}` -4. Neste kode: C4-forberedelse eller ML-3a VM +```bash +# 1. Verifiser at Gitea og Jason er oppe +curl -s http://34.59.131.162:3000/api/v1/repos/chris/OSVauco | python3 -m json.tool | grep updated_at + +# 2. Test Jason +cd ~/OSVauco/agents/core-logic && source .venv/bin/activate +python3 - <<'EOF' +import vertexai +from vertexai import agent_engines +vertexai.init(project="propane-will-491900-m5", location="us-central1") +agent = agent_engines.get("projects/357036551735/locations/us-central1/reasoningEngines/237959055262351360") +session = agent.create_session(user_id="chris") +for event in agent.stream_query(user_id="chris", session_id=session["id"], message="Status?"): + if event.get("content"): + print(event["content"]["parts"][0].get("text", ""), end="") +EOF + +# 3. Neste steg: lag Gitea API-token og oppdater opax_mcp_client.py +``` + +--- + +## 🗺 Arkitektur + +``` +Chris (naturleg språk) + ↓ +Jason Vauger (Vertex AI Agent Engine — Gemini 2.5 Flash) + reasoningEngines/237959055262351360 + ↓ +opax-mcp (Cloud Run — 25 tools) + https://opax-mcp-zjbqp3prqq-uc.a.run.app + ↓ +┌─────────────────────────────────┐ +│ Gitea 34.59.131.162:3000 │ ← Eigen Git (primær) +│ GCP Cloud Build / Run │ ← CI/CD + hosting +│ GitHub vauco-saas/OSVauco │ ← Mirror (utfasing) +└─────────────────────────────────┘ +``` + +--- + +*Jason Vauger — han blir den du trenger han til å bli.*