export { buildXaiProvider } from "./provider-catalog.js"; export { buildXaiCatalogModels, buildXaiModelDefinition, resolveXaiCatalogEntry, XAI_BASE_URL, XAI_DEFAULT_CONTEXT_WINDOW, XAI_DEFAULT_MODEL_ID, XAI_DEFAULT_MODEL_REF, XAI_DEFAULT_MAX_TOKENS, } from "./model-definitions.js"; export { isModernXaiModel, resolveXaiForwardCompatModel } from "./provider-models.js"; import { normalizeXaiModelId } from "./model-id.js"; export { normalizeXaiModelId }; export const XAI_TOOL_SCHEMA_PROFILE = "xai"; export const HTML_ENTITY_TOOL_CALL_ARGUMENTS_ENCODING = "html-entities"; export function applyXaiModelCompat(model: T): T { const patch = { toolSchemaProfile: XAI_TOOL_SCHEMA_PROFILE, nativeWebSearchTool: true, toolCallArgumentsEncoding: HTML_ENTITY_TOOL_CALL_ARGUMENTS_ENCODING, } satisfies Record; const compat = model.compat && typeof model.compat === "object" ? (model.compat as Record) : undefined; if (compat && Object.entries(patch).every(([key, value]) => compat[key] === value)) { return model; } return { ...model, compat: { ...compat, ...patch, } as T extends { compat?: infer TCompat } ? TCompat : never, } as T; }