from fastapi import FastAPI from core_shared.observability import add_observability from core_shared import try_build_redis_client from core_shared.rate_limit import build_rate_limiter from app.api.routes import router from app.bootstrap.settings import ApiGatewaySettings from app.db.session import build_session_factory from app.infrastructure.request_context import GatewayRequestContextMiddleware def create_app() -> FastAPI: settings = ApiGatewaySettings() app = FastAPI( title="agent-platform api-gateway", version="0.1.0", ) app.state.settings = settings app.state.session_factory = build_session_factory(settings) app.state.rate_limiter = build_rate_limiter(try_build_redis_client(settings.redis_url)) add_observability(app, settings.service_name) app.add_middleware(GatewayRequestContextMiddleware) app.include_router(router) return app