fix: remove redundant duplicate claude-opus-4-6 fallback entries

After model version update (opus-4-5 → opus-4-6), several agents had
identical duplicate fallback entries for the same model. The anthropic-only
entry was a superset covered by the broader providers entry, making it dead
code. Consolidate to single entry with all providers.
This commit is contained in:
YeonGyu-Kim 2026-02-06 15:30:05 +09:00
parent 93d3acce89
commit 161a864ea3
2 changed files with 14 additions and 44 deletions

View File

@ -23,28 +23,23 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
expect(primary.variant).toBe("high") expect(primary.variant).toBe("high")
}) })
test("sisyphus has claude-opus-4-6 as primary before claude-opus-4-6 and requiresAnyModel", () => { test("sisyphus has claude-opus-4-6 as primary and requiresAnyModel", () => {
// #given - sisyphus agent requirement // #given - sisyphus agent requirement
const sisyphus = AGENT_MODEL_REQUIREMENTS["sisyphus"] const sisyphus = AGENT_MODEL_REQUIREMENTS["sisyphus"]
// #when - accessing Sisyphus requirement // #when - accessing Sisyphus requirement
// #then - fallbackChain has claude-opus-4-6 first, claude-opus-4-6 second, glm-4.7-free last // #then - fallbackChain has claude-opus-4-6 first, glm-4.7-free last
expect(sisyphus).toBeDefined() expect(sisyphus).toBeDefined()
expect(sisyphus.fallbackChain).toBeArray() expect(sisyphus.fallbackChain).toBeArray()
expect(sisyphus.fallbackChain).toHaveLength(6) expect(sisyphus.fallbackChain).toHaveLength(5)
expect(sisyphus.requiresAnyModel).toBe(true) expect(sisyphus.requiresAnyModel).toBe(true)
const primary = sisyphus.fallbackChain[0] const primary = sisyphus.fallbackChain[0]
expect(primary.providers).toEqual(["anthropic"]) expect(primary.providers).toEqual(["anthropic", "github-copilot", "opencode"])
expect(primary.model).toBe("claude-opus-4-6") expect(primary.model).toBe("claude-opus-4-6")
expect(primary.variant).toBe("max") expect(primary.variant).toBe("max")
const secondary = sisyphus.fallbackChain[1] const last = sisyphus.fallbackChain[4]
expect(secondary.providers[0]).toBe("anthropic")
expect(secondary.model).toBe("claude-opus-4-6")
expect(secondary.variant).toBe("max")
const last = sisyphus.fallbackChain[5]
expect(last.providers[0]).toBe("opencode") expect(last.providers[0]).toBe("opencode")
expect(last.model).toBe("glm-4.7-free") expect(last.model).toBe("glm-4.7-free")
}) })
@ -103,46 +98,36 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
expect(primary.model).toBe("gemini-3-flash") expect(primary.model).toBe("gemini-3-flash")
}) })
test("prometheus has claude-opus-4-6 as primary before claude-opus-4-6", () => { test("prometheus has claude-opus-4-6 as primary", () => {
// #given - prometheus agent requirement // #given - prometheus agent requirement
const prometheus = AGENT_MODEL_REQUIREMENTS["prometheus"] const prometheus = AGENT_MODEL_REQUIREMENTS["prometheus"]
// #when - accessing Prometheus requirement // #when - accessing Prometheus requirement
// #then - claude-opus-4-6 is first, claude-opus-4-6 is second // #then - claude-opus-4-6 is first
expect(prometheus).toBeDefined() expect(prometheus).toBeDefined()
expect(prometheus.fallbackChain).toBeArray() expect(prometheus.fallbackChain).toBeArray()
expect(prometheus.fallbackChain.length).toBeGreaterThan(1) expect(prometheus.fallbackChain.length).toBeGreaterThan(1)
const primary = prometheus.fallbackChain[0] const primary = prometheus.fallbackChain[0]
expect(primary.model).toBe("claude-opus-4-6") expect(primary.model).toBe("claude-opus-4-6")
expect(primary.providers).toEqual(["anthropic"]) expect(primary.providers).toEqual(["anthropic", "github-copilot", "opencode"])
expect(primary.variant).toBe("max") expect(primary.variant).toBe("max")
const secondary = prometheus.fallbackChain[1]
expect(secondary.model).toBe("claude-opus-4-6")
expect(secondary.providers[0]).toBe("anthropic")
expect(secondary.variant).toBe("max")
}) })
test("metis has claude-opus-4-6 as primary before claude-opus-4-6", () => { test("metis has claude-opus-4-6 as primary", () => {
// #given - metis agent requirement // #given - metis agent requirement
const metis = AGENT_MODEL_REQUIREMENTS["metis"] const metis = AGENT_MODEL_REQUIREMENTS["metis"]
// #when - accessing Metis requirement // #when - accessing Metis requirement
// #then - claude-opus-4-6 is first, claude-opus-4-6 is second // #then - claude-opus-4-6 is first
expect(metis).toBeDefined() expect(metis).toBeDefined()
expect(metis.fallbackChain).toBeArray() expect(metis.fallbackChain).toBeArray()
expect(metis.fallbackChain.length).toBeGreaterThan(1) expect(metis.fallbackChain.length).toBeGreaterThan(1)
const primary = metis.fallbackChain[0] const primary = metis.fallbackChain[0]
expect(primary.model).toBe("claude-opus-4-6") expect(primary.model).toBe("claude-opus-4-6")
expect(primary.providers).toEqual(["anthropic"]) expect(primary.providers).toEqual(["anthropic", "github-copilot", "opencode"])
expect(primary.variant).toBe("max") expect(primary.variant).toBe("max")
const secondary = metis.fallbackChain[1]
expect(secondary.model).toBe("claude-opus-4-6")
expect(secondary.providers[0]).toBe("anthropic")
expect(secondary.variant).toBe("max")
}) })
test("momus has valid fallbackChain with gpt-5.2 as primary", () => { test("momus has valid fallbackChain with gpt-5.2 as primary", () => {
@ -301,12 +286,12 @@ describe("CATEGORY_MODEL_REQUIREMENTS", () => {
expect(primary.providers[0]).toBe("anthropic") expect(primary.providers[0]).toBe("anthropic")
}) })
test("unspecified-high has claude-opus-4-6 as primary before claude-opus-4-6", () => { test("unspecified-high has claude-opus-4-6 as primary", () => {
// #given - unspecified-high category requirement // #given - unspecified-high category requirement
const unspecifiedHigh = CATEGORY_MODEL_REQUIREMENTS["unspecified-high"] const unspecifiedHigh = CATEGORY_MODEL_REQUIREMENTS["unspecified-high"]
// #when - accessing unspecified-high requirement // #when - accessing unspecified-high requirement
// #then - claude-opus-4-6 is first, claude-opus-4-6 is second // #then - claude-opus-4-6 is first
expect(unspecifiedHigh).toBeDefined() expect(unspecifiedHigh).toBeDefined()
expect(unspecifiedHigh.fallbackChain).toBeArray() expect(unspecifiedHigh.fallbackChain).toBeArray()
expect(unspecifiedHigh.fallbackChain.length).toBeGreaterThan(1) expect(unspecifiedHigh.fallbackChain.length).toBeGreaterThan(1)
@ -314,12 +299,7 @@ describe("CATEGORY_MODEL_REQUIREMENTS", () => {
const primary = unspecifiedHigh.fallbackChain[0] const primary = unspecifiedHigh.fallbackChain[0]
expect(primary.model).toBe("claude-opus-4-6") expect(primary.model).toBe("claude-opus-4-6")
expect(primary.variant).toBe("max") expect(primary.variant).toBe("max")
expect(primary.providers).toEqual(["anthropic"]) expect(primary.providers).toEqual(["anthropic", "github-copilot", "opencode"])
const secondary = unspecifiedHigh.fallbackChain[1]
expect(secondary.model).toBe("claude-opus-4-6")
expect(secondary.variant).toBe("max")
expect(secondary.providers[0]).toBe("anthropic")
}) })
test("artistry has valid fallbackChain with gemini-3-pro as primary", () => { test("artistry has valid fallbackChain with gemini-3-pro as primary", () => {

View File

@ -15,7 +15,6 @@ export type ModelRequirement = {
export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = { export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
sisyphus: { sisyphus: {
fallbackChain: [ fallbackChain: [
{ providers: ["anthropic"], model: "claude-opus-4-6", variant: "max" },
{ 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: ["kimi-for-coding"], model: "k2p5" },
{ providers: ["opencode"], model: "kimi-k2.5-free" }, { providers: ["opencode"], model: "kimi-k2.5-free" },
@ -34,7 +33,6 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
fallbackChain: [ fallbackChain: [
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" },
{ providers: ["anthropic"], model: "claude-opus-4-6", variant: "max" },
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" },
], ],
}, },
@ -65,7 +63,6 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
}, },
prometheus: { prometheus: {
fallbackChain: [ fallbackChain: [
{ providers: ["anthropic"], model: "claude-opus-4-6", variant: "max" },
{ 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: ["kimi-for-coding"], model: "k2p5" },
{ providers: ["opencode"], model: "kimi-k2.5-free" }, { providers: ["opencode"], model: "kimi-k2.5-free" },
@ -75,7 +72,6 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
}, },
metis: { metis: {
fallbackChain: [ fallbackChain: [
{ providers: ["anthropic"], model: "claude-opus-4-6", variant: "max" },
{ 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: ["kimi-for-coding"], model: "k2p5" },
{ providers: ["opencode"], model: "kimi-k2.5-free" }, { providers: ["opencode"], model: "kimi-k2.5-free" },
@ -86,7 +82,6 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
momus: { momus: {
fallbackChain: [ fallbackChain: [
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "medium" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "medium" },
{ providers: ["anthropic"], model: "claude-opus-4-6", variant: "max" },
{ 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: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" },
], ],
@ -106,7 +101,6 @@ export const CATEGORY_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
"visual-engineering": { "visual-engineering": {
fallbackChain: [ fallbackChain: [
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" },
{ providers: ["anthropic"], model: "claude-opus-4-6", variant: "max" },
{ 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"], model: "glm-4.7" }, { providers: ["zai-coding-plan"], model: "glm-4.7" },
], ],
@ -115,14 +109,12 @@ export const CATEGORY_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
fallbackChain: [ fallbackChain: [
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.3-codex", variant: "xhigh" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.3-codex", variant: "xhigh" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" },
{ providers: ["anthropic"], model: "claude-opus-4-6", variant: "max" },
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" },
], ],
}, },
deep: { deep: {
fallbackChain: [ fallbackChain: [
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.3-codex", variant: "medium" },
{ providers: ["anthropic"], model: "claude-opus-4-6", variant: "max" },
{ 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: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" },
], ],
@ -131,7 +123,6 @@ export const CATEGORY_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
artistry: { artistry: {
fallbackChain: [ fallbackChain: [
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "high" },
{ providers: ["anthropic"], model: "claude-opus-4-6", variant: "max" },
{ 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: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" },
], ],
@ -153,7 +144,6 @@ export const CATEGORY_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
}, },
"unspecified-high": { "unspecified-high": {
fallbackChain: [ fallbackChain: [
{ providers: ["anthropic"], model: "claude-opus-4-6", variant: "max" },
{ 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: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" },