From 8640b891589b33a5c5201c3abeb6fa9faefaebf8 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 10 Apr 2026 20:00:48 +0100 Subject: [PATCH] test: trim provider contract slow paths --- .../google/video-generation-provider.test.ts | 4 - src/agents/codex-native-web-search.ts | 13 +- .../plugins/plugin-registration-contract.ts | 125 +----------------- 3 files changed, 10 insertions(+), 132 deletions(-) diff --git a/extensions/google/video-generation-provider.test.ts b/extensions/google/video-generation-provider.test.ts index 3a99ca8502a..3c7282636ee 100644 --- a/extensions/google/video-generation-provider.test.ts +++ b/extensions/google/video-generation-provider.test.ts @@ -41,10 +41,6 @@ describe("google video generation provider", () => { mode: "api-key", }); generateVideosMock.mockResolvedValue({ - done: false, - name: "operations/123", - }); - getVideosOperationMock.mockResolvedValue({ done: true, name: "operations/123", response: { diff --git a/src/agents/codex-native-web-search.ts b/src/agents/codex-native-web-search.ts index f7dd1c7765d..7926f4d4c61 100644 --- a/src/agents/codex-native-web-search.ts +++ b/src/agents/codex-native-web-search.ts @@ -113,6 +113,14 @@ export function hasAvailableCodexAuth(params: { config?: OpenClawConfig; agentDir?: string; }): boolean { + if ( + Object.values(params.config?.auth?.profiles ?? {}).some( + (profile) => isRecord(profile) && profile.provider === "openai-codex", + ) + ) { + return true; + } + if (params.agentDir) { try { if ( @@ -124,10 +132,7 @@ export function hasAvailableCodexAuth(params: { // Fall back to config-based detection below. } } - - return Object.values(params.config?.auth?.profiles ?? {}).some( - (profile) => isRecord(profile) && profile.provider === "openai-codex", - ); + return false; } export function resolveCodexNativeSearchActivation(params: { diff --git a/test/helpers/plugins/plugin-registration-contract.ts b/test/helpers/plugins/plugin-registration-contract.ts index d54e7728f60..c320aeeec25 100644 --- a/test/helpers/plugins/plugin-registration-contract.ts +++ b/test/helpers/plugins/plugin-registration-contract.ts @@ -1,12 +1,5 @@ import { describe, expect, it } from "vitest"; -import { - imageGenerationProviderContractRegistry, - mediaUnderstandingProviderContractRegistry, - musicGenerationProviderContractRegistry, - pluginRegistrationContractRegistry, - speechProviderContractRegistry, - videoGenerationProviderContractRegistry, -} from "../../../src/plugins/contracts/registry.js"; +import { pluginRegistrationContractRegistry } from "../../../src/plugins/contracts/registry.js"; import { loadPluginManifestRegistry } from "../../../src/plugins/manifest-registry.js"; type PluginRegistrationContractParams = { @@ -47,79 +40,6 @@ function findRegistration(pluginId: string) { return entry; } -function findSpeechProviderIds(pluginId: string) { - return speechProviderContractRegistry - .filter((entry) => entry.pluginId === pluginId) - .map((entry) => entry.provider.id) - .toSorted((left, right) => left.localeCompare(right)); -} - -function findSpeechProvider(pluginId: string) { - const entry = speechProviderContractRegistry.find((candidate) => candidate.pluginId === pluginId); - if (!entry) { - throw new Error(`speech provider contract missing for ${pluginId}`); - } - return entry.provider; -} - -function findMediaUnderstandingProviderIds(pluginId: string) { - return mediaUnderstandingProviderContractRegistry - .filter((entry) => entry.pluginId === pluginId) - .map((entry) => entry.provider.id) - .toSorted((left, right) => left.localeCompare(right)); -} - -function findMediaUnderstandingProvider(pluginId: string) { - const entry = mediaUnderstandingProviderContractRegistry.find( - (candidate) => candidate.pluginId === pluginId, - ); - if (!entry) { - throw new Error(`media-understanding provider contract missing for ${pluginId}`); - } - return entry.provider; -} - -function findImageGenerationProviderIds(pluginId: string) { - return imageGenerationProviderContractRegistry - .filter((entry) => entry.pluginId === pluginId) - .map((entry) => entry.provider.id) - .toSorted((left, right) => left.localeCompare(right)); -} - -function findImageGenerationProvider(pluginId: string) { - const entry = imageGenerationProviderContractRegistry.find( - (candidate) => candidate.pluginId === pluginId, - ); - if (!entry) { - throw new Error(`image-generation provider contract missing for ${pluginId}`); - } - return entry.provider; -} - -function findVideoGenerationProviderIds(pluginId: string) { - return videoGenerationProviderContractRegistry - .filter((entry) => entry.pluginId === pluginId) - .map((entry) => entry.provider.id) - .toSorted((left, right) => left.localeCompare(right)); -} - -function findVideoGenerationProvider(pluginId: string) { - const entry = videoGenerationProviderContractRegistry.find( - (candidate) => candidate.pluginId === pluginId, - ); - if (!entry) { - throw new Error(`video-generation provider contract missing for ${pluginId}`); - } - return entry.provider; -} - -function findMusicGenerationProviderIds(pluginId: string) { - return musicGenerationProviderContractRegistry - .filter((entry) => entry.pluginId === pluginId) - .map((entry) => entry.provider.id) - .toSorted((left, right) => left.localeCompare(right)); -} - export function describePluginRegistrationContract(params: PluginRegistrationContractParams) { describe(`${params.pluginId} plugin registration contract`, () => { if (params.cliBackendIds) { @@ -155,7 +75,6 @@ export function describePluginRegistrationContract(params: PluginRegistrationCon expect(findRegistration(params.pluginId).speechProviderIds).toEqual( params.speechProviderIds, ); - expect(findSpeechProviderIds(params.pluginId)).toEqual(params.speechProviderIds); }); } @@ -180,9 +99,6 @@ export function describePluginRegistrationContract(params: PluginRegistrationCon expect(findRegistration(params.pluginId).mediaUnderstandingProviderIds).toEqual( params.mediaUnderstandingProviderIds, ); - expect(findMediaUnderstandingProviderIds(params.pluginId)).toEqual( - params.mediaUnderstandingProviderIds, - ); }); } @@ -191,9 +107,6 @@ export function describePluginRegistrationContract(params: PluginRegistrationCon expect(findRegistration(params.pluginId).imageGenerationProviderIds).toEqual( params.imageGenerationProviderIds, ); - expect(findImageGenerationProviderIds(params.pluginId)).toEqual( - params.imageGenerationProviderIds, - ); }); } @@ -202,9 +115,6 @@ export function describePluginRegistrationContract(params: PluginRegistrationCon expect(findRegistration(params.pluginId).videoGenerationProviderIds).toEqual( params.videoGenerationProviderIds, ); - expect(findVideoGenerationProviderIds(params.pluginId)).toEqual( - params.videoGenerationProviderIds, - ); }); } @@ -213,9 +123,6 @@ export function describePluginRegistrationContract(params: PluginRegistrationCon expect(findRegistration(params.pluginId).musicGenerationProviderIds).toEqual( params.musicGenerationProviderIds, ); - expect(findMusicGenerationProviderIds(params.pluginId)).toEqual( - params.musicGenerationProviderIds, - ); }); } @@ -225,36 +132,6 @@ export function describePluginRegistrationContract(params: PluginRegistrationCon }); } - if (params.requireSpeechVoices) { - it("keeps bundled speech voice-list support explicit", () => { - expect(findSpeechProvider(params.pluginId).listVoices).toEqual(expect.any(Function)); - }); - } - - if (params.requireDescribeImages) { - it("keeps bundled multi-image support explicit", () => { - expect(findMediaUnderstandingProvider(params.pluginId).describeImages).toEqual( - expect.any(Function), - ); - }); - } - - if (params.requireGenerateImage) { - it("keeps bundled image-generation support explicit", () => { - expect(findImageGenerationProvider(params.pluginId).generateImage).toEqual( - expect.any(Function), - ); - }); - } - - if (params.requireGenerateVideo) { - it("keeps bundled video-generation support explicit", () => { - expect(findVideoGenerationProvider(params.pluginId).generateVideo).toEqual( - expect.any(Function), - ); - }); - } - const manifestAuthChoice = params.manifestAuthChoice; if (manifestAuthChoice) { it("keeps onboarding auth grouping explicit", () => {