@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,43 +1,33 @@
1
1
  /**
2
- * Option types for the `Ablo({...})` factory the public `AbloOptions` bag
3
- * and the full internal construction surface (`InternalAbloOptions`).
4
- *
5
- * Extracted from `Ablo.ts` so the option types can be referenced without
6
- * pulling in the factory's runtime graph. This module is type-only — ZERO
7
- * runtime imports — so importing it can never create a cycle. `Ablo.ts`
8
- * re-exports everything here, so existing import paths keep resolving.
2
+ * The option types for the {@link Ablo} client: the public {@link AbloOptions}
3
+ * bag callers pass, and the fuller {@link InternalAbloOptions} construction
4
+ * surface. This module holds only types and has no runtime imports.
9
5
  */
10
6
  import type { Schema, SchemaRecord } from '../schema/schema.js';
11
7
  import type { SyncEngineConfig, SyncLogger, MutationExecutor, SyncObservabilityProvider, SyncAnalytics, SessionErrorDetector, OnlineStatusProvider } from '../interfaces/index.js';
12
8
  import type { AbloPersistence } from './persistence.js';
9
+ import type { CommitOutboxStore } from '../transactions/commitOutboxStore.js';
10
+ import type { CommitOutboxScope } from '../transactions/commitEnvelope.js';
13
11
  /**
14
- * Async function that resolves an apiKey at request time. Use for
15
- * credential rotation — rotate from a vault, refresh from session
16
- * storage, or pull from a Better Auth session. Mirrors Anthropic's
17
- * `ApiKeySetter` exactly so any rotation pattern that works with
18
- * `@anthropic-ai/sdk` works here.
19
- *
20
- * Re-exported from `./auth` so existing import paths (`@abloatai/ablo`)
21
- * keep resolving; the canonical definition lives there alongside the
22
- * resolvers that consume it.
12
+ * An async function that resolves an apiKey at request time. Use it for credential
13
+ * rotation — read from a vault, refresh from session storage, or pull from an
14
+ * existing auth session. The canonical definition lives in `./auth`; it is
15
+ * re-exported here for convenience.
23
16
  */
24
17
  export type { ApiKeySetter } from './auth.js';
25
18
  import type { ApiKeySetter } from './auth.js';
26
19
  /**
27
- * Options for `Ablo({...})`.
20
+ * Options for the {@link Ablo} client.
28
21
  *
29
- * The only required field is `schema`. The default path is one line:
22
+ * The only required field is `schema`. Because `apiKey` defaults to the
23
+ * `ABLO_API_KEY` environment variable, most server setups need nothing more:
30
24
  *
31
25
  * ```ts
32
26
  * const ablo = Ablo({ schema, apiKey: process.env.ABLO_API_KEY });
33
27
  * ```
34
28
  *
35
- * `apiKey` itself defaults to `process.env.ABLO_API_KEY`, so in most
36
- * server setups `Ablo({ schema })` is enough. Every other field is
37
- * optional tuning (timeouts, retries, custom fetch, persistence) —
38
- * if you're not sure whether you need one, you don't. Reach for them
39
- * the way you'd reach for the equivalent option on the Stripe / OpenAI
40
- * / Anthropic clients: rarely, and deliberately.
29
+ * Every other field is optional tuning timeouts, retries, a custom fetch,
30
+ * persistence. If you are unsure whether you need one, you do not.
41
31
  *
42
32
  * @see https://docs.abloatai.com — full option reference
43
33
  */
@@ -49,70 +39,68 @@ export interface AbloOptions<S extends SchemaRecord = SchemaRecord> {
49
39
  */
50
40
  schema: Schema<S>;
51
41
  /**
52
- * API key — **the one auth field most apps set.** Three shapes, one option:
42
+ * The API key — the auth field most apps set. It accepts three shapes:
53
43
  *
54
- * - **A key string** (server): your secret `sk_` defaults to
55
- * `process.env['ABLO_API_KEY']`, so you usually pass nothing. A
44
+ * - **A key string** (server): your secret `sk_` key. Defaults to the
45
+ * `ABLO_API_KEY` environment variable, so you usually pass nothing. A
56
46
  * long-lived key needs no refresh; the client uses it as-is.
57
47
  *
58
- * - **An endpoint path/URL** — `apiKey: '/api/ablo-session'` (the route
59
- * `ablo init` scaffolds). The SDK owns the whole exchange: it POSTs the
60
- * endpoint (same-origin, cookies included), reads the minted short-lived
61
- * token, and keeps it fresh — a refresh timer ahead of expiry plus
62
- * re-mint on OS-wake and a reactive re-mint when the server reports the
63
- * key stale. You never call a refresh method (the Ably `authUrl` /
64
- * Liveblocks `authEndpoint` model). Detection is by prefix (`/`,
65
- * `http://`, `https://`) key strings are `sk_`/`ek_`/`rk_`-prefixed so
66
- * the shapes can't collide. Long-lived server clients should pass the
67
- * ABSOLUTE URL: it enables pre-expiry renewal on windowless hosts too.
48
+ * - **An endpoint path or URL** — for example `apiKey: '/api/ablo-session'`.
49
+ * The client owns the whole exchange: it POSTs the endpoint (same-origin,
50
+ * cookies included), reads the minted short-lived token, and keeps it fresh
51
+ * with a refresh timer ahead of expiry, a re-mint after the machine wakes
52
+ * from sleep, and a re-mint when the server reports the token stale. You
53
+ * never call a refresh method yourself. The shape is detected by prefix (`/`,
54
+ * `http://`, or `https://`); key strings start with `sk_`/`ek_`/`rk_`, so the
55
+ * two cannot be confused. A long-lived server client should pass an absolute
56
+ * URL, which also enables pre-expiry renewal on hosts that never sleep.
68
57
  *
69
- * - **An async resolver** `() => Promise<string | null>` — the escape
70
- * hatch when the exchange needs custom headers, a body, or a non-HTTP
71
- * mint (vault rotation, AWS STS, a Better Auth session). Same renewal
72
- * machinery as the endpoint form.
58
+ * - **An async resolver** `() => Promise<string | null>` — the escape hatch for
59
+ * when the exchange needs custom headers, a request body, or a non-HTTP mint
60
+ * (vault rotation, a cloud token service, an existing auth session). It uses
61
+ * the same renewal machinery as the endpoint form.
73
62
  *
74
- * Endpoint/resolver contract: produce a token; produce `null` when the login
75
- * itself is gone (terminal the client signs out / fails `ready()` with
76
- * `session_expired`); or THROW on a transient failure (→ back off and retry,
77
- * never sign out). The endpoint form maps HTTP onto this for you: 401/403 →
78
- * signed out, any other failure transient.
63
+ * The endpoint and resolver forms share one contract: return a token; return
64
+ * `null` when the login itself is gone (terminal the client signs out and
65
+ * fails `ready()` with `session_expired`); or throw on a transient failure, which
66
+ * backs off and retries without signing out. The endpoint form maps HTTP onto
67
+ * this for you: 401 and 403 mean signed out, any other failure is transient.
79
68
  */
80
69
  apiKey?: string | ApiKeySetter | null | undefined;
81
70
  /**
82
- * Session-mint endpoint — **the browser auth field**, and the named twin of
83
- * `apiKey`'s endpoint-string shape (Liveblocks `authEndpoint` / Ably
84
- * `authUrl`). Point it at the route that mints the signed-in user's
85
- * short-lived token (`ablo init` scaffolds `/api/ablo-session`):
71
+ * The session-mint endpoint — the browser-side auth field, and the named
72
+ * counterpart to the endpoint-string form of {@link AbloOptions.apiKey}. Point it
73
+ * at the route that mints the signed-in user's short-lived token:
86
74
  *
87
75
  * ```ts
88
76
  * const ablo = Ablo({ schema, authEndpoint: '/api/ablo-session' });
89
77
  * ```
90
78
  *
91
- * The SDK owns the whole exchange POSTs the route (same-origin, cookies
92
- * included), reads `{ token }`, keeps it fresh ahead of expiry, re-mints
93
- * when the server reports it stale. 401/403 from the route = signed out;
94
- * any other failure is retried, never a sign-out. Also accepts an async
95
- * resolver `() => Promise<string | null>` when the exchange needs custom
96
- * headers or a body (same contract as the `apiKey` resolver form).
79
+ * The client owns the whole exchange: it POSTs the route (same-origin, cookies
80
+ * included), reads `{ token }`, keeps it fresh ahead of expiry, and re-mints when
81
+ * the server reports the token stale. A 401 or 403 from the route means signed
82
+ * out; any other failure is retried rather than treated as a sign-out. It also
83
+ * accepts an async resolver `() => Promise<string | null>` when the exchange
84
+ * needs custom headers or a body — the same contract as the resolver form of
85
+ * `apiKey`.
97
86
  *
98
- * Mutually exclusive with `apiKey` servers hold a key, browsers hold a
99
- * mint route; passing both is a validation error.
87
+ * Mutually exclusive with `apiKey`: a server holds a key, a browser holds a mint
88
+ * route, and passing both is a validation error.
100
89
  */
101
90
  authEndpoint?: string | ApiKeySetter | null | undefined;
102
91
  /**
103
- * @deprecated The direct connector lets Ablo dial INTO your Postgres and write to
104
- * it the operate-their-database posture we are moving off. Ablo is Stripe-shaped:
105
- * it hosts only the transaction log (the ordered sync_deltas) + coordination, never
106
- * your data; your rows always live in your own database. Use the signed Data Source
107
- * endpoint instead keep `DATABASE_URL` in your app, expose `dataSource(...)`, and
108
- * let your server own the write while Ablo coordinates the sync stream. To keep the
109
- * log in your infra too, self-host the engine. See
110
- * docs/plans/stripe-shaped-storage-posture.md.
92
+ * @deprecated The direct connector lets Ablo dial into your Postgres and write to
93
+ * it directly. Prefer the signed data-source endpoint: keep your `DATABASE_URL`
94
+ * in your own app, expose `dataSource(...)`, and let your server own the write
95
+ * while Ablo coordinates the sync stream. Ablo hosts only the ordered
96
+ * `sync_deltas` log and coordination, never your rows. To keep the log in your own
97
+ * infrastructure as well, self-host the engine.
111
98
  *
112
- * Still honored at runtime for back-compat. SERVER-ONLY: it carries credentials, so
113
- * it is never sent from the browser constructing a client with `databaseUrl` and
114
- * `dangerouslyAllowBrowser` throws. If you use it, provide a NON-superuser,
115
- * non-`BYPASSRLS` role; the connector rejects privileged roles that cannot enforce RLS.
99
+ * Still honored at runtime for backward compatibility. It is server-only: because
100
+ * it carries credentials it is never sent from the browser, and constructing a
101
+ * client with both `databaseUrl` and `dangerouslyAllowBrowser` throws. If you do
102
+ * use it, supply a role that is neither a superuser nor `BYPASSRLS`; the connector
103
+ * rejects privileged roles that cannot enforce row-level security.
116
104
  */
117
105
  databaseUrl?: string | null | undefined;
118
106
  /**
@@ -123,35 +111,54 @@ export interface AbloOptions<S extends SchemaRecord = SchemaRecord> {
123
111
  */
124
112
  persistence?: AbloPersistence;
125
113
  /**
126
- * Transport selector. `'websocket'` (default) is the live client —
127
- * persistent socket, local synced pool, `onChange` subscriptions. `'http'`
128
- * returns the STATELESS client for server-side actors (agents, workers,
129
- * serverless): same `ablo.<model>` surface and coordination plane, but each
130
- * call is one HTTP round-trip, identity rides the Bearer credential, and no
131
- * socket is ever opened. With `'http'` the return type narrows to
132
- * `AbloHttpClient<S>`, so stateful-only capabilities (`get`/`getAll`,
133
- * `onChange`) are compile errors rather than latent runtime gaps.
114
+ * Durable commit-envelope storage for server-side agents and workers.
115
+ * The stateful browser client uses its strict IndexedDB transaction store;
116
+ * the stateless HTTP client has no implicit filesystem and therefore needs a
117
+ * workflow-, SQLite-, or filesystem-backed implementation to survive a
118
+ * process restart. One store may serve several actors because every record
119
+ * is checked against its authenticated scope before replay.
120
+ */
121
+ commitOutbox?: CommitOutboxStore;
122
+ /**
123
+ * Stable actor/server scope for an injected HTTP {@link commitOutbox}.
124
+ * Omit it to resolve `organizationId` and `participantId` from the authenticated
125
+ * `/auth/identity` endpoint. Supplying it avoids that one setup request in
126
+ * trusted worker environments; `namespace` distinguishes deployments or
127
+ * workflow lanes that share the same actor identity.
128
+ */
129
+ commitOutboxScope?: CommitOutboxScope;
130
+ /**
131
+ * Selects the transport. `'websocket'` (the default) is the live client: a
132
+ * persistent socket, a local synced cache, and `onChange` subscriptions. `'http'`
133
+ * returns the stateless client for server-side actors — agents, workers, and
134
+ * serverless handlers. It offers the same `ablo.<model>` surface and coordination
135
+ * plane, but every call is a single HTTP round-trip, identity rides the bearer
136
+ * credential, and no socket is opened. With `'http'` the return type narrows to
137
+ * {@link AbloHttpClient}, so stateful-only capabilities such as `get`, `getAll`,
138
+ * and `onChange` become compile errors instead of runtime gaps.
134
139
  *
135
- * Note: session/credential minting (`sessions.create`) currently runs on the
136
- * stateful (default) client, not the http client.
140
+ * Note: session minting through `sessions.create` runs on the default WebSocket
141
+ * client, not the HTTP client.
137
142
  *
138
143
  * @default 'websocket'
139
144
  */
140
145
  transport?: 'websocket' | 'http' | undefined;
141
146
  /**
142
- * Turn Ablo's diagnostic logging on/off. `true` surfaces the `[Ablo]`
143
- * coordination trace — claims requested / queued / granted / released, agent
144
- * handovers, connection state — so you can SEE the human+agent coordination
145
- * you built while debugging. Omitted/`false` keeps the quiet default (only
146
- * warnings + errors). For a middle ground use {@link logLevel}. Env override:
147
- * `ABLO_LOG_LEVEL`. Ignored if a custom logger is supplied.
147
+ * Turns Ablo's diagnostic logging on or off. `true` surfaces the `[Ablo]`
148
+ * coordination trace — claims requested, queued, granted, and released, agent
149
+ * handovers, and connection state — so you can watch the coordination between
150
+ * humans and agents while debugging. Omitting it, or `false`, keeps the quiet
151
+ * default of warnings and errors only. For a middle ground use {@link logLevel}.
152
+ * The `ABLO_LOG_LEVEL` environment variable overrides it, and a custom logger
153
+ * takes precedence.
148
154
  */
149
155
  debug?: boolean | undefined;
150
156
  /**
151
- * Log threshold for the default `[Ablo]` logger (takes precedence over
152
- * {@link debug}). `'info'` = coordination + connection events without the
153
- * per-model registration firehose; `'debug'` = everything; `'warn'` (default)
154
- * = warnings + errors only; `'silent'` = nothing. Env override: `ABLO_LOG_LEVEL`.
157
+ * The log threshold for the default `[Ablo]` logger; takes precedence over
158
+ * {@link debug}. `'info'` shows coordination and connection events without the
159
+ * per-model registration detail, `'debug'` shows everything, `'warn'` (the
160
+ * default) shows warnings and errors only, and `'silent'` shows nothing. The
161
+ * `ABLO_LOG_LEVEL` environment variable overrides it.
155
162
  */
156
163
  logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'silent' | undefined;
157
164
  /**
@@ -178,18 +185,15 @@ export interface AbloOptions<S extends SchemaRecord = SchemaRecord> {
178
185
  }
179
186
  export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
180
187
  /**
181
- * API key used for authentication.
188
+ * The API key used for authentication.
182
189
  *
183
- * Accepts a static string (`sk_live_...`) or an async function that
184
- * resolves to one. Defaults to `process.env['ABLO_API_KEY']`.
190
+ * Accepts a static string (`sk_live_...`) or an async function that resolves to
191
+ * one. Defaults to the `ABLO_API_KEY` environment variable.
185
192
  *
186
- * When a function is provided, it's invoked before each request so
187
- * you can rotate or refresh credentials at runtime. The function
188
- * must return a non-empty string; otherwise an `AbloAuthenticationError`
189
- * is thrown. If the function throws, the error is wrapped with the
190
- * original available as `cause`.
191
- *
192
- * Mirrors Anthropic / OpenAI / Stripe SDK shape exactly.
193
+ * When a function is provided, it is invoked before each request, so you can
194
+ * rotate or refresh credentials at runtime. It must return a non-empty string, or
195
+ * an `AbloAuthenticationError` is thrown; if it throws, the error is wrapped with
196
+ * the original available as `cause`.
193
197
  */
194
198
  apiKey?: string | ApiKeySetter | null | undefined;
195
199
  /**
@@ -198,12 +202,11 @@ export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
198
202
  */
199
203
  authEndpoint?: string | ApiKeySetter | null | undefined;
200
204
  /**
201
- * Bearer auth token. Sent as `Authorization: Bearer <token>` on
202
- * every request.
205
+ * A bearer auth token, sent as `Authorization: Bearer <token>` on every request.
203
206
  *
204
- * Use this for self-hosted deployments where your auth layer mints
205
- * cap tokens directly. Hosted-cloud consumers pass `apiKey` instead;
206
- * the server handles cap-mint internally.
207
+ * Use it for self-hosted deployments where your own auth layer mints capability
208
+ * tokens directly. Hosted-cloud consumers pass `apiKey` instead and let the
209
+ * server mint the capability token.
207
210
  */
208
211
  authToken?: string | null | undefined;
209
212
  /**
@@ -244,59 +247,62 @@ export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
244
247
  */
245
248
  schema: Schema<S>;
246
249
  /**
247
- * @deprecated Server derives participant kind from the apiKey's
248
- * scope. Pass apiKey only; this option will be removed once the
249
- * server-internal cap-mint flow lands.
250
+ * @deprecated The server derives the participant kind from the apiKey's scope.
251
+ * Pass `apiKey` only.
250
252
  */
251
253
  kind?: 'user' | 'agent' | 'system';
252
254
  /**
253
- * @deprecated Server derives user identity from the apiKey's
254
- * scope (or from `Ablo-Acting-User` request header for B2B2C).
255
- * Removed once Phase 3 ships.
255
+ * @deprecated The server derives user identity from the apiKey's scope, or from
256
+ * the `Ablo-Acting-User` request header for multi-tenant setups. Pass `apiKey`
257
+ * only.
256
258
  */
257
259
  user?: {
258
260
  id: string;
259
261
  teamIds?: string[];
260
262
  };
261
263
  /**
262
- * @deprecated Server derives agent identity from the apiKey's
263
- * scope. Removed once Phase 3 ships.
264
+ * @deprecated The server derives agent identity from the apiKey's scope. Pass
265
+ * `apiKey` only.
264
266
  */
265
267
  agentId?: string;
266
268
  /**
267
- * @deprecated Cap-mint moves server-internal in Phase 3. Pass
268
- * `apiKey` only; the server handles capability issuance.
269
+ * @deprecated Pass `apiKey` only; the server issues the capability token.
269
270
  */
270
271
  capabilityToken?: string;
271
272
  /** Custom logger (default: console). Supplying one bypasses {@link debug}/{@link logLevel}. */
272
273
  logger?: SyncLogger;
273
274
  /**
274
- * Turn Ablo's diagnostic logging on/off. `true` surfaces the `[Ablo]`
275
- * coordination trace — claims acquired / queued / granted / released, agent
276
- * handovers, connection state — plus internal lifecycle, so you can SEE the
277
- * human+agent coordination you built. Omitted/`false` keeps the quiet default
278
- * (only warnings + errors). For a middle ground use {@link logLevel}.
279
- * Env override: `ABLO_LOG_LEVEL`. Ignored if a custom {@link logger} is passed.
275
+ * Turns Ablo's diagnostic logging on or off. `true` surfaces the `[Ablo]`
276
+ * coordination trace — claims acquired, queued, granted, and released, agent
277
+ * handovers, and connection state — along with internal lifecycle events, so you
278
+ * can watch the coordination between humans and agents. Omitting it, or `false`,
279
+ * keeps the quiet default of warnings and errors only. For a middle ground use
280
+ * {@link logLevel}. The `ABLO_LOG_LEVEL` environment variable overrides it, and a
281
+ * custom {@link logger} takes precedence.
280
282
  */
281
283
  debug?: boolean;
282
284
  /**
283
- * Log threshold for the default `[Ablo]` logger (takes precedence over
284
- * {@link debug}). `'info'` = coordination + connection events without the
285
- * per-model registration firehose; `'debug'` = everything; `'warn'` (default)
286
- * = warnings + errors only; `'silent'` = nothing. Env override: `ABLO_LOG_LEVEL`.
285
+ * The log threshold for the default `[Ablo]` logger; takes precedence over
286
+ * {@link debug}. `'info'` shows coordination and connection events without the
287
+ * per-model registration detail, `'debug'` shows everything, `'warn'` (the
288
+ * default) shows warnings and errors only, and `'silent'` shows nothing. The
289
+ * `ABLO_LOG_LEVEL` environment variable overrides it.
287
290
  */
288
291
  logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'silent';
289
- /** ObjectPool size limit (default: 10000) */
292
+ /** InstanceCache size limit (default: 10000) */
290
293
  maxPoolSize?: number;
291
294
  /**
292
- * Local persistence mode. Defaults to `memory` so Ablo behaves like a
293
- * point solution for shared state instead of silently bolting IndexedDB
294
- * durability onto every browser consumer.
295
+ * Local persistence mode. Defaults to `memory`, keeping the local cache in
296
+ * process rather than adding IndexedDB durability to every browser consumer.
295
297
  *
296
- * Pass `persistence: 'indexeddb'` only when you want offline queueing
297
- * and a reload-surviving local cache in a browser.
298
+ * Pass `persistence: 'indexeddb'` only when you want offline queueing and a
299
+ * reload-surviving local cache in a browser.
298
300
  */
299
301
  persistence?: AbloPersistence;
302
+ /** Internal mirror of {@link AbloOptions.commitOutbox}. */
303
+ commitOutbox?: CommitOutboxStore;
304
+ /** Internal mirror of {@link AbloOptions.commitOutboxScope}. */
305
+ commitOutboxScope?: CommitOutboxScope;
300
306
  /** @deprecated Use `persistence: 'indexeddb'` for durable browser storage. */
301
307
  offline?: boolean;
302
308
  /**
@@ -306,26 +312,23 @@ export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
306
312
  */
307
313
  inMemory?: boolean;
308
314
  /**
309
- * If true, initialization starts immediately in the background so
310
- * `sync.reports.findMany()` works after `await sync.ready()`.
311
- *
312
- * If false (default), the consumer MUST call `await sync.ready()` before
313
- * using the engine — any query before that returns empty results.
315
+ * When `true`, initialization starts immediately in the background, so reads work
316
+ * once `await ready()` resolves.
314
317
  *
315
- * Default: false (explicit is better prevents silent init failures).
318
+ * When `false` (the default), you must call `await ready()` before using the
319
+ * engine; any query before that returns empty results. The explicit default
320
+ * guards against silent initialization failures.
316
321
  */
317
322
  autoStart?: boolean;
318
323
  /**
319
- * How aggressively this client should pull baseline state at
320
- * startup.
324
+ * How much baseline state this client pulls at startup.
321
325
  *
322
- * - `'full'`: pull every delta in the configured sync groups before
323
- * `ready()` resolves. Default for `kind: 'user'`.
324
- * - `'none'`: open the WS and process live deltas only no baseline
325
- * fetch. Reads round-trip via `model.retrieve()`; subscriptions
326
- * populate the pool lazily via covering deltas. Default for
327
- * `kind: 'agent'` because agent-worker / routine runners don't
328
- * need (or want) a local replica of the org's tenant plane.
326
+ * - `'full'`: pull every delta in the configured sync groups before `ready()`
327
+ * resolves. The default for user clients.
328
+ * - `'none'`: open the socket and process live deltas only, with no baseline
329
+ * fetch. Reads round-trip through `retrieve`, and subscriptions fill the local
330
+ * cache lazily. The default for agent clients, which do not need a local
331
+ * replica of the organization's data.
329
332
  */
330
333
  bootstrapMode?: 'full' | 'none';
331
334
  /**
@@ -366,13 +369,10 @@ export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
366
369
  */
367
370
  configOverrides?: Partial<SyncEngineConfig>;
368
371
  /**
369
- * Sync groups (entity scopes) this client subscribes to. **Provisional, not
370
- * deprecated** pick the right lane: normally the server derives these from
371
- * the apiKey's scope, but passing them is still REQUIRED today in any config
372
- * where the key doesn't resolve them (omitting yields a `degenerate
373
- * syncGroups` warning and a zero-fan-out client). Keep passing it explicitly
374
- * until the server-derived path ships in Phase 3, at which point it becomes a
375
- * true no-op and is removed. Build values with `syncGroup(kind, id)` from
372
+ * The sync groups (entity scopes) this client subscribes to. Normally the server
373
+ * derives these from the apiKey's scope; pass them explicitly when the key does
374
+ * not resolve them, otherwise the client fans out nothing and logs a `degenerate
375
+ * syncGroups` warning. Build values with `syncGroup(kind, id)` from
376
376
  * `@abloatai/ablo/schema`.
377
377
  */
378
378
  syncGroups?: string[];
@@ -380,7 +380,7 @@ export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
380
380
  * Override the bootstrap endpoint base URL. Use this when your sync
381
381
  * server's HTTP API lives on a different host than the WebSocket URL.
382
382
  *
383
- * Must include the `/api` prefix — `BootstrapHelper` appends
383
+ * Must include the `/api` prefix — `BootstrapFetcher` appends
384
384
  * `/sync/bootstrap` directly. Example:
385
385
  * `'http://api.example.com/api'` → `http://api.example.com/api/sync/bootstrap`.
386
386
  *
@@ -388,9 +388,9 @@ export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
388
388
  */
389
389
  bootstrapBaseUrl?: string;
390
390
  /**
391
- * Ablo-owned account scope. Required for Branch 3 identity resolution
392
- * in `identity.ts` without it the SDK falls through to the
393
- * `/api/identity` HTTP-derived path (Branch 2).
391
+ * The account scope. Supply it together with a user or agent id to resolve
392
+ * identity locally without a server round-trip; without it, the client resolves
393
+ * identity from the token through the identity endpoint instead.
394
394
  */
395
395
  organizationId?: string;
396
396
  }
@@ -1,10 +1,6 @@
1
1
  /**
2
- * Option types for the `Ablo({...})` factory the public `AbloOptions` bag
3
- * and the full internal construction surface (`InternalAbloOptions`).
4
- *
5
- * Extracted from `Ablo.ts` so the option types can be referenced without
6
- * pulling in the factory's runtime graph. This module is type-only — ZERO
7
- * runtime imports — so importing it can never create a cycle. `Ablo.ts`
8
- * re-exports everything here, so existing import paths keep resolving.
2
+ * The option types for the {@link Ablo} client: the public {@link AbloOptions}
3
+ * bag callers pass, and the fuller {@link InternalAbloOptions} construction
4
+ * surface. This module holds only types and has no runtime imports.
9
5
  */
10
6
  export {};
@@ -1,19 +1,19 @@
1
1
  export interface RegisterDataSourceInput {
2
- /** HTTP API base, e.g. `https://api.abloatai.com/api` (from resolveBootstrapBaseUrl). */
2
+ /** The HTTP API base, for example `https://api.abloatai.com/api`. */
3
3
  readonly baseUrl: string;
4
- /** Secret key (`sk_…`) used to authenticate + derive the org. */
4
+ /** The secret key (`sk_…`) used to authenticate the call and derive the organization. */
5
5
  readonly apiKey: string | null;
6
- /** Postgres connection string for the direct connector. */
6
+ /** The Postgres connection string to register. */
7
7
  readonly databaseUrl: string;
8
- /** Optional Postgres schema (defaults server-side to `public`). */
8
+ /** An optional Postgres schema; the server defaults to `public`. */
9
9
  readonly schema?: string;
10
- /** Custom fetch (tests/proxies/odd runtimes). */
10
+ /** A custom fetch implementation for tests, proxies, or unusual runtimes. */
11
11
  readonly fetchImpl?: typeof fetch;
12
12
  }
13
13
  /**
14
- * POST the connection string to the self-serve datasource route. Resolves on
15
- * success (the org's data plane now points at this DB); throws an `AbloError`
16
- * with `datasource_registration_failed` otherwise so `ready()` surfaces it
17
- * instead of silently bootstrapping against the wrong store.
14
+ * Posts the connection string to the data-source registration route. Resolves once
15
+ * the organization's data plane points at this database; otherwise throws an
16
+ * {@link AbloError} with code `datasource_registration_failed`, so `ready()`
17
+ * surfaces the failure instead of quietly bootstrapping against the wrong store.
18
18
  */
19
19
  export declare function registerDataSource(input: RegisterDataSourceInput): Promise<void>;
@@ -1,25 +1,24 @@
1
1
  /**
2
- * Self-serve direct-kind datasource registration.
2
+ * Registers a direct database connection as an organization's data source.
3
3
  *
4
- * When a client is constructed with `databaseUrl`, the SDK registers that
5
- * connection string BEFORE bootstrap so the server resolves the org's data plane
6
- * to that direct connection.
4
+ * When a client is constructed with `databaseUrl`, the SDK calls this before
5
+ * bootstrap so the server points the organization's data plane at that connection.
7
6
  *
8
- * Targets the unified `POST /v1/datasources` resource; on a 404 (an older
9
- * server without the unified route) it falls back to the legacy
10
- * `POST /v1/datasource` alias so an SDK upgrade never strands registration.
7
+ * It posts to `POST /v1/datasources`, falling back to the older
8
+ * `POST /v1/datasource` route on a 404 so registration still works against an
9
+ * earlier server.
11
10
  *
12
- * The org is derived server-side from the API key the caller never sends an
13
- * organization id. The connection string is sent once over TLS and is never
14
- * echoed back (the server stores it as a secret and returns only a safe
15
- * `datasource` projection: host, database, schema).
11
+ * The organization is derived on the server from the API key; the caller never
12
+ * sends an organization id. The connection string is sent once over TLS and is
13
+ * never echoed back the server stores it as a secret and returns only a safe
14
+ * projection of the data source (host, database, schema).
16
15
  */
17
16
  import { AbloError } from '../errors.js';
18
17
  /**
19
- * POST the connection string to the self-serve datasource route. Resolves on
20
- * success (the org's data plane now points at this DB); throws an `AbloError`
21
- * with `datasource_registration_failed` otherwise so `ready()` surfaces it
22
- * instead of silently bootstrapping against the wrong store.
18
+ * Posts the connection string to the data-source registration route. Resolves once
19
+ * the organization's data plane points at this database; otherwise throws an
20
+ * {@link AbloError} with code `datasource_registration_failed`, so `ready()`
21
+ * surfaces the failure instead of quietly bootstrapping against the wrong store.
23
22
  */
24
23
  export async function registerDataSource(input) {
25
24
  if (!input.apiKey) {
@@ -51,7 +50,7 @@ export async function registerDataSource(input) {
51
50
  };
52
51
  let response = await post(`${base}/v1/datasources`);
53
52
  if (response.status === 404) {
54
- // Older server without the unified resource use the legacy alias.
53
+ // The newer route is absent on an older server; use the earlier one.
55
54
  response = await post(`${base}/v1/datasource`);
56
55
  }
57
56
  if (!response.ok) {