From 2e4fd5843c068d83f6e1ce2e4b63881781576343 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Fri, 6 Mar 2026 14:25:47 +0900 Subject: [PATCH] feat(model-requirements): update unspecified-high to gpt-5.4, add glm-5/k2p5/kimi-k2.5 fallbacks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus --- .../__snapshots__/model-fallback.test.ts.snap | 22 +- src/cli/model-fallback-requirements.ts | 311 +++++++++++++----- src/shared/model-requirements.test.ts | 10 +- src/shared/model-requirements.ts | 267 +++++++++++---- src/tools/delegate-task/constants.ts | 2 +- 5 files changed, 456 insertions(+), 156 deletions(-) diff --git a/src/cli/__snapshots__/model-fallback.test.ts.snap b/src/cli/__snapshots__/model-fallback.test.ts.snap index 704a3cb18..b9269547a 100644 --- a/src/cli/__snapshots__/model-fallback.test.ts.snap +++ b/src/cli/__snapshots__/model-fallback.test.ts.snap @@ -305,7 +305,7 @@ exports[`generateModelConfig single native provider uses OpenAI models with isMa "variant": "xhigh", }, "unspecified-high": { - "model": "openai/gpt-5.2", + "model": "openai/gpt-5.4", "variant": "high", }, "unspecified-low": { @@ -428,7 +428,7 @@ exports[`generateModelConfig single native provider uses Gemini models with isMa "variant": "high", }, "unspecified-high": { - "model": "google/gemini-3.1-pro-preview", + "model": "opencode/glm-4.7-free", }, "unspecified-low": { "model": "google/gemini-3-flash-preview", @@ -578,8 +578,8 @@ exports[`generateModelConfig all native providers uses preferred models with isM "variant": "xhigh", }, "unspecified-high": { - "model": "anthropic/claude-opus-4-6", - "variant": "max", + "model": "openai/gpt-5.4", + "variant": "high", }, "unspecified-low": { "model": "anthropic/claude-sonnet-4-5", @@ -729,8 +729,8 @@ exports[`generateModelConfig fallback providers uses OpenCode Zen models with is "variant": "xhigh", }, "unspecified-high": { - "model": "opencode/claude-opus-4-6", - "variant": "max", + "model": "opencode/gpt-5.4", + "variant": "high", }, "unspecified-low": { "model": "opencode/claude-sonnet-4-5", @@ -862,8 +862,8 @@ exports[`generateModelConfig fallback providers uses GitHub Copilot models with "variant": "high", }, "unspecified-high": { - "model": "github-copilot/claude-opus-4.6", - "variant": "max", + "model": "github-copilot/gpt-5.4", + "variant": "high", }, "unspecified-low": { "model": "github-copilot/claude-sonnet-4.5", @@ -974,7 +974,7 @@ exports[`generateModelConfig fallback providers uses ZAI model for librarian wit "model": "opencode/glm-4.7-free", }, "unspecified-high": { - "model": "opencode/glm-4.7-free", + "model": "zai-coding-plan/glm-5", }, "unspecified-low": { "model": "opencode/glm-4.7-free", @@ -1475,8 +1475,8 @@ exports[`generateModelConfig mixed provider scenarios uses all providers with is "variant": "xhigh", }, "unspecified-high": { - "model": "anthropic/claude-opus-4-6", - "variant": "max", + "model": "openai/gpt-5.4", + "variant": "high", }, "unspecified-low": { "model": "anthropic/claude-sonnet-4-5", diff --git a/src/cli/model-fallback-requirements.ts b/src/cli/model-fallback-requirements.ts index 5641d8bc3..d203cb91e 100644 --- a/src/cli/model-fallback-requirements.ts +++ b/src/cli/model-fallback-requirements.ts @@ -1,4 +1,4 @@ -import type { ModelRequirement } from "../shared/model-requirements" +import type { ModelRequirement } from "../shared/model-requirements"; // NOTE: These requirements are used by the CLI config generator (`generateModelConfig`). // They intentionally use "install-time" provider IDs (anthropic/openai/google/opencode/etc), @@ -7,7 +7,11 @@ import type { ModelRequirement } from "../shared/model-requirements" export const CLI_AGENT_MODEL_REQUIREMENTS: Record = { sisyphus: { fallbackChain: [ - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, { providers: ["kimi-for-coding"], model: "k2p5" }, { providers: ["zai-coding-plan"], model: "glm-4.7" }, { providers: ["opencode"], model: "glm-4.7-free" }, @@ -16,22 +20,41 @@ export const CLI_AGENT_MODEL_REQUIREMENTS: Record = { }, hephaestus: { fallbackChain: [ - { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, + { + providers: ["openai", "opencode"], + model: "gpt-5.3-codex", + variant: "medium", + }, ], requiresProvider: ["openai", "opencode"], }, oracle: { fallbackChain: [ - { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, + { + providers: ["openai", "github-copilot", "opencode"], + model: "gpt-5.2", + variant: "high", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + variant: "high", + }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, ], }, librarian: { fallbackChain: [ { providers: ["zai-coding-plan"], model: "glm-4.7" }, { providers: ["opencode"], model: "glm-4.7-free" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-sonnet-4-5", + }, ], }, explore: { @@ -43,104 +66,228 @@ export const CLI_AGENT_MODEL_REQUIREMENTS: Record = { }, "multimodal-looker": { fallbackChain: [ - { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, + { + providers: ["openai", "opencode"], + model: "gpt-5.3-codex", + variant: "medium", + }, { providers: ["kimi-for-coding"], model: "k2p5" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3-flash", + }, { providers: ["zai-coding-plan"], model: "glm-4.6v" }, { providers: ["opencode"], model: "gpt-5-nano" }, ], }, prometheus: { fallbackChain: [ - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, { providers: ["kimi-for-coding"], model: "k2p5" }, - { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro" }, + { + providers: ["openai", "github-copilot", "opencode"], + model: "gpt-5.2", + variant: "high", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + }, ], }, metis: { fallbackChain: [ - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, { providers: ["kimi-for-coding"], model: "k2p5" }, - { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, + { + providers: ["openai", "github-copilot", "opencode"], + model: "gpt-5.2", + variant: "high", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + variant: "high", + }, ], }, momus: { fallbackChain: [ - { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "medium" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, + { + providers: ["openai", "github-copilot", "opencode"], + model: "gpt-5.2", + variant: "medium", + }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + variant: "high", + }, ], }, atlas: { fallbackChain: [ { providers: ["kimi-for-coding"], model: "k2p5" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-sonnet-4-5", + }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro" }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + }, ], }, -} +}; -export const CLI_CATEGORY_MODEL_REQUIREMENTS: Record = { - "visual-engineering": { - fallbackChain: [ - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, - { providers: ["zai-coding-plan"], model: "glm-5" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, - { providers: ["kimi-for-coding"], model: "k2p5" }, - ], - }, - ultrabrain: { - fallbackChain: [ - { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "xhigh" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, - ], - }, - deep: { - fallbackChain: [ - { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, - ], - requiresModel: "gpt-5.3-codex", - }, - artistry: { - fallbackChain: [ - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, - { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" }, - ], - requiresModel: "gemini-3.1-pro", - }, - quick: { - fallbackChain: [ - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-haiku-4-5" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, - { providers: ["opencode"], model: "gpt-5-nano" }, - ], - }, - "unspecified-low": { - fallbackChain: [ - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" }, - { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, - ], - }, - "unspecified-high": { - fallbackChain: [ - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, - { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro" }, - ], - }, - writing: { - fallbackChain: [ - { providers: ["kimi-for-coding"], model: "k2p5" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" }, - ], - }, -} +export const CLI_CATEGORY_MODEL_REQUIREMENTS: Record = + { + "visual-engineering": { + fallbackChain: [ + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + variant: "high", + }, + { providers: ["zai-coding-plan", "opencode"], model: "glm-5" }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, + { providers: ["kimi-for-coding"], model: "k2p5" }, + ], + }, + ultrabrain: { + fallbackChain: [ + { + providers: ["openai", "opencode"], + model: "gpt-5.3-codex", + variant: "xhigh", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + variant: "high", + }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, + ], + }, + deep: { + fallbackChain: [ + { + providers: ["openai", "opencode"], + model: "gpt-5.3-codex", + variant: "medium", + }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + variant: "high", + }, + ], + requiresModel: "gpt-5.3-codex", + }, + artistry: { + fallbackChain: [ + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + variant: "high", + }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, + { + providers: ["openai", "github-copilot", "opencode"], + model: "gpt-5.2", + }, + ], + requiresModel: "gemini-3.1-pro", + }, + quick: { + fallbackChain: [ + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-haiku-4-5", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3-flash", + }, + { providers: ["opencode"], model: "gpt-5-nano" }, + ], + }, + "unspecified-low": { + fallbackChain: [ + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-sonnet-4-5", + }, + { + providers: ["openai", "opencode"], + model: "gpt-5.3-codex", + variant: "medium", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3-flash", + }, + ], + }, + "unspecified-high": { + fallbackChain: [ + { + providers: ["openai", "github-copilot", "opencode"], + model: "gpt-5.4", + variant: "high", + }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, + { providers: ["zai-coding-plan"], model: "glm-5" }, + { providers: ["kimi-for-coding"], model: "k2p5" }, + { providers: ["opencode"], model: "kimi-k2.5" }, + ], + }, + writing: { + fallbackChain: [ + { providers: ["kimi-for-coding"], model: "k2p5" }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3-flash", + }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-sonnet-4-5", + }, + ], + }, + }; diff --git a/src/shared/model-requirements.test.ts b/src/shared/model-requirements.test.ts index f0fa96f65..be301947f 100644 --- a/src/shared/model-requirements.test.ts +++ b/src/shared/model-requirements.test.ts @@ -311,20 +311,20 @@ describe("CATEGORY_MODEL_REQUIREMENTS", () => { expect(primary.providers[0]).toBe("anthropic") }) - test("unspecified-high has claude-opus-4-6 as primary", () => { + test("unspecified-high has gpt-5.4 as primary", () => { // #given - unspecified-high category requirement const unspecifiedHigh = CATEGORY_MODEL_REQUIREMENTS["unspecified-high"] // #when - accessing unspecified-high requirement - // #then - claude-opus-4-6 is first + // #then - gpt-5.4 is first expect(unspecifiedHigh).toBeDefined() expect(unspecifiedHigh.fallbackChain).toBeArray() expect(unspecifiedHigh.fallbackChain.length).toBeGreaterThan(1) const primary = unspecifiedHigh.fallbackChain[0] - expect(primary.model).toBe("claude-opus-4-6") - expect(primary.variant).toBe("max") - expect(primary.providers).toEqual(["anthropic", "github-copilot", "opencode"]) + expect(primary.model).toBe("gpt-5.4") + expect(primary.variant).toBe("high") + expect(primary.providers).toEqual(["openai", "github-copilot", "opencode"]) }) test("artistry has valid fallbackChain with gemini-3.1-pro as primary", () => { diff --git a/src/shared/model-requirements.ts b/src/shared/model-requirements.ts index cd060b2d8..f656f52d4 100644 --- a/src/shared/model-requirements.ts +++ b/src/shared/model-requirements.ts @@ -1,21 +1,25 @@ export type FallbackEntry = { - providers: string[] - model: string - variant?: string // Entry-specific variant (e.g., GPT→high, Opus→max) -} + providers: string[]; + model: string; + variant?: string; // Entry-specific variant (e.g., GPT→high, Opus→max) +}; export type ModelRequirement = { - fallbackChain: FallbackEntry[] - variant?: string // Default variant (used when entry doesn't specify one) - requiresModel?: string // If set, only activates when this model is available (fuzzy match) - requiresAnyModel?: boolean // If true, requires at least ONE model in fallbackChain to be available (or empty availability treated as unavailable) - requiresProvider?: string[] // If set, only activates when any of these providers is connected -} + fallbackChain: FallbackEntry[]; + variant?: string; // Default variant (used when entry doesn't specify one) + requiresModel?: string; // If set, only activates when this model is available (fuzzy match) + requiresAnyModel?: boolean; // If true, requires at least ONE model in fallbackChain to be available (or empty availability treated as unavailable) + requiresProvider?: string[]; // If set, only activates when any of these providers is connected +}; export const AGENT_MODEL_REQUIREMENTS: Record = { sisyphus: { fallbackChain: [ - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, { providers: ["zai-coding-plan", "opencode"], model: "glm-5" }, { providers: ["opencode"], model: "big-pickle" }, ], @@ -23,25 +27,44 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { }, hephaestus: { fallbackChain: [ - { providers: ["openai", "venice", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, + { + providers: ["openai", "venice", "opencode"], + model: "gpt-5.3-codex", + variant: "medium", + }, { providers: ["github-copilot"], model: "gpt-5.2", variant: "medium" }, ], requiresProvider: ["openai", "github-copilot", "venice", "opencode"], }, oracle: { fallbackChain: [ - { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, + { + providers: ["openai", "github-copilot", "opencode"], + model: "gpt-5.2", + variant: "high", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + variant: "high", + }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, + ], + }, + librarian: { + fallbackChain: [ + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3-flash", + }, + { providers: ["opencode"], model: "minimax-m2.5-free" }, + { providers: ["opencode"], model: "big-pickle" }, ], }, - librarian: { - fallbackChain: [ - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, - { providers: ["opencode"], model: "minimax-m2.5-free" }, - { providers: ["opencode"], model: "big-pickle" }, - ], - }, explore: { fallbackChain: [ { providers: ["github-copilot"], model: "grok-code-fast-1" }, @@ -52,98 +75,228 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { }, "multimodal-looker": { fallbackChain: [ - { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, + { + providers: ["openai", "opencode"], + model: "gpt-5.3-codex", + variant: "medium", + }, { providers: ["kimi-for-coding"], model: "k2p5" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3-flash", + }, { providers: ["zai-coding-plan"], model: "glm-4.6v" }, - { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5-nano" }, + { + providers: ["openai", "github-copilot", "opencode"], + model: "gpt-5-nano", + }, ], }, prometheus: { fallbackChain: [ - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, - { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro" }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, + { + providers: ["openai", "github-copilot", "opencode"], + model: "gpt-5.2", + variant: "high", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + }, ], }, metis: { fallbackChain: [ - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, - { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, + { + providers: ["openai", "github-copilot", "opencode"], + model: "gpt-5.2", + variant: "high", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + variant: "high", + }, ], }, momus: { fallbackChain: [ - { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "medium" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, + { + providers: ["openai", "github-copilot", "opencode"], + model: "gpt-5.2", + variant: "medium", + }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + variant: "high", + }, ], }, atlas: { fallbackChain: [ - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-6" }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-sonnet-4-6", + }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" }, ], }, -} +}; export const CATEGORY_MODEL_REQUIREMENTS: Record = { "visual-engineering": { fallbackChain: [ - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + variant: "high", + }, { providers: ["zai-coding-plan", "opencode"], model: "glm-5" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, ], }, ultrabrain: { fallbackChain: [ - { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "xhigh" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, + { + providers: ["openai", "opencode"], + model: "gpt-5.3-codex", + variant: "xhigh", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + variant: "high", + }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, ], }, deep: { fallbackChain: [ - { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, + { + providers: ["openai", "opencode"], + model: "gpt-5.3-codex", + variant: "medium", + }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + variant: "high", + }, ], requiresModel: "gpt-5.3-codex", }, artistry: { fallbackChain: [ - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3.1-pro", + variant: "high", + }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" }, ], requiresModel: "gemini-3.1-pro", }, quick: { fallbackChain: [ - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-haiku-4-5" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-haiku-4-5", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3-flash", + }, { providers: ["opencode"], model: "gpt-5-nano" }, ], }, "unspecified-low": { fallbackChain: [ - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-6" }, - { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-sonnet-4-6", + }, + { + providers: ["openai", "opencode"], + model: "gpt-5.3-codex", + variant: "medium", + }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3-flash", + }, ], }, "unspecified-high": { fallbackChain: [ - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, - { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro" }, + { + providers: ["openai", "github-copilot", "opencode"], + model: "gpt-5.4", + variant: "high", + }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-opus-4-6", + variant: "max", + }, + { providers: ["zai-coding-plan", "opencode"], model: "glm-5" }, + { providers: ["kimi-for-coding"], model: "k2p5" }, + { + providers: [ + "opencode", + "moonshotai", + "moonshotai-cn", + "firmware", + "ollama-cloud", + "aihubmix", + ], + model: "kimi-k2.5", + }, ], }, writing: { fallbackChain: [ - { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-6" }, + { + providers: ["google", "github-copilot", "opencode"], + model: "gemini-3-flash", + }, + { + providers: ["anthropic", "github-copilot", "opencode"], + model: "claude-sonnet-4-6", + }, ], }, -} +}; diff --git a/src/tools/delegate-task/constants.ts b/src/tools/delegate-task/constants.ts index ecf37135f..5a876fcc6 100644 --- a/src/tools/delegate-task/constants.ts +++ b/src/tools/delegate-task/constants.ts @@ -214,7 +214,7 @@ export const DEFAULT_CATEGORIES: Record = { artistry: { model: "google/gemini-3.1-pro", variant: "high" }, quick: { model: "anthropic/claude-haiku-4-5" }, "unspecified-low": { model: "anthropic/claude-sonnet-4-6" }, - "unspecified-high": { model: "anthropic/claude-opus-4-6", variant: "max" }, + "unspecified-high": { model: "openai/gpt-5.4", variant: "high" }, writing: { model: "kimi-for-coding/k2p5" }, }