fix(cli): dedupe generated installer fallback models

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-04-06 13:21:57 +09:00
parent 57b152994f
commit f69bb45662
2 changed files with 20 additions and 5 deletions
@@ -127,10 +127,19 @@ describe("generateOmoConfig - model fallback system", () => {
//#then
expect(agents.sisyphus.model).toBe("anthropic/claude-opus-4-6")
expect(agents.sisyphus.fallback_models?.map((entry) => entry.model)).toContain("openai/gpt-5.4")
expect(agents.sisyphus.fallback_models?.find((entry) => entry.model === "openai/gpt-5.4")?.variant).toBe("medium")
expect(agents.sisyphus.fallback_models).toEqual([
{
model: "openai/gpt-5.4",
variant: "medium",
},
])
expect(categories.deep.model).toBe("openai/gpt-5.4")
expect(categories.deep.fallback_models?.map((entry) => entry.model)).toContain("anthropic/claude-opus-4-6")
expect(categories.deep.fallback_models).toEqual([
{
model: "anthropic/claude-opus-4-6",
variant: "max",
},
])
})
test("uses haiku for explore when Claude max20", () => {
+8 -2
View File
@@ -47,12 +47,18 @@ function attachFallbackModels<T extends AgentConfig | CategoryConfig>(
.filter((provider) => isProviderAvailable(provider, availability))
.map((provider) => toFallbackModelObject(entry, provider))
)
const primaryIndex = expandedFallbacks.findIndex((entry) => entry.model === config.model)
const uniqueFallbacks = expandedFallbacks.filter((entry, index, allEntries) =>
allEntries.findIndex((candidate) =>
candidate.model === entry.model &&
candidate.variant === entry.variant
) === index
)
const primaryIndex = uniqueFallbacks.findIndex((entry) => entry.model === config.model)
if (primaryIndex === -1) {
return config
}
const fallbackModels = expandedFallbacks.slice(primaryIndex + 1)
const fallbackModels = uniqueFallbacks.slice(primaryIndex + 1)
if (fallbackModels.length === 0) {
return config
}