diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index 5a379183e33..db6b0ebfce4 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -927,9 +927,33 @@ async def proxy_startup_event(app: FastAPI): # noqa: PLR0915 ## Initialize shared aiohttp session for connection reuse shared_aiohttp_session = await _initialize_shared_aiohttp_session() + ## /v2/agents+sessions cleanup sweeper (Epic A — Cursor SDK). + ## Idempotent; safe even if the agent_session_endpoints module never + ## sees traffic. + try: + from litellm.proxy.agent_session_endpoints.cleanup import ( + start_cleanup_sweeper, + ) + + start_cleanup_sweeper() + except Exception as exc: + verbose_proxy_logger.warning( + "agent_session_endpoints cleanup sweeper failed to start: %s", exc + ) + # End of startup event yield + ## Stop the agent session cleanup sweeper. + try: + from litellm.proxy.agent_session_endpoints.cleanup import ( + stop_cleanup_sweeper, + ) + + stop_cleanup_sweeper() + except Exception: + pass + # Shutdown event - close shared aiohttp session if shared_aiohttp_session is not None: try: @@ -14883,6 +14907,27 @@ app.include_router(ui_discovery_endpoints_router) # Eager: /models/{name}:method overlaps with the OpenAI /models endpoint. app.include_router(google_router) +# /v2/agents, /v2/sessions — Cursor SDK agent runtime (Epic A). +# Mounted under /v2/ to avoid collision with the existing /v1/agents +# (A2A registry in litellm/proxy/agent_endpoints/). +from litellm.proxy.agent_session_endpoints import ( + agent_router as agent_session_agent_router, +) +from litellm.proxy.agent_session_endpoints import ( + internal_router as agent_session_internal_router, +) +from litellm.proxy.agent_session_endpoints import ( + run_router as agent_session_run_router, +) +from litellm.proxy.agent_session_endpoints import ( + session_router as agent_session_session_router, +) + +app.include_router(agent_session_agent_router) +app.include_router(agent_session_session_router) +app.include_router(agent_session_run_router) +app.include_router(agent_session_internal_router) + attach_lazy_features(app) app.add_middleware( RequestSizeLimitMiddleware,