openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
34 lines (33 loc) • 1.63 kB
JavaScript
import { l as normalizeOptionalString } from "./string-coerce-6kR-86XC.mjs";
import "./string-coerce-runtime-B1b8UNzb.mjs";
import { t as XAI_BASE_URL } from "./model-definitions-CWn53fjP.mjs";
import { t as isXaiProviderId } from "./provider-id-Ij0P4F6z.mjs";
//#region extensions/xai/provider-routing.ts
const XAI_NATIVE_ENDPOINT_HOSTS = /* @__PURE__ */ new Set(["api.x.ai"]);
function resolveHostname(value) {
try {
return new URL(value).hostname.toLowerCase();
} catch {
return;
}
}
function isXaiNativeEndpoint(baseUrl) {
return typeof baseUrl === "string" && XAI_NATIVE_ENDPOINT_HOSTS.has(resolveHostname(baseUrl) ?? "");
}
function supportsXaiPromptCacheKey(params) {
const baseUrl = normalizeOptionalString(params.baseUrl) ?? XAI_BASE_URL;
return (params.api === "openai-responses" || params.api === "openai-completions") && (isXaiNativeEndpoint(baseUrl) || params.api === "openai-responses" && resolveHostname(baseUrl) === "cli-chat-proxy.grok.com");
}
function shouldUseXaiResponsesTransport(params) {
const hasDefaultXaiRoute = isXaiProviderId(params.provider) && !normalizeOptionalString(params.baseUrl);
return params.api === "openai-responses" ? hasDefaultXaiRoute : params.api === "openai-completions" && (isXaiNativeEndpoint(params.baseUrl) || hasDefaultXaiRoute);
}
function resolveXaiTransport(params) {
if (!shouldUseXaiResponsesTransport(params)) return;
return {
api: "openai-responses",
baseUrl: normalizeOptionalString(params.baseUrl) ?? (isXaiProviderId(params.provider) ? XAI_BASE_URL : void 0)
};
}
//#endregion
export { supportsXaiPromptCacheKey as n, resolveXaiTransport as t };