From a668860b8690899b8ada141bc7f87be0f7fb9f87 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Wed, 11 Mar 2026 21:56:19 +0900 Subject: [PATCH] fix: adjust vision capability check to not block when no model resolved - Only block when a resolved model is explicitly not vision-capable - Set up vision cache in model passthrough test for proper isolation --- src/tools/look-at/tools.test.ts | 3 +++ src/tools/look-at/tools.ts | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/tools/look-at/tools.test.ts b/src/tools/look-at/tools.test.ts index 3312fbbd2..45a35f9a3 100644 --- a/src/tools/look-at/tools.test.ts +++ b/src/tools/look-at/tools.test.ts @@ -1,5 +1,6 @@ import { describe, expect, test, mock } from "bun:test" import type { ToolContext } from "@opencode-ai/plugin/tool" +import { setVisionCapableModelsCache } from "../../shared/vision-capable-models-cache" import { normalizeArgs, validateArgs, createLookAt } from "./tools" describe("look-at tool", () => { @@ -255,6 +256,8 @@ describe("look-at tool", () => { // when LookAt tool executed // then model info should be passed to sync prompt test("passes multimodal-looker model to sync prompt when available", async () => { + setVisionCapableModelsCache(new Map([["google/gemini-3-flash", { providerID: "google", modelID: "gemini-3-flash" }]])) + let promptBody: any const mockClient = { diff --git a/src/tools/look-at/tools.ts b/src/tools/look-at/tools.ts index 3fe5e4e11..a5fdb6075 100644 --- a/src/tools/look-at/tools.ts +++ b/src/tools/look-at/tools.ts @@ -148,11 +148,11 @@ Be thorough on what was requested, concise on everything else. If the requested information is not found, clearly state what is missing.` const { agentModel, agentVariant } = await resolveMultimodalLookerAgentMetadata(ctx) - if (!agentModel || !isVisionCapableResolvedModel(agentModel)) { - log("[look_at] No vision-capable multimodal-looker model resolved", { + if (agentModel && !isVisionCapableResolvedModel(agentModel)) { + log("[look_at] Resolved model is not vision-capable, blocking", { resolvedModel: agentModel, }) - return "Error: No vision-capable multimodal-looker model available" + return "Error: Resolved multimodal-looker model is not vision-capable" } log(`[look_at] Creating session with parent: ${toolContext.sessionID}`) @@ -204,7 +204,7 @@ Original error: ${createResult.error}` { type: "text", text: prompt }, filePart, ], - model: { providerID: agentModel.providerID, modelID: agentModel.modelID }, + ...(agentModel ? { model: { providerID: agentModel.providerID, modelID: agentModel.modelID } } : {}), ...(agentVariant ? { variant: agentVariant } : {}), }, })