28 lines
912 B
Python
28 lines
912 B
Python
"""Web dependency wiring."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from beaver.services.agent_service import AgentService
|
|
|
|
try:
|
|
from fastapi import HTTPException
|
|
except ModuleNotFoundError: # pragma: no cover - fallback for skeleton-only environments
|
|
class HTTPException(Exception):
|
|
"""Minimal fallback exception matching FastAPI's constructor shape."""
|
|
|
|
def __init__(self, status_code: int, detail: str) -> None:
|
|
super().__init__(detail)
|
|
self.status_code = status_code
|
|
self.detail = detail
|
|
|
|
|
|
def get_agent_service(request: Any) -> AgentService:
|
|
"""从 app state 里取当前宿主层托管的 AgentService。"""
|
|
|
|
service = getattr(request.app.state, "agent_service", None)
|
|
if not isinstance(service, AgentService):
|
|
raise HTTPException(status_code=503, detail="AgentService is not ready")
|
|
return service
|