From 48c13b5ac9a7fbb6654eecb34f0a50bf2f220f18 Mon Sep 17 00:00:00 2001 From: Salman Mohammed Date: Wed, 23 Sep 2026 22:07:51 -0400 Subject: [PATCH] Preserve model defaults after discovery Signed-off-by: Salman Mohammed --- .../src/features/agents/ui/AgentConfigFields.tsx | 4 +++- desktop/tests/e2e/onboarding-agent-defaults.spec.ts | 13 ++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/desktop/src/features/agents/ui/AgentConfigFields.tsx b/desktop/src/features/agents/ui/AgentConfigFields.tsx index ab504c7e11..fd853932fa 100644 --- a/desktop/src/features/agents/ui/AgentConfigFields.tsx +++ b/desktop/src/features/agents/ui/AgentConfigFields.tsx @@ -425,7 +425,8 @@ export function AgentConfigFields({ autoSelectedModelScopeRef.current = null; return; } - if ((config.model ?? "").trim().length > 0) return; + // Discovery fills an unset model; it must not replace an inherited default. + if ((config.model ?? "").trim() || fallbackModel?.trim()) return; if (modelDiscoveryLoading || discoveredModelOptions === null) return; const selectionScope = `${selectedRuntimeId}:${trimmedProvider}`; if (autoSelectedModelScopeRef.current === selectionScope) return; @@ -441,6 +442,7 @@ export function AgentConfigFields({ }, [ config, discoveredModelOptions, + fallbackModel, isCustomProvider, modelDiscoveryLoading, onConfigChange, diff --git a/desktop/tests/e2e/onboarding-agent-defaults.spec.ts b/desktop/tests/e2e/onboarding-agent-defaults.spec.ts index 90f82be0d7..1e4a88dc6d 100644 --- a/desktop/tests/e2e/onboarding-agent-defaults.spec.ts +++ b/desktop/tests/e2e/onboarding-agent-defaults.spec.ts @@ -1234,7 +1234,7 @@ test("baked build config keeps Finish enabled without manual provider setup", as await expect(page.getByTestId("onboarding-finish")).toBeEnabled(); }); -test("bundled Goose displays its own provider and model defaults", async ({ +test("bundled Goose preserves its defaults after model discovery", async ({ page, }) => { await installMockBridge( @@ -1263,6 +1263,10 @@ test("bundled Goose displays its own provider and model defaults", async ({ bakedBuildEnv: [ { key: "BUZZ_AGENT_PROVIDER", masked: false, value: "anthropic" }, ], + discoverAgentModels: { + models: [{ id: "discovered-model", name: "Discovered Model" }], + supportsSwitching: true, + }, globalAgentConfig: { env_vars: {}, provider: null, @@ -1279,6 +1283,13 @@ test("bundled Goose displays its own provider and model defaults", async ({ await expect(page.getByTestId("global-agent-provider")).toContainText( "Databricks", ); + // Wait for the competing catalog entry to render so this assertion cannot + // pass before the discovery effect has had a chance to replace the default. + await page.getByTestId("global-agent-model").click(); + await expect( + page.getByTestId("global-agent-model-option-discovered-model"), + ).toBeVisible(); + await page.keyboard.press("Escape"); await expect(page.getByTestId("global-agent-model")).toContainText( "bundled-pilot-model", );