From 246fd9d3c0e7ce29bb83949309554b73f5a6ed69 Mon Sep 17 00:00:00 2001 From: Shakker Date: Mon, 27 Apr 2026 14:41:48 +0100 Subject: [PATCH] fix: preserve manifest fallback for derived provider indexes --- .../models/list.provider-catalog.test.ts | 24 +++++++++++++++++++ src/commands/models/list.provider-catalog.ts | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/commands/models/list.provider-catalog.test.ts b/src/commands/models/list.provider-catalog.test.ts index 67b4a3a074c..aa26b1604aa 100644 --- a/src/commands/models/list.provider-catalog.test.ts +++ b/src/commands/models/list.provider-catalog.test.ts @@ -210,6 +210,30 @@ describe("loadProviderCatalogModelsForList", () => { expect(providerDiscoveryMocks.resolveOwningPluginIdsForProvider).not.toHaveBeenCalled(); }); + it("falls back to manifest ownership when the plugin index is derived", async () => { + providerDiscoveryMocks.loadPluginRegistrySnapshotWithMetadata.mockReturnValueOnce({ + source: "derived", + snapshot: { + plugins: [], + }, + diagnostics: [], + }); + + await expect( + resolveProviderCatalogPluginIdsForFilter({ + cfg: baseParams.cfg, + env: baseParams.env, + providerFilter: "moonshot", + }), + ).resolves.toEqual(["moonshot"]); + + expect(providerDiscoveryMocks.resolveOwningPluginIdsForProvider).toHaveBeenCalledWith({ + provider: "moonshot", + config: baseParams.cfg, + env: baseParams.env, + }); + }); + it("does not fall back to legacy manifest ownership for disabled persisted plugin owners", async () => { providerDiscoveryMocks.resolveProviderOwners .mockReturnValueOnce([]) diff --git a/src/commands/models/list.provider-catalog.ts b/src/commands/models/list.provider-catalog.ts index dc8a5ea6c68..27dd7d87de0 100644 --- a/src/commands/models/list.provider-catalog.ts +++ b/src/commands/models/list.provider-catalog.ts @@ -76,7 +76,7 @@ function resolveInstalledIndexPluginIdsForProviderFilter(params: { cache: true, }); if (snapshot.source !== "persisted" && snapshot.source !== "provided") { - return []; + return undefined; } const index = snapshot.snapshot; const pluginIds = [