from fastapi import APIRouter, HTTPException

from app.generation.llm_client import LLMClientError
from app.models.llm_models import ModelsResponse
from app.services.models_service import ModelsService

router = APIRouter(prefix="/models", tags=["Models"])

_models_service = ModelsService()


@router.get("/", response_model=ModelsResponse)
async def list_models() -> ModelsResponse:
    try:
        return await _models_service.list_models()
    except LLMClientError as exc:
        status = 503 if exc.status_code in (429, 504, None) else 502
        raise HTTPException(status_code=status, detail=str(exc)) from exc
