fix: normalize image provider alias selection

This commit is contained in:
Tak Hoffman
2026-03-27 21:27:02 -05:00
parent 1bf8d69d95
commit bd7375f84a
2 changed files with 42 additions and 2 deletions

View File

@@ -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");

View File

@@ -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),
);
}