openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
52 lines (51 loc) • 2.07 kB
JavaScript
import { p as readStringValue, s as normalizeOptionalLowercaseString } from "./string-coerce-mnp54Vah.js";
import "./string-coerce-runtime-CEGJWkQ_.js";
import { l as normalizeProviderId } from "./provider-model-shared-D-lyTLvb.js";
import "./model-compat-CxrXdbZx.js";
import "./model-definitions-whru6Ebx.js";
import "./provider-catalog-BSjMsZcY.js";
import "./onboard-QXb4qn-9.js";
import "./image-generation-provider-gH2I7UV9.js";
import "./runtime-model-compat-DYerPIAs.js";
import "./provider-models-B08yK9Eu.js";
//#region extensions/xai/api.ts
const XAI_NATIVE_ENDPOINT_HOSTS = 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 isXaiModelHint(modelId) {
return getModelProviderHint(modelId) === "x-ai";
}
function getModelProviderHint(modelId) {
const trimmed = normalizeOptionalLowercaseString(modelId);
if (!trimmed) return null;
const slashIndex = trimmed.indexOf("/");
if (slashIndex <= 0) return null;
return trimmed.slice(0, slashIndex) || null;
}
function shouldUseXaiResponsesTransport(params) {
if (params.api !== "openai-completions") return false;
if (isXaiNativeEndpoint(params.baseUrl)) return true;
return normalizeProviderId(params.provider) === "xai" && !params.baseUrl;
}
function resolveXaiTransport(params) {
if (!shouldUseXaiResponsesTransport(params)) return;
return {
api: "openai-responses",
baseUrl: readStringValue(params.baseUrl)
};
}
function resolveXaiBaseUrl(baseUrlOrConfig) {
let candidate = baseUrlOrConfig;
if (baseUrlOrConfig && typeof baseUrlOrConfig === "object" && !Array.isArray(baseUrlOrConfig) && "cfg" in baseUrlOrConfig) candidate = baseUrlOrConfig.cfg?.models?.providers?.xai?.baseUrl ?? baseUrlOrConfig;
return readStringValue(candidate) || "https://api.x.ai/v1";
}
//#endregion
export { resolveXaiBaseUrl as n, resolveXaiTransport as r, isXaiModelHint as t };