fix(agents): map Moonshot developer role compatibility

Co-authored-by: Sheng-Fu Chuang <sedernet@gmail.com>

# Conflicts:
#	CHANGELOG.md
This commit is contained in:
Peter Steinberger
2026-02-23 05:19:27 +01:00
parent 8897c9d53a
commit 3640484e28
3 changed files with 32 additions and 1 deletions

View File

@@ -51,6 +51,32 @@ describe("normalizeModelCompat", () => {
).toBe(false);
});
it("forces supportsDeveloperRole off for moonshot models", () => {
const model = {
...baseModel(),
provider: "moonshot",
baseUrl: "https://api.moonshot.ai/v1",
};
delete (model as { compat?: unknown }).compat;
const normalized = normalizeModelCompat(model);
expect(
(normalized.compat as { supportsDeveloperRole?: boolean } | undefined)?.supportsDeveloperRole,
).toBe(false);
});
it("forces supportsDeveloperRole off for custom moonshot-compatible endpoints", () => {
const model = {
...baseModel(),
provider: "custom-kimi",
baseUrl: "https://api.moonshot.cn/v1",
};
delete (model as { compat?: unknown }).compat;
const normalized = normalizeModelCompat(model);
expect(
(normalized.compat as { supportsDeveloperRole?: boolean } | undefined)?.supportsDeveloperRole,
).toBe(false);
});
it("leaves non-zai models untouched", () => {
const model = {
...baseModel(),

View File

@@ -7,7 +7,11 @@ function isOpenAiCompletionsModel(model: Model<Api>): model is Model<"openai-com
export function normalizeModelCompat(model: Model<Api>): Model<Api> {
const baseUrl = model.baseUrl ?? "";
const isZai = model.provider === "zai" || baseUrl.includes("api.z.ai");
if (!isZai || !isOpenAiCompletionsModel(model)) {
const isMoonshot =
model.provider === "moonshot" ||
baseUrl.includes("moonshot.ai") ||
baseUrl.includes("moonshot.cn");
if ((!isZai && !isMoonshot) || !isOpenAiCompletionsModel(model)) {
return model;
}