""" 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)