From 13f396b39551704bcd68c7bc6ad24523d49e38a7 Mon Sep 17 00:00:00 2001 From: Tak Hoffman <781889+Takhoffman@users.noreply.github.com> Date: Wed, 18 Mar 2026 08:27:48 -0500 Subject: [PATCH] Plugins: sync contract registry image providers --- src/plugins/contracts/registry.contract.test.ts | 11 ++++++++++- src/plugins/contracts/registry.ts | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/plugins/contracts/registry.contract.test.ts b/src/plugins/contracts/registry.contract.test.ts index 5c8d06785ce..dbef2227825 100644 --- a/src/plugins/contracts/registry.contract.test.ts +++ b/src/plugins/contracts/registry.contract.test.ts @@ -171,6 +171,7 @@ describe("plugin contract registry", () => { }); it("keeps bundled image-generation ownership explicit", () => { + expect(findImageGenerationProviderIdsForPlugin("fal")).toEqual(["fal"]); expect(findImageGenerationProviderIdsForPlugin("google")).toEqual(["google"]); expect(findImageGenerationProviderIdsForPlugin("openai")).toEqual(["openai"]); }); @@ -187,6 +188,13 @@ describe("plugin contract registry", () => { }); it("tracks speech registrations on bundled provider plugins", () => { + expect(findRegistrationForPlugin("fal")).toMatchObject({ + providerIds: ["fal"], + speechProviderIds: [], + mediaUnderstandingProviderIds: [], + imageGenerationProviderIds: ["fal"], + webSearchProviderIds: [], + }); expect(findRegistrationForPlugin("google")).toMatchObject({ providerIds: ["google", "google-gemini-cli"], speechProviderIds: [], @@ -214,12 +222,13 @@ describe("plugin contract registry", () => { }); }); - it("tracks every provider, speech, media, or web search plugin in the registration registry", () => { + it("tracks every provider, speech, media, image, or web search plugin in the registration registry", () => { const expectedPluginIds = [ ...new Set([ ...providerContractRegistry.map((entry) => entry.pluginId), ...speechProviderContractRegistry.map((entry) => entry.pluginId), ...mediaUnderstandingProviderContractRegistry.map((entry) => entry.pluginId), + ...imageGenerationProviderContractRegistry.map((entry) => entry.pluginId), ...webSearchProviderContractRegistry.map((entry) => entry.pluginId), ]), ].toSorted((left, right) => left.localeCompare(right)); diff --git a/src/plugins/contracts/registry.ts b/src/plugins/contracts/registry.ts index acee90323b9..1dedc6c95c2 100644 --- a/src/plugins/contracts/registry.ts +++ b/src/plugins/contracts/registry.ts @@ -59,7 +59,7 @@ const BUNDLED_MEDIA_UNDERSTANDING_PLUGIN_IDS = [ "openai", "zai", ] as const; -const BUNDLED_IMAGE_GENERATION_PLUGIN_IDS = ["google", "openai"] as const; +const BUNDLED_IMAGE_GENERATION_PLUGIN_IDS = ["fal", "google", "openai"] as const; export const providerContractRegistry: ProviderContractEntry[] = [];