openclaw/src/agents/model-compat.ts

25 lines
750 B
TypeScript
Raw Normal View History

import type { Api, Model } from "@mariozechner/pi-ai";
2026-01-11 04:28:16 +01:00
2026-01-20 15:02:13 +00:00
function isOpenAiCompletionsModel(model: Model<Api>): model is Model<"openai-completions"> {
return model.api === "openai-completions";
}
2026-01-11 04:28:16 +01:00
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)) {
return model;
}
2026-01-11 04:28:16 +01:00
const openaiModel = model;
const compat = openaiModel.compat ?? undefined;
if (compat?.supportsDeveloperRole === false) {
return model;
}
2026-01-11 04:28:16 +01:00
2026-01-20 16:19:46 +00:00
openaiModel.compat = compat
2026-01-20 15:16:00 +00:00
? { ...compat, supportsDeveloperRole: false }
: { supportsDeveloperRole: false };
2026-01-20 16:19:46 +00:00
return openaiModel;
2026-01-11 04:28:16 +01:00
}