diff --git a/src/cli/__snapshots__/model-fallback.test.ts.snap b/src/cli/__snapshots__/model-fallback.test.ts.snap index b9269547a..ca060a57c 100644 --- a/src/cli/__snapshots__/model-fallback.test.ts.snap +++ b/src/cli/__snapshots__/model-fallback.test.ts.snap @@ -191,7 +191,8 @@ exports[`generateModelConfig single native provider uses OpenAI models when only "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json", "agents": { "atlas": { - "model": "openai/gpt-5.2", + "model": "openai/gpt-5.4", + "variant": "medium", }, "explore": { "model": "opencode/gpt-5-nano", @@ -208,8 +209,8 @@ exports[`generateModelConfig single native provider uses OpenAI models when only "variant": "high", }, "momus": { - "model": "openai/gpt-5.2", - "variant": "medium", + "model": "openai/gpt-5.4", + "variant": "xhigh", }, "multimodal-looker": { "model": "openai/gpt-5.3-codex", @@ -220,7 +221,7 @@ exports[`generateModelConfig single native provider uses OpenAI models when only "variant": "high", }, "prometheus": { - "model": "openai/gpt-5.2", + "model": "openai/gpt-5.4", "variant": "high", }, }, @@ -259,7 +260,8 @@ exports[`generateModelConfig single native provider uses OpenAI models with isMa "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/dev/assets/oh-my-opencode.schema.json", "agents": { "atlas": { - "model": "openai/gpt-5.2", + "model": "openai/gpt-5.4", + "variant": "medium", }, "explore": { "model": "opencode/gpt-5-nano", @@ -276,8 +278,8 @@ exports[`generateModelConfig single native provider uses OpenAI models with isMa "variant": "high", }, "momus": { - "model": "openai/gpt-5.2", - "variant": "medium", + "model": "openai/gpt-5.4", + "variant": "xhigh", }, "multimodal-looker": { "model": "openai/gpt-5.3-codex", @@ -288,7 +290,7 @@ exports[`generateModelConfig single native provider uses OpenAI models with isMa "variant": "high", }, "prometheus": { - "model": "openai/gpt-5.2", + "model": "openai/gpt-5.4", "variant": "high", }, }, @@ -466,8 +468,8 @@ exports[`generateModelConfig all native providers uses preferred models from fal "variant": "max", }, "momus": { - "model": "openai/gpt-5.2", - "variant": "medium", + "model": "openai/gpt-5.4", + "variant": "xhigh", }, "multimodal-looker": { "model": "openai/gpt-5.3-codex", @@ -541,8 +543,8 @@ exports[`generateModelConfig all native providers uses preferred models with isM "variant": "max", }, "momus": { - "model": "openai/gpt-5.2", - "variant": "medium", + "model": "openai/gpt-5.4", + "variant": "xhigh", }, "multimodal-looker": { "model": "openai/gpt-5.3-codex", @@ -617,8 +619,8 @@ exports[`generateModelConfig fallback providers uses OpenCode Zen models when on "variant": "max", }, "momus": { - "model": "opencode/gpt-5.2", - "variant": "medium", + "model": "opencode/gpt-5.4", + "variant": "xhigh", }, "multimodal-looker": { "model": "opencode/gpt-5.3-codex", @@ -692,8 +694,8 @@ exports[`generateModelConfig fallback providers uses OpenCode Zen models with is "variant": "max", }, "momus": { - "model": "opencode/gpt-5.2", - "variant": "medium", + "model": "opencode/gpt-5.4", + "variant": "xhigh", }, "multimodal-looker": { "model": "opencode/gpt-5.3-codex", @@ -764,8 +766,8 @@ exports[`generateModelConfig fallback providers uses GitHub Copilot models when "variant": "max", }, "momus": { - "model": "github-copilot/gpt-5.2", - "variant": "medium", + "model": "github-copilot/gpt-5.4", + "variant": "xhigh", }, "multimodal-looker": { "model": "github-copilot/gemini-3-flash-preview", @@ -830,8 +832,8 @@ exports[`generateModelConfig fallback providers uses GitHub Copilot models with "variant": "max", }, "momus": { - "model": "github-copilot/gpt-5.2", - "variant": "medium", + "model": "github-copilot/gpt-5.4", + "variant": "xhigh", }, "multimodal-looker": { "model": "github-copilot/gemini-3-flash-preview", @@ -908,7 +910,7 @@ exports[`generateModelConfig fallback providers uses ZAI model for librarian whe "model": "opencode/glm-4.7-free", }, "sisyphus": { - "model": "zai-coding-plan/glm-4.7", + "model": "zai-coding-plan/glm-5", }, }, "categories": { @@ -963,7 +965,7 @@ exports[`generateModelConfig fallback providers uses ZAI model for librarian wit "model": "opencode/glm-4.7-free", }, "sisyphus": { - "model": "zai-coding-plan/glm-4.7", + "model": "zai-coding-plan/glm-5", }, }, "categories": { @@ -1011,8 +1013,8 @@ exports[`generateModelConfig mixed provider scenarios uses Claude + OpenCode Zen "variant": "max", }, "momus": { - "model": "opencode/gpt-5.2", - "variant": "medium", + "model": "opencode/gpt-5.4", + "variant": "xhigh", }, "multimodal-looker": { "model": "opencode/gpt-5.3-codex", @@ -1086,8 +1088,8 @@ exports[`generateModelConfig mixed provider scenarios uses OpenAI + Copilot comb "variant": "max", }, "momus": { - "model": "openai/gpt-5.2", - "variant": "medium", + "model": "openai/gpt-5.4", + "variant": "xhigh", }, "multimodal-looker": { "model": "openai/gpt-5.3-codex", @@ -1288,8 +1290,8 @@ exports[`generateModelConfig mixed provider scenarios uses all fallback provider "variant": "max", }, "momus": { - "model": "github-copilot/gpt-5.2", - "variant": "medium", + "model": "github-copilot/gpt-5.4", + "variant": "xhigh", }, "multimodal-looker": { "model": "opencode/gpt-5.3-codex", @@ -1363,8 +1365,8 @@ exports[`generateModelConfig mixed provider scenarios uses all providers togethe "variant": "max", }, "momus": { - "model": "openai/gpt-5.2", - "variant": "medium", + "model": "openai/gpt-5.4", + "variant": "xhigh", }, "multimodal-looker": { "model": "openai/gpt-5.3-codex", @@ -1438,8 +1440,8 @@ exports[`generateModelConfig mixed provider scenarios uses all providers with is "variant": "max", }, "momus": { - "model": "openai/gpt-5.2", - "variant": "medium", + "model": "openai/gpt-5.4", + "variant": "xhigh", }, "multimodal-looker": { "model": "openai/gpt-5.3-codex", diff --git a/src/cli/model-fallback-requirements.ts b/src/cli/model-fallback-requirements.ts index 6fd0a5c3f..815ff9f01 100644 --- a/src/cli/model-fallback-requirements.ts +++ b/src/cli/model-fallback-requirements.ts @@ -13,8 +13,7 @@ export const CLI_AGENT_MODEL_REQUIREMENTS: Record = { variant: "max", }, { providers: ["kimi-for-coding"], model: "k2p5" }, - { providers: ["zai-coding-plan"], model: "glm-4.7" }, - { providers: ["opencode"], model: "glm-4.7-free" }, + { providers: ["zai-coding-plan", "opencode"], model: "glm-5" }, ], requiresAnyModel: true, }, @@ -90,7 +89,7 @@ export const CLI_AGENT_MODEL_REQUIREMENTS: Record = { { providers: ["kimi-for-coding"], model: "k2p5" }, { providers: ["openai", "github-copilot", "opencode"], - model: "gpt-5.2", + model: "gpt-5.4", variant: "high", }, { @@ -123,8 +122,8 @@ export const CLI_AGENT_MODEL_REQUIREMENTS: Record = { fallbackChain: [ { providers: ["openai", "github-copilot", "opencode"], - model: "gpt-5.2", - variant: "medium", + model: "gpt-5.4", + variant: "xhigh", }, { providers: ["anthropic", "github-copilot", "opencode"], @@ -145,7 +144,7 @@ export const CLI_AGENT_MODEL_REQUIREMENTS: Record = { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5", }, - { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" }, + { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.4", variant: "medium" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", diff --git a/src/shared/model-requirements.test.ts b/src/shared/model-requirements.test.ts index be301947f..46b2b056e 100644 --- a/src/shared/model-requirements.test.ts +++ b/src/shared/model-requirements.test.ts @@ -145,19 +145,19 @@ describe("AGENT_MODEL_REQUIREMENTS", () => { expect(primary.variant).toBe("max") }) - test("momus has valid fallbackChain with gpt-5.2 as primary", () => { + test("momus has valid fallbackChain with gpt-5.4 as primary", () => { // given - momus agent requirement const momus = AGENT_MODEL_REQUIREMENTS["momus"] // when - accessing Momus requirement - // then - fallbackChain exists with gpt-5.2 as first entry, variant medium + // then - fallbackChain exists with gpt-5.4 as first entry, variant xhigh expect(momus).toBeDefined() expect(momus.fallbackChain).toBeArray() expect(momus.fallbackChain.length).toBeGreaterThan(0) const primary = momus.fallbackChain[0] - expect(primary.model).toBe("gpt-5.2") - expect(primary.variant).toBe("medium") + expect(primary.model).toBe("gpt-5.4") + expect(primary.variant).toBe("xhigh") expect(primary.providers[0]).toBe("openai") }) @@ -174,6 +174,10 @@ describe("AGENT_MODEL_REQUIREMENTS", () => { const primary = atlas.fallbackChain[0] expect(primary.model).toBe("claude-sonnet-4-6") expect(primary.providers[0]).toBe("anthropic") + + const secondary = atlas.fallbackChain[1] + expect(secondary.model).toBe("gpt-5.4") + expect(secondary.variant).toBe("medium") }) test("hephaestus supports openai, github-copilot, venice, and opencode providers", () => { diff --git a/src/shared/model-requirements.ts b/src/shared/model-requirements.ts index f656f52d4..9f444f5a3 100644 --- a/src/shared/model-requirements.ts +++ b/src/shared/model-requirements.ts @@ -101,7 +101,7 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { }, { providers: ["openai", "github-copilot", "opencode"], - model: "gpt-5.2", + model: "gpt-5.4", variant: "high", }, { @@ -133,8 +133,8 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { fallbackChain: [ { providers: ["openai", "github-copilot", "opencode"], - model: "gpt-5.2", - variant: "medium", + model: "gpt-5.4", + variant: "xhigh", }, { providers: ["anthropic", "github-copilot", "opencode"], @@ -154,7 +154,7 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-6", }, - { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" }, + { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.4", variant: "medium" }, ], }, };