UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

83 lines (82 loc) • 4.11 kB
import { n as normalizeAgentId } from "./agent-id-D1-Q6vR4.mjs"; import "./session-key-BC4m_Ly5.mjs"; import { M as listSessionTranscriptArchivesReadOnly, o as listSessionTranscriptInstances } from "./session-accessor.sqlite-entry-BuCmtpuj.mjs"; import { i as listSessionParticipantsReadOnly } from "./session-accessor-BM3Wa1Bx.mjs"; import "./query-expansion-CQ8cFXuR.mjs"; import "./openclaw-runtime-session-DNF-gMwm.mjs"; import "./session-files-X0whLGH4.mjs"; import "./session-reset-recall-read-BKL2b6Vv.mjs"; //#region src/plugin-sdk/memory-core-host-engine-sessions.ts /** Private-local SDK subpath for memory session transcript helpers. */ function projectSessionMetadata(instance, participants = []) { return { agentId: instance.agentId, sessionId: instance.sessionId, sessionKey: instance.sessionKey, resolution: "live", ...instance.sourceMetadata, participants }; } /** Read authoritative admission facts without creating a missing agent database. */ function loadMemorySessionMetadata(params) { const instance = listSessionTranscriptInstances(params, { includeAllWindows: true, sessionId: params.sessionId }).find((candidate) => candidate.agentId === normalizeAgentId(params.agentId) && (!params.sessionKey || candidate.sessionKey === params.sessionKey)); return instance ? projectSessionMetadata(instance) : void 0; } /** Resolve explicit memory-forget selectors against authoritative session owners. */ function resolveMemorySessionTargets(params) { const sessionIds = [...new Set(params.sessionIds ?? [])]; const hookSources = [...new Set(params.hookSources ?? [])]; const participants = [...new Set(params.participants ?? [])]; if (sessionIds.length === 0 && hookSources.length === 0 && participants.length === 0) return []; const since = typeof params.since === "string" ? Date.parse(params.since) : params.since; if (since !== void 0 && !Number.isFinite(since)) throw new Error(`Invalid memory session date: ${params.since}`); const resolvedSelectors = /* @__PURE__ */ new Set(); const participantRecords = listSessionParticipantsReadOnly(params); const targets = /* @__PURE__ */ new Map(); const instances = listSessionTranscriptInstances(params, { includeAllWindows: true }).filter((instance) => instance.agentId === normalizeAgentId(params.agentId)).toSorted((left, right) => left.sourceMetadata.createdAt - right.sourceMetadata.createdAt || left.sessionId.localeCompare(right.sessionId)); for (const instance of instances) { const identities = (participantRecords.get(instance.sessionKey) ?? []).map(({ identity }) => identity); const source = instance.sourceMetadata.hookExternalContentSource; if (!sessionIds.includes(instance.sessionId) && !sessionIds.includes(instance.sessionKey) && !(source && hookSources.includes(source)) && !identities.some((identity) => participants.includes(identity.id))) continue; resolvedSelectors.add(instance.sessionId); resolvedSelectors.add(instance.sessionKey); if (since === void 0 || instance.sourceMetadata.createdAt >= since) targets.set(instance.sessionId, projectSessionMetadata(instance, identities)); } for (const archive of listSessionTranscriptArchivesReadOnly({ ...params, sessionIds })) { resolvedSelectors.add(archive.sessionId); resolvedSelectors.add(archive.sessionKey); if (targets.has(archive.sessionId) || since !== void 0 && archive.createdAt < since) continue; targets.set(archive.sessionId, { agentId: params.agentId, sessionId: archive.sessionId, sessionKey: archive.sessionKey, resolution: "archived", hookExternalContentSource: null, channel: null, accountId: null, chatType: null, createdAt: archive.createdAt, participants: [] }); } for (const sessionId of sessionIds) if (!resolvedSelectors.has(sessionId)) targets.set(sessionId, { agentId: params.agentId, sessionId, resolution: "unresolved", hookExternalContentSource: null, channel: null, accountId: null, chatType: null, participants: [] }); return [...targets.values()]; } //#endregion export { resolveMemorySessionTargets as n, loadMemorySessionMetadata as t };