"""FastAPI proxy entrypoint — the guarding proxy of charter §4. Skeleton only: a health check plus the five role endpoints as stubs so the container runs and the client has something to point at. Real prompt routing, model selection, logging, and auth land later — all server-side (§4, §5). """ from fastapi import FastAPI app = FastAPI(title="coc-rpg proxy", version="0.0.1") @app.get("/health") def health() -> dict: """Liveness probe for compose / fly.io.""" return {"status": "ok"} # ── Role endpoints (charter §4) ────────────────────────────────────────────── # The client knows these paths and nothing about which model or prompt serves # them. Stubs for now; each will load its prompt from api/prompts/ and route to # the configured model. @app.post("/dm/narrate") def narrate() -> dict: return {"detail": "not implemented"} @app.post("/dm/adjudicate") def adjudicate() -> dict: return {"detail": "not implemented"} @app.post("/dm/improvise") def improvise() -> dict: return {"detail": "not implemented"} @app.post("/npc/speak") def npc_speak() -> dict: return {"detail": "not implemented"} @app.post("/party/banter") def banter() -> dict: return {"detail": "not implemented"}