test: align model expectations with GPT-5.5 defaults

This commit is contained in:
auyua9
2026-04-26 02:00:41 +08:00
parent 6cd145ef28
commit 5bbac51e6d
6 changed files with 52 additions and 52 deletions
+33 -33
View File
@@ -58,14 +58,14 @@ describe("createBuiltinAgents with model overrides", () => {
const providerModelsSpy = spyOn(connectedProvidersCache, "readProviderModelsCache").mockReturnValue(null) const providerModelsSpy = spyOn(connectedProvidersCache, "readProviderModelsCache").mockReturnValue(null)
const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(new Set()) const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(new Set())
const overrides = { const overrides = {
sisyphus: { model: "github-copilot/gpt-5.4" }, sisyphus: { model: "github-copilot/gpt-5.5" },
} }
// #when // #when
const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL, undefined, undefined, [], undefined, undefined) const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL, undefined, undefined, [], undefined, undefined)
// #then // #then
expect(agents.sisyphus.model).toBe("github-copilot/gpt-5.4") expect(agents.sisyphus.model).toBe("github-copilot/gpt-5.5")
expect(agents.sisyphus.reasoningEffort).toBe("medium") expect(agents.sisyphus.reasoningEffort).toBe("medium")
expect(agents.sisyphus.thinking).toBeUndefined() expect(agents.sisyphus.thinking).toBeUndefined()
providerModelsSpy.mockRestore() providerModelsSpy.mockRestore()
@@ -75,9 +75,9 @@ describe("createBuiltinAgents with model overrides", () => {
test("Atlas uses uiSelectedModel", async () => { test("Atlas uses uiSelectedModel", async () => {
// #given // #given
const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue( const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(
new Set(["openai/gpt-5.4", "anthropic/claude-sonnet-4-6"]) new Set(["openai/gpt-5.5", "anthropic/claude-sonnet-4-6"])
) )
const uiSelectedModel = "openai/gpt-5.4" const uiSelectedModel = "openai/gpt-5.5"
try { try {
// #when // #when
@@ -96,7 +96,7 @@ describe("createBuiltinAgents with model overrides", () => {
// #then // #then
expect(agents.atlas).toBeDefined() expect(agents.atlas).toBeDefined()
expect(agents.atlas.model).toBe("openai/gpt-5.4") expect(agents.atlas.model).toBe("openai/gpt-5.5")
} finally { } finally {
fetchSpy.mockRestore() fetchSpy.mockRestore()
} }
@@ -105,9 +105,9 @@ describe("createBuiltinAgents with model overrides", () => {
test("user config model takes priority over uiSelectedModel for sisyphus", async () => { test("user config model takes priority over uiSelectedModel for sisyphus", async () => {
// #given // #given
const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue( const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(
new Set(["openai/gpt-5.4", "anthropic/claude-sonnet-4-6"]) new Set(["openai/gpt-5.5", "anthropic/claude-sonnet-4-6"])
) )
const uiSelectedModel = "openai/gpt-5.4" const uiSelectedModel = "openai/gpt-5.5"
const overrides = { const overrides = {
sisyphus: { model: "google/antigravity-claude-opus-4-5-thinking" }, sisyphus: { model: "google/antigravity-claude-opus-4-5-thinking" },
} }
@@ -138,9 +138,9 @@ describe("createBuiltinAgents with model overrides", () => {
test("user config model takes priority over uiSelectedModel for atlas", async () => { test("user config model takes priority over uiSelectedModel for atlas", async () => {
// #given // #given
const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue( const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(
new Set(["openai/gpt-5.4", "anthropic/claude-sonnet-4-6"]) new Set(["openai/gpt-5.5", "anthropic/claude-sonnet-4-6"])
) )
const uiSelectedModel = "openai/gpt-5.4" const uiSelectedModel = "openai/gpt-5.5"
const overrides = { const overrides = {
atlas: { model: "google/antigravity-claude-opus-4-5-thinking" }, atlas: { model: "google/antigravity-claude-opus-4-5-thinking" },
} }
@@ -263,14 +263,14 @@ describe("createBuiltinAgents with model overrides", () => {
const providerModelsSpy = spyOn(connectedProvidersCache, "readProviderModelsCache").mockReturnValue(null) const providerModelsSpy = spyOn(connectedProvidersCache, "readProviderModelsCache").mockReturnValue(null)
const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(new Set()) const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(new Set())
const overrides = { const overrides = {
sisyphus: { model: "github-copilot/gpt-5.4", temperature: 0.5 }, sisyphus: { model: "github-copilot/gpt-5.5", temperature: 0.5 },
} }
// #when // #when
const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL, undefined, undefined, [], undefined, undefined) const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL, undefined, undefined, [], undefined, undefined)
// #then // #then
expect(agents.sisyphus.model).toBe("github-copilot/gpt-5.4") expect(agents.sisyphus.model).toBe("github-copilot/gpt-5.5")
expect(agents.sisyphus.temperature).toBe(0.5) expect(agents.sisyphus.temperature).toBe(0.5)
providerModelsSpy.mockRestore() providerModelsSpy.mockRestore()
fetchSpy.mockRestore() fetchSpy.mockRestore()
@@ -304,7 +304,7 @@ describe("createBuiltinAgents with model overrides", () => {
"opencode/kimi-k2.5-free", "opencode/kimi-k2.5-free",
"zai-coding-plan/glm-5", "zai-coding-plan/glm-5",
"opencode/big-pickle", "opencode/big-pickle",
"openai/gpt-5.4", "openai/gpt-5.5",
]) ])
) )
@@ -341,7 +341,7 @@ describe("createBuiltinAgents with model overrides", () => {
test("excludes hidden custom agents from orchestrator prompts", async () => { test("excludes hidden custom agents from orchestrator prompts", async () => {
// #given // #given
const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue( const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(
new Set(["anthropic/claude-opus-4-7", "openai/gpt-5.4"]) new Set(["anthropic/claude-opus-4-7", "openai/gpt-5.5"])
) )
const customAgentSummaries = [ const customAgentSummaries = [
@@ -377,7 +377,7 @@ describe("createBuiltinAgents with model overrides", () => {
test("excludes disabled custom agents from orchestrator prompts", async () => { test("excludes disabled custom agents from orchestrator prompts", async () => {
// #given // #given
const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue( const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(
new Set(["anthropic/claude-opus-4-7", "openai/gpt-5.4"]) new Set(["anthropic/claude-opus-4-7", "openai/gpt-5.5"])
) )
const customAgentSummaries = [ const customAgentSummaries = [
@@ -413,7 +413,7 @@ describe("createBuiltinAgents with model overrides", () => {
test("excludes custom agents when disabledAgents contains their name (case-insensitive)", async () => { test("excludes custom agents when disabledAgents contains their name (case-insensitive)", async () => {
// #given // #given
const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue( const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(
new Set(["anthropic/claude-opus-4-7", "openai/gpt-5.4"]) new Set(["anthropic/claude-opus-4-7", "openai/gpt-5.5"])
) )
const disabledAgents = ["ReSeArChEr"] const disabledAgents = ["ReSeArChEr"]
@@ -449,7 +449,7 @@ describe("createBuiltinAgents with model overrides", () => {
test("does not advertise duplicate custom agents case-insensitively", async () => { test("does not advertise duplicate custom agents case-insensitively", async () => {
// #given // #given
const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue( const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(
new Set(["anthropic/claude-opus-4-7", "openai/gpt-5.4"]) new Set(["anthropic/claude-opus-4-7", "openai/gpt-5.5"])
) )
const customAgentSummaries = [ const customAgentSummaries = [
@@ -481,7 +481,7 @@ describe("createBuiltinAgents with model overrides", () => {
test("does not surface custom agent strings in orchestrator prompts", async () => { test("does not surface custom agent strings in orchestrator prompts", async () => {
// #given // #given
const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue( const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(
new Set(["anthropic/claude-opus-4-7", "openai/gpt-5.4"]) new Set(["anthropic/claude-opus-4-7", "openai/gpt-5.5"])
) )
const customAgentSummaries = [ const customAgentSummaries = [
@@ -840,7 +840,7 @@ describe("Atlas is unaffected by environment context toggle", () => {
beforeEach(() => { beforeEach(() => {
fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue( fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(
new Set(["anthropic/claude-opus-4-7", "openai/gpt-5.4"]) new Set(["anthropic/claude-opus-4-7", "openai/gpt-5.5"])
) )
}) })
@@ -966,7 +966,7 @@ describe("createBuiltinAgents with requiresAnyModel gating (sisyphus)", () => {
// #given - user configures a model from a plugin provider (like antigravity) // #given - user configures a model from a plugin provider (like antigravity)
// that is NOT in the availableModels cache and NOT in the fallback chain // that is NOT in the availableModels cache and NOT in the fallback chain
const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue( const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(
new Set(["openai/gpt-5.4"]) new Set(["openai/gpt-5.5"])
) )
const cacheSpy = spyOn(connectedProvidersCache, "readConnectedProvidersCache").mockReturnValue( const cacheSpy = spyOn(connectedProvidersCache, "readConnectedProvidersCache").mockReturnValue(
["openai"] ["openai"]
@@ -1016,7 +1016,7 @@ describe("createBuiltinAgents with requiresAnyModel gating (sisyphus)", () => {
test("atlas and metis resolve to OpenAI in an OpenAI-only environment without a system default", async () => { test("atlas and metis resolve to OpenAI in an OpenAI-only environment without a system default", async () => {
// #given // #given
const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(new Set(["openai/gpt-5.4"])) const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue(new Set(["openai/gpt-5.5"]))
const cacheSpy = spyOn(connectedProvidersCache, "readConnectedProvidersCache").mockReturnValue(["openai"]) const cacheSpy = spyOn(connectedProvidersCache, "readConnectedProvidersCache").mockReturnValue(["openai"])
try { try {
@@ -1025,10 +1025,10 @@ describe("createBuiltinAgents with requiresAnyModel gating (sisyphus)", () => {
// #then // #then
expect(agents.atlas).toBeDefined() expect(agents.atlas).toBeDefined()
expect(agents.atlas.model).toBe("openai/gpt-5.4") expect(agents.atlas.model).toBe("openai/gpt-5.5")
expect(agents.atlas.variant).toBe("medium") expect(agents.atlas.variant).toBe("medium")
expect(agents.metis).toBeDefined() expect(agents.metis).toBeDefined()
expect(agents.metis.model).toBe("openai/gpt-5.4") expect(agents.metis.model).toBe("openai/gpt-5.5")
expect(agents.metis.variant).toBe("high") expect(agents.metis.variant).toBe("high")
} finally { } finally {
fetchSpy.mockRestore() fetchSpy.mockRestore()
@@ -1096,7 +1096,7 @@ describe("buildAgent with category and skills", () => {
const categories = { const categories = {
"custom-category": { "custom-category": {
model: "openai/gpt-5.4", model: "openai/gpt-5.5",
variant: "xhigh", variant: "xhigh",
}, },
} }
@@ -1105,7 +1105,7 @@ describe("buildAgent with category and skills", () => {
const agent = buildAgent(source["test-agent"], TEST_MODEL, categories) const agent = buildAgent(source["test-agent"], TEST_MODEL, categories)
// #then // #then
expect(agent.model).toBe("openai/gpt-5.4") expect(agent.model).toBe("openai/gpt-5.5")
expect(agent.variant).toBe("xhigh") expect(agent.variant).toBe("xhigh")
}) })
@@ -1185,7 +1185,7 @@ describe("buildAgent with category and skills", () => {
const agent = buildAgent(source["test-agent"], TEST_MODEL) const agent = buildAgent(source["test-agent"], TEST_MODEL)
// #then - category's built-in model and skills are applied // #then - category's built-in model and skills are applied
expect(agent.model).toBe("openai/gpt-5.4") expect(agent.model).toBe("openai/gpt-5.5")
expect(agent.variant).toBe("xhigh") expect(agent.variant).toBe("xhigh")
expect(agent.prompt).toContain("Role: Designer-Turned-Developer") expect(agent.prompt).toContain("Role: Designer-Turned-Developer")
expect(agent.prompt).toContain("Task description") expect(agent.prompt).toContain("Task description")
@@ -1309,9 +1309,9 @@ describe("override.category expansion in createBuiltinAgents", () => {
// #when // #when
const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL) const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL)
// #then - ultrabrain category: model=openai/gpt-5.4, variant=xhigh // #then - ultrabrain category: model=openai/gpt-5.5, variant=xhigh
expect(agents.oracle).toBeDefined() expect(agents.oracle).toBeDefined()
expect(agents.oracle.model).toBe("openai/gpt-5.4") expect(agents.oracle.model).toBe("openai/gpt-5.5")
expect(agents.oracle.variant).toBe("xhigh") expect(agents.oracle.variant).toBe("xhigh")
}) })
@@ -1333,7 +1333,7 @@ describe("override.category expansion in createBuiltinAgents", () => {
// #given - custom category has reasoningEffort=xhigh, direct override says "low" // #given - custom category has reasoningEffort=xhigh, direct override says "low"
const categories = { const categories = {
"test-cat": { "test-cat": {
model: "openai/gpt-5.4", model: "openai/gpt-5.5",
reasoningEffort: "xhigh" as const, reasoningEffort: "xhigh" as const,
}, },
} }
@@ -1353,7 +1353,7 @@ describe("override.category expansion in createBuiltinAgents", () => {
// #given - custom category has reasoningEffort, no direct reasoningEffort in override // #given - custom category has reasoningEffort, no direct reasoningEffort in override
const categories = { const categories = {
"reasoning-cat": { "reasoning-cat": {
model: "openai/gpt-5.4", model: "openai/gpt-5.5",
reasoningEffort: "high" as const, reasoningEffort: "high" as const,
}, },
} }
@@ -1378,9 +1378,9 @@ describe("override.category expansion in createBuiltinAgents", () => {
// #when // #when
const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL) const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL)
// #then - ultrabrain category: model=openai/gpt-5.4, variant=xhigh // #then - ultrabrain category: model=openai/gpt-5.5, variant=xhigh
expect(agents.sisyphus).toBeDefined() expect(agents.sisyphus).toBeDefined()
expect(agents.sisyphus.model).toBe("openai/gpt-5.4") expect(agents.sisyphus.model).toBe("openai/gpt-5.5")
expect(agents.sisyphus.variant).toBe("xhigh") expect(agents.sisyphus.variant).toBe("xhigh")
}) })
@@ -1393,9 +1393,9 @@ describe("override.category expansion in createBuiltinAgents", () => {
// #when // #when
const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL) const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL)
// #then - ultrabrain category: model=openai/gpt-5.4, variant=xhigh // #then - ultrabrain category: model=openai/gpt-5.5, variant=xhigh
expect(agents.atlas).toBeDefined() expect(agents.atlas).toBeDefined()
expect(agents.atlas.model).toBe("openai/gpt-5.4") expect(agents.atlas.model).toBe("openai/gpt-5.5")
expect(agents.atlas.variant).toBe("xhigh") expect(agents.atlas.variant).toBe("xhigh")
}) })
@@ -96,10 +96,10 @@ describe("generateOmoConfig - model fallback system", () => {
const result = generateOmoConfig(config) const result = generateOmoConfig(config)
//#then //#then
expect((result.agents as Record<string, { model: string; variant?: string }>).sisyphus.model).toBe("openai/gpt-5.4") expect((result.agents as Record<string, { model: string; variant?: string }>).sisyphus.model).toBe("openai/gpt-5.5")
expect((result.agents as Record<string, { model: string; variant?: string }>).sisyphus.variant).toBe("medium") expect((result.agents as Record<string, { model: string; variant?: string }>).sisyphus.variant).toBe("medium")
expect((result.agents as Record<string, { model: string }>).oracle.model).toBe("openai/gpt-5.5") expect((result.agents as Record<string, { model: string }>).oracle.model).toBe("openai/gpt-5.5")
expect((result.agents as Record<string, { model: string }>)['multimodal-looker'].model).toBe("openai/gpt-5.4") expect((result.agents as Record<string, { model: string }>)['multimodal-looker'].model).toBe("openai/gpt-5.5")
}) })
test("adds fallback_models when multiple providers are available", () => { test("adds fallback_models when multiple providers are available", () => {
@@ -134,7 +134,7 @@ describe("generateOmoConfig - model fallback system", () => {
expect(agents.sisyphus.model).toBe("anthropic/claude-opus-4-7") expect(agents.sisyphus.model).toBe("anthropic/claude-opus-4-7")
expect(agents.sisyphus.fallback_models).toEqual([ expect(agents.sisyphus.fallback_models).toEqual([
{ {
model: "openai/gpt-5.4", model: "openai/gpt-5.5",
variant: "medium", variant: "medium",
}, },
]) ])
+2 -2
View File
@@ -750,7 +750,7 @@ describe("Prometheus category config resolution", () => {
// then // then
expect(config).toBeDefined() expect(config).toBeDefined()
expect(config?.model).toBe("openai/gpt-5.4") expect(config?.model).toBe("openai/gpt-5.5")
expect(config?.variant).toBe("xhigh") expect(config?.variant).toBe("xhigh")
}) })
@@ -810,7 +810,7 @@ describe("Prometheus category config resolution", () => {
// then - falls back to DEFAULT_CATEGORIES // then - falls back to DEFAULT_CATEGORIES
expect(config).toBeDefined() expect(config).toBeDefined()
expect(config?.model).toBe("openai/gpt-5.4") expect(config?.model).toBe("openai/gpt-5.5")
expect(config?.variant).toBe("xhigh") expect(config?.variant).toBe("xhigh")
}) })
+5 -5
View File
@@ -36,7 +36,7 @@ describe("resolveAgentVariant", () => {
sisyphus: { category: "ultrabrain" }, sisyphus: { category: "ultrabrain" },
}, },
categories: { categories: {
ultrabrain: { model: "openai/gpt-5.4", variant: "xhigh" }, ultrabrain: { model: "openai/gpt-5.5", variant: "xhigh" },
}, },
} as OhMyOpenCodeConfig } as OhMyOpenCodeConfig
@@ -124,10 +124,10 @@ describe("resolveVariantForModel", () => {
expect(variant).toBe("medium") expect(variant).toBe("medium")
}) })
test("returns medium for openai/gpt-5.4 in sisyphus chain", () => { test("returns medium for openai/gpt-5.5 in sisyphus chain", () => {
// #given openai/gpt-5.4 is now in sisyphus fallback chain with variant medium // #given openai/gpt-5.5 is now in sisyphus fallback chain with variant medium
const config = {} as OhMyOpenCodeConfig const config = {} as OhMyOpenCodeConfig
const model = { providerID: "openai", modelID: "gpt-5.4" } const model = { providerID: "openai", modelID: "gpt-5.5" }
// when // when
const variant = resolveVariantForModel(config, "sisyphus", model) const variant = resolveVariantForModel(config, "sisyphus", model)
@@ -179,7 +179,7 @@ describe("resolveVariantForModel", () => {
"custom-agent": { category: "ultrabrain" }, "custom-agent": { category: "ultrabrain" },
}, },
} as OhMyOpenCodeConfig } as OhMyOpenCodeConfig
const model = { providerID: "openai", modelID: "gpt-5.4" } const model = { providerID: "openai", modelID: "gpt-5.5" }
// when // when
const variant = resolveVariantForModel(config, "custom-agent", model) const variant = resolveVariantForModel(config, "custom-agent", model)
@@ -20,7 +20,7 @@ describe("model-capability-guardrails", () => {
expect(modelIDs).toEqual([...modelIDs].sort()) expect(modelIDs).toEqual([...modelIDs].sort())
expect(new Set(modelIDs).size).toBe(modelIDs.length) expect(new Set(modelIDs).size).toBe(modelIDs.length)
expect(modelIDs).toContain("claude-opus-4-7") expect(modelIDs).toContain("claude-opus-4-7")
expect(modelIDs).toContain("gpt-5.4") expect(modelIDs).toContain("gpt-5.5")
expect(modelIDs).toContain("kimi-k2.5") expect(modelIDs).toContain("kimi-k2.5")
}) })
@@ -5,36 +5,36 @@ describe("buildMultimodalLookerFallbackChain", () => {
// given // given
const { buildMultimodalLookerFallbackChain } = await import("./multimodal-fallback-chain") const { buildMultimodalLookerFallbackChain } = await import("./multimodal-fallback-chain")
const visionCapableModels = [ const visionCapableModels = [
{ providerID: "openai", modelID: "gpt-5.4" }, { providerID: "openai", modelID: "gpt-5.5" },
{ providerID: "opencode", modelID: "gpt-5.4" }, { providerID: "opencode", modelID: "gpt-5.5" },
] ]
// when // when
const result = buildMultimodalLookerFallbackChain(visionCapableModels) const result = buildMultimodalLookerFallbackChain(visionCapableModels)
// then // then
const gpt54Entries = result.filter((entry) => entry.model === "gpt-5.4") const gpt55Entries = result.filter((entry) => entry.model === "gpt-5.5")
expect(gpt54Entries.length).toBeGreaterThan(0) expect(gpt55Entries.length).toBeGreaterThan(0)
}) })
it("avoids duplicates when adding hardcoded entries", async () => { it("avoids duplicates when adding hardcoded entries", async () => {
// given // given
const { buildMultimodalLookerFallbackChain } = await import("./multimodal-fallback-chain") const { buildMultimodalLookerFallbackChain } = await import("./multimodal-fallback-chain")
const visionCapableModels = [{ providerID: "openai", modelID: "gpt-5.4" }] const visionCapableModels = [{ providerID: "openai", modelID: "gpt-5.5" }]
// when // when
const result = buildMultimodalLookerFallbackChain(visionCapableModels) const result = buildMultimodalLookerFallbackChain(visionCapableModels)
// then // then
expect(result.length).toBeGreaterThan(0) expect(result.length).toBeGreaterThan(0)
expect(result[0].model).toBe("gpt-5.4") expect(result[0].model).toBe("gpt-5.5")
expect(result[0].providers).toContain("openai") expect(result[0].providers).toContain("openai")
}) })
it("preserves hardcoded variant metadata for cache-derived entries", async () => { it("preserves hardcoded variant metadata for cache-derived entries", async () => {
// given // given
const { buildMultimodalLookerFallbackChain } = await import("./multimodal-fallback-chain") const { buildMultimodalLookerFallbackChain } = await import("./multimodal-fallback-chain")
const visionCapableModels = [{ providerID: "openai", modelID: "gpt-5.4" }] const visionCapableModels = [{ providerID: "openai", modelID: "gpt-5.5" }]
// when // when
const result = buildMultimodalLookerFallbackChain(visionCapableModels) const result = buildMultimodalLookerFallbackChain(visionCapableModels)
@@ -42,7 +42,7 @@ describe("buildMultimodalLookerFallbackChain", () => {
// then // then
expect(result[0]).toEqual({ expect(result[0]).toEqual({
providers: ["openai"], providers: ["openai"],
model: "gpt-5.4", model: "gpt-5.5",
variant: "medium", variant: "medium",
}) })
}) })