UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

65 lines (64 loc) 2.92 kB
import { a as normalizeLowercaseStringOrEmpty, c as normalizeOptionalString } from "./string-coerce-mnp54Vah.js"; import { a as buildAgentPeerSessionKey, d as normalizeMainKey, f as resolveAgentIdFromSessionKey, i as buildAgentMainSessionKey, u as normalizeAgentId } from "./session-key-B_NoIfpX.js"; import { t as normalizeChatType } from "./chat-type-CxEvM45e.js"; //#region src/auto-reply/reply/runtime-policy-session-key.ts /** Resolves runtime policy session keys distinct from transcript session keys. */ function resolvePolicyChannel(ctx) { const raw = normalizeOptionalString(ctx?.OriginatingChannel ?? ctx?.Provider ?? ctx?.Surface); if (!raw) return; const channel = normalizeLowercaseStringOrEmpty(raw); return channel && channel !== "webchat" ? channel : void 0; } function resolvePolicyDirectPeerId(ctx) { return normalizeOptionalString(ctx?.NativeDirectUserId ?? ctx?.SenderId ?? ctx?.SenderE164 ?? ctx?.SenderUsername ?? ctx?.OriginatingTo ?? ctx?.From ?? ctx?.To); } function isMainSessionAlias(params) { const raw = normalizeLowercaseStringOrEmpty(params.sessionKey); if (!raw) return false; const agentId = normalizeAgentId(params.agentId); const mainKey = normalizeMainKey(params.cfg?.session?.mainKey); const agentMainSessionKey = buildAgentMainSessionKey({ agentId, mainKey }); const agentMainAliasKey = buildAgentMainSessionKey({ agentId, mainKey: "main" }); return raw === "main" || raw === mainKey || raw === agentMainSessionKey || raw === agentMainAliasKey || raw === buildAgentMainSessionKey({ agentId: "main", mainKey }) || raw === buildAgentMainSessionKey({ agentId: "main", mainKey: "main" }) || params.cfg?.session?.scope === "global" && raw === "global"; } /** Resolves the session key used for runtime policy checks and direct-message scoping. */ /** Resolves the session key used for sandbox/tool/runtime policy lookups. */ function resolveRuntimePolicySessionKey(params) { const explicitPolicySessionKey = normalizeOptionalString(params.ctx?.RuntimePolicySessionKey); if (explicitPolicySessionKey) return explicitPolicySessionKey; const sessionKey = normalizeOptionalString(params.sessionKey ?? params.ctx?.CommandTargetSessionKey ?? params.ctx?.SessionKey); if (!sessionKey) return; const agentId = resolveAgentIdFromSessionKey(sessionKey); if (!isMainSessionAlias({ cfg: params.cfg, agentId, sessionKey })) return sessionKey; if (normalizeChatType(params.ctx?.ChatType) !== "direct") return sessionKey; const channel = resolvePolicyChannel(params.ctx); const peerId = resolvePolicyDirectPeerId(params.ctx); if (!channel || !peerId) return sessionKey; return buildAgentPeerSessionKey({ agentId, channel, accountId: params.ctx?.AccountId, peerKind: "direct", peerId, dmScope: "per-account-channel-peer", identityLinks: params.cfg?.session?.identityLinks }); } //#endregion export { resolveRuntimePolicySessionKey as t };