From 27db599444fc0bb80d5a1650e2f5b5ba4f695c8e Mon Sep 17 00:00:00 2001 From: ginnoir Date: Wed, 8 Jul 2026 16:43:22 -0500 Subject: [PATCH] feat(agent): expose available assistant models --- src/app/api/agent/models/route.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/app/api/agent/models/route.ts diff --git a/src/app/api/agent/models/route.ts b/src/app/api/agent/models/route.ts new file mode 100644 index 0000000..a86fa8f --- /dev/null +++ b/src/app/api/agent/models/route.ts @@ -0,0 +1,31 @@ +import { apiError, apiJson } from "@/lib/api-handler"; +import { resolveApiAuth } from "@/lib/api-auth"; +import { getAssistantPreferences } from "@/lib/assistant-preference"; +import { listLlmModels, resolveAssistantModel } from "@/lib/llm/models"; + +export async function GET(request: Request) { + const auth = await resolveApiAuth(request); + if (!auth?.userId) { + return apiError("Unauthorized", 401); + } + + const assistant = await getAssistantPreferences(auth.userId); + if (!assistant.enabled) { + return apiError("Assistant not enabled", 403); + } + + const modelList = await listLlmModels(); + const resolved = resolveAssistantModel({ + requestedModel: null, + savedModel: assistant.model, + fallbackModel: modelList.fallbackModel, + models: modelList.models, + }); + + return apiJson({ + models: modelList.models, + selectedModel: resolved.model, + fallbackModel: modelList.fallbackModel, + degraded: modelList.degraded, + }); +}