UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

53 lines (52 loc) 1.89 kB
import { a as normalizeLowercaseStringOrEmpty } from "./string-coerce-mnp54Vah.js"; import { o as normalizeSessionKeyPreservingOpaquePeerIds } from "./session-key-utils-Bx3apsJ3.js"; //#region src/channels/session.ts let inboundSessionRuntimePromise = null; function loadInboundSessionRuntime() { inboundSessionRuntimePromise ??= import("./inbound.runtime.js"); return inboundSessionRuntimePromise; } function shouldSkipPinnedMainDmRouteUpdate(pin) { if (!pin) return false; const owner = normalizeLowercaseStringOrEmpty(pin.ownerRecipient); const sender = normalizeLowercaseStringOrEmpty(pin.senderRecipient); if (!owner || !sender || owner === sender) return false; pin.onSkip?.({ ownerRecipient: pin.ownerRecipient, senderRecipient: pin.senderRecipient }); return true; } async function recordInboundSession(params) { const { storePath, sessionKey, ctx, groupResolution, createIfMissing } = params; const canonicalSessionKey = normalizeSessionKeyPreservingOpaquePeerIds(sessionKey); const runtime = await loadInboundSessionRuntime(); const metaTask = runtime.recordSessionMetaFromInbound({ storePath, sessionKey: canonicalSessionKey, ctx, groupResolution, createIfMissing }).catch(params.onRecordError); params.trackSessionMetaTask?.(metaTask); const update = params.updateLastRoute; if (!update) return; if (shouldSkipPinnedMainDmRouteUpdate(update.mainDmOwnerPin)) return; const targetSessionKey = normalizeSessionKeyPreservingOpaquePeerIds(update.sessionKey); await runtime.updateLastRoute({ storePath, sessionKey: targetSessionKey, route: update.route, deliveryContext: { channel: update.channel, to: update.to, accountId: update.accountId, threadId: update.threadId }, ctx: targetSessionKey === canonicalSessionKey ? ctx : void 0, groupResolution, createIfMissing }); } //#endregion export { recordInboundSession as t };