""" Model listing routes. """ from fastapi import APIRouter from app.core.logging import get_logger from app.schemas.models import ModelsListResponse, ModelInfo from app.services.model_registry import get_model_registry logger = get_logger(__name__) router = APIRouter(tags=["models"]) @router.get( "/models", response_model=ModelsListResponse, summary="List loaded models", description="Get information about all loaded models including fusion and submodels" ) async def list_models() -> ModelsListResponse: """ List all loaded models. Returns information about the fusion model and all submodels, including their Hugging Face repository IDs and configurations. """ registry = get_model_registry() models = registry.list_models() fusion_info = None submodels_info = [] for model in models: model_info = ModelInfo( repo_id=model["repo_id"], name=model["name"], model_type=model["model_type"], config=model.get("config") ) if model["model_type"] == "fusion": fusion_info = model_info else: submodels_info.append(model_info) return ModelsListResponse( fusion=fusion_info, submodels=submodels_info, total_count=len(models) )