UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

69 lines (68 loc) 3.42 kB
import { n as normalizeAgentId, t as isValidAgentId } from "./agent-id-CeT3w4ap.js"; import "./session-key-BnWWjqNc.js"; import "./internal-runtime-context-UgZVJlox.js"; import "./strip-inbound-meta-D5F_RINt.js"; import "./artifacts-DMDO9PHy.js"; import "./paths-CXdaYWF_.js"; import "./agent-scope-DbtJyKUL.js"; import "./config-Cs0XXL3x.js"; import "./input-provenance-DiG-Cwnd.js"; import "./session-accessor-YsytfDtG.js"; import { M as readTranscriptStatsSync } from "./session-accessor.sqlite-transcript-store-B0zw3fAU.js"; import "./transcript-events-wgPr4ILk.js"; import "./main-session-Br0F9dzh.js"; import "./heartbeat-ofet59jF.js"; import "./heartbeat-filter-64LAFCDI.js"; import "./session-store-runtime-Btld46Zi.js"; import "./heartbeat-events-filter-CEGCW5Gh.js"; import path from "node:path"; //#region packages/memory-host-sdk/src/host/openclaw-runtime-session.ts /** Returns an opaque revision that changes for every canonical transcript mutation. */ function readTranscriptContentRevisionSync(params) { const stats = readTranscriptStatsSync(params); return [ "sqlite", stats.maxSeq, stats.sizeBytes, stats.eventCount, stats.lastMutationAtMs ?? "", stats.lastObservedMutationAtMs ?? "" ].join(":"); } /** Extracts the agent id from a canonical `agents/<id>/sessions` directory path. */ function extractAgentIdFromSessionsDir(sessionsDir) { const parts = path.normalize(path.resolve(sessionsDir)).split(path.sep).filter(Boolean); const sessionsSegment = parts.at(-1); const agentId = parts.at(-2); const agentsSegment = parts.at(-3); const isWindows = process.platform === "win32"; if (!sessionsSegment || !agentId || !agentsSegment || (isWindows ? sessionsSegment.toLowerCase() : sessionsSegment) !== "sessions" || (isWindows ? agentsSegment.toLowerCase() : agentsSegment) !== "agents" || isWindows && (agentId !== agentId.trim() || !isValidAgentId(agentId))) return null; return isWindows ? normalizeAgentId(agentId) : agentId; } /** Finds the nearest canonical sessions owner without escaping its directory. */ function extractAgentIdFromSessionPath(absPath) { let currentDir = path.dirname(path.resolve(absPath)); while (true) { const currentSegment = path.basename(currentDir); if ((process.platform === "win32" ? currentSegment.toLowerCase() : currentSegment) === "sessions") { const agentId = extractAgentIdFromSessionsDir(currentDir); if (agentId) return agentId; } const parentDir = path.dirname(currentDir); if (parentDir === currentDir) return null; currentDir = parentDir; } } /** Session-key prefix marking transcripts generated by memory dreaming runs. */ const DREAMING_NARRATIVE_RUN_PREFIX = "dreaming-narrative-"; /** True when a session-store key belongs to a dreaming narrative run. */ function isDreamingNarrativeSessionStoreKey(sessionKey) { const trimmed = sessionKey.trim(); if (!trimmed) return false; const firstSeparator = trimmed.indexOf(":"); if (firstSeparator < 0) return trimmed.startsWith(DREAMING_NARRATIVE_RUN_PREFIX); const secondSeparator = trimmed.indexOf(":", firstSeparator + 1); return (secondSeparator < 0 ? trimmed : trimmed.slice(secondSeparator + 1)).startsWith(DREAMING_NARRATIVE_RUN_PREFIX); } //#endregion export { readTranscriptContentRevisionSync as a, isDreamingNarrativeSessionStoreKey as i, extractAgentIdFromSessionPath as n, extractAgentIdFromSessionsDir as r, DREAMING_NARRATIVE_RUN_PREFIX as t };