diff --git a/src/agents/utils.test.ts b/src/agents/utils.test.ts index 6e480e5a5..98c740c35 100644 --- a/src/agents/utils.test.ts +++ b/src/agents/utils.test.ts @@ -49,6 +49,36 @@ describe("createBuiltinAgents with model overrides", () => { expect(agents.sisyphus.thinking).toBeUndefined() }) + test("Atlas uses uiSelectedModel when provided", async () => { + // #given + const fetchSpy = spyOn(shared, "fetchAvailableModels").mockResolvedValue( + new Set(["openai/gpt-5.2", "anthropic/claude-sonnet-4-5"]) + ) + const uiSelectedModel = "openai/gpt-5.2" + + try { + // #when + const agents = await createBuiltinAgents( + [], + {}, + undefined, + TEST_DEFAULT_MODEL, + undefined, + undefined, + [], + undefined, + undefined, + uiSelectedModel + ) + + // #then + expect(agents.atlas).toBeDefined() + expect(agents.atlas.model).toBe("openai/gpt-5.2") + } finally { + fetchSpy.mockRestore() + } + }) + test("Sisyphus is created on first run when no availableModels or cache exist", async () => { // #given const systemDefaultModel = "anthropic/claude-opus-4-5" diff --git a/src/agents/utils.ts b/src/agents/utils.ts index c9d99ffbd..7c1a236d5 100644 --- a/src/agents/utils.ts +++ b/src/agents/utils.ts @@ -446,17 +446,17 @@ export async function createBuiltinAgents( result[name] = config } - if (!disabledAgents.includes("atlas")) { - const orchestratorOverride = agentOverrides["atlas"] - const atlasRequirement = AGENT_MODEL_REQUIREMENTS["atlas"] - - const atlasResolution = applyModelResolution({ - // NOTE: Atlas does NOT use uiSelectedModel - respects its own fallbackChain (k2p5 primary) - userModel: orchestratorOverride?.model, - requirement: atlasRequirement, - availableModels, - systemDefaultModel, - }) + if (!disabledAgents.includes("atlas")) { + const orchestratorOverride = agentOverrides["atlas"] + const atlasRequirement = AGENT_MODEL_REQUIREMENTS["atlas"] + + const atlasResolution = applyModelResolution({ + uiSelectedModel, + userModel: orchestratorOverride?.model, + requirement: atlasRequirement, + availableModels, + systemDefaultModel, + }) if (atlasResolution) { const { model: atlasModel, variant: atlasResolvedVariant } = atlasResolution