Files
openclaw/extensions/xai/model-compat.ts
Peter Steinberger db12cb7023 fix(xai): align current model catalog and tools (#103260)
* fix(xai): align current model catalog and tools

* chore(xai): defer release note to release closeout

* docs: refresh xai documentation map
2026-07-10 03:36:14 +01:00

31 lines
1.1 KiB
TypeScript

// Xai plugin module implements model compat behavior.
import {
applyModelCompatPatch,
type ModelCompatConfig,
} from "openclaw/plugin-sdk/provider-model-shared";
export { normalizeXaiModelId as normalizeNativeXaiModelId } from "./model-id.js";
export const XAI_TOOL_SCHEMA_PROFILE = "xai";
export const HTML_ENTITY_TOOL_CALL_ARGUMENTS_ENCODING = "html-entities";
// Native xAI accepts common length/item bounds; only contains-count bounds remain
// outside its documented schema contract. Proxy providers own stricter downstream policy.
const XAI_UNSUPPORTED_SCHEMA_KEYWORDS = new Set(["minContains", "maxContains"]);
function resolveXaiModelCompatPatch(): ModelCompatConfig {
return {
toolSchemaProfile: XAI_TOOL_SCHEMA_PROFILE,
unsupportedToolSchemaKeywords: Array.from(XAI_UNSUPPORTED_SCHEMA_KEYWORDS),
nativeWebSearchTool: true,
toolCallArgumentsEncoding: HTML_ENTITY_TOOL_CALL_ARGUMENTS_ENCODING,
};
}
export function applyXaiModelCompat<T extends { compat?: unknown }>(model: T): T {
return applyModelCompatPatch(
model as T & { compat?: ModelCompatConfig },
resolveXaiModelCompatPatch(),
) as T;
}