import { apiError, apiJson } from "@/lib/api-handler"; import { resolveApiAuth } from "@/lib/api-auth"; import { getAssistantPreferences } from "@/lib/assistant-preference"; import { isValidAssistantModelRoute, listLlmModels, resolveAssistantModel } from "@/lib/llm/models"; export const dynamic = "force-dynamic"; function noStore(response: Response): Response { response.headers.set("Cache-Control", "no-store"); return response; } export async function GET(request: Request) { const auth = await resolveApiAuth(request); if (!auth?.userId) { return noStore(apiError("Unauthorized", 401)); } const assistant = await getAssistantPreferences(auth.userId); if (!assistant.enabled) { return noStore(apiError("Assistant not enabled", 403)); } const requestedRoute = new URL(request.url).searchParams.get("route"); if (requestedRoute !== null && !isValidAssistantModelRoute(requestedRoute)) { return noStore(apiError("Invalid assistant model route", 400)); } const modelRoute = requestedRoute ?? assistant.modelRoute; const modelList = await listLlmModels({ route: modelRoute }); const resolved = resolveAssistantModel({ requestedModel: null, savedModel: requestedRoute === null ? assistant.model : null, fallbackModel: modelList.fallbackModel, models: modelList.models, }); return noStore( apiJson({ models: modelList.models, selectedModel: resolved.model, fallbackModel: modelList.fallbackModel, route: modelList.route, degraded: modelList.degraded, }), ); }