Spaces:
Sleeping
Sleeping
| """ | |
| FastAPI application for MindSphere Coach. | |
| """ | |
| from __future__ import annotations | |
| import logging | |
| from pathlib import Path | |
| from fastapi import FastAPI, WebSocket | |
| # Configure logging to show INFO from mindsphere modules | |
| logging.basicConfig(level=logging.INFO, format="%(name)s - %(levelname)s - %(message)s") | |
| logging.getLogger("mindsphere").setLevel(logging.INFO) | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from fastapi.staticfiles import StaticFiles | |
| from fastapi.responses import FileResponse | |
| from .routes import router, get_session_manager | |
| from .websocket import websocket_endpoint | |
| app = FastAPI( | |
| title="MindSphere Coach", | |
| description="Interactive ToM-powered coaching agent with Active Inference", | |
| version="0.1.0", | |
| ) | |
| # CORS for development | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| # API routes | |
| app.include_router(router) | |
| # Static frontend files | |
| FRONTEND_DIR = Path(__file__).parent.parent / "frontend" | |
| if FRONTEND_DIR.exists(): | |
| app.mount("/static", StaticFiles(directory=str(FRONTEND_DIR)), name="static") | |
| async def root(): | |
| """Serve the main frontend page.""" | |
| index_path = FRONTEND_DIR / "index.html" | |
| if index_path.exists(): | |
| return FileResponse(str(index_path)) | |
| return {"message": "MindSphere Coach API", "docs": "/docs"} | |
| async def ws_endpoint(websocket: WebSocket, session_id: str): | |
| """WebSocket endpoint for real-time coaching.""" | |
| sm = get_session_manager() | |
| await websocket_endpoint(websocket, session_id, sm) | |