From 01a8160f7fb9d5b9dfcab3f396b6078be2e7f38c Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 26 May 2026 23:21:26 +0100 Subject: [PATCH] fix: honor bundled web provider compat discovery --- ...provider-public-artifacts.fallback.test.ts | 29 +++++++++++++++++++ src/plugins/web-provider-public-artifacts.ts | 5 ++++ 2 files changed, 34 insertions(+) diff --git a/src/plugins/web-provider-public-artifacts.fallback.test.ts b/src/plugins/web-provider-public-artifacts.fallback.test.ts index fbe124ced71..8b45b1eb558 100644 --- a/src/plugins/web-provider-public-artifacts.fallback.test.ts +++ b/src/plugins/web-provider-public-artifacts.fallback.test.ts @@ -122,6 +122,35 @@ describe("web provider public artifact manifest fallback", () => { }); }); + it("keeps deprecated bundledDiscovery compat discovery outside plugin allowlists", () => { + const resolveExplicitWebSearchProviders = + mocks.resolveBundledExplicitWebSearchProvidersFromPublicArtifacts as unknown as { + mockImplementation: ( + implementation: (params: { + onlyPluginIds: readonly string[]; + }) => { id: string; pluginId: string }[], + ) => void; + }; + resolveExplicitWebSearchProviders.mockImplementation((params) => + params.onlyPluginIds.map((pluginId) => ({ id: pluginId, pluginId })), + ); + + const providers = resolveBundledWebSearchProvidersFromPublicArtifacts({ + config: { + plugins: { + allow: ["some-other-plugin"], + bundledDiscovery: "compat", + }, + }, + onlyPluginIds: ["fallback-search"], + }); + + expect(providers).toEqual([{ id: "fallback-search", pluginId: "fallback-search" }]); + expect(mocks.resolveBundledExplicitWebSearchProvidersFromPublicArtifacts).toHaveBeenCalledWith({ + onlyPluginIds: ["fallback-search"], + }); + }); + it("keeps manifest bundled web-fetch public artifact candidates inside allowlist discovery", () => { mocks.loadPluginMetadataSnapshot.mockReturnValueOnce({ diagnostics: [], diff --git a/src/plugins/web-provider-public-artifacts.ts b/src/plugins/web-provider-public-artifacts.ts index 6d8e576657f..676694916de 100644 --- a/src/plugins/web-provider-public-artifacts.ts +++ b/src/plugins/web-provider-public-artifacts.ts @@ -31,6 +31,11 @@ function filterAllowlistedBundledPluginIds( config: PluginLoadOptions["config"] | undefined, pluginIds: readonly string[], ) { + // Deprecated shipped compat marker: old allowlist configs used this to keep + // bundled web provider discovery available while plugin IDs were tightened. + if (config?.plugins?.bundledDiscovery === "compat") { + return [...pluginIds]; + } const allow = config?.plugins?.allow; if (!Array.isArray(allow) || allow.length === 0) { return [...pluginIds];