import requests from fastapi import APIRouter, Query from .. import database as db from ..config import merge_campaign_settings_with_env router = APIRouter(prefix="/api/models", tags=["models"]) @router.get("/ollama") def list_ollama_models(campaign_id: str = Query("default")): """List models already pulled on the configured Ollama host, so the setup wizard can offer a dropdown instead of asking the user to type a tag blind.""" settings = merge_campaign_settings_with_env(db.get_campaign_settings(campaign_id)) host = settings.get("ollama_host", "http://host.docker.internal:11434") try: resp = requests.get(f"{host.rstrip('/')}/api/tags", timeout=5) resp.raise_for_status() return {"ok": True, "models": [m["name"] for m in resp.json().get("models", [])]} except Exception as e: return {"ok": False, "error": str(e), "models": []}