"""shira-hermes — FastAPI application.""" from __future__ import annotations import os import logging from pathlib import Path from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from api.routes.health import router as health_router from api.routes.smart_assistant import router as smart_assistant_router logging.basicConfig( level=logging.INFO, format="%(asctime)s [%(name)s] %(levelname)s: %(message)s", ) logger = logging.getLogger("shira.app") app = FastAPI( title="shira-hermes", description="Shira AI Assistant — Hermes Agent backend for EspoCRM SmartAssistant", version="0.2.0", ) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_methods=["GET", "POST", "OPTIONS"], allow_headers=["Content-Type", "X-Api-Key"], ) app.include_router(health_router) app.include_router(smart_assistant_router) @app.on_event("startup") async def ensure_data_dirs(): """Create persistent data directories if they don't exist.""" data_dir = os.environ.get("SHIRA_DATA_DIR", "/opt/data") dirs = [ f"{data_dir}/skills", f"{data_dir}/profiles", f"{data_dir}/cases", ] for d in dirs: Path(d).mkdir(parents=True, exist_ok=True) logger.info("Data directories ready at %s", data_dir)