UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

61 lines (60 loc) 2.4 kB
import { l as normalizeOptionalString } from "../../string-coerce-CIXf7egm.js"; import { n as assertOkOrThrowHttpError, p as readProviderJsonObjectResponse } from "../../provider-http-errors-U-nhuk_f.js"; import { p as resolveProviderHttpRequestConfig, t as buildAudioTranscriptionFormData, u as postMultipartRequest } from "../../shared-DCDpYrmy.js"; import "../../string-coerce-runtime-GQa0ehRA.js"; import "../../provider-http-k9RMI7iG.js"; import { t as XAI_BASE_URL } from "../../model-definitions-T5B2ehi7.js"; import { l as createXaiMediaUnderstandingProviderMetadata } from "../../capability-provider-metadata-factory-BjaSolS_.js"; import "../../capability-provider-metadata-3SLkHpj3.js"; //#region extensions/xai/stt.ts function resolveXaiSttBaseUrl(value) { return normalizeOptionalString(value ?? process.env.XAI_BASE_URL) ?? "https://api.x.ai/v1"; } async function transcribeXaiAudio(params) { const fetchFn = params.fetchFn ?? fetch; const { baseUrl, allowPrivateNetwork, headers, dispatcherPolicy } = resolveProviderHttpRequestConfig({ baseUrl: resolveXaiSttBaseUrl(params.baseUrl), defaultBaseUrl: XAI_BASE_URL, headers: params.headers, request: params.request, defaultHeaders: { Authorization: `Bearer ${params.apiKey}` }, provider: "xai", api: "xai-stt", capability: "audio", transport: "media-understanding" }); const language = normalizeOptionalString(params.language); const form = buildAudioTranscriptionFormData({ buffer: params.buffer, fileName: params.fileName, mime: params.mime, fields: { language } }); const { response, release } = await postMultipartRequest({ url: `${baseUrl}/stt`, headers, body: form, timeoutMs: params.timeoutMs, ...params.signal ? { signal: params.signal } : {}, fetchFn, allowPrivateNetwork, dispatcherPolicy, auditContext: "xai stt" }); try { await assertOkOrThrowHttpError(response, "xAI audio transcription failed"); const payload = await readProviderJsonObjectResponse(response, "xai.stt"); if (typeof payload.text !== "string") throw new Error("xAI transcription response missing text"); return { text: payload.text.trim() }; } finally { await release(); } } function buildXaiMediaUnderstandingProvider() { return { ...createXaiMediaUnderstandingProviderMetadata(), transcribeAudio: transcribeXaiAudio }; } //#endregion export { buildXaiMediaUnderstandingProvider };