"""Governor — Fenster auf den Token-Waechter (:8100). Der Governor ist ein eigenstaendiger, absichtlich winziger Proxy ohne Datenbank: er sitzt zwischen den Coding-Agenten und diesem Gateway, zaehlt ehrlich mit (echte `usage.prompt_tokens` aus jeder Antwort) und zieht bei ueberlangen Sitzungen die Notbremse. Hier wird nichts Neues erhoben — nur sein Status-Endpunkt gleichursprünglich fuer die Oberflaeche verfuegbar gemacht, damit das Frontend nicht per CORS auf einen zweiten Port ausweichen muss. Faellt der Governor aus, liefert dieser Router `ok: false` statt eines Fehlers: die Kachel zeigt dann „nicht erreichbar" und das Cockpit bleibt heil. """ import os import httpx from fastapi import APIRouter router = APIRouter(prefix="/api") GOVERNOR_URL = os.environ.get("MC_GOVERNOR_URL", "http://127.0.0.1:8100") @router.get("/governor") async def governor_status() -> dict: """Momentaufnahme des Token-Waechters. Nie werfen — die Kachel darf nie das Cockpit reissen.""" try: async with httpx.AsyncClient(timeout=3.0) as c: r = await c.get(f"{GOVERNOR_URL}/governor/status") r.raise_for_status() data = r.json() data["reachable"] = True return data except Exception as exc: return { "ok": False, "reachable": False, "error": f"{type(exc).__name__}: {exc}", "url": GOVERNOR_URL, }