From 445a418187b0a3f3bd2f033c26dc650f7549da99 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 20 Jun 2026 22:23:51 -0400 Subject: [PATCH] refactor(zai): reuse canonical endpoint fallback --- extensions/zai/index.test.ts | 2 -- extensions/zai/index.ts | 7 +++---- extensions/zai/model-definitions.ts | 2 -- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/extensions/zai/index.test.ts b/extensions/zai/index.test.ts index aa8e1031c33..e9dcb1c8a48 100644 --- a/extensions/zai/index.test.ts +++ b/extensions/zai/index.test.ts @@ -189,8 +189,6 @@ describe("zai provider plugin", () => { ).toEqual(registered); }); - // FIX #94269: synthesized model must include baseUrl even when the template model - // is not in the registry and no provider config is set. it("falls back to manifest baseUrl when both providerConfig and template model are unavailable", async () => { const provider = await registerSingleProviderPlugin(plugin); diff --git a/extensions/zai/index.ts b/extensions/zai/index.ts index a0915a2b933..19ede5ff130 100644 --- a/extensions/zai/index.ts +++ b/extensions/zai/index.ts @@ -34,7 +34,7 @@ import { fetchZaiUsage } from "openclaw/plugin-sdk/provider-usage"; import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime"; import { detectZaiEndpoint, type ZaiEndpointId } from "./detect.js"; import { zaiMediaUnderstandingProvider } from "./media-understanding-provider.js"; -import { buildZaiModelDefinition, ZAI_MANIFEST_BASE_URL } from "./model-definitions.js"; +import { buildZaiModelDefinition, resolveZaiBaseUrl } from "./model-definitions.js"; import { applyZaiConfig, applyZaiProviderConfig, resolveZaiModelId } from "./onboard.js"; const PROVIDER_ID = "zai"; @@ -104,9 +104,8 @@ function resolveGlm5ForwardCompatModel( ...template, id: def.id, name: def.name, - // FIX #94269: fall back to manifest provider-level baseUrl when neither - // provider config nor template model in registry has one. - baseUrl: ctx.providerConfig?.baseUrl ?? template?.baseUrl ?? ZAI_MANIFEST_BASE_URL, + // Native models must never fall through to the OpenAI SDK's default host. + baseUrl: ctx.providerConfig?.baseUrl ?? template?.baseUrl ?? resolveZaiBaseUrl(), api: "openai-completions", provider: PROVIDER_ID, reasoning: def.reasoning, diff --git a/extensions/zai/model-definitions.ts b/extensions/zai/model-definitions.ts index 88295086b50..e2b6b45af41 100644 --- a/extensions/zai/model-definitions.ts +++ b/extensions/zai/model-definitions.ts @@ -11,8 +11,6 @@ export const ZAI_DEFAULT_MODEL_ID = "glm-5.1"; export const ZAI_CODING_DEFAULT_MODEL_ID = "glm-5.2"; const ZAI_MANIFEST_CATALOG = manifest.modelCatalog.providers.zai; -/** Provider-level default baseUrl from the bundled manifest. Used as runtime fallback. */ -export const ZAI_MANIFEST_BASE_URL = ZAI_MANIFEST_CATALOG.baseUrl; const ZAI_MANIFEST_PROVIDER = buildManifestModelProviderConfig({ providerId: "zai", catalog: ZAI_MANIFEST_CATALOG,