UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

78 lines • 3.82 kB
//#endregion //#region src/plugin-sdk/channel-route.d.ts /** Coarse chat shape used when a channel can distinguish direct, group, and broadcast targets. */ type ChannelRouteChatType = "direct" | "group" | "channel"; /** Provider-specific thread kind carried with normalized channel routes. */ type ChannelRouteThreadKind = "topic" | "thread" | "reply"; /** Describes which runtime surface supplied a channel route thread id. */ type ChannelRouteThreadSource = "explicit" | "target" | "session" | "turn"; /** Normalized channel route used for comparison, binding, and dedupe helpers. */ type ChannelRouteRef = { /** Lowercase channel id such as `slack`, `telegram`, or `discord`. */ channel?: string; /** Normalized account/profile id when a channel supports multiple accounts. */ accountId?: string; target?: { /** Canonical destination id used for route equality and delivery. */ to: string; /** Original destination text when provider target grammar differs from the canonical id. */ rawTo?: string; /** Coarse destination shape used by channels with different direct/group/broadcast rules. */ chatType?: ChannelRouteChatType; }; thread?: { /** Provider thread/topic/root id; strings are preserved when providers use opaque ids. */ id: string | number; /** Provider-specific thread family for channels that distinguish topics, replies, and threads. */ kind?: ChannelRouteThreadKind; /** Runtime source that supplied the thread id, used when callers need route provenance. */ source?: ChannelRouteThreadSource; }; }; /** Loose route input accepted at SDK boundaries before normalization. */ type ChannelRouteRefInput = { /** Raw channel id; normalized to lowercase. */ channel?: unknown; /** Raw account/profile id; normalized with account-id rules when string. */ accountId?: unknown; /** Raw destination id before trimming and route-key normalization. */ to?: unknown; /** Provider-specific target text retained when different from `to`. */ rawTo?: unknown; /** Coarse destination shape supplied by channels that distinguish target kinds. */ chatType?: ChannelRouteChatType; /** Raw provider thread/topic/root id before route-key normalization. */ threadId?: unknown; /** Provider-specific thread family carried with the normalized thread id. */ threadKind?: ChannelRouteThreadKind; /** Runtime surface that supplied the thread id. */ threadSource?: ChannelRouteThreadSource; }; /** Raw outbound target input shape used by helpers that do not need thread metadata source. */ type ChannelRouteTargetInput = Pick<ChannelRouteRefInput, "channel" | "accountId" | "to" | "rawTo" | "chatType" | "threadId">; //#endregion //#region src/utils/delivery-context.types.d.ts /** Deferred outbound delivery intent attached to a session or task. */ type DeliveryIntentRef = { /** Stable queue/work item id. */ id: string; /** Intent family; currently scoped to outbound queue delivery. */ kind: "outbound_queue"; /** Whether queueing is mandatory or best-effort for this delivery. */ queuePolicy?: "required" | "best_effort"; }; /** Canonical channel delivery target shared by sessions, cron, tasks, and plugins. */ type DeliveryContext = Pick<ChannelRouteTargetInput, "accountId" | "channel" | "threadId" | "to"> & { /** Channel/plugin id that owns the delivery target. */ channel?: string; /** Channel-local destination id, preserved with channel-specific casing. */ to?: string; /** Optional channel account/workspace id. */ accountId?: string; /** Optional thread/topic id nested under `to`. */ threadId?: string | number; /** Optional queued-delivery intent associated with this context. */ deliveryIntent?: DeliveryIntentRef; }; //#endregion export { ChannelRouteRef as n, DeliveryContext as t };