@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,27 +1,21 @@
1
1
  /**
2
- * defineMutators Zero-style custom mutator declaration.
2
+ * Declares a tree of named custom mutators grouped by model key. Each mutator is
3
+ * a plain async function that receives `{ tx, args }` and composes any number of
4
+ * `tx.mutations.*` and `tx.read.*` calls to carry out a named operation, such as
5
+ * `slides.createWithLayers`.
3
6
  *
4
- * Consumers declare a tree of named mutators grouped by model key. Each
5
- * mutator is a plain async function that receives `{ tx, args }`. The body
6
- * composes any number of `tx.mutate.*` / `tx.read.*` calls to implement a
7
- * named operation (e.g. `slides.createWithLayers`).
8
- *
9
- * This file is pure type scaffolding + a pass-through factory. The runtime
10
- * dispatcher lives in `./Transaction` (the `tx` object) and
11
- * `../react/useMutators` (the React-side invoker builder). Keeping those
12
- * concerns separate makes the types trivially inferable at the call site:
13
- * `defineMutators(schema, { ... })` returns the literal object the consumer
14
- * wrote, so `typeof mutators` carries every mutator's exact `args`/result
15
- * signature into `useMutators`.
7
+ * The function is purely a place for types to anchor and returns its input
8
+ * unchanged; the runtime that dispatches a mutator lives elsewhere the
9
+ * transaction object it receives and the React hook that invokes it. Because
10
+ * `defineMutators(schema, { ... })` returns the exact object you wrote,
11
+ * `typeof mutators` carries every mutator's precise `args` and result types
12
+ * through to wherever they are invoked.
16
13
  */
17
14
  /**
18
- * Identity function that forwards the mutators object while constraining its
19
- * shape against the schema. The `S` generic pins model keys; the `M` generic
20
- * is `const`-inferred so each mutator's literal signature survives.
21
- *
22
- * Pattern mirrors Zero's own `defineMutators` / `createBuilder` — there is
23
- * no runtime work to do here, it's purely a location for type inference to
24
- * anchor.
15
+ * Returns the mutators object unchanged while constraining its shape against the
16
+ * schema. The `S` generic pins the model keys, and the `M` generic is inferred as
17
+ * a `const`, so each mutator's literal signature survives. There is no runtime
18
+ * work here; the function exists purely as a place for type inference to anchor.
25
19
  */
26
20
  export function defineMutators(_schema, mutators) {
27
21
  return mutators;
@@ -1,21 +1,18 @@
1
1
  /**
2
- * inverseOp.ts — the reversible-operation model for the undo system,
3
- * expressed as Zod schemas.
2
+ * The reversible-operation model for the undo system, expressed as Zod schemas.
4
3
  *
5
- * Why schemas (not bare TS types):
6
- * - Single source of truth. The `InverseOp` / `UndoEntry` TypeScript types
7
- * are *derived* from these schemas (`z.infer`), so the wire shape and the
8
- * static type can't drift.
9
- * - A real validation boundary. Inverse ops are stored as plain JSON-shaped
10
- * records (model keys + row data) so the undo manager stays schema-agnostic
11
- * it replays them through a strongly-typed transaction it doesn't own.
12
- * That JSON boundary is exactly where a runtime check belongs, and is the
13
- * seam a future cross-session persistence layer (IndexedDB-backed history)
14
- * would deserialize through. `parseUndoEntry` is that gate.
4
+ * These schemas serve two roles. First, the {@link InverseOp} and
5
+ * {@link UndoEntry} TypeScript types are derived from them with `z.infer`, so
6
+ * the runtime shape and the static type stay in step. Second, they form a
7
+ * validation boundary: an inverse operation is stored as a plain JSON record
8
+ * (a model key plus row data) so the undo manager can replay it without knowing
9
+ * your schema. {@link parseUndoEntry} validates an untrusted value at that
10
+ * boundary for example, an entry restored from persisted history before it
11
+ * re-enters the replay path.
15
12
  *
16
- * The op kinds mirror the mutator surface 1:1 — single (`create`/`update`/
17
- * `delete`) and batch (`createMany`/`updateMany`/`deleteMany`) — so a recorded
18
- * entry is symmetric with what was originally invoked.
13
+ * The operation kinds match the mutator surface one for one — single
14
+ * (`create`, `update`, `delete`) and batch (`createMany`, `updateMany`,
15
+ * `deleteMany`) — so a recorded entry mirrors the call that produced it.
19
16
  */
20
17
  import { z } from 'zod';
21
18
  /**
@@ -1,21 +1,18 @@
1
1
  /**
2
- * inverseOp.ts — the reversible-operation model for the undo system,
3
- * expressed as Zod schemas.
2
+ * The reversible-operation model for the undo system, expressed as Zod schemas.
4
3
  *
5
- * Why schemas (not bare TS types):
6
- * - Single source of truth. The `InverseOp` / `UndoEntry` TypeScript types
7
- * are *derived* from these schemas (`z.infer`), so the wire shape and the
8
- * static type can't drift.
9
- * - A real validation boundary. Inverse ops are stored as plain JSON-shaped
10
- * records (model keys + row data) so the undo manager stays schema-agnostic
11
- * it replays them through a strongly-typed transaction it doesn't own.
12
- * That JSON boundary is exactly where a runtime check belongs, and is the
13
- * seam a future cross-session persistence layer (IndexedDB-backed history)
14
- * would deserialize through. `parseUndoEntry` is that gate.
4
+ * These schemas serve two roles. First, the {@link InverseOp} and
5
+ * {@link UndoEntry} TypeScript types are derived from them with `z.infer`, so
6
+ * the runtime shape and the static type stay in step. Second, they form a
7
+ * validation boundary: an inverse operation is stored as a plain JSON record
8
+ * (a model key plus row data) so the undo manager can replay it without knowing
9
+ * your schema. {@link parseUndoEntry} validates an untrusted value at that
10
+ * boundary for example, an entry restored from persisted history before it
11
+ * re-enters the replay path.
15
12
  *
16
- * The op kinds mirror the mutator surface 1:1 — single (`create`/`update`/
17
- * `delete`) and batch (`createMany`/`updateMany`/`deleteMany`) — so a recorded
18
- * entry is symmetric with what was originally invoked.
13
+ * The operation kinds match the mutator surface one for one — single
14
+ * (`create`, `update`, `delete`) and batch (`createMany`, `updateMany`,
15
+ * `deleteMany`) — so a recorded entry mirrors the call that produced it.
19
16
  */
20
17
  import { z } from 'zod';
21
18
  import { AbloValidationError } from '../errors.js';
@@ -1,15 +1,16 @@
1
1
  import type { Schema, InferModel, InferCreate } from '../schema/schema.js';
2
2
  import type { SyncStoreContract } from '../react/context.js';
3
3
  /**
4
- * `create` / `update` / `delete` are overloaded: pass one row or an array
5
- * (Drizzle/Prisma `values(rowOrRows)` shape). Every entry in an array call
6
- * lands in the same synchronous tick (`Promise.all`), so the microtask
7
- * coalescer in `TransactionQueue` collapses N pushes into one wire commit.
4
+ * The create, update, and delete actions for one model. Each action is
5
+ * overloaded: pass a single row to act on one entity, or an array to act on
6
+ * many within the same synchronous tick. An array call stages every entry
7
+ * together through `Promise.all`, so the microtask coalescer in
8
+ * `TransactionQueue` collapses the whole batch into one commit on the wire.
8
9
  *
9
- * This module is the React-free core of CRUD staging. The transaction system
10
- * (`Transaction` / `RecordingTransaction`) and `BaseSyncedStore` build on it;
11
- * there is no React hook here (the legacy `useMutate` hook was removed —
12
- * callers use `ablo.<model>.create/update/delete`).
10
+ * These are plain imperative actions with no React dependency. The transaction
11
+ * system (`Transaction` and `RecordingTransaction`) and `BaseSyncedStore` build
12
+ * on them, and application code reaches them through `ablo.<model>.create`,
13
+ * `ablo.<model>.update`, and `ablo.<model>.delete`.
13
14
  */
14
15
  type UpdatePatch<S extends Schema, K extends keyof S['models'] & string> = {
15
16
  id: string;
@@ -39,6 +40,6 @@ export interface MutateActions<S extends Schema, K extends keyof S['models'] & s
39
40
  /** Restore an archived entity by ID. */
40
41
  unarchive: (id: string) => Promise<void>;
41
42
  }
42
- /** Pure factory builds CRUD actions over a store for one model. React-free. */
43
+ /** Builds the create, update, and delete actions for one model over a store. */
43
44
  export declare function createMutateActions<S extends Schema, K extends keyof S['models'] & string>(schema: S, modelKey: K, store: SyncStoreContract, organizationId: string): MutateActions<S, K>;
44
45
  export {};
@@ -1,6 +1,6 @@
1
1
  import { Model, modelAsRow } from '../Model.js';
2
2
  import { AbloValidationError } from '../errors.js';
3
- /** Pure factory builds CRUD actions over a store for one model. React-free. */
3
+ /** Builds the create, update, and delete actions for one model over a store. */
4
4
  export function createMutateActions(schema, modelKey, store, organizationId) {
5
5
  const modelDef = schema.models[modelKey];
6
6
  const typename = modelDef?.typename ?? modelKey;
@@ -1,15 +1,16 @@
1
1
  import type { Schema, InferModel } from '../schema/schema.js';
2
2
  import type { SyncStoreContract } from '../react/context.js';
3
3
  /**
4
- * React-free imperative reads over a store: one-off `retrieve`/`list`/`count`
5
- * snapshots that do NOT subscribe to changes. Used by the transaction system
6
- * and `BaseSyncedStore`. For reactive reads in components use
7
- * `useAblo((ablo) => ablo.<model>.retrieve({ id }) / .list(opts))`.
4
+ * Imperative, non-reactive reads over a store for one model. The `retrieve`,
5
+ * `list`, and `count` actions each return a one-time snapshot and do not
6
+ * subscribe to later changes; the transaction system and `BaseSyncedStore`
7
+ * build on them. For reactive reads inside a component, read through `useAblo`,
8
+ * for example `useAblo((ablo) => ablo.<model>.list(options))`.
8
9
  */
9
10
  export interface ReaderFindOptions<T> {
10
- /** Equality filter uses FK index when the field is registered. */
11
+ /** Equality filter. Uses a foreign-key index when the field has one registered. */
11
12
  where?: Partial<T>;
12
- /** Predicate applied AFTER `where` filtering. */
13
+ /** A predicate applied after the `where` filter. */
13
14
  filter?: (entity: T) => boolean;
14
15
  /** Sort field. */
15
16
  orderBy?: keyof T & string;
@@ -21,12 +22,12 @@ export interface ReaderFindOptions<T> {
21
22
  offset?: number;
22
23
  }
23
24
  export interface ReaderActions<S extends Schema, K extends keyof S['models'] & string> {
24
- /** Get a single entity by id. Returns undefined if not in pool. */
25
+ /** Get a single entity by id, or `undefined` if it is not loaded in the store. */
25
26
  retrieve: (id: string) => InferModel<S, K> | undefined;
26
27
  /** Read a collection with optional filters. Snapshot — not reactive. */
27
28
  list: (options?: ReaderFindOptions<InferModel<S, K>>) => InferModel<S, K>[];
28
29
  /** Count entities matching the options. */
29
30
  count: (options?: ReaderFindOptions<InferModel<S, K>>) => number;
30
31
  }
31
- /** Pure factory — builds imperative read actions over a store for one model. */
32
+ /** Builds the read actions (`retrieve`, `list`, `count`) for one model over a store. */
32
33
  export declare function createReaderActions<S extends Schema, K extends keyof S['models'] & string>(schema: S, modelKey: K, store: SyncStoreContract): ReaderActions<S, K>;
@@ -1,9 +1,9 @@
1
- /** Pure factory — builds imperative read actions over a store for one model. */
1
+ /** Builds the read actions (`retrieve`, `list`, `count`) for one model over a store. */
2
2
  export function createReaderActions(schema, modelKey, store) {
3
3
  const modelDef = schema.models[modelKey];
4
4
  const typename = modelDef?.typename ?? modelKey;
5
5
  function read(options) {
6
- // FK index fast path: single-field `where` on a registered FK index O(1).
6
+ // Fast path: a single-field `where` on a registered foreign-key index is O(1).
7
7
  let candidates;
8
8
  const whereEntries = options?.where ? Object.entries(options.where) : [];
9
9
  const singleWhere = whereEntries.length === 1 ? whereEntries[0] : undefined;
@@ -1,43 +1,47 @@
1
1
  /**
2
- * undoApply.ts — conflict-aware resolution of undo/redo ops (per-user undo).
2
+ * Conflict-aware replay of undo and redo operations, so undo reverts only your
3
+ * own changes.
3
4
  *
4
- * The undo stack is already per-client (only local mutator invocations call
5
- * `UndoScope.record`; a collaborator's edits arrive as inbound sync deltas and
6
- * never land here). What this module adds is the second half of "undo per
7
- * user": when replaying a recorded op, only touch a field whose CURRENT value
8
- * still equals what THIS op established so undo reverts your own change only
9
- * where it still stands, and never clobbers a field a collaborator changed
10
- * after you (the Yjs/CRDT "selective undo" principle, adapted to our
11
- * field-level last-writer-wins model).
5
+ * The undo stack is already per-client: only your local mutator calls record
6
+ * onto it through `UndoScope.record`, and a collaborator's edits arrive as
7
+ * inbound sync deltas that never enter it. This module adds the other half of
8
+ * per-user undo. When replaying a recorded operation, it touches a field only
9
+ * if that field's current value still equals the value this operation
10
+ * established. Undo therefore reverts your change where it still stands and
11
+ * leaves alone any field a collaborator has since overwritten — selective undo
12
+ * applied to a field-level, last-writer-wins model.
12
13
  *
13
- * `resolveOps(apply, paired, store, policy)`:
14
- * - `apply` — the ops we're about to replay (inverses on undo, forwards on redo).
15
- * - `paired` their counterparts, carrying the value this op established
16
- * (forwards on undo = "what I set"; inverses on redo = "what undo restored").
17
- * - For `update`/`updateMany` ops it drops fields whose live value no longer
18
- * matches the established value. `create`/`delete` families are structural
19
- * and applied unconditionally (undoing your create removes the row you
20
- * added; undoing your delete restores it).
14
+ * {@link resolveOps} does the filtering. It takes the operations about to be
15
+ * replayed (`apply` — the inverses on undo, the forwards on redo) and their
16
+ * counterparts (`paired`), which carry the value each operation established: on
17
+ * undo the forwards say what you set, and on redo the inverses say what undo
18
+ * restored. For `update` and `updateMany` operations it drops any field whose
19
+ * live value no longer matches that established value. The `create` and
20
+ * `delete` families are structural and always applied undoing a create
21
+ * removes the row you added, and undoing a delete restores it.
21
22
  *
22
- * With no collaborator, the live value always equals what you set, so nothing
23
- * is dropped single-user undo is byte-for-byte unchanged.
23
+ * When no collaborator is involved, the live value always equals what you set,
24
+ * so nothing is dropped and single-user undo behaves exactly as before.
24
25
  */
25
26
  import type { SyncStoreContract } from '../react/context.js';
26
27
  import type { InverseOp } from './inverseOp.js';
27
28
  import { deepEqual } from '../utils/json.js';
28
29
  /**
29
- * How undo/redo handles a field a collaborator changed after your op:
30
- * - `skip-stale` (default): leave it — your change is already superseded, so
31
- * reverting it would clobber theirs. This is the per-user guarantee.
32
- * - `last-writer-wins`: apply the op verbatim (legacy behavior). Your undo
33
- * overwrites their change.
30
+ * How undo and redo treat a field that a collaborator changed after your
31
+ * operation.
32
+ *
33
+ * - `skip-stale` (the default): leave the field alone. Your change has
34
+ * already been superseded, so reverting it would overwrite the
35
+ * collaborator's value. This is what keeps undo scoped to your own edits.
36
+ * - `last-writer-wins`: apply the operation verbatim, so your undo overwrites
37
+ * the collaborator's change.
34
38
  */
35
39
  export type UndoConflictPolicy = 'skip-stale' | 'last-writer-wins';
36
40
  export declare const DEFAULT_UNDO_CONFLICT_POLICY: UndoConflictPolicy;
37
41
  /**
38
- * Structural equality for JSON-shaped values (scalars, arrays, plain objects).
39
- * Re-exported from the shared `utils/json` helper (key order is ignored) so the
40
- * undo path and app authors share one implementation.
42
+ * Structural equality for JSON-shaped values scalars, arrays, and plain
43
+ * objects ignoring object key order. Re-exported from the package's shared
44
+ * JSON helper so the undo path and your own code can share one implementation.
41
45
  */
42
46
  export { deepEqual };
43
47
  /**
@@ -1,33 +1,34 @@
1
1
  /**
2
- * undoApply.ts — conflict-aware resolution of undo/redo ops (per-user undo).
2
+ * Conflict-aware replay of undo and redo operations, so undo reverts only your
3
+ * own changes.
3
4
  *
4
- * The undo stack is already per-client (only local mutator invocations call
5
- * `UndoScope.record`; a collaborator's edits arrive as inbound sync deltas and
6
- * never land here). What this module adds is the second half of "undo per
7
- * user": when replaying a recorded op, only touch a field whose CURRENT value
8
- * still equals what THIS op established so undo reverts your own change only
9
- * where it still stands, and never clobbers a field a collaborator changed
10
- * after you (the Yjs/CRDT "selective undo" principle, adapted to our
11
- * field-level last-writer-wins model).
5
+ * The undo stack is already per-client: only your local mutator calls record
6
+ * onto it through `UndoScope.record`, and a collaborator's edits arrive as
7
+ * inbound sync deltas that never enter it. This module adds the other half of
8
+ * per-user undo. When replaying a recorded operation, it touches a field only
9
+ * if that field's current value still equals the value this operation
10
+ * established. Undo therefore reverts your change where it still stands and
11
+ * leaves alone any field a collaborator has since overwritten — selective undo
12
+ * applied to a field-level, last-writer-wins model.
12
13
  *
13
- * `resolveOps(apply, paired, store, policy)`:
14
- * - `apply` — the ops we're about to replay (inverses on undo, forwards on redo).
15
- * - `paired` their counterparts, carrying the value this op established
16
- * (forwards on undo = "what I set"; inverses on redo = "what undo restored").
17
- * - For `update`/`updateMany` ops it drops fields whose live value no longer
18
- * matches the established value. `create`/`delete` families are structural
19
- * and applied unconditionally (undoing your create removes the row you
20
- * added; undoing your delete restores it).
14
+ * {@link resolveOps} does the filtering. It takes the operations about to be
15
+ * replayed (`apply` — the inverses on undo, the forwards on redo) and their
16
+ * counterparts (`paired`), which carry the value each operation established: on
17
+ * undo the forwards say what you set, and on redo the inverses say what undo
18
+ * restored. For `update` and `updateMany` operations it drops any field whose
19
+ * live value no longer matches that established value. The `create` and
20
+ * `delete` families are structural and always applied undoing a create
21
+ * removes the row you added, and undoing a delete restores it.
21
22
  *
22
- * With no collaborator, the live value always equals what you set, so nothing
23
- * is dropped single-user undo is byte-for-byte unchanged.
23
+ * When no collaborator is involved, the live value always equals what you set,
24
+ * so nothing is dropped and single-user undo behaves exactly as before.
24
25
  */
25
26
  import { deepEqual } from '../utils/json.js';
26
27
  export const DEFAULT_UNDO_CONFLICT_POLICY = 'skip-stale';
27
28
  /**
28
- * Structural equality for JSON-shaped values (scalars, arrays, plain objects).
29
- * Re-exported from the shared `utils/json` helper (key order is ignored) so the
30
- * undo path and app authors share one implementation.
29
+ * Structural equality for JSON-shaped values scalars, arrays, and plain
30
+ * objects ignoring object key order. Re-exported from the package's shared
31
+ * JSON helper so the undo path and your own code can share one implementation.
31
32
  */
32
33
  export { deepEqual };
33
34
  /**
@@ -67,8 +68,9 @@ function filterStalePatch(store, patch, established) {
67
68
  if (field === 'id')
68
69
  continue;
69
70
  if (established && field in established) {
70
- // Apply only if the field still holds the value WE established i.e. no
71
- // collaborator overwrote it since. Otherwise skip (don't clobber them).
71
+ // Apply only if the field still holds the value we established, meaning no
72
+ // collaborator has overwritten it since. Otherwise skip it, so the
73
+ // collaborator's change is left intact.
72
74
  if (deepEqual(readCurrentField(store, patch.id, field), established[field])) {
73
75
  out[field] = patch[field];
74
76
  kept++;
@@ -1,8 +1,10 @@
1
1
  /**
2
- * @abloatai/ablo/policy — pluggable conflict resolution.
2
+ * Pluggable conflict resolution.
3
3
  *
4
- * The engine detects conflicts; the policy decides. Customer code
5
- * implements `ConflictPolicy` and registers it at the sync-server.
4
+ * The engine detects a conflict; a policy decides what to do about it. You
5
+ * implement {@link ConflictPolicy} and register it with the engine on your
6
+ * server. The example below allows writes from a cosmetic "linter" writer and
7
+ * defers everything else to {@link defaultPolicy}.
6
8
  *
7
9
  * ```ts
8
10
  * import { type ConflictPolicy, defaultPolicy } from '@abloatai/ablo/policy';
@@ -1,8 +1,10 @@
1
1
  /**
2
- * @abloatai/ablo/policy — pluggable conflict resolution.
2
+ * Pluggable conflict resolution.
3
3
  *
4
- * The engine detects conflicts; the policy decides. Customer code
5
- * implements `ConflictPolicy` and registers it at the sync-server.
4
+ * The engine detects a conflict; a policy decides what to do about it. You
5
+ * implement {@link ConflictPolicy} and register it with the engine on your
6
+ * server. The example below allows writes from a cosmetic "linter" writer and
7
+ * defers everything else to {@link defaultPolicy}.
6
8
  *
7
9
  * ```ts
8
10
  * import { type ConflictPolicy, defaultPolicy } from '@abloatai/ablo/policy';