49 lines
1.1 KiB
Python
49 lines
1.1 KiB
Python
"""Read-only Agent Management API."""
|
|
|
|
from typing import Annotated
|
|
|
|
from fastapi import APIRouter, Depends, Response
|
|
|
|
from app.agent_registry.dependencies import get_agent_registry_service
|
|
from app.agent_registry.models import AgentRegistryResponse
|
|
from app.agent_registry.service import AgentRegistryService
|
|
from app.identity import require_permission
|
|
|
|
|
|
router = APIRouter(tags=["agents"])
|
|
|
|
RegistryService = Annotated[
|
|
AgentRegistryService,
|
|
Depends(get_agent_registry_service),
|
|
]
|
|
|
|
AgentViewer = Annotated[
|
|
dict,
|
|
Depends(require_permission("agents.view")),
|
|
]
|
|
|
|
|
|
@router.get(
|
|
"/api/agents",
|
|
response_model=AgentRegistryResponse,
|
|
)
|
|
def list_agents(
|
|
response: Response,
|
|
current_user: AgentViewer,
|
|
service: RegistryService,
|
|
) -> AgentRegistryResponse:
|
|
del current_user
|
|
|
|
response.headers["Cache-Control"] = "no-store"
|
|
|
|
data = service.list_registry()
|
|
|
|
return AgentRegistryResponse(
|
|
data=data,
|
|
meta={
|
|
"agent_count": len(data.agents),
|
|
"site_count": len(data.sites),
|
|
"zone_count": len(data.zones),
|
|
},
|
|
)
|