Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 14 additions & 14 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

48 changes: 24 additions & 24 deletions src/cli/__snapshots__/model-fallback.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -335,18 +335,18 @@ exports[`generateModelConfig single native provider uses Gemini models when only
},
"metis": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"momus": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"multimodal-looker": {
"model": "google/gemini-3-flash",
},
"oracle": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"prometheus": {
"model": "google/gemini-3-pro",
Expand All @@ -355,14 +355,14 @@ exports[`generateModelConfig single native provider uses Gemini models when only
"categories": {
"artistry": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"quick": {
"model": "google/gemini-3-flash",
},
"ultrabrain": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"unspecified-high": {
"model": "google/gemini-3-flash",
Expand Down Expand Up @@ -395,18 +395,18 @@ exports[`generateModelConfig single native provider uses Gemini models with isMa
},
"metis": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"momus": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"multimodal-looker": {
"model": "google/gemini-3-flash",
},
"oracle": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"prometheus": {
"model": "google/gemini-3-pro",
Expand All @@ -415,14 +415,14 @@ exports[`generateModelConfig single native provider uses Gemini models with isMa
"categories": {
"artistry": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"quick": {
"model": "google/gemini-3-flash",
},
"ultrabrain": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"unspecified-high": {
"model": "google/gemini-3-pro",
Expand Down Expand Up @@ -484,7 +484,7 @@ exports[`generateModelConfig all native providers uses preferred models from fal
"categories": {
"artistry": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"deep": {
"model": "openai/gpt-5.2-codex",
Expand Down Expand Up @@ -557,7 +557,7 @@ exports[`generateModelConfig all native providers uses preferred models with isM
"categories": {
"artistry": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"deep": {
"model": "openai/gpt-5.2-codex",
Expand Down Expand Up @@ -631,7 +631,7 @@ exports[`generateModelConfig fallback providers uses OpenCode Zen models when on
"categories": {
"artistry": {
"model": "opencode/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"deep": {
"model": "opencode/gpt-5.2-codex",
Expand Down Expand Up @@ -704,7 +704,7 @@ exports[`generateModelConfig fallback providers uses OpenCode Zen models with is
"categories": {
"artistry": {
"model": "opencode/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"deep": {
"model": "opencode/gpt-5.2-codex",
Expand Down Expand Up @@ -778,7 +778,7 @@ exports[`generateModelConfig fallback providers uses GitHub Copilot models when
"categories": {
"artistry": {
"model": "github-copilot/gemini-3-pro-preview",
"variant": "max",
"variant": "high",
},
"deep": {
"model": "github-copilot/gpt-5.2-codex",
Expand Down Expand Up @@ -851,7 +851,7 @@ exports[`generateModelConfig fallback providers uses GitHub Copilot models with
"categories": {
"artistry": {
"model": "github-copilot/gemini-3-pro-preview",
"variant": "max",
"variant": "high",
},
"deep": {
"model": "github-copilot/gpt-5.2-codex",
Expand Down Expand Up @@ -1035,7 +1035,7 @@ exports[`generateModelConfig mixed provider scenarios uses Claude + OpenCode Zen
"categories": {
"artistry": {
"model": "opencode/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"deep": {
"model": "opencode/gpt-5.2-codex",
Expand Down Expand Up @@ -1108,7 +1108,7 @@ exports[`generateModelConfig mixed provider scenarios uses OpenAI + Copilot comb
"categories": {
"artistry": {
"model": "github-copilot/gemini-3-pro-preview",
"variant": "max",
"variant": "high",
},
"deep": {
"model": "openai/gpt-5.2-codex",
Expand Down Expand Up @@ -1225,7 +1225,7 @@ exports[`generateModelConfig mixed provider scenarios uses Gemini + Claude combi
},
"oracle": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"prometheus": {
"model": "anthropic/claude-opus-4-5",
Expand All @@ -1239,14 +1239,14 @@ exports[`generateModelConfig mixed provider scenarios uses Gemini + Claude combi
"categories": {
"artistry": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"quick": {
"model": "anthropic/claude-haiku-4-5",
},
"ultrabrain": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"unspecified-high": {
"model": "anthropic/claude-sonnet-4-5",
Expand Down Expand Up @@ -1308,7 +1308,7 @@ exports[`generateModelConfig mixed provider scenarios uses all fallback provider
"categories": {
"artistry": {
"model": "github-copilot/gemini-3-pro-preview",
"variant": "max",
"variant": "high",
},
"deep": {
"model": "github-copilot/gpt-5.2-codex",
Expand Down Expand Up @@ -1381,7 +1381,7 @@ exports[`generateModelConfig mixed provider scenarios uses all providers togethe
"categories": {
"artistry": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"deep": {
"model": "openai/gpt-5.2-codex",
Expand Down Expand Up @@ -1454,7 +1454,7 @@ exports[`generateModelConfig mixed provider scenarios uses all providers with is
"categories": {
"artistry": {
"model": "google/gemini-3-pro",
"variant": "max",
"variant": "high",
},
"deep": {
"model": "openai/gpt-5.2-codex",
Expand Down
2 changes: 1 addition & 1 deletion src/shared/model-requirements.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ describe("CATEGORY_MODEL_REQUIREMENTS", () => {

const primary = artistry.fallbackChain[0]
expect(primary.model).toBe("gemini-3-pro")
expect(primary.variant).toBe("max")
expect(primary.variant).toBe("high")
expect(primary.providers[0]).toBe("google")
})

Expand Down
26 changes: 13 additions & 13 deletions src/shared/model-requirements.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
oracle: {
fallbackChain: [
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" },
Copy link

@cubic-dev-ai cubic-dev-ai bot Feb 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Gemini 3 Pro variant update is incomplete.

src/tools/delegate-task/constants.ts still uses variant: "max" for the artistry category in DEFAULT_CATEGORIES. This will likely cause API errors when using the delegate_task tool with this category.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/shared/model-requirements.ts, line 34:

<comment>Gemini 3 Pro variant update is incomplete.

`src/tools/delegate-task/constants.ts` still uses `variant: "max"` for the `artistry` category in `DEFAULT_CATEGORIES`. This will likely cause API errors when using the `delegate_task` tool with this category.</comment>

<file context>
@@ -31,7 +31,7 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
     fallbackChain: [
       { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
-      { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
+      { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" },
       { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
     ],
</file context>
Fix with Cubic

{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
],
},
Expand Down Expand Up @@ -75,14 +75,14 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
{ providers: ["kimi-for-coding"], model: "k2p5" },
{ providers: ["opencode"], model: "kimi-k2.5-free" },
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-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-5", variant: "max" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" },
],
},
atlas: {
Expand All @@ -107,26 +107,26 @@ export const CATEGORY_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
ultrabrain: {
fallbackChain: [
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2-codex", variant: "xhigh" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" },
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
],
},
deep: {
fallbackChain: [
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2-codex", variant: "medium" },
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" },
],
requiresModel: "gpt-5.2-codex",
},
artistry: {
fallbackChain: [
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" },
],
requiresModel: "gemini-3-pro",
},
artistry: {
fallbackChain: [
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" },
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" },
],
requiresModel: "gemini-3-pro",
},
quick: {
fallbackChain: [
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-haiku-4-5" },
Expand Down
2 changes: 1 addition & 1 deletion src/tools/delegate-task/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ export const DEFAULT_CATEGORIES: Record<string, CategoryConfig> = {
"visual-engineering": { model: "google/gemini-3-pro" },
ultrabrain: { model: "openai/gpt-5.2-codex", variant: "xhigh" },
deep: { model: "openai/gpt-5.2-codex", variant: "medium" },
artistry: { model: "google/gemini-3-pro", variant: "max" },
artistry: { model: "google/gemini-3-pro", variant: "high" },
quick: { model: "anthropic/claude-haiku-4-5" },
"unspecified-low": { model: "anthropic/claude-sonnet-4-5" },
"unspecified-high": { model: "anthropic/claude-opus-4-5", variant: "max" },
Expand Down
2 changes: 1 addition & 1 deletion src/tools/delegate-task/tools.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1492,7 +1492,7 @@ describe("sisyphus-task", () => {
abort: new AbortController().signal,
}

// when - artistry category (gemini-3-pro with max variant)
// when - artistry category (gemini-3-pro with high variant)
const result = await tool.execute(
{
description: "Test artistry forced background",
Expand Down