From aad99747cd45b3845e027c2297b85835b0bef75f Mon Sep 17 00:00:00 2001 From: Vincent Koc <25068+vincentkoc@users.noreply.github.com> Date: Wed, 8 Jul 2026 17:26:29 -0700 Subject: [PATCH] fix(onboard): omit empty provider request settings --- .../onboard-auth.config-shared.test.ts | 28 +++++++++++++++++++ src/plugin-sdk/provider-onboard.ts | 7 ++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/commands/onboard-auth.config-shared.test.ts b/src/commands/onboard-auth.config-shared.test.ts index 5eb6553f6ebd..83a9fd6ad277 100644 --- a/src/commands/onboard-auth.config-shared.test.ts +++ b/src/commands/onboard-auth.config-shared.test.ts @@ -101,6 +101,34 @@ describe("onboard auth provider config merges", () => { expect(next.models?.providers?.other?.timeoutSeconds).toBe(300); }); + it("omits empty provider request settings", () => { + const next = applyOnboardAuthAgentModelsAndProviders( + { + models: { + providers: { + custom: { + api: "openai-completions", + baseUrl: "https://old.example.com/v1", + models: [makeModel("model-a")], + }, + }, + }, + }, + { + agentModels, + providers: { + custom: { + api: "openai-completions", + baseUrl: "https://new.example.com/v1", + models: [makeModel("model-b")], + }, + }, + }, + ); + + expect(next.models?.providers?.custom).not.toHaveProperty("request"); + }); + it("preserves settings without resurrecting a non-canonical provider key", () => { const next = applyOnboardAuthAgentModelsAndProviders( { diff --git a/src/plugin-sdk/provider-onboard.ts b/src/plugin-sdk/provider-onboard.ts index 34f8cd0f53cb..0c8dd79f10cf 100644 --- a/src/plugin-sdk/provider-onboard.ts +++ b/src/plugin-sdk/provider-onboard.ts @@ -329,10 +329,15 @@ function mergeOnboardProviderConfigs( } } if (!("request" in providerConfig) || providerConfig.request) { - nextProvider.request = mergeOnboardProviderRequest( + const mergedRequest = mergeOnboardProviderRequest( existingProvider.request, providerConfig.request, ); + if (mergedRequest) { + nextProvider.request = mergedRequest; + } else { + delete nextProvider.request; + } } merged[providerId] = nextProvider; }