From a10add753189deaf6a6eb1084f4e2b27786a9660 Mon Sep 17 00:00:00 2001 From: qingminlong Date: Mon, 29 Jun 2026 01:53:15 +0800 Subject: [PATCH] fix(models): mark local Ollama rows available (#97491) * fix(models): mark local Ollama rows available * fix(models): mark local Ollama rows available --------- Co-authored-by: Vincent Koc --- src/commands/models/list.model-row.test.ts | 18 ++++++++++++++++++ src/commands/models/list.model-row.ts | 6 ++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/commands/models/list.model-row.test.ts b/src/commands/models/list.model-row.test.ts index 707cc5dcf40d..6f7598ffd72a 100644 --- a/src/commands/models/list.model-row.test.ts +++ b/src/commands/models/list.model-row.test.ts @@ -56,4 +56,22 @@ describe("toModelRow", () => { expect(row.local).toBe(true); } }); + + it("keeps local provider rows available when registry availability omits the model key", () => { + const row = toModelRow({ + model: { + ...OPENROUTER_MODEL, + provider: "ollama", + id: "qwen3.6:35b-a3b", + name: "qwen3.6:35b-a3b", + baseUrl: "http://127.0.0.1:11434", + } as never, + key: "ollama/qwen3.6:35b-a3b", + tags: [], + availableKeys: new Set(["ollama/llama3.2"]), + }); + + expect(row.local).toBe(true); + expect(row.available).toBe(true); + }); }); diff --git a/src/commands/models/list.model-row.ts b/src/commands/models/list.model-row.ts index fd35ed87b478..1922142e1824 100644 --- a/src/commands/models/list.model-row.ts +++ b/src/commands/models/list.model-row.ts @@ -50,8 +50,10 @@ export function toModelRow(params: { const input = model.input.join("+") || "text"; const local = isLocalBaseUrl(model.baseUrl ?? ""); - const modelIsAvailable = availableKeys?.has(modelKey(model.provider, model.id)) ?? false; - // Prefer model-level registry availability when present. + const modelIsAvailable = + local || (availableKeys?.has(modelKey(model.provider, model.id)) ?? false); + // Local provider rows use their baseUrl as the auth marker. + // Otherwise prefer model-level registry availability when present. // Fall back to provider-level auth heuristics only if registry availability isn't available, // or if the caller marks this as a synthetic/forward-compat model that won't appear in getAvailable(). const available =