UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

50 lines (49 loc) • 2.52 kB
import { t as normalizeAnyChannelId } from "./registry-normalize-BnQO61Jh.mjs"; import { i as getLoadedChannelPluginForRead } from "./registry-loaded-CWeoGJWS.mjs"; import { a as resolveResponsePrefixTemplate } from "./normalize-reply-XuQItfL2.mjs"; import { i as resolveSourceReplyDeliveryMode } from "./source-reply-delivery-mode-CgYiBCB8.mjs"; import { n as bindChannelReplyTransformOwner, t as applyChannelReplyTransform } from "./reply-transform-Cog0xfyl.mjs"; import { n as createReplyPrefixOptions } from "./reply-prefix-Dj1Q5ok1.mjs"; import { t as createTypingCallbacks } from "./typing-X3LKQDeB.mjs"; //#region src/channels/message/reply-pipeline.ts /** Resolves whether a channel reply should use source delivery, message tools, or direct sending. */ function resolveChannelSourceReplyDeliveryMode(params) { return resolveSourceReplyDeliveryMode(params); } /** Builds the reply pipeline used by channel turns and plugin SDK reply helpers. */ function createChannelReplyPipeline(params) { const channelId = params.channel ? normalizeAnyChannelId(params.channel) ?? params.channel : void 0; let plugin; let pluginMessagingResolved = false; const resolvePluginMessaging = () => { if (pluginMessagingResolved) return plugin?.messaging; pluginMessagingResolved = true; plugin = channelId ? getLoadedChannelPluginForRead(channelId) : void 0; return plugin?.messaging; }; const transformPluginReply = (payload) => { const messaging = resolvePluginMessaging(); if (messaging?.transformReplyPayload) bindChannelReplyTransformOwner(transformPluginReply, messaging, params.accountId); return applyChannelReplyTransform({ messaging, payload, cfg: params.cfg, accountId: params.accountId }); }; const transformReplyPayload = params.transformReplyPayload ? params.transformReplyPayload : channelId ? transformPluginReply : void 0; const prefixOptions = createReplyPrefixOptions({ cfg: params.cfg, agentId: params.agentId, channel: params.channel, accountId: params.accountId }); return { ...prefixOptions, resolveResponsePrefix: () => resolveResponsePrefixTemplate(prefixOptions.responsePrefix, prefixOptions.responsePrefixContextProvider()), ...transformReplyPayload ? { transformReplyPayload } : {}, ...params.typingCallbacks ? { typingCallbacks: params.typingCallbacks } : params.typing ? { typingCallbacks: createTypingCallbacks(params.typing) } : {} }; } //#endregion export { resolveChannelSourceReplyDeliveryMode as n, createChannelReplyPipeline as t };