Files
2026-07-22 13:48:46 +08:00

66 lines
1.9 KiB
Python

"""
Agent-related router module.
"""
import time
from typing import Dict, Any
from fastapi import APIRouter, Depends
from ..models import ModelListResponse, ModelInfo
from ..state import get_server_state, ServerState
from agent import list_available_models
router = APIRouter(prefix="/v1", tags=["agents"])
@router.get(
"/agents",
response_model=Dict[str, Any],
dependencies=[Depends(get_server_state)],
description="List all active Agent instances for debugging and monitoring",
)
async def list_agents(state: ServerState = Depends(get_server_state)):
"""List all active Agent instances for debugging and monitoring."""
if not state.agent_registry:
return {"error": "Agent registry not initialized"}
agents_info = {}
for model_name in state.agent_registry.list_agents():
agent_info = state.agent_registry.get_agent_info(model_name)
if agent_info:
# Add instance ID for singleton verification.
agent = state.agent_registry.get_agent(model_name)
agent_info["instance_id"] = id(agent) if agent else None
agents_info[model_name] = agent_info
return {
"registry_stats": state.agent_registry.get_agent_stats(),
"agents": agents_info,
}
@router.get(
"/models",
response_model=ModelListResponse,
dependencies=[Depends(get_server_state)],
description="List all available models for model selection",
)
async def list_models():
"""List available models."""
available_models = list_available_models()
models = []
for model_name in available_models:
model_info = ModelInfo(
id=model_name,
object="model",
created=int(time.time()),
owned_by="simpleagent",
permission=None,
root=None,
parent=None,
)
models.append(model_info)
return ModelListResponse(object="list", data=models)