"""Cognitive Agent Runtime — modular package. uvicorn entrypoint: agent:app """ import logging from pathlib import Path from dotenv import load_dotenv load_dotenv(Path(__file__).parent.parent / ".env") logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(name)s] %(message)s", datefmt="%H:%M:%S") from fastapi import FastAPI from fastapi.responses import FileResponse from fastapi.staticfiles import StaticFiles from .api import register_routes STATIC_DIR = Path(__file__).parent.parent / "static" app = FastAPI(title="cog") # Register all API + WS routes register_routes(app) # Serve index.html explicitly, then static assets @app.get("/") async def index(): return FileResponse(STATIC_DIR / "index.html") @app.get("/callback") async def callback(): """OIDC callback — serves the same SPA, JS handles the code exchange.""" return FileResponse(STATIC_DIR / "index.html") app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static")