UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

42 lines (41 loc) 1.71 kB
import { n as normalizeAgentId } from "./agent-id-CeT3w4ap.js"; import "./session-key-BnWWjqNc.js"; import { At as withTranscriptWriteLock, B as resolveSessionTranscriptRuntimeTarget } from "./session-accessor-YsytfDtG.js"; import { _ as publishTranscriptUpdate } from "./session-accessor.sqlite-lifecycle-state-BTh4yZ7R.js"; import { t as formatSessionTranscriptMemoryHitKey } from "./session-transcript-memory-hit-ClMZaPAU.js"; //#region src/plugin-sdk/session-transcript-lock-runtime.ts /** Resolves, locks, and publishes one projected transcript write context. */ async function withProjectedSessionTranscriptWriteLock(params, run, projectContext) { const storageTarget = await resolveSessionTranscriptRuntimeTarget(params, params.config); const agentId = normalizeAgentId(storageTarget.agentId); const target = { agentId, memoryKey: formatSessionTranscriptMemoryHitKey({ agentId, sessionId: storageTarget.sessionId }), sessionId: storageTarget.sessionId, sessionKey: storageTarget.sessionKey, targetKind: "runtime-session" }; const boundScope = { ...params, ...storageTarget }; const queuedUpdates = []; const result = await withTranscriptWriteLock(boundScope, async (locked) => await run(projectContext({ target, readEvents: locked.readEvents, appendMessage: (options) => locked.appendMessage({ ...options, ...params.config !== void 0 ? { config: params.config } : {} }), publishUpdate: async (update) => { queuedUpdates.push(update ? { ...update } : void 0); } }, locked))); for (const update of queuedUpdates) await publishTranscriptUpdate(boundScope, update); return result; } //#endregion export { withProjectedSessionTranscriptWriteLock as t };