from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from fastapi.responses import FileResponse import uvicorn from config import settings from routers import chat, google_chat @asynccontextmanager async def lifespan(app: FastAPI): yield from llm_client import cleanup await cleanup() app = FastAPI(title="Cortex Dispatcher", lifespan=lifespan) app.include_router(chat.router) app.include_router(google_chat.router) app.mount("/static", StaticFiles(directory="static"), name="static") @app.get("/") async def index() -> FileResponse: return FileResponse("static/index.html") @app.get("/health") async def health() -> dict: return {"status": "ok"} if __name__ == "__main__": uvicorn.run( "main:app", host=settings.host, port=settings.port, reload=True, )