openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
71 lines (70 loc) • 3.21 kB
JavaScript
import { l as normalizeOptionalString, o as normalizeLowercaseStringOrEmpty } from "./string-coerce-CIXf7egm.js";
import { n as normalizeAgentId } from "./agent-id-CeT3w4ap.js";
import { O as parseAgentSessionKey, a as buildAgentMainSessionKey, o as buildAgentPeerSessionKey, u as normalizeMainKey } from "./session-key-BnWWjqNc.js";
import { _ as resolveSessionAgentId } from "./agent-scope-DbtJyKUL.js";
import { t as normalizeChatType } from "./chat-type-CG0X_HJM.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 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 = params.cfg ? resolveSessionAgentId({
config: params.cfg,
sessionKey,
agentId: params.agentId ?? normalizeOptionalString(params.ctx?.AgentId)
}) : parseAgentSessionKey(sessionKey)?.agentId ?? normalizeOptionalString(params.agentId) ?? normalizeOptionalString(params.ctx?.AgentId);
if (!agentId) return 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 };