@abloatai/ablo 0.26.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/CHANGELOG.md +42 -2
  2. package/README.md +102 -86
  3. package/dist/BaseSyncedStore.d.ts +85 -88
  4. package/dist/BaseSyncedStore.js +134 -151
  5. package/dist/Database.d.ts +68 -69
  6. package/dist/Database.js +316 -135
  7. package/dist/{ObjectPool.d.ts → InstanceCache.d.ts} +10 -13
  8. package/dist/{ObjectPool.js → InstanceCache.js} +85 -83
  9. package/dist/LazyReferenceCollection.d.ts +11 -15
  10. package/dist/LazyReferenceCollection.js +12 -16
  11. package/dist/Model.d.ts +54 -52
  12. package/dist/Model.js +78 -62
  13. package/dist/ModelRegistry.d.ts +21 -19
  14. package/dist/ModelRegistry.js +23 -27
  15. package/dist/NetworkMonitor.d.ts +5 -6
  16. package/dist/NetworkMonitor.js +5 -6
  17. package/dist/SyncClient.d.ts +122 -118
  18. package/dist/SyncClient.js +541 -245
  19. package/dist/adapters/alwaysOnline.d.ts +6 -8
  20. package/dist/adapters/alwaysOnline.js +6 -8
  21. package/dist/adapters/inMemoryStorage.d.ts +10 -9
  22. package/dist/adapters/inMemoryStorage.js +21 -9
  23. package/dist/agent/Agent.d.ts +27 -32
  24. package/dist/agent/Agent.js +18 -19
  25. package/dist/agent/index.d.ts +4 -4
  26. package/dist/agent/index.js +5 -5
  27. package/dist/agent/session.d.ts +47 -44
  28. package/dist/agent/session.js +37 -48
  29. package/dist/agent/types.d.ts +26 -31
  30. package/dist/agent/types.js +6 -7
  31. package/dist/ai-sdk/coordinatedTool.d.ts +108 -0
  32. package/dist/ai-sdk/{coordinated-tool.js → coordinatedTool.js} +44 -38
  33. package/dist/ai-sdk/coordinationContext.d.ts +46 -0
  34. package/dist/ai-sdk/{coordination-context.js → coordinationContext.js} +26 -33
  35. package/dist/ai-sdk/index.d.ts +25 -22
  36. package/dist/ai-sdk/index.js +25 -22
  37. package/dist/ai-sdk/wrap.d.ts +6 -7
  38. package/dist/ai-sdk/wrap.js +1 -1
  39. package/dist/auth/credentialPolicy.d.ts +69 -74
  40. package/dist/auth/credentialPolicy.js +51 -56
  41. package/dist/auth/credentialSource.d.ts +6 -5
  42. package/dist/auth/credentialSource.js +9 -10
  43. package/dist/auth/index.d.ts +59 -58
  44. package/dist/auth/index.js +31 -37
  45. package/dist/auth/schemas.d.ts +5 -4
  46. package/dist/auth/schemas.js +5 -4
  47. package/dist/batching/index.d.ts +19 -21
  48. package/dist/batching/index.js +14 -17
  49. package/dist/cli.cjs +173 -121
  50. package/dist/client/Ablo.d.ts +97 -74
  51. package/dist/client/Ablo.js +129 -163
  52. package/dist/client/ApiClient.d.ts +30 -19
  53. package/dist/client/ApiClient.js +442 -81
  54. package/dist/client/auth.d.ts +47 -47
  55. package/dist/client/auth.js +108 -117
  56. package/dist/client/claimHeartbeatLoop.d.ts +50 -0
  57. package/dist/client/claimHeartbeatLoop.js +88 -0
  58. package/dist/client/consoleLogger.d.ts +5 -6
  59. package/dist/client/consoleLogger.js +5 -6
  60. package/dist/client/createInternalComponents.d.ts +16 -17
  61. package/dist/client/createInternalComponents.js +26 -31
  62. package/dist/client/createModelProxy.d.ts +130 -120
  63. package/dist/client/createModelProxy.js +152 -122
  64. package/dist/client/credentialEndpoint.d.ts +40 -42
  65. package/dist/client/credentialEndpoint.js +35 -36
  66. package/dist/client/functionalUpdate.d.ts +29 -27
  67. package/dist/client/functionalUpdate.js +21 -21
  68. package/dist/client/hostedEndpoints.d.ts +9 -12
  69. package/dist/client/hostedEndpoints.js +9 -12
  70. package/dist/client/httpClient.d.ts +59 -53
  71. package/dist/client/httpClient.js +29 -31
  72. package/dist/client/identity.d.ts +15 -20
  73. package/dist/client/identity.js +47 -58
  74. package/dist/client/modelRegistration.d.ts +5 -9
  75. package/dist/client/modelRegistration.js +78 -87
  76. package/dist/client/options.d.ts +157 -157
  77. package/dist/client/options.js +3 -7
  78. package/dist/client/registerDataSource.d.ts +9 -9
  79. package/dist/client/registerDataSource.js +15 -16
  80. package/dist/client/resourceTypes.d.ts +64 -75
  81. package/dist/client/resourceTypes.js +4 -10
  82. package/dist/client/schemaConfig.d.ts +31 -43
  83. package/dist/client/schemaConfig.js +38 -50
  84. package/dist/client/sessionMint.d.ts +16 -12
  85. package/dist/client/sessionMint.js +26 -31
  86. package/dist/client/validateAbloOptions.d.ts +12 -14
  87. package/dist/client/validateAbloOptions.js +8 -9
  88. package/dist/client/writeOptionsSchema.d.ts +18 -16
  89. package/dist/client/writeOptionsSchema.js +23 -20
  90. package/dist/client/wsMutationExecutor.d.ts +16 -20
  91. package/dist/client/wsMutationExecutor.js +18 -23
  92. package/dist/commit/contract.d.ts +493 -0
  93. package/dist/commit/contract.js +187 -0
  94. package/dist/commit/index.d.ts +6 -0
  95. package/dist/commit/index.js +5 -0
  96. package/dist/context.d.ts +6 -4
  97. package/dist/context.js +6 -4
  98. package/dist/coordination/index.d.ts +10 -8
  99. package/dist/coordination/index.js +14 -12
  100. package/dist/coordination/schema.d.ts +176 -128
  101. package/dist/coordination/schema.js +197 -133
  102. package/dist/coordination/trace.d.ts +9 -10
  103. package/dist/coordination/trace.js +13 -14
  104. package/dist/core/DatabaseManager.d.ts +5 -7
  105. package/dist/core/DatabaseManager.js +15 -19
  106. package/dist/core/QueryProcessor.d.ts +7 -9
  107. package/dist/core/QueryProcessor.js +22 -28
  108. package/dist/core/QueryView.d.ts +8 -8
  109. package/dist/core/QueryView.js +2 -2
  110. package/dist/core/StoreManager.d.ts +14 -14
  111. package/dist/core/StoreManager.js +33 -24
  112. package/dist/core/ViewRegistry.d.ts +5 -5
  113. package/dist/core/ViewRegistry.js +4 -4
  114. package/dist/core/index.d.ts +17 -12
  115. package/dist/core/index.js +32 -26
  116. package/dist/core/openIDBWithTimeout.d.ts +38 -36
  117. package/dist/core/openIDBWithTimeout.js +42 -43
  118. package/dist/core/queryUtils.d.ts +45 -0
  119. package/dist/core/queryUtils.js +69 -0
  120. package/dist/core/storeContract.d.ts +63 -61
  121. package/dist/core/storeContract.js +8 -12
  122. package/dist/environment.d.ts +28 -0
  123. package/dist/environment.js +21 -0
  124. package/dist/errorCodes.d.ts +107 -99
  125. package/dist/errorCodes.js +137 -134
  126. package/dist/errors.d.ts +160 -166
  127. package/dist/errors.js +155 -158
  128. package/dist/index.d.ts +36 -27
  129. package/dist/index.js +91 -86
  130. package/dist/interfaces/index.d.ts +102 -113
  131. package/dist/interfaces/index.js +5 -4
  132. package/dist/keys/index.d.ts +27 -29
  133. package/dist/keys/index.js +41 -40
  134. package/dist/mutators/RecordingTransaction.d.ts +16 -16
  135. package/dist/mutators/RecordingTransaction.js +31 -37
  136. package/dist/mutators/Transaction.d.ts +18 -26
  137. package/dist/mutators/Transaction.js +14 -20
  138. package/dist/mutators/UndoManager.d.ts +124 -131
  139. package/dist/mutators/UndoManager.js +177 -156
  140. package/dist/mutators/defineMutators.d.ts +23 -34
  141. package/dist/mutators/defineMutators.js +14 -20
  142. package/dist/mutators/inverseOp.d.ts +12 -15
  143. package/dist/mutators/inverseOp.js +12 -15
  144. package/dist/mutators/mutateActions.d.ts +10 -9
  145. package/dist/mutators/mutateActions.js +1 -1
  146. package/dist/mutators/readerActions.d.ts +9 -8
  147. package/dist/mutators/readerActions.js +2 -2
  148. package/dist/mutators/undoApply.d.ts +31 -27
  149. package/dist/mutators/undoApply.js +26 -24
  150. package/dist/policy/index.d.ts +5 -3
  151. package/dist/policy/index.js +5 -3
  152. package/dist/policy/types.d.ts +104 -100
  153. package/dist/policy/types.js +67 -66
  154. package/dist/query/client.d.ts +28 -23
  155. package/dist/query/client.js +45 -43
  156. package/dist/query/types.d.ts +37 -60
  157. package/dist/query/types.js +13 -33
  158. package/dist/react/AbloProvider.d.ts +1 -1
  159. package/dist/react/AbloProvider.js +2 -2
  160. package/dist/react/context.d.ts +25 -28
  161. package/dist/react/context.js +9 -10
  162. package/dist/react/index.d.ts +41 -42
  163. package/dist/react/index.js +37 -38
  164. package/dist/react/internalContext.d.ts +17 -19
  165. package/dist/react/useAblo.d.ts +28 -25
  166. package/dist/react/useAblo.js +41 -17
  167. package/dist/react/useCurrentUserId.d.ts +8 -7
  168. package/dist/react/useCurrentUserId.js +8 -7
  169. package/dist/react/useErrorListener.d.ts +7 -7
  170. package/dist/react/useErrorListener.js +10 -11
  171. package/dist/react/useMutationFailureListener.d.ts +8 -8
  172. package/dist/react/useMutationFailureListener.js +8 -8
  173. package/dist/react/useMutators.d.ts +11 -11
  174. package/dist/react/useMutators.js +3 -3
  175. package/dist/react/useReactive.js +2 -2
  176. package/dist/react/useSyncStatus.d.ts +4 -6
  177. package/dist/react/useUndoScope.d.ts +7 -9
  178. package/dist/react/useUndoScope.js +1 -1
  179. package/dist/schema/coordination.d.ts +21 -25
  180. package/dist/schema/coordination.js +21 -25
  181. package/dist/schema/ddl.d.ts +43 -39
  182. package/dist/schema/ddl.js +75 -68
  183. package/dist/schema/ddlLock.d.ts +20 -24
  184. package/dist/schema/ddlLock.js +18 -23
  185. package/dist/schema/diff.d.ts +99 -61
  186. package/dist/schema/diff.js +43 -34
  187. package/dist/schema/field.d.ts +37 -42
  188. package/dist/schema/field.js +35 -48
  189. package/dist/schema/generate.d.ts +12 -12
  190. package/dist/schema/generate.js +12 -12
  191. package/dist/schema/index.d.ts +3 -3
  192. package/dist/schema/index.js +21 -23
  193. package/dist/schema/model.d.ts +118 -143
  194. package/dist/schema/model.js +22 -33
  195. package/dist/schema/openapi.d.ts +10 -9
  196. package/dist/schema/openapi.js +5 -3
  197. package/dist/schema/queries.d.ts +29 -31
  198. package/dist/schema/queries.js +23 -25
  199. package/dist/schema/relation.d.ts +89 -99
  200. package/dist/schema/relation.js +13 -13
  201. package/dist/schema/residency.d.ts +16 -13
  202. package/dist/schema/residency.js +16 -13
  203. package/dist/schema/roles.d.ts +36 -43
  204. package/dist/schema/roles.js +31 -37
  205. package/dist/schema/schema.d.ts +64 -43
  206. package/dist/schema/schema.js +31 -32
  207. package/dist/schema/select.d.ts +13 -13
  208. package/dist/schema/select.js +13 -13
  209. package/dist/schema/serialize.d.ts +28 -31
  210. package/dist/schema/serialize.js +27 -31
  211. package/dist/schema/sugar.d.ts +17 -32
  212. package/dist/schema/sugar.js +14 -29
  213. package/dist/schema/{sync-delta-row.d.ts → syncDeltaRow.d.ts} +26 -49
  214. package/dist/schema/syncDeltaRow.js +89 -0
  215. package/dist/schema/tenancy.d.ts +44 -46
  216. package/dist/schema/tenancy.js +46 -48
  217. package/dist/server/adapter.d.ts +58 -58
  218. package/dist/server/adapter.js +13 -14
  219. package/dist/server/commit.d.ts +60 -64
  220. package/dist/server/index.d.ts +9 -10
  221. package/dist/server/index.js +1 -1
  222. package/dist/server/readConfig.d.ts +70 -0
  223. package/dist/server/readConfig.js +8 -0
  224. package/dist/server/storageMode.d.ts +23 -0
  225. package/dist/server/storageMode.js +17 -0
  226. package/dist/source/adapter.d.ts +30 -25
  227. package/dist/source/adapter.js +10 -10
  228. package/dist/source/adapters/drizzle.d.ts +28 -23
  229. package/dist/source/adapters/drizzle.js +30 -25
  230. package/dist/source/adapters/kysely.d.ts +27 -25
  231. package/dist/source/adapters/kysely.js +24 -23
  232. package/dist/source/adapters/memory.d.ts +8 -7
  233. package/dist/source/adapters/memory.js +9 -8
  234. package/dist/source/adapters/prisma.d.ts +13 -12
  235. package/dist/source/adapters/prisma.js +22 -25
  236. package/dist/source/conformance.d.ts +18 -11
  237. package/dist/source/conformance.js +17 -11
  238. package/dist/source/connector.d.ts +31 -32
  239. package/dist/source/connector.js +28 -28
  240. package/dist/source/connectorProtocol.d.ts +160 -0
  241. package/dist/source/connectorProtocol.js +162 -0
  242. package/dist/source/contract.d.ts +26 -27
  243. package/dist/source/contract.js +28 -29
  244. package/dist/source/factory.d.ts +46 -58
  245. package/dist/source/factory.js +22 -27
  246. package/dist/source/index.d.ts +7 -9
  247. package/dist/source/index.js +12 -14
  248. package/dist/source/migrations.d.ts +9 -9
  249. package/dist/source/migrations.js +9 -9
  250. package/dist/source/next.d.ts +9 -10
  251. package/dist/source/next.js +6 -7
  252. package/dist/source/pushQueue.d.ts +69 -47
  253. package/dist/source/pushQueue.js +32 -28
  254. package/dist/source/signing.d.ts +46 -17
  255. package/dist/source/signing.js +28 -11
  256. package/dist/source/types.d.ts +121 -104
  257. package/dist/source/types.js +13 -14
  258. package/dist/stores/ObjectStore.d.ts +24 -12
  259. package/dist/stores/ObjectStore.js +38 -16
  260. package/dist/stores/ObjectStoreContract.d.ts +14 -15
  261. package/dist/stores/SyncActionStore.d.ts +7 -11
  262. package/dist/stores/SyncActionStore.js +13 -17
  263. package/dist/surface.d.ts +28 -21
  264. package/dist/surface.js +29 -20
  265. package/dist/sync/{BootstrapHelper.d.ts → BootstrapFetcher.d.ts} +36 -42
  266. package/dist/sync/{BootstrapHelper.js → BootstrapFetcher.js} +76 -76
  267. package/dist/sync/ConnectionManager.d.ts +39 -50
  268. package/dist/sync/ConnectionManager.js +55 -66
  269. package/dist/sync/NetworkProbe.d.ts +24 -29
  270. package/dist/sync/NetworkProbe.js +63 -69
  271. package/dist/sync/{HydrationCoordinator.d.ts → OnDemandLoader.d.ts} +42 -41
  272. package/dist/sync/{HydrationCoordinator.js → OnDemandLoader.js} +59 -54
  273. package/dist/sync/{AreaOfInterestManager.d.ts → SubscriptionManager.d.ts} +43 -57
  274. package/dist/sync/{AreaOfInterestManager.js → SubscriptionManager.js} +43 -51
  275. package/dist/sync/SyncWebSocket.d.ts +141 -166
  276. package/dist/sync/SyncWebSocket.js +191 -223
  277. package/dist/sync/awaitClaimGrant.d.ts +18 -18
  278. package/dist/sync/awaitClaimGrant.js +11 -11
  279. package/dist/sync/bootstrapApply.d.ts +34 -24
  280. package/dist/sync/bootstrapApply.js +27 -19
  281. package/dist/sync/commitFrames.d.ts +21 -20
  282. package/dist/sync/commitFrames.js +18 -18
  283. package/dist/sync/createClaimStream.d.ts +23 -22
  284. package/dist/sync/createClaimStream.js +105 -23
  285. package/dist/sync/createPresenceStream.d.ts +19 -18
  286. package/dist/sync/createPresenceStream.js +25 -26
  287. package/dist/sync/createSnapshot.d.ts +12 -14
  288. package/dist/sync/createSnapshot.js +20 -26
  289. package/dist/sync/credentialLifecycle.d.ts +104 -104
  290. package/dist/sync/credentialLifecycle.js +140 -147
  291. package/dist/sync/deltaPipeline.d.ts +36 -34
  292. package/dist/sync/deltaPipeline.js +64 -65
  293. package/dist/sync/groupChange.d.ts +63 -61
  294. package/dist/sync/groupChange.js +74 -78
  295. package/dist/sync/heartbeat.d.ts +34 -33
  296. package/dist/sync/heartbeat.js +31 -31
  297. package/dist/sync/participants.d.ts +19 -19
  298. package/dist/sync/persistedPrefix.d.ts +12 -0
  299. package/dist/sync/persistedPrefix.js +22 -0
  300. package/dist/sync/schemas.d.ts +3 -2
  301. package/dist/sync/schemas.js +14 -10
  302. package/dist/sync/syncCursor.d.ts +17 -21
  303. package/dist/sync/syncCursor.js +17 -21
  304. package/dist/sync/syncPlan.d.ts +28 -36
  305. package/dist/sync/syncPlan.js +18 -19
  306. package/dist/sync/syncPosition.d.ts +54 -49
  307. package/dist/sync/syncPosition.js +57 -52
  308. package/dist/sync/wsFrameHandlers.d.ts +35 -36
  309. package/dist/sync/wsFrameHandlers.js +63 -67
  310. package/dist/testing/fixtures/bootstrap.d.ts +12 -6
  311. package/dist/testing/fixtures/bootstrap.js +12 -6
  312. package/dist/testing/fixtures/deltas.d.ts +30 -33
  313. package/dist/testing/fixtures/deltas.js +30 -33
  314. package/dist/testing/fixtures/models.d.ts +11 -10
  315. package/dist/testing/fixtures/models.js +11 -10
  316. package/dist/testing/helpers/{react-wrapper.d.ts → reactWrapper.d.ts} +13 -10
  317. package/dist/testing/helpers/{react-wrapper.js → reactWrapper.js} +15 -12
  318. package/dist/testing/helpers/{sync-engine-harness.d.ts → syncEngineHarness.d.ts} +17 -15
  319. package/dist/testing/helpers/{sync-engine-harness.js → syncEngineHarness.js} +12 -10
  320. package/dist/testing/helpers/wait.d.ts +13 -8
  321. package/dist/testing/helpers/wait.js +13 -8
  322. package/dist/testing/index.d.ts +5 -3
  323. package/dist/testing/index.js +3 -2
  324. package/dist/testing/mocks/FakeDatabase.d.ts +18 -0
  325. package/dist/testing/mocks/FakeDatabase.js +10 -0
  326. package/dist/testing/mocks/MockMutationExecutor.d.ts +18 -17
  327. package/dist/testing/mocks/MockMutationExecutor.js +15 -14
  328. package/dist/testing/mocks/MockNetworkMonitor.d.ts +8 -8
  329. package/dist/testing/mocks/MockNetworkMonitor.js +8 -8
  330. package/dist/testing/mocks/MockSyncContext.d.ts +20 -17
  331. package/dist/testing/mocks/MockSyncContext.js +15 -13
  332. package/dist/testing/mocks/MockSyncStore.d.ts +10 -10
  333. package/dist/testing/mocks/MockSyncStore.js +11 -11
  334. package/dist/testing/mocks/MockWebSocket.d.ts +28 -23
  335. package/dist/testing/mocks/MockWebSocket.js +22 -21
  336. package/dist/transactions/TransactionQueue.d.ts +244 -181
  337. package/dist/transactions/TransactionQueue.js +929 -423
  338. package/dist/transactions/TransactionStore.d.ts +6 -4
  339. package/dist/transactions/TransactionStore.js +6 -4
  340. package/dist/transactions/UnconfirmedWrites.d.ts +82 -0
  341. package/dist/transactions/UnconfirmedWrites.js +104 -0
  342. package/dist/transactions/coalesceRules.d.ts +41 -17
  343. package/dist/transactions/coalesceRules.js +40 -17
  344. package/dist/transactions/commitEnvelope.d.ts +132 -0
  345. package/dist/transactions/commitEnvelope.js +139 -0
  346. package/dist/transactions/commitOutboxStore.d.ts +32 -0
  347. package/dist/transactions/commitOutboxStore.js +26 -0
  348. package/dist/transactions/commitPayload.d.ts +63 -52
  349. package/dist/transactions/commitPayload.js +54 -57
  350. package/dist/transactions/deltaConfirmation.d.ts +20 -22
  351. package/dist/transactions/deltaConfirmation.js +37 -45
  352. package/dist/transactions/httpCommitEnvelope.d.ts +43 -0
  353. package/dist/transactions/httpCommitEnvelope.js +179 -0
  354. package/dist/transactions/optimisticApply.d.ts +49 -0
  355. package/dist/transactions/optimisticApply.js +65 -0
  356. package/dist/transactions/replayValidation.d.ts +182 -0
  357. package/dist/transactions/replayValidation.js +156 -0
  358. package/dist/types/global.d.ts +46 -41
  359. package/dist/types/global.js +20 -19
  360. package/dist/types/index.d.ts +71 -77
  361. package/dist/types/index.js +22 -22
  362. package/dist/types/modelData.d.ts +6 -8
  363. package/dist/types/modelData.js +5 -7
  364. package/dist/types/participant.d.ts +10 -11
  365. package/dist/types/participant.js +6 -8
  366. package/dist/types/streams.d.ts +208 -195
  367. package/dist/types/streams.js +7 -7
  368. package/dist/utils/asyncIterator.d.ts +25 -32
  369. package/dist/utils/asyncIterator.js +25 -32
  370. package/dist/utils/duration.d.ts +12 -15
  371. package/dist/utils/duration.js +12 -15
  372. package/dist/utils/mobxSetup.d.ts +53 -0
  373. package/dist/utils/{mobx-setup.js → mobxSetup.js} +42 -98
  374. package/dist/webhooks/events.d.ts +21 -16
  375. package/dist/webhooks/events.js +10 -8
  376. package/dist/webhooks/index.d.ts +5 -7
  377. package/dist/webhooks/index.js +5 -7
  378. package/dist/wire/bootstrapReason.d.ts +9 -0
  379. package/dist/wire/bootstrapReason.js +8 -0
  380. package/dist/{schema/sync-delta-wire.d.ts → wire/delta.d.ts} +58 -41
  381. package/dist/wire/delta.js +114 -0
  382. package/dist/wire/errorEnvelope.d.ts +30 -31
  383. package/dist/wire/errorEnvelope.js +34 -40
  384. package/dist/wire/frames.d.ts +315 -86
  385. package/dist/wire/frames.js +47 -33
  386. package/dist/wire/index.d.ts +18 -14
  387. package/dist/wire/index.js +32 -27
  388. package/dist/wire/listEnvelope.d.ts +16 -23
  389. package/dist/wire/listEnvelope.js +7 -6
  390. package/dist/wire/protocol.d.ts +25 -32
  391. package/dist/wire/protocol.js +25 -32
  392. package/dist/wire/protocolVersion.d.ts +44 -40
  393. package/dist/wire/protocolVersion.js +44 -40
  394. package/docs/api.md +10 -10
  395. package/docs/coordination.md +59 -0
  396. package/docs/mcp.md +1 -1
  397. package/package.json +17 -11
  398. package/dist/ai-sdk/coordinated-tool.d.ts +0 -101
  399. package/dist/ai-sdk/coordination-context.d.ts +0 -52
  400. package/dist/core/query-utils.d.ts +0 -34
  401. package/dist/core/query-utils.js +0 -59
  402. package/dist/schema/sync-delta-row.js +0 -103
  403. package/dist/schema/sync-delta-wire.js +0 -102
  404. package/dist/server/read-config.d.ts +0 -67
  405. package/dist/server/read-config.js +0 -8
  406. package/dist/server/storage-mode.d.ts +0 -8
  407. package/dist/server/storage-mode.js +0 -28
  408. package/dist/source/connector-protocol.d.ts +0 -159
  409. package/dist/source/connector-protocol.js +0 -161
  410. package/dist/transactions/OptimisticEchoTracker.d.ts +0 -82
  411. package/dist/transactions/OptimisticEchoTracker.js +0 -104
  412. package/dist/transactions/mutation-error-handler.d.ts +0 -5
  413. package/dist/transactions/mutation-error-handler.js +0 -39
  414. package/dist/transactions/optimistic.d.ts +0 -24
  415. package/dist/transactions/optimistic.js +0 -45
  416. package/dist/transactions/persistedReplay.d.ts +0 -93
  417. package/dist/transactions/persistedReplay.js +0 -105
  418. package/dist/utils/mobx-setup.d.ts +0 -42
@@ -1,21 +1,17 @@
1
1
  /**
2
- * UndoManager per-scope history of reversible mutations.
2
+ * Keeps a per-scope history of reversible changes so a surface can offer undo
3
+ * and redo. Each mutator invocation records an ordered list of inverse
4
+ * operations; `undo()` pops the most recent group and replays those inverses
5
+ * without recording them, then moves the entry onto the redo stack.
3
6
  *
4
- * Each mutator invocation records an ordered list of inverse operations.
5
- * On `undo()` we pop the last group and apply the inverses as a non-recorded
6
- * transaction (so the inverse itself doesn't push to the redo stack; we do
7
- * that explicitly below).
7
+ * History is divided into named scopes, one per surface — a deck editor, a
8
+ * spreadsheet, and so on reached through {@link UndoManager.getScope}. Undo in
9
+ * one surface never affects another.
8
10
  *
9
- * Scopes: every consumer (deck editor, spreadsheet, etc.) gets a named scope
10
- * via `getScope(name)`. Cmd+Z in one surface never affects another.
11
- *
12
- * V1 limitations:
13
- * - No persistence across sessions (in-memory stack).
14
- * - No collaborative awareness — undoing after a teammate edited the same
15
- * row produces a "last writer wins" outcome, not a true merge.
16
- * - Server-side mutation rejection after optimistic apply does NOT
17
- * automatically invalidate the undo stack. Consumers should `clear()`
18
- * the scope on sync error if they want strict correctness.
11
+ * Two things to know about its reach. History lives in memory and does not
12
+ * persist across sessions. And if the server rejects a change after it was
13
+ * applied optimistically, the undo stack is not invalidated automatically; call
14
+ * {@link UndoScope.clear} on a sync error if you need strict correctness.
19
15
  */
20
16
  import type { Schema } from '../schema/schema.js';
21
17
  import type { SyncStoreContract } from '../react/context.js';
@@ -24,31 +20,31 @@ import { type UndoConflictPolicy } from './undoApply.js';
24
20
  export type { InverseOp, UndoEntry };
25
21
  export type { UndoConflictPolicy } from './undoApply.js';
26
22
  export interface UndoScopeOptions {
27
- /** Max number of undo entries. Older entries drop off the bottom. Default: 100. */
23
+ /** The maximum number of undo entries to keep. Older entries drop off the
24
+ * bottom. Defaults to 100. */
28
25
  maxHistory?: number;
29
26
  /**
30
- * How undo/redo treats a field a collaborator changed after your op.
31
- * Default `skip-stale` — your undo reverts your change only where it still
32
- * stands, never clobbering a concurrent collaborator edit (per-user undo).
33
- * `last-writer-wins` restores the legacy clobbering behavior. See
27
+ * How undo and redo treat a field a collaborator changed after your own
28
+ * change. The default, `skip-stale`, reverts your change only where it still
29
+ * stands, so undo never overwrites a concurrent edit — undo is per user.
30
+ * `last-writer-wins` restores the older behavior of overwriting regardless. See
34
31
  * {@link UndoConflictPolicy}.
35
32
  */
36
33
  conflictPolicy?: UndoConflictPolicy;
37
34
  /**
38
- * Which models this surface owns. The scope only records mutations whose
39
- * resolved schema key passes this predicate, so a spreadsheet edit never
40
- * lands on the deck editor's stack (the equivalent of Yjs scoping by
41
- * shared-type set). Omit to track every model fine for a single-surface
42
- * app, wrong when two surfaces with independent Cmd+Z share one store.
35
+ * A predicate selecting which models this surface owns. The scope records only
36
+ * mutations whose resolved schema key passes it, so, for example, a spreadsheet
37
+ * edit never lands on a deck editor's undo stack. Omit it to track every model,
38
+ * which is fine for a single-surface app but wrong when two surfaces with
39
+ * independent undo share one store.
43
40
  */
44
41
  tracksModel?: (schemaKey: string) => boolean;
45
42
  /**
46
- * Opt into recording undo entries by OBSERVING the local-mutation stream
47
- * (the best-practice model: undo listens where all local writes converge
48
- * Yjs/Liveblocks). When false (default), the scope records nothing on its
49
- * own and relies on legacy manual `record()` calls. Transitional: a scope
50
- * must not mix the two, or shared writes double-count. Flip a surface to
51
- * `true` only when its manual-record consumers are removed in the same step.
43
+ * When `true`, the scope records undo entries by observing the stream of local
44
+ * mutations, so every write through the store is captured automatically. When
45
+ * `false`, the default, the scope records nothing on its own and relies on
46
+ * explicit {@link UndoScope.record} calls. Use one mode or the other for a given
47
+ * surface, not both, or shared writes are counted twice.
52
48
  */
53
49
  recordFromStream?: boolean;
54
50
  }
@@ -61,36 +57,34 @@ export declare class UndoScope<S extends Schema> {
61
57
  private readonly maxHistory;
62
58
  private readonly conflictPolicy;
63
59
  /**
64
- * Observers notified after each successful {@link record}. These see FORWARD
65
- * user actions only `undo()`/`redo()` replays move entries between stacks
66
- * without calling `record()`, so a listener never observes a reversal. This
67
- * is a deliberately domain-agnostic seam: analytics, gamification, and audit
68
- * can tap the committed-mutation stream without the scope knowing about them.
69
- * A throwing listener is isolated (see {@link emitRecord}) so a faulty
70
- * observer can never wedge the editor's recording path.
60
+ * Observers notified after each successful {@link UndoScope.record}. They see
61
+ * forward user actions only: undo and redo move entries between the stacks
62
+ * without calling `record`, so a listener never observes a reversal. It is a
63
+ * deliberately generic hook analytics or audit code can watch the stream of
64
+ * committed mutations without the scope knowing about it. A listener that throws
65
+ * is isolated so it cannot break recording.
71
66
  */
72
67
  private readonly recordListeners;
73
68
  /**
74
- * Observers notified after ANY stack change — record, undo, redo, or clear.
75
- * Distinct from {@link recordListeners} (forward actions only): this fires on
76
- * reversals too, so React consumers can keep `canUndo`/`canRedo` live. The
77
- * stream-recording path pushes entries WITHOUT a React render, so without this
78
- * a freshly-recorded entry leaves `canUndo` stale (snapshot from last render)
79
- * and a Cmd+Z handler gated on `canUndo !== false` silently no-ops.
69
+ * Observers notified after any stack change — record, undo, redo, or clear.
70
+ * Unlike {@link recordListeners}, which fires on forward actions only, this
71
+ * fires on reversals too, so a React consumer can keep `canUndo` and `canRedo`
72
+ * current. Because the stream-recording path adds entries without triggering a
73
+ * render, a component that read `canUndo` on its last render would otherwise go
74
+ * stale and a keyboard handler gated on it would quietly do nothing.
80
75
  */
81
76
  private readonly changeListeners;
82
77
  /**
83
- * Serialization tail. Recording, undo, and redo all chain off this single
84
- * promise so they run strictly in the order they were *invoked* never
85
- * interleaved. This is load-bearing for correctness, not just throughput:
86
- * - Ordering: callers fire writes un-awaited (`void mutations.x.update`).
87
- * Without serialization, an entry lands on the stack when its mutator
88
- * *resolves*, so a fast second write can record before a slow first one
89
- * undo replays in the wrong order.
90
- * - Snapshot integrity: every recording reads/clears the shared models'
91
- * `modifiedProperties` (the undo "before" baseline). Two recordings
92
- * interleaving on the same model corrupt each other's inverse snapshot.
93
- * Serializing the whole scope closes both holes with one mechanism.
78
+ * The serialization tail. Recording, undo, and redo all chain off this one
79
+ * promise, so they run strictly in the order they were invoked and never
80
+ * interleave. This matters for correctness, not just throughput, in two ways.
81
+ * Ordering: callers often fire writes without awaiting them, so without
82
+ * serialization an entry would land on the stack when its mutator resolves, and
83
+ * a fast second write could record before a slow first — replaying undo in the
84
+ * wrong order. Snapshot integrity: each recording reads and clears a model's
85
+ * modified-field markers, which form the undo baseline, so two recordings
86
+ * interleaving on the same model would corrupt each other's before-image.
87
+ * Serializing the whole scope closes both gaps at once.
94
88
  */
95
89
  private tail;
96
90
  /** Predicate selecting which models this surface records (see options). */
@@ -100,45 +94,45 @@ export declare class UndoScope<S extends Schema> {
100
94
  /** Unsubscribe from the local-mutation stream. */
101
95
  private readonly unsubscribe;
102
96
  /**
103
- * True while `undo()`/`redo()` replays ops. Replays write through the same
104
- * commit path, so they re-emit on the local-mutation stream; this flag tells
105
- * our own listener to ignore them (no echo) the engine equivalent of Yjs's
106
- * `trackedOrigins` exclusion / Liveblocks pausing history during undo.
97
+ * True while undo or redo is replaying operations. A replay writes through the
98
+ * normal commit path and therefore re-emits on the local-mutation stream; this
99
+ * flag tells the scope's own listener to ignore those writes so they are not
100
+ * recorded again.
107
101
  */
108
102
  private replaying;
109
- /** Ops collected during the current tick, flushed as ONE entry. */
103
+ /** Operations collected during the current tick, flushed together as one entry. */
110
104
  private batch;
111
105
  private flushScheduled;
112
106
  /**
113
- * Open grouping session (Liveblocks `history.pause()` / Yjs `stopCapturing`
114
- * analogue). While set, stream ops accumulate here ACROSS ticks instead of
115
- * flushing per-tick, so a multi-tick action (a drag, a whole streaming AI
116
- * response) collapses into ONE Cmd+Z. `endGroup()` flushes it.
107
+ * An open grouping session. While set, stream operations accumulate here across
108
+ * ticks instead of flushing each tick, so a multi-tick action a drag, or a
109
+ * whole streaming AI response collapses into a single undo step.
110
+ * {@link UndoScope.endGroup} flushes it.
117
111
  */
118
112
  private group;
119
113
  /**
120
- * ASYNC replay-echo suppression, keyed by `${modelKey}:${id}`.
114
+ * Suppression of a replay's asynchronous echo, keyed by `${modelKey}:${id}`.
121
115
  *
122
- * The synchronous {@link replaying} flag only catches echoes delivered INLINE
123
- * during `applyOps`. The real engine doesn't emit `transaction:created`
124
- * synchronously: `SyncClient` defers the commit behind `scheduleSync()` +
125
- * `await persistMutationQueue()` (an IndexedDB write), so a replayed write's
126
- * echo lands on the stream AFTER `undo()`/`redo()` has already reset
127
- * `replaying` and pushed the entry. That late echo would be recorded as a
128
- * NEW edit and `record()` clears the redo stack, so every undo silently
129
- * destroyed its own redo. We mark the (modelKey,id) of every op we're about
130
- * to replay here (synchronously, before the write), and consume one mark when
131
- * the matching mutation arrives — independent of WHEN it arrives. Entries
132
- * carry a TTL so a never-arriving echo (offline: the commit is skipped) can't
133
- * leak and wrongly suppress a much-later genuine edit to the same row.
116
+ * The synchronous {@link UndoScope.replaying} flag catches only echoes
117
+ * delivered inline while operations are applied. In practice the engine does not
118
+ * emit a replayed write's echo synchronously: the commit is deferred behind a
119
+ * local-store write, so the echo arrives on the stream after undo or redo has
120
+ * already reset `replaying` and pushed its entry. That late echo would be
121
+ * recorded as a new edit and recording clears the redo stack, so every undo
122
+ * would quietly destroy its own redo. To prevent that, the row of each operation
123
+ * about to be replayed is marked here synchronously, before the write, and one
124
+ * mark is consumed when the matching mutation arrives, whenever that is. Marks
125
+ * carry a time-to-live so an echo that never arrives — because the write was
126
+ * skipped while offline cannot linger and wrongly suppress a much later, real
127
+ * edit to the same row.
134
128
  */
135
129
  private readonly pendingReplayEchoes;
136
130
  constructor(schema: S, store: SyncStoreContract, organizationId: string, options?: UndoScopeOptions);
137
131
  /**
138
- * Open a grouping session: every stream-recorded op until {@link endGroup}
139
- * collapses into a single undo entry. Mirrors Liveblocks `history.pause()`
140
- * call on gesture start (pointerdown) or AI-response start. Idempotent-ish:
141
- * a second call closes the previous group first.
132
+ * Opens a grouping session: every stream-recorded operation until
133
+ * {@link UndoScope.endGroup} collapses into one undo entry. Call it at the start
134
+ * of a gesture, such as a pointer-down, or at the start of an AI response. A
135
+ * second call closes the previous group first.
142
136
  */
143
137
  beginGroup(label?: string): void;
144
138
  /** Close the grouping session and record the accumulated ops as one entry. */
@@ -146,25 +140,25 @@ export declare class UndoScope<S extends Schema> {
146
140
  /** Every `${modelKey}:${id}` a set of ops will touch (all op kinds). */
147
141
  private replayEchoKeys;
148
142
  /**
149
- * Arm async-echo suppression for the rows a replay is about to write. Called
150
- * synchronously, before `applyOps`, so the marks exist no matter how long the
151
- * engine takes to surface the echo on the stream. See {@link pendingReplayEchoes}.
143
+ * Arms echo suppression for the rows a replay is about to write. Called
144
+ * synchronously, before the writes, so the marks exist however long the engine
145
+ * takes to surface each echo on the stream. See {@link UndoScope.pendingReplayEchoes}.
152
146
  */
153
147
  private markReplayEchoes;
154
148
  /**
155
- * If `${schemaKey}:${modelId}` has an armed echo mark, consume one and report
156
- * that this mutation is our own replay echo (caller drops it). Prunes expired
157
- * marks opportunistically so a skipped/never-arriving echo can't leak.
149
+ * If `${schemaKey}:${modelId}` has an armed mark, consume one and report that
150
+ * this mutation is the scope's own replay echo, so the caller drops it. Expired
151
+ * marks are pruned along the way, so an echo that never arrives cannot linger.
158
152
  */
159
153
  private consumeReplayEcho;
160
154
  /** Resolve a stream mutation's registered name to its schema key, or null. */
161
155
  private resolveSchemaKey;
162
156
  /**
163
- * Stream listener the sole place entries are born. Skips replay echoes
164
- * and out-of-scope models, derives the forward+inverse op from the
165
- * mutation's `data`/`previousData`, and defers the stack push to a
166
- * per-tick flush so a burst of writes (e.g. align 5 layers) becomes ONE
167
- * undo step riding the same tick boundary the TransactionQueue batches on.
157
+ * The stream listener, and the only place stream-recorded entries originate. It
158
+ * skips replay echoes and out-of-scope models, derives the forward and inverse
159
+ * operations from the mutation's `data` and `previousData`, and defers the stack
160
+ * push to a per-tick flush, so a burst of writes aligning five layers at once,
161
+ * saybecomes a single undo step.
168
162
  */
169
163
  private onLocalMutation;
170
164
  private scheduleFlush;
@@ -178,62 +172,58 @@ export declare class UndoScope<S extends Schema> {
178
172
  */
179
173
  private enqueue;
180
174
  /**
181
- * Run a recording mutator exclusively on the scope's serialization chain.
182
- * Used by the legacy manual-record path (`useMutators` + `RecordingTransaction`)
183
- * so the snapshot write `record()` sequence is atomic relative to undo/
184
- * redo. The stream-recording path doesn't need this (it derives entries from
185
- * already-committed mutations); kept until all surfaces migrate off manual.
175
+ * Runs a recording mutator by itself on the scope's serialization chain, so its
176
+ * snapshot, write, and {@link UndoScope.record} happen atomically with respect to
177
+ * undo and redo. This is used by the explicit-record path; the stream-recording
178
+ * path does not need it, since it derives entries from already-committed
179
+ * mutations.
186
180
  */
187
181
  runRecorded<T>(work: () => Promise<T>): Promise<T>;
188
182
  /**
189
- * Record one entry onto the undo stack. Clears the redo stack. Fed by
190
- * {@link flushBatch}/{@link endGroup} from the local-mutation stream, and
191
- * still called directly by the legacy manual-record consumers
192
- * (`useMutators`, the AI mutation pipeline) until they migrate. Entries are
193
- * built internally (trusted), so the schema check is DEV-ONLY: it catches
194
- * recorder bugs in dev/test (rejecting a malformed op at ingestion, with its
195
- * path, instead of letting it crash later inside `applyOps`) without paying a
196
- * Zod parse on every user action in production. The real validation boundary
197
- * is `parseUndoEntry`, applied when entries are deserialized from persistence
198
- * (untrusted input). Best practice: validate at trust boundaries, type-check
199
- * internal calls.
183
+ * Records one entry onto the undo stack and clears the redo stack. It is fed
184
+ * both by the per-tick flush and grouping paths from the local-mutation stream
185
+ * and by direct callers using explicit recording. Entries are built internally
186
+ * and therefore trusted, so the schema check here runs only outside production:
187
+ * it catches recorder bugs early, rejecting a malformed operation at ingestion
188
+ * with a clear path rather than letting it fail later during replay, without
189
+ * paying a validation cost on every user action in production. The real
190
+ * validation boundary is {@link parseUndoEntry}, applied to entries loaded from
191
+ * persistence, which is untrusted input.
200
192
  */
201
193
  record(entry: UndoEntry): void;
202
194
  /**
203
- * Subscribe to every recorded mutation. Fires synchronously at the tail of
204
- * each {@link record} call, after the entry is on the undo stack. Returns an
205
- * unsubscribe function call it on teardown.
206
- *
207
- * Listeners receive the full {@link UndoEntry} (its `forwards` carry the
208
- * `{ kind, modelKey, data }` ops), so a consumer can derive what changed
209
- * (e.g. "a slideLayers row of type 'chart' was created") without re-querying.
195
+ * Subscribes to every recorded mutation. The listener fires synchronously at the
196
+ * end of each {@link UndoScope.record} call, once the entry is on the undo stack,
197
+ * and the returned function unsubscribes it. The listener receives the full
198
+ * {@link UndoEntry} — its `forwards` carry the `{ kind, modelKey, data }`
199
+ * operations so a consumer can tell what changed without querying again.
210
200
  */
211
201
  onRecord(listener: (entry: UndoEntry) => void): () => void;
212
202
  private emitRecord;
213
203
  /**
214
- * Subscribe to ANY stack change (record/undo/redo/clear). Used by
215
- * `useUndoScope` to re-render so `canUndo`/`canRedo` stay live across every
216
- * consumer not just the component that invoked undo/redo. Returns an
217
- * unsubscribe function.
204
+ * Subscribes to any stack change record, undo, redo, or clear. The React
205
+ * `useUndoScope` hook uses this to re-render so `canUndo` and `canRedo` stay
206
+ * current for every consumer, not only the component that invoked undo or redo.
207
+ * The returned function unsubscribes.
218
208
  */
219
209
  onChange(listener: () => void): () => void;
220
210
  private emitChange;
221
211
  canUndo(): boolean;
222
212
  canRedo(): boolean;
223
213
  /**
224
- * Pop the last mutator and apply its inverses. Pushes to redo.
225
- *
226
- * Under the default `skip-stale` policy the inverses are filtered against
227
- * live state first (paired with the entry's forwards = "what I set"), so a
228
- * field a collaborator changed after my op is left untouched undo reverts
229
- * my change only where it still stands.
214
+ * Pops the most recent entry, applies its inverse operations, and pushes it onto
215
+ * the redo stack. Under the default `skip-stale` policy the inverses are first
216
+ * filtered against the current state paired with the entry's forwards, which
217
+ * record what this change set so a field a collaborator changed afterward is
218
+ * left untouched, and undo reverts the change only where it still stands.
230
219
  */
231
220
  undo(): Promise<void>;
232
221
  /**
233
- * Pop the last undone entry and re-apply the forward ops. Pushes to undo.
234
- * Symmetric to {@link undo}: forwards are filtered against live state
235
- * (paired with the entry's inverses = "what undo restored"), so redo
236
- * re-asserts my change only where the undone value still stands.
222
+ * Pops the most recently undone entry, re-applies its forward operations, and
223
+ * pushes it onto the undo stack. It mirrors {@link UndoScope.undo}: the forwards
224
+ * are filtered against the current state — paired with the entry's inverses,
225
+ * which record what undo restored — so redo re-asserts the change only where the
226
+ * undone value still stands.
237
227
  */
238
228
  redo(): Promise<void>;
239
229
  /** Drop all history. Use after bootstrap / sync group change / sync error. */
@@ -251,14 +241,17 @@ export declare class UndoScope<S extends Schema> {
251
241
  dispose(): void;
252
242
  }
253
243
  /**
254
- * Central registry of named undo scopes. One per-app instance, created once
255
- * during engine setup. Mutator invocations find their scope by name.
244
+ * The registry of named undo scopes. One instance is created per application
245
+ * during engine setup, and each surface finds its scope by name through
246
+ * {@link UndoManager.getScope}.
256
247
  */
257
248
  export declare class UndoManager<S extends Schema> {
258
249
  private readonly schema;
259
250
  private readonly store;
260
251
  private readonly organizationId;
261
252
  private readonly scopes;
253
+ /** The options each scope was constructed with, for the mismatch warning below. */
254
+ private readonly creationOptions;
262
255
  constructor(schema: S, store: SyncStoreContract, organizationId: string);
263
256
  getScope(name: string, options?: UndoScopeOptions): UndoScope<S>;
264
257
  clearAll(): void;