feat(agent): route chat through selected model

This commit is contained in:
ginnoir
2026-07-08 16:34:22 -05:00
parent bf7e07ead9
commit 9b7a04431c
6 changed files with 78 additions and 4 deletions
+15
View File
@@ -2,6 +2,7 @@ import { apiError, apiJson } from "@/lib/api-handler";
import { resolveApiAuth } from "@/lib/api-auth";
import { getAssistantPreferences, resolveAssistantSystemPrompt } from "@/lib/assistant-preference";
import { isLlmConfigured } from "@/lib/llm";
import { listLlmModels, resolveAssistantModel } from "@/lib/llm/models";
import { clientChatInputSchema } from "@/modules/agent/messages";
import { encodeSseEvent } from "@/modules/agent/server/progress";
import { runAgentChat } from "@/modules/agent/server/run";
@@ -31,6 +32,18 @@ export async function POST(request: Request) {
return apiError(parsed.error.issues[0]?.message ?? "Validation error", 400);
}
const modelList = await listLlmModels();
const modelResolution = resolveAssistantModel({
requestedModel: parsed.data.model,
savedModel: assistant.model,
fallbackModel: modelList.fallbackModel,
models: modelList.models,
});
if (!modelResolution.ok) {
return apiError(modelResolution.error, 400);
}
if (parsed.data.stream) {
const stream = new ReadableStream<Uint8Array>({
async start(controller) {
@@ -44,6 +57,7 @@ export async function POST(request: Request) {
messages: parsed.data.messages,
request,
systemPrompt,
model: modelResolution.model,
onProgress: send,
});
@@ -78,6 +92,7 @@ export async function POST(request: Request) {
messages: parsed.data.messages,
request,
systemPrompt,
model: modelResolution.model,
});
return apiJson({