diff --git a/tools/server/public/index.html.gz b/tools/server/public/index.html.gz index ed3fc127b7..3d0991dde0 100644 Binary files a/tools/server/public/index.html.gz and b/tools/server/public/index.html.gz differ diff --git a/tools/server/webui/src/lib/stores/agentic.svelte.ts b/tools/server/webui/src/lib/stores/agentic.svelte.ts index a6dd8581e7..f8834f9df3 100644 --- a/tools/server/webui/src/lib/stores/agentic.svelte.ts +++ b/tools/server/webui/src/lib/stores/agentic.svelte.ts @@ -318,6 +318,12 @@ class AgenticStore { const maxTurns = agenticConfig.maxTurns; const maxToolPreviewLines = agenticConfig.maxToolPreviewLines; + // Resolve effective model for vision capability checks. + // In ROUTER mode, options.model is always set by the caller. + // In MODEL mode, options.model is undefined; use the single loaded model + // which carries modalities bridged from /props. + const effectiveModel = options.model || modelsStore.models[0]?.model || ''; + for (let turn = 0; turn < maxTurns; turn++) { this.updateSession(conversationId, { currentTurn: turn + 1 }); agenticTimings.turns = turn + 1; @@ -571,14 +577,14 @@ class AgenticStore { ]; for (const attachment of attachments) { if (attachment.type === AttachmentType.IMAGE) { - if (modelsStore.modelSupportsVision(options.model ?? '')) { + if (modelsStore.modelSupportsVision(effectiveModel)) { contentParts.push({ type: ContentPartType.IMAGE_URL, image_url: { url: (attachment as DatabaseMessageExtraImageFile).base64Url } }); } else { console.info( - `[AgenticStore] Skipping image attachment (model "${options.model}" does not support vision)` + `[AgenticStore] Skipping image attachment (model "${effectiveModel}" does not support vision)` ); } }