UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

65 lines (64 loc) • 3.11 kB
import { t as assertTransactionUsable } from "../../sqlite-transaction-DBRLvCDM.mjs"; import { x as ensureSessionGoalOperationsSchema } from "../../openclaw-agent-canonical-validation-schema-4dL3LLg2.mjs"; import { i as getSqliteWorkerStateContext } from "../../sqlite-worker-state-context-G3Xbcj1W.mjs"; import { i as getOpenClawAgentDatabaseIfOpen } from "../../openclaw-agent-db-DWI9Bgur.mjs"; import { t as readSessionSourceValidation } from "../../session-source-predicate.worker-BPzqDAQ2.mjs"; import { n as prepareSessionEntryReplacementPublication } from "../../session-accessor.sqlite-replacement-state-0OnJKCvn.mjs"; import { i as transferSessionEntryWorkerCandidate, n as createSessionWorkerOperationContext } from "../../session-entry-patch.worker-D77IuVN7.mjs"; import { i as mutateSessionGoalInDatabase } from "../../goals-operations-Dgcsd7BD.mjs"; //#region src/config/sessions/goals-operations.worker.ts /** Lend the existing executor connection; keep this private command outside the released SDK union. */ 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) throw new Error("Goal management lost its canonical database owner"); ensureSessionGoalOperationsSchema(database.db); const { admit, writeTransaction } = createSessionWorkerOperationContext(database, options, bound, "Goal"); return { execute({ input: request }) { return writeTransaction("session.goal.mutate", "Goal transaction", (current) => { const assertSources = () => { const validation = readSessionSourceValidation(current, request.sources); const { refusedSource } = validation; if (refusedSource) { transferSessionEntryWorkerCandidate(current, admit, { kind: "session-goal-management", refusedSource }); throw new Error("Goal source refusal was not rejected"); } if (validation.conversationMatches.length) admit("transaction", { kind: "session-entry-patch-validated", sourceValidation: validation }); }; assertSources(); const { previous, ...result } = mutateSessionGoalInDatabase(current, request); assertSources(); const candidate = { kind: "session-goal-management", result, publication: previous && result.sessionEntry ? prepareSessionEntryReplacementPublication({ previous: /* @__PURE__ */ new Map([[request.sessionKey, previous]]), current: /* @__PURE__ */ new Map([[request.sessionKey, result.sessionEntry]]), pendingArchiveRecovery: false, membershipInvalidatedKeys: [], maintenancePlans: [] }, current) : void 0 }; return transferSessionEntryWorkerCandidate(current, admit, candidate); }); }, assertSettled() { assertTransactionUsable(database.db); if (database.db.isTransaction) throw new Error("Goal transaction did not settle"); }, close() {} }; } //#endregion export { bindSqliteWorkerBackend };