From 0727d9a1a3fe4709b2f30d172cac537ea184ac20 Mon Sep 17 00:00:00 2001 From: Samuele Domenico Ruffino Date: Thu, 23 Apr 2026 10:38:31 +0200 Subject: [PATCH] fix(opencode-go): replace non-existent minimax-m2.7-highspeed with qwen3.5-plus --- src/cli/model-fallback.ts | 4 +-- src/shared/model-requirements.test.ts | 50 ++++++++++++++++----------- src/shared/model-requirements.ts | 6 ++-- 3 files changed, 35 insertions(+), 25 deletions(-) diff --git a/src/cli/model-fallback.ts b/src/cli/model-fallback.ts index 6378482c6..f256808f3 100644 --- a/src/cli/model-fallback.ts +++ b/src/cli/model-fallback.ts @@ -130,7 +130,7 @@ export function generateModelConfig(config: InstallConfig): GeneratedOmoConfig { if (avail.native.openai) { agentConfig = { model: "openai/gpt-5.4-mini-fast" } } else if (avail.opencodeGo) { - agentConfig = { model: "opencode-go/minimax-m2.7" } + agentConfig = { model: "opencode-go/qwen3.5-plus" } } else if (avail.zai) { agentConfig = { model: ZAI_MODEL } } else if (avail.vercelAiGateway) { @@ -151,7 +151,7 @@ export function generateModelConfig(config: InstallConfig): GeneratedOmoConfig { } else if (avail.opencodeZen) { agentConfig = { model: "opencode/claude-haiku-4-5" } } else if (avail.opencodeGo) { - agentConfig = { model: "opencode-go/minimax-m2.7" } + agentConfig = { model: "opencode-go/qwen3.5-plus" } } else if (avail.copilot) { agentConfig = { model: "github-copilot/gpt-5-mini" } } else if (avail.vercelAiGateway) { diff --git a/src/shared/model-requirements.test.ts b/src/shared/model-requirements.test.ts index 027ed04d8..ed5f90f90 100644 --- a/src/shared/model-requirements.test.ts +++ b/src/shared/model-requirements.test.ts @@ -72,7 +72,7 @@ describe("AGENT_MODEL_REQUIREMENTS", () => { // then - fallbackChain exists with openai/gpt-5.4-mini-fast as first entry expect(librarian).toBeDefined() expect(librarian.fallbackChain).toBeArray() - expect(librarian.fallbackChain).toHaveLength(5) + expect(librarian.fallbackChain).toHaveLength(6) const primary = librarian.fallbackChain[0] expect(primary.providers).toEqual(["openai"]) @@ -80,19 +80,23 @@ describe("AGENT_MODEL_REQUIREMENTS", () => { const second = librarian.fallbackChain[1] expect(second.providers[0]).toBe("opencode-go") - expect(second.model).toBe("minimax-m2.7-highspeed") + expect(second.model).toBe("qwen3.5-plus") - const tertiary = librarian.fallbackChain[2] - expect(tertiary.providers[0]).toBe("opencode-go") - expect(tertiary.model).toBe("minimax-m2.7") + const third = librarian.fallbackChain[2] + expect(third.providers).toEqual(["vercel"]) + expect(third.model).toBe("minimax-m2.7-highspeed") const quaternary = librarian.fallbackChain[3] - expect(quaternary.providers).toContain("anthropic") - expect(quaternary.model).toBe("claude-haiku-4-5") + expect(quaternary.providers[0]).toBe("opencode-go") + expect(quaternary.model).toBe("minimax-m2.7") - const fifth = librarian.fallbackChain[4] - expect(fifth.providers).toContain("openai") - expect(fifth.model).toBe("gpt-5.4-nano") + const quinary = librarian.fallbackChain[4] + expect(quinary.providers).toContain("anthropic") + expect(quinary.model).toBe("claude-haiku-4-5") + + const sixth = librarian.fallbackChain[5] + expect(sixth.providers).toContain("openai") + expect(sixth.model).toBe("gpt-5.4-nano") }) test("explore has valid fallbackChain with openai/gpt-5.4-mini-fast as primary", () => { @@ -102,27 +106,31 @@ describe("AGENT_MODEL_REQUIREMENTS", () => { // when - accessing explore requirement expect(explore).toBeDefined() expect(explore.fallbackChain).toBeArray() - expect(explore.fallbackChain).toHaveLength(5) + expect(explore.fallbackChain).toHaveLength(6) const primary = explore.fallbackChain[0] expect(primary.providers).toEqual(["openai"]) expect(primary.model).toBe("gpt-5.4-mini-fast") const secondary = explore.fallbackChain[1] - expect(secondary.providers).toContain("opencode-go") - expect(secondary.model).toBe("minimax-m2.7-highspeed") + expect(secondary.providers[0]).toBe("opencode-go") + expect(secondary.model).toBe("qwen3.5-plus") - const tertiary = explore.fallbackChain[2] - expect(tertiary.providers).toContain("opencode-go") - expect(tertiary.model).toBe("minimax-m2.7") + const third = explore.fallbackChain[2] + expect(third.providers).toEqual(["vercel"]) + expect(third.model).toBe("minimax-m2.7-highspeed") const quaternary = explore.fallbackChain[3] - expect(quaternary.providers).toContain("anthropic") - expect(quaternary.model).toBe("claude-haiku-4-5") + expect(quaternary.providers[0]).toBe("opencode-go") + expect(quaternary.model).toBe("minimax-m2.7") - const fifth = explore.fallbackChain[4] - expect(fifth.providers).toContain("openai") - expect(fifth.model).toBe("gpt-5.4-nano") + const quinary = explore.fallbackChain[4] + expect(quinary.providers).toContain("anthropic") + expect(quinary.model).toBe("claude-haiku-4-5") + + const sixth = explore.fallbackChain[5] + expect(sixth.providers).toContain("openai") + expect(sixth.model).toBe("gpt-5.4-nano") }) test("multimodal-looker has valid fallbackChain with gpt-5.5 as primary", () => { diff --git a/src/shared/model-requirements.ts b/src/shared/model-requirements.ts index 019da4d16..d5c67849f 100644 --- a/src/shared/model-requirements.ts +++ b/src/shared/model-requirements.ts @@ -78,7 +78,8 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { librarian: { fallbackChain: [ { providers: ["openai"], model: "gpt-5.4-mini-fast" }, - { providers: ["opencode-go", "vercel"], model: "minimax-m2.7-highspeed" }, + { providers: ["opencode-go"], model: "qwen3.5-plus" }, + { providers: ["vercel"], model: "minimax-m2.7-highspeed" }, { providers: ["opencode-go", "vercel"], model: "minimax-m2.7" }, { providers: ["anthropic", "opencode", "vercel"], model: "claude-haiku-4-5" }, { providers: ["openai", "opencode", "vercel"], model: "gpt-5.4-nano" }, @@ -87,7 +88,8 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { explore: { fallbackChain: [ { providers: ["openai"], model: "gpt-5.4-mini-fast" }, - { providers: ["opencode-go", "vercel"], model: "minimax-m2.7-highspeed" }, + { providers: ["opencode-go"], model: "qwen3.5-plus" }, + { providers: ["vercel"], model: "minimax-m2.7-highspeed" }, { providers: ["opencode-go", "vercel"], model: "minimax-m2.7" }, { providers: ["anthropic", "opencode", "vercel"], model: "claude-haiku-4-5" }, { providers: ["openai", "opencode", "vercel"], model: "gpt-5.4-nano" },