diff --git a/src/agents/openclaw-tools.media-factory-plan.test.ts b/src/agents/openclaw-tools.media-factory-plan.test.ts index a5f2139ed8d..7a5a71af8bc 100644 --- a/src/agents/openclaw-tools.media-factory-plan.test.ts +++ b/src/agents/openclaw-tools.media-factory-plan.test.ts @@ -47,6 +47,7 @@ function createPlugin(params: { imageGenerationProviderMetadata?: PluginManifestRecord["imageGenerationProviderMetadata"]; videoGenerationProviderMetadata?: PluginManifestRecord["videoGenerationProviderMetadata"]; musicGenerationProviderMetadata?: PluginManifestRecord["musicGenerationProviderMetadata"]; + providerAuthEnvVars?: PluginManifestRecord["providerAuthEnvVars"]; setupProviders?: Array<{ id: string; envVars?: string[] }>; }): PluginManifestRecord { return { @@ -64,6 +65,7 @@ function createPlugin(params: { imageGenerationProviderMetadata: params.imageGenerationProviderMetadata, videoGenerationProviderMetadata: params.videoGenerationProviderMetadata, musicGenerationProviderMetadata: params.musicGenerationProviderMetadata, + providerAuthEnvVars: params.providerAuthEnvVars, setup: params.setupProviders ? { providers: params.setupProviders } : undefined, }; } @@ -381,6 +383,28 @@ describe("optional media tool factory planning", () => { }); }); + it("keeps manifest provider auth env aliases on the music factory path", () => { + const config: OpenClawConfig = {}; + installSnapshot(config, [ + createPlugin({ + id: "minimax", + contracts: { musicGenerationProviders: ["minimax", "minimax-portal"] }, + providerAuthEnvVars: { + minimax: ["MINIMAX_CODE_PLAN_KEY", "MINIMAX_CODING_API_KEY", "MINIMAX_API_KEY"], + "minimax-portal": ["MINIMAX_OAUTH_TOKEN", "MINIMAX_API_KEY"], + }, + }), + ]); + vi.stubEnv("MINIMAX_API_KEY", "minimax-key"); + + expect( + resolveOptionalMediaToolFactoryPlan({ + config, + authStore: createAuthStore(), + }).musicGenerate, + ).toBe(true); + }); + it("defers PDF model resolution from the tool-prep hot path", async () => { const config: OpenClawConfig = {}; installSnapshot(config, []);