diff --git a/src/agents/tools/image-generate-tool.test.ts b/src/agents/tools/image-generate-tool.test.ts index 359febc6118..e811ecd4c4a 100644 --- a/src/agents/tools/image-generate-tool.test.ts +++ b/src/agents/tools/image-generate-tool.test.ts @@ -180,6 +180,44 @@ describe("createImageGenerateTool", () => { expect(createImageGenerateTool({ config: {} })).toBeNull(); }); + it("matches image-generation providers across canonical provider aliases", () => { + vi.spyOn(imageGenerationRuntime, "listRuntimeImageGenerationProviders").mockReturnValue([ + { + id: "z.ai", + aliases: ["z-ai"], + defaultModel: "glm-4.5-image", + models: ["glm-4.5-image"], + capabilities: { + generate: { + maxCount: 4, + }, + edit: { + enabled: false, + maxInputImages: 0, + }, + geometry: {}, + }, + generateImage: vi.fn(async () => { + throw new Error("not used"); + }), + }, + ]); + + expect( + createImageGenerateTool({ + config: { + agents: { + defaults: { + imageGenerationModel: { + primary: "z-ai/glm-4.5-image", + }, + }, + }, + }, + }), + ).not.toBeNull(); + }); + it("infers an OpenAI image-generation model from env-backed auth", () => { stubImageGenerationProviders(); vi.stubEnv("OPENAI_API_KEY", "openai-test"); diff --git a/src/agents/tools/image-generate-tool.ts b/src/agents/tools/image-generate-tool.ts index 9a0619ffca9..5056c1bb1d4 100644 --- a/src/agents/tools/image-generate-tool.ts +++ b/src/agents/tools/image-generate-tool.ts @@ -16,6 +16,7 @@ import { saveMediaBuffer } from "../../media/store.js"; import { loadWebMedia } from "../../media/web-media.js"; import { getProviderEnvVars } from "../../secrets/provider-env-vars.js"; import { resolveUserPath } from "../../utils.js"; +import { normalizeProviderId } from "../provider-id.js"; import { ToolInputError, readNumberParam, readStringParam } from "./common.js"; import { decodeDataUrl } from "./image-tool.helpers.js"; import { @@ -247,10 +248,11 @@ function resolveSelectedImageGenerationProvider(params: { if (!selectedRef) { return undefined; } + const selectedProvider = normalizeProviderId(selectedRef.provider); return listRuntimeImageGenerationProviders({ config: params.config }).find( (provider) => - provider.id === selectedRef.provider || - (provider.aliases ?? []).includes(selectedRef.provider), + normalizeProviderId(provider.id) === selectedProvider || + (provider.aliases ?? []).some((alias) => normalizeProviderId(alias) === selectedProvider), ); }