"""Health and status endpoints.""" from __future__ import annotations from fastapi import APIRouter from Project.Sanad.core.logger import get_logger log = get_logger("health_route") router = APIRouter() def _safe_status(component, name: str) -> dict: """Get status without crashing the whole endpoint if one component fails.""" if component is None: return {"available": False} try: if hasattr(component, "status") and callable(component.status): return component.status() return {"available": True} except Exception as exc: log.warning("status() failed for %s: %s", name, exc) return {"available": True, "error": str(exc)} @router.get("/health") async def health(): from Project.Sanad.main import brain return { "status": "ok", "brain": _safe_status(brain, "brain"), } @router.get("/status") async def full_status(): from Project.Sanad.main import brain, voice_client return { "brain": _safe_status(brain, "brain"), "voice": _safe_status(voice_client, "voice"), }