@abloatai/ablo 0.26.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/CHANGELOG.md +42 -2
  2. package/README.md +102 -86
  3. package/dist/BaseSyncedStore.d.ts +85 -88
  4. package/dist/BaseSyncedStore.js +134 -151
  5. package/dist/Database.d.ts +68 -69
  6. package/dist/Database.js +316 -135
  7. package/dist/{ObjectPool.d.ts → InstanceCache.d.ts} +10 -13
  8. package/dist/{ObjectPool.js → InstanceCache.js} +85 -83
  9. package/dist/LazyReferenceCollection.d.ts +11 -15
  10. package/dist/LazyReferenceCollection.js +12 -16
  11. package/dist/Model.d.ts +54 -52
  12. package/dist/Model.js +78 -62
  13. package/dist/ModelRegistry.d.ts +21 -19
  14. package/dist/ModelRegistry.js +23 -27
  15. package/dist/NetworkMonitor.d.ts +5 -6
  16. package/dist/NetworkMonitor.js +5 -6
  17. package/dist/SyncClient.d.ts +122 -118
  18. package/dist/SyncClient.js +541 -245
  19. package/dist/adapters/alwaysOnline.d.ts +6 -8
  20. package/dist/adapters/alwaysOnline.js +6 -8
  21. package/dist/adapters/inMemoryStorage.d.ts +10 -9
  22. package/dist/adapters/inMemoryStorage.js +21 -9
  23. package/dist/agent/Agent.d.ts +27 -32
  24. package/dist/agent/Agent.js +18 -19
  25. package/dist/agent/index.d.ts +4 -4
  26. package/dist/agent/index.js +5 -5
  27. package/dist/agent/session.d.ts +47 -44
  28. package/dist/agent/session.js +37 -48
  29. package/dist/agent/types.d.ts +26 -31
  30. package/dist/agent/types.js +6 -7
  31. package/dist/ai-sdk/coordinatedTool.d.ts +108 -0
  32. package/dist/ai-sdk/{coordinated-tool.js → coordinatedTool.js} +44 -38
  33. package/dist/ai-sdk/coordinationContext.d.ts +46 -0
  34. package/dist/ai-sdk/{coordination-context.js → coordinationContext.js} +26 -33
  35. package/dist/ai-sdk/index.d.ts +25 -22
  36. package/dist/ai-sdk/index.js +25 -22
  37. package/dist/ai-sdk/wrap.d.ts +6 -7
  38. package/dist/ai-sdk/wrap.js +1 -1
  39. package/dist/auth/credentialPolicy.d.ts +69 -74
  40. package/dist/auth/credentialPolicy.js +51 -56
  41. package/dist/auth/credentialSource.d.ts +6 -5
  42. package/dist/auth/credentialSource.js +9 -10
  43. package/dist/auth/index.d.ts +59 -58
  44. package/dist/auth/index.js +31 -37
  45. package/dist/auth/schemas.d.ts +5 -4
  46. package/dist/auth/schemas.js +5 -4
  47. package/dist/batching/index.d.ts +19 -21
  48. package/dist/batching/index.js +14 -17
  49. package/dist/cli.cjs +173 -121
  50. package/dist/client/Ablo.d.ts +97 -74
  51. package/dist/client/Ablo.js +129 -163
  52. package/dist/client/ApiClient.d.ts +30 -19
  53. package/dist/client/ApiClient.js +442 -81
  54. package/dist/client/auth.d.ts +47 -47
  55. package/dist/client/auth.js +108 -117
  56. package/dist/client/claimHeartbeatLoop.d.ts +50 -0
  57. package/dist/client/claimHeartbeatLoop.js +88 -0
  58. package/dist/client/consoleLogger.d.ts +5 -6
  59. package/dist/client/consoleLogger.js +5 -6
  60. package/dist/client/createInternalComponents.d.ts +16 -17
  61. package/dist/client/createInternalComponents.js +26 -31
  62. package/dist/client/createModelProxy.d.ts +130 -120
  63. package/dist/client/createModelProxy.js +152 -122
  64. package/dist/client/credentialEndpoint.d.ts +40 -42
  65. package/dist/client/credentialEndpoint.js +35 -36
  66. package/dist/client/functionalUpdate.d.ts +29 -27
  67. package/dist/client/functionalUpdate.js +21 -21
  68. package/dist/client/hostedEndpoints.d.ts +9 -12
  69. package/dist/client/hostedEndpoints.js +9 -12
  70. package/dist/client/httpClient.d.ts +59 -53
  71. package/dist/client/httpClient.js +29 -31
  72. package/dist/client/identity.d.ts +15 -20
  73. package/dist/client/identity.js +47 -58
  74. package/dist/client/modelRegistration.d.ts +5 -9
  75. package/dist/client/modelRegistration.js +78 -87
  76. package/dist/client/options.d.ts +157 -157
  77. package/dist/client/options.js +3 -7
  78. package/dist/client/registerDataSource.d.ts +9 -9
  79. package/dist/client/registerDataSource.js +15 -16
  80. package/dist/client/resourceTypes.d.ts +64 -75
  81. package/dist/client/resourceTypes.js +4 -10
  82. package/dist/client/schemaConfig.d.ts +31 -43
  83. package/dist/client/schemaConfig.js +38 -50
  84. package/dist/client/sessionMint.d.ts +16 -12
  85. package/dist/client/sessionMint.js +26 -31
  86. package/dist/client/validateAbloOptions.d.ts +12 -14
  87. package/dist/client/validateAbloOptions.js +8 -9
  88. package/dist/client/writeOptionsSchema.d.ts +18 -16
  89. package/dist/client/writeOptionsSchema.js +23 -20
  90. package/dist/client/wsMutationExecutor.d.ts +16 -20
  91. package/dist/client/wsMutationExecutor.js +18 -23
  92. package/dist/commit/contract.d.ts +493 -0
  93. package/dist/commit/contract.js +187 -0
  94. package/dist/commit/index.d.ts +6 -0
  95. package/dist/commit/index.js +5 -0
  96. package/dist/context.d.ts +6 -4
  97. package/dist/context.js +6 -4
  98. package/dist/coordination/index.d.ts +10 -8
  99. package/dist/coordination/index.js +14 -12
  100. package/dist/coordination/schema.d.ts +176 -128
  101. package/dist/coordination/schema.js +197 -133
  102. package/dist/coordination/trace.d.ts +9 -10
  103. package/dist/coordination/trace.js +13 -14
  104. package/dist/core/DatabaseManager.d.ts +5 -7
  105. package/dist/core/DatabaseManager.js +15 -19
  106. package/dist/core/QueryProcessor.d.ts +7 -9
  107. package/dist/core/QueryProcessor.js +22 -28
  108. package/dist/core/QueryView.d.ts +8 -8
  109. package/dist/core/QueryView.js +2 -2
  110. package/dist/core/StoreManager.d.ts +14 -14
  111. package/dist/core/StoreManager.js +33 -24
  112. package/dist/core/ViewRegistry.d.ts +5 -5
  113. package/dist/core/ViewRegistry.js +4 -4
  114. package/dist/core/index.d.ts +17 -12
  115. package/dist/core/index.js +32 -26
  116. package/dist/core/openIDBWithTimeout.d.ts +38 -36
  117. package/dist/core/openIDBWithTimeout.js +42 -43
  118. package/dist/core/queryUtils.d.ts +45 -0
  119. package/dist/core/queryUtils.js +69 -0
  120. package/dist/core/storeContract.d.ts +63 -61
  121. package/dist/core/storeContract.js +8 -12
  122. package/dist/environment.d.ts +28 -0
  123. package/dist/environment.js +21 -0
  124. package/dist/errorCodes.d.ts +107 -99
  125. package/dist/errorCodes.js +137 -134
  126. package/dist/errors.d.ts +160 -166
  127. package/dist/errors.js +155 -158
  128. package/dist/index.d.ts +36 -27
  129. package/dist/index.js +91 -86
  130. package/dist/interfaces/index.d.ts +102 -113
  131. package/dist/interfaces/index.js +5 -4
  132. package/dist/keys/index.d.ts +27 -29
  133. package/dist/keys/index.js +41 -40
  134. package/dist/mutators/RecordingTransaction.d.ts +16 -16
  135. package/dist/mutators/RecordingTransaction.js +31 -37
  136. package/dist/mutators/Transaction.d.ts +18 -26
  137. package/dist/mutators/Transaction.js +14 -20
  138. package/dist/mutators/UndoManager.d.ts +124 -131
  139. package/dist/mutators/UndoManager.js +177 -156
  140. package/dist/mutators/defineMutators.d.ts +23 -34
  141. package/dist/mutators/defineMutators.js +14 -20
  142. package/dist/mutators/inverseOp.d.ts +12 -15
  143. package/dist/mutators/inverseOp.js +12 -15
  144. package/dist/mutators/mutateActions.d.ts +10 -9
  145. package/dist/mutators/mutateActions.js +1 -1
  146. package/dist/mutators/readerActions.d.ts +9 -8
  147. package/dist/mutators/readerActions.js +2 -2
  148. package/dist/mutators/undoApply.d.ts +31 -27
  149. package/dist/mutators/undoApply.js +26 -24
  150. package/dist/policy/index.d.ts +5 -3
  151. package/dist/policy/index.js +5 -3
  152. package/dist/policy/types.d.ts +104 -100
  153. package/dist/policy/types.js +67 -66
  154. package/dist/query/client.d.ts +28 -23
  155. package/dist/query/client.js +45 -43
  156. package/dist/query/types.d.ts +37 -60
  157. package/dist/query/types.js +13 -33
  158. package/dist/react/AbloProvider.d.ts +1 -1
  159. package/dist/react/AbloProvider.js +2 -2
  160. package/dist/react/context.d.ts +25 -28
  161. package/dist/react/context.js +9 -10
  162. package/dist/react/index.d.ts +41 -42
  163. package/dist/react/index.js +37 -38
  164. package/dist/react/internalContext.d.ts +17 -19
  165. package/dist/react/useAblo.d.ts +28 -25
  166. package/dist/react/useAblo.js +41 -17
  167. package/dist/react/useCurrentUserId.d.ts +8 -7
  168. package/dist/react/useCurrentUserId.js +8 -7
  169. package/dist/react/useErrorListener.d.ts +7 -7
  170. package/dist/react/useErrorListener.js +10 -11
  171. package/dist/react/useMutationFailureListener.d.ts +8 -8
  172. package/dist/react/useMutationFailureListener.js +8 -8
  173. package/dist/react/useMutators.d.ts +11 -11
  174. package/dist/react/useMutators.js +3 -3
  175. package/dist/react/useReactive.js +2 -2
  176. package/dist/react/useSyncStatus.d.ts +4 -6
  177. package/dist/react/useUndoScope.d.ts +7 -9
  178. package/dist/react/useUndoScope.js +1 -1
  179. package/dist/schema/coordination.d.ts +21 -25
  180. package/dist/schema/coordination.js +21 -25
  181. package/dist/schema/ddl.d.ts +43 -39
  182. package/dist/schema/ddl.js +75 -68
  183. package/dist/schema/ddlLock.d.ts +20 -24
  184. package/dist/schema/ddlLock.js +18 -23
  185. package/dist/schema/diff.d.ts +99 -61
  186. package/dist/schema/diff.js +43 -34
  187. package/dist/schema/field.d.ts +37 -42
  188. package/dist/schema/field.js +35 -48
  189. package/dist/schema/generate.d.ts +12 -12
  190. package/dist/schema/generate.js +12 -12
  191. package/dist/schema/index.d.ts +3 -3
  192. package/dist/schema/index.js +21 -23
  193. package/dist/schema/model.d.ts +118 -143
  194. package/dist/schema/model.js +22 -33
  195. package/dist/schema/openapi.d.ts +10 -9
  196. package/dist/schema/openapi.js +5 -3
  197. package/dist/schema/queries.d.ts +29 -31
  198. package/dist/schema/queries.js +23 -25
  199. package/dist/schema/relation.d.ts +89 -99
  200. package/dist/schema/relation.js +13 -13
  201. package/dist/schema/residency.d.ts +16 -13
  202. package/dist/schema/residency.js +16 -13
  203. package/dist/schema/roles.d.ts +36 -43
  204. package/dist/schema/roles.js +31 -37
  205. package/dist/schema/schema.d.ts +64 -43
  206. package/dist/schema/schema.js +31 -32
  207. package/dist/schema/select.d.ts +13 -13
  208. package/dist/schema/select.js +13 -13
  209. package/dist/schema/serialize.d.ts +28 -31
  210. package/dist/schema/serialize.js +27 -31
  211. package/dist/schema/sugar.d.ts +17 -32
  212. package/dist/schema/sugar.js +14 -29
  213. package/dist/schema/{sync-delta-row.d.ts → syncDeltaRow.d.ts} +26 -49
  214. package/dist/schema/syncDeltaRow.js +89 -0
  215. package/dist/schema/tenancy.d.ts +44 -46
  216. package/dist/schema/tenancy.js +46 -48
  217. package/dist/server/adapter.d.ts +58 -58
  218. package/dist/server/adapter.js +13 -14
  219. package/dist/server/commit.d.ts +60 -64
  220. package/dist/server/index.d.ts +9 -10
  221. package/dist/server/index.js +1 -1
  222. package/dist/server/readConfig.d.ts +70 -0
  223. package/dist/server/readConfig.js +8 -0
  224. package/dist/server/storageMode.d.ts +23 -0
  225. package/dist/server/storageMode.js +17 -0
  226. package/dist/source/adapter.d.ts +30 -25
  227. package/dist/source/adapter.js +10 -10
  228. package/dist/source/adapters/drizzle.d.ts +28 -23
  229. package/dist/source/adapters/drizzle.js +30 -25
  230. package/dist/source/adapters/kysely.d.ts +27 -25
  231. package/dist/source/adapters/kysely.js +24 -23
  232. package/dist/source/adapters/memory.d.ts +8 -7
  233. package/dist/source/adapters/memory.js +9 -8
  234. package/dist/source/adapters/prisma.d.ts +13 -12
  235. package/dist/source/adapters/prisma.js +22 -25
  236. package/dist/source/conformance.d.ts +18 -11
  237. package/dist/source/conformance.js +17 -11
  238. package/dist/source/connector.d.ts +31 -32
  239. package/dist/source/connector.js +28 -28
  240. package/dist/source/connectorProtocol.d.ts +160 -0
  241. package/dist/source/connectorProtocol.js +162 -0
  242. package/dist/source/contract.d.ts +26 -27
  243. package/dist/source/contract.js +28 -29
  244. package/dist/source/factory.d.ts +46 -58
  245. package/dist/source/factory.js +22 -27
  246. package/dist/source/index.d.ts +7 -9
  247. package/dist/source/index.js +12 -14
  248. package/dist/source/migrations.d.ts +9 -9
  249. package/dist/source/migrations.js +9 -9
  250. package/dist/source/next.d.ts +9 -10
  251. package/dist/source/next.js +6 -7
  252. package/dist/source/pushQueue.d.ts +69 -47
  253. package/dist/source/pushQueue.js +32 -28
  254. package/dist/source/signing.d.ts +46 -17
  255. package/dist/source/signing.js +28 -11
  256. package/dist/source/types.d.ts +121 -104
  257. package/dist/source/types.js +13 -14
  258. package/dist/stores/ObjectStore.d.ts +24 -12
  259. package/dist/stores/ObjectStore.js +38 -16
  260. package/dist/stores/ObjectStoreContract.d.ts +14 -15
  261. package/dist/stores/SyncActionStore.d.ts +7 -11
  262. package/dist/stores/SyncActionStore.js +13 -17
  263. package/dist/surface.d.ts +28 -21
  264. package/dist/surface.js +29 -20
  265. package/dist/sync/{BootstrapHelper.d.ts → BootstrapFetcher.d.ts} +36 -42
  266. package/dist/sync/{BootstrapHelper.js → BootstrapFetcher.js} +76 -76
  267. package/dist/sync/ConnectionManager.d.ts +39 -50
  268. package/dist/sync/ConnectionManager.js +55 -66
  269. package/dist/sync/NetworkProbe.d.ts +24 -29
  270. package/dist/sync/NetworkProbe.js +63 -69
  271. package/dist/sync/{HydrationCoordinator.d.ts → OnDemandLoader.d.ts} +42 -41
  272. package/dist/sync/{HydrationCoordinator.js → OnDemandLoader.js} +59 -54
  273. package/dist/sync/{AreaOfInterestManager.d.ts → SubscriptionManager.d.ts} +43 -57
  274. package/dist/sync/{AreaOfInterestManager.js → SubscriptionManager.js} +43 -51
  275. package/dist/sync/SyncWebSocket.d.ts +141 -166
  276. package/dist/sync/SyncWebSocket.js +191 -223
  277. package/dist/sync/awaitClaimGrant.d.ts +18 -18
  278. package/dist/sync/awaitClaimGrant.js +11 -11
  279. package/dist/sync/bootstrapApply.d.ts +34 -24
  280. package/dist/sync/bootstrapApply.js +27 -19
  281. package/dist/sync/commitFrames.d.ts +21 -20
  282. package/dist/sync/commitFrames.js +18 -18
  283. package/dist/sync/createClaimStream.d.ts +23 -22
  284. package/dist/sync/createClaimStream.js +105 -23
  285. package/dist/sync/createPresenceStream.d.ts +19 -18
  286. package/dist/sync/createPresenceStream.js +25 -26
  287. package/dist/sync/createSnapshot.d.ts +12 -14
  288. package/dist/sync/createSnapshot.js +20 -26
  289. package/dist/sync/credentialLifecycle.d.ts +104 -104
  290. package/dist/sync/credentialLifecycle.js +140 -147
  291. package/dist/sync/deltaPipeline.d.ts +36 -34
  292. package/dist/sync/deltaPipeline.js +64 -65
  293. package/dist/sync/groupChange.d.ts +63 -61
  294. package/dist/sync/groupChange.js +74 -78
  295. package/dist/sync/heartbeat.d.ts +34 -33
  296. package/dist/sync/heartbeat.js +31 -31
  297. package/dist/sync/participants.d.ts +19 -19
  298. package/dist/sync/persistedPrefix.d.ts +12 -0
  299. package/dist/sync/persistedPrefix.js +22 -0
  300. package/dist/sync/schemas.d.ts +3 -2
  301. package/dist/sync/schemas.js +14 -10
  302. package/dist/sync/syncCursor.d.ts +17 -21
  303. package/dist/sync/syncCursor.js +17 -21
  304. package/dist/sync/syncPlan.d.ts +28 -36
  305. package/dist/sync/syncPlan.js +18 -19
  306. package/dist/sync/syncPosition.d.ts +54 -49
  307. package/dist/sync/syncPosition.js +57 -52
  308. package/dist/sync/wsFrameHandlers.d.ts +35 -36
  309. package/dist/sync/wsFrameHandlers.js +63 -67
  310. package/dist/testing/fixtures/bootstrap.d.ts +12 -6
  311. package/dist/testing/fixtures/bootstrap.js +12 -6
  312. package/dist/testing/fixtures/deltas.d.ts +30 -33
  313. package/dist/testing/fixtures/deltas.js +30 -33
  314. package/dist/testing/fixtures/models.d.ts +11 -10
  315. package/dist/testing/fixtures/models.js +11 -10
  316. package/dist/testing/helpers/{react-wrapper.d.ts → reactWrapper.d.ts} +13 -10
  317. package/dist/testing/helpers/{react-wrapper.js → reactWrapper.js} +15 -12
  318. package/dist/testing/helpers/{sync-engine-harness.d.ts → syncEngineHarness.d.ts} +17 -15
  319. package/dist/testing/helpers/{sync-engine-harness.js → syncEngineHarness.js} +12 -10
  320. package/dist/testing/helpers/wait.d.ts +13 -8
  321. package/dist/testing/helpers/wait.js +13 -8
  322. package/dist/testing/index.d.ts +5 -3
  323. package/dist/testing/index.js +3 -2
  324. package/dist/testing/mocks/FakeDatabase.d.ts +18 -0
  325. package/dist/testing/mocks/FakeDatabase.js +10 -0
  326. package/dist/testing/mocks/MockMutationExecutor.d.ts +18 -17
  327. package/dist/testing/mocks/MockMutationExecutor.js +15 -14
  328. package/dist/testing/mocks/MockNetworkMonitor.d.ts +8 -8
  329. package/dist/testing/mocks/MockNetworkMonitor.js +8 -8
  330. package/dist/testing/mocks/MockSyncContext.d.ts +20 -17
  331. package/dist/testing/mocks/MockSyncContext.js +15 -13
  332. package/dist/testing/mocks/MockSyncStore.d.ts +10 -10
  333. package/dist/testing/mocks/MockSyncStore.js +11 -11
  334. package/dist/testing/mocks/MockWebSocket.d.ts +28 -23
  335. package/dist/testing/mocks/MockWebSocket.js +22 -21
  336. package/dist/transactions/TransactionQueue.d.ts +244 -181
  337. package/dist/transactions/TransactionQueue.js +929 -423
  338. package/dist/transactions/TransactionStore.d.ts +6 -4
  339. package/dist/transactions/TransactionStore.js +6 -4
  340. package/dist/transactions/UnconfirmedWrites.d.ts +82 -0
  341. package/dist/transactions/UnconfirmedWrites.js +104 -0
  342. package/dist/transactions/coalesceRules.d.ts +41 -17
  343. package/dist/transactions/coalesceRules.js +40 -17
  344. package/dist/transactions/commitEnvelope.d.ts +132 -0
  345. package/dist/transactions/commitEnvelope.js +139 -0
  346. package/dist/transactions/commitOutboxStore.d.ts +32 -0
  347. package/dist/transactions/commitOutboxStore.js +26 -0
  348. package/dist/transactions/commitPayload.d.ts +63 -52
  349. package/dist/transactions/commitPayload.js +54 -57
  350. package/dist/transactions/deltaConfirmation.d.ts +20 -22
  351. package/dist/transactions/deltaConfirmation.js +37 -45
  352. package/dist/transactions/httpCommitEnvelope.d.ts +43 -0
  353. package/dist/transactions/httpCommitEnvelope.js +179 -0
  354. package/dist/transactions/optimisticApply.d.ts +49 -0
  355. package/dist/transactions/optimisticApply.js +65 -0
  356. package/dist/transactions/replayValidation.d.ts +182 -0
  357. package/dist/transactions/replayValidation.js +156 -0
  358. package/dist/types/global.d.ts +46 -41
  359. package/dist/types/global.js +20 -19
  360. package/dist/types/index.d.ts +71 -77
  361. package/dist/types/index.js +22 -22
  362. package/dist/types/modelData.d.ts +6 -8
  363. package/dist/types/modelData.js +5 -7
  364. package/dist/types/participant.d.ts +10 -11
  365. package/dist/types/participant.js +6 -8
  366. package/dist/types/streams.d.ts +208 -195
  367. package/dist/types/streams.js +7 -7
  368. package/dist/utils/asyncIterator.d.ts +25 -32
  369. package/dist/utils/asyncIterator.js +25 -32
  370. package/dist/utils/duration.d.ts +12 -15
  371. package/dist/utils/duration.js +12 -15
  372. package/dist/utils/mobxSetup.d.ts +53 -0
  373. package/dist/utils/{mobx-setup.js → mobxSetup.js} +42 -98
  374. package/dist/webhooks/events.d.ts +21 -16
  375. package/dist/webhooks/events.js +10 -8
  376. package/dist/webhooks/index.d.ts +5 -7
  377. package/dist/webhooks/index.js +5 -7
  378. package/dist/wire/bootstrapReason.d.ts +9 -0
  379. package/dist/wire/bootstrapReason.js +8 -0
  380. package/dist/{schema/sync-delta-wire.d.ts → wire/delta.d.ts} +58 -41
  381. package/dist/wire/delta.js +114 -0
  382. package/dist/wire/errorEnvelope.d.ts +30 -31
  383. package/dist/wire/errorEnvelope.js +34 -40
  384. package/dist/wire/frames.d.ts +315 -86
  385. package/dist/wire/frames.js +47 -33
  386. package/dist/wire/index.d.ts +18 -14
  387. package/dist/wire/index.js +32 -27
  388. package/dist/wire/listEnvelope.d.ts +16 -23
  389. package/dist/wire/listEnvelope.js +7 -6
  390. package/dist/wire/protocol.d.ts +25 -32
  391. package/dist/wire/protocol.js +25 -32
  392. package/dist/wire/protocolVersion.d.ts +44 -40
  393. package/dist/wire/protocolVersion.js +44 -40
  394. package/docs/api.md +10 -10
  395. package/docs/coordination.md +59 -0
  396. package/docs/mcp.md +1 -1
  397. package/package.json +17 -11
  398. package/dist/ai-sdk/coordinated-tool.d.ts +0 -101
  399. package/dist/ai-sdk/coordination-context.d.ts +0 -52
  400. package/dist/core/query-utils.d.ts +0 -34
  401. package/dist/core/query-utils.js +0 -59
  402. package/dist/schema/sync-delta-row.js +0 -103
  403. package/dist/schema/sync-delta-wire.js +0 -102
  404. package/dist/server/read-config.d.ts +0 -67
  405. package/dist/server/read-config.js +0 -8
  406. package/dist/server/storage-mode.d.ts +0 -8
  407. package/dist/server/storage-mode.js +0 -28
  408. package/dist/source/connector-protocol.d.ts +0 -159
  409. package/dist/source/connector-protocol.js +0 -161
  410. package/dist/transactions/OptimisticEchoTracker.d.ts +0 -82
  411. package/dist/transactions/OptimisticEchoTracker.js +0 -104
  412. package/dist/transactions/mutation-error-handler.d.ts +0 -5
  413. package/dist/transactions/mutation-error-handler.js +0 -39
  414. package/dist/transactions/optimistic.d.ts +0 -24
  415. package/dist/transactions/optimistic.js +0 -45
  416. package/dist/transactions/persistedReplay.d.ts +0 -93
  417. package/dist/transactions/persistedReplay.js +0 -105
  418. package/dist/utils/mobx-setup.d.ts +0 -42
@@ -1,50 +1,49 @@
1
1
  /**
2
- * SyncWebSocket - Manages WebSocket connection to Go sync engine
3
- *
4
- * Handles:
5
- * - WebSocket lifecycle (connect, reconnect, disconnect)
6
- * - Delta reception and processing
7
- * - Multi-tab support
8
- * - Automatic reconnection with exponential backoff
2
+ * Manages the WebSocket connection to the sync server. It owns the socket
3
+ * lifecycle (connect, reconnect, disconnect), receives and validates the
4
+ * incoming delta stream, sends commits and claims over the same socket, and
5
+ * reconnects automatically with exponential backoff. Consumers subscribe to its
6
+ * typed events (see {@link CoreSyncEventMap}) to react to deltas, presence, and
7
+ * connection changes.
9
8
  */
10
9
  import { EventEmitter } from 'events';
11
10
  import type { MutationOperation } from '../interfaces/index.js';
12
- import { type ClientSyncDelta } from '../schema/sync-delta-wire.js';
11
+ import { type ClientSyncDelta } from '../wire/delta.js';
12
+ import type { BootstrapReason } from '../wire/bootstrapReason.js';
13
13
  import type { ClaimError, ClaimRejection, StaleNotification, ReadDependency } from '../coordination/schema.js';
14
14
  import { type CommitAck } from './commitFrames.js';
15
15
  export type { CommitAck } from './commitFrames.js';
16
16
  import { type AuthTokenGetter } from '../auth/credentialSource.js';
17
17
  /**
18
- * The wire delta the client receives. Derived from the canonical
19
- * `clientSyncDeltaSchema` (`@abloatai/ablo/schema`) via `z.infer` so the
20
- * SDK and the sync-server share ONE contract instead of two hand-maintained
21
- * interfaces. The action vocabulary (`I`/`U`/`D`/`A`/`V`/`C`/`G`/`S`) and the
22
- * client-only extras (`metadata`, `clientMutationId`, deprecated flat
23
- * `createdBy`) live in that schema; see its doc for the full field reference.
18
+ * The wire delta the client receives. It is inferred from the canonical
19
+ * `clientSyncDeltaSchema` so the client and server share one contract rather
20
+ * than two hand-maintained definitions. The action vocabulary
21
+ * (`I`/`U`/`D`/`A`/`V`/`C`/`G`/`S`) and the client-only extras (`metadata`,
22
+ * `clientMutationId`, and the deprecated flat `createdBy`) live in that schema;
23
+ * see its own documentation for the full field reference.
24
24
  */
25
25
  export type SyncDelta = ClientSyncDelta;
26
26
  /**
27
- * Payload for legacy actionType 'G' deltas emitted by EmitGroupChange.
28
- * Carries both added and removed groups in one delta, forces full re-bootstrap.
27
+ * Payload for an older actionType `'G'` delta. It carries both the added and
28
+ * removed sync groups in one delta and forces a full re-bootstrap.
29
29
  */
30
30
  export interface SyncGroupChangePayload {
31
31
  removedGroups: string[];
32
32
  addedGroups: string[];
33
33
  }
34
34
  /**
35
- * Payload for incremental actionType 'G' deltas emitted by EmitGroupAdded.
36
- * Signals that the recipient has joined a single sync group; subsequent
37
- * 'C' (Covering) deltas will deliver the newly-visible entities. No
38
- * re-bootstrap required.
35
+ * Payload for an incremental actionType `'G'` delta. It signals that the
36
+ * recipient has joined a single sync group; the following `'C'` (covering)
37
+ * deltas deliver the newly visible entities. No re-bootstrap is required.
39
38
  */
40
39
  export interface GroupAddedPayload {
41
40
  group: string;
42
41
  userId: string;
43
42
  }
44
43
  /**
45
- * Payload for actionType 'S' deltas emitted by EmitGroupRemoved.
46
- * Signals that the recipient has lost access to a sync group. The client
47
- * purges affected local entities and updates its subscription metadata.
44
+ * Payload for an actionType `'S'` delta. It signals that the recipient has lost
45
+ * access to a sync group; the client purges the affected local entities and
46
+ * updates its subscription metadata.
48
47
  */
49
48
  export interface GroupRemovedPayload {
50
49
  group: string;
@@ -73,27 +72,25 @@ export interface SyncWebSocketOptions {
73
72
  */
74
73
  collaborationEvents?: string[];
75
74
  /**
76
- * Participant kind to declare on the WS upgrade. Defaults to `'user'`
77
- * (session-auth, web app). Agent runtimes (Node workers) pass
78
- * `'agent'` so the server's `agentTokenProvider`
79
- * routes them through capability-token verification instead of
80
- * session auth. The server reads this as the `kind` query param.
75
+ * The participant kind declared on the WebSocket upgrade. Defaults to
76
+ * `'user'` (session auth, the web app). Agent runtimes pass `'agent'` so the
77
+ * server verifies them by capability token instead of session auth. The
78
+ * server reads this as the `kind` query parameter.
81
79
  */
82
80
  kind?: 'user' | 'agent' | 'system';
83
81
  /**
84
- * The agent's bearer credential — a restricted (`rk_`) API key. When
85
- * set, sent in the `ablo.bearer.<token>` WebSocket subprotocol so the
86
- * credential stays out of URLs and proxy logs. Required for `kind: 'agent'`;
87
- * ignored for `kind: 'user'`. (Field name predates the Biscuit→opaque-key
88
- * migration.)
82
+ * The agent's bearer credential — a restricted (`rk_`) API key. When set, it
83
+ * is sent in the `ablo.bearer.<token>` WebSocket subprotocol so the credential
84
+ * stays out of URLs and proxy logs. Required for `kind: 'agent'` and ignored
85
+ * for `kind: 'user'`.
89
86
  */
90
87
  capabilityToken?: string;
91
88
  /**
92
- * Shared credential getter. When provided, WebSocket URL auth reads this
93
- * instead of a copied `capabilityToken`, so reconnects use refreshed tokens
94
- * from the SDK's single auth source.
89
+ * Getter for the current credential. When provided, the WebSocket upgrade
90
+ * reads it instead of a copied `capabilityToken`, so reconnects always use
91
+ * the freshest token from the SDK's single credential source. Preferred over
92
+ * `getCapabilityToken`.
95
93
  */
96
- /** Shared SDK auth getter. Preferred internal name. */
97
94
  getAuthToken?: AuthTokenGetter;
98
95
  /** @deprecated Use `getAuthToken`. Kept for direct low-level callers. */
99
96
  getCapabilityToken?: AuthTokenGetter;
@@ -104,7 +101,7 @@ export interface SyncWebSocketOptions {
104
101
  */
105
102
  export interface BootstrapHint {
106
103
  tables?: string[];
107
- reason?: 'too_far_behind' | 'too_many_deltas' | 'missing_entities';
104
+ reason?: BootstrapReason;
108
105
  staleTables?: string[];
109
106
  totalDeltaCount?: number;
110
107
  }
@@ -116,14 +113,11 @@ export interface BootstrapDataEvent {
116
113
  cursor?: string;
117
114
  }
118
115
  /**
119
- * Presence update event payload mirrors the wire frame's `payload`
120
- * field (apps/sync-server/src/hub/types.ts PresenceUpdateMessage).
121
- *
122
- * Every consumer (web entity-presence cache, PresenceStream,
123
- * agent-runtime presence reducer) reads its own subset; this type is
124
- * the union of what the server actually sends. Stripping fields at
125
- * this layer (the prior bug) silently broke rich-presence consumers
126
- * that needed `kind`, `activity`, `isAgent` to dispatch correctly.
116
+ * Payload of a presence-update event, mirroring the `payload` field of the wire
117
+ * frame. This type is the union of everything the server may send; each
118
+ * consumer reads its own subset. Forwarding the full shape, rather than
119
+ * stripping fields here, is deliberate — presence consumers rely on `kind`,
120
+ * `activity`, and `isAgent` to dispatch correctly.
127
121
  */
128
122
  export interface PresenceUpdateEvent {
129
123
  /** Server-stamped transition: 'enter' on join + roster snapshot,
@@ -151,16 +145,15 @@ export interface PresenceUpdateEvent {
151
145
  * not self-declare — server is the source of truth. */
152
146
  isAgent?: boolean;
153
147
  /**
154
- * Server-stamped canonical kind (`'user' | 'agent' | 'system'`). Additive:
155
- * older servers omit it and readers fall back to the lossy `isAgent`
156
- * boolean (which cannot express `'system'`). Typed `string` because it is
157
- * raw wire input — normalize via `participantKindFromWire`.
148
+ * The canonical participant kind (`'user' | 'agent' | 'system'`), stamped by
149
+ * the server. Some servers omit it, in which case readers fall back to the
150
+ * lossy `isAgent` boolean, which cannot express `'system'`. Typed as `string`
151
+ * because it is raw wire input — normalize it via `participantKindFromWire`.
158
152
  */
159
153
  participantKind?: string;
160
154
  timestamp?: number;
161
- /** Server stamps every presence frame with this participant's open
162
- * claims so peers see them without a separate channel. Wire
163
- * shape mirrors `apps/sync-server/src/hub/types.ts Claim`. */
155
+ /** Every presence frame carries this participant's open claims, stamped by
156
+ * the server, so peers see them without a separate channel. */
164
157
  activeClaims?: {
165
158
  claimId: string;
166
159
  entityType: string;
@@ -178,10 +171,10 @@ export interface PresenceUpdateEvent {
178
171
  declaredAt: number;
179
172
  expiresAt: number;
180
173
  /**
181
- * Lifecycle state. Additive older servers omit it and the reader
182
- * treats absence as `'active'`. Terminal states (`committed` /
183
- * `expired` / `canceled`) ride one frame as the claim ends so peers
184
- * learn *how* it resolved before it drops from the active set.
174
+ * The claim's lifecycle state. When absent, the reader treats it as
175
+ * `'active'`. A terminal state (`committed`, `expired`, or `canceled`) rides
176
+ * one final frame as the claim ends, so peers learn how it resolved before
177
+ * it drops from the active set.
185
178
  */
186
179
  status?: 'active' | 'committed' | 'expired' | 'canceled';
187
180
  error?: ClaimError;
@@ -256,14 +249,19 @@ export interface CoreSyncEventMap {
256
249
  claim_granted: [Record<string, unknown>];
257
250
  claim_lost: [Record<string, unknown>];
258
251
  /**
259
- * Notify-instead-of-abort (non-coercion). A committed write guarded with
260
- * `onStale: 'notify' collided with a concurrent change; rather than
261
- * forcing an outcome, the engine returned the conflicting field's current
262
- * value so the actor can solve it. The resolver is the intelligent actor —
263
- * an agent reasoning over the change, or a human watching the row. The commit
264
- * SUCCEEDED; held ops ('notify') weren't written and the actor re-issues once
265
- * it has reconciled. (The claim is the prospective form of the same
266
- * non-coercion; this is the in-flight form.)
252
+ * Reply to an outbound `claim_heartbeat` the lease's fate: `held` with
253
+ * the extended `expiresAt`, `queued` with the current `position`, or
254
+ * `lost`. Correlated back to the awaiting caller by `claimId` in the
255
+ * claim stream.
256
+ */
257
+ claim_heartbeat_ack: [Record<string, unknown>];
258
+ /**
259
+ * A committed write guarded with `onStale: 'notify'` collided with a
260
+ * concurrent change. Rather than forcing an outcome, the engine returns the
261
+ * conflicting field's current value so the actor — an agent reasoning over the
262
+ * change, or a person watching the row — can reconcile it. The commit itself
263
+ * succeeded; the held operations were not written, and the actor re-issues
264
+ * them once it has reconciled.
267
265
  */
268
266
  'conflict:notified': [{
269
267
  clientTxId: string;
@@ -282,7 +280,7 @@ export type DefaultCollaborationEvents = Record<string, never>;
282
280
  * `Record<string, ...>` requires an implicit string index signature, which
283
281
  * TypeScript interfaces don't have. So a closed interface like Ablo's
284
282
  * `AbloCollaborationEvents` would fail to satisfy `Record<string, unknown[]>`,
285
- * even though every one of its values IS a tuple. This mapped form iterates
283
+ * even though every one of its values is a tuple. This mapped form iterates
286
284
  * over `keyof T` instead of demanding a string index, so it accepts both
287
285
  * closed interfaces and open Record types — while still enforcing
288
286
  * "every value is an array."
@@ -315,10 +313,10 @@ export declare class SyncWebSocket<TCollaboration extends EventMap<TCollaboratio
315
313
  /** Periodic catchup interval — polls for missed deltas every 30s while connected */
316
314
  private catchupInterval;
317
315
  /**
318
- * Application-level heartbeat ping every 30s, force-close on a 10s
319
- * silent watchdog. The full zombie-socket rationale lives with the
320
- * timers in `sync/heartbeat.ts`; the transport closures below are the
321
- * only socket access the controller gets.
316
+ * Application-level heartbeat: ping every 30 seconds and force-close after a
317
+ * 10-second silence. The {@link HeartbeatController} holds the timing and the
318
+ * zombie-socket rationale; the closures below are the only socket access it
319
+ * gets.
322
320
  */
323
321
  private readonly heartbeat;
324
322
  private isConnecting;
@@ -349,20 +347,19 @@ export declare class SyncWebSocket<TCollaboration extends EventMap<TCollaboratio
349
347
  private lastForceCloseReason;
350
348
  private sessionErrorAt;
351
349
  /**
352
- * Sync-position state (lastSyncId watermark, version vector, server
353
- * cursor). The advance discipline stays documented at `sendAck` /
354
- * `handleDelta`; the state itself lives in `sync/syncCursor.ts`.
350
+ * Sync-position state: the lastSyncId watermark, version vector, and server
351
+ * cursor. The advance discipline is documented at `sendAck` and `handleDelta`;
352
+ * the state itself lives in {@link SyncCursor}.
355
353
  */
356
354
  private readonly cursor;
357
355
  /** Registered collaboration event keys (colon format) for dispatch in onmessage */
358
356
  private collaborationEventTypes;
359
357
  /**
360
- * Minimal session adapter handed to the frame dispatch table
361
- * (`sync/wsFrameHandlers.ts`). Exposes ONLY the members the handlers
362
- * touch; the closure members read live state so host-side reassignment
363
- * (e.g. the `pendingSubscriptions` reset on close) can't strand the
364
- * handlers on a stale reference. Built in the constructor, after the
365
- * state it captures exists.
358
+ * A minimal session adapter handed to the inbound frame dispatch table
359
+ * ({@link dispatchWsFrame}). It exposes only the members the handlers touch;
360
+ * the closure members read live state so a reassignment here (for example the
361
+ * `pendingSubscriptions` reset on close) cannot strand a handler on a stale
362
+ * reference. Built in the constructor, after the state it captures exists.
366
363
  */
367
364
  private readonly frameSession;
368
365
  /**
@@ -373,10 +370,10 @@ export declare class SyncWebSocket<TCollaboration extends EventMap<TCollaboratio
373
370
  */
374
371
  private pendingMutations;
375
372
  /**
376
- * In-flight `claim` requests keyed by claimId. Resolved when the
377
- * matching `claim_ack` arrives, or rejected on timeout/disconnect.
378
- * Same shape as pendingMutations Phoenix-style request/response
379
- * over a multiplexed connection.
373
+ * In-flight `claim` requests keyed by claimId. Resolved when the matching
374
+ * `claim_ack` arrives, or rejected on timeout or disconnect — the same
375
+ * request/response pattern as `pendingMutations`, multiplexed over the one
376
+ * connection.
380
377
  */
381
378
  private pendingClaims;
382
379
  /**
@@ -411,28 +408,25 @@ export declare class SyncWebSocket<TCollaboration extends EventMap<TCollaboratio
411
408
  */
412
409
  private setupEventHandlers;
413
410
  /**
414
- * Validate + normalize a wire delta at the receive boundary — the ONE
415
- * seam every inbound delta (`delta` frame, batch element, `sync_response`
416
- * replay, legacy bare frame) passes through before it is emitted,
417
- * persisted to IDB, or allowed to advance any watermark.
411
+ * Validates and normalizes a wire delta at the receive boundary — the single
412
+ * seam every inbound delta (a `delta` frame, a batch element, a `sync_response`
413
+ * replay, or the older bare frame) passes through before it is emitted,
414
+ * persisted, or allowed to advance any watermark.
418
415
  *
419
- * Normalization (older/deployed servers stay compatible):
420
- * - `id`: the contract says `number`, but deployed servers have sent the
421
- * raw Postgres BIGINT serialization — a STRING — and every downstream
422
- * watermark gate (`typeof syncId === 'number'` in
423
- * `Database.processDeltaBatch`, the metadata-cursor update, numeric
424
- * `>=` thresholds in TransactionQueue) silently breaks on strings:
425
- * acks are withheld, the resume cursor never advances, and every
426
- * reconnect replays from 0. Coerce ONCE here.
427
- * - `transactionId` / `createdBy`: the SERVER projection sends these as
428
- * nullable (and `createdBy` as a nested ParticipantRef); the client
429
- * contract types them as optional strings and never reads them.
430
- * Normalize to absent instead of rejecting every real server delta.
416
+ * Normalization keeps already-deployed servers compatible:
417
+ * - `id`: the contract says `number`, but some servers have sent the raw
418
+ * Postgres BIGINT serialization — a string — and every downstream watermark
419
+ * gate treats a string as invalid, so acks are withheld, the resume cursor
420
+ * never advances, and every reconnect replays from zero. Coerce it once here.
421
+ * - `transactionId` / `createdBy`: the server projection sends these as
422
+ * nullable (and `createdBy` as a nested reference); the client contract
423
+ * types them as optional strings and never reads them, so normalize them to
424
+ * absent rather than reject every real server delta.
431
425
  *
432
- * Validation: `clientSyncDeltaSchema.safeParse` the canonical Zod wire
433
- * contract. A frame that fails is DROPPED (returns `null`) with a
434
- * debug-level log + observability breadcrumb; it is never applied. One
435
- * parse per delta — callers must not re-parse.
426
+ * Validation runs `clientSyncDeltaSchema.safeParse`, the canonical wire
427
+ * contract. A frame that fails is dropped (returns `null`) with a debug log
428
+ * and an observability breadcrumb; it is never applied. There is one parse per
429
+ * delta — callers must not re-parse.
436
430
  */
437
431
  private normalizeWireDelta;
438
432
  /**
@@ -441,15 +435,13 @@ export declare class SyncWebSocket<TCollaboration extends EventMap<TCollaboratio
441
435
  */
442
436
  private handleDelta;
443
437
  /**
444
- * Send acknowledgment for received delta with version vector.
445
- *
446
- * This is the SOLE forward-mover of `this.cursor.lastSyncId` for live
447
- * deltas. Called by `BaseSyncedStore.flushPendingDeltas` with the
448
- * `persistedSyncId` watermark i.e. only after the deltas have
449
- * actually committed to IDB. Keeping the cursor advance here (rather
450
- * than at receipt in `handleDelta`/`handleSyncResponse`) means the
451
- * cursor never gets ahead of the persisted view, so reconnect/
452
- * catch-up requests can't accidentally skip un-persisted deltas.
438
+ * Acknowledges received deltas up to the given syncId. This is the only place
439
+ * `this.cursor.lastSyncId` moves forward for live deltas. The store calls it
440
+ * with its persisted-syncId watermark that is, only after the deltas have
441
+ * committed to local storage. Advancing the cursor here, rather than at
442
+ * receipt in `handleDelta` or `handleSyncResponse`, keeps the cursor from
443
+ * getting ahead of the persisted view, so reconnect and catch-up requests
444
+ * cannot skip un-persisted deltas.
453
445
  */
454
446
  private sendAck;
455
447
  /**
@@ -461,23 +453,15 @@ export declare class SyncWebSocket<TCollaboration extends EventMap<TCollaboratio
461
453
  */
462
454
  send(message: any): void;
463
455
  /**
464
- * Send a `commit` mutation request over the existing WebSocket and
465
- * resolve when the server's `mutation_result` frame comes back with
466
- * the same `clientTxId`. The wire-level frame is `{ type: 'commit',
467
- * payload: { operations, clientTxId } }` — matching the
468
- * `handleCommit` path on `apps/sync-server/src/hub/Hub.ts` (see the
469
- * dispatch at Hub.ts:737).
470
- *
471
- * Historical naming note: this was originally `sendBatchAck` back when
472
- * the Go sync-engine used a GraphQL `batchAck` mutation. The TS
473
- * sync-server uses `type: 'commit'` over WebSocket exclusively. The
474
- * method name now matches the wire protocol so the ack/commit naming
475
- * confusion stops here.
456
+ * Sends a `commit` mutation request over the existing WebSocket and resolves
457
+ * when the server's `mutation_result` frame comes back with the same
458
+ * `clientTxId`. The wire frame is `{ type: 'commit', payload: { operations,
459
+ * clientTxId } }`.
476
460
  *
477
- * Times out after 15s of silence from the server. The socket may close
478
- * during an in-flight mutation (network flap, server restart); we do
479
- * NOT auto-retry here — the caller's TransactionQueue owns retry +
480
- * offline replay semantics and the SDK shouldn't duplicate that logic.
461
+ * Times out after 15 seconds of silence from the server. The socket may close
462
+ * during an in-flight mutation (a network flap, a server restart); this does
463
+ * not auto-retry — the caller's transaction queue owns retry and offline
464
+ * replay, and the SDK does not duplicate that logic.
481
465
  */
482
466
  sendCommit(operations: readonly MutationOperation[], clientTxId: string, timeoutMs?: number, causedByTaskId?: string | null, reads?: readonly ReadDependency[] | null): Promise<CommitAck>;
483
467
  /**
@@ -490,21 +474,14 @@ export declare class SyncWebSocket<TCollaboration extends EventMap<TCollaboratio
490
474
  */
491
475
  sendCommitQueued(operations: readonly MutationOperation[], clientTxId: string, causedByTaskId?: string | null, reads?: readonly ReadDependency[] | null): void;
492
476
  /**
493
- * Activate a participant claim on this connection. Multiplexed
494
- * subscription pattern (Phoenix Channels / Pusher) the same
495
- * connection can hold N concurrent claims, each scoped to a
496
- * different set of sync groups.
497
- *
498
- * Returns a promise that resolves with the server-canonicalized
499
- * `syncGroups` and effective `ttlSeconds` once `claim_ack` arrives,
500
- * or rejects with a typed error on `success: false` ack /
501
- * timeout / disconnect.
477
+ * Activates a participant claim on this connection. One connection can hold
478
+ * several concurrent claims at once, each scoped to a different set of sync
479
+ * groups, so the SDK reuses the existing connection instead of opening a
480
+ * separate socket per scope.
502
481
  *
503
- * Why this exists: the old scoped-participant path opened a separate
504
- * WS per scope. With claims, the SDK reuses the existing session/agent
505
- * connection one TCP, N logical participants. See
506
- * `apps/sync-server/docs/PARTICIPANT_CLAIMS.md` for the migration
507
- * framing (Phase A.1).
482
+ * Returns a promise that resolves with the server-canonicalized `syncGroups`
483
+ * and effective `ttlSeconds` once `claim_ack` arrives, or rejects with a typed
484
+ * error on a failed ack, a timeout, or a disconnect.
508
485
  */
509
486
  sendClaim(claimId: string, syncGroups: readonly string[], options?: {
510
487
  capabilityToken?: string;
@@ -525,22 +502,21 @@ export declare class SyncWebSocket<TCollaboration extends EventMap<TCollaboratio
525
502
  */
526
503
  sendRelease(claimId: string): void;
527
504
  /**
528
- * Move this connection's READ interest — replace the connection-level
529
- * sync groups mid-session as the user opens/closes entities. This is the
530
- * area-of-interest (AOI) navigation primitive: the server fans out
531
- * deltas only for groups currently in view, instead of the frozen set
532
- * chosen at connect.
505
+ * Moves this connection's read interest — replaces the connection-level sync
506
+ * groups mid-session as the user opens and closes entities. This is the
507
+ * area-of-interest navigation primitive: the server fans out deltas only for
508
+ * the groups currently in view, rather than the fixed set chosen at connect.
533
509
  *
534
- * Full-set replace semantics — pass the complete new group list, not a
535
- * delta. Resolves with the server's effective set once `subscription_ack`
536
- * arrives; rejects (typed) on a scope denial (a restricted `rk_` key
537
- * requesting a group outside its allowlist), timeout, or disconnect. On
538
- * success the new set is recorded as `options.syncGroups` so a later
539
- * reconnect re-subscribes to current interest, not the connect-time set.
510
+ * This is a full-set replace: pass the complete new group list, not a delta.
511
+ * Resolves with the server's effective set once `subscription_ack` arrives;
512
+ * rejects (with a typed error) on a scope denial (a restricted `rk_` key
513
+ * requesting a group outside its allowlist), a timeout, or a disconnect. On
514
+ * success the new set is recorded as `options.syncGroups`, so a later reconnect
515
+ * re-subscribes to the current interest rather than the connect-time set.
540
516
  *
541
- * Distinct from {@link sendClaim} (write-claim, per-op, TTL'd) — this is
542
- * the read side and carries no capability token of its own; it's bounded
543
- * by the connection credential's grant.
517
+ * Distinct from {@link sendClaim} (a write claim, per operation, with a TTL):
518
+ * this is the read side, carries no capability token of its own, and is
519
+ * bounded by the connection credential's grant.
544
520
  */
545
521
  updateSubscription(syncGroups: readonly string[], options?: {
546
522
  timeoutMs?: number;
@@ -548,9 +524,9 @@ export declare class SyncWebSocket<TCollaboration extends EventMap<TCollaboratio
548
524
  syncGroups: string[];
549
525
  }>;
550
526
  /**
551
- * Compatibility setter for direct SyncWebSocket users. The SDK-owned
552
- * `Ablo()` path passes `getAuthToken`, so reconnect URL auth reads the
553
- * shared credential source instead of this copied value.
527
+ * Sets a fixed credential for callers that construct the socket directly. The
528
+ * SDK instead supplies `getAuthToken`, so reconnects read the shared
529
+ * credential source rather than this copied value.
554
530
  */
555
531
  setCapabilityToken(token: string): void;
556
532
  getAuthToken(): string | undefined;
@@ -670,7 +646,7 @@ export declare class SyncWebSocket<TCollaboration extends EventMap<TCollaboratio
670
646
  */
671
647
  getLastSyncId(): number;
672
648
  /**
673
- * Linear-style incremental sync request
649
+ * Requests an incremental sync from the server, starting at the current cursor.
674
650
  */
675
651
  requestIncrementalSync(): Promise<void>;
676
652
  /**
@@ -689,13 +665,12 @@ export declare class SyncWebSocket<TCollaboration extends EventMap<TCollaboratio
689
665
  */
690
666
  private handleBootstrapResponse;
691
667
  /**
692
- * Handle presence update from server. The wire frame's payload is
693
- * forwarded as-is so every consumer (web entity cache,
694
- * PresenceStream, agent runtime) reads from the same shape.
695
- * Stripping fields here was a prior bug — it silently dropped
696
- * `kind`, `activity`, `syncGroups`, `isAgent` for rich consumers.
668
+ * Handles a presence update from the server. The wire frame's payload is
669
+ * forwarded as-is, so every consumer reads the same shape; stripping fields
670
+ * here would drop `kind`, `activity`, `syncGroups`, and `isAgent` for
671
+ * consumers that need them.
697
672
  *
698
- * Wire frame (apps/sync-server/src/hub/types.ts PresenceUpdateMessage):
673
+ * The wire frame is:
699
674
  * { type: 'presence_update', payload: { kind, userId, status,
700
675
  * syncGroups, activity, isAgent, timestamp, activeClaims } }
701
676
  */