@abloatai/ablo 0.26.0 → 0.27.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 (398) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +101 -85
  3. package/dist/BaseSyncedStore.d.ts +85 -88
  4. package/dist/BaseSyncedStore.js +131 -147
  5. package/dist/Database.d.ts +54 -68
  6. package/dist/Database.js +97 -113
  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 +37 -52
  12. package/dist/Model.js +46 -61
  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 +112 -112
  18. package/dist/SyncClient.js +165 -172
  19. package/dist/adapters/alwaysOnline.d.ts +6 -8
  20. package/dist/adapters/alwaysOnline.js +6 -8
  21. package/dist/adapters/inMemoryStorage.d.ts +9 -9
  22. package/dist/adapters/inMemoryStorage.js +9 -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 +167 -119
  50. package/dist/client/Ablo.d.ts +73 -73
  51. package/dist/client/Ablo.js +125 -160
  52. package/dist/client/ApiClient.d.ts +30 -19
  53. package/dist/client/ApiClient.js +133 -38
  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 +14 -17
  61. package/dist/client/createInternalComponents.js +25 -30
  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 +57 -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 +67 -87
  76. package/dist/client/options.d.ts +134 -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 +15 -20
  91. package/dist/client/wsMutationExecutor.js +17 -23
  92. package/dist/context.d.ts +6 -4
  93. package/dist/context.js +6 -4
  94. package/dist/coordination/index.d.ts +10 -8
  95. package/dist/coordination/index.js +14 -12
  96. package/dist/coordination/schema.d.ts +176 -128
  97. package/dist/coordination/schema.js +197 -133
  98. package/dist/coordination/trace.d.ts +9 -10
  99. package/dist/coordination/trace.js +13 -14
  100. package/dist/core/DatabaseManager.d.ts +5 -7
  101. package/dist/core/DatabaseManager.js +15 -19
  102. package/dist/core/QueryProcessor.d.ts +7 -9
  103. package/dist/core/QueryProcessor.js +22 -28
  104. package/dist/core/QueryView.d.ts +8 -8
  105. package/dist/core/QueryView.js +2 -2
  106. package/dist/core/StoreManager.d.ts +12 -14
  107. package/dist/core/StoreManager.js +21 -24
  108. package/dist/core/ViewRegistry.d.ts +5 -5
  109. package/dist/core/ViewRegistry.js +4 -4
  110. package/dist/core/index.d.ts +17 -12
  111. package/dist/core/index.js +32 -26
  112. package/dist/core/openIDBWithTimeout.d.ts +38 -36
  113. package/dist/core/openIDBWithTimeout.js +42 -43
  114. package/dist/core/queryUtils.d.ts +45 -0
  115. package/dist/core/queryUtils.js +69 -0
  116. package/dist/core/storeContract.d.ts +63 -61
  117. package/dist/core/storeContract.js +8 -12
  118. package/dist/environment.d.ts +28 -0
  119. package/dist/environment.js +21 -0
  120. package/dist/errorCodes.d.ts +107 -99
  121. package/dist/errorCodes.js +131 -132
  122. package/dist/errors.d.ts +160 -166
  123. package/dist/errors.js +155 -158
  124. package/dist/index.d.ts +30 -27
  125. package/dist/index.js +89 -86
  126. package/dist/interfaces/index.d.ts +102 -113
  127. package/dist/interfaces/index.js +5 -4
  128. package/dist/keys/index.d.ts +27 -29
  129. package/dist/keys/index.js +41 -40
  130. package/dist/mutators/RecordingTransaction.d.ts +16 -16
  131. package/dist/mutators/RecordingTransaction.js +31 -37
  132. package/dist/mutators/Transaction.d.ts +18 -26
  133. package/dist/mutators/Transaction.js +14 -20
  134. package/dist/mutators/UndoManager.d.ts +122 -131
  135. package/dist/mutators/UndoManager.js +145 -156
  136. package/dist/mutators/defineMutators.d.ts +23 -34
  137. package/dist/mutators/defineMutators.js +14 -20
  138. package/dist/mutators/inverseOp.d.ts +12 -15
  139. package/dist/mutators/inverseOp.js +12 -15
  140. package/dist/mutators/mutateActions.d.ts +10 -9
  141. package/dist/mutators/mutateActions.js +1 -1
  142. package/dist/mutators/readerActions.d.ts +9 -8
  143. package/dist/mutators/readerActions.js +2 -2
  144. package/dist/mutators/undoApply.d.ts +31 -27
  145. package/dist/mutators/undoApply.js +26 -24
  146. package/dist/policy/index.d.ts +5 -3
  147. package/dist/policy/index.js +5 -3
  148. package/dist/policy/types.d.ts +104 -100
  149. package/dist/policy/types.js +67 -66
  150. package/dist/query/client.d.ts +28 -23
  151. package/dist/query/client.js +45 -43
  152. package/dist/query/types.d.ts +37 -60
  153. package/dist/query/types.js +13 -33
  154. package/dist/react/AbloProvider.d.ts +1 -1
  155. package/dist/react/AbloProvider.js +2 -2
  156. package/dist/react/context.d.ts +25 -28
  157. package/dist/react/context.js +9 -10
  158. package/dist/react/index.d.ts +41 -42
  159. package/dist/react/index.js +37 -38
  160. package/dist/react/internalContext.d.ts +17 -19
  161. package/dist/react/useAblo.d.ts +23 -22
  162. package/dist/react/useAblo.js +16 -14
  163. package/dist/react/useCurrentUserId.d.ts +8 -7
  164. package/dist/react/useCurrentUserId.js +8 -7
  165. package/dist/react/useErrorListener.d.ts +7 -7
  166. package/dist/react/useErrorListener.js +10 -11
  167. package/dist/react/useMutationFailureListener.d.ts +8 -8
  168. package/dist/react/useMutationFailureListener.js +8 -8
  169. package/dist/react/useMutators.d.ts +11 -11
  170. package/dist/react/useMutators.js +3 -3
  171. package/dist/react/useReactive.js +2 -2
  172. package/dist/react/useSyncStatus.d.ts +4 -6
  173. package/dist/react/useUndoScope.d.ts +7 -9
  174. package/dist/react/useUndoScope.js +1 -1
  175. package/dist/schema/coordination.d.ts +21 -25
  176. package/dist/schema/coordination.js +21 -25
  177. package/dist/schema/ddl.d.ts +43 -39
  178. package/dist/schema/ddl.js +75 -68
  179. package/dist/schema/ddlLock.d.ts +20 -24
  180. package/dist/schema/ddlLock.js +18 -23
  181. package/dist/schema/diff.d.ts +99 -61
  182. package/dist/schema/diff.js +43 -34
  183. package/dist/schema/field.d.ts +37 -42
  184. package/dist/schema/field.js +35 -48
  185. package/dist/schema/generate.d.ts +12 -12
  186. package/dist/schema/generate.js +12 -12
  187. package/dist/schema/index.d.ts +2 -2
  188. package/dist/schema/index.js +21 -23
  189. package/dist/schema/model.d.ts +118 -143
  190. package/dist/schema/model.js +22 -33
  191. package/dist/schema/openapi.d.ts +10 -9
  192. package/dist/schema/openapi.js +5 -3
  193. package/dist/schema/queries.d.ts +29 -31
  194. package/dist/schema/queries.js +23 -25
  195. package/dist/schema/relation.d.ts +89 -99
  196. package/dist/schema/relation.js +13 -13
  197. package/dist/schema/residency.d.ts +16 -13
  198. package/dist/schema/residency.js +16 -13
  199. package/dist/schema/roles.d.ts +36 -43
  200. package/dist/schema/roles.js +31 -37
  201. package/dist/schema/schema.d.ts +33 -42
  202. package/dist/schema/schema.js +31 -32
  203. package/dist/schema/select.d.ts +13 -13
  204. package/dist/schema/select.js +13 -13
  205. package/dist/schema/serialize.d.ts +28 -31
  206. package/dist/schema/serialize.js +27 -31
  207. package/dist/schema/sugar.d.ts +17 -32
  208. package/dist/schema/sugar.js +14 -29
  209. package/dist/schema/{sync-delta-row.d.ts → syncDeltaRow.d.ts} +26 -49
  210. package/dist/schema/syncDeltaRow.js +89 -0
  211. package/dist/schema/tenancy.d.ts +44 -46
  212. package/dist/schema/tenancy.js +46 -48
  213. package/dist/server/adapter.d.ts +58 -58
  214. package/dist/server/adapter.js +13 -14
  215. package/dist/server/commit.d.ts +60 -64
  216. package/dist/server/index.d.ts +9 -10
  217. package/dist/server/index.js +1 -1
  218. package/dist/server/readConfig.d.ts +70 -0
  219. package/dist/server/readConfig.js +8 -0
  220. package/dist/server/storageMode.d.ts +23 -0
  221. package/dist/server/storageMode.js +17 -0
  222. package/dist/source/adapter.d.ts +30 -25
  223. package/dist/source/adapter.js +10 -10
  224. package/dist/source/adapters/drizzle.d.ts +28 -23
  225. package/dist/source/adapters/drizzle.js +30 -25
  226. package/dist/source/adapters/kysely.d.ts +27 -25
  227. package/dist/source/adapters/kysely.js +24 -23
  228. package/dist/source/adapters/memory.d.ts +8 -7
  229. package/dist/source/adapters/memory.js +9 -8
  230. package/dist/source/adapters/prisma.d.ts +13 -12
  231. package/dist/source/adapters/prisma.js +22 -25
  232. package/dist/source/conformance.d.ts +18 -11
  233. package/dist/source/conformance.js +17 -11
  234. package/dist/source/connector.d.ts +31 -32
  235. package/dist/source/connector.js +28 -28
  236. package/dist/source/connectorProtocol.d.ts +160 -0
  237. package/dist/source/connectorProtocol.js +162 -0
  238. package/dist/source/contract.d.ts +26 -27
  239. package/dist/source/contract.js +28 -29
  240. package/dist/source/factory.d.ts +46 -58
  241. package/dist/source/factory.js +22 -27
  242. package/dist/source/index.d.ts +7 -9
  243. package/dist/source/index.js +12 -14
  244. package/dist/source/migrations.d.ts +9 -9
  245. package/dist/source/migrations.js +9 -9
  246. package/dist/source/next.d.ts +9 -10
  247. package/dist/source/next.js +6 -7
  248. package/dist/source/pushQueue.d.ts +69 -47
  249. package/dist/source/pushQueue.js +32 -28
  250. package/dist/source/signing.d.ts +46 -17
  251. package/dist/source/signing.js +28 -11
  252. package/dist/source/types.d.ts +121 -104
  253. package/dist/source/types.js +13 -14
  254. package/dist/stores/ObjectStore.d.ts +10 -11
  255. package/dist/stores/ObjectStore.js +11 -12
  256. package/dist/stores/ObjectStoreContract.d.ts +12 -15
  257. package/dist/stores/SyncActionStore.d.ts +7 -11
  258. package/dist/stores/SyncActionStore.js +13 -17
  259. package/dist/surface.d.ts +27 -20
  260. package/dist/surface.js +27 -20
  261. package/dist/sync/{BootstrapHelper.d.ts → BootstrapFetcher.d.ts} +36 -42
  262. package/dist/sync/{BootstrapHelper.js → BootstrapFetcher.js} +76 -76
  263. package/dist/sync/ConnectionManager.d.ts +39 -50
  264. package/dist/sync/ConnectionManager.js +55 -66
  265. package/dist/sync/NetworkProbe.d.ts +24 -29
  266. package/dist/sync/NetworkProbe.js +63 -69
  267. package/dist/sync/{HydrationCoordinator.d.ts → OnDemandLoader.d.ts} +42 -41
  268. package/dist/sync/{HydrationCoordinator.js → OnDemandLoader.js} +59 -54
  269. package/dist/sync/{AreaOfInterestManager.d.ts → SubscriptionManager.d.ts} +43 -57
  270. package/dist/sync/{AreaOfInterestManager.js → SubscriptionManager.js} +43 -51
  271. package/dist/sync/SyncWebSocket.d.ts +139 -165
  272. package/dist/sync/SyncWebSocket.js +191 -223
  273. package/dist/sync/awaitClaimGrant.d.ts +18 -18
  274. package/dist/sync/awaitClaimGrant.js +11 -11
  275. package/dist/sync/bootstrapApply.d.ts +34 -24
  276. package/dist/sync/bootstrapApply.js +27 -19
  277. package/dist/sync/commitFrames.d.ts +21 -20
  278. package/dist/sync/commitFrames.js +18 -18
  279. package/dist/sync/createClaimStream.d.ts +23 -22
  280. package/dist/sync/createClaimStream.js +105 -23
  281. package/dist/sync/createPresenceStream.d.ts +19 -18
  282. package/dist/sync/createPresenceStream.js +25 -26
  283. package/dist/sync/createSnapshot.d.ts +12 -14
  284. package/dist/sync/createSnapshot.js +20 -26
  285. package/dist/sync/credentialLifecycle.d.ts +104 -104
  286. package/dist/sync/credentialLifecycle.js +140 -147
  287. package/dist/sync/deltaPipeline.d.ts +36 -34
  288. package/dist/sync/deltaPipeline.js +64 -65
  289. package/dist/sync/groupChange.d.ts +63 -61
  290. package/dist/sync/groupChange.js +74 -78
  291. package/dist/sync/heartbeat.d.ts +34 -33
  292. package/dist/sync/heartbeat.js +31 -31
  293. package/dist/sync/participants.d.ts +19 -19
  294. package/dist/sync/schemas.d.ts +3 -2
  295. package/dist/sync/schemas.js +14 -10
  296. package/dist/sync/syncCursor.d.ts +17 -21
  297. package/dist/sync/syncCursor.js +17 -21
  298. package/dist/sync/syncPlan.d.ts +28 -36
  299. package/dist/sync/syncPlan.js +18 -19
  300. package/dist/sync/syncPosition.d.ts +54 -49
  301. package/dist/sync/syncPosition.js +57 -52
  302. package/dist/sync/wsFrameHandlers.d.ts +35 -36
  303. package/dist/sync/wsFrameHandlers.js +63 -67
  304. package/dist/testing/fixtures/bootstrap.d.ts +12 -6
  305. package/dist/testing/fixtures/bootstrap.js +12 -6
  306. package/dist/testing/fixtures/deltas.d.ts +30 -33
  307. package/dist/testing/fixtures/deltas.js +30 -33
  308. package/dist/testing/fixtures/models.d.ts +11 -10
  309. package/dist/testing/fixtures/models.js +11 -10
  310. package/dist/testing/helpers/{react-wrapper.d.ts → reactWrapper.d.ts} +13 -10
  311. package/dist/testing/helpers/{react-wrapper.js → reactWrapper.js} +15 -12
  312. package/dist/testing/helpers/{sync-engine-harness.d.ts → syncEngineHarness.d.ts} +17 -15
  313. package/dist/testing/helpers/{sync-engine-harness.js → syncEngineHarness.js} +12 -10
  314. package/dist/testing/helpers/wait.d.ts +13 -8
  315. package/dist/testing/helpers/wait.js +13 -8
  316. package/dist/testing/index.d.ts +3 -3
  317. package/dist/testing/index.js +2 -2
  318. package/dist/testing/mocks/MockMutationExecutor.d.ts +18 -17
  319. package/dist/testing/mocks/MockMutationExecutor.js +15 -14
  320. package/dist/testing/mocks/MockNetworkMonitor.d.ts +8 -8
  321. package/dist/testing/mocks/MockNetworkMonitor.js +8 -8
  322. package/dist/testing/mocks/MockSyncContext.d.ts +20 -17
  323. package/dist/testing/mocks/MockSyncContext.js +15 -13
  324. package/dist/testing/mocks/MockSyncStore.d.ts +10 -10
  325. package/dist/testing/mocks/MockSyncStore.js +11 -11
  326. package/dist/testing/mocks/MockWebSocket.d.ts +26 -22
  327. package/dist/testing/mocks/MockWebSocket.js +22 -21
  328. package/dist/transactions/TransactionQueue.d.ts +181 -176
  329. package/dist/transactions/TransactionQueue.js +338 -350
  330. package/dist/transactions/TransactionStore.d.ts +6 -4
  331. package/dist/transactions/TransactionStore.js +6 -4
  332. package/dist/transactions/UnconfirmedWrites.d.ts +82 -0
  333. package/dist/transactions/UnconfirmedWrites.js +104 -0
  334. package/dist/transactions/coalesceRules.d.ts +41 -17
  335. package/dist/transactions/coalesceRules.js +40 -17
  336. package/dist/transactions/commitPayload.d.ts +48 -52
  337. package/dist/transactions/commitPayload.js +48 -57
  338. package/dist/transactions/deltaConfirmation.d.ts +20 -22
  339. package/dist/transactions/deltaConfirmation.js +37 -45
  340. package/dist/transactions/optimisticApply.d.ts +49 -0
  341. package/dist/transactions/optimisticApply.js +65 -0
  342. package/dist/transactions/{persistedReplay.d.ts → replayValidation.d.ts} +28 -22
  343. package/dist/transactions/{persistedReplay.js → replayValidation.js} +33 -27
  344. package/dist/types/global.d.ts +46 -41
  345. package/dist/types/global.js +20 -19
  346. package/dist/types/index.d.ts +71 -77
  347. package/dist/types/index.js +22 -22
  348. package/dist/types/modelData.d.ts +6 -8
  349. package/dist/types/modelData.js +5 -7
  350. package/dist/types/participant.d.ts +10 -11
  351. package/dist/types/participant.js +6 -8
  352. package/dist/types/streams.d.ts +208 -195
  353. package/dist/types/streams.js +7 -7
  354. package/dist/utils/asyncIterator.d.ts +25 -32
  355. package/dist/utils/asyncIterator.js +25 -32
  356. package/dist/utils/duration.d.ts +12 -15
  357. package/dist/utils/duration.js +12 -15
  358. package/dist/utils/mobxSetup.d.ts +53 -0
  359. package/dist/utils/{mobx-setup.js → mobxSetup.js} +42 -98
  360. package/dist/webhooks/events.d.ts +21 -16
  361. package/dist/webhooks/events.js +10 -8
  362. package/dist/webhooks/index.d.ts +5 -7
  363. package/dist/webhooks/index.js +5 -7
  364. package/dist/{schema/sync-delta-wire.d.ts → wire/delta.d.ts} +58 -41
  365. package/dist/wire/delta.js +114 -0
  366. package/dist/wire/errorEnvelope.d.ts +30 -31
  367. package/dist/wire/errorEnvelope.js +34 -40
  368. package/dist/wire/frames.d.ts +79 -86
  369. package/dist/wire/frames.js +26 -33
  370. package/dist/wire/index.d.ts +14 -12
  371. package/dist/wire/index.js +30 -26
  372. package/dist/wire/listEnvelope.d.ts +16 -23
  373. package/dist/wire/listEnvelope.js +7 -6
  374. package/dist/wire/protocol.d.ts +25 -32
  375. package/dist/wire/protocol.js +25 -32
  376. package/dist/wire/protocolVersion.d.ts +44 -40
  377. package/dist/wire/protocolVersion.js +44 -40
  378. package/docs/coordination.md +59 -0
  379. package/package.json +11 -10
  380. package/dist/ai-sdk/coordinated-tool.d.ts +0 -101
  381. package/dist/ai-sdk/coordination-context.d.ts +0 -52
  382. package/dist/core/query-utils.d.ts +0 -34
  383. package/dist/core/query-utils.js +0 -59
  384. package/dist/schema/sync-delta-row.js +0 -103
  385. package/dist/schema/sync-delta-wire.js +0 -102
  386. package/dist/server/read-config.d.ts +0 -67
  387. package/dist/server/read-config.js +0 -8
  388. package/dist/server/storage-mode.d.ts +0 -8
  389. package/dist/server/storage-mode.js +0 -28
  390. package/dist/source/connector-protocol.d.ts +0 -159
  391. package/dist/source/connector-protocol.js +0 -161
  392. package/dist/transactions/OptimisticEchoTracker.d.ts +0 -82
  393. package/dist/transactions/OptimisticEchoTracker.js +0 -104
  394. package/dist/transactions/mutation-error-handler.d.ts +0 -5
  395. package/dist/transactions/mutation-error-handler.js +0 -39
  396. package/dist/transactions/optimistic.d.ts +0 -24
  397. package/dist/transactions/optimistic.js +0 -45
  398. package/dist/utils/mobx-setup.d.ts +0 -42
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Ablo — The one-liner consumer API.
3
- *
4
- * Hides all internal wiring (ObjectPool, Database, SyncClient, WebSocket,
5
- * bootstrap, offline queue, DI adapters) behind a single function call.
2
+ * `Ablo`the one-call entry point to the sync engine client. It hides the
3
+ * internal wiring — the object pool, local database, sync client, WebSocket,
4
+ * bootstrap, and offline queue behind a single function that returns a typed
5
+ * client with one property per model in your schema.
6
6
  *
7
7
  * Usage:
8
8
  * import { Ablo } from '@abloatai/ablo';
@@ -21,7 +21,7 @@
21
21
  import type { Schema, SchemaRecord, InferModel, InferCreate } from '../schema/schema.js';
22
22
  import type { ModelTarget, ModelClaim } from '../coordination/schema.js';
23
23
  export type { ModelTarget, ModelClaim };
24
- import { ObjectPool } from '../ObjectPool.js';
24
+ import { InstanceCache } from '../InstanceCache.js';
25
25
  import type { SyncStoreContract } from '../react/context.js';
26
26
  import type { SyncWebSocket } from '../sync/SyncWebSocket.js';
27
27
  import { type SyncStatus } from '../BaseSyncedStore.js';
@@ -31,7 +31,7 @@ import { type AbloHttpClient, type AbloHttpClientOptions } from './httpClient.js
31
31
  import type { AbloOptions } from './options.js';
32
32
  import type { AbloSession, CommitResource, CreateAgentClientParams, CreateSessionParams, ModelClient } from './resourceTypes.js';
33
33
  export type { ApiKeySetter, AbloOptions, InternalAbloOptions } from './options.js';
34
- export type { LocalCountOptions, LocalReadOptions, ModelListScope, ServerReadOptions, ModelRetrieveParams, ModelCreateParams, ModelUpdateParams, ModelDeleteParams, ClaimOptions, ClaimParams, ClaimLookupParams, ClaimReorderParams, Claim, HeldClaim, ModelOperations, ModelOperationAction, CommitWait, ModelRead, IfClaimedPolicy, ClaimedOptions, ClaimWaitOptions, ModelReadOptions, ClaimCreateOptions, CommitOperationInput, CommitCreateOptions, CommitReceipt, CommitResource, ClaimResource, ModelMutationOptions, HttpClaimApi, ModelClient, SessionOperation, CreateUserSessionParams, CreateAgentSessionParams, CreateSessionParams, CreateAgentClientParams, AbloSession, } from './resourceTypes.js';
34
+ export type { LocalCountOptions, LocalReadOptions, ModelListScope, ServerReadOptions, ModelRetrieveParams, ModelCreateParams, ModelUpdateParams, ModelDeleteParams, ClaimOptions, ClaimParams, ClaimLookupParams, ClaimReorderParams, Claim, ClaimHeartbeat, ClaimHeartbeatOptions, HeldClaim, ModelOperations, ModelOperationAction, CommitWait, ModelRead, IfClaimedPolicy, ClaimedOptions, ClaimWaitOptions, ModelReadOptions, ClaimCreateOptions, CommitOperationInput, CommitCreateOptions, CommitReceipt, CommitResource, ClaimResource, ModelMutationOptions, HttpClaimApi, ModelClient, SessionOperation, CreateUserSessionParams, CreateAgentSessionParams, CreateSessionParams, CreateAgentClientParams, AbloSession, } from './resourceTypes.js';
35
35
  export { computeFKDepthPriority } from './schemaConfig.js';
36
36
  import type { ModelOperations } from './createModelProxy.js';
37
37
  /** The typed sync engine client — one property per model in the schema */
@@ -78,31 +78,32 @@ export type Ablo<S extends SchemaRecord> = {
78
78
  /** Disconnect and clean up */
79
79
  dispose(): Promise<void>;
80
80
  /**
81
- * Replace the bearer auth token used for the WebSocket upgrade and HTTP
82
- * requests, WITHOUT tearing down the engine. Use to push a refreshed
83
- * short-lived access key (the Stripe-style `ek_`/`rk_`) before it expires —
84
- * the client's `apiKey`-resolver refresh loop calls this. Reuses the same
85
- * rotation path as the internal capability-token refresh; safe to call before
86
- * `ready()`. Also nudges a parked connection to re-probe with the new token.
81
+ * Replace the bearer token used for the WebSocket upgrade and HTTP requests,
82
+ * without tearing down the engine. Use it to push a refreshed short-lived
83
+ * access key (an `ek_` or `rk_`) before it expires — the client's `apiKey`
84
+ * resolver refresh loop calls this for you. It reuses the same rotation path as
85
+ * the internal capability-token refresh and is safe to call before `ready()`.
86
+ * It also nudges a parked connection to re-probe with the new token.
87
87
  */
88
88
  setAuthToken(token: string): void;
89
89
  /**
90
90
  * Resolve the active bearer credential this engine authenticates with — the
91
- * live `ek_`/`rk_` the WebSocket and HTTP transports currently carry (kept
92
- * fresh by the `apiKey`-resolver refresh loop), falling back to a configured
91
+ * live `ek_` or `rk_` the WebSocket and HTTP transports currently carry (kept
92
+ * fresh by the `apiKey` resolver refresh loop), falling back to a configured
93
93
  * API key. Returns `null` when no credential is set yet. Use it to authenticate
94
- * a side-band request to the same server with the very token this client
95
- * already holds no extra mint round-trip.
94
+ * a side-band request to the same server with the token this client already
95
+ * holds, avoiding an extra mint round-trip.
96
96
  */
97
97
  getAuthToken(): Promise<string | null>;
98
98
  /**
99
- * Register a re-mint hook for the short-lived access key. The connection
100
- * layer calls it WHEN it finds the key stale (a `credential_stale` probe) or
101
- * on an external nudge; the hook mints a fresh `ek_`/`rk_` from the still-valid
102
- * login. Mirrors the `apiKey`-resolver contract: resolve a token, resolve
103
- * `null` when the login itself is gone ( sign out), or THROW on a transient
104
- * failure ( back off, never sign out). The client wires this automatically
105
- * from a function `apiKey`. Safe to call before `ready()`.
99
+ * Register a re-mint hook for the short-lived access key. The connection layer
100
+ * calls it when it finds the key stale (a `credential_stale` probe) or on an
101
+ * external nudge; the hook mints a fresh `ek_` or `rk_` from the still-valid
102
+ * login. It follows the same contract as the `apiKey` resolver: resolve a
103
+ * token, resolve `null` when the login itself is gone (which signs the user
104
+ * out), or throw on a transient failure (which backs off without signing out).
105
+ * The client wires this automatically from a function `apiKey`. Safe to call
106
+ * before `ready()`.
106
107
  */
107
108
  setCredentialRefresher(refresher: (() => Promise<string | null>) | null): void;
108
109
  /**
@@ -114,21 +115,19 @@ export type Ablo<S extends SchemaRecord> = {
114
115
  */
115
116
  nudgeReconnect(): void;
116
117
  /**
117
- * Mint a short-lived, scoped **session token** for one end user the
118
- * Stripe `ephemeralKeys.create` / Supabase session shape. Call this on YOUR
119
- * BACKEND (where the `sk_` secret key lives), then hand the returned
120
- * `token` to that user's browser (typically via a token route the browser's
121
- * `apiKey` resolver fetches). The browser presents it as the bearer; the sync-server verifies
122
- * it via `apiKeyProvider`.
123
- *
124
- * The browser must NEVER see the `sk_` key — only the per-user session token.
118
+ * Mint a short-lived, scoped session token for one end user. Call this on your
119
+ * backend, where the `sk_` secret key lives, then hand the returned `token` to
120
+ * that user's browser typically through a token route the browser's `apiKey`
121
+ * resolver fetches. The browser presents the token as its bearer, and the
122
+ * server verifies it. The browser must never see the `sk_` key, only the
123
+ * per-user session token.
125
124
  *
126
- * Pass `{ user: { id } }` for a full-authority end-user session (mints `ek_`,
127
- * `participantKind: 'user'` attribution, stored as `actor_kind` on the delta
128
- * row), or `{ agent: { id }, can: { tasks:
129
- * ['update'] } }` for a scoped agent session (mints `rk_`); `can` is typed
130
- * against your schema's model names. Always authenticates with the original
131
- * `sk_` — never the client's exchanged sync credential.
125
+ * Pass `{ user: { id } }` for a full-authority end-user session, which mints an
126
+ * `ek_` and attributes writes to a user (recorded as `actor_kind` on the delta
127
+ * row). Pass `{ agent: { id }, can: { tasks: ['update'] } }` for a scoped agent
128
+ * session, which mints an `rk_`; `can` is typed against your schema's model
129
+ * names. This always authenticates with the original `sk_`, never the client's
130
+ * exchanged sync credential.
132
131
  */
133
132
  sessions: {
134
133
  create(params: CreateSessionParams<S>): Promise<AbloSession>;
@@ -149,15 +148,16 @@ export type Ablo<S extends SchemaRecord> = {
149
148
  * await agent.dispose(); // when the agent is done
150
149
  * ```
151
150
  *
152
- * Server-side only (requires the `sk_` secret key, like `sessions.create`);
153
- * throws `AbloAuthenticationError` in the browser. The returned client holds
154
- * its own auto-refreshing `rk_`, so a long run never hits token expiry, and
155
- * the `sk_` never leaves this process. Each call is a DISTINCT participant by
156
- * default (omit `id` fresh uuid), so even two agents sharing a `name` queue
157
- * behind one another on a contended row — `name` is display only and never
158
- * collapses identity. Humans don't get a server-built client ship them a
159
- * token via `sessions.create({ user })`. Need the raw token for revocation,
160
- * or a stable re-attachable id? Use `sessions.create({ agent })` / pass `id`.
151
+ * Server-side only: it requires the `sk_` secret key (like `sessions.create`)
152
+ * and throws `AbloAuthenticationError` in the browser. The returned client
153
+ * holds its own auto-refreshing `rk_`, so a long run never hits token expiry,
154
+ * and the `sk_` never leaves this process. Each call is a distinct participant
155
+ * by default (omit `id` for a fresh uuid), so even two agents sharing a `name`
156
+ * queue behind one another on a contended row — `name` is display only and
157
+ * never collapses identity. Humans don't get a server-built client; ship them a
158
+ * token via `sessions.create({ user })`. If you need the raw token for
159
+ * revocation, or a stable re-attachable id, use `sessions.create({ agent })`
160
+ * or pass `id`.
161
161
  */
162
162
  agents: {
163
163
  create(params: CreateAgentClientParams<S>): Promise<Ablo<S>>;
@@ -245,14 +245,14 @@ export type Ablo<S extends SchemaRecord> = {
245
245
  /** The underlying schema */
246
246
  readonly schema: Schema<S>;
247
247
  /**
248
- * Real-time presence livestream — who else is connected on this
249
- * engine's sync groups, what they're doing, and a write surface for
250
- * announcing this user's own activity. Rides the engine's existing
251
- * WebSocket; opening a participant for presence does NOT open a
252
- * second socket. See `PresenceStream` in `types/streams.ts`.
248
+ * A real-time presence livestream — who else is connected on this engine's
249
+ * sync groups, what they're doing, and a write surface for announcing this
250
+ * user's own activity. It rides the engine's existing WebSocket; opening a
251
+ * participant for presence does not open a second socket. See
252
+ * {@link PresenceStream}.
253
253
  *
254
- * Stable reference for the engine's lifetime — the underlying
255
- * connection is rotated on `dispose()` but this object is the same.
254
+ * The reference is stable for the engine's lifetime — the underlying connection
255
+ * is rotated on `dispose()`, but this object stays the same.
256
256
  */
257
257
  readonly presence: PresenceStream;
258
258
  /**
@@ -270,7 +270,7 @@ export type Ablo<S extends SchemaRecord> = {
270
270
  * Capture a context-staleness watermark over a set of entities.
271
271
  * Returns a flat snapshot with `stamp` (thread into writes as
272
272
  * `readAt`), `signal` (aborts on any captured-entity delta), and
273
- * `onChange` (callback form). Reads from the engine's ObjectPool;
273
+ * `onChange` (callback form). Reads from the engine's InstanceCache;
274
274
  * subscription is on the engine's existing transport.
275
275
  *
276
276
  * Use before an LLM call to prevent the model from completing
@@ -282,13 +282,13 @@ export type Ablo<S extends SchemaRecord> = {
282
282
  */
283
283
  snapshot<ModelName extends keyof S & string>(entities: Readonly<Record<ModelName, string | readonly string[]>>): Snapshot<Schema<S>, ModelName>;
284
284
  /**
285
- * The internal BaseSyncedStore. Implements SyncStoreContract — pass to
286
- * SyncContext.Provider so the SDK's useModel/useModels/useMutations hooks
287
- * can access it. Also satisfies useSyncStore() consumers during migration.
285
+ * The internal store. It implements {@link SyncStoreContract} — pass it to
286
+ * `SyncContext.Provider` so the SDK's `useModel` / `useModels` / `useMutations`
287
+ * hooks can reach it.
288
288
  */
289
289
  readonly _store: SyncStoreContract;
290
- /** The ObjectPool — for demand loaders and direct pool operations. */
291
- readonly _pool: ObjectPool;
290
+ /** The InstanceCache — for demand loaders and direct pool operations. */
291
+ readonly _pool: InstanceCache;
292
292
  /**
293
293
  * The SyncWebSocket handle — for collaboration events (slide selection,
294
294
  * cursor broadcast). Null until the engine connects.
@@ -334,22 +334,20 @@ import type * as _Tx from '../mutators/Transaction.js';
334
334
  import type * as _Undo from '../mutators/UndoManager.js';
335
335
  import type * as _SchemaTypes from '../schema/schema.js';
336
336
  /**
337
- * Canonical type namespace.
338
- *
339
- * Locked rules — apply uniformly to every future addition:
337
+ * The canonical type namespace.
340
338
  *
341
- * 1. Flat by default. `Ablo.X`. Fewest dots wins.
342
- * 2. Sub-namespace ONLY when (a) 4+ types share a single conceptual
343
- * prefix, AND (b) names read better with the prefix (`Conflict.Kind`
344
- * over `ConflictKind`). If the cluster is heterogeneous (streams +
345
- * data + handles), keep flat.
346
- * 3. Only types a consumer would write `: Ablo.X` for. Inferred-only
347
- * types stay un-exported.
348
- * 4. Wire shapes never on `Ablo.*`. Engine vocabulary only.
349
- * 5. Advanced / framework-integration types stay internal unless they
350
- * graduate into one of the public subpaths.
339
+ * Rules applied uniformly to every addition:
351
340
  *
352
- * Anything not on this list stays internal.
341
+ * 1. Flat by default. `Ablo.X`. Fewest dots wins.
342
+ * 2. Sub-namespace only when (a) four or more types share a single conceptual
343
+ * prefix and (b) the names read better with it (`Conflict.Kind` over
344
+ * `ConflictKind`). If the cluster is heterogeneous (streams, data, handles),
345
+ * keep it flat.
346
+ * 3. Only types a consumer would write `: Ablo.X` for. Inferred-only types stay
347
+ * unexported.
348
+ * 4. Wire shapes never appear on `Ablo.*` — engine vocabulary only.
349
+ * 5. Advanced or framework-integration types stay internal unless they graduate
350
+ * into one of the public subpaths.
353
351
  */
354
352
  export declare namespace Ablo {
355
353
  type Options<S extends SchemaRecord = SchemaRecord> = AbloOptions<S>;
@@ -375,6 +373,8 @@ export declare namespace Ablo {
375
373
  type Claim = _Streams.Claim;
376
374
  type ClaimRejection = _Streams.ClaimRejection;
377
375
  type ClaimLost = _Streams.ClaimLost;
376
+ type ClaimHeartbeat = _Streams.ClaimHeartbeat;
377
+ type ClaimHeartbeatOptions = _Streams.ClaimHeartbeatOptions;
378
378
  type Snapshot<TSchema extends _SchemaTypes.Schema = _SchemaTypes.Schema, K extends keyof TSchema['models'] = keyof TSchema['models']> = _Streams.Snapshot<TSchema, K>;
379
379
  namespace Auth {
380
380
  type Actor = _Streams.ParticipantRef;