UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

54 lines (53 loc) • 2.56 kB
import { o as hasReplyPayloadContent } from "./payload-DD64v4IB.mjs"; //#region src/channels/message/capabilities.ts function hasMediaPayload(payload) { return Boolean(payload.mediaUrl?.trim()) || Array.isArray(payload.mediaUrls) && payload.mediaUrls.some((url) => typeof url === "string" && url.trim().length > 0); } /** Derives the adapter capabilities core needs before it can require durable final delivery. */ function deriveDurableFinalDeliveryRequirements(params) { const requirements = {}; const requested = [ ["text", true], ["media", hasMediaPayload(params.payload)], ["replyTo", params.replyToId != null || params.payload.replyToId != null], ["thread", params.threadId != null], ["silent", params.silent], ["messageSendingHooks", params.messageSendingHooks !== false], ["payload", params.payloadTransport], ["batch", params.batch], ["reconcileUnknownSend", params.reconcileUnknownSend], ["afterSendSuccess", params.afterSendSuccess], ["afterCommit", params.afterCommit], ...Object.entries(params.extraCapabilities ?? {}) ]; for (const [capability, required] of requested) if (required === true) requirements[capability] = true; 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 }); Object.assign(requirements, current); } return requirements; } //#endregion export { deriveDurableFinalDeliveryRequirementsForBatch as n, payloadRequiresDurablePayloadTransport as r, deriveDurableFinalDeliveryRequirements as t };