UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

105 lines (104 loc) 5.39 kB
import { a as normalizeLowercaseStringOrEmpty, c as normalizeOptionalString } from "./string-coerce-mnp54Vah.js"; import "./agent-scope-MrLta7Pq.js"; import { c as parseAgentSessionKey, o as normalizeSessionKeyPreservingOpaquePeerIds } from "./session-key-utils-Bx3apsJ3.js"; import { d as normalizeMainKey, u as normalizeAgentId } from "./session-key-B_NoIfpX.js"; import { c as resolveDefaultAgentId, n as listAgentIds } from "./agent-scope-config-CgCYpZfK.js"; import { i as resolveMainSessionKey, t as canonicalizeMainSessionAlias } from "./main-session-Eahn-btj.js"; //#region src/gateway/session-store-key.ts /** Canonicalize an opaque session key into the agent-scoped store namespace. */ function canonicalizeSessionKeyForAgent(agentId, key) { const lowered = normalizeLowercaseStringOrEmpty(key); if (lowered === "global" || lowered === "unknown") return lowered; const normalized = normalizeSessionKeyPreservingOpaquePeerIds(key); if (normalized.startsWith("agent:")) return normalized; return `agent:${normalizeAgentId(agentId)}:${normalized}`; } function resolveDefaultStoreAgentId(cfg) { return normalizeAgentId(resolveDefaultAgentId(cfg)); } function shouldRemapLegacyDefaultMainAlias(cfg, parsed, options) { if (normalizeAgentId(parsed.agentId) !== "main" || listAgentIds(cfg).includes("main")) return false; const defaultAgentId = resolveDefaultStoreAgentId(cfg); if (options?.storeAgentId && normalizeAgentId(options.storeAgentId) !== defaultAgentId) return false; const rest = normalizeLowercaseStringOrEmpty(parsed.rest); const mainKey = normalizeMainKey(cfg.session?.mainKey); return rest === "main" || rest === mainKey; } function resolveParsedSessionStoreKey(cfg, raw, parsed, options) { if (!shouldRemapLegacyDefaultMainAlias(cfg, parsed, options)) return { agentId: normalizeAgentId(parsed.agentId), sessionKey: normalizeSessionKeyPreservingOpaquePeerIds(raw) }; const agentId = resolveDefaultStoreAgentId(cfg); return { agentId, sessionKey: `agent:${agentId}:${normalizeLowercaseStringOrEmpty(parsed.rest)}` }; } /** Resolve any incoming session key into the canonical key used in persisted session stores. */ function resolveSessionStoreKey(params) { const raw = normalizeOptionalString(params.sessionKey) ?? ""; if (!raw) return raw; const rawLower = normalizeLowercaseStringOrEmpty(raw); if (rawLower === "global" || rawLower === "unknown") return rawLower; const parsed = parseAgentSessionKey(raw); if (parsed) { const resolved = resolveParsedSessionStoreKey(params.cfg, raw, parsed, { storeAgentId: params.storeAgentId }); const canonical = canonicalizeMainSessionAlias({ cfg: params.cfg, agentId: resolved.agentId, sessionKey: resolved.sessionKey }); if (canonical !== resolved.sessionKey) return canonical; return resolved.sessionKey; } const lowered = normalizeLowercaseStringOrEmpty(raw); const rawMainKey = normalizeMainKey(params.cfg.session?.mainKey); if (lowered === "main" || lowered === rawMainKey) return resolveMainSessionKey(params.cfg); return canonicalizeSessionKeyForAgent(resolveDefaultStoreAgentId(params.cfg), raw); } /** Resolve the agent that owns a canonical session-store key. */ function resolveSessionStoreAgentId(cfg, canonicalKey) { if (canonicalKey === "global" || canonicalKey === "unknown") return resolveDefaultStoreAgentId(cfg); const parsed = parseAgentSessionKey(canonicalKey); if (parsed?.agentId) return normalizeAgentId(parsed.agentId); return resolveDefaultStoreAgentId(cfg); } /** Resolve a session key for lookup inside a specific agent's store. */ function resolveStoredSessionKeyForAgentStore(params) { const raw = normalizeOptionalString(params.sessionKey) ?? ""; if (!raw) return raw; const lowered = normalizeLowercaseStringOrEmpty(raw); if (lowered === "global" || lowered === "unknown") return lowered; const key = parseAgentSessionKey(raw) ? raw : canonicalizeSessionKeyForAgent(params.agentId, raw); return resolveSessionStoreKey({ cfg: params.cfg, sessionKey: key, storeAgentId: params.agentId }); } /** Resolve the owner agent for a stored session key, returning null for global/unknown keys. */ function resolveStoredSessionOwnerAgentId(params) { const canonicalKey = resolveStoredSessionKeyForAgentStore(params); if (canonicalKey === "global" || canonicalKey === "unknown") return null; return resolveSessionStoreAgentId(params.cfg, canonicalKey); } /** Canonicalize spawned-by parent references while preserving main-session aliases. */ function canonicalizeSpawnedByForAgent(cfg, agentId, spawnedBy) { const raw = normalizeOptionalString(spawnedBy) ?? ""; if (!raw) return; const lower = normalizeLowercaseStringOrEmpty(raw); if (lower === "global" || lower === "unknown") return lower; let result; const normalized = normalizeSessionKeyPreservingOpaquePeerIds(raw); if (normalized.startsWith("agent:")) result = normalized; else result = `agent:${normalizeAgentId(agentId)}:${normalized}`; const parsed = parseAgentSessionKey(result); return canonicalizeMainSessionAlias({ cfg, agentId: parsed?.agentId ? normalizeAgentId(parsed.agentId) : agentId, sessionKey: result }); } //#endregion export { resolveStoredSessionKeyForAgentStore as a, resolveSessionStoreKey as i, canonicalizeSpawnedByForAgent as n, resolveStoredSessionOwnerAgentId as o, resolveSessionStoreAgentId as r, canonicalizeSessionKeyForAgent as t };