"""Metrics route — /api/v1/metrics""" from fastapi import APIRouter, Request router = APIRouter(tags=["metrics"]) @router.get("/metrics") async def get_metrics(request: Request): """Get application metrics""" app = request.app # Task metrics from TaskStore task_store = getattr(app.state, "task_store", None) task_metrics = { "total_tasks": 0, "completed_tasks": 0, "failed_tasks": 0, "pending_tasks": 0, } if task_store: try: all_tasks = task_store.list_tasks(limit=10000) task_metrics["total_tasks"] = len(all_tasks) task_metrics["completed_tasks"] = len( [t for t in all_tasks if t.status.value == "completed"] ) task_metrics["failed_tasks"] = len( [t for t in all_tasks if t.status.value == "failed"] ) task_metrics["pending_tasks"] = len( [t for t in all_tasks if t.status.value == "pending"] ) except Exception: pass # Agent pool metrics agent_pool = getattr(app.state, "agent_pool", None) agent_metrics: dict = { "total_agents": 0, "agent_names": [], } if agent_pool: try: agents = agent_pool.list_agents() agent_metrics["total_agents"] = len(agents) agent_metrics["agent_names"] = [a.get("name", "") for a in agents] except Exception: pass # Skill registry metrics skill_registry = getattr(app.state, "skill_registry", None) skill_metrics: dict = { "total_skills": 0, "skill_names": [], } if skill_registry: try: skills = skill_registry.list_skills() skill_metrics["total_skills"] = len(skills) skill_metrics["skill_names"] = [s.name for s in skills] except Exception: pass return { "tasks": task_metrics, "agents": agent_metrics, "skills": skill_metrics, "version": "2.0.0", }