openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
46 lines (45 loc) • 2.31 kB
JavaScript
import { t as formatErrorMessage } from "./errors-Db3Ymjlb.js";
import { i as resolveMessageReceiptThreadId, n as listMessageReceiptPlatformIds } from "./receipt-DdpXkxJo.js";
//#region src/channels/turn/delivery-result.ts
/** Builds a typed non-visible channel outcome without transport identity. */
function createSuppressedChannelDeliveryResult(params) {
return {
visibleReplySent: false,
suppression: {
reason: params.reason,
...params.cancelReason ? { cancelReason: params.cancelReason } : {},
...params.metadata ? { metadata: params.metadata } : {}
}
};
}
const CHANNEL_PARTIAL_DELIVERY_ERROR_CODE = "CHANNEL_PARTIAL_DELIVERY";
/** Preserves provider-visible delivery facts when a later native operation fails. */
function createChannelPartialDeliveryError(cause, deliveryResult) {
return Object.assign(new Error(formatErrorMessage(cause), { cause }), {
code: "CHANNEL_PARTIAL_DELIVERY",
deliveryResult,
sentBeforeError: true,
visibleReplySent: true
});
}
function isChannelPartialDeliveryError(error) {
if (!error || typeof error !== "object" || Array.isArray(error)) return false;
const candidate = error;
return candidate.code === CHANNEL_PARTIAL_DELIVERY_ERROR_CODE && Boolean(candidate.deliveryResult && typeof candidate.deliveryResult === "object" && !Array.isArray(candidate.deliveryResult) && candidate.deliveryResult.visibleReplySent === true);
}
/** Converts a normalized message receipt into the delivery result shape used by channel turns. */
function createChannelDeliveryResultFromReceipt(params) {
const messageIds = listMessageReceiptPlatformIds(params.receipt);
const threadId = resolveMessageReceiptThreadId(params.receipt, params.threadId);
return {
...messageIds.length > 0 ? { messageIds } : {},
receipt: params.receipt,
...threadId ? { threadId } : {},
...params.replyToId ? { replyToId: params.replyToId } : {},
...params.visibleReplySent === void 0 ? {} : { visibleReplySent: params.visibleReplySent },
...params.content === void 0 ? {} : { content: params.content },
...params.deliveryIntent ? { deliveryIntent: params.deliveryIntent } : {}
};
}
//#endregion
export { isChannelPartialDeliveryError as i, createChannelPartialDeliveryError as n, createSuppressedChannelDeliveryResult as r, createChannelDeliveryResultFromReceipt as t };