UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

55 lines (54 loc) 2.44 kB
import { l as normalizeOptionalString } from "./string-coerce-CIXf7egm.js"; import "./http-body-D3IMwTJJ.js"; import { i as readResponseWithLimit } from "./http-response-body-CwT_cCNz.js"; import { d as readProviderBinaryResponse } from "./provider-http-errors-U-nhuk_f.js"; import { a as maxBytesForKind } from "./constants-DUxuqQz8.js"; import { r as extensionForMime } from "./mime-CVpcq9ju.js"; import "./configured-max-bytes-CTSUbFDK.js"; import "./runtime-shared-DRaKQShq.js"; import { a as fetchProviderDownloadResponse, i as createProviderOperationTimeoutResolver, r as createProviderOperationDeadline } from "./shared-DCDpYrmy.js"; //#region src/media-generation/provider-assets.ts /** Download a generated video URL with size limits and inferred video metadata. */ async function downloadGeneratedVideoAsset(params) { const deadline = createProviderOperationDeadline({ timeoutMs: params.timeoutMs, label: params.label }); const timeoutMs = createProviderOperationTimeoutResolver({ deadline, defaultTimeoutMs: deadline.timeoutMs ?? params.defaultTimeoutMs }); const handle = params.fetchResponse ? await params.fetchResponse({ deadline, timeoutMs }) : { response: await fetchProviderDownloadResponse({ url: params.url, init: { method: "GET" }, deadline, fetchFn: params.fetchFn, provider: params.provider, requestFailedMessage: params.requestFailedMessage }) }; try { const mimeType = normalizeOptionalString(handle.response.headers.get("content-type")) ?? "video/mp4"; const maxBytes = params.maxBytes ?? maxBytesForKind("video"); const readOptions = { maxBytes, timeoutMs, onTimeout: ({ timeoutMs: bodyTimeoutMs }) => /* @__PURE__ */ new Error(`${params.label} timed out after ${deadline.timeoutMs ?? bodyTimeoutMs}ms`), onOverflow: ({ maxBytes: maxBytesLocal }) => /* @__PURE__ */ new Error(`${params.label} exceeds ${maxBytesLocal} bytes`) }; const buffer = params.validateBinaryResponse ? await readProviderBinaryResponse(handle.response, params.label, "video", readOptions) : await readResponseWithLimit(handle.response, maxBytes, readOptions); const ext = extensionForMime(mimeType)?.replace(/^\./u, "") ?? "mp4"; return { buffer, mimeType, fileName: `video-${(params.index ?? 0) + 1}.${ext}`, ...params.metadata ? { metadata: params.metadata } : {} }; } finally { await handle.release?.(); } } //#endregion export { downloadGeneratedVideoAsset as t };