UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

37 lines (36 loc) • 2 kB
import { t as assertTransactionUsable } from "../../sqlite-transaction-DBRLvCDM.mjs"; import { i as getSqliteWorkerStateContext } from "../../sqlite-worker-state-context-G3Xbcj1W.mjs"; import { i as getOpenClawAgentDatabaseIfOpen } from "../../openclaw-agent-db-DWI9Bgur.mjs"; import { n as createSessionWorkerOperationContext } from "../../session-entry-patch.worker-D77IuVN7.mjs"; import { t as commitSessionForkMessageCut } from "../../session-message-cut.worker-BOUOAOul.mjs"; import { i as readParentForkSource, r as prepareParentForkEntry, t as commitParentFork } from "../../session-parent-fork.worker-CxAwcKwo.mjs"; //#region src/config/sessions/session-fork-domain.worker.ts /** The domain lends the canonical executor's connection and admission, never a second writer. */ function bindSqliteWorkerBackend(input, bound) { const options = { agentId: input.agentId, path: bound.databasePath, env: getSqliteWorkerStateContext().environment }; const database = getOpenClawAgentDatabaseIfOpen(options); if (!database || database.db !== bound.database || database.path !== bound.databasePath) throw new Error("Session fork lost its canonical database owner"); const context = createSessionWorkerOperationContext(database, options, bound, "Session fork"); return { execute(command) { switch (command.type) { case "session.parentFork.prepare": return prepareParentForkEntry(command.input, context); case "session.parentFork.source": return readParentForkSource(command.input, context); case "session.parentFork.commit": return commitParentFork(command.input, context); case "session.messageCut.fork": return commitSessionForkMessageCut(command.input, context); } throw new Error("Unknown session fork domain operation"); }, assertSettled() { assertTransactionUsable(bound.database); if (bound.database.isTransaction) throw new Error("Session fork transaction did not settle"); }, close() {} }; } //#endregion export { bindSqliteWorkerBackend };