UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

99 lines (98 loc) • 3.92 kB
import { a as asOptionalRecord } from "./record-coerce-TIsquoVR.mjs"; import { r as createLazyRuntimeModule } from "./lazy-runtime-CJrzFzqU.mjs"; import "./http-body-CZtbU96N.mjs"; import "./mime-CGDYrRzL.mjs"; import "./media-services-BJfFhBn8.mjs"; import "./local-roots-CQtu4chZ.mjs"; import "./store-B9-NomZN.mjs"; import "./fetch-Bb8xDoaq.mjs"; import { a as chunkText } from "./chunk-BWbat9wI.mjs"; import "./defaults-CjQjJjHh.mjs"; import "./image-runtime-7C6AWIEf.mjs"; import "./audio-DTKvbww3.mjs"; import "./outbound-attachment-B9kI1l4M.mjs"; import "./agent-media-payload-B8N_-Tni.mjs"; import { t as sanitizeForPlainText } from "./sanitize-text-DNqwrwvR.mjs"; import "./qr-image-Gsr0r1z5.mjs"; import "./qr-terminal-BJZxPpi0.mjs"; import "./temp-files-DRN_5KcK.mjs"; import { t as resolveChannelMediaMaxBytes } from "./media-limits-Dz58NPxA.mjs"; //#region src/channels/plugins/outbound/direct-text-media.ts function readNumberField(record, key) { const value = record?.[key]; return typeof value === "number" ? value : void 0; } function createScopedChannelMediaMaxBytesResolver(channel) { return (params) => resolveChannelMediaMaxBytes({ cfg: params.cfg, accountId: params.accountId, resolveChannelLimitMb: ({ cfg, accountId }) => { const channelConfig = asOptionalRecord(cfg.channels?.[channel]); return readNumberField(asOptionalRecord(asOptionalRecord(channelConfig?.accounts)?.[accountId]), "mediaMaxMb") ?? readNumberField(channelConfig, "mediaMaxMb"); } }); } function createDirectTextMediaOutbound(params) { const sendDirect = async ({ cfg, to, text, accountId, deps, replyToId }, buildOptions, media) => { const send = params.resolveSender(deps); const maxBytes = params.resolveMaxBytes({ cfg, accountId }); const result = await send(to, text, buildOptions({ cfg, mediaUrl: media?.mediaUrl, mediaAccess: media?.mediaAccess, mediaLocalRoots: media?.mediaAccess?.localRoots, mediaReadFile: media?.mediaAccess?.readFile, accountId, replyToId, maxBytes })); return { channel: params.channel, ...result }; }; const outbound = { deliveryMode: "direct", chunker: chunkText, chunkerMode: "text", textChunkLimit: 4e3, sanitizeText: ({ text }) => sanitizeForPlainText(text), sendPayload: async (ctx) => { const { sendTextMediaPayload } = await import("./plugin-sdk/reply-payload.js"); return await sendTextMediaPayload({ channel: params.channel, ctx, adapter: outbound }); }, sendText: (ctx) => sendDirect(ctx, params.buildTextOptions), sendMedia: (ctx) => { const { mediaUrl, mediaAccess, mediaLocalRoots, mediaReadFile } = ctx; return sendDirect(ctx, params.buildMediaOptions, { mediaUrl, mediaAccess: mediaAccess ?? (mediaLocalRoots || mediaReadFile ? { ...mediaLocalRoots?.length ? { localRoots: mediaLocalRoots } : {}, ...mediaReadFile ? { readFile: mediaReadFile } : {} } : void 0) }); } }; return outbound; } //#endregion //#region src/plugin-sdk/media-runtime.ts /** * @deprecated Broad public SDK barrel. Prefer focused media-store, media-mime, * outbound-media, and capability runtime subpaths. */ const loadAudioPreflight = createLazyRuntimeModule(() => import("./audio-preflight-MVOJoMel.mjs")); const loadMediaRunner = createLazyRuntimeModule(() => import("./runner-HVNcza3B.mjs")); /** Transcribes the first audio attachment without loading the runner during plugin registration. */ const transcribeFirstAudio = async (...args) => (await loadAudioPreflight()).transcribeFirstAudio(...args); /** Resolves an image model through the media runner when selection is requested. */ const resolveAutoImageModel = async (...args) => (await loadMediaRunner()).resolveAutoImageModel(...args); //#endregion export { createScopedChannelMediaMaxBytesResolver as i, transcribeFirstAudio as n, createDirectTextMediaOutbound as r, resolveAutoImageModel as t };