diff --git a/src/shared/model-requirements.test.ts b/src/shared/model-requirements.test.ts index b71d099f..2abaac5b 100644 --- a/src/shared/model-requirements.test.ts +++ b/src/shared/model-requirements.test.ts @@ -241,19 +241,32 @@ describe("CATEGORY_MODEL_REQUIREMENTS", () => { expect(primary.providers[0]).toBe("openai") }) - test("visual-engineering has valid fallbackChain with gemini-3-pro as primary", () => { + test("visual-engineering has valid fallbackChain with gemini-3-pro high as primary", () => { // given - visual-engineering category requirement const visualEngineering = CATEGORY_MODEL_REQUIREMENTS["visual-engineering"] // when - accessing visual-engineering requirement - // then - fallbackChain exists with gemini-3-pro as first entry + // then - fallbackChain: gemini-3-pro(high) → glm-5 → opus-4-6(max) → k2p5 expect(visualEngineering).toBeDefined() expect(visualEngineering.fallbackChain).toBeArray() - expect(visualEngineering.fallbackChain.length).toBeGreaterThan(0) + expect(visualEngineering.fallbackChain).toHaveLength(4) const primary = visualEngineering.fallbackChain[0] expect(primary.providers[0]).toBe("google") expect(primary.model).toBe("gemini-3-pro") + expect(primary.variant).toBe("high") + + const second = visualEngineering.fallbackChain[1] + expect(second.providers[0]).toBe("zai-coding-plan") + expect(second.model).toBe("glm-5") + + const third = visualEngineering.fallbackChain[2] + expect(third.model).toBe("claude-opus-4-6") + expect(third.variant).toBe("max") + + const fourth = visualEngineering.fallbackChain[3] + expect(fourth.providers[0]).toBe("kimi-for-coding") + expect(fourth.model).toBe("k2p5") }) test("quick has valid fallbackChain with claude-haiku-4-5 as primary", () => { diff --git a/src/shared/model-requirements.ts b/src/shared/model-requirements.ts index 5a57da85..9271b5e0 100644 --- a/src/shared/model-requirements.ts +++ b/src/shared/model-requirements.ts @@ -100,9 +100,10 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { export const CATEGORY_MODEL_REQUIREMENTS: Record = { "visual-engineering": { fallbackChain: [ - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" }, + { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" }, + { providers: ["zai-coding-plan"], model: "glm-5" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, - { providers: ["zai-coding-plan"], model: "glm-4.7" }, + { providers: ["kimi-for-coding"], model: "k2p5" }, ], }, ultrabrain: { diff --git a/src/tools/delegate-task/constants.ts b/src/tools/delegate-task/constants.ts index 9aa9552a..7485e97b 100644 --- a/src/tools/delegate-task/constants.ts +++ b/src/tools/delegate-task/constants.ts @@ -198,7 +198,7 @@ You are NOT an interactive assistant. You are an autonomous problem-solver. export const DEFAULT_CATEGORIES: Record = { - "visual-engineering": { model: "google/gemini-3-pro" }, + "visual-engineering": { model: "google/gemini-3-pro", variant: "high" }, ultrabrain: { model: "openai/gpt-5.3-codex", variant: "xhigh" }, deep: { model: "openai/gpt-5.3-codex", variant: "medium" }, artistry: { model: "google/gemini-3-pro", variant: "high" }, diff --git a/src/tools/delegate-task/tools.test.ts b/src/tools/delegate-task/tools.test.ts index 99a9ae96..23012898 100644 --- a/src/tools/delegate-task/tools.test.ts +++ b/src/tools/delegate-task/tools.test.ts @@ -67,13 +67,14 @@ describe("sisyphus-task", () => { }) describe("DEFAULT_CATEGORIES", () => { - test("visual-engineering category has model config", () => { + test("visual-engineering category has model and variant config", () => { // given const category = DEFAULT_CATEGORIES["visual-engineering"] // when / #then expect(category).toBeDefined() expect(category.model).toBe("google/gemini-3-pro") + expect(category.variant).toBe("high") }) test("ultrabrain category has model and variant config", () => {