Files
openclaw/extensions/zai/onboard.ts
Peter Steinberger 735f59af73 feat(providers): add GLM-5.2 support (#92796)
* feat(providers): add GLM-5.2 support

* ci(live): add GLM-5.2 provider shard
2026-06-13 14:33:28 -07:00

75 lines
2.5 KiB
TypeScript

// Zai setup module handles plugin onboarding behavior.
import {
applyProviderConfigWithModelCatalogPreset,
type OpenClawConfig,
} from "openclaw/plugin-sdk/provider-onboard";
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
import {
buildZaiCatalogModels,
resolveZaiBaseUrl,
ZAI_CODING_CN_BASE_URL,
ZAI_CODING_DEFAULT_MODEL_ID,
ZAI_CODING_GLOBAL_BASE_URL,
ZAI_DEFAULT_MODEL_ID,
} from "./model-definitions.js";
export const ZAI_DEFAULT_MODEL_REF = `zai/${ZAI_DEFAULT_MODEL_ID}`;
function resolveZaiPresetBaseUrl(cfg: OpenClawConfig, endpoint?: string): string {
const existingProvider = cfg.models?.providers?.zai;
const existingBaseUrl = normalizeOptionalString(existingProvider?.baseUrl) ?? "";
return endpoint ? resolveZaiBaseUrl(endpoint) : existingBaseUrl || resolveZaiBaseUrl();
}
export function resolveZaiModelId(params?: {
endpoint?: string;
modelId?: string;
baseUrl?: string;
}): string {
const explicitModelId = normalizeOptionalString(params?.modelId);
if (explicitModelId) {
return explicitModelId;
}
const baseUrl = normalizeOptionalString(params?.baseUrl)?.replace(/\/+$/, "");
const usesCodingEndpoint =
params?.endpoint?.startsWith("coding-") ||
baseUrl === ZAI_CODING_GLOBAL_BASE_URL ||
baseUrl === ZAI_CODING_CN_BASE_URL;
return usesCodingEndpoint ? ZAI_CODING_DEFAULT_MODEL_ID : ZAI_DEFAULT_MODEL_ID;
}
function applyZaiPreset(
cfg: OpenClawConfig,
params?: { endpoint?: string; modelId?: string },
primaryModelRef?: string,
): OpenClawConfig {
const baseUrl = resolveZaiPresetBaseUrl(cfg, params?.endpoint);
const modelId = resolveZaiModelId({ ...params, baseUrl });
const modelRef = `zai/${modelId}`;
return applyProviderConfigWithModelCatalogPreset(cfg, {
providerId: "zai",
api: "openai-completions",
baseUrl,
catalogModels: buildZaiCatalogModels(),
aliases: [{ modelRef, alias: "GLM" }],
primaryModelRef,
});
}
export function applyZaiProviderConfig(
cfg: OpenClawConfig,
params?: { endpoint?: string; modelId?: string },
): OpenClawConfig {
return applyZaiPreset(cfg, params);
}
export function applyZaiConfig(
cfg: OpenClawConfig,
params?: { endpoint?: string; modelId?: string },
): OpenClawConfig {
const baseUrl = resolveZaiPresetBaseUrl(cfg, params?.endpoint);
const modelId = resolveZaiModelId({ ...params, baseUrl });
const modelRef = modelId === ZAI_DEFAULT_MODEL_ID ? ZAI_DEFAULT_MODEL_REF : `zai/${modelId}`;
return applyZaiPreset(cfg, params, modelRef);
}