@abloatai/ablo 0.26.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +101 -85
  3. package/dist/BaseSyncedStore.d.ts +85 -88
  4. package/dist/BaseSyncedStore.js +131 -147
  5. package/dist/Database.d.ts +54 -68
  6. package/dist/Database.js +97 -113
  7. package/dist/{ObjectPool.d.ts → InstanceCache.d.ts} +10 -13
  8. package/dist/{ObjectPool.js → InstanceCache.js} +85 -83
  9. package/dist/LazyReferenceCollection.d.ts +11 -15
  10. package/dist/LazyReferenceCollection.js +12 -16
  11. package/dist/Model.d.ts +37 -52
  12. package/dist/Model.js +46 -61
  13. package/dist/ModelRegistry.d.ts +21 -19
  14. package/dist/ModelRegistry.js +23 -27
  15. package/dist/NetworkMonitor.d.ts +5 -6
  16. package/dist/NetworkMonitor.js +5 -6
  17. package/dist/SyncClient.d.ts +112 -112
  18. package/dist/SyncClient.js +165 -172
  19. package/dist/adapters/alwaysOnline.d.ts +6 -8
  20. package/dist/adapters/alwaysOnline.js +6 -8
  21. package/dist/adapters/inMemoryStorage.d.ts +9 -9
  22. package/dist/adapters/inMemoryStorage.js +9 -9
  23. package/dist/agent/Agent.d.ts +27 -32
  24. package/dist/agent/Agent.js +18 -19
  25. package/dist/agent/index.d.ts +4 -4
  26. package/dist/agent/index.js +5 -5
  27. package/dist/agent/session.d.ts +47 -44
  28. package/dist/agent/session.js +37 -48
  29. package/dist/agent/types.d.ts +26 -31
  30. package/dist/agent/types.js +6 -7
  31. package/dist/ai-sdk/coordinatedTool.d.ts +108 -0
  32. package/dist/ai-sdk/{coordinated-tool.js → coordinatedTool.js} +44 -38
  33. package/dist/ai-sdk/coordinationContext.d.ts +46 -0
  34. package/dist/ai-sdk/{coordination-context.js → coordinationContext.js} +26 -33
  35. package/dist/ai-sdk/index.d.ts +25 -22
  36. package/dist/ai-sdk/index.js +25 -22
  37. package/dist/ai-sdk/wrap.d.ts +6 -7
  38. package/dist/ai-sdk/wrap.js +1 -1
  39. package/dist/auth/credentialPolicy.d.ts +69 -74
  40. package/dist/auth/credentialPolicy.js +51 -56
  41. package/dist/auth/credentialSource.d.ts +6 -5
  42. package/dist/auth/credentialSource.js +9 -10
  43. package/dist/auth/index.d.ts +59 -58
  44. package/dist/auth/index.js +31 -37
  45. package/dist/auth/schemas.d.ts +5 -4
  46. package/dist/auth/schemas.js +5 -4
  47. package/dist/batching/index.d.ts +19 -21
  48. package/dist/batching/index.js +14 -17
  49. package/dist/cli.cjs +167 -119
  50. package/dist/client/Ablo.d.ts +73 -73
  51. package/dist/client/Ablo.js +125 -160
  52. package/dist/client/ApiClient.d.ts +30 -19
  53. package/dist/client/ApiClient.js +133 -38
  54. package/dist/client/auth.d.ts +47 -47
  55. package/dist/client/auth.js +108 -117
  56. package/dist/client/claimHeartbeatLoop.d.ts +50 -0
  57. package/dist/client/claimHeartbeatLoop.js +88 -0
  58. package/dist/client/consoleLogger.d.ts +5 -6
  59. package/dist/client/consoleLogger.js +5 -6
  60. package/dist/client/createInternalComponents.d.ts +14 -17
  61. package/dist/client/createInternalComponents.js +25 -30
  62. package/dist/client/createModelProxy.d.ts +130 -120
  63. package/dist/client/createModelProxy.js +152 -122
  64. package/dist/client/credentialEndpoint.d.ts +40 -42
  65. package/dist/client/credentialEndpoint.js +35 -36
  66. package/dist/client/functionalUpdate.d.ts +29 -27
  67. package/dist/client/functionalUpdate.js +21 -21
  68. package/dist/client/hostedEndpoints.d.ts +9 -12
  69. package/dist/client/hostedEndpoints.js +9 -12
  70. package/dist/client/httpClient.d.ts +57 -53
  71. package/dist/client/httpClient.js +29 -31
  72. package/dist/client/identity.d.ts +15 -20
  73. package/dist/client/identity.js +47 -58
  74. package/dist/client/modelRegistration.d.ts +5 -9
  75. package/dist/client/modelRegistration.js +67 -87
  76. package/dist/client/options.d.ts +134 -157
  77. package/dist/client/options.js +3 -7
  78. package/dist/client/registerDataSource.d.ts +9 -9
  79. package/dist/client/registerDataSource.js +15 -16
  80. package/dist/client/resourceTypes.d.ts +64 -75
  81. package/dist/client/resourceTypes.js +4 -10
  82. package/dist/client/schemaConfig.d.ts +31 -43
  83. package/dist/client/schemaConfig.js +38 -50
  84. package/dist/client/sessionMint.d.ts +16 -12
  85. package/dist/client/sessionMint.js +26 -31
  86. package/dist/client/validateAbloOptions.d.ts +12 -14
  87. package/dist/client/validateAbloOptions.js +8 -9
  88. package/dist/client/writeOptionsSchema.d.ts +18 -16
  89. package/dist/client/writeOptionsSchema.js +23 -20
  90. package/dist/client/wsMutationExecutor.d.ts +15 -20
  91. package/dist/client/wsMutationExecutor.js +17 -23
  92. package/dist/context.d.ts +6 -4
  93. package/dist/context.js +6 -4
  94. package/dist/coordination/index.d.ts +10 -8
  95. package/dist/coordination/index.js +14 -12
  96. package/dist/coordination/schema.d.ts +176 -128
  97. package/dist/coordination/schema.js +197 -133
  98. package/dist/coordination/trace.d.ts +9 -10
  99. package/dist/coordination/trace.js +13 -14
  100. package/dist/core/DatabaseManager.d.ts +5 -7
  101. package/dist/core/DatabaseManager.js +15 -19
  102. package/dist/core/QueryProcessor.d.ts +7 -9
  103. package/dist/core/QueryProcessor.js +22 -28
  104. package/dist/core/QueryView.d.ts +8 -8
  105. package/dist/core/QueryView.js +2 -2
  106. package/dist/core/StoreManager.d.ts +12 -14
  107. package/dist/core/StoreManager.js +21 -24
  108. package/dist/core/ViewRegistry.d.ts +5 -5
  109. package/dist/core/ViewRegistry.js +4 -4
  110. package/dist/core/index.d.ts +17 -12
  111. package/dist/core/index.js +32 -26
  112. package/dist/core/openIDBWithTimeout.d.ts +38 -36
  113. package/dist/core/openIDBWithTimeout.js +42 -43
  114. package/dist/core/queryUtils.d.ts +45 -0
  115. package/dist/core/queryUtils.js +69 -0
  116. package/dist/core/storeContract.d.ts +63 -61
  117. package/dist/core/storeContract.js +8 -12
  118. package/dist/environment.d.ts +28 -0
  119. package/dist/environment.js +21 -0
  120. package/dist/errorCodes.d.ts +107 -99
  121. package/dist/errorCodes.js +131 -132
  122. package/dist/errors.d.ts +160 -166
  123. package/dist/errors.js +155 -158
  124. package/dist/index.d.ts +30 -27
  125. package/dist/index.js +89 -86
  126. package/dist/interfaces/index.d.ts +102 -113
  127. package/dist/interfaces/index.js +5 -4
  128. package/dist/keys/index.d.ts +27 -29
  129. package/dist/keys/index.js +41 -40
  130. package/dist/mutators/RecordingTransaction.d.ts +16 -16
  131. package/dist/mutators/RecordingTransaction.js +31 -37
  132. package/dist/mutators/Transaction.d.ts +18 -26
  133. package/dist/mutators/Transaction.js +14 -20
  134. package/dist/mutators/UndoManager.d.ts +122 -131
  135. package/dist/mutators/UndoManager.js +145 -156
  136. package/dist/mutators/defineMutators.d.ts +23 -34
  137. package/dist/mutators/defineMutators.js +14 -20
  138. package/dist/mutators/inverseOp.d.ts +12 -15
  139. package/dist/mutators/inverseOp.js +12 -15
  140. package/dist/mutators/mutateActions.d.ts +10 -9
  141. package/dist/mutators/mutateActions.js +1 -1
  142. package/dist/mutators/readerActions.d.ts +9 -8
  143. package/dist/mutators/readerActions.js +2 -2
  144. package/dist/mutators/undoApply.d.ts +31 -27
  145. package/dist/mutators/undoApply.js +26 -24
  146. package/dist/policy/index.d.ts +5 -3
  147. package/dist/policy/index.js +5 -3
  148. package/dist/policy/types.d.ts +104 -100
  149. package/dist/policy/types.js +67 -66
  150. package/dist/query/client.d.ts +28 -23
  151. package/dist/query/client.js +45 -43
  152. package/dist/query/types.d.ts +37 -60
  153. package/dist/query/types.js +13 -33
  154. package/dist/react/AbloProvider.d.ts +1 -1
  155. package/dist/react/AbloProvider.js +2 -2
  156. package/dist/react/context.d.ts +25 -28
  157. package/dist/react/context.js +9 -10
  158. package/dist/react/index.d.ts +41 -42
  159. package/dist/react/index.js +37 -38
  160. package/dist/react/internalContext.d.ts +17 -19
  161. package/dist/react/useAblo.d.ts +23 -22
  162. package/dist/react/useAblo.js +16 -14
  163. package/dist/react/useCurrentUserId.d.ts +8 -7
  164. package/dist/react/useCurrentUserId.js +8 -7
  165. package/dist/react/useErrorListener.d.ts +7 -7
  166. package/dist/react/useErrorListener.js +10 -11
  167. package/dist/react/useMutationFailureListener.d.ts +8 -8
  168. package/dist/react/useMutationFailureListener.js +8 -8
  169. package/dist/react/useMutators.d.ts +11 -11
  170. package/dist/react/useMutators.js +3 -3
  171. package/dist/react/useReactive.js +2 -2
  172. package/dist/react/useSyncStatus.d.ts +4 -6
  173. package/dist/react/useUndoScope.d.ts +7 -9
  174. package/dist/react/useUndoScope.js +1 -1
  175. package/dist/schema/coordination.d.ts +21 -25
  176. package/dist/schema/coordination.js +21 -25
  177. package/dist/schema/ddl.d.ts +43 -39
  178. package/dist/schema/ddl.js +75 -68
  179. package/dist/schema/ddlLock.d.ts +20 -24
  180. package/dist/schema/ddlLock.js +18 -23
  181. package/dist/schema/diff.d.ts +99 -61
  182. package/dist/schema/diff.js +43 -34
  183. package/dist/schema/field.d.ts +37 -42
  184. package/dist/schema/field.js +35 -48
  185. package/dist/schema/generate.d.ts +12 -12
  186. package/dist/schema/generate.js +12 -12
  187. package/dist/schema/index.d.ts +2 -2
  188. package/dist/schema/index.js +21 -23
  189. package/dist/schema/model.d.ts +118 -143
  190. package/dist/schema/model.js +22 -33
  191. package/dist/schema/openapi.d.ts +10 -9
  192. package/dist/schema/openapi.js +5 -3
  193. package/dist/schema/queries.d.ts +29 -31
  194. package/dist/schema/queries.js +23 -25
  195. package/dist/schema/relation.d.ts +89 -99
  196. package/dist/schema/relation.js +13 -13
  197. package/dist/schema/residency.d.ts +16 -13
  198. package/dist/schema/residency.js +16 -13
  199. package/dist/schema/roles.d.ts +36 -43
  200. package/dist/schema/roles.js +31 -37
  201. package/dist/schema/schema.d.ts +33 -42
  202. package/dist/schema/schema.js +31 -32
  203. package/dist/schema/select.d.ts +13 -13
  204. package/dist/schema/select.js +13 -13
  205. package/dist/schema/serialize.d.ts +28 -31
  206. package/dist/schema/serialize.js +27 -31
  207. package/dist/schema/sugar.d.ts +17 -32
  208. package/dist/schema/sugar.js +14 -29
  209. package/dist/schema/{sync-delta-row.d.ts → syncDeltaRow.d.ts} +26 -49
  210. package/dist/schema/syncDeltaRow.js +89 -0
  211. package/dist/schema/tenancy.d.ts +44 -46
  212. package/dist/schema/tenancy.js +46 -48
  213. package/dist/server/adapter.d.ts +58 -58
  214. package/dist/server/adapter.js +13 -14
  215. package/dist/server/commit.d.ts +60 -64
  216. package/dist/server/index.d.ts +9 -10
  217. package/dist/server/index.js +1 -1
  218. package/dist/server/readConfig.d.ts +70 -0
  219. package/dist/server/readConfig.js +8 -0
  220. package/dist/server/storageMode.d.ts +23 -0
  221. package/dist/server/storageMode.js +17 -0
  222. package/dist/source/adapter.d.ts +30 -25
  223. package/dist/source/adapter.js +10 -10
  224. package/dist/source/adapters/drizzle.d.ts +28 -23
  225. package/dist/source/adapters/drizzle.js +30 -25
  226. package/dist/source/adapters/kysely.d.ts +27 -25
  227. package/dist/source/adapters/kysely.js +24 -23
  228. package/dist/source/adapters/memory.d.ts +8 -7
  229. package/dist/source/adapters/memory.js +9 -8
  230. package/dist/source/adapters/prisma.d.ts +13 -12
  231. package/dist/source/adapters/prisma.js +22 -25
  232. package/dist/source/conformance.d.ts +18 -11
  233. package/dist/source/conformance.js +17 -11
  234. package/dist/source/connector.d.ts +31 -32
  235. package/dist/source/connector.js +28 -28
  236. package/dist/source/connectorProtocol.d.ts +160 -0
  237. package/dist/source/connectorProtocol.js +162 -0
  238. package/dist/source/contract.d.ts +26 -27
  239. package/dist/source/contract.js +28 -29
  240. package/dist/source/factory.d.ts +46 -58
  241. package/dist/source/factory.js +22 -27
  242. package/dist/source/index.d.ts +7 -9
  243. package/dist/source/index.js +12 -14
  244. package/dist/source/migrations.d.ts +9 -9
  245. package/dist/source/migrations.js +9 -9
  246. package/dist/source/next.d.ts +9 -10
  247. package/dist/source/next.js +6 -7
  248. package/dist/source/pushQueue.d.ts +69 -47
  249. package/dist/source/pushQueue.js +32 -28
  250. package/dist/source/signing.d.ts +46 -17
  251. package/dist/source/signing.js +28 -11
  252. package/dist/source/types.d.ts +121 -104
  253. package/dist/source/types.js +13 -14
  254. package/dist/stores/ObjectStore.d.ts +10 -11
  255. package/dist/stores/ObjectStore.js +11 -12
  256. package/dist/stores/ObjectStoreContract.d.ts +12 -15
  257. package/dist/stores/SyncActionStore.d.ts +7 -11
  258. package/dist/stores/SyncActionStore.js +13 -17
  259. package/dist/surface.d.ts +27 -20
  260. package/dist/surface.js +27 -20
  261. package/dist/sync/{BootstrapHelper.d.ts → BootstrapFetcher.d.ts} +36 -42
  262. package/dist/sync/{BootstrapHelper.js → BootstrapFetcher.js} +76 -76
  263. package/dist/sync/ConnectionManager.d.ts +39 -50
  264. package/dist/sync/ConnectionManager.js +55 -66
  265. package/dist/sync/NetworkProbe.d.ts +24 -29
  266. package/dist/sync/NetworkProbe.js +63 -69
  267. package/dist/sync/{HydrationCoordinator.d.ts → OnDemandLoader.d.ts} +42 -41
  268. package/dist/sync/{HydrationCoordinator.js → OnDemandLoader.js} +59 -54
  269. package/dist/sync/{AreaOfInterestManager.d.ts → SubscriptionManager.d.ts} +43 -57
  270. package/dist/sync/{AreaOfInterestManager.js → SubscriptionManager.js} +43 -51
  271. package/dist/sync/SyncWebSocket.d.ts +139 -165
  272. package/dist/sync/SyncWebSocket.js +191 -223
  273. package/dist/sync/awaitClaimGrant.d.ts +18 -18
  274. package/dist/sync/awaitClaimGrant.js +11 -11
  275. package/dist/sync/bootstrapApply.d.ts +34 -24
  276. package/dist/sync/bootstrapApply.js +27 -19
  277. package/dist/sync/commitFrames.d.ts +21 -20
  278. package/dist/sync/commitFrames.js +18 -18
  279. package/dist/sync/createClaimStream.d.ts +23 -22
  280. package/dist/sync/createClaimStream.js +105 -23
  281. package/dist/sync/createPresenceStream.d.ts +19 -18
  282. package/dist/sync/createPresenceStream.js +25 -26
  283. package/dist/sync/createSnapshot.d.ts +12 -14
  284. package/dist/sync/createSnapshot.js +20 -26
  285. package/dist/sync/credentialLifecycle.d.ts +104 -104
  286. package/dist/sync/credentialLifecycle.js +140 -147
  287. package/dist/sync/deltaPipeline.d.ts +36 -34
  288. package/dist/sync/deltaPipeline.js +64 -65
  289. package/dist/sync/groupChange.d.ts +63 -61
  290. package/dist/sync/groupChange.js +74 -78
  291. package/dist/sync/heartbeat.d.ts +34 -33
  292. package/dist/sync/heartbeat.js +31 -31
  293. package/dist/sync/participants.d.ts +19 -19
  294. package/dist/sync/schemas.d.ts +3 -2
  295. package/dist/sync/schemas.js +14 -10
  296. package/dist/sync/syncCursor.d.ts +17 -21
  297. package/dist/sync/syncCursor.js +17 -21
  298. package/dist/sync/syncPlan.d.ts +28 -36
  299. package/dist/sync/syncPlan.js +18 -19
  300. package/dist/sync/syncPosition.d.ts +54 -49
  301. package/dist/sync/syncPosition.js +57 -52
  302. package/dist/sync/wsFrameHandlers.d.ts +35 -36
  303. package/dist/sync/wsFrameHandlers.js +63 -67
  304. package/dist/testing/fixtures/bootstrap.d.ts +12 -6
  305. package/dist/testing/fixtures/bootstrap.js +12 -6
  306. package/dist/testing/fixtures/deltas.d.ts +30 -33
  307. package/dist/testing/fixtures/deltas.js +30 -33
  308. package/dist/testing/fixtures/models.d.ts +11 -10
  309. package/dist/testing/fixtures/models.js +11 -10
  310. package/dist/testing/helpers/{react-wrapper.d.ts → reactWrapper.d.ts} +13 -10
  311. package/dist/testing/helpers/{react-wrapper.js → reactWrapper.js} +15 -12
  312. package/dist/testing/helpers/{sync-engine-harness.d.ts → syncEngineHarness.d.ts} +17 -15
  313. package/dist/testing/helpers/{sync-engine-harness.js → syncEngineHarness.js} +12 -10
  314. package/dist/testing/helpers/wait.d.ts +13 -8
  315. package/dist/testing/helpers/wait.js +13 -8
  316. package/dist/testing/index.d.ts +3 -3
  317. package/dist/testing/index.js +2 -2
  318. package/dist/testing/mocks/MockMutationExecutor.d.ts +18 -17
  319. package/dist/testing/mocks/MockMutationExecutor.js +15 -14
  320. package/dist/testing/mocks/MockNetworkMonitor.d.ts +8 -8
  321. package/dist/testing/mocks/MockNetworkMonitor.js +8 -8
  322. package/dist/testing/mocks/MockSyncContext.d.ts +20 -17
  323. package/dist/testing/mocks/MockSyncContext.js +15 -13
  324. package/dist/testing/mocks/MockSyncStore.d.ts +10 -10
  325. package/dist/testing/mocks/MockSyncStore.js +11 -11
  326. package/dist/testing/mocks/MockWebSocket.d.ts +26 -22
  327. package/dist/testing/mocks/MockWebSocket.js +22 -21
  328. package/dist/transactions/TransactionQueue.d.ts +181 -176
  329. package/dist/transactions/TransactionQueue.js +338 -350
  330. package/dist/transactions/TransactionStore.d.ts +6 -4
  331. package/dist/transactions/TransactionStore.js +6 -4
  332. package/dist/transactions/UnconfirmedWrites.d.ts +82 -0
  333. package/dist/transactions/UnconfirmedWrites.js +104 -0
  334. package/dist/transactions/coalesceRules.d.ts +41 -17
  335. package/dist/transactions/coalesceRules.js +40 -17
  336. package/dist/transactions/commitPayload.d.ts +48 -52
  337. package/dist/transactions/commitPayload.js +48 -57
  338. package/dist/transactions/deltaConfirmation.d.ts +20 -22
  339. package/dist/transactions/deltaConfirmation.js +37 -45
  340. package/dist/transactions/optimisticApply.d.ts +49 -0
  341. package/dist/transactions/optimisticApply.js +65 -0
  342. package/dist/transactions/{persistedReplay.d.ts → replayValidation.d.ts} +28 -22
  343. package/dist/transactions/{persistedReplay.js → replayValidation.js} +33 -27
  344. package/dist/types/global.d.ts +46 -41
  345. package/dist/types/global.js +20 -19
  346. package/dist/types/index.d.ts +71 -77
  347. package/dist/types/index.js +22 -22
  348. package/dist/types/modelData.d.ts +6 -8
  349. package/dist/types/modelData.js +5 -7
  350. package/dist/types/participant.d.ts +10 -11
  351. package/dist/types/participant.js +6 -8
  352. package/dist/types/streams.d.ts +208 -195
  353. package/dist/types/streams.js +7 -7
  354. package/dist/utils/asyncIterator.d.ts +25 -32
  355. package/dist/utils/asyncIterator.js +25 -32
  356. package/dist/utils/duration.d.ts +12 -15
  357. package/dist/utils/duration.js +12 -15
  358. package/dist/utils/mobxSetup.d.ts +53 -0
  359. package/dist/utils/{mobx-setup.js → mobxSetup.js} +42 -98
  360. package/dist/webhooks/events.d.ts +21 -16
  361. package/dist/webhooks/events.js +10 -8
  362. package/dist/webhooks/index.d.ts +5 -7
  363. package/dist/webhooks/index.js +5 -7
  364. package/dist/{schema/sync-delta-wire.d.ts → wire/delta.d.ts} +58 -41
  365. package/dist/wire/delta.js +114 -0
  366. package/dist/wire/errorEnvelope.d.ts +30 -31
  367. package/dist/wire/errorEnvelope.js +34 -40
  368. package/dist/wire/frames.d.ts +79 -86
  369. package/dist/wire/frames.js +26 -33
  370. package/dist/wire/index.d.ts +14 -12
  371. package/dist/wire/index.js +30 -26
  372. package/dist/wire/listEnvelope.d.ts +16 -23
  373. package/dist/wire/listEnvelope.js +7 -6
  374. package/dist/wire/protocol.d.ts +25 -32
  375. package/dist/wire/protocol.js +25 -32
  376. package/dist/wire/protocolVersion.d.ts +44 -40
  377. package/dist/wire/protocolVersion.js +44 -40
  378. package/docs/coordination.md +59 -0
  379. package/package.json +11 -10
  380. package/dist/ai-sdk/coordinated-tool.d.ts +0 -101
  381. package/dist/ai-sdk/coordination-context.d.ts +0 -52
  382. package/dist/core/query-utils.d.ts +0 -34
  383. package/dist/core/query-utils.js +0 -59
  384. package/dist/schema/sync-delta-row.js +0 -103
  385. package/dist/schema/sync-delta-wire.js +0 -102
  386. package/dist/server/read-config.d.ts +0 -67
  387. package/dist/server/read-config.js +0 -8
  388. package/dist/server/storage-mode.d.ts +0 -8
  389. package/dist/server/storage-mode.js +0 -28
  390. package/dist/source/connector-protocol.d.ts +0 -159
  391. package/dist/source/connector-protocol.js +0 -161
  392. package/dist/transactions/OptimisticEchoTracker.d.ts +0 -82
  393. package/dist/transactions/OptimisticEchoTracker.js +0 -104
  394. package/dist/transactions/mutation-error-handler.d.ts +0 -5
  395. package/dist/transactions/mutation-error-handler.js +0 -39
  396. package/dist/transactions/optimistic.d.ts +0 -24
  397. package/dist/transactions/optimistic.js +0 -45
  398. package/dist/utils/mobx-setup.d.ts +0 -42
@@ -1,43 +1,31 @@
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';
13
9
  /**
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.
10
+ * An async function that resolves an apiKey at request time. Use it for credential
11
+ * rotation — read from a vault, refresh from session storage, or pull from an
12
+ * existing auth session. The canonical definition lives in `./auth`; it is
13
+ * re-exported here for convenience.
23
14
  */
24
15
  export type { ApiKeySetter } from './auth.js';
25
16
  import type { ApiKeySetter } from './auth.js';
26
17
  /**
27
- * Options for `Ablo({...})`.
18
+ * Options for the {@link Ablo} client.
28
19
  *
29
- * The only required field is `schema`. The default path is one line:
20
+ * The only required field is `schema`. Because `apiKey` defaults to the
21
+ * `ABLO_API_KEY` environment variable, most server setups need nothing more:
30
22
  *
31
23
  * ```ts
32
24
  * const ablo = Ablo({ schema, apiKey: process.env.ABLO_API_KEY });
33
25
  * ```
34
26
  *
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.
27
+ * Every other field is optional tuning timeouts, retries, a custom fetch,
28
+ * persistence. If you are unsure whether you need one, you do not.
41
29
  *
42
30
  * @see https://docs.abloatai.com — full option reference
43
31
  */
@@ -49,70 +37,68 @@ export interface AbloOptions<S extends SchemaRecord = SchemaRecord> {
49
37
  */
50
38
  schema: Schema<S>;
51
39
  /**
52
- * API key — **the one auth field most apps set.** Three shapes, one option:
40
+ * The API key — the auth field most apps set. It accepts three shapes:
53
41
  *
54
- * - **A key string** (server): your secret `sk_` defaults to
55
- * `process.env['ABLO_API_KEY']`, so you usually pass nothing. A
42
+ * - **A key string** (server): your secret `sk_` key. Defaults to the
43
+ * `ABLO_API_KEY` environment variable, so you usually pass nothing. A
56
44
  * long-lived key needs no refresh; the client uses it as-is.
57
45
  *
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.
46
+ * - **An endpoint path or URL** — for example `apiKey: '/api/ablo-session'`.
47
+ * The client owns the whole exchange: it POSTs the endpoint (same-origin,
48
+ * cookies included), reads the minted short-lived token, and keeps it fresh
49
+ * with a refresh timer ahead of expiry, a re-mint after the machine wakes
50
+ * from sleep, and a re-mint when the server reports the token stale. You
51
+ * never call a refresh method yourself. The shape is detected by prefix (`/`,
52
+ * `http://`, or `https://`); key strings start with `sk_`/`ek_`/`rk_`, so the
53
+ * two cannot be confused. A long-lived server client should pass an absolute
54
+ * URL, which also enables pre-expiry renewal on hosts that never sleep.
68
55
  *
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.
56
+ * - **An async resolver** `() => Promise<string | null>` — the escape hatch for
57
+ * when the exchange needs custom headers, a request body, or a non-HTTP mint
58
+ * (vault rotation, a cloud token service, an existing auth session). It uses
59
+ * the same renewal machinery as the endpoint form.
73
60
  *
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.
61
+ * The endpoint and resolver forms share one contract: return a token; return
62
+ * `null` when the login itself is gone (terminal the client signs out and
63
+ * fails `ready()` with `session_expired`); or throw on a transient failure, which
64
+ * backs off and retries without signing out. The endpoint form maps HTTP onto
65
+ * this for you: 401 and 403 mean signed out, any other failure is transient.
79
66
  */
80
67
  apiKey?: string | ApiKeySetter | null | undefined;
81
68
  /**
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`):
69
+ * The session-mint endpoint — the browser-side auth field, and the named
70
+ * counterpart to the endpoint-string form of {@link AbloOptions.apiKey}. Point it
71
+ * at the route that mints the signed-in user's short-lived token:
86
72
  *
87
73
  * ```ts
88
74
  * const ablo = Ablo({ schema, authEndpoint: '/api/ablo-session' });
89
75
  * ```
90
76
  *
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).
77
+ * The client owns the whole exchange: it POSTs the route (same-origin, cookies
78
+ * included), reads `{ token }`, keeps it fresh ahead of expiry, and re-mints when
79
+ * the server reports the token stale. A 401 or 403 from the route means signed
80
+ * out; any other failure is retried rather than treated as a sign-out. It also
81
+ * accepts an async resolver `() => Promise<string | null>` when the exchange
82
+ * needs custom headers or a body — the same contract as the resolver form of
83
+ * `apiKey`.
97
84
  *
98
- * Mutually exclusive with `apiKey` servers hold a key, browsers hold a
99
- * mint route; passing both is a validation error.
85
+ * Mutually exclusive with `apiKey`: a server holds a key, a browser holds a mint
86
+ * route, and passing both is a validation error.
100
87
  */
101
88
  authEndpoint?: string | ApiKeySetter | null | undefined;
102
89
  /**
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.
90
+ * @deprecated The direct connector lets Ablo dial into your Postgres and write to
91
+ * it directly. Prefer the signed data-source endpoint: keep your `DATABASE_URL`
92
+ * in your own app, expose `dataSource(...)`, and let your server own the write
93
+ * while Ablo coordinates the sync stream. Ablo hosts only the ordered
94
+ * `sync_deltas` log and coordination, never your rows. To keep the log in your own
95
+ * infrastructure as well, self-host the engine.
111
96
  *
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.
97
+ * Still honored at runtime for backward compatibility. It is server-only: because
98
+ * it carries credentials it is never sent from the browser, and constructing a
99
+ * client with both `databaseUrl` and `dangerouslyAllowBrowser` throws. If you do
100
+ * use it, supply a role that is neither a superuser nor `BYPASSRLS`; the connector
101
+ * rejects privileged roles that cannot enforce row-level security.
116
102
  */
117
103
  databaseUrl?: string | null | undefined;
118
104
  /**
@@ -123,35 +109,37 @@ export interface AbloOptions<S extends SchemaRecord = SchemaRecord> {
123
109
  */
124
110
  persistence?: AbloPersistence;
125
111
  /**
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.
112
+ * Selects the transport. `'websocket'` (the default) is the live client: a
113
+ * persistent socket, a local synced cache, and `onChange` subscriptions. `'http'`
114
+ * returns the stateless client for server-side actors agents, workers, and
115
+ * serverless handlers. It offers the same `ablo.<model>` surface and coordination
116
+ * plane, but every call is a single HTTP round-trip, identity rides the bearer
117
+ * credential, and no socket is opened. With `'http'` the return type narrows to
118
+ * {@link AbloHttpClient}, so stateful-only capabilities such as `get`, `getAll`,
119
+ * and `onChange` become compile errors instead of runtime gaps.
134
120
  *
135
- * Note: session/credential minting (`sessions.create`) currently runs on the
136
- * stateful (default) client, not the http client.
121
+ * Note: session minting through `sessions.create` runs on the default WebSocket
122
+ * client, not the HTTP client.
137
123
  *
138
124
  * @default 'websocket'
139
125
  */
140
126
  transport?: 'websocket' | 'http' | undefined;
141
127
  /**
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.
128
+ * Turns Ablo's diagnostic logging on or off. `true` surfaces the `[Ablo]`
129
+ * coordination trace — claims requested, queued, granted, and released, agent
130
+ * handovers, and connection state — so you can watch the coordination between
131
+ * humans and agents while debugging. Omitting it, or `false`, keeps the quiet
132
+ * default of warnings and errors only. For a middle ground use {@link logLevel}.
133
+ * The `ABLO_LOG_LEVEL` environment variable overrides it, and a custom logger
134
+ * takes precedence.
148
135
  */
149
136
  debug?: boolean | undefined;
150
137
  /**
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`.
138
+ * The log threshold for the default `[Ablo]` logger; takes precedence over
139
+ * {@link debug}. `'info'` shows coordination and connection events without the
140
+ * per-model registration detail, `'debug'` shows everything, `'warn'` (the
141
+ * default) shows warnings and errors only, and `'silent'` shows nothing. The
142
+ * `ABLO_LOG_LEVEL` environment variable overrides it.
155
143
  */
156
144
  logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'silent' | undefined;
157
145
  /**
@@ -178,18 +166,15 @@ export interface AbloOptions<S extends SchemaRecord = SchemaRecord> {
178
166
  }
179
167
  export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
180
168
  /**
181
- * API key used for authentication.
169
+ * The API key used for authentication.
182
170
  *
183
- * Accepts a static string (`sk_live_...`) or an async function that
184
- * resolves to one. Defaults to `process.env['ABLO_API_KEY']`.
171
+ * Accepts a static string (`sk_live_...`) or an async function that resolves to
172
+ * one. Defaults to the `ABLO_API_KEY` environment variable.
185
173
  *
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.
174
+ * When a function is provided, it is invoked before each request, so you can
175
+ * rotate or refresh credentials at runtime. It must return a non-empty string, or
176
+ * an `AbloAuthenticationError` is thrown; if it throws, the error is wrapped with
177
+ * the original available as `cause`.
193
178
  */
194
179
  apiKey?: string | ApiKeySetter | null | undefined;
195
180
  /**
@@ -198,12 +183,11 @@ export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
198
183
  */
199
184
  authEndpoint?: string | ApiKeySetter | null | undefined;
200
185
  /**
201
- * Bearer auth token. Sent as `Authorization: Bearer <token>` on
202
- * every request.
186
+ * A bearer auth token, sent as `Authorization: Bearer <token>` on every request.
203
187
  *
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.
188
+ * Use it for self-hosted deployments where your own auth layer mints capability
189
+ * tokens directly. Hosted-cloud consumers pass `apiKey` instead and let the
190
+ * server mint the capability token.
207
191
  */
208
192
  authToken?: string | null | undefined;
209
193
  /**
@@ -244,57 +228,56 @@ export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
244
228
  */
245
229
  schema: Schema<S>;
246
230
  /**
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.
231
+ * @deprecated The server derives the participant kind from the apiKey's scope.
232
+ * Pass `apiKey` only.
250
233
  */
251
234
  kind?: 'user' | 'agent' | 'system';
252
235
  /**
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.
236
+ * @deprecated The server derives user identity from the apiKey's scope, or from
237
+ * the `Ablo-Acting-User` request header for multi-tenant setups. Pass `apiKey`
238
+ * only.
256
239
  */
257
240
  user?: {
258
241
  id: string;
259
242
  teamIds?: string[];
260
243
  };
261
244
  /**
262
- * @deprecated Server derives agent identity from the apiKey's
263
- * scope. Removed once Phase 3 ships.
245
+ * @deprecated The server derives agent identity from the apiKey's scope. Pass
246
+ * `apiKey` only.
264
247
  */
265
248
  agentId?: string;
266
249
  /**
267
- * @deprecated Cap-mint moves server-internal in Phase 3. Pass
268
- * `apiKey` only; the server handles capability issuance.
250
+ * @deprecated Pass `apiKey` only; the server issues the capability token.
269
251
  */
270
252
  capabilityToken?: string;
271
253
  /** Custom logger (default: console). Supplying one bypasses {@link debug}/{@link logLevel}. */
272
254
  logger?: SyncLogger;
273
255
  /**
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.
256
+ * Turns Ablo's diagnostic logging on or off. `true` surfaces the `[Ablo]`
257
+ * coordination trace — claims acquired, queued, granted, and released, agent
258
+ * handovers, and connection state — along with internal lifecycle events, so you
259
+ * can watch the coordination between humans and agents. Omitting it, or `false`,
260
+ * keeps the quiet default of warnings and errors only. For a middle ground use
261
+ * {@link logLevel}. The `ABLO_LOG_LEVEL` environment variable overrides it, and a
262
+ * custom {@link logger} takes precedence.
280
263
  */
281
264
  debug?: boolean;
282
265
  /**
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`.
266
+ * The log threshold for the default `[Ablo]` logger; takes precedence over
267
+ * {@link debug}. `'info'` shows coordination and connection events without the
268
+ * per-model registration detail, `'debug'` shows everything, `'warn'` (the
269
+ * default) shows warnings and errors only, and `'silent'` shows nothing. The
270
+ * `ABLO_LOG_LEVEL` environment variable overrides it.
287
271
  */
288
272
  logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'silent';
289
- /** ObjectPool size limit (default: 10000) */
273
+ /** InstanceCache size limit (default: 10000) */
290
274
  maxPoolSize?: number;
291
275
  /**
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.
276
+ * Local persistence mode. Defaults to `memory`, keeping the local cache in
277
+ * process rather than adding IndexedDB durability to every browser consumer.
295
278
  *
296
- * Pass `persistence: 'indexeddb'` only when you want offline queueing
297
- * and a reload-surviving local cache in a browser.
279
+ * Pass `persistence: 'indexeddb'` only when you want offline queueing and a
280
+ * reload-surviving local cache in a browser.
298
281
  */
299
282
  persistence?: AbloPersistence;
300
283
  /** @deprecated Use `persistence: 'indexeddb'` for durable browser storage. */
@@ -306,26 +289,23 @@ export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
306
289
  */
307
290
  inMemory?: boolean;
308
291
  /**
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.
292
+ * When `true`, initialization starts immediately in the background, so reads work
293
+ * once `await ready()` resolves.
314
294
  *
315
- * Default: false (explicit is better prevents silent init failures).
295
+ * When `false` (the default), you must call `await ready()` before using the
296
+ * engine; any query before that returns empty results. The explicit default
297
+ * guards against silent initialization failures.
316
298
  */
317
299
  autoStart?: boolean;
318
300
  /**
319
- * How aggressively this client should pull baseline state at
320
- * startup.
301
+ * How much baseline state this client pulls at startup.
321
302
  *
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.
303
+ * - `'full'`: pull every delta in the configured sync groups before `ready()`
304
+ * resolves. The default for user clients.
305
+ * - `'none'`: open the socket and process live deltas only, with no baseline
306
+ * fetch. Reads round-trip through `retrieve`, and subscriptions fill the local
307
+ * cache lazily. The default for agent clients, which do not need a local
308
+ * replica of the organization's data.
329
309
  */
330
310
  bootstrapMode?: 'full' | 'none';
331
311
  /**
@@ -366,13 +346,10 @@ export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
366
346
  */
367
347
  configOverrides?: Partial<SyncEngineConfig>;
368
348
  /**
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
349
+ * The sync groups (entity scopes) this client subscribes to. Normally the server
350
+ * derives these from the apiKey's scope; pass them explicitly when the key does
351
+ * not resolve them, otherwise the client fans out nothing and logs a `degenerate
352
+ * syncGroups` warning. Build values with `syncGroup(kind, id)` from
376
353
  * `@abloatai/ablo/schema`.
377
354
  */
378
355
  syncGroups?: string[];
@@ -380,7 +357,7 @@ export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
380
357
  * Override the bootstrap endpoint base URL. Use this when your sync
381
358
  * server's HTTP API lives on a different host than the WebSocket URL.
382
359
  *
383
- * Must include the `/api` prefix — `BootstrapHelper` appends
360
+ * Must include the `/api` prefix — `BootstrapFetcher` appends
384
361
  * `/sync/bootstrap` directly. Example:
385
362
  * `'http://api.example.com/api'` → `http://api.example.com/api/sync/bootstrap`.
386
363
  *
@@ -388,9 +365,9 @@ export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
388
365
  */
389
366
  bootstrapBaseUrl?: string;
390
367
  /**
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).
368
+ * The account scope. Supply it together with a user or agent id to resolve
369
+ * identity locally without a server round-trip; without it, the client resolves
370
+ * identity from the token through the identity endpoint instead.
394
371
  */
395
372
  organizationId?: string;
396
373
  }
@@ -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) {