@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
@@ -0,0 +1,88 @@
1
+ /**
2
+ * The auto-heartbeat loop behind `claim({ id, heartbeat: true })` — one
3
+ * implementation shared by both transports (the WebSocket claim stream and the
4
+ * HTTP `ApiClient`), so the cadence and failure semantics cannot drift.
5
+ *
6
+ * A beat is the "still working" signal that keeps a lease alive for the
7
+ * duration of real work. The loop's failure handling follows the lease-system
8
+ * convention (SQS visibility heartbeats, Kubernetes leases): a beat that fails
9
+ * for a transient reason — the network blipped, the server was briefly
10
+ * unavailable — is simply retried on the next tick, because the lease has
11
+ * runway to spare by construction (the default cadence is a third of the TTL,
12
+ * so two consecutive beats can fail before the lease is even at risk). Only a
13
+ * definitive answer from the server — the lease lapsed and may have been
14
+ * granted to the next in line ({@link AbloClaimedError}) — stops the loop and
15
+ * surfaces the loss, because for a caller with no push channel the failed beat
16
+ * IS the loss notification.
17
+ */
18
+ import { AbloClaimedError } from '../errors.js';
19
+ import { toMs } from '../utils/duration.js';
20
+ /**
21
+ * Normalize the public `heartbeat(options?)` argument — a bare Duration is
22
+ * shorthand for `{ ttl }`. Shared by both transports' handle assembly so the
23
+ * shorthand cannot drift.
24
+ */
25
+ export function resolveHeartbeatOptions(input) {
26
+ if (input === undefined)
27
+ return {};
28
+ if (typeof input === 'string' || typeof input === 'number') {
29
+ return { ttl: input };
30
+ }
31
+ return input;
32
+ }
33
+ /**
34
+ * The beat cadence for a lease of `ttlMs`: an explicit duration when the
35
+ * caller set one, otherwise a third of the TTL (floored at 1s) — the
36
+ * DynamoDB-lock-client rule, leaving two missed beats of runway before the
37
+ * lease is at risk while keeping crash recovery within one beat window.
38
+ */
39
+ export function heartbeatCadenceMs(ttlMs, heartbeat) {
40
+ if (heartbeat !== true)
41
+ return toMs(heartbeat);
42
+ return Math.max(Math.floor(ttlMs / 3), 1_000);
43
+ }
44
+ /**
45
+ * Start beating. Returns a stop function; callers stop the loop when the
46
+ * claim is released (all held-claim assembly sites tie this to `release`).
47
+ * Beats never overlap: a tick that fires while the previous beat is still
48
+ * in flight is skipped rather than stacked.
49
+ */
50
+ export function startClaimHeartbeatLoop(options) {
51
+ let stopped = false;
52
+ let inFlight = false;
53
+ const stop = () => {
54
+ if (stopped)
55
+ return;
56
+ stopped = true;
57
+ clearInterval(timer);
58
+ };
59
+ const timer = setInterval(() => {
60
+ if (stopped || inFlight)
61
+ return;
62
+ inFlight = true;
63
+ options
64
+ .beat()
65
+ .catch((error) => {
66
+ if (stopped)
67
+ return;
68
+ if (error instanceof AbloClaimedError) {
69
+ stop();
70
+ options.onLost?.(error);
71
+ return;
72
+ }
73
+ // Transient (connection, brief server unavailability): the next tick
74
+ // is the retry — the ttl/3 cadence leaves runway for missed beats.
75
+ })
76
+ .finally(() => {
77
+ inFlight = false;
78
+ });
79
+ }, options.intervalMs);
80
+ // The loop must never be what keeps a Node process alive — the held work
81
+ // is. A worker that finishes without releasing exits anyway, and the lease
82
+ // lapses on schedule. No-op in browsers (where setInterval returns a number
83
+ // without `unref`), which is why the call is optional even though the Node
84
+ // timer type always has it.
85
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
86
+ timer.unref?.();
87
+ return stop;
88
+ }
@@ -1,9 +1,8 @@
1
1
  /**
2
- * The default `[Ablo]` console logger + its level resolution.
2
+ * The default `[Ablo]` console logger and its level resolution.
3
3
  *
4
- * Extracted from `Ablo.ts`; exported so other entry points that build a
5
- * default logger (e.g. the agent runtime) can reuse the same gating instead
6
- * of hand-rolling a console shim.
4
+ * These helpers are exported so any entry point that needs a default logger can
5
+ * reuse the same level gating rather than hand-rolling a console wrapper.
7
6
  */
8
7
  import type { SyncLogger } from '../interfaces/index.js';
9
8
  /**
@@ -30,7 +29,7 @@ export declare function resolveLogLevel(opts?: {
30
29
  logLevel?: LogLevel;
31
30
  }): LogLevel;
32
31
  /**
33
- * Build the default logger, gated at `level` and prefixed `[Ablo]` so a creator
34
- * with a console full of other tools' logs can see at a glance what's ours.
32
+ * Builds the default logger, gated at `level` and prefixed `[Ablo]` so its lines
33
+ * stand out in a console full of other tools' output.
35
34
  */
36
35
  export declare function createConsoleLogger(level: LogLevel): SyncLogger;
@@ -1,9 +1,8 @@
1
1
  /**
2
- * The default `[Ablo]` console logger + its level resolution.
2
+ * The default `[Ablo]` console logger and its level resolution.
3
3
  *
4
- * Extracted from `Ablo.ts`; exported so other entry points that build a
5
- * default logger (e.g. the agent runtime) can reuse the same gating instead
6
- * of hand-rolling a console shim.
4
+ * These helpers are exported so any entry point that needs a default logger can
5
+ * reuse the same level gating rather than hand-rolling a console wrapper.
7
6
  */
8
7
  const LOG_LEVEL_RANK = { debug: 10, info: 20, warn: 30, error: 40, silent: 99 };
9
8
  /**
@@ -26,8 +25,8 @@ export function resolveLogLevel(opts) {
26
25
  return 'warn';
27
26
  }
28
27
  /**
29
- * Build the default logger, gated at `level` and prefixed `[Ablo]` so a creator
30
- * with a console full of other tools' logs can see at a glance what's ours.
28
+ * Builds the default logger, gated at `level` and prefixed `[Ablo]` so its lines
29
+ * stand out in a console full of other tools' output.
31
30
  */
32
31
  export function createConsoleLogger(level) {
33
32
  const threshold = LOG_LEVEL_RANK[level];
@@ -1,28 +1,26 @@
1
1
  /**
2
- * Internal component construction for `Ablo()`.
2
+ * Builds the internal component graph the client runs on.
3
3
  *
4
- * Builds the full sync-engine component graph from options + schema:
5
- * `ModelRegistry`, `ObjectPool`, `BootstrapHelper`, `Database`,
6
- * `SyncClient`, `HydrationCoordinator`. Each component depends on
7
- * the previous one, so the construction order matters; isolating it
8
- * here means `Ablo.ts` doesn't need to know the dependency order.
9
- *
10
- * Mirrors the pattern Anthropic uses: their client constructor wires
11
- * endpoint modules. Ours wires the sync-engine components instead.
4
+ * From the caller's options and schema this wires together the model registry,
5
+ * object pool, bootstrap helper, database, sync client, and hydration
6
+ * coordinator. Each component depends on the one before it, so construction
7
+ * order matters; keeping it here means the client constructor does not have to
8
+ * know that order.
12
9
  */
13
10
  import { Database } from '../Database.js';
14
11
  import { ModelRegistry } from '../ModelRegistry.js';
15
- import { ObjectPool } from '../ObjectPool.js';
12
+ import { InstanceCache } from '../InstanceCache.js';
16
13
  import { SyncClient } from '../SyncClient.js';
17
- import { HydrationCoordinator } from '../sync/HydrationCoordinator.js';
18
- import { BootstrapHelper } from '../sync/BootstrapHelper.js';
14
+ import { OnDemandLoader } from '../sync/OnDemandLoader.js';
15
+ import { BootstrapFetcher } from '../sync/BootstrapFetcher.js';
19
16
  import type { AuthCredentialSource } from '../auth/credentialSource.js';
20
17
  import type { Schema, SchemaRecord } from '../schema/schema.js';
21
18
  import { type AbloPersistence } from './persistence.js';
19
+ import type { CommitOutboxStore } from '../transactions/commitOutboxStore.js';
22
20
  export interface InternalComponentsInput<S extends SchemaRecord> {
23
21
  readonly schema: Schema<S>;
24
- /** WebSocket URL used to derive bootstrap HTTP base when the
25
- * caller didn't override `bootstrapBaseUrl`. */
22
+ /** The WebSocket URL. Used to derive the bootstrap HTTP base URL when the
23
+ * caller has not overridden `bootstrapBaseUrl`. */
26
24
  readonly url: string;
27
25
  readonly options: {
28
26
  readonly maxPoolSize?: number;
@@ -31,15 +29,16 @@ export interface InternalComponentsInput<S extends SchemaRecord> {
31
29
  readonly persistence?: AbloPersistence;
32
30
  readonly offline?: boolean;
33
31
  readonly inMemory?: boolean;
32
+ readonly commitOutbox?: CommitOutboxStore;
34
33
  };
35
34
  readonly auth?: AuthCredentialSource;
36
35
  }
37
36
  export interface InternalComponents {
38
37
  readonly modelRegistry: ModelRegistry;
39
- readonly objectPool: ObjectPool;
40
- readonly bootstrapHelper: BootstrapHelper;
38
+ readonly objectPool: InstanceCache;
39
+ readonly bootstrapHelper: BootstrapFetcher;
41
40
  readonly database: Database;
42
41
  readonly syncClient: SyncClient;
43
- readonly hydration: HydrationCoordinator;
42
+ readonly hydration: OnDemandLoader;
44
43
  }
45
44
  export declare function createInternalComponents<S extends SchemaRecord>(input: InternalComponentsInput<S>): InternalComponents;
@@ -1,56 +1,52 @@
1
1
  /**
2
- * Internal component construction for `Ablo()`.
2
+ * Builds the internal component graph the client runs on.
3
3
  *
4
- * Builds the full sync-engine component graph from options + schema:
5
- * `ModelRegistry`, `ObjectPool`, `BootstrapHelper`, `Database`,
6
- * `SyncClient`, `HydrationCoordinator`. Each component depends on
7
- * the previous one, so the construction order matters; isolating it
8
- * here means `Ablo.ts` doesn't need to know the dependency order.
9
- *
10
- * Mirrors the pattern Anthropic uses: their client constructor wires
11
- * endpoint modules. Ours wires the sync-engine components instead.
4
+ * From the caller's options and schema this wires together the model registry,
5
+ * object pool, bootstrap helper, database, sync client, and hydration
6
+ * coordinator. Each component depends on the one before it, so construction
7
+ * order matters; keeping it here means the client constructor does not have to
8
+ * know that order.
12
9
  */
13
10
  import { Database } from '../Database.js';
14
11
  import { ModelRegistry, setActiveRegistry } from '../ModelRegistry.js';
15
- import { ObjectPool } from '../ObjectPool.js';
12
+ import { InstanceCache } from '../InstanceCache.js';
16
13
  import { SyncClient } from '../SyncClient.js';
17
- import { HydrationCoordinator } from '../sync/HydrationCoordinator.js';
18
- import { BootstrapHelper } from '../sync/BootstrapHelper.js';
14
+ import { OnDemandLoader } from '../sync/OnDemandLoader.js';
15
+ import { BootstrapFetcher } from '../sync/BootstrapFetcher.js';
19
16
  import { resolveBootstrapBaseUrl } from './auth.js';
20
17
  import { shouldUseInMemoryPersistence } from './persistence.js';
21
18
  export function createInternalComponents(input) {
22
19
  const { schema, url, options, auth } = input;
23
- // The registry is created here but model registration happens in
24
- // the caller (Ablo.ts owns `registerModelsFromSchema` since the
25
- // schema-to-class translation depends on private helpers there).
20
+ // The registry is created here, but model registration happens in the caller,
21
+ // which owns the schema-to-class translation.
26
22
  const modelRegistry = new ModelRegistry({
27
23
  validateOnRegister: false,
28
24
  allowLateReferences: true,
29
25
  });
30
26
  setActiveRegistry(modelRegistry);
31
- const objectPool = new ObjectPool({ maxSize: options.maxPoolSize ?? 10000 }, modelRegistry);
27
+ const objectPool = new InstanceCache({ maxSize: options.maxPoolSize ?? 10000 }, modelRegistry);
32
28
  const bootstrapBaseUrl = resolveBootstrapBaseUrl({
33
29
  url,
34
30
  bootstrapBaseUrl: options.bootstrapBaseUrl,
35
31
  });
36
- const bootstrapHelper = new BootstrapHelper({
32
+ const bootstrapHelper = new BootstrapFetcher({
37
33
  baseUrl: bootstrapBaseUrl,
38
34
  syncGroups: options.syncGroups,
39
35
  instantModels: deriveInstantModels(schema),
40
36
  getAuthToken: auth?.getAuthToken,
41
37
  });
42
38
  const database = new Database(modelRegistry, bootstrapHelper, {
43
- // Point-solution default: no browser-local durable store unless the
44
- // caller explicitly asks for it. Node/edge runtimes always use the
45
- // in-memory store because IndexedDB is unavailable there.
39
+ // By default there is no browser-local durable store unless the caller asks
40
+ // for one. Node and edge runtimes always use the in-memory store because
41
+ // IndexedDB is unavailable there.
46
42
  inMemory: shouldUseInMemoryPersistence(options),
47
43
  });
48
- const syncClient = new SyncClient(objectPool, database);
49
- // Lazy-load lane: hydrates pool/IDB on `ablo.<model>.load(...)` for
50
- // entities not in scope at bootstrap (`load: 'lazy'` models, or
51
- // entities accessed via deep-link before the pool warmed up).
52
- // Single-flight + IDB write-through.
53
- const hydration = new HydrationCoordinator({
44
+ const syncClient = new SyncClient(objectPool, database, options.commitOutbox, url);
45
+ // Lazy-load lane: hydrates the object pool and IndexedDB on demand for
46
+ // entities not in scope at bootstrap (`load: 'lazy'` models, or an entity
47
+ // reached by deep link before the pool warmed up). Single-flight, with
48
+ // write-through to IndexedDB.
49
+ const hydration = new OnDemandLoader({
54
50
  objectPool,
55
51
  database,
56
52
  registry: modelRegistry,
@@ -73,11 +69,10 @@ export function createInternalComponents(input) {
73
69
  };
74
70
  }
75
71
  /**
76
- * Derive instant-bootstrap model names from schema load strategies.
77
- * Models with `load: 'lazy'` or `'manual'` are excluded from the
78
- * initial bootstrap request they're fetched on demand by the
79
- * `ensure*` loaders or (Phase 6) by the `ObjectPool` auto-fetch
80
- * mechanism. Default load strategy is `'instant'`.
72
+ * Derives the set of models to fetch in the initial bootstrap request from each
73
+ * model's load strategy. Models declared `load: 'lazy'` or `'manual'` are left
74
+ * out of the bootstrap and fetched on demand instead. The default strategy is
75
+ * `'instant'`, which includes the model.
81
76
  */
82
77
  function deriveInstantModels(schema) {
83
78
  const schemaModels = schema.models ?? schema;