UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

55 lines (54 loc) 2.98 kB
import { o as hasReplyPayloadContent } from "./payload-DYE7bQ2k.js"; //#region src/channels/message/capabilities.ts function hasMediaPayload(payload) { if (payload.mediaUrl?.trim()) return true; return Array.isArray(payload.mediaUrls) && payload.mediaUrls.some((url) => typeof url === "string" && url.trim().length > 0); } function setRequired(requirements, capability, required) { if (required === true) requirements[capability] = true; } /** Derives the adapter capabilities core needs before it can require durable final delivery. */ function deriveDurableFinalDeliveryRequirements(params) { const requirements = {}; setRequired(requirements, "text", true); setRequired(requirements, "media", hasMediaPayload(params.payload)); setRequired(requirements, "replyTo", params.replyToId != null || params.payload.replyToId != null); setRequired(requirements, "thread", params.threadId != null); setRequired(requirements, "silent", params.silent); setRequired(requirements, "messageSendingHooks", params.messageSendingHooks !== false); setRequired(requirements, "payload", params.payloadTransport); setRequired(requirements, "batch", params.batch); setRequired(requirements, "reconcileUnknownSend", params.reconcileUnknownSend); setRequired(requirements, "afterSendSuccess", params.afterSendSuccess); setRequired(requirements, "afterCommit", params.afterCommit); for (const [capability, required] of Object.entries(params.extraCapabilities ?? {})) setRequired(requirements, capability, required); return requirements; } /** Matches the structured-payload branch selected by core delivery. */ function payloadRequiresDurablePayloadTransport(payload, options) { return payload.isError === true && options?.sendTextOnlyErrorPayloads === true || hasReplyPayloadContent({ presentation: payload.presentation, interactive: payload.interactive, channelData: payload.channelData, location: payload.location }, { extraContent: payload.location != null }) || payload.audioAsVoice === true || payload.videoAsNote === true; } /** Derives the union of required capabilities from the final concrete batch. */ function deriveDurableFinalDeliveryRequirementsForBatch(params) { const requirements = params.reconcileUnknownSend && params.payloads.length > 0 ? { reconcileUnknownSend: true } : {}; for (const payload of params.payloads) { const current = deriveDurableFinalDeliveryRequirements({ payload, replyToId: params.replyToId, threadId: params.threadId, silent: params.silent, payloadTransport: payloadRequiresDurablePayloadTransport(payload), batch: params.payloads.length > 1, reconcileUnknownSend: params.reconcileUnknownSend }); for (const [capability, required] of Object.entries(current)) setRequired(requirements, capability, required); } return requirements; } //#endregion export { deriveDurableFinalDeliveryRequirementsForBatch as n, payloadRequiresDurablePayloadTransport as r, deriveDurableFinalDeliveryRequirements as t };