UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

60 lines (59 loc) • 2.55 kB
import { i as deferSqliteWorkerCommitReceipt } from "./sqlite-worker-operation-admission-C5lBzzTk.mjs"; import { i as getSqliteWorkerStateContext } from "./sqlite-worker-state-context-G3Xbcj1W.mjs"; import { l as runOpenClawStateWriteTransaction } from "./openclaw-state-db-DJZ7EKoI.mjs"; import { A as withDevicePairingStoreDatabase, L as withDevicePairingMutationAdmission, O as readPairedDevicePairingRecordsFromDatabase, P as resolveDevicePairingStoreRevision, l as resolveNodePairingState } from "./device-pairing-identity-D10qDl39.mjs"; //#region src/infra/device-pairing-binding.ts function prepareDevicePairingBinding(deviceId, device) { const state = resolveNodePairingState(device); return { deviceId, binding: state ? { identity: state.identity.key, ...state.generation ? { generation: state.generation.key } : {} } : null }; } //#endregion //#region src/infra/device-pairing-dispatch.worker.ts function devicePairingMutation(operation, { publishPairing = true } = {}) { return (input, { open }) => { const database = open(); return runOpenClawStateWriteTransaction(() => withDevicePairingStoreDatabase(database, () => withDevicePairingMutationAdmission(() => { const before = publishPairing ? readPairedDevicePairingRecordsFromDatabase(database.db) : void 0; let tokensReplaced; let workerEnvironment; let nodeApproval; const result = operation(input, { database, recordTokenReplacement: (facts) => { tokensReplaced = facts; }, recordWorkerEnvironment: (facts) => { workerEnvironment = facts; }, recordNodeApproval: (facts) => { nodeApproval = facts; } }); if (!before) return result; const after = readPairedDevicePairingRecordsFromDatabase(database.db); const changed = []; for (const deviceId of /* @__PURE__ */ new Set([...Object.keys(before), ...Object.keys(after)])) if (JSON.stringify(before[deviceId]) !== JSON.stringify(after[deviceId])) changed.push(prepareDevicePairingBinding(deviceId, after[deviceId] ?? null)); deferSqliteWorkerCommitReceipt(database.db, { kind: "devicePairing", beforeRevision: resolveDevicePairingStoreRevision(before), revision: resolveDevicePairingStoreRevision(after), changed, ...tokensReplaced ? { tokensReplaced } : {}, ...workerEnvironment ? { workerEnvironment } : {}, ...nodeApproval ? { nodeApproval } : {} }); return result; })), { database, env: getSqliteWorkerStateContext().environment }); }; } //#endregion export { devicePairingMutation as t };