@abloatai/ablo 0.26.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/CHANGELOG.md +42 -2
  2. package/README.md +102 -86
  3. package/dist/BaseSyncedStore.d.ts +85 -88
  4. package/dist/BaseSyncedStore.js +134 -151
  5. package/dist/Database.d.ts +68 -69
  6. package/dist/Database.js +316 -135
  7. package/dist/{ObjectPool.d.ts → InstanceCache.d.ts} +10 -13
  8. package/dist/{ObjectPool.js → InstanceCache.js} +85 -83
  9. package/dist/LazyReferenceCollection.d.ts +11 -15
  10. package/dist/LazyReferenceCollection.js +12 -16
  11. package/dist/Model.d.ts +54 -52
  12. package/dist/Model.js +78 -62
  13. package/dist/ModelRegistry.d.ts +21 -19
  14. package/dist/ModelRegistry.js +23 -27
  15. package/dist/NetworkMonitor.d.ts +5 -6
  16. package/dist/NetworkMonitor.js +5 -6
  17. package/dist/SyncClient.d.ts +122 -118
  18. package/dist/SyncClient.js +541 -245
  19. package/dist/adapters/alwaysOnline.d.ts +6 -8
  20. package/dist/adapters/alwaysOnline.js +6 -8
  21. package/dist/adapters/inMemoryStorage.d.ts +10 -9
  22. package/dist/adapters/inMemoryStorage.js +21 -9
  23. package/dist/agent/Agent.d.ts +27 -32
  24. package/dist/agent/Agent.js +18 -19
  25. package/dist/agent/index.d.ts +4 -4
  26. package/dist/agent/index.js +5 -5
  27. package/dist/agent/session.d.ts +47 -44
  28. package/dist/agent/session.js +37 -48
  29. package/dist/agent/types.d.ts +26 -31
  30. package/dist/agent/types.js +6 -7
  31. package/dist/ai-sdk/coordinatedTool.d.ts +108 -0
  32. package/dist/ai-sdk/{coordinated-tool.js → coordinatedTool.js} +44 -38
  33. package/dist/ai-sdk/coordinationContext.d.ts +46 -0
  34. package/dist/ai-sdk/{coordination-context.js → coordinationContext.js} +26 -33
  35. package/dist/ai-sdk/index.d.ts +25 -22
  36. package/dist/ai-sdk/index.js +25 -22
  37. package/dist/ai-sdk/wrap.d.ts +6 -7
  38. package/dist/ai-sdk/wrap.js +1 -1
  39. package/dist/auth/credentialPolicy.d.ts +69 -74
  40. package/dist/auth/credentialPolicy.js +51 -56
  41. package/dist/auth/credentialSource.d.ts +6 -5
  42. package/dist/auth/credentialSource.js +9 -10
  43. package/dist/auth/index.d.ts +59 -58
  44. package/dist/auth/index.js +31 -37
  45. package/dist/auth/schemas.d.ts +5 -4
  46. package/dist/auth/schemas.js +5 -4
  47. package/dist/batching/index.d.ts +19 -21
  48. package/dist/batching/index.js +14 -17
  49. package/dist/cli.cjs +173 -121
  50. package/dist/client/Ablo.d.ts +97 -74
  51. package/dist/client/Ablo.js +129 -163
  52. package/dist/client/ApiClient.d.ts +30 -19
  53. package/dist/client/ApiClient.js +442 -81
  54. package/dist/client/auth.d.ts +47 -47
  55. package/dist/client/auth.js +108 -117
  56. package/dist/client/claimHeartbeatLoop.d.ts +50 -0
  57. package/dist/client/claimHeartbeatLoop.js +88 -0
  58. package/dist/client/consoleLogger.d.ts +5 -6
  59. package/dist/client/consoleLogger.js +5 -6
  60. package/dist/client/createInternalComponents.d.ts +16 -17
  61. package/dist/client/createInternalComponents.js +26 -31
  62. package/dist/client/createModelProxy.d.ts +130 -120
  63. package/dist/client/createModelProxy.js +152 -122
  64. package/dist/client/credentialEndpoint.d.ts +40 -42
  65. package/dist/client/credentialEndpoint.js +35 -36
  66. package/dist/client/functionalUpdate.d.ts +29 -27
  67. package/dist/client/functionalUpdate.js +21 -21
  68. package/dist/client/hostedEndpoints.d.ts +9 -12
  69. package/dist/client/hostedEndpoints.js +9 -12
  70. package/dist/client/httpClient.d.ts +59 -53
  71. package/dist/client/httpClient.js +29 -31
  72. package/dist/client/identity.d.ts +15 -20
  73. package/dist/client/identity.js +47 -58
  74. package/dist/client/modelRegistration.d.ts +5 -9
  75. package/dist/client/modelRegistration.js +78 -87
  76. package/dist/client/options.d.ts +157 -157
  77. package/dist/client/options.js +3 -7
  78. package/dist/client/registerDataSource.d.ts +9 -9
  79. package/dist/client/registerDataSource.js +15 -16
  80. package/dist/client/resourceTypes.d.ts +64 -75
  81. package/dist/client/resourceTypes.js +4 -10
  82. package/dist/client/schemaConfig.d.ts +31 -43
  83. package/dist/client/schemaConfig.js +38 -50
  84. package/dist/client/sessionMint.d.ts +16 -12
  85. package/dist/client/sessionMint.js +26 -31
  86. package/dist/client/validateAbloOptions.d.ts +12 -14
  87. package/dist/client/validateAbloOptions.js +8 -9
  88. package/dist/client/writeOptionsSchema.d.ts +18 -16
  89. package/dist/client/writeOptionsSchema.js +23 -20
  90. package/dist/client/wsMutationExecutor.d.ts +16 -20
  91. package/dist/client/wsMutationExecutor.js +18 -23
  92. package/dist/commit/contract.d.ts +493 -0
  93. package/dist/commit/contract.js +187 -0
  94. package/dist/commit/index.d.ts +6 -0
  95. package/dist/commit/index.js +5 -0
  96. package/dist/context.d.ts +6 -4
  97. package/dist/context.js +6 -4
  98. package/dist/coordination/index.d.ts +10 -8
  99. package/dist/coordination/index.js +14 -12
  100. package/dist/coordination/schema.d.ts +176 -128
  101. package/dist/coordination/schema.js +197 -133
  102. package/dist/coordination/trace.d.ts +9 -10
  103. package/dist/coordination/trace.js +13 -14
  104. package/dist/core/DatabaseManager.d.ts +5 -7
  105. package/dist/core/DatabaseManager.js +15 -19
  106. package/dist/core/QueryProcessor.d.ts +7 -9
  107. package/dist/core/QueryProcessor.js +22 -28
  108. package/dist/core/QueryView.d.ts +8 -8
  109. package/dist/core/QueryView.js +2 -2
  110. package/dist/core/StoreManager.d.ts +14 -14
  111. package/dist/core/StoreManager.js +33 -24
  112. package/dist/core/ViewRegistry.d.ts +5 -5
  113. package/dist/core/ViewRegistry.js +4 -4
  114. package/dist/core/index.d.ts +17 -12
  115. package/dist/core/index.js +32 -26
  116. package/dist/core/openIDBWithTimeout.d.ts +38 -36
  117. package/dist/core/openIDBWithTimeout.js +42 -43
  118. package/dist/core/queryUtils.d.ts +45 -0
  119. package/dist/core/queryUtils.js +69 -0
  120. package/dist/core/storeContract.d.ts +63 -61
  121. package/dist/core/storeContract.js +8 -12
  122. package/dist/environment.d.ts +28 -0
  123. package/dist/environment.js +21 -0
  124. package/dist/errorCodes.d.ts +107 -99
  125. package/dist/errorCodes.js +137 -134
  126. package/dist/errors.d.ts +160 -166
  127. package/dist/errors.js +155 -158
  128. package/dist/index.d.ts +36 -27
  129. package/dist/index.js +91 -86
  130. package/dist/interfaces/index.d.ts +102 -113
  131. package/dist/interfaces/index.js +5 -4
  132. package/dist/keys/index.d.ts +27 -29
  133. package/dist/keys/index.js +41 -40
  134. package/dist/mutators/RecordingTransaction.d.ts +16 -16
  135. package/dist/mutators/RecordingTransaction.js +31 -37
  136. package/dist/mutators/Transaction.d.ts +18 -26
  137. package/dist/mutators/Transaction.js +14 -20
  138. package/dist/mutators/UndoManager.d.ts +124 -131
  139. package/dist/mutators/UndoManager.js +177 -156
  140. package/dist/mutators/defineMutators.d.ts +23 -34
  141. package/dist/mutators/defineMutators.js +14 -20
  142. package/dist/mutators/inverseOp.d.ts +12 -15
  143. package/dist/mutators/inverseOp.js +12 -15
  144. package/dist/mutators/mutateActions.d.ts +10 -9
  145. package/dist/mutators/mutateActions.js +1 -1
  146. package/dist/mutators/readerActions.d.ts +9 -8
  147. package/dist/mutators/readerActions.js +2 -2
  148. package/dist/mutators/undoApply.d.ts +31 -27
  149. package/dist/mutators/undoApply.js +26 -24
  150. package/dist/policy/index.d.ts +5 -3
  151. package/dist/policy/index.js +5 -3
  152. package/dist/policy/types.d.ts +104 -100
  153. package/dist/policy/types.js +67 -66
  154. package/dist/query/client.d.ts +28 -23
  155. package/dist/query/client.js +45 -43
  156. package/dist/query/types.d.ts +37 -60
  157. package/dist/query/types.js +13 -33
  158. package/dist/react/AbloProvider.d.ts +1 -1
  159. package/dist/react/AbloProvider.js +2 -2
  160. package/dist/react/context.d.ts +25 -28
  161. package/dist/react/context.js +9 -10
  162. package/dist/react/index.d.ts +41 -42
  163. package/dist/react/index.js +37 -38
  164. package/dist/react/internalContext.d.ts +17 -19
  165. package/dist/react/useAblo.d.ts +28 -25
  166. package/dist/react/useAblo.js +41 -17
  167. package/dist/react/useCurrentUserId.d.ts +8 -7
  168. package/dist/react/useCurrentUserId.js +8 -7
  169. package/dist/react/useErrorListener.d.ts +7 -7
  170. package/dist/react/useErrorListener.js +10 -11
  171. package/dist/react/useMutationFailureListener.d.ts +8 -8
  172. package/dist/react/useMutationFailureListener.js +8 -8
  173. package/dist/react/useMutators.d.ts +11 -11
  174. package/dist/react/useMutators.js +3 -3
  175. package/dist/react/useReactive.js +2 -2
  176. package/dist/react/useSyncStatus.d.ts +4 -6
  177. package/dist/react/useUndoScope.d.ts +7 -9
  178. package/dist/react/useUndoScope.js +1 -1
  179. package/dist/schema/coordination.d.ts +21 -25
  180. package/dist/schema/coordination.js +21 -25
  181. package/dist/schema/ddl.d.ts +43 -39
  182. package/dist/schema/ddl.js +75 -68
  183. package/dist/schema/ddlLock.d.ts +20 -24
  184. package/dist/schema/ddlLock.js +18 -23
  185. package/dist/schema/diff.d.ts +99 -61
  186. package/dist/schema/diff.js +43 -34
  187. package/dist/schema/field.d.ts +37 -42
  188. package/dist/schema/field.js +35 -48
  189. package/dist/schema/generate.d.ts +12 -12
  190. package/dist/schema/generate.js +12 -12
  191. package/dist/schema/index.d.ts +3 -3
  192. package/dist/schema/index.js +21 -23
  193. package/dist/schema/model.d.ts +118 -143
  194. package/dist/schema/model.js +22 -33
  195. package/dist/schema/openapi.d.ts +10 -9
  196. package/dist/schema/openapi.js +5 -3
  197. package/dist/schema/queries.d.ts +29 -31
  198. package/dist/schema/queries.js +23 -25
  199. package/dist/schema/relation.d.ts +89 -99
  200. package/dist/schema/relation.js +13 -13
  201. package/dist/schema/residency.d.ts +16 -13
  202. package/dist/schema/residency.js +16 -13
  203. package/dist/schema/roles.d.ts +36 -43
  204. package/dist/schema/roles.js +31 -37
  205. package/dist/schema/schema.d.ts +64 -43
  206. package/dist/schema/schema.js +31 -32
  207. package/dist/schema/select.d.ts +13 -13
  208. package/dist/schema/select.js +13 -13
  209. package/dist/schema/serialize.d.ts +28 -31
  210. package/dist/schema/serialize.js +27 -31
  211. package/dist/schema/sugar.d.ts +17 -32
  212. package/dist/schema/sugar.js +14 -29
  213. package/dist/schema/{sync-delta-row.d.ts → syncDeltaRow.d.ts} +26 -49
  214. package/dist/schema/syncDeltaRow.js +89 -0
  215. package/dist/schema/tenancy.d.ts +44 -46
  216. package/dist/schema/tenancy.js +46 -48
  217. package/dist/server/adapter.d.ts +58 -58
  218. package/dist/server/adapter.js +13 -14
  219. package/dist/server/commit.d.ts +60 -64
  220. package/dist/server/index.d.ts +9 -10
  221. package/dist/server/index.js +1 -1
  222. package/dist/server/readConfig.d.ts +70 -0
  223. package/dist/server/readConfig.js +8 -0
  224. package/dist/server/storageMode.d.ts +23 -0
  225. package/dist/server/storageMode.js +17 -0
  226. package/dist/source/adapter.d.ts +30 -25
  227. package/dist/source/adapter.js +10 -10
  228. package/dist/source/adapters/drizzle.d.ts +28 -23
  229. package/dist/source/adapters/drizzle.js +30 -25
  230. package/dist/source/adapters/kysely.d.ts +27 -25
  231. package/dist/source/adapters/kysely.js +24 -23
  232. package/dist/source/adapters/memory.d.ts +8 -7
  233. package/dist/source/adapters/memory.js +9 -8
  234. package/dist/source/adapters/prisma.d.ts +13 -12
  235. package/dist/source/adapters/prisma.js +22 -25
  236. package/dist/source/conformance.d.ts +18 -11
  237. package/dist/source/conformance.js +17 -11
  238. package/dist/source/connector.d.ts +31 -32
  239. package/dist/source/connector.js +28 -28
  240. package/dist/source/connectorProtocol.d.ts +160 -0
  241. package/dist/source/connectorProtocol.js +162 -0
  242. package/dist/source/contract.d.ts +26 -27
  243. package/dist/source/contract.js +28 -29
  244. package/dist/source/factory.d.ts +46 -58
  245. package/dist/source/factory.js +22 -27
  246. package/dist/source/index.d.ts +7 -9
  247. package/dist/source/index.js +12 -14
  248. package/dist/source/migrations.d.ts +9 -9
  249. package/dist/source/migrations.js +9 -9
  250. package/dist/source/next.d.ts +9 -10
  251. package/dist/source/next.js +6 -7
  252. package/dist/source/pushQueue.d.ts +69 -47
  253. package/dist/source/pushQueue.js +32 -28
  254. package/dist/source/signing.d.ts +46 -17
  255. package/dist/source/signing.js +28 -11
  256. package/dist/source/types.d.ts +121 -104
  257. package/dist/source/types.js +13 -14
  258. package/dist/stores/ObjectStore.d.ts +24 -12
  259. package/dist/stores/ObjectStore.js +38 -16
  260. package/dist/stores/ObjectStoreContract.d.ts +14 -15
  261. package/dist/stores/SyncActionStore.d.ts +7 -11
  262. package/dist/stores/SyncActionStore.js +13 -17
  263. package/dist/surface.d.ts +28 -21
  264. package/dist/surface.js +29 -20
  265. package/dist/sync/{BootstrapHelper.d.ts → BootstrapFetcher.d.ts} +36 -42
  266. package/dist/sync/{BootstrapHelper.js → BootstrapFetcher.js} +76 -76
  267. package/dist/sync/ConnectionManager.d.ts +39 -50
  268. package/dist/sync/ConnectionManager.js +55 -66
  269. package/dist/sync/NetworkProbe.d.ts +24 -29
  270. package/dist/sync/NetworkProbe.js +63 -69
  271. package/dist/sync/{HydrationCoordinator.d.ts → OnDemandLoader.d.ts} +42 -41
  272. package/dist/sync/{HydrationCoordinator.js → OnDemandLoader.js} +59 -54
  273. package/dist/sync/{AreaOfInterestManager.d.ts → SubscriptionManager.d.ts} +43 -57
  274. package/dist/sync/{AreaOfInterestManager.js → SubscriptionManager.js} +43 -51
  275. package/dist/sync/SyncWebSocket.d.ts +141 -166
  276. package/dist/sync/SyncWebSocket.js +191 -223
  277. package/dist/sync/awaitClaimGrant.d.ts +18 -18
  278. package/dist/sync/awaitClaimGrant.js +11 -11
  279. package/dist/sync/bootstrapApply.d.ts +34 -24
  280. package/dist/sync/bootstrapApply.js +27 -19
  281. package/dist/sync/commitFrames.d.ts +21 -20
  282. package/dist/sync/commitFrames.js +18 -18
  283. package/dist/sync/createClaimStream.d.ts +23 -22
  284. package/dist/sync/createClaimStream.js +105 -23
  285. package/dist/sync/createPresenceStream.d.ts +19 -18
  286. package/dist/sync/createPresenceStream.js +25 -26
  287. package/dist/sync/createSnapshot.d.ts +12 -14
  288. package/dist/sync/createSnapshot.js +20 -26
  289. package/dist/sync/credentialLifecycle.d.ts +104 -104
  290. package/dist/sync/credentialLifecycle.js +140 -147
  291. package/dist/sync/deltaPipeline.d.ts +36 -34
  292. package/dist/sync/deltaPipeline.js +64 -65
  293. package/dist/sync/groupChange.d.ts +63 -61
  294. package/dist/sync/groupChange.js +74 -78
  295. package/dist/sync/heartbeat.d.ts +34 -33
  296. package/dist/sync/heartbeat.js +31 -31
  297. package/dist/sync/participants.d.ts +19 -19
  298. package/dist/sync/persistedPrefix.d.ts +12 -0
  299. package/dist/sync/persistedPrefix.js +22 -0
  300. package/dist/sync/schemas.d.ts +3 -2
  301. package/dist/sync/schemas.js +14 -10
  302. package/dist/sync/syncCursor.d.ts +17 -21
  303. package/dist/sync/syncCursor.js +17 -21
  304. package/dist/sync/syncPlan.d.ts +28 -36
  305. package/dist/sync/syncPlan.js +18 -19
  306. package/dist/sync/syncPosition.d.ts +54 -49
  307. package/dist/sync/syncPosition.js +57 -52
  308. package/dist/sync/wsFrameHandlers.d.ts +35 -36
  309. package/dist/sync/wsFrameHandlers.js +63 -67
  310. package/dist/testing/fixtures/bootstrap.d.ts +12 -6
  311. package/dist/testing/fixtures/bootstrap.js +12 -6
  312. package/dist/testing/fixtures/deltas.d.ts +30 -33
  313. package/dist/testing/fixtures/deltas.js +30 -33
  314. package/dist/testing/fixtures/models.d.ts +11 -10
  315. package/dist/testing/fixtures/models.js +11 -10
  316. package/dist/testing/helpers/{react-wrapper.d.ts → reactWrapper.d.ts} +13 -10
  317. package/dist/testing/helpers/{react-wrapper.js → reactWrapper.js} +15 -12
  318. package/dist/testing/helpers/{sync-engine-harness.d.ts → syncEngineHarness.d.ts} +17 -15
  319. package/dist/testing/helpers/{sync-engine-harness.js → syncEngineHarness.js} +12 -10
  320. package/dist/testing/helpers/wait.d.ts +13 -8
  321. package/dist/testing/helpers/wait.js +13 -8
  322. package/dist/testing/index.d.ts +5 -3
  323. package/dist/testing/index.js +3 -2
  324. package/dist/testing/mocks/FakeDatabase.d.ts +18 -0
  325. package/dist/testing/mocks/FakeDatabase.js +10 -0
  326. package/dist/testing/mocks/MockMutationExecutor.d.ts +18 -17
  327. package/dist/testing/mocks/MockMutationExecutor.js +15 -14
  328. package/dist/testing/mocks/MockNetworkMonitor.d.ts +8 -8
  329. package/dist/testing/mocks/MockNetworkMonitor.js +8 -8
  330. package/dist/testing/mocks/MockSyncContext.d.ts +20 -17
  331. package/dist/testing/mocks/MockSyncContext.js +15 -13
  332. package/dist/testing/mocks/MockSyncStore.d.ts +10 -10
  333. package/dist/testing/mocks/MockSyncStore.js +11 -11
  334. package/dist/testing/mocks/MockWebSocket.d.ts +28 -23
  335. package/dist/testing/mocks/MockWebSocket.js +22 -21
  336. package/dist/transactions/TransactionQueue.d.ts +244 -181
  337. package/dist/transactions/TransactionQueue.js +929 -423
  338. package/dist/transactions/TransactionStore.d.ts +6 -4
  339. package/dist/transactions/TransactionStore.js +6 -4
  340. package/dist/transactions/UnconfirmedWrites.d.ts +82 -0
  341. package/dist/transactions/UnconfirmedWrites.js +104 -0
  342. package/dist/transactions/coalesceRules.d.ts +41 -17
  343. package/dist/transactions/coalesceRules.js +40 -17
  344. package/dist/transactions/commitEnvelope.d.ts +132 -0
  345. package/dist/transactions/commitEnvelope.js +139 -0
  346. package/dist/transactions/commitOutboxStore.d.ts +32 -0
  347. package/dist/transactions/commitOutboxStore.js +26 -0
  348. package/dist/transactions/commitPayload.d.ts +63 -52
  349. package/dist/transactions/commitPayload.js +54 -57
  350. package/dist/transactions/deltaConfirmation.d.ts +20 -22
  351. package/dist/transactions/deltaConfirmation.js +37 -45
  352. package/dist/transactions/httpCommitEnvelope.d.ts +43 -0
  353. package/dist/transactions/httpCommitEnvelope.js +179 -0
  354. package/dist/transactions/optimisticApply.d.ts +49 -0
  355. package/dist/transactions/optimisticApply.js +65 -0
  356. package/dist/transactions/replayValidation.d.ts +182 -0
  357. package/dist/transactions/replayValidation.js +156 -0
  358. package/dist/types/global.d.ts +46 -41
  359. package/dist/types/global.js +20 -19
  360. package/dist/types/index.d.ts +71 -77
  361. package/dist/types/index.js +22 -22
  362. package/dist/types/modelData.d.ts +6 -8
  363. package/dist/types/modelData.js +5 -7
  364. package/dist/types/participant.d.ts +10 -11
  365. package/dist/types/participant.js +6 -8
  366. package/dist/types/streams.d.ts +208 -195
  367. package/dist/types/streams.js +7 -7
  368. package/dist/utils/asyncIterator.d.ts +25 -32
  369. package/dist/utils/asyncIterator.js +25 -32
  370. package/dist/utils/duration.d.ts +12 -15
  371. package/dist/utils/duration.js +12 -15
  372. package/dist/utils/mobxSetup.d.ts +53 -0
  373. package/dist/utils/{mobx-setup.js → mobxSetup.js} +42 -98
  374. package/dist/webhooks/events.d.ts +21 -16
  375. package/dist/webhooks/events.js +10 -8
  376. package/dist/webhooks/index.d.ts +5 -7
  377. package/dist/webhooks/index.js +5 -7
  378. package/dist/wire/bootstrapReason.d.ts +9 -0
  379. package/dist/wire/bootstrapReason.js +8 -0
  380. package/dist/{schema/sync-delta-wire.d.ts → wire/delta.d.ts} +58 -41
  381. package/dist/wire/delta.js +114 -0
  382. package/dist/wire/errorEnvelope.d.ts +30 -31
  383. package/dist/wire/errorEnvelope.js +34 -40
  384. package/dist/wire/frames.d.ts +315 -86
  385. package/dist/wire/frames.js +47 -33
  386. package/dist/wire/index.d.ts +18 -14
  387. package/dist/wire/index.js +32 -27
  388. package/dist/wire/listEnvelope.d.ts +16 -23
  389. package/dist/wire/listEnvelope.js +7 -6
  390. package/dist/wire/protocol.d.ts +25 -32
  391. package/dist/wire/protocol.js +25 -32
  392. package/dist/wire/protocolVersion.d.ts +44 -40
  393. package/dist/wire/protocolVersion.js +44 -40
  394. package/docs/api.md +10 -10
  395. package/docs/coordination.md +59 -0
  396. package/docs/mcp.md +1 -1
  397. package/package.json +17 -11
  398. package/dist/ai-sdk/coordinated-tool.d.ts +0 -101
  399. package/dist/ai-sdk/coordination-context.d.ts +0 -52
  400. package/dist/core/query-utils.d.ts +0 -34
  401. package/dist/core/query-utils.js +0 -59
  402. package/dist/schema/sync-delta-row.js +0 -103
  403. package/dist/schema/sync-delta-wire.js +0 -102
  404. package/dist/server/read-config.d.ts +0 -67
  405. package/dist/server/read-config.js +0 -8
  406. package/dist/server/storage-mode.d.ts +0 -8
  407. package/dist/server/storage-mode.js +0 -28
  408. package/dist/source/connector-protocol.d.ts +0 -159
  409. package/dist/source/connector-protocol.js +0 -161
  410. package/dist/transactions/OptimisticEchoTracker.d.ts +0 -82
  411. package/dist/transactions/OptimisticEchoTracker.js +0 -104
  412. package/dist/transactions/mutation-error-handler.d.ts +0 -5
  413. package/dist/transactions/mutation-error-handler.js +0 -39
  414. package/dist/transactions/optimistic.d.ts +0 -24
  415. package/dist/transactions/optimistic.js +0 -45
  416. package/dist/transactions/persistedReplay.d.ts +0 -93
  417. package/dist/transactions/persistedReplay.js +0 -105
  418. package/dist/utils/mobx-setup.d.ts +0 -42
package/dist/errors.d.ts CHANGED
@@ -1,18 +1,14 @@
1
1
  /**
2
- * Typed error hierarchy for `@abloatai/ablo`.
3
- *
4
- * Inlined directly so the publishable dist is self-contained. The public
5
- * package should never reference an unpublished internal package from emitted
6
- * JS; strict bundlers surface that immediately.
7
- *
8
- * ### Two patterns for consumers
2
+ * The typed error hierarchy for this package. Every error the SDK throws is an
3
+ * {@link AbloError} or one of its subclasses, so a consumer can catch broadly or
4
+ * narrowly. There are two equivalent ways to tell errors apart:
9
5
  *
10
6
  * ```ts
11
- * // Stripe-style instanceof
7
+ * // By class, with instanceof
12
8
  * if (err instanceof AbloRateLimitError) backoff(err.retryAfterSeconds);
13
9
  *
14
- * // Discriminator-string (for cross-boundary cases where the class
15
- * // identity gets lost, e.g. across a web worker postMessage)
10
+ * // By discriminator string, for cases where class identity is lost —
11
+ * // for example after an error crosses a web worker boundary
16
12
  * if (err.type === 'AbloRateLimitError') { ... }
17
13
  * ```
18
14
  *
@@ -22,37 +18,41 @@ import type { ErrorCode } from './errorCodes.js';
22
18
  import { type WireClaimSummary, type ModelClaim, type ModelTarget, type ParticipantKind } from './coordination/schema.js';
23
19
  export type { ErrorCode, WireErrorCode, ErrorCategory, ErrorCodeSpec, RecoveryClass } from './errorCodes.js';
24
20
  export { ERROR_CODES, ERROR_CONTRACT_VERSION, errorCodeSpec, isRetryableCode, classifyRecovery, recoveryClassSchema, RECOVERY_CLASSES, } from './errorCodes.js';
25
- /** Common shape for all errors thrown by this SDK. */
21
+ /**
22
+ * The base class for every error this SDK throws. It carries the fields common
23
+ * to all of them — a {@link type} discriminator, an optional stable {@link code},
24
+ * and optional HTTP and diagnostic metadata — and defines the shared JSON and
25
+ * string serialization. Every other error class extends it.
26
+ */
26
27
  export declare class AbloError extends Error {
27
- /** Discriminator string matches the class name. Lets consumers
28
- * switch on `e.type` without `instanceof` checks across package
29
- * boundaries (matches Stripe's `err.type` pattern). */
28
+ /** A discriminator string equal to the class name. Switch on `error.type` to
29
+ * distinguish error kinds when `instanceof` is unreliable, such as after an
30
+ * error has crossed a serialization boundary. */
30
31
  readonly type: string;
31
- /** Stable short identifier for logs + metrics, drawn from the closed
32
- * {@link ErrorCode} registry — e.g. `'apikey_invalid'`,
33
- * `'capability_scope_denied'`. Stored as a plain `string` (not
34
- * `ErrorCode`) so an older SDK still surfaces a newer server's code it
35
- * doesn't recognise yet; producers are constrained at the constructor
36
- * param instead. */
32
+ /** A stable, machine-readable identifier for the error, drawn from the
33
+ * {@link ErrorCode} registry — for example `'apikey_invalid'` or
34
+ * `'capability_scope_denied'` suitable for logs, metrics, and `switch`
35
+ * handling. It is typed as a plain `string` rather than {@link ErrorCode} so
36
+ * this client can still surface a code from a newer server that it does not
37
+ * yet recognize; code producers are constrained at the constructor instead. */
37
38
  readonly code?: string;
38
- /** HTTP status code when the error originated from an HTTP response. */
39
+ /** HTTP status code, when the error originated from an HTTP response. */
39
40
  readonly httpStatus?: number;
40
- /** Correlation id for ops present when the server sent one on
41
- * `x-request-id`. Include in support tickets. */
41
+ /** A correlation id for tracing a request through the server, present when the
42
+ * server returned one on the `x-request-id` header. Include it in support
43
+ * requests. */
42
44
  readonly requestId?: string;
43
- /** Which input caused the error a model/field path like
44
- * `'dataroomMember.grants.subject'`. Mirrors Stripe's `error.param`;
45
- * lets tooling point at the exact offending declaration. */
45
+ /** The specific input that caused the error, as a model or field path such as
46
+ * `'dataroomMember.grants.subject'`, so tooling can point at the exact
47
+ * offending value. */
46
48
  readonly param?: string;
47
- /** Link to the docs for this `code`. Mirrors Stripe's `error.doc_url`.
48
- * Defaults from `code` via {@link docUrlForCode} when omitted. */
49
+ /** A link to the documentation for this error's {@link code}. When not set
50
+ * explicitly, it is derived from the code by {@link docUrlForCode}. */
49
51
  readonly docUrl?: string;
50
- /** Domain-specific structured payload merged into the wire envelope —
51
- * e.g. a schema push's `{ warnings, unexecutable }`, a stale write's
52
- * conflicting rows. Mirrors how Stripe attaches type-specific fields
53
- * (`decline_code`, `payment_intent`) alongside the standard ones, so a
54
- * structured error keeps its detail through `toJSON` instead of being
55
- * flattened to a bare message. */
52
+ /** Extra structured data specific to this error, merged into the serialized
53
+ * envelope — for example a schema push's `{ warnings, unexecutable }`, or the
54
+ * conflicting rows of a stale write. This detail is preserved through
55
+ * {@link toJSON} rather than flattened into the message. */
56
56
  readonly details?: Readonly<Record<string, unknown>>;
57
57
  constructor(message: string, options?: {
58
58
  code?: ErrorCode;
@@ -64,9 +64,10 @@ export declare class AbloError extends Error {
64
64
  details?: Readonly<Record<string, unknown>>;
65
65
  });
66
66
  /**
67
- * Serialize to Stripe's error-object shape: `{ type, code, param, message,
68
- * doc_url, request_id }`. One JSON shape across HTTP bodies, WS frames, and
69
- * logs so consumers parse Ablo errors the way they already parse Stripe's.
67
+ * Serializes the error to its wire shape: `{ type, code, param, message,
68
+ * doc_url, request_id }`, with any {@link details} merged in. This is the same
69
+ * JSON shape the SDK uses across HTTP bodies, WebSocket frames, and logs, so a
70
+ * consumer parses every Ablo error the same way.
70
71
  */
71
72
  toJSON(): {
72
73
  type: string;
@@ -78,19 +79,20 @@ export declare class AbloError extends Error {
78
79
  [key: string]: unknown;
79
80
  };
80
81
  /**
81
- * A single, leak-proof line for logs and `String(err)` / template
82
- * interpolation: `AbloValidationError [code]: message (see docs) [request_id: …]`.
82
+ * Formats the error as a single line for logs and string interpolation:
83
+ * `AbloValidationError [code]: message (see docs) [request_id: …]`.
83
84
  *
84
- * Deliberately does NOT dump `details`, `cause`, or the stack the thing that
85
- * makes `console.error(richError)` an unreadable wall of text. The structured
86
- * payload stays available via {@link toJSON}; this is the human one-liner.
85
+ * It intentionally omits {@link details}, the cause, and the stack, which are
86
+ * what turn a logged rich error into an unreadable wall of text. The full
87
+ * structured payload remains available through {@link toJSON}; this is the
88
+ * concise human-readable form.
87
89
  */
88
90
  toString(): string;
89
91
  }
90
92
  /**
91
- * Map a stable error `code` to its docs URL the one place the convention
92
- * lives, so every error carrying a code gets a `doc_url` for free (Stripe
93
- * ships a link on every error).
93
+ * Builds the documentation URL for a stable error {@link ErrorCode}. This is the
94
+ * single place the URL convention lives, so every error that carries a code gets
95
+ * a `doc_url` automatically.
94
96
  */
95
97
  export declare function docUrlForCode(code: ErrorCode): string;
96
98
  /** 401 — invalid/missing/expired credentials. */
@@ -128,11 +130,11 @@ export declare class AbloValidationError extends AbloError {
128
130
  readonly type: "AbloValidationError";
129
131
  }
130
132
  /**
131
- * 404 an UPDATE/DELETE addressed a row that doesn't exist (or is outside the
132
- * caller's org). The engine reports such targets on `CommitReceipt.missingIds`;
133
- * the typed resource wrappers raise this instead of returning a success receipt
134
- * for a write that quietly matched zero rows. Carries the offending ids so a
135
- * caller can see exactly which targets were absent.
133
+ * An update or delete addressed a row that does not exist, or lies outside the
134
+ * caller's organization (HTTP 404). Such targets are reported on
135
+ * {@link CommitReceipt.missingIds}, and the typed resource methods raise this
136
+ * error rather than returning a successful receipt for a write that quietly
137
+ * matched zero rows. The absent ids are carried on {@link missingIds}.
136
138
  */
137
139
  export declare class AbloNotFoundError extends AbloError {
138
140
  readonly type: "AbloNotFoundError";
@@ -147,15 +149,13 @@ export declare class AbloServerError extends AbloError {
147
149
  readonly type: "AbloServerError";
148
150
  }
149
151
  /**
150
- * 409 — a write carried `readAt: N` but the target entity has received
151
- * deltas since `N`. The caller's reasoning snapshot is stale; the safe
152
- * response is to re-read (or re-capture a watermark) and regenerate.
152
+ * A write carried a `readAt` watermark, but the target row has changed since
153
+ * that point (HTTP 409). The snapshot the caller reasoned from is stale, so the
154
+ * safe response is to re-read the row and regenerate the write.
153
155
  *
154
- * Carries `conflicts` so callers can inspect which specific (model, id)
155
- * pairs moved during the generation window useful for metrics
156
- * ("72% of stale rejects were on slide titles") and for selective
157
- * regeneration (only re-think the slides that changed, not the whole
158
- * deck).
156
+ * {@link conflicts} lists the specific model-and-id pairs that changed during
157
+ * the window between the read and the write, which lets a caller regenerate only
158
+ * the rows that actually moved rather than everything.
159
159
  */
160
160
  export declare class AbloStaleContextError extends AbloError {
161
161
  readonly type: "AbloStaleContextError";
@@ -181,16 +181,15 @@ export declare class AbloStaleContextError extends AbloError {
181
181
  });
182
182
  }
183
183
  /**
184
- * The functional `update(id, current => next)` form exhausted its reconcile
185
- * budget the row stayed continuously contended (a hot row under sustained
186
- * concurrent writes), so no attempt could land a compare-and-swap.
184
+ * The functional `update(id, current => next)` form gave up after exhausting its
185
+ * reconcile budget, because the row stayed continuously contended under
186
+ * sustained concurrent writes and no attempt could land its compare-and-swap.
187
187
  *
188
- * This is the ONLY coordination concept the functional update ever surfaces, and
189
- * only at the extreme: the SDK has already read-fresh recomputed retried on
190
- * every stale/claim conflict on the caller's behalf. Catch it to back off and
191
- * retry later, raise the `retries` budget, or move that row to the WebSocket
192
- * transport (which parks writers in a fair FIFO queue instead of racing). The
193
- * last underlying conflict that drove the final retry is on `.cause`.
188
+ * The SDK reaches this only at the extreme: it has already re-read, recomputed,
189
+ * and retried on every intervening conflict on the caller's behalf. Catch it to
190
+ * back off and retry later, raise the `retries` budget, or move the row to the
191
+ * WebSocket transport, which queues writers fairly instead of racing them. The
192
+ * last underlying conflict is available on `cause`.
194
193
  */
195
194
  export declare class AbloContentionError extends AbloError {
196
195
  readonly type: "AbloContentionError";
@@ -214,7 +213,7 @@ export interface ClaimContext {
214
213
  readonly field?: string;
215
214
  readonly status?: string;
216
215
  readonly position?: number;
217
- /** Epoch-ms the claim expires. One timestamp encoding everywhere. */
216
+ /** The epoch-milliseconds timestamp at which the claim expires. */
218
217
  readonly expiresAt?: number;
219
218
  readonly declaredAt?: number;
220
219
  readonly entityType?: string;
@@ -250,9 +249,9 @@ export declare class AbloClaimedError extends AbloError {
250
249
  });
251
250
  }
252
251
  /**
253
- * The `/`-joined human label for a claim target `model/id/field`, dropping
254
- * absent parts, falling back to `'target'`. The one place this join lived in
255
- * three copies (client `Ablo`, HTTP `ApiClient`, `awaitClaimGrant`).
252
+ * Builds a human-readable label for a claim target by joining its `model`, `id`,
253
+ * and `field` with `/`, omitting any absent parts and falling back to `'target'`
254
+ * when none are present.
256
255
  */
257
256
  export declare function claimTargetLabel(target: {
258
257
  readonly model?: string;
@@ -260,10 +259,9 @@ export declare function claimTargetLabel(target: {
260
259
  readonly field?: string;
261
260
  }): string;
262
261
  /**
263
- * Build the {@link AbloClaimedError} for a contended `ablo.<model>` write the
264
- * single factory shared by the realtime client (`Ablo`) and the HTTP client
265
- * (`ApiClient`), which carried byte-identical copies. The first claim is the
266
- * holder whose metadata shapes the message.
262
+ * Builds the {@link AbloClaimedError} for a write that was rejected because the
263
+ * row is claimed. The first entry in `claims` is treated as the current holder,
264
+ * and its metadata shapes the error message.
267
265
  */
268
266
  export declare function claimedError(target: {
269
267
  readonly model?: string;
@@ -271,36 +269,35 @@ export declare function claimedError(target: {
271
269
  readonly field?: string;
272
270
  }, claims: readonly ModelClaim[], code: 'model_claimed' | 'model_claimed_timeout' | 'queue_too_deep'): AbloClaimedError;
273
271
  /**
274
- * Structured description of the capability an agent would need to
275
- * satisfy a denied request. Mirrors the x402 `paymentRequirements`
276
- * shape: the server emits enough information for the client to
277
- * attenuate (or request) a capability that would pass on retry.
272
+ * A structured description of the capability that would be needed to satisfy a
273
+ * denied request. The server emits enough detail for the client to request, or
274
+ * narrow an existing capability into, one that would pass on retry.
278
275
  */
279
276
  export interface RequiredCapability {
280
- /** Operation or capability scope identifier (e.g. `"slide.update"`,
281
- * `"subscribe"`). */
277
+ /** The operation or capability scope, for example `"slide.update"` or
278
+ * `"subscribe"`. */
282
279
  readonly scope: string;
283
- /** Concrete constraints the capability must satisfy. Keys map to
284
- * Datalog fact families — e.g. `{ syncGroup: ["org_abc"] }` for a
285
- * rejected subscription. Forward-compatible: ignore unknown keys. */
280
+ /** The concrete constraints the capability must satisfy for example
281
+ * `{ syncGroup: ["org_abc"] }` for a rejected subscription. Treat unknown
282
+ * keys as forward-compatible additions and ignore them. */
286
283
  readonly constraints?: Readonly<Record<string, readonly string[] | string>>;
287
- /** Issuer hint — public-key fingerprint or well-known URL fragment. */
284
+ /** A hint at the issuer a public-key fingerprint or well-known URL
285
+ * fragment. */
288
286
  readonly issuer?: string;
289
- /** Server-suggested maximum TTL for the attenuated capability. */
287
+ /** The maximum lifetime, in seconds, the server suggests for the narrowed
288
+ * capability. */
290
289
  readonly ttlSeconds?: number;
291
- /** Single-use nonce to embed in the retry's capability facts; binds
292
- * retry denial and prevents replay of a stale attenuation. */
290
+ /** A single-use value to embed in the retried request's capability, which
291
+ * ties the retry to this specific denial and prevents replaying an old
292
+ * capability. */
293
293
  readonly nonce?: string;
294
294
  }
295
295
  /**
296
- * Canonical receipt returned by every successful or rejected commit,
297
- * regardless of transport (WebSocket `mutation_result` payload, HTTP
298
- * `/v1/commits` response body, or `AgentJob.result.receipt`). One
299
- * shape across all three surfaces.
300
- *
301
- * Linear-style correlation receipt — no cryptographic signature
302
- * (single-tenant trust boundary). A Hub signature is a forward-
303
- * compatible extension when cross-org agent crossings arrive.
296
+ * The receipt returned for every commit, whether it succeeded or was rejected,
297
+ * and regardless of how it was sent — the WebSocket `mutation_result` payload,
298
+ * the HTTP `/v1/commits` response body, and an agent job's result all use this
299
+ * one shape. It is a correlation receipt, carrying the ids and outcome needed to
300
+ * reconcile a commit rather than a cryptographic proof.
304
301
  */
305
302
  export interface CommitReceipt {
306
303
  readonly object: 'commit_receipt';
@@ -308,7 +305,7 @@ export interface CommitReceipt {
308
305
  readonly clientTxId: string;
309
306
  /** Server-issued opaque commit id — typically `String(lastSyncId)`. */
310
307
  readonly serverTxId: string;
311
- /** Convenience boolean. `status === 'confirmed'`. */
308
+ /** A convenience boolean, equal to `status === 'confirmed'`. */
312
309
  readonly success: boolean;
313
310
  /** `'confirmed'` on apply, `'rejected'` on any failure. */
314
311
  readonly status: 'confirmed' | 'rejected';
@@ -318,12 +315,12 @@ export interface CommitReceipt {
318
315
  /** Number of operations metered. Reported on both success and
319
316
  * rejection so quota systems see attempted work. */
320
317
  readonly ops?: number;
321
- /** Ids of UPDATE/DELETE targets that matched ZERO rows (loud 0-row writes).
322
- * Present (non-empty) only when a write missed; typed wrappers raise
323
- * `AbloNotFoundError` from it. */
318
+ /** Ids of update or delete targets that matched no row. Present and non-empty
319
+ * only when a write missed; the typed resource methods raise
320
+ * {@link AbloNotFoundError} from it. */
324
321
  readonly missingIds?: readonly string[];
325
- /** Populated on rejection. `requiredCapability` (when present)
326
- * carries the x402-style structured retry hint. */
322
+ /** Present on rejection. When set, `requiredCapability` carries the structured
323
+ * hint describing what would let the request succeed on retry. */
327
324
  readonly error?: {
328
325
  readonly code: string;
329
326
  readonly message: string;
@@ -332,82 +329,81 @@ export interface CommitReceipt {
332
329
  };
333
330
  }
334
331
  /**
335
- * A scoped credential was denied either the key is unknown / revoked /
336
- * expired (`capability_invalid`), or the connection's resolved scope
337
- * doesn't cover the attempted action (`capability_scope_denied`). With
338
- * opaque restricted (`rk_`) API keys this is a server-side check against
339
- * the key's `syncGroups` / `operations`, not a signed-caveat verification.
340
- *
341
- * Extends `AbloPermissionError` so existing `instanceof CapabilityError`
342
- * checks keep working AND broader `instanceof AbloPermissionError`
343
- * matches for consumers who don't care about the scope specifics.
332
+ * A scoped credential was denied, either because the key is unknown, revoked, or
333
+ * expired (`capability_invalid`), or because the connection's scope does not
334
+ * cover the attempted action (`capability_scope_denied`). For restricted (`rk_`)
335
+ * API keys this is a server-side check against the key's granted sync groups and
336
+ * operations.
344
337
  *
345
- * `requiredCapability` (when present) describes the scope a key must
346
- * carry for the request to succeed on retry.
338
+ * It extends {@link AbloPermissionError}, so it is caught both by code that
339
+ * specifically checks for `CapabilityError` and by code that only distinguishes
340
+ * the broader permission category. When present, {@link requiredCapability}
341
+ * describes the scope a key would need to carry for the request to succeed on
342
+ * retry.
347
343
  */
348
344
  export declare class CapabilityError extends AbloPermissionError {
349
345
  readonly requiredCapability?: RequiredCapability;
350
346
  constructor(code: 'capability_scope_denied' | 'capability_invalid', message: string, requiredCapability?: RequiredCapability);
351
347
  }
352
348
  /**
353
- * SyncSessionError — Thrown when authentication/session is invalid or expired.
354
- * Signals that the user should be redirected to sign in
355
- * rather than showing a generic retry option.
349
+ * Thrown when the login session itself is invalid or expired, signaling that the
350
+ * user should be sent to sign in again rather than offered a generic retry.
356
351
  *
357
- * Extends `AbloAuthenticationError` so existing
358
- * `SyncSessionError.isSessionError(...)` duck-type callers keep
359
- * working, AND downstream code that only catches the typed hierarchy
360
- * (`instanceof AbloAuthenticationError` / `e.type === 'AbloAuthenticationError'`)
361
- * now sees session failures too.
352
+ * It extends {@link AbloAuthenticationError}, so it is caught both by code using
353
+ * the {@link SyncSessionError.isSessionError} check and by code that catches the
354
+ * authentication category in general.
362
355
  */
363
356
  export declare class SyncSessionError extends AbloAuthenticationError {
364
357
  readonly isSessionError = true;
365
358
  readonly statusCode: number;
366
359
  constructor(message: string, statusCode?: number);
367
360
  /**
368
- * Check if an error is a session error (duck-type check)
361
+ * Returns true when a value is a {@link SyncSessionError}, or any error-like
362
+ * object that reports itself as a session error through an `isSessionError`
363
+ * flag.
369
364
  */
370
365
  static isSessionError(error: unknown): error is SyncSessionError;
371
366
  /**
372
- * Check if an HTTP response status indicates a session error
367
+ * Determines whether an HTTP response means the login session has expired and
368
+ * the user should sign in again. When the body carries a structured Ablo error
369
+ * code, the decision is made from that code's recovery class; otherwise a bare
370
+ * 401 is treated as an expiry and a 403 is not.
373
371
  */
374
372
  static isSessionErrorResponse(status: number, body?: string): boolean;
375
373
  }
376
374
  /**
377
- * WS-close analog of {@link SyncSessionError.isSessionErrorResponse}'s
378
- * access-vs-session split: `true` for close reasons that mean the SHORT-LIVED
379
- * access credential (`ek_`/`rk_`) passed its expiry the hub's keepalive
380
- * reaper closes such sockets with `4001 'credential_expired'`. Re-mintable
381
- * from the still-valid login, so the connection layer silently re-mints and
382
- * reconnects; never a sign-out, never a local-data clear. Every OTHER session
383
- * close reason (key revocation, genuine login loss) stays terminal — a
384
- * revoked credential must not be silently re-minted around.
375
+ * The WebSocket-close counterpart to {@link SyncSessionError.isSessionErrorResponse}:
376
+ * returns true for close reasons that mean the short-lived access credential
377
+ * (`ek_` or `rk_`) has expired. The server closes such sockets with code 4001
378
+ * and reason `'credential_expired'`. Because the credential is re-mintable from
379
+ * the still-valid login, the connection layer re-mints it and reconnects rather
380
+ * than signing the user out or clearing local data. Every other session close
381
+ * reason, such as a revoked key or a genuinely lost login, stays terminal.
385
382
  */
386
383
  export declare function isAccessCredentialExpiryCloseReason(reason: string): boolean;
387
384
  /**
388
- * Coerce ANY thrown value into an {@link AbloError} the last-line guarantee
389
- * that an SDK consumer never catches an untagged error. An already-typed
390
- * AbloError passes through untouched (so `code`/`httpStatus`/subclass survive);
391
- * a bare `Error` keeps its message and is preserved as `cause` (carrying any
392
- * `.code` someone attached); a non-Error is stringified.
385
+ * Coerces any thrown value into an {@link AbloError}, so a consumer never catches
386
+ * an untyped error from the SDK. An error that is already an {@link AbloError}
387
+ * passes through unchanged, preserving its subclass, `code`, and `httpStatus`; a
388
+ * plain `Error` keeps its message and is retained as the `cause` (carrying any
389
+ * `code` attached to it); anything else is stringified.
393
390
  *
394
- * This is the client mirror of the server's `normalizeError` applied at the
395
- * SDK's public async boundaries so `instanceof AbloError` / `e.type` always
396
- * hold for whatever a consumer catches, regardless of which internal layer
397
- * (transport, IndexedDB, bootstrap, a third-party throw) produced it.
391
+ * The SDK applies this at its public async boundaries so that `instanceof
392
+ * AbloError` and `error.type` hold for whatever a consumer catches, no matter
393
+ * which internal layer transport, local storage, bootstrap, or a third-party
394
+ * throw produced the original error.
398
395
  */
399
396
  export declare function toAbloError(err: unknown): AbloError;
400
397
  /**
401
- * Build the appropriate typed {@link AbloError} from a wire error the
402
- * single codeclass mapping shared by every transport that can reject a
403
- * request (HTTP responses via {@link translateHttpError}, WebSocket
404
- * `mutation_result`/`claim_ack` frames, agent-job receipts).
398
+ * Builds the appropriate typed {@link AbloError} from a wire error. This is the
399
+ * single code-to-class mapping shared by every transport that can reject a
400
+ * request HTTP responses through {@link translateHttpError}, WebSocket result
401
+ * frames, and agent-job receipts.
405
402
  *
406
- * Code-first, then status-driven. A known {@link ErrorCode} carries its own
407
- * canonical `httpStatus` in the registry, so frame transports that don't have
408
- * an HTTP status (the WebSocket commit path) still produce the right subclass
409
- * instead of a hand-rolled `new Error(message)` that drops out of the typed
410
- * hierarchy and loses `code`/`httpStatus`/retryability.
403
+ * It decides by code first, then by status. Because a known {@link ErrorCode}
404
+ * carries its canonical HTTP status in the registry, a transport that has no
405
+ * status of its own (such as the WebSocket commit path) still produces the right
406
+ * subclass, with its `code`, status, and retryability intact.
411
407
  */
412
408
  export declare function errorFromWire(message: string, opts?: {
413
409
  code?: string;
@@ -419,28 +415,26 @@ export declare function errorFromWire(message: string, opts?: {
419
415
  claims?: readonly ClaimErrorClaim[];
420
416
  }): AbloError;
421
417
  /**
422
- * Translate an HTTP response into the appropriate typed error.
423
- *
424
- * Single source of truth for status-code class mapping every SDK
425
- * fetch path that sees a non-2xx response should route through here
426
- * so the customer-visible error is always the right subclass. Delegates
427
- * the actual class selection to {@link errorFromWire} (shared with the
428
- * frame transports) after extracting code/message from the HTTP body.
418
+ * Translates an HTTP response into the appropriate typed {@link AbloError}. This
419
+ * is the single mapping every request path routes a non-2xx response through, so
420
+ * the error a consumer sees is always the right subclass. After extracting the
421
+ * code and message from the response body, it delegates the class selection to
422
+ * {@link errorFromWire}, the same logic the frame transports use.
429
423
  */
430
424
  export declare function translateHttpError(status: number, body: unknown, requestId?: string): AbloError;
431
425
  /**
432
- * Whether an HTTP error body carries a code {@link translateHttpError} can read
433
- * — a top-level `code`, a nested `error.code`, or a string `error`. Callers that
434
- * own a meaningful fallback code (e.g. `turn_open_failed`) use this to decide
435
- * between routing through `translateHttpError` (structured envelope present) and
436
- * throwing their own typed error with the fallback (bare/non-Ablo body), instead
437
- * of emitting a code-less error.
426
+ * Reports whether an HTTP error body carries a code that {@link translateHttpError}
427
+ * can read — a top-level `code`, a nested `error.code`, or a string `error`. A
428
+ * caller that has a meaningful fallback code uses this to choose between routing
429
+ * a structured body through {@link translateHttpError} and throwing its own typed
430
+ * error with the fallback when the body is bare, rather than producing an error
431
+ * with no code.
438
432
  */
439
433
  export declare function hasWireCode(body: unknown): boolean;
440
434
  /**
441
- * Extract the canonical error `code` from a raw HTTP error body STRING — the
442
- * top-level `code` or a nested `error.code`. Returns undefined for non-JSON or
443
- * code-less bodies. Used by session-error detection to tell a genuine expiry
444
- * (`session_expired`/`jwt_expired`) apart from other auth failures.
435
+ * Extracts the canonical error `code` from a raw HTTP error body string — the
436
+ * top-level `code` or a nested `error.code` returning `undefined` for a
437
+ * non-JSON or code-less body. Session-error detection uses it to tell a genuine
438
+ * session expiry apart from other authentication failures.
445
439
  */
446
440
  export declare function extractWireCode(body?: string): string | undefined;