UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

82 lines (81 loc) 3 kB
import { d as normalizeOutboundReplyPayload } from "./reply-payload-D-VMfpYI.js"; import { l as runPreparedInboundReply } from "./kernel-BdraY_qZ.js"; import { t as createChannelReplyPipeline } from "./reply-pipeline-eJPstCAz.js"; import { r as resolveInboundRouteEnvelopeBuilderWithRuntime } from "./inbound-envelope-DF4N8x5q.js"; import "./direct-dm-access-B-7gnozP.js"; import "./direct-dm-guard-policy-BpvVTFWc.js"; //#region src/channels/direct-dm.ts /** Route, envelope, record, and dispatch one direct-DM turn through the standard pipeline. */ async function dispatchInboundDirectDmWithRuntime(params) { const { route, buildEnvelope } = resolveInboundRouteEnvelopeBuilderWithRuntime({ cfg: params.cfg, channel: params.channel, accountId: params.accountId, peer: params.peer, runtime: params.runtime.channel, sessionStore: params.cfg.session?.store }); const { storePath, body } = buildEnvelope({ channel: params.channelLabel, from: params.conversationLabel, body: params.rawBody, timestamp: params.timestamp }); const ctxPayload = params.runtime.channel.reply.finalizeInboundContext({ Body: body, BodyForAgent: params.bodyForAgent ?? params.rawBody, RawBody: params.rawBody, CommandBody: params.commandBody ?? params.rawBody, From: params.senderAddress, To: params.recipientAddress, SessionKey: route.sessionKey, AccountId: route.accountId ?? params.accountId, ChatType: "direct", ConversationLabel: params.conversationLabel, SenderId: params.senderId, Provider: params.provider ?? params.channel, Surface: params.surface ?? params.channel, MessageSid: params.messageId, MessageSidFull: params.messageId, Timestamp: params.timestamp, CommandAuthorized: params.commandAuthorized, OriginatingChannel: params.originatingChannel ?? params.channel, OriginatingTo: params.originatingTo ?? params.recipientAddress, ...params.extraContext }); const { onModelSelected, ...replyPipeline } = createChannelReplyPipeline({ cfg: params.cfg, agentId: route.agentId, channel: params.channel, accountId: route.accountId ?? params.accountId }); await runPreparedInboundReply({ channel: params.channel, accountId: route.accountId ?? params.accountId, routeSessionKey: route.sessionKey, storePath, ctxPayload, recordInboundSession: params.runtime.channel.session.recordInboundSession, record: { onRecordError: params.onRecordError }, runDispatch: async () => await params.runtime.channel.reply.dispatchReplyWithBufferedBlockDispatcher({ ctx: ctxPayload, cfg: params.cfg, dispatcherOptions: { ...replyPipeline, deliver: async (payload) => { const normalized = payload && typeof payload === "object" ? normalizeOutboundReplyPayload(payload) : {}; return await params.deliver(normalized); }, onError: params.onDispatchError }, replyOptions: { onModelSelected } }) }); return { route, storePath, ctxPayload }; } //#endregion export { dispatchInboundDirectDmWithRuntime as t };