openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
63 lines • 2.65 kB
TypeScript
import { S as MessageReceipt, T as MessageReceiptSourceResult } from "./types-DmbWkZnE.js";
import { t as ChannelId } from "./channel-id.types-CjcGKHk0.js";
//#region src/infra/outbound/deliver-types.d.ts
/** Channel send result or explicit non-outcome normalized for delivery accounting. */
type OutboundDeliveryResult = {
outcome?: MessageReceiptSourceResult["outcome"];
channel: ChannelId;
messageId: string;
target?: {
kind: "chat" | "channel" | "room" | "conversation";
id: string;
};
timestamp?: number;
toJid?: string;
pollId?: string;
receipt?: MessageReceipt;
meta?: Record<string, unknown>;
};
/** Reason a payload was intentionally not sent after normalization or hooks. */
type OutboundPayloadDeliverySuppressionReason = "cancelled_by_message_sending_hook" | "cancelled_by_reply_payload_sending_hook" | "empty_after_message_sending_hook" | "empty_after_reply_payload_sending_hook" | "no_visible_payload" | "adapter_returned_no_send" | "adapter_returned_no_identity";
/** Delivery phase where a failure occurred. */
type OutboundDeliveryFailureStage = "platform_send" | "queue" | "unknown";
type OutboundPayloadDeliveryKind = "text" | "media" | "other";
/**
* Provider assertion that no recipient-visible send began. Set retryable=false
* for permanent payload/policy rejection; never use after an ambiguous send.
*/
declare class PlatformMessageNotDispatchedError extends Error {
readonly code = "OPENCLAW_PLATFORM_MESSAGE_NOT_DISPATCHED";
readonly retryable: boolean;
constructor(message: string, options: {
cause: unknown;
retryable?: boolean;
});
}
/** Per-payload delivery status emitted to callers and channel send summaries. */
type OutboundPayloadDeliveryOutcome = {
index: number;
status: "sent";
results: OutboundDeliveryResult[];
/** Effective post-hook, post-render payload kind. */
deliveryKind?: OutboundPayloadDeliveryKind;
} | {
index: number;
status: "suppressed";
reason: OutboundPayloadDeliverySuppressionReason;
hookEffect?: {
cancelReason?: string;
metadata?: Record<string, unknown>;
};
} | {
index: number;
status: "failed";
error: unknown;
sentBeforeError: boolean;
stage: OutboundDeliveryFailureStage;
/** Identified platform sends from this payload before its terminal failure. */
results?: OutboundDeliveryResult[];
/** Effective post-hook, post-render payload kind when platform delivery began. */
deliveryKind?: OutboundPayloadDeliveryKind;
};
//#endregion
export { PlatformMessageNotDispatchedError as i, OutboundPayloadDeliveryOutcome as n, OutboundPayloadDeliverySuppressionReason as r, OutboundDeliveryResult as t };