openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
42 lines (41 loc) • 1.71 kB
JavaScript
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 };