@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,28 +1,27 @@
1
1
  /**
2
- * BaseSyncedStore Generic sync store base class for the SDK.
2
+ * The base class that application-specific sync stores extend. It supplies the
3
+ * shared orchestration for reads, writes, delta processing, and bootstrap, and
4
+ * exports the core types those stores build on.
3
5
  *
4
- * Exports the core types, interfaces, and a base class that app-specific
5
- * stores extend. The base class provides query/mutation/delta/bootstrap
6
- * orchestration. Subclasses add domain-specific lazy-loading, collaboration
7
- * events, and model enrichment.
8
- *
9
- * Design: The app's SyncedStore extends this and adds its own methods.
10
- * This file only contains types and the abstract contract — the actual
11
- * implementation stays in the app's SyncedStore.ts until we incrementally
12
- * pull generic methods into this base class.
6
+ * A subclass adds its own domain behavior lazy-loaded relations,
7
+ * collaboration events, and model enrichment by overriding the protected
8
+ * extension points defined here. The heavy lifting is delegated to injected
9
+ * collaborators: {@link SyncClient} owns pool writes and the transaction
10
+ * queue, {@link Database} owns local persistence, {@link InstanceCache} holds the
11
+ * in-memory models, and {@link ModelRegistry} holds their metadata.
13
12
  */
14
13
  import type { RecoveryClass } from './errorCodes.js';
15
14
  import { ConnectionManager } from './sync/ConnectionManager.js';
16
- import { AreaOfInterestManager } from './sync/AreaOfInterestManager.js';
15
+ import { SubscriptionManager } from './sync/SubscriptionManager.js';
17
16
  import { type ParticipantScope } from './sync/participants.js';
18
17
  import type { SyncClient } from './SyncClient.js';
19
18
  import type { Database, BootstrapResult } from './Database.js';
20
- import type { ObjectPool } from './ObjectPool.js';
19
+ import type { InstanceCache } from './InstanceCache.js';
21
20
  import { ModelRegistry } from './ModelRegistry.js';
22
21
  import { SyncWebSocket, type SyncDelta, type SyncGroupChangePayload, type GroupAddedPayload, type GroupRemovedPayload, type BootstrapHint, type BootstrapDataEvent, type PresenceUpdateEvent, type EventMap, type DefaultCollaborationEvents } from './sync/SyncWebSocket.js';
23
22
  import { QueryProcessor } from './core/QueryProcessor.js';
24
23
  import { Model } from './Model.js';
25
- import { ModelScope } from './ObjectPool.js';
24
+ import { ModelScope } from './InstanceCache.js';
26
25
  import type { Schema } from './schema/schema.js';
27
26
  import type { SyncStatus, LocalMutation } from './core/storeContract.js';
28
27
  import type { AuthCredentialSource } from './auth/credentialSource.js';
@@ -56,7 +55,7 @@ export interface SyncedStoreConfig {
56
55
  */
57
56
  enrichmentPlan?: readonly EnrichmentPlanEntry[];
58
57
  /**
59
- * Foreign-key indexes to register on the ObjectPool at construction
58
+ * Foreign-key indexes to register on the InstanceCache at construction
60
59
  * time. Replaces the subclass override of `registerForeignKeys` for
61
60
  * per-model FK registration. Merged with schema-derived entries
62
61
  * (relations marked `{ index: true }` on `belongsTo`). Both sets
@@ -79,8 +78,7 @@ export interface UserContext {
79
78
  kind?: 'user' | 'agent' | 'system';
80
79
  /** Restricted (`rk_`) API key for `kind: 'agent'` — the agent's
81
80
  * bearer credential. Sent in the `ablo.bearer.<token>` WebSocket
82
- * subprotocol, never in the URL. (Field name predates the
83
- * Biscuit→opaque-key migration.) */
81
+ * subprotocol, never in the URL. */
84
82
  capabilityToken?: string;
85
83
  /** Server-authoritative sync groups, supplied by auth/capability
86
84
  * exchange. The SDK does not invent org/user/default groups; app
@@ -119,16 +117,15 @@ export { ModelScope };
119
117
  export type { SyncDelta, SyncGroupChangePayload, GroupAddedPayload, GroupRemovedPayload, BootstrapHint, BootstrapDataEvent, PresenceUpdateEvent, };
120
118
  export { deriveSyncPlanFromSchema } from './sync/syncPlan.js';
121
119
  /**
122
- * BaseSyncedStore abstract base for app-specific sync stores.
123
- *
124
- * Provides the dependency structure, observable status, and protected
125
- * accessors that subclasses use. The actual sync orchestration (initialize,
126
- * delta processing, bootstrap, query, save, delete, etc.) lives in the
127
- * app's concrete subclass for now — methods will be pulled up into this
128
- * base class incrementally as they are genericized.
120
+ * The abstract base class that application-specific sync stores extend. It
121
+ * carries the injected collaborators, the observable sync status, and the
122
+ * orchestration for initialization, delta processing, bootstrap, and the
123
+ * read and write API. A subclass supplies its own domain behavior by
124
+ * overriding the protected extension points defined here and by typing its
125
+ * collaboration events through the generic parameter.
129
126
  *
130
- * Subclasses MUST call `super(dependencies, config)` and then set up
131
- * their own MobX observables.
127
+ * A subclass must call `super(dependencies, config)` and then set up its own
128
+ * MobX observables.
132
129
  *
133
130
  * Generic over `TCollaboration` — an app-defined event map for real-time
134
131
  * collaboration events (cursors, selections, presence beyond the core set).
@@ -150,7 +147,7 @@ export declare class BaseSyncedStore<TCollaboration extends EventMap<TCollaborat
150
147
  syncStatus: SyncStatus;
151
148
  protected readonly syncClient: SyncClient;
152
149
  protected readonly database: Database;
153
- protected readonly objectPool: ObjectPool;
150
+ protected readonly objectPool: InstanceCache;
154
151
  protected readonly modelRegistry: ModelRegistry;
155
152
  protected readonly auth?: AuthCredentialSource;
156
153
  /**
@@ -166,7 +163,7 @@ export declare class BaseSyncedStore<TCollaboration extends EventMap<TCollaborat
166
163
  * to whichever instance is current, so callers (the React participant
167
164
  * hook) never hold a stale reference. Null until `setupWebSocketSync`.
168
165
  */
169
- protected areaOfInterest: AreaOfInterestManager | null;
166
+ protected areaOfInterest: SubscriptionManager | null;
170
167
  /** Sync groups whose current state has been backfilled into the pool
171
168
  * (hydrate-on-enter). Cleared when the pool is reset on (re)bootstrap. */
172
169
  private readonly hydratedGroups;
@@ -185,22 +182,22 @@ export declare class BaseSyncedStore<TCollaboration extends EventMap<TCollaborat
185
182
  getSyncWebSocket(): SyncWebSocket<TCollaboration> | null;
186
183
  private scopeToGroups;
187
184
  /**
188
- * Bring a scope into view subscribe to its groups. With
189
- * `{ hydrate: true }`, ALSO backfill the groups' current state into the pool
190
- * after the subscription is active (the game "spawn snapshot + delta stream"
191
- * pattern): subscribe-first so no live delta is missed in the gap, then
192
- * snapshot. Hydration is soft — a failed backfill never rejects `enterScope`
193
- * and the live tail still flows.
185
+ * Bring a scope into view and subscribe to its sync groups. With
186
+ * `{ hydrate: true }`, also backfill the groups' current state into the pool
187
+ * once the subscription is active. The order matters: subscribing first
188
+ * guarantees no live delta is missed in the gap before the snapshot lands.
189
+ * Hydration is best-effort — a failed backfill never rejects `enterScope`,
190
+ * and the live delta stream keeps flowing regardless.
194
191
  */
195
192
  enterScope(scope: ParticipantScope, opts?: {
196
193
  hydrate?: boolean;
197
194
  }): Promise<void>;
198
195
  /**
199
- * Backfill the current state of `syncGroups` into the pool via a PURE scoped
200
- * snapshot fetch + the version-guarded, ghost-free scoped apply. Idempotent
201
- * (skips groups already hydrated) and single-flight (concurrent enters of the
202
- * same group share one fetch). Soft-fails: on error the groups are NOT marked
203
- * hydrated, so a later re-enter retries.
196
+ * Backfill the current state of `syncGroups` into the pool with a side-effect-free
197
+ * scoped snapshot fetch followed by the version-guarded scoped apply. The call
198
+ * is idempotent (it skips groups already hydrated) and single-flight (concurrent
199
+ * enters of the same group share one fetch). On error the groups are left
200
+ * unmarked, so a later re-enter retries.
204
201
  */
205
202
  protected hydrateGroups(syncGroups: readonly string[]): Promise<void>;
206
203
  /** Leave a scope → its groups go warm (hysteresis), then drop on sweep. */
@@ -246,15 +243,14 @@ export declare class BaseSyncedStore<TCollaboration extends EventMap<TCollaborat
246
243
  constructor(dependencies: {
247
244
  syncClient: SyncClient;
248
245
  database: Database;
249
- objectPool: ObjectPool;
246
+ objectPool: InstanceCache;
250
247
  modelRegistry: ModelRegistry;
251
248
  /**
252
- * Optional schema. When provided, `deriveSyncPlanFromSchema` walks
253
- * the schema's models + relations to auto-populate FK indexes and
254
- * the enrichment plan from declarative annotations. Class-based
255
- * subclass users (like Ablo's legacy SyncedStore) typically pass
256
- * explicit `config.foreignKeyIndexes` / `config.enrichmentPlan`
257
- * instead.
249
+ * Optional schema. When provided, {@link deriveSyncPlanFromSchema} walks
250
+ * the schema's models and relations to auto-populate foreign-key indexes
251
+ * and the enrichment plan from their declarative annotations. Subclasses
252
+ * that register model classes directly can instead pass explicit
253
+ * `config.foreignKeyIndexes` / `config.enrichmentPlan`.
258
254
  */
259
255
  schema?: TSchema;
260
256
  /** Sync server URL for WebSocket connection. Converted to wss:// automatically. */
@@ -263,17 +259,17 @@ export declare class BaseSyncedStore<TCollaboration extends EventMap<TCollaborat
263
259
  auth?: AuthCredentialSource;
264
260
  }, config?: SyncedStoreConfig);
265
261
  /**
266
- * Register foreign key indexes for O(1) lookups.
262
+ * Register foreign-key indexes for constant-time lookups.
267
263
  *
268
- * Legacy override hook in Phase 2 the preferred way to declare FK
269
- * indexes is via `config.foreignKeyIndexes` at construction time, or
270
- * by marking the `belongsTo` relation with `{ index: true }` in the
271
- * schema. This hook still fires AFTER the schema-derived + config
272
- * registrations, so subclasses can layer additional FKs on top.
264
+ * This is an override hook. The preferred way to declare a foreign-key
265
+ * index is `config.foreignKeyIndexes` at construction time, or marking the
266
+ * `belongsTo` relation with `{ index: true }` in the schema. The hook fires
267
+ * after the schema-derived and config registrations, so a subclass can
268
+ * layer additional indexes on top.
273
269
  */
274
270
  protected registerForeignKeys(): void;
275
271
  /**
276
- * Enrich delta data with related models from the ObjectPool.
272
+ * Enrich delta data with related models from the InstanceCache.
277
273
  *
278
274
  * Base implementation walks `this.enrichmentPlan` — entries populated
279
275
  * from the schema's `{ enrich: true }` relations and from
@@ -390,11 +386,12 @@ export declare class BaseSyncedStore<TCollaboration extends EventMap<TCollaborat
390
386
  */
391
387
  performCredentialRefresh(): Promise<'refreshed' | 'session_error' | 'network_error'>;
392
388
  /**
393
- * THE auth-recovery backbone for HTTP transports (lazy query lane etc.):
394
- * classify-driven single-flight re-mint with the same FSM outcome routing
395
- * the WS probe and proactive pre-roll use. `'retry'` ⇒ a fresh credential
396
- * is in the credential source, replay the request ONCE. Full contract on
397
- * {@link CredentialLifecycle.recoverFromAuthRejection}.
389
+ * The authentication-recovery path for HTTP transports, such as the lazy
390
+ * query lane. It runs a single-flight credential re-mint driven by the
391
+ * rejection's recovery class, routing outcomes through the same state
392
+ * machine the WebSocket probe uses. `'retry'` means a fresh credential is
393
+ * now in the credential source and the request should be replayed once.
394
+ * Full contract on {@link CredentialLifecycle.recoverFromAuthRejection}.
398
395
  */
399
396
  recoverFromAuthRejection(recovery: RecoveryClass): Promise<'retry' | 'stop'>;
400
397
  /**
@@ -406,11 +403,11 @@ export declare class BaseSyncedStore<TCollaboration extends EventMap<TCollaborat
406
403
  */
407
404
  nudgeReconnect(): void;
408
405
  /**
409
- * Install the access-credential lifecycle the CLIENT owns: register
410
- * `getToken` as the reactive re-mint hook AND arm the browser-only
411
- * proactive pre-roll (refresh timer + OS-wake re-mint). Idempotent
412
- * (a second call replaces the first); torn down on {@link disconnect}.
413
- * Full rationale on {@link CredentialLifecycle.start}.
406
+ * Install the client-owned access-credential lifecycle: register `getToken`
407
+ * as the reactive re-mint hook and arm the browser-only proactive refresh
408
+ * (a refresh timer plus an OS-wake re-mint). Idempotent — a second call
409
+ * replaces the first — and torn down on {@link disconnect}. Full rationale
410
+ * on {@link CredentialLifecycle.start}.
414
411
  */
415
412
  startCredentialLifecycle(getToken: CredentialRefresher, opts?: {
416
413
  proactiveInNode?: boolean;
@@ -431,8 +428,9 @@ export declare class BaseSyncedStore<TCollaboration extends EventMap<TCollaborat
431
428
  */
432
429
  protected handleGroupAdded(payload: GroupAddedPayload, syncId: number): Promise<void>;
433
430
  /**
434
- * Handle an actionType 'S' (GroupRemoved) delta SECURITY clear of local
435
- * state + full re-bootstrap. See {@link groupChange.handleGroupRemoved}.
431
+ * Handle an actionType 'S' (GroupRemoved) delta: for safety, clear the
432
+ * revoked local state and trigger a full re-bootstrap. See
433
+ * {@link groupChange.handleGroupRemoved}.
436
434
  */
437
435
  protected handleGroupRemoved(delta: SyncDelta): Promise<void>;
438
436
  /** Compute new sync groups after applying additions and removals */
@@ -453,8 +451,7 @@ export declare class BaseSyncedStore<TCollaboration extends EventMap<TCollaborat
453
451
  protected checkSyncGroupShrinkage(): Promise<void>;
454
452
  /** Narrow context the bootstrap-apply leaf talks back through. */
455
453
  private poolContext;
456
- /** Apply bootstrap data to the ObjectPool with ghost removal */
457
- /** Apply bootstrap data to the ObjectPool. Delegates pool writes to SyncClient. */
454
+ /** Apply bootstrap data to the {@link InstanceCache}, removing entities that are no longer present (ghost removal). Pool writes are delegated to {@link SyncClient}. */
458
455
  protected applyBootstrapToPool(bootstrapResult: BootstrapResult, protectedIds?: ReadonlySet<string>): RehydrationStats;
459
456
  /**
460
457
  * Initialize the sync engine with user context.
@@ -553,23 +550,24 @@ export declare class BaseSyncedStore<TCollaboration extends EventMap<TCollaborat
553
550
  /**
554
551
  * Apply a complete, server-delivered delta frame atomically.
555
552
  *
556
- * A `delta_batch` WS event (reconnect/catch-up replay) already carries
557
- * the FULL set of missed deltas. Routing it through the per-delta
558
- * `processDeltaWithBatching` path re-chunks it via the live-traffic
559
- * debounce timer + `maxBatchSize` force-flush, so a 300-delta catch-up
560
- * fans out into ~6 separate `flushPendingDeltas` cycles — each its own
561
- * IDB write, pool mutation, `models:changed` emit, and React re-render.
562
- * The decks gallery visibly re-sorts and "pops in" once per chunk.
553
+ * A `delta_batch` WebSocket event (a reconnect or catch-up replay) already
554
+ * carries the full set of missed deltas. Routing it through the per-delta
555
+ * `processDeltaWithBatching` path would re-chunk it via the live-traffic
556
+ * debounce timer and `maxBatchSize` force-flush, so a 300-delta catch-up
557
+ * would fan out into several separate `flushPendingDeltas` cycles — each its
558
+ * own local write, pool mutation, `models:changed` emit, and re-render, so
559
+ * the UI visibly repaints once per chunk.
563
560
  *
564
- * Here we run the per-delta bookkeeping (dedup, ack, version vector,
565
- * watermark, G/S routing, D cascade) for every delta WITHOUT scheduling
566
- * a flush, then flush ONCE — collapsing the whole frame into a single
567
- * IDB write + pool mutation + `models:changed` + re-render. Same code
568
- * for the post-bootstrap replay of deltas queued during bootstrap.
561
+ * Instead, this runs the per-delta bookkeeping (deduplication, ack, version
562
+ * vector, watermark, group-change routing, delete cascade) for every delta
563
+ * without scheduling a flush, then flushes once — collapsing the whole frame
564
+ * into a single local write, pool mutation, `models:changed` emit, and
565
+ * re-render. The post-bootstrap replay of deltas queued during bootstrap
566
+ * uses the same path.
569
567
  *
570
- * (Named `applyDeltaFrame`, not `processDeltaBatch`, to avoid confusion
571
- * with `Database.processDeltaBatch` — the lower-level IDB write this
572
- * eventually drives through `flushPendingDeltas`.)
568
+ * It is named `applyDeltaFrame`, not `processDeltaBatch`, to avoid confusion
569
+ * with {@link Database.processDeltaBatch} — the lower-level local write this
570
+ * eventually drives through `flushPendingDeltas`.
573
571
  */
574
572
  protected applyDeltaFrame(deltas: SyncDelta[]): void;
575
573
  /**
@@ -597,8 +595,7 @@ export declare class BaseSyncedStore<TCollaboration extends EventMap<TCollaborat
597
595
  * skips both the scan AND the allocation.
598
596
  */
599
597
  protected cascadeCancelTransactionsForDeletedParent(parentModelName: string, parentId: string): void;
600
- /** Flush pending deltas with deduplication and batched ObjectPool mutations */
601
- /** Flush pending deltas with deduplication. Delegates pool writes to SyncClient. */
598
+ /** Flush pending deltas with deduplication. Pool writes are delegated to {@link SyncClient}. */
602
599
  protected flushPendingDeltas(): Promise<void>;
603
600
  /** Check if a model type is local-only (no sync). Override for domain-specific models. */
604
601
  protected isLocalOnlyModel(_modelName: string): boolean;
@@ -663,10 +660,10 @@ export declare class BaseSyncedStore<TCollaboration extends EventMap<TCollaborat
663
660
  */
664
661
  create<K extends keyof TSchema['models'] & string>(typename: K, data: Record<string, unknown>): import('./schema/schema.js').InferModel<TSchema, K> | null;
665
662
  /**
666
- * Legacy class-based query entry point — kept for callers that still pass
667
- * a Model constructor + options object. New code should use the typed
668
- * `store.query.<modelKey>` namespace instead, which returns properly
669
- * inferred schema types without needing a class value or cast.
663
+ * Query entry point for callers that hold a {@link Model} constructor and an
664
+ * options object. It filters, orders, and paginates the matching models from
665
+ * the pool. Prefer the schema-typed read surface (`ablo.<model>.list`) where
666
+ * you can, since it infers concrete row types without a class value or cast.
670
667
  */
671
668
  queryByClass(modelClass: ModelConstructor<Model>, options?: {
672
669
  predicate?: (model: Model) => boolean;
@@ -695,7 +692,7 @@ export declare class BaseSyncedStore<TCollaboration extends EventMap<TCollaborat
695
692
  protected incrementPendingChanges(): void;
696
693
  protected decrementPendingChanges(): void;
697
694
  protected updateSyncStatus(updates: Partial<SyncStatus>): void;
698
- get pool(): ObjectPool;
695
+ get pool(): InstanceCache;
699
696
  get lastSyncId(): number;
700
697
  get isReady(): boolean;
701
698
  get isSyncing(): boolean;