"""FastAPI application entry point."""
import structlog
from fastapi import FastAPI
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from navi.api.routes import agents, health, messages, sessions
from navi.api.websocket import router as ws_router
from navi.config import settings
structlog.configure(
wrapper_class=structlog.make_filtering_bound_logger(
getattr(__import__("logging"), settings.log_level)
),
)
app = FastAPI(
title="Navi",
description="Modular agent system — REST API and WebSocket",
version="0.1.0",
)
app.include_router(health.router)
app.include_router(agents.router)
app.include_router(sessions.router)
app.include_router(messages.router)
app.include_router(ws_router)
app.mount("/static", StaticFiles(directory="client"), name="static")
@app.get("/", include_in_schema=False)
async def index() -> FileResponse:
return FileResponse("client/index.html")