UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

26 lines (25 loc) • 1.58 kB
import { a as resolveGlobalSingleton } from "./global-singleton-0m-JziJW.mjs"; import { r as runWithSqliteBusyTimeout } from "./sqlite-busy-timeout-D3v1uB5d.mjs"; import { c as withSqlitePostCommitPublications } from "./sqlite-post-commit-DENvzR6w.mjs"; import { a as runSqliteImmediateTransactionSync } from "./sqlite-transaction-DBRLvCDM.mjs"; //#region src/state/openclaw-state-db-transaction.ts const managedStateTransactions = resolveGlobalSingleton(Symbol.for("openclaw.managedStateTransactions"), () => /* @__PURE__ */ new WeakSet()); /** Only the synchronous transaction owner may lend its uncommitted authority rows. */ function isManagedStateTransaction(database) { return database.isTransaction && managedStateTransactions.has(database); } function runManagedStateTransaction(database, operation, options) { if (database.isTransaction && !managedStateTransactions.has(database)) throw new Error("Cannot join an unmanaged shared-state transaction; enter through runOpenClawStateWriteTransaction before BEGIN."); const transaction = () => withSqlitePostCommitPublications(database, () => { const outer = !database.isTransaction; if (outer) managedStateTransactions.add(database); try { return runSqliteImmediateTransactionSync(database, operation, options); } finally { if (outer) managedStateTransactions.delete(database); } }); return options.busyTimeoutMs === void 0 ? transaction() : runWithSqliteBusyTimeout(database, options.busyTimeoutMs, transaction); } //#endregion export { runManagedStateTransaction as n, isManagedStateTransaction as t };