@abloatai/humans 0.37.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 (404) hide show
  1. package/README.md +52 -0
  2. package/dist/Ablo.d.ts +208 -0
  3. package/dist/Ablo.js +120 -0
  4. package/dist/client.d.ts +317 -0
  5. package/dist/client.js +13 -0
  6. package/dist/core.d.ts +35 -0
  7. package/dist/core.js +48 -0
  8. package/dist/humans.d.ts +28 -0
  9. package/dist/humans.js +34 -0
  10. package/dist/index.d.ts +10 -0
  11. package/dist/index.js +6 -0
  12. package/dist/local/BaseSyncedStore.d.ts +807 -0
  13. package/dist/local/BaseSyncedStore.js +1516 -0
  14. package/dist/local/Database.d.ts +322 -0
  15. package/dist/local/Database.js +1589 -0
  16. package/dist/local/InstanceCache.d.ts +255 -0
  17. package/dist/local/InstanceCache.js +1263 -0
  18. package/dist/local/LazyReferenceCollection.d.ts +177 -0
  19. package/dist/local/LazyReferenceCollection.js +461 -0
  20. package/dist/local/Model.d.ts +475 -0
  21. package/dist/local/Model.js +950 -0
  22. package/dist/local/ModelRegistry.d.ts +225 -0
  23. package/dist/local/ModelRegistry.js +539 -0
  24. package/dist/local/NetworkMonitor.d.ts +28 -0
  25. package/dist/local/NetworkMonitor.js +79 -0
  26. package/dist/local/RuntimeContext.d.ts +52 -0
  27. package/dist/local/RuntimeContext.js +80 -0
  28. package/dist/local/SyncClient.d.ts +516 -0
  29. package/dist/local/SyncClient.js +1754 -0
  30. package/dist/local/adapters/alwaysOnline.d.ts +14 -0
  31. package/dist/local/adapters/alwaysOnline.js +17 -0
  32. package/dist/local/adapters/inMemoryStorage.d.ts +37 -0
  33. package/dist/local/adapters/inMemoryStorage.js +122 -0
  34. package/dist/local/client/clientPrelude.d.ts +52 -0
  35. package/dist/local/client/clientPrelude.js +60 -0
  36. package/dist/local/client/consoleLogger.d.ts +35 -0
  37. package/dist/local/client/consoleLogger.js +44 -0
  38. package/dist/local/client/createInternalComponents.d.ts +50 -0
  39. package/dist/local/client/createInternalComponents.js +98 -0
  40. package/dist/local/client/createModelProxy.d.ts +248 -0
  41. package/dist/local/client/createModelProxy.js +880 -0
  42. package/dist/local/client/modelRegistration.d.ts +10 -0
  43. package/dist/local/client/modelRegistration.js +316 -0
  44. package/dist/local/client/options.d.ts +440 -0
  45. package/dist/local/client/options.js +7 -0
  46. package/dist/local/client/reactiveEngine.d.ts +53 -0
  47. package/dist/local/client/reactiveEngine.js +705 -0
  48. package/dist/local/client/resourceTypes.d.ts +12 -0
  49. package/dist/local/client/resourceTypes.js +10 -0
  50. package/dist/local/client/schemaConfig.d.ts +44 -0
  51. package/dist/local/client/schemaConfig.js +185 -0
  52. package/dist/local/client/storeCluster.d.ts +46 -0
  53. package/dist/local/client/storeCluster.js +133 -0
  54. package/dist/local/client/storeLifecycle.d.ts +61 -0
  55. package/dist/local/client/storeLifecycle.js +236 -0
  56. package/dist/local/client/validateAbloOptions.d.ts +42 -0
  57. package/dist/local/client/validateAbloOptions.js +43 -0
  58. package/dist/local/client/wsMutationExecutor.d.ts +27 -0
  59. package/dist/local/client/wsMutationExecutor.js +72 -0
  60. package/dist/local/context.d.ts +42 -0
  61. package/dist/local/context.js +81 -0
  62. package/dist/local/coordination/ClaimLog.d.ts +26 -0
  63. package/dist/local/coordination/ClaimLog.js +32 -0
  64. package/dist/local/interfaces/index.d.ts +311 -0
  65. package/dist/local/interfaces/index.js +9 -0
  66. package/dist/local/localModelContract.d.ts +14 -0
  67. package/dist/local/localModelContract.js +1 -0
  68. package/dist/local/logPosition.d.ts +31 -0
  69. package/dist/local/logPosition.js +53 -0
  70. package/dist/local/mutationPersistence.d.ts +6 -0
  71. package/dist/local/mutationPersistence.js +1 -0
  72. package/dist/local/mutators/RecordingMutation.d.ts +36 -0
  73. package/dist/local/mutators/RecordingMutation.js +182 -0
  74. package/dist/local/mutators/Transaction.d.ts +40 -0
  75. package/dist/local/mutators/Transaction.js +58 -0
  76. package/dist/local/mutators/UndoManager.d.ts +258 -0
  77. package/dist/local/mutators/UndoManager.js +665 -0
  78. package/dist/local/mutators/defineMutators.d.ts +60 -0
  79. package/dist/local/mutators/defineMutators.js +18 -0
  80. package/dist/local/mutators/inverseOp.d.ts +126 -0
  81. package/dist/local/mutators/inverseOp.js +71 -0
  82. package/dist/local/mutators/mutateActions.d.ts +45 -0
  83. package/dist/local/mutators/mutateActions.js +105 -0
  84. package/dist/local/mutators/readerActions.d.ts +33 -0
  85. package/dist/local/mutators/readerActions.js +57 -0
  86. package/dist/local/mutators/undoApply.d.ts +51 -0
  87. package/dist/local/mutators/undoApply.js +117 -0
  88. package/dist/local/persistence.d.ts +7 -0
  89. package/dist/local/persistence.js +9 -0
  90. package/dist/local/query/QueryProcessor.d.ts +75 -0
  91. package/dist/local/query/QueryProcessor.js +255 -0
  92. package/dist/local/query/client.d.ts +64 -0
  93. package/dist/local/query/client.js +138 -0
  94. package/dist/local/query/types.d.ts +85 -0
  95. package/dist/local/query/types.js +16 -0
  96. package/dist/local/schema/serialize.d.ts +1 -0
  97. package/dist/local/schema/serialize.js +1 -0
  98. package/dist/local/store/queryApi.d.ts +13 -0
  99. package/dist/local/store/queryApi.js +35 -0
  100. package/dist/local/storeContract.d.ts +145 -0
  101. package/dist/local/storeContract.js +12 -0
  102. package/dist/local/stores/DatabaseManager.d.ts +112 -0
  103. package/dist/local/stores/DatabaseManager.js +400 -0
  104. package/dist/local/stores/ObjectStore.d.ts +115 -0
  105. package/dist/local/stores/ObjectStore.js +393 -0
  106. package/dist/local/stores/ObjectStoreContract.d.ts +38 -0
  107. package/dist/local/stores/ObjectStoreContract.js +1 -0
  108. package/dist/local/stores/StoreManager.d.ts +114 -0
  109. package/dist/local/stores/StoreManager.js +304 -0
  110. package/dist/local/stores/SyncActionStore.d.ts +99 -0
  111. package/dist/local/stores/SyncActionStore.js +506 -0
  112. package/dist/local/stores/openIDBWithTimeout.d.ts +65 -0
  113. package/dist/local/stores/openIDBWithTimeout.js +153 -0
  114. package/dist/local/stores/persistenceCleanup.d.ts +7 -0
  115. package/dist/local/stores/persistenceCleanup.js +26 -0
  116. package/dist/local/stores/persistenceIdentity.d.ts +27 -0
  117. package/dist/local/stores/persistenceIdentity.js +38 -0
  118. package/dist/local/stores/syncAction.d.ts +26 -0
  119. package/dist/local/stores/syncAction.js +16 -0
  120. package/dist/local/stores/v1PersistenceDeletion.d.ts +8 -0
  121. package/dist/local/stores/v1PersistenceDeletion.js +16 -0
  122. package/dist/local/sync/BootstrapFetcher.d.ts +284 -0
  123. package/dist/local/sync/BootstrapFetcher.js +964 -0
  124. package/dist/local/sync/ConnectionManager.d.ts +8 -0
  125. package/dist/local/sync/ConnectionManager.js +8 -0
  126. package/dist/local/sync/OnDemandLoader.d.ts +231 -0
  127. package/dist/local/sync/OnDemandLoader.js +743 -0
  128. package/dist/local/sync/SubscriptionManager.d.ts +159 -0
  129. package/dist/local/sync/SubscriptionManager.js +243 -0
  130. package/dist/local/sync/SyncWebSocket.d.ts +173 -0
  131. package/dist/local/sync/SyncWebSocket.js +438 -0
  132. package/dist/local/sync/bootstrapApply.d.ts +73 -0
  133. package/dist/local/sync/bootstrapApply.js +73 -0
  134. package/dist/local/sync/commitFrames.d.ts +8 -0
  135. package/dist/local/sync/commitFrames.js +8 -0
  136. package/dist/local/sync/connectionManagerLifecycle.d.ts +23 -0
  137. package/dist/local/sync/connectionManagerLifecycle.js +126 -0
  138. package/dist/local/sync/contextPorts.d.ts +18 -0
  139. package/dist/local/sync/contextPorts.js +31 -0
  140. package/dist/local/sync/createClaimStream.d.ts +64 -0
  141. package/dist/local/sync/createClaimStream.js +475 -0
  142. package/dist/local/sync/createSnapshot.d.ts +29 -0
  143. package/dist/local/sync/createSnapshot.js +116 -0
  144. package/dist/local/sync/credentialLifecycle.d.ts +7 -0
  145. package/dist/local/sync/credentialLifecycle.js +7 -0
  146. package/dist/local/sync/deltaPipeline.d.ts +116 -0
  147. package/dist/local/sync/deltaPipeline.js +357 -0
  148. package/dist/local/sync/groupChange.d.ts +116 -0
  149. package/dist/local/sync/groupChange.js +244 -0
  150. package/dist/local/sync/initialize.d.ts +27 -0
  151. package/dist/local/sync/initialize.js +137 -0
  152. package/dist/local/sync/participants.d.ts +132 -0
  153. package/dist/local/sync/participants.js +342 -0
  154. package/dist/local/sync/persistedPrefix.d.ts +12 -0
  155. package/dist/local/sync/persistedPrefix.js +22 -0
  156. package/dist/local/sync/reconnect.d.ts +23 -0
  157. package/dist/local/sync/reconnect.js +55 -0
  158. package/dist/local/sync/schemaDrift.d.ts +55 -0
  159. package/dist/local/sync/schemaDrift.js +53 -0
  160. package/dist/local/sync/schemas.d.ts +71 -0
  161. package/dist/local/sync/schemas.js +94 -0
  162. package/dist/local/sync/socketEventWiring.d.ts +31 -0
  163. package/dist/local/sync/socketEventWiring.js +130 -0
  164. package/dist/local/sync/syncCursor.d.ts +40 -0
  165. package/dist/local/sync/syncCursor.js +55 -0
  166. package/dist/local/sync/syncPlan.d.ts +54 -0
  167. package/dist/local/sync/syncPlan.js +50 -0
  168. package/dist/local/sync/terminalSessionLifecycle.d.ts +20 -0
  169. package/dist/local/sync/terminalSessionLifecycle.js +50 -0
  170. package/dist/local/sync/wsFrameHandlers.d.ts +8 -0
  171. package/dist/local/sync/wsFrameHandlers.js +8 -0
  172. package/dist/local/transactions/databaseCommitOutbox.d.ts +15 -0
  173. package/dist/local/transactions/databaseCommitOutbox.js +16 -0
  174. package/dist/local/transactions/localMutation.d.ts +10 -0
  175. package/dist/local/transactions/localMutation.js +37 -0
  176. package/dist/local/transactions/mutations/MutationQueue.d.ts +511 -0
  177. package/dist/local/transactions/mutations/MutationQueue.js +1498 -0
  178. package/dist/local/transactions/mutations/MutationStore.d.ts +20 -0
  179. package/dist/local/transactions/mutations/MutationStore.js +53 -0
  180. package/dist/local/transactions/mutations/UnconfirmedWrites.d.ts +82 -0
  181. package/dist/local/transactions/mutations/UnconfirmedWrites.js +104 -0
  182. package/dist/local/transactions/mutations/batchProcessing.d.ts +64 -0
  183. package/dist/local/transactions/mutations/batchProcessing.js +349 -0
  184. package/dist/local/transactions/mutations/coalesceRules.d.ts +58 -0
  185. package/dist/local/transactions/mutations/coalesceRules.js +140 -0
  186. package/dist/local/transactions/mutations/commitApi.d.ts +19 -0
  187. package/dist/local/transactions/mutations/commitApi.js +74 -0
  188. package/dist/local/transactions/mutations/commitLane.d.ts +70 -0
  189. package/dist/local/transactions/mutations/commitLane.js +140 -0
  190. package/dist/local/transactions/mutations/commitLatency.d.ts +52 -0
  191. package/dist/local/transactions/mutations/commitLatency.js +130 -0
  192. package/dist/local/transactions/mutations/commitPayload.d.ts +165 -0
  193. package/dist/local/transactions/mutations/commitPayload.js +152 -0
  194. package/dist/local/transactions/mutations/commitTransport.d.ts +36 -0
  195. package/dist/local/transactions/mutations/commitTransport.js +104 -0
  196. package/dist/local/transactions/mutations/deltaConfirmation.d.ts +63 -0
  197. package/dist/local/transactions/mutations/deltaConfirmation.js +235 -0
  198. package/dist/local/transactions/mutations/durableCommitRestore.d.ts +17 -0
  199. package/dist/local/transactions/mutations/durableCommitRestore.js +95 -0
  200. package/dist/local/transactions/mutations/durableWriteStore.d.ts +14 -0
  201. package/dist/local/transactions/mutations/durableWriteStore.js +12 -0
  202. package/dist/local/transactions/mutations/executionSelection.d.ts +6 -0
  203. package/dist/local/transactions/mutations/executionSelection.js +42 -0
  204. package/dist/local/transactions/mutations/failureHandling.d.ts +16 -0
  205. package/dist/local/transactions/mutations/failureHandling.js +130 -0
  206. package/dist/local/transactions/mutations/failurePolicy.d.ts +13 -0
  207. package/dist/local/transactions/mutations/failurePolicy.js +48 -0
  208. package/dist/local/transactions/mutations/localMutation.d.ts +58 -0
  209. package/dist/local/transactions/mutations/localMutation.js +75 -0
  210. package/dist/local/transactions/mutations/modelOperations.d.ts +44 -0
  211. package/dist/local/transactions/mutations/modelOperations.js +144 -0
  212. package/dist/local/transactions/mutations/mutationPersistence.d.ts +25 -0
  213. package/dist/local/transactions/mutations/mutationPersistence.js +188 -0
  214. package/dist/local/transactions/mutations/pendingDrain.d.ts +33 -0
  215. package/dist/local/transactions/mutations/pendingDrain.js +112 -0
  216. package/dist/local/transactions/mutations/processingScheduler.d.ts +14 -0
  217. package/dist/local/transactions/mutations/processingScheduler.js +24 -0
  218. package/dist/local/transactions/mutations/queueCoalescing.d.ts +13 -0
  219. package/dist/local/transactions/mutations/queueCoalescing.js +35 -0
  220. package/dist/local/transactions/mutations/replayValidation.d.ts +187 -0
  221. package/dist/local/transactions/mutations/replayValidation.js +164 -0
  222. package/dist/local/transactions/reconnectDrain.d.ts +11 -0
  223. package/dist/local/transactions/reconnectDrain.js +13 -0
  224. package/dist/local/utils/mobxSetup.d.ts +53 -0
  225. package/dist/local/utils/mobxSetup.js +330 -0
  226. package/dist/local/views/QueryView.d.ts +79 -0
  227. package/dist/local/views/QueryView.js +218 -0
  228. package/dist/local/views/ViewRegistry.d.ts +20 -0
  229. package/dist/local/views/ViewRegistry.js +57 -0
  230. package/dist/local/views/incrementalView.d.ts +45 -0
  231. package/dist/local/views/incrementalView.js +69 -0
  232. package/dist/plugin.d.ts +285 -0
  233. package/dist/plugin.js +106 -0
  234. package/dist/presenceStream.d.ts +69 -0
  235. package/dist/presenceStream.js +200 -0
  236. package/dist/react/AbloProvider.d.ts +242 -0
  237. package/dist/react/AbloProvider.js +456 -0
  238. package/dist/react/ClientSideSuspense.d.ts +36 -0
  239. package/dist/react/ClientSideSuspense.js +17 -0
  240. package/dist/react/DefaultFallback.d.ts +24 -0
  241. package/dist/react/DefaultFallback.js +43 -0
  242. package/dist/react/context.d.ts +55 -0
  243. package/dist/react/context.js +29 -0
  244. package/dist/react/createAbloReact.d.ts +50 -0
  245. package/dist/react/createAbloReact.js +48 -0
  246. package/dist/react/internalContext.d.ts +33 -0
  247. package/dist/react/internalContext.js +3 -0
  248. package/dist/react/useAblo.d.ts +96 -0
  249. package/dist/react/useAblo.js +120 -0
  250. package/dist/react/useCurrentUserId.d.ts +2 -0
  251. package/dist/react/useCurrentUserId.js +12 -0
  252. package/dist/react/useErrorListener.d.ts +2 -0
  253. package/dist/react/useErrorListener.js +14 -0
  254. package/dist/react/useMutationFailureListener.d.ts +8 -0
  255. package/dist/react/useMutationFailureListener.js +19 -0
  256. package/dist/react/useMutators.d.ts +56 -0
  257. package/dist/react/useMutators.js +84 -0
  258. package/dist/react/useSyncStatus.d.ts +19 -0
  259. package/dist/react/useSyncStatus.js +37 -0
  260. package/dist/react/useUndoScope.d.ts +34 -0
  261. package/dist/react/useUndoScope.js +73 -0
  262. package/dist/react.d.ts +18 -0
  263. package/dist/react.js +14 -0
  264. package/dist/reactRuntime.d.ts +4 -0
  265. package/dist/reactRuntime.js +2 -0
  266. package/dist/surface.d.ts +36 -0
  267. package/dist/surface.js +77 -0
  268. package/dist/useReactive.d.ts +6 -0
  269. package/dist/useReactive.js +43 -0
  270. package/package.json +119 -0
  271. package/src/Ablo.ts +456 -0
  272. package/src/client.ts +374 -0
  273. package/src/core.ts +104 -0
  274. package/src/humans.ts +61 -0
  275. package/src/index.ts +40 -0
  276. package/src/local/BaseSyncedStore.ts +1991 -0
  277. package/src/local/Database.ts +2052 -0
  278. package/src/local/InstanceCache.ts +1503 -0
  279. package/src/local/LazyReferenceCollection.ts +563 -0
  280. package/src/local/Model.ts +1124 -0
  281. package/src/local/ModelRegistry.ts +762 -0
  282. package/src/local/NetworkMonitor.ts +88 -0
  283. package/src/local/RuntimeContext.ts +141 -0
  284. package/src/local/SyncClient.ts +2131 -0
  285. package/src/local/adapters/alwaysOnline.ts +20 -0
  286. package/src/local/adapters/inMemoryStorage.ts +141 -0
  287. package/src/local/client/clientPrelude.ts +112 -0
  288. package/src/local/client/consoleLogger.ts +60 -0
  289. package/src/local/client/createInternalComponents.ts +163 -0
  290. package/src/local/client/createModelProxy.ts +1390 -0
  291. package/src/local/client/modelRegistration.ts +350 -0
  292. package/src/local/client/options.ts +526 -0
  293. package/src/local/client/reactiveEngine.ts +935 -0
  294. package/src/local/client/resourceTypes.ts +37 -0
  295. package/src/local/client/schemaConfig.ts +194 -0
  296. package/src/local/client/storeCluster.ts +172 -0
  297. package/src/local/client/storeLifecycle.ts +343 -0
  298. package/src/local/client/validateAbloOptions.ts +95 -0
  299. package/src/local/client/wsMutationExecutor.ts +110 -0
  300. package/src/local/context.ts +96 -0
  301. package/src/local/coordination/ClaimLog.ts +39 -0
  302. package/src/local/interfaces/index.ts +468 -0
  303. package/src/local/localModelContract.ts +15 -0
  304. package/src/local/logPosition.ts +84 -0
  305. package/src/local/mutationPersistence.ts +7 -0
  306. package/src/local/mutators/RecordingMutation.ts +222 -0
  307. package/src/local/mutators/Transaction.ts +97 -0
  308. package/src/local/mutators/UndoManager.ts +741 -0
  309. package/src/local/mutators/defineMutators.ts +76 -0
  310. package/src/local/mutators/inverseOp.ts +83 -0
  311. package/src/local/mutators/mutateActions.ts +167 -0
  312. package/src/local/mutators/readerActions.ts +99 -0
  313. package/src/local/mutators/undoApply.ts +141 -0
  314. package/src/local/persistence.ts +16 -0
  315. package/src/local/query/QueryProcessor.ts +347 -0
  316. package/src/local/query/client.ts +197 -0
  317. package/src/local/query/types.ts +102 -0
  318. package/src/local/schema/serialize.ts +1 -0
  319. package/src/local/store/queryApi.ts +56 -0
  320. package/src/local/storeContract.ts +146 -0
  321. package/src/local/stores/DatabaseManager.ts +507 -0
  322. package/src/local/stores/ObjectStore.ts +449 -0
  323. package/src/local/stores/ObjectStoreContract.ts +48 -0
  324. package/src/local/stores/StoreManager.ts +388 -0
  325. package/src/local/stores/SyncActionStore.ts +579 -0
  326. package/src/local/stores/openIDBWithTimeout.ts +195 -0
  327. package/src/local/stores/persistenceCleanup.ts +43 -0
  328. package/src/local/stores/persistenceIdentity.ts +83 -0
  329. package/src/local/stores/syncAction.ts +21 -0
  330. package/src/local/stores/v1PersistenceDeletion.ts +21 -0
  331. package/src/local/sync/BootstrapFetcher.ts +1224 -0
  332. package/src/local/sync/ConnectionManager.ts +15 -0
  333. package/src/local/sync/OnDemandLoader.ts +927 -0
  334. package/src/local/sync/SubscriptionManager.ts +300 -0
  335. package/src/local/sync/SyncWebSocket.ts +584 -0
  336. package/src/local/sync/bootstrapApply.ts +130 -0
  337. package/src/local/sync/commitFrames.ts +16 -0
  338. package/src/local/sync/connectionManagerLifecycle.ts +158 -0
  339. package/src/local/sync/contextPorts.ts +37 -0
  340. package/src/local/sync/createClaimStream.ts +668 -0
  341. package/src/local/sync/createSnapshot.ts +160 -0
  342. package/src/local/sync/credentialLifecycle.ts +18 -0
  343. package/src/local/sync/deltaPipeline.ts +473 -0
  344. package/src/local/sync/groupChange.ts +343 -0
  345. package/src/local/sync/initialize.ts +205 -0
  346. package/src/local/sync/participants.ts +564 -0
  347. package/src/local/sync/persistedPrefix.ts +27 -0
  348. package/src/local/sync/reconnect.ts +88 -0
  349. package/src/local/sync/schemaDrift.ts +86 -0
  350. package/src/local/sync/schemas.ts +118 -0
  351. package/src/local/sync/socketEventWiring.ts +196 -0
  352. package/src/local/sync/syncCursor.ts +62 -0
  353. package/src/local/sync/syncPlan.ts +89 -0
  354. package/src/local/sync/terminalSessionLifecycle.ts +66 -0
  355. package/src/local/sync/wsFrameHandlers.ts +20 -0
  356. package/src/local/transactions/databaseCommitOutbox.ts +33 -0
  357. package/src/local/transactions/localMutation.ts +58 -0
  358. package/src/local/transactions/mutations/MutationQueue.ts +1998 -0
  359. package/src/local/transactions/mutations/MutationStore.ts +65 -0
  360. package/src/local/transactions/mutations/UnconfirmedWrites.ts +133 -0
  361. package/src/local/transactions/mutations/batchProcessing.ts +469 -0
  362. package/src/local/transactions/mutations/coalesceRules.ts +192 -0
  363. package/src/local/transactions/mutations/commitApi.ts +97 -0
  364. package/src/local/transactions/mutations/commitLane.ts +191 -0
  365. package/src/local/transactions/mutations/commitLatency.ts +164 -0
  366. package/src/local/transactions/mutations/commitPayload.ts +281 -0
  367. package/src/local/transactions/mutations/commitTransport.ts +174 -0
  368. package/src/local/transactions/mutations/deltaConfirmation.ts +298 -0
  369. package/src/local/transactions/mutations/durableCommitRestore.ts +128 -0
  370. package/src/local/transactions/mutations/durableWriteStore.ts +21 -0
  371. package/src/local/transactions/mutations/executionSelection.ts +42 -0
  372. package/src/local/transactions/mutations/failureHandling.ts +154 -0
  373. package/src/local/transactions/mutations/failurePolicy.ts +61 -0
  374. package/src/local/transactions/mutations/localMutation.ts +135 -0
  375. package/src/local/transactions/mutations/modelOperations.ts +210 -0
  376. package/src/local/transactions/mutations/mutationPersistence.ts +231 -0
  377. package/src/local/transactions/mutations/pendingDrain.ts +160 -0
  378. package/src/local/transactions/mutations/processingScheduler.ts +35 -0
  379. package/src/local/transactions/mutations/queueCoalescing.ts +45 -0
  380. package/src/local/transactions/mutations/replayValidation.ts +192 -0
  381. package/src/local/transactions/reconnectDrain.ts +24 -0
  382. package/src/local/utils/mobxSetup.ts +388 -0
  383. package/src/local/views/QueryView.ts +311 -0
  384. package/src/local/views/ViewRegistry.ts +61 -0
  385. package/src/local/views/incrementalView.ts +92 -0
  386. package/src/plugin.ts +396 -0
  387. package/src/presenceStream.ts +279 -0
  388. package/src/react/AbloProvider.tsx +744 -0
  389. package/src/react/ClientSideSuspense.tsx +57 -0
  390. package/src/react/DefaultFallback.tsx +60 -0
  391. package/src/react/context.ts +89 -0
  392. package/src/react/createAbloReact.ts +116 -0
  393. package/src/react/internalContext.ts +38 -0
  394. package/src/react/useAblo.ts +280 -0
  395. package/src/react/useCurrentUserId.ts +17 -0
  396. package/src/react/useErrorListener.ts +22 -0
  397. package/src/react/useMutationFailureListener.ts +34 -0
  398. package/src/react/useMutators.ts +184 -0
  399. package/src/react/useSyncStatus.ts +42 -0
  400. package/src/react/useUndoScope.ts +143 -0
  401. package/src/react.ts +69 -0
  402. package/src/reactRuntime.ts +10 -0
  403. package/src/surface.ts +106 -0
  404. package/src/useReactive.ts +51 -0
@@ -0,0 +1,526 @@
1
+ /**
2
+ * The option types for the {@link Ablo} client: the public {@link AbloOptions}
3
+ * bag callers pass, and the fuller monorepo-only {@link InternalAbloOptions}
4
+ * construction surface retained by the deprecated compatibility facade.
5
+ * This module holds only types and has no runtime imports.
6
+ */
7
+
8
+ import type { Schema, SchemaRecord } from '@abloatai/transaction/schema/schema';
9
+ import type {
10
+ RuntimeConfig,
11
+ Logger,
12
+ MutationExecutor,
13
+ ObservabilityProvider,
14
+ Analytics,
15
+ SessionErrorDetector,
16
+ OnlineStatusProvider,
17
+ } from '../interfaces/index.js';
18
+ import type { AbloPersistence } from '../persistence.js';
19
+ import type {
20
+ DurableWriteStore,
21
+ DurableWritesConfig,
22
+ } from '@abloatai/transaction/durableWrites';
23
+ import type { CommitOutboxScope } from '@abloatai/transaction/transactions/settlement/commitEnvelope';
24
+
25
+ // ── Options ───────────────────────────────────────────────────────────────
26
+
27
+ /**
28
+ * An async function that resolves an apiKey at request time. Use it for credential
29
+ * rotation — read from a vault, refresh from session storage, or pull from an
30
+ * existing auth session. The canonical definition lives in `./auth`; it is
31
+ * re-exported here for convenience.
32
+ */
33
+ export type { CredentialProvider } from '@abloatai/transaction/auth/apiKey';
34
+ import type { CredentialProvider } from '@abloatai/transaction/auth/apiKey';
35
+ import type { AbloPlugin } from '../../plugin.js';
36
+ import type { ParticipantKind } from '@abloatai/transaction/types/participant';
37
+
38
+ /**
39
+ * Options for the {@link Ablo} client.
40
+ *
41
+ * The only required field is `schema`. Because `apiKey` defaults to the
42
+ * `ABLO_API_KEY` environment variable, most server setups need nothing more:
43
+ *
44
+ * ```ts
45
+ * const ablo = Ablo({ schema, apiKey: process.env.ABLO_API_KEY });
46
+ * ```
47
+ *
48
+ * Every other field is optional tuning — timeouts, retries, a custom fetch,
49
+ * persistence. If you are unsure whether you need one, you do not.
50
+ *
51
+ * @see https://docs.abloatai.com — full option reference
52
+ */
53
+ export interface AbloOptions<S extends SchemaRecord = SchemaRecord> {
54
+ /**
55
+ * TypeScript schema defined with `defineSchema()`. Required — it's what
56
+ * makes `ablo.weatherReports.update(...)` typed. This is the one field you must
57
+ * pass; start here.
58
+ */
59
+ schema: Schema<S>;
60
+
61
+ /**
62
+ * The capabilities installed on this client. Each plugin appears once in
63
+ * the list; a duplicate, or a plugin the chosen transport cannot carry,
64
+ * fails while the client is being constructed with an error naming the
65
+ * plugin. Omitted, the client installs the compatibility `humans()` plugin.
66
+ * New code should install `humans()` from `@abloatai/humans` explicitly.
67
+ */
68
+ plugins?: readonly AbloPlugin[];
69
+
70
+ /**
71
+ * The API key held by this process. It accepts two shapes:
72
+ *
73
+ * - **A key string** (server): your secret `sk_` key. Defaults to the
74
+ * `ABLO_API_KEY` environment variable, so you usually pass nothing. A
75
+ * long-lived key needs no refresh; the client uses it as-is.
76
+ *
77
+ * - **An async resolver** `() => Promise<string | null>` — the escape hatch for
78
+ * when the exchange needs custom headers, a request body, or a non-HTTP mint
79
+ * (vault rotation, a cloud token service, an existing auth session). It uses
80
+ * the same renewal machinery as the endpoint form.
81
+ *
82
+ * The endpoint and resolver forms share one contract: return a token; return
83
+ * `null` when the login itself is gone (terminal — the client signs out and
84
+ * fails `ready()` with `session_expired`); or throw on a transient failure, which
85
+ * backs off and retries without signing out. The endpoint form maps HTTP onto
86
+ * this for you: only a structured `401 session_expired` means signed out.
87
+ */
88
+ apiKey?: string | CredentialProvider | null | undefined;
89
+
90
+ /**
91
+ * The session-mint endpoint — the browser-side auth field, and the named
92
+ * endpoint for the route that mints the signed-in user's short-lived token:
93
+ *
94
+ * ```ts
95
+ * const ablo = Ablo({ schema, authEndpoint: '/api/ablo-session' });
96
+ * ```
97
+ *
98
+ * The client owns the whole exchange: it POSTs the route (same-origin, cookies
99
+ * included), validates the canonical auth response contract, keeps it fresh
100
+ * ahead of expiry, and re-mints when the server reports the token stale. Only
101
+ * a structured `401 session_expired` response means signed out. It also
102
+ * accepts an async resolver `() => Promise<string | null>` when the exchange
103
+ * needs custom headers or a body — the same contract as the resolver form of
104
+ * `apiKey`.
105
+ *
106
+ * Mutually exclusive with `apiKey`: a server holds a key, a browser holds a mint
107
+ * route, and passing both is a validation error.
108
+ */
109
+ authEndpoint?: string | CredentialProvider | null | undefined;
110
+
111
+ /** Timeout for a session-mint request. @default 10000 */
112
+ authTimeoutMs?: number | undefined;
113
+
114
+ /** Explicit opt-in for a cross-origin session-mint endpoint. */
115
+ allowCrossOriginAuthEndpoint?: boolean | undefined;
116
+
117
+ /**
118
+ * Local persistence mode. Pass `indexeddb` only when you want offline
119
+ * queueing and a reload-surviving browser cache.
120
+ *
121
+ * @default 'memory'
122
+ */
123
+ persistence?: AbloPersistence;
124
+
125
+ /**
126
+ * Makes `create`, `update`, and `delete` survive process restarts and
127
+ * ambiguous network responses. Server-side agents and workers inject a
128
+ * workflow-, SQLite-, or filesystem-backed store; authenticated identity is
129
+ * used to fence replay to the actor that originally made the write.
130
+ *
131
+ * Most clients leave this unset and use Ablo's default in-memory cache.
132
+ * `durableWrites` is independent of that cache: it is the optional outbound
133
+ * write journal for workers that must recover automatically after a crash.
134
+ * Browsers only use IndexedDB when `persistence: 'indexeddb'` is explicitly
135
+ * enabled for offline/reload behavior.
136
+ *
137
+ * @example
138
+ * ```ts
139
+ * Ablo({
140
+ * schema,
141
+ * apiKey,
142
+ * durableWrites: { store, namespace: 'agent-worker' },
143
+ * })
144
+ * ```
145
+ */
146
+ /**
147
+ * Wire message types to surface as collaboration events, e.g.
148
+ * `['document:selection', 'document:cursor']`.
149
+ *
150
+ * These name your application's own concepts, so the SDK ships no default —
151
+ * a schema with no documents should never receive document events. Declare
152
+ * the ones you broadcast.
153
+ */
154
+ collaborationEvents?: readonly string[];
155
+ durableWrites?: DurableWritesConfig;
156
+
157
+ /**
158
+ * @deprecated Use `durableWrites: { store, namespace }`.
159
+ * Retained as a compatibility alias through the next major release.
160
+ */
161
+ commitOutbox?: DurableWriteStore;
162
+
163
+ /**
164
+ * @deprecated Actor identity is resolved from authentication. Use
165
+ * `durableWrites.namespace` only when shared storage needs separate workflow
166
+ * or deployment lanes.
167
+ *
168
+ * Stable actor/server scope for an injected HTTP `commitOutbox`.
169
+ * Omit it to resolve `organizationId` and `participantId` from the authenticated
170
+ * `/auth/identity` endpoint. Supplying it avoids that one setup request in
171
+ * trusted worker environments; `namespace` distinguishes deployments or
172
+ * workflow lanes that share the same actor identity.
173
+ */
174
+ commitOutboxScope?: CommitOutboxScope;
175
+
176
+ /**
177
+ * Turns Ablo's diagnostic logging on or off. `true` surfaces the `[Ablo]`
178
+ * coordination trace — claims requested, queued, granted, and released, agent
179
+ * handovers, and connection state — so you can watch the coordination between
180
+ * agents and people while debugging. Omitting it, or `false`, keeps the quiet
181
+ * default of warnings and errors only. For a middle ground use {@link logLevel}.
182
+ * The `ABLO_LOG_LEVEL` environment variable overrides it, and a custom logger
183
+ * takes precedence.
184
+ */
185
+ debug?: boolean | undefined;
186
+
187
+ /**
188
+ * Route Ablo's log lines through your own logger (pino, winston, a test spy)
189
+ * instead of the default console `[Ablo]` logger. Supplying one bypasses
190
+ * {@link debug}/{@link logLevel} — your logger owns the thresholds.
191
+ */
192
+ logger?: Logger;
193
+
194
+ /**
195
+ * The log threshold for the default `[Ablo]` logger; takes precedence over
196
+ * {@link debug}. `'info'` shows coordination and connection events without the
197
+ * per-model registration detail, `'debug'` shows everything, `'warn'` (the
198
+ * default) shows warnings and errors only, and `'silent'` shows nothing. The
199
+ * `ABLO_LOG_LEVEL` environment variable overrides it.
200
+ */
201
+ logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'silent' | undefined;
202
+
203
+ // ── Advanced (you usually don't need these) ─────────────────────────
204
+ // Connection and transport tuning. The defaults are set for hosted production;
205
+ // override them only for self-hosting, tests, proxies, or unusual runtimes.
206
+
207
+ /**
208
+ * Bearer auth token. Hosted-cloud consumers pass `apiKey`; self-hosted
209
+ * deployments may pass a bearer token minted by their own auth layer.
210
+ */
211
+ authToken?: string | null | undefined;
212
+
213
+ /**
214
+ * Override the Ablo API base URL. Defaults to hosted production.
215
+ */
216
+ baseURL?: string | null | undefined;
217
+
218
+ /** Custom fetch implementation for tests, proxies, or non-standard runtimes. */
219
+ fetch?: typeof fetch | undefined;
220
+
221
+ /** Default headers sent with every API request. */
222
+ defaultHeaders?: Record<string, string | null | undefined> | undefined;
223
+
224
+ /** Default query parameters sent with every API request. */
225
+ defaultQuery?: Record<string, string | undefined> | undefined;
226
+
227
+ /**
228
+ * Client-side use is disabled by default because private API keys should
229
+ * not ship to browsers. Set this only when the browser holds a minted
230
+ * session token (`ek_`/`rk_`) or you route through a controlled server proxy.
231
+ */
232
+ dangerouslyAllowBrowser?: boolean | undefined;
233
+
234
+ /**
235
+ * How far a write goes before its promise settles, for every model write on
236
+ * this client. The same word each write already takes per call
237
+ * (`create({ …, wait: 'confirmed' })`); setting it here makes it the default
238
+ * instead of repeating it.
239
+ *
240
+ * A write resolves as soon as it is applied locally and queued. That is what
241
+ * makes the UI immediate, and it is right for most writes — but it means a
242
+ * write the server later REFUSES has no caller left to tell. The rejection
243
+ * reverts the local row and reaches `ablo.onMutationFailure(…)`, and an
244
+ * application that subscribes to neither shows the change, then loses it,
245
+ * with nothing thrown anywhere.
246
+ *
247
+ * ```ts
248
+ * const ablo = new Ablo({ schema, apiKey, wait: 'confirmed' });
249
+ * try {
250
+ * await ablo.documents.update({ id, data }); // throws if refused
251
+ * } catch (err) {
252
+ * if (err instanceof AbloError) show(err.message);
253
+ * }
254
+ * ```
255
+ *
256
+ * The cost is real: each write now waits for the server's answer, so it is a
257
+ * choice between immediacy and certainty rather than a strict improvement.
258
+ * A per-call `wait` still wins over this.
259
+ */
260
+ wait?: 'queued' | 'confirmed' | undefined;
261
+ }
262
+
263
+ export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
264
+ /**
265
+ * The API key used for authentication.
266
+ *
267
+ * Accepts a static string (`sk_live_...`) or an async function that resolves to
268
+ * one. Defaults to the `ABLO_API_KEY` environment variable.
269
+ *
270
+ * When a function is provided, it is invoked before each request, so you can
271
+ * rotate or refresh credentials at runtime. It must return a non-empty string, or
272
+ * an `AbloAuthenticationError` is thrown; if it throws, the error is wrapped with
273
+ * the original available as `cause`.
274
+ */
275
+ apiKey?: string | CredentialProvider | null | undefined;
276
+
277
+ /**
278
+ * Session-mint endpoint (string or async resolver) — see
279
+ * {@link AbloOptions.authEndpoint}. Mutually exclusive with `apiKey`.
280
+ */
281
+ authEndpoint?: string | CredentialProvider | null | undefined;
282
+
283
+ /**
284
+ * A bearer auth token, sent as `Authorization: Bearer <token>` on every request.
285
+ *
286
+ * Use it for self-hosted deployments where your own auth layer mints capability
287
+ * tokens directly. Hosted-cloud consumers pass `apiKey` instead and let the
288
+ * server mint the capability token.
289
+ */
290
+ authToken?: string | null | undefined;
291
+
292
+ /**
293
+ * Override the default base URL. Defaults to
294
+ * `wss://api.abloatai.com` for hosted production; pass an explicit
295
+ * URL for self-hosted or private deployments.
296
+ */
297
+ baseURL?: string | null | undefined;
298
+
299
+ /**
300
+ * Custom `fetch` implementation. Defaults to `globalThis.fetch`.
301
+ * Override for testing, custom transports, or runtime shims.
302
+ */
303
+ fetch?: typeof fetch | undefined;
304
+
305
+ /**
306
+ * Default headers to include with every request to the API.
307
+ * Removed per-request by setting the header to `null` in request
308
+ * options.
309
+ */
310
+ defaultHeaders?: Record<string, string | null | undefined> | undefined;
311
+
312
+ /**
313
+ * Default query parameters to include with every request.
314
+ * Removed per-request by setting the param to `undefined`.
315
+ */
316
+ defaultQuery?: Record<string, string | undefined> | undefined;
317
+
318
+ /**
319
+ * Client-side use of this SDK is disabled by default — your apiKey
320
+ * would ship to every visitor's network tab. Only set this to
321
+ * `true` if you've understood the risk and have appropriate
322
+ * mitigations (a minted session token, a server-side proxy, etc).
323
+ */
324
+ dangerouslyAllowBrowser?: boolean | undefined;
325
+
326
+ /**
327
+ * TypeScript schema defined with `defineSchema()`.
328
+ *
329
+ * Required on every public `Ablo(...)` construction. It produces typed model
330
+ * clients such as `ablo.weatherReports.update(...)`; schema-agnostic routing
331
+ * exists only inside the private HTTP transport.
332
+ */
333
+ schema: Schema<S>;
334
+
335
+ // ── Deprecated ──────────────────────────────────────────────────────
336
+ // Options retained for backward compatibility. New consumers should pass only
337
+ // `{ schema, apiKey }` and let Ablo resolve account scope, participant identity,
338
+ // and realtime permissions from the key.
339
+
340
+ /**
341
+ * @deprecated The server derives the participant kind from the apiKey's scope.
342
+ * Pass `apiKey` only.
343
+ */
344
+ kind?: ParticipantKind;
345
+
346
+ /**
347
+ * @deprecated The server derives user identity from the apiKey's scope, or from
348
+ * the `Ablo-Acting-User` request header for multi-tenant setups. Pass `apiKey`
349
+ * only.
350
+ */
351
+ user?: {
352
+ id: string;
353
+ teamIds?: string[];
354
+ };
355
+
356
+ /**
357
+ * @deprecated The server derives agent identity from the apiKey's scope. Pass
358
+ * `apiKey` only.
359
+ */
360
+ agentId?: string;
361
+
362
+ /**
363
+ * @deprecated Pass `apiKey` only; the server issues the capability token.
364
+ */
365
+ capabilityToken?: string;
366
+
367
+ /** Custom logger (default: console). Supplying one bypasses {@link debug}/{@link logLevel}. */
368
+ logger?: Logger;
369
+
370
+ /**
371
+ * Turns Ablo's diagnostic logging on or off. `true` surfaces the `[Ablo]`
372
+ * coordination trace — claims acquired, queued, granted, and released, agent
373
+ * handovers, and connection state — along with internal lifecycle events, so you
374
+ * can watch the coordination between agents and people. Omitting it, or `false`,
375
+ * keeps the quiet default of warnings and errors only. For a middle ground use
376
+ * {@link logLevel}. The `ABLO_LOG_LEVEL` environment variable overrides it, and a
377
+ * custom {@link logger} takes precedence.
378
+ */
379
+ debug?: boolean;
380
+
381
+ /**
382
+ * The log threshold for the default `[Ablo]` logger; takes precedence over
383
+ * {@link debug}. `'info'` shows coordination and connection events without the
384
+ * per-model registration detail, `'debug'` shows everything, `'warn'` (the
385
+ * default) shows warnings and errors only, and `'silent'` shows nothing. The
386
+ * `ABLO_LOG_LEVEL` environment variable overrides it.
387
+ */
388
+ logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'silent';
389
+
390
+ /** InstanceCache size limit (default: 10000) */
391
+ maxPoolSize?: number;
392
+
393
+ /**
394
+ * Local persistence mode. Defaults to `memory`, keeping the local cache in
395
+ * process rather than adding IndexedDB durability to every browser consumer.
396
+ *
397
+ * Pass `persistence: 'indexeddb'` only when you want offline queueing and a
398
+ * reload-surviving local cache in a browser.
399
+ */
400
+ persistence?: AbloPersistence;
401
+
402
+ /** Internal mirror of {@link AbloOptions.durableWrites}. */
403
+ /** Wire message types to surface as collaboration events. Empty unless declared. */
404
+ collaborationEvents?: readonly string[];
405
+ durableWrites?: DurableWritesConfig;
406
+
407
+ /** @deprecated Internal mirror of {@link AbloOptions.commitOutbox}. */
408
+ commitOutbox?: DurableWriteStore;
409
+
410
+ /** @deprecated Internal mirror of {@link AbloOptions.commitOutboxScope}. */
411
+ commitOutboxScope?: CommitOutboxScope;
412
+
413
+ /** @deprecated Use `persistence: 'indexeddb'` for durable browser storage. */
414
+ offline?: boolean;
415
+
416
+ /**
417
+ * @deprecated Internal/testing escape hatch. Use `persistence` in
418
+ * production code. `true` maps to `memory`; `false` maps to
419
+ * `indexeddb` in browsers.
420
+ */
421
+ inMemory?: boolean;
422
+
423
+ /**
424
+ * When `true`, initialization starts immediately in the background, so reads work
425
+ * once `await ready()` resolves.
426
+ *
427
+ * When `false` (the default), you must call `await ready()` before using the
428
+ * engine; any query before that returns empty results. The explicit default
429
+ * guards against silent initialization failures.
430
+ */
431
+ autoStart?: boolean;
432
+
433
+ /**
434
+ * How much baseline state this client pulls at startup.
435
+ *
436
+ * - `'full'`: pull every delta in the configured sync groups before `ready()`
437
+ * resolves. The default for user clients.
438
+ * - `'none'`: open the socket and process live deltas only, with no baseline
439
+ * fetch. Reads round-trip through `get`, and subscriptions fill the local
440
+ * cache lazily. The default for agent clients, which do not need a local
441
+ * replica of the organization's data.
442
+ */
443
+ bootstrapMode?: 'full' | 'none';
444
+
445
+ // ── Advanced dependency-injection overrides ──────────────────────────────
446
+ //
447
+ // The fields below let an integrator replace the client's no-op defaults with
448
+ // their own implementations, so an app that already runs its own observability,
449
+ // analytics, and mutation executor can keep them. Most consumers can ignore
450
+ // these — the built-in defaults work for the documented zero-config setup.
451
+
452
+ /**
453
+ * Custom observability provider (Sentry, Honeycomb, OTel, etc.).
454
+ * Default: a noop implementation that drops all breadcrumbs and spans.
455
+ */
456
+ observability?: ObservabilityProvider;
457
+
458
+ /**
459
+ * Custom analytics provider (PostHog, Amplitude, Segment, etc.).
460
+ * Default: a noop implementation that drops all events.
461
+ */
462
+ analytics?: Analytics;
463
+
464
+ /**
465
+ * Detect whether an error from a mutation/bootstrap response means the
466
+ * user's session has expired. Used to surface re-auth prompts. Default:
467
+ * heuristic that matches `401 Unauthorized` and a few common error shapes.
468
+ */
469
+ sessionErrorDetector?: SessionErrorDetector;
470
+
471
+ /**
472
+ * Detect whether the browser is currently online. Default: reads
473
+ * `navigator.onLine` and listens to the `online`/`offline` events.
474
+ */
475
+ onlineStatus?: OnlineStatusProvider;
476
+
477
+ /**
478
+ * Replace the built-in `MutationExecutor` (which posts a hardcoded
479
+ * `commit` method against `${url}/graphql`) with one that uses your own
480
+ * GraphQL client, auth headers, retry policy, and observability hooks.
481
+ *
482
+ * Default: a fetch-based executor that targets `${url}/graphql` and sends
483
+ * the configured bearer (`apiKey` / backend-minted token) as `Authorization`.
484
+ */
485
+ mutationExecutor?: MutationExecutor;
486
+
487
+ /**
488
+ * Partial overrides for the auto-derived `RuntimeConfig`. Merged on
489
+ * top of `deriveConfigFromSchema(schema)`. Use this when you need
490
+ * specific `modelCreatePriority`, `batchableModels`, or
491
+ * `essentialFields` settings that the schema cannot express.
492
+ */
493
+ configOverrides?: Partial<RuntimeConfig>;
494
+
495
+ /**
496
+ * The sync groups (entity scopes) this client subscribes to. Normally the server
497
+ * derives these from the apiKey's scope; pass them explicitly when the key does
498
+ * not resolve them, otherwise the client fans out nothing and logs a `degenerate
499
+ * syncGroups` warning. Build values with `syncGroup(kind, id)` from
500
+ * the transaction schema package.
501
+ */
502
+ syncGroups?: string[];
503
+
504
+ /**
505
+ * Override the bootstrap endpoint base URL. Use this when your sync
506
+ * server's HTTP API lives on a different host than the WebSocket URL.
507
+ *
508
+ * Must include the `/api` prefix — `BootstrapFetcher` appends
509
+ * `/sync/bootstrap` directly. Example:
510
+ * `'http://api.example.com/api'` → `http://api.example.com/api/sync/bootstrap`.
511
+ *
512
+ * Default: `${url.replace(/^ws/, 'http')}/api`.
513
+ */
514
+ bootstrapBaseUrl?: string;
515
+
516
+ /**
517
+ * The account scope. Supply it together with a user or agent id to resolve
518
+ * identity locally without a server round-trip; without it, the client resolves
519
+ * identity from the token through the identity endpoint instead.
520
+ */
521
+ organizationId?: string;
522
+
523
+ /** The client-wide write default — see {@link AbloOptions.wait}. Projected
524
+ * from the public option rather than restated, so the two cannot diverge. */
525
+ wait?: AbloOptions['wait'];
526
+ }