OSVauco/docs/HANDOFF.md
chrischristiansen-glitch dc9f6265be
docs(handoff): oppdater HANDOFF.md — IAP auth fix for opax-mcp 2026-06-18
Updated the last modified date and author in the HANDOFF document. Revised critical rules and completed tasks, including IAP Auth fixes for opax-mcp.
2026-06-18 14:46:19 +02:00

5.9 KiB

HANDOFF — Vauco OS

Sist oppdatert: 2026-06-18 14:00 CEST Skrevet av: Perplexity (Orchestrator) Status: Fase B — Gitea er primær Git. GitHub er fasa ut.


⚠️ KRITISKE REGLER — les alltid først

  • Hovedapp: main.py i rot — IKKJE agents/core-logic/app.py
  • Dockerfile: agents/core-logic/Dockerfile — WORKDIR /app, CMD uvicorn main:app
  • Region: us-central1 | Service: osvauco-agent | Prosjekt: propane-will-491900-m5
  • Test via proxy: gcloud run services proxy osvauco-agent --region us-central1 --project propane-will-491900-m5 --port 8181
  • 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/Gitea.
  • Primær Git: http://34.59.131.162:3000/chris/OSVauco — GitHub er IKKJE lenger i bruk.
  • Git remote på VM: http://chris:<TOKEN>@34.59.131.162:3000/chris/OSVauco.git

Fullført i dag (2026-06-18) — IAP Auth fix for opax-mcp

Oppgave Status
Identifisert rotårsak: feil IAP audience i identity token-kall
Lagt til roles/iap.httpsResourceAccessor for jason-vauger SA
Oppdatert opax-mcp/server.py — ny env var OPAX_IAP_CLIENT_ID som audience
Lagt til OPAX_IAP_CLIENT_ID env var i Cloud Run (revisjon 00019 — feil navn IAP_CLIENT_ID) ⚠️
Rettet env var navn til OPAX_IAP_CLIENT_ID i Cloud Run — revisjon 00020 deployed
Revisjon opax-mcp-00020-w6j aktiv med 100% trafikk

Fullført tidligere (2026-06-15)

Oppgave Status
agents/tools/opax_mcp_client.py — REST-klient alle 25 tools
agents/tools/mcp_tools.py — X-MCP-Secret fix
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 kjøyrer som systemd-teneste (overlever reboot)
Mirror-repo sletta og erstatta med vanleg repo
2867 commits pusha frå GitHub → Gitea
Gitea API-tokens i Secret Manager
GitHub fasa ut — Gitea er no primær

🖥 Systemstatus

Komponent URL / Referanse Status
osvauco-agent (Cloud Run) https://osvauco-agent-zjbgp3prqg-uc.a.run.app Live
opax-mcp (Cloud Run) https://opax-mcp-357036551735.us-central1.run.app Live (rev 00020)
opax frontend (IAP LB) https://opax.vauco.no Live
Jason (Vertex AI Agent) Agent Engine, us-central1 Live
Gitea (self-hosted) http://34.59.131.162:3000 Live
GitHub (legacy) https://github.com/vauco-saas/OSVauco ⚠️ Fasa ut

🔑 Credentials

  • Gitea login: chris / se Secret Manager
  • Gitea API-token: Secret Manager → gitea-api-token
  • MCP-Secret: Secret Manager → mcp-secret
  • Prosjekt: propane-will-491900-m5
  • IAP OAuth Client ID (opax backend): 357036551735-kq8nt71d38hfqlcfb3n52ef7ala4meo.apps.googleusercontent.com
  • IAP Backend Service path: /projects/357036551735/global/backendServices/<navn> (satt som OPAX_IAP_CLIENT_ID i Cloud Run)

🎯 Gjenstår (prioritert)

  1. KRITISK — Verifiser IAP auth end-to-end — kjør verifikasjonskommando under og bekreft HTTP/2 200
  2. Oppdater Gitea-klient-logikk i agenter (fra GitHub API → Gitea API)
  3. DNS/TLS for Gitea (git.vauco.no)
  4. GPU VM-arbeid (planlagt)
  5. Smoke-test pipeline for opax-mcp etter IAP-fix

🚀 Neste sesjon — start her

1. Verifiser IAP auth fix (VIKTIGST)

Kjør fra osvauco-dev-vm:

# Hent identity token med korrekt IAP audience
TOKEN=$(curl -s -H "Metadata-Flavor: Google" \
  "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=357036551735-kq8nt71d38hfqlcfb3n52ef7ala4meo.apps.googleusercontent.com&format=full")

# Test mot opax via IAP load balancer
curl -si https://opax.vauco.no/opax/build-status \
  -H "Authorization: Bearer $TOKEN" | head -5

Forventet: HTTP/2 200 (tidligere: HTTP/2 401)

2. Sjekk Jason sin status

curl -s https://osvauco-agent-zjbgp3prqg-uc.a.run.app/health \
  -H "Authorization: Bearer $(gcloud auth print-identity-token)"

3. Hva som ble fikset i opax-mcp/server.py

Fil: opax-mcp/server.py — commit 9542106 ("OPAX_IAP_CLIENT_ID som IAP audience i identitytoken")

Endring linje 17:

# FØR:
OPAX_BASE_URL = os.environ.get("OPAX_BASE_URL", "https://opax.vauco.no")

# ETTER:
OPAX_BASE_URL = os.environ.get("OPAX_BASE_URL", "https://opax.vauco.no")
OPAX_IAP_CLIENT_ID = os.environ.get("OPAX_IAP_CLIENT_ID", "")

Endring linje 37 (_opax_identity_token):

# FØR:
f"...identity?audience={OPAX_BASE_URL}&format=full"

# ETTER:
f"...identity?audience={OPAX_IAP_CLIENT_ID or OPAX_BASE_URL}&format=full"

Cloud Run env vars på opax-mcp (aktive i rev 00020):

Navn Verdi
OPAX_BASE_URL https://opax.vauco.no
OPAX_IAP_CLIENT_ID /projects/357036551735/global/backendServices/...
MCP_SECRET (fra Secret Manager)
GOOGLE_CLOUD_PROJECT propane-will-491900-m5

🏗 Arkitektur

Bruker
  └─► Jason (Vertex AI Agent Engine, Gemini 2.5 Pro)
        └─► osvauco-agent (Cloud Run)
              └─► opax-mcp (Cloud Run)
                    └─► [IAP] opax.vauco.no
                          └─► OPAX backend (GCP)

Auth-flyt for opax-mcp → opax.vauco.no:

opax-mcp container
  → GCE Metadata Service
  → identity token med audience = IAP_CLIENT_ID
  → Authorization: Bearer <token>
  → IAP validerer token
  → Request videresendt til OPAX backend