@abloatai/ablo 0.26.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +101 -85
  3. package/dist/BaseSyncedStore.d.ts +85 -88
  4. package/dist/BaseSyncedStore.js +131 -147
  5. package/dist/Database.d.ts +54 -68
  6. package/dist/Database.js +97 -113
  7. package/dist/{ObjectPool.d.ts → InstanceCache.d.ts} +10 -13
  8. package/dist/{ObjectPool.js → InstanceCache.js} +85 -83
  9. package/dist/LazyReferenceCollection.d.ts +11 -15
  10. package/dist/LazyReferenceCollection.js +12 -16
  11. package/dist/Model.d.ts +37 -52
  12. package/dist/Model.js +46 -61
  13. package/dist/ModelRegistry.d.ts +21 -19
  14. package/dist/ModelRegistry.js +23 -27
  15. package/dist/NetworkMonitor.d.ts +5 -6
  16. package/dist/NetworkMonitor.js +5 -6
  17. package/dist/SyncClient.d.ts +112 -112
  18. package/dist/SyncClient.js +165 -172
  19. package/dist/adapters/alwaysOnline.d.ts +6 -8
  20. package/dist/adapters/alwaysOnline.js +6 -8
  21. package/dist/adapters/inMemoryStorage.d.ts +9 -9
  22. package/dist/adapters/inMemoryStorage.js +9 -9
  23. package/dist/agent/Agent.d.ts +27 -32
  24. package/dist/agent/Agent.js +18 -19
  25. package/dist/agent/index.d.ts +4 -4
  26. package/dist/agent/index.js +5 -5
  27. package/dist/agent/session.d.ts +47 -44
  28. package/dist/agent/session.js +37 -48
  29. package/dist/agent/types.d.ts +26 -31
  30. package/dist/agent/types.js +6 -7
  31. package/dist/ai-sdk/coordinatedTool.d.ts +108 -0
  32. package/dist/ai-sdk/{coordinated-tool.js → coordinatedTool.js} +44 -38
  33. package/dist/ai-sdk/coordinationContext.d.ts +46 -0
  34. package/dist/ai-sdk/{coordination-context.js → coordinationContext.js} +26 -33
  35. package/dist/ai-sdk/index.d.ts +25 -22
  36. package/dist/ai-sdk/index.js +25 -22
  37. package/dist/ai-sdk/wrap.d.ts +6 -7
  38. package/dist/ai-sdk/wrap.js +1 -1
  39. package/dist/auth/credentialPolicy.d.ts +69 -74
  40. package/dist/auth/credentialPolicy.js +51 -56
  41. package/dist/auth/credentialSource.d.ts +6 -5
  42. package/dist/auth/credentialSource.js +9 -10
  43. package/dist/auth/index.d.ts +59 -58
  44. package/dist/auth/index.js +31 -37
  45. package/dist/auth/schemas.d.ts +5 -4
  46. package/dist/auth/schemas.js +5 -4
  47. package/dist/batching/index.d.ts +19 -21
  48. package/dist/batching/index.js +14 -17
  49. package/dist/cli.cjs +167 -119
  50. package/dist/client/Ablo.d.ts +73 -73
  51. package/dist/client/Ablo.js +125 -160
  52. package/dist/client/ApiClient.d.ts +30 -19
  53. package/dist/client/ApiClient.js +133 -38
  54. package/dist/client/auth.d.ts +47 -47
  55. package/dist/client/auth.js +108 -117
  56. package/dist/client/claimHeartbeatLoop.d.ts +50 -0
  57. package/dist/client/claimHeartbeatLoop.js +88 -0
  58. package/dist/client/consoleLogger.d.ts +5 -6
  59. package/dist/client/consoleLogger.js +5 -6
  60. package/dist/client/createInternalComponents.d.ts +14 -17
  61. package/dist/client/createInternalComponents.js +25 -30
  62. package/dist/client/createModelProxy.d.ts +130 -120
  63. package/dist/client/createModelProxy.js +152 -122
  64. package/dist/client/credentialEndpoint.d.ts +40 -42
  65. package/dist/client/credentialEndpoint.js +35 -36
  66. package/dist/client/functionalUpdate.d.ts +29 -27
  67. package/dist/client/functionalUpdate.js +21 -21
  68. package/dist/client/hostedEndpoints.d.ts +9 -12
  69. package/dist/client/hostedEndpoints.js +9 -12
  70. package/dist/client/httpClient.d.ts +57 -53
  71. package/dist/client/httpClient.js +29 -31
  72. package/dist/client/identity.d.ts +15 -20
  73. package/dist/client/identity.js +47 -58
  74. package/dist/client/modelRegistration.d.ts +5 -9
  75. package/dist/client/modelRegistration.js +67 -87
  76. package/dist/client/options.d.ts +134 -157
  77. package/dist/client/options.js +3 -7
  78. package/dist/client/registerDataSource.d.ts +9 -9
  79. package/dist/client/registerDataSource.js +15 -16
  80. package/dist/client/resourceTypes.d.ts +64 -75
  81. package/dist/client/resourceTypes.js +4 -10
  82. package/dist/client/schemaConfig.d.ts +31 -43
  83. package/dist/client/schemaConfig.js +38 -50
  84. package/dist/client/sessionMint.d.ts +16 -12
  85. package/dist/client/sessionMint.js +26 -31
  86. package/dist/client/validateAbloOptions.d.ts +12 -14
  87. package/dist/client/validateAbloOptions.js +8 -9
  88. package/dist/client/writeOptionsSchema.d.ts +18 -16
  89. package/dist/client/writeOptionsSchema.js +23 -20
  90. package/dist/client/wsMutationExecutor.d.ts +15 -20
  91. package/dist/client/wsMutationExecutor.js +17 -23
  92. package/dist/context.d.ts +6 -4
  93. package/dist/context.js +6 -4
  94. package/dist/coordination/index.d.ts +10 -8
  95. package/dist/coordination/index.js +14 -12
  96. package/dist/coordination/schema.d.ts +176 -128
  97. package/dist/coordination/schema.js +197 -133
  98. package/dist/coordination/trace.d.ts +9 -10
  99. package/dist/coordination/trace.js +13 -14
  100. package/dist/core/DatabaseManager.d.ts +5 -7
  101. package/dist/core/DatabaseManager.js +15 -19
  102. package/dist/core/QueryProcessor.d.ts +7 -9
  103. package/dist/core/QueryProcessor.js +22 -28
  104. package/dist/core/QueryView.d.ts +8 -8
  105. package/dist/core/QueryView.js +2 -2
  106. package/dist/core/StoreManager.d.ts +12 -14
  107. package/dist/core/StoreManager.js +21 -24
  108. package/dist/core/ViewRegistry.d.ts +5 -5
  109. package/dist/core/ViewRegistry.js +4 -4
  110. package/dist/core/index.d.ts +17 -12
  111. package/dist/core/index.js +32 -26
  112. package/dist/core/openIDBWithTimeout.d.ts +38 -36
  113. package/dist/core/openIDBWithTimeout.js +42 -43
  114. package/dist/core/queryUtils.d.ts +45 -0
  115. package/dist/core/queryUtils.js +69 -0
  116. package/dist/core/storeContract.d.ts +63 -61
  117. package/dist/core/storeContract.js +8 -12
  118. package/dist/environment.d.ts +28 -0
  119. package/dist/environment.js +21 -0
  120. package/dist/errorCodes.d.ts +107 -99
  121. package/dist/errorCodes.js +131 -132
  122. package/dist/errors.d.ts +160 -166
  123. package/dist/errors.js +155 -158
  124. package/dist/index.d.ts +30 -27
  125. package/dist/index.js +89 -86
  126. package/dist/interfaces/index.d.ts +102 -113
  127. package/dist/interfaces/index.js +5 -4
  128. package/dist/keys/index.d.ts +27 -29
  129. package/dist/keys/index.js +41 -40
  130. package/dist/mutators/RecordingTransaction.d.ts +16 -16
  131. package/dist/mutators/RecordingTransaction.js +31 -37
  132. package/dist/mutators/Transaction.d.ts +18 -26
  133. package/dist/mutators/Transaction.js +14 -20
  134. package/dist/mutators/UndoManager.d.ts +122 -131
  135. package/dist/mutators/UndoManager.js +145 -156
  136. package/dist/mutators/defineMutators.d.ts +23 -34
  137. package/dist/mutators/defineMutators.js +14 -20
  138. package/dist/mutators/inverseOp.d.ts +12 -15
  139. package/dist/mutators/inverseOp.js +12 -15
  140. package/dist/mutators/mutateActions.d.ts +10 -9
  141. package/dist/mutators/mutateActions.js +1 -1
  142. package/dist/mutators/readerActions.d.ts +9 -8
  143. package/dist/mutators/readerActions.js +2 -2
  144. package/dist/mutators/undoApply.d.ts +31 -27
  145. package/dist/mutators/undoApply.js +26 -24
  146. package/dist/policy/index.d.ts +5 -3
  147. package/dist/policy/index.js +5 -3
  148. package/dist/policy/types.d.ts +104 -100
  149. package/dist/policy/types.js +67 -66
  150. package/dist/query/client.d.ts +28 -23
  151. package/dist/query/client.js +45 -43
  152. package/dist/query/types.d.ts +37 -60
  153. package/dist/query/types.js +13 -33
  154. package/dist/react/AbloProvider.d.ts +1 -1
  155. package/dist/react/AbloProvider.js +2 -2
  156. package/dist/react/context.d.ts +25 -28
  157. package/dist/react/context.js +9 -10
  158. package/dist/react/index.d.ts +41 -42
  159. package/dist/react/index.js +37 -38
  160. package/dist/react/internalContext.d.ts +17 -19
  161. package/dist/react/useAblo.d.ts +23 -22
  162. package/dist/react/useAblo.js +16 -14
  163. package/dist/react/useCurrentUserId.d.ts +8 -7
  164. package/dist/react/useCurrentUserId.js +8 -7
  165. package/dist/react/useErrorListener.d.ts +7 -7
  166. package/dist/react/useErrorListener.js +10 -11
  167. package/dist/react/useMutationFailureListener.d.ts +8 -8
  168. package/dist/react/useMutationFailureListener.js +8 -8
  169. package/dist/react/useMutators.d.ts +11 -11
  170. package/dist/react/useMutators.js +3 -3
  171. package/dist/react/useReactive.js +2 -2
  172. package/dist/react/useSyncStatus.d.ts +4 -6
  173. package/dist/react/useUndoScope.d.ts +7 -9
  174. package/dist/react/useUndoScope.js +1 -1
  175. package/dist/schema/coordination.d.ts +21 -25
  176. package/dist/schema/coordination.js +21 -25
  177. package/dist/schema/ddl.d.ts +43 -39
  178. package/dist/schema/ddl.js +75 -68
  179. package/dist/schema/ddlLock.d.ts +20 -24
  180. package/dist/schema/ddlLock.js +18 -23
  181. package/dist/schema/diff.d.ts +99 -61
  182. package/dist/schema/diff.js +43 -34
  183. package/dist/schema/field.d.ts +37 -42
  184. package/dist/schema/field.js +35 -48
  185. package/dist/schema/generate.d.ts +12 -12
  186. package/dist/schema/generate.js +12 -12
  187. package/dist/schema/index.d.ts +2 -2
  188. package/dist/schema/index.js +21 -23
  189. package/dist/schema/model.d.ts +118 -143
  190. package/dist/schema/model.js +22 -33
  191. package/dist/schema/openapi.d.ts +10 -9
  192. package/dist/schema/openapi.js +5 -3
  193. package/dist/schema/queries.d.ts +29 -31
  194. package/dist/schema/queries.js +23 -25
  195. package/dist/schema/relation.d.ts +89 -99
  196. package/dist/schema/relation.js +13 -13
  197. package/dist/schema/residency.d.ts +16 -13
  198. package/dist/schema/residency.js +16 -13
  199. package/dist/schema/roles.d.ts +36 -43
  200. package/dist/schema/roles.js +31 -37
  201. package/dist/schema/schema.d.ts +33 -42
  202. package/dist/schema/schema.js +31 -32
  203. package/dist/schema/select.d.ts +13 -13
  204. package/dist/schema/select.js +13 -13
  205. package/dist/schema/serialize.d.ts +28 -31
  206. package/dist/schema/serialize.js +27 -31
  207. package/dist/schema/sugar.d.ts +17 -32
  208. package/dist/schema/sugar.js +14 -29
  209. package/dist/schema/{sync-delta-row.d.ts → syncDeltaRow.d.ts} +26 -49
  210. package/dist/schema/syncDeltaRow.js +89 -0
  211. package/dist/schema/tenancy.d.ts +44 -46
  212. package/dist/schema/tenancy.js +46 -48
  213. package/dist/server/adapter.d.ts +58 -58
  214. package/dist/server/adapter.js +13 -14
  215. package/dist/server/commit.d.ts +60 -64
  216. package/dist/server/index.d.ts +9 -10
  217. package/dist/server/index.js +1 -1
  218. package/dist/server/readConfig.d.ts +70 -0
  219. package/dist/server/readConfig.js +8 -0
  220. package/dist/server/storageMode.d.ts +23 -0
  221. package/dist/server/storageMode.js +17 -0
  222. package/dist/source/adapter.d.ts +30 -25
  223. package/dist/source/adapter.js +10 -10
  224. package/dist/source/adapters/drizzle.d.ts +28 -23
  225. package/dist/source/adapters/drizzle.js +30 -25
  226. package/dist/source/adapters/kysely.d.ts +27 -25
  227. package/dist/source/adapters/kysely.js +24 -23
  228. package/dist/source/adapters/memory.d.ts +8 -7
  229. package/dist/source/adapters/memory.js +9 -8
  230. package/dist/source/adapters/prisma.d.ts +13 -12
  231. package/dist/source/adapters/prisma.js +22 -25
  232. package/dist/source/conformance.d.ts +18 -11
  233. package/dist/source/conformance.js +17 -11
  234. package/dist/source/connector.d.ts +31 -32
  235. package/dist/source/connector.js +28 -28
  236. package/dist/source/connectorProtocol.d.ts +160 -0
  237. package/dist/source/connectorProtocol.js +162 -0
  238. package/dist/source/contract.d.ts +26 -27
  239. package/dist/source/contract.js +28 -29
  240. package/dist/source/factory.d.ts +46 -58
  241. package/dist/source/factory.js +22 -27
  242. package/dist/source/index.d.ts +7 -9
  243. package/dist/source/index.js +12 -14
  244. package/dist/source/migrations.d.ts +9 -9
  245. package/dist/source/migrations.js +9 -9
  246. package/dist/source/next.d.ts +9 -10
  247. package/dist/source/next.js +6 -7
  248. package/dist/source/pushQueue.d.ts +69 -47
  249. package/dist/source/pushQueue.js +32 -28
  250. package/dist/source/signing.d.ts +46 -17
  251. package/dist/source/signing.js +28 -11
  252. package/dist/source/types.d.ts +121 -104
  253. package/dist/source/types.js +13 -14
  254. package/dist/stores/ObjectStore.d.ts +10 -11
  255. package/dist/stores/ObjectStore.js +11 -12
  256. package/dist/stores/ObjectStoreContract.d.ts +12 -15
  257. package/dist/stores/SyncActionStore.d.ts +7 -11
  258. package/dist/stores/SyncActionStore.js +13 -17
  259. package/dist/surface.d.ts +27 -20
  260. package/dist/surface.js +27 -20
  261. package/dist/sync/{BootstrapHelper.d.ts → BootstrapFetcher.d.ts} +36 -42
  262. package/dist/sync/{BootstrapHelper.js → BootstrapFetcher.js} +76 -76
  263. package/dist/sync/ConnectionManager.d.ts +39 -50
  264. package/dist/sync/ConnectionManager.js +55 -66
  265. package/dist/sync/NetworkProbe.d.ts +24 -29
  266. package/dist/sync/NetworkProbe.js +63 -69
  267. package/dist/sync/{HydrationCoordinator.d.ts → OnDemandLoader.d.ts} +42 -41
  268. package/dist/sync/{HydrationCoordinator.js → OnDemandLoader.js} +59 -54
  269. package/dist/sync/{AreaOfInterestManager.d.ts → SubscriptionManager.d.ts} +43 -57
  270. package/dist/sync/{AreaOfInterestManager.js → SubscriptionManager.js} +43 -51
  271. package/dist/sync/SyncWebSocket.d.ts +139 -165
  272. package/dist/sync/SyncWebSocket.js +191 -223
  273. package/dist/sync/awaitClaimGrant.d.ts +18 -18
  274. package/dist/sync/awaitClaimGrant.js +11 -11
  275. package/dist/sync/bootstrapApply.d.ts +34 -24
  276. package/dist/sync/bootstrapApply.js +27 -19
  277. package/dist/sync/commitFrames.d.ts +21 -20
  278. package/dist/sync/commitFrames.js +18 -18
  279. package/dist/sync/createClaimStream.d.ts +23 -22
  280. package/dist/sync/createClaimStream.js +105 -23
  281. package/dist/sync/createPresenceStream.d.ts +19 -18
  282. package/dist/sync/createPresenceStream.js +25 -26
  283. package/dist/sync/createSnapshot.d.ts +12 -14
  284. package/dist/sync/createSnapshot.js +20 -26
  285. package/dist/sync/credentialLifecycle.d.ts +104 -104
  286. package/dist/sync/credentialLifecycle.js +140 -147
  287. package/dist/sync/deltaPipeline.d.ts +36 -34
  288. package/dist/sync/deltaPipeline.js +64 -65
  289. package/dist/sync/groupChange.d.ts +63 -61
  290. package/dist/sync/groupChange.js +74 -78
  291. package/dist/sync/heartbeat.d.ts +34 -33
  292. package/dist/sync/heartbeat.js +31 -31
  293. package/dist/sync/participants.d.ts +19 -19
  294. package/dist/sync/schemas.d.ts +3 -2
  295. package/dist/sync/schemas.js +14 -10
  296. package/dist/sync/syncCursor.d.ts +17 -21
  297. package/dist/sync/syncCursor.js +17 -21
  298. package/dist/sync/syncPlan.d.ts +28 -36
  299. package/dist/sync/syncPlan.js +18 -19
  300. package/dist/sync/syncPosition.d.ts +54 -49
  301. package/dist/sync/syncPosition.js +57 -52
  302. package/dist/sync/wsFrameHandlers.d.ts +35 -36
  303. package/dist/sync/wsFrameHandlers.js +63 -67
  304. package/dist/testing/fixtures/bootstrap.d.ts +12 -6
  305. package/dist/testing/fixtures/bootstrap.js +12 -6
  306. package/dist/testing/fixtures/deltas.d.ts +30 -33
  307. package/dist/testing/fixtures/deltas.js +30 -33
  308. package/dist/testing/fixtures/models.d.ts +11 -10
  309. package/dist/testing/fixtures/models.js +11 -10
  310. package/dist/testing/helpers/{react-wrapper.d.ts → reactWrapper.d.ts} +13 -10
  311. package/dist/testing/helpers/{react-wrapper.js → reactWrapper.js} +15 -12
  312. package/dist/testing/helpers/{sync-engine-harness.d.ts → syncEngineHarness.d.ts} +17 -15
  313. package/dist/testing/helpers/{sync-engine-harness.js → syncEngineHarness.js} +12 -10
  314. package/dist/testing/helpers/wait.d.ts +13 -8
  315. package/dist/testing/helpers/wait.js +13 -8
  316. package/dist/testing/index.d.ts +3 -3
  317. package/dist/testing/index.js +2 -2
  318. package/dist/testing/mocks/MockMutationExecutor.d.ts +18 -17
  319. package/dist/testing/mocks/MockMutationExecutor.js +15 -14
  320. package/dist/testing/mocks/MockNetworkMonitor.d.ts +8 -8
  321. package/dist/testing/mocks/MockNetworkMonitor.js +8 -8
  322. package/dist/testing/mocks/MockSyncContext.d.ts +20 -17
  323. package/dist/testing/mocks/MockSyncContext.js +15 -13
  324. package/dist/testing/mocks/MockSyncStore.d.ts +10 -10
  325. package/dist/testing/mocks/MockSyncStore.js +11 -11
  326. package/dist/testing/mocks/MockWebSocket.d.ts +26 -22
  327. package/dist/testing/mocks/MockWebSocket.js +22 -21
  328. package/dist/transactions/TransactionQueue.d.ts +181 -176
  329. package/dist/transactions/TransactionQueue.js +338 -350
  330. package/dist/transactions/TransactionStore.d.ts +6 -4
  331. package/dist/transactions/TransactionStore.js +6 -4
  332. package/dist/transactions/UnconfirmedWrites.d.ts +82 -0
  333. package/dist/transactions/UnconfirmedWrites.js +104 -0
  334. package/dist/transactions/coalesceRules.d.ts +41 -17
  335. package/dist/transactions/coalesceRules.js +40 -17
  336. package/dist/transactions/commitPayload.d.ts +48 -52
  337. package/dist/transactions/commitPayload.js +48 -57
  338. package/dist/transactions/deltaConfirmation.d.ts +20 -22
  339. package/dist/transactions/deltaConfirmation.js +37 -45
  340. package/dist/transactions/optimisticApply.d.ts +49 -0
  341. package/dist/transactions/optimisticApply.js +65 -0
  342. package/dist/transactions/{persistedReplay.d.ts → replayValidation.d.ts} +28 -22
  343. package/dist/transactions/{persistedReplay.js → replayValidation.js} +33 -27
  344. package/dist/types/global.d.ts +46 -41
  345. package/dist/types/global.js +20 -19
  346. package/dist/types/index.d.ts +71 -77
  347. package/dist/types/index.js +22 -22
  348. package/dist/types/modelData.d.ts +6 -8
  349. package/dist/types/modelData.js +5 -7
  350. package/dist/types/participant.d.ts +10 -11
  351. package/dist/types/participant.js +6 -8
  352. package/dist/types/streams.d.ts +208 -195
  353. package/dist/types/streams.js +7 -7
  354. package/dist/utils/asyncIterator.d.ts +25 -32
  355. package/dist/utils/asyncIterator.js +25 -32
  356. package/dist/utils/duration.d.ts +12 -15
  357. package/dist/utils/duration.js +12 -15
  358. package/dist/utils/mobxSetup.d.ts +53 -0
  359. package/dist/utils/{mobx-setup.js → mobxSetup.js} +42 -98
  360. package/dist/webhooks/events.d.ts +21 -16
  361. package/dist/webhooks/events.js +10 -8
  362. package/dist/webhooks/index.d.ts +5 -7
  363. package/dist/webhooks/index.js +5 -7
  364. package/dist/{schema/sync-delta-wire.d.ts → wire/delta.d.ts} +58 -41
  365. package/dist/wire/delta.js +114 -0
  366. package/dist/wire/errorEnvelope.d.ts +30 -31
  367. package/dist/wire/errorEnvelope.js +34 -40
  368. package/dist/wire/frames.d.ts +79 -86
  369. package/dist/wire/frames.js +26 -33
  370. package/dist/wire/index.d.ts +14 -12
  371. package/dist/wire/index.js +30 -26
  372. package/dist/wire/listEnvelope.d.ts +16 -23
  373. package/dist/wire/listEnvelope.js +7 -6
  374. package/dist/wire/protocol.d.ts +25 -32
  375. package/dist/wire/protocol.js +25 -32
  376. package/dist/wire/protocolVersion.d.ts +44 -40
  377. package/dist/wire/protocolVersion.js +44 -40
  378. package/docs/coordination.md +59 -0
  379. package/package.json +11 -10
  380. package/dist/ai-sdk/coordinated-tool.d.ts +0 -101
  381. package/dist/ai-sdk/coordination-context.d.ts +0 -52
  382. package/dist/core/query-utils.d.ts +0 -34
  383. package/dist/core/query-utils.js +0 -59
  384. package/dist/schema/sync-delta-row.js +0 -103
  385. package/dist/schema/sync-delta-wire.js +0 -102
  386. package/dist/server/read-config.d.ts +0 -67
  387. package/dist/server/read-config.js +0 -8
  388. package/dist/server/storage-mode.d.ts +0 -8
  389. package/dist/server/storage-mode.js +0 -28
  390. package/dist/source/connector-protocol.d.ts +0 -159
  391. package/dist/source/connector-protocol.js +0 -161
  392. package/dist/transactions/OptimisticEchoTracker.d.ts +0 -82
  393. package/dist/transactions/OptimisticEchoTracker.js +0 -104
  394. package/dist/transactions/mutation-error-handler.d.ts +0 -5
  395. package/dist/transactions/mutation-error-handler.js +0 -39
  396. package/dist/transactions/optimistic.d.ts +0 -24
  397. package/dist/transactions/optimistic.js +0 -45
  398. package/dist/utils/mobx-setup.d.ts +0 -42
@@ -1,13 +1,10 @@
1
1
  /**
2
- * Inbound frame dispatch for the sync WebSocket.
3
- *
4
- * Replaces the monolithic frame `switch` that used to live inside
5
- * `SyncWebSocket.setupEventHandlers` with a frame-type handler table of
6
- * functions over a minimal {@link WsSession} interface only the members
7
- * the handlers actually touch, never the transport class itself (no
8
- * import cycle). The host's `onmessage` stays responsible for JSON
9
- * parsing, heartbeat proof-of-life, and the outer try/catch; everything
10
- * after that funnels through {@link dispatchWsFrame}.
2
+ * Routes each inbound frame from the sync WebSocket to the handler for its
3
+ * type. Handlers work against a minimal {@link WsSession} interface — only
4
+ * the members they actually touch, rather than the transport object itself,
5
+ * which keeps this module free of an import cycle. Reading a message off the
6
+ * socket, parsing its JSON, and tracking heartbeats all happen before this
7
+ * point; every parsed frame then passes through {@link dispatchWsFrame}.
11
8
  */
12
9
  import { type CommitAck } from './commitFrames.js';
13
10
  /**
@@ -33,9 +30,10 @@ export interface PendingClaim {
33
30
  timeout: ReturnType<typeof setTimeout>;
34
31
  }
35
32
  /**
36
- * In-flight `update_subscription` record awaiting `subscription_ack`.
37
- * FIFO-matched (no correlation id on the wire) — see the session field
38
- * doc on SyncWebSocket.pendingSubscriptions.
33
+ * An in-flight `update_subscription` request awaiting its
34
+ * `subscription_ack`. The wire carries no correlation id, so requests are
35
+ * matched to their acknowledgements in first-in, first-out order, the same
36
+ * order the server applies them.
39
37
  */
40
38
  export interface PendingSubscription {
41
39
  resolve: (value: {
@@ -45,14 +43,14 @@ export interface PendingSubscription {
45
43
  timeout: ReturnType<typeof setTimeout>;
46
44
  }
47
45
  /**
48
- * Parsed inbound wire frame (the raw `JSON.parse` result). Untrusted
49
- * data every payload is loose and each handler narrows defensively,
50
- * the same posture the inline switch had.
46
+ * A parsed inbound wire frame, straight from `JSON.parse`. The data is
47
+ * untrusted: every payload is loosely typed, and each handler narrows it
48
+ * defensively before use.
51
49
  */
52
50
  export interface WsInboundFrame {
53
51
  type?: string;
54
52
  payload?: unknown;
55
- /** Legacy bare-delta frames carry delta fields at the top level. */
53
+ /** Some delta frames carry their delta fields at the top level rather than under `payload`. */
56
54
  actionType?: unknown;
57
55
  modelName?: unknown;
58
56
  [key: string]: unknown;
@@ -60,17 +58,18 @@ export interface WsInboundFrame {
60
58
  /** Narrow arbitrary wire data to a plain string-keyed record. */
61
59
  export declare function isRecord(value: unknown): value is Record<string, unknown>;
62
60
  /**
63
- * Envelope guard for the raw `JSON.parse` result of an inbound WS message.
64
- * A frame is any plain object whose `type`, when present, is a string
65
- * payload-level validation stays with each handler (deltas go through the
66
- * canonical `clientSyncDeltaSchema` at the `normalizeWireDelta` seam).
61
+ * A type guard for the parsed result of an inbound message. A frame is any
62
+ * plain object whose `type`, when present, is a string. Validating the
63
+ * payload itself is left to each handler; delta payloads, for example, are
64
+ * checked against the canonical delta schema before they are applied.
67
65
  */
68
66
  export declare function isWsInboundFrame(value: unknown): value is WsInboundFrame;
69
67
  /**
70
- * The slice of SyncWebSocket the frame handlers operate on. The host
71
- * builds one adapter object over its private state; closures read live
72
- * fields so host-side reassignment (e.g. the pendingSubscriptions reset
73
- * on close) can't strand the handlers on stale references.
68
+ * The subset of the sync WebSocket that the frame handlers need. The
69
+ * transport builds a single object exposing these members over its own
70
+ * private state. Handlers read the fields live rather than capturing them,
71
+ * so resetting a field elsewhere such as clearing pending subscriptions
72
+ * on close — never leaves a handler holding a stale value.
74
73
  */
75
74
  export interface WsSession {
76
75
  /** EventEmitter surface — handlers emit the typed transport events. */
@@ -79,7 +78,7 @@ export interface WsSession {
79
78
  pendingMutations: Map<string, PendingCommit>;
80
79
  /** In-flight claim acks keyed by claimId. */
81
80
  pendingClaims: Map<string, PendingClaim>;
82
- /** FIFO pop of the oldest in-flight `update_subscription` request. */
81
+ /** Removes and returns the oldest in-flight `update_subscription` request. */
83
82
  shiftPendingSubscription(): PendingSubscription | undefined;
84
83
  /** Connection options subset the handlers write back (acked sync groups). */
85
84
  options: {
@@ -88,10 +87,9 @@ export interface WsSession {
88
87
  /** Registered collaboration event keys (colon format). */
89
88
  collaborationEventTypes: ReadonlySet<string>;
90
89
  /**
91
- * Receive-boundary delta processing. Takes UNTRUSTED wire data the
92
- * host validates against the canonical `clientSyncDeltaSchema` (and
93
- * drops malformed deltas) at its `normalizeWireDelta` seam, so the
94
- * handlers here never need to cast.
90
+ * Processes one inbound delta. The argument is untrusted wire data; the
91
+ * transport validates it against the canonical delta schema and drops
92
+ * anything malformed, so handlers here never cast.
95
93
  */
96
94
  handleDelta(delta: unknown): void;
97
95
  handleSyncResponse(payload: unknown): void;
@@ -103,15 +101,16 @@ export interface WsSession {
103
101
  }
104
102
  export type WsFrameHandler = (session: WsSession, message: WsInboundFrame) => void;
105
103
  /**
106
- * Frame-type handler table. Every named server frame the SDK
107
- * understands dispatches through here; anything else falls to the
108
- * collaboration-event / unknown-type path in {@link dispatchWsFrame}.
104
+ * Maps each frame type to its handler. Every named server frame this
105
+ * package understands is dispatched from this table; anything else falls
106
+ * through to the collaboration-event and unknown-type path in
107
+ * {@link dispatchWsFrame}.
109
108
  */
110
109
  export declare const wsFrameHandlers: Record<string, WsFrameHandler>;
111
110
  /**
112
- * Route one parsed inbound frame to its handler. Mirrors the original
113
- * inline switch exactly: keepalives are ignored, a missing `type` is
114
- * the legacy bare-delta form, unknown types fall through to the
115
- * collaboration-event map (underscore wire format colon event key).
111
+ * Routes one parsed inbound frame to its handler. Keepalive frames are
112
+ * ignored, a missing `type` is treated as a bare delta, and any unknown
113
+ * type falls through to the collaboration-event map, whose wire names use
114
+ * underscores and whose event keys use colons.
116
115
  */
117
116
  export declare function dispatchWsFrame(session: WsSession, message: WsInboundFrame): void;
@@ -1,13 +1,10 @@
1
1
  /**
2
- * Inbound frame dispatch for the sync WebSocket.
3
- *
4
- * Replaces the monolithic frame `switch` that used to live inside
5
- * `SyncWebSocket.setupEventHandlers` with a frame-type handler table of
6
- * functions over a minimal {@link WsSession} interface only the members
7
- * the handlers actually touch, never the transport class itself (no
8
- * import cycle). The host's `onmessage` stays responsible for JSON
9
- * parsing, heartbeat proof-of-life, and the outer try/catch; everything
10
- * after that funnels through {@link dispatchWsFrame}.
2
+ * Routes each inbound frame from the sync WebSocket to the handler for its
3
+ * type. Handlers work against a minimal {@link WsSession} interface — only
4
+ * the members they actually touch, rather than the transport object itself,
5
+ * which keeps this module free of an import cycle. Reading a message off the
6
+ * socket, parsing its JSON, and tracking heartbeats all happen before this
7
+ * point; every parsed frame then passes through {@link dispatchWsFrame}.
11
8
  */
12
9
  import { getContext } from '../context.js';
13
10
  import { CapabilityError, errorFromWire, } from '../errors.js';
@@ -19,10 +16,10 @@ export function isRecord(value) {
19
16
  return typeof value === 'object' && value !== null && !Array.isArray(value);
20
17
  }
21
18
  /**
22
- * Envelope guard for the raw `JSON.parse` result of an inbound WS message.
23
- * A frame is any plain object whose `type`, when present, is a string
24
- * payload-level validation stays with each handler (deltas go through the
25
- * canonical `clientSyncDeltaSchema` at the `normalizeWireDelta` seam).
19
+ * A type guard for the parsed result of an inbound message. A frame is any
20
+ * plain object whose `type`, when present, is a string. Validating the
21
+ * payload itself is left to each handler; delta payloads, for example, are
22
+ * checked against the canonical delta schema before they are applied.
26
23
  */
27
24
  export function isWsInboundFrame(value) {
28
25
  if (!isRecord(value))
@@ -31,10 +28,10 @@ export function isWsInboundFrame(value) {
31
28
  return type === undefined || typeof type === 'string';
32
29
  }
33
30
  /**
34
- * Ack for a prior `commit` we sent. Canonical shape is
35
- * `MutationResultMessage` in `@abloatai/ablo/wire`. This stays a
36
- * DEFENSIVE parse (not a typed cast) because the payload is
37
- * untrusted wire data that may be malformed or from an older server.
31
+ * Handles the acknowledgement of a `commit` request. The canonical wire
32
+ * shape is `MutationResultMessage`. The payload is parsed defensively
33
+ * rather than cast, since it is untrusted and may be malformed or sent by
34
+ * an older server.
38
35
  */
39
36
  const handleMutationResult = (session, message) => {
40
37
  const p = (message.payload ?? message);
@@ -54,9 +51,9 @@ const handleMutationResult = (session, message) => {
54
51
  // Coerce defensively — bigint columns serialize as strings
55
52
  // from older servers (see normalizeWireDelta).
56
53
  const ackedSyncId = Number(lastSyncId);
57
- // Notify-instead-of-abort: a guarded write's premise moved. Emit
58
- // the advisory signal so an agent loop can self-heal, AND resolve
59
- // the receipt with it (the commit still succeeded).
54
+ // The write succeeded, but a guarded premise shifted underneath it.
55
+ // Emit the advisory signal so a caller can react, and still resolve
56
+ // the receipt, since the commit itself went through.
60
57
  if (notifications && notifications.length > 0) {
61
58
  const txId = typeof clientTxId === 'string' ? clientTxId : '';
62
59
  const event = {
@@ -86,13 +83,10 @@ const handleMutationResult = (session, message) => {
86
83
  });
87
84
  }
88
85
  else {
89
- // Capture the FULL server error so the user can see what
90
- // actually rejected the mutation. Without this, every
91
- // rejection becomes the generic "mutation failed on
92
- // server" useless when debugging chart batches that
93
- // tank 40+ ops at once. We stringify object errors so
94
- // structured server payloads (e.g., Zod issues, schema
95
- // violations) survive the trip through `new Error(...)`.
86
+ // Capture the full server error so the caller can see what actually
87
+ // rejected the mutation, rather than a generic "mutation failed on
88
+ // server". Object errors are stringified so structured server payloads,
89
+ // such as validation issues, survive being wrapped in an Error.
96
90
  let errorMessage;
97
91
  let errorCode;
98
92
  let requiredCapability;
@@ -123,14 +117,12 @@ const handleMutationResult = (session, message) => {
123
117
  else {
124
118
  errorMessage = 'mutation failed on server';
125
119
  }
126
- // Coordination collision: a stale-context rejection (the write's
127
- // readAt premise moved underneath) or a foreign-claim conflict is
128
- // exactly the collision ClaimLog exists to surface. The notify
129
- // path (success + notifications) emits captureConflict above; a
130
- // HARD rejection must too otherwise observability.collisions()
131
- // silently misses every rejected write. The conflicted rows ride
132
- // along on the typed error's `conflicts` detail (see
133
- // AbloStaleContextError.toJSON / errorEnvelope).
120
+ // A stale-context rejection (the write read state that has since
121
+ // changed) or a foreign-claim conflict is a coordination collision.
122
+ // The success-with-notifications path above records the conflict, and a
123
+ // hard rejection must record it too, or the collision count would miss
124
+ // every rejected write. The conflicting rows ride along on the typed
125
+ // error's `conflicts` detail.
134
126
  if (errorCode === 'stale_context' ||
135
127
  errorCode === 'claim_conflict' ||
136
128
  errorCode === 'entity_claimed' ||
@@ -169,11 +161,9 @@ const handleMutationResult = (session, message) => {
169
161
  }
170
162
  };
171
163
  /**
172
- * Ack for a prior `claim` we sent. Wire format mirrors
173
- * apps/sync-server/src/hub/types.ts ClaimAckMessage:
174
- * { type: 'claim_ack',
175
- * payload: { claimId, success, syncGroups?,
176
- * ttlSeconds?, error? } }
164
+ * Handles the acknowledgement of a `claim` request. The frame has the shape
165
+ * `{ type: 'claim_ack', payload: { claimId, success, syncGroups?,
166
+ * ttlSeconds?, error? } }`.
177
167
  */
178
168
  const handleClaimAck = (session, message) => {
179
169
  const p = (message.payload ?? {});
@@ -223,11 +213,11 @@ const handleClaimAck = (session, message) => {
223
213
  }
224
214
  };
225
215
  /**
226
- * Ack for a prior `update_subscription`. The wire carries no
227
- * correlation id, so FIFO-match against the oldest pending
228
- * request the server applies and acks subscription updates
229
- * in receive order. Validated through the canonical zod schema
230
- * (mirrors how the Hub validates inbound frames).
216
+ * Handles the acknowledgement of an `update_subscription` request. The wire
217
+ * carries no correlation id, so the ack is matched to the oldest pending
218
+ * request in first-in, first-out order, since the server applies and
219
+ * acknowledges subscription updates in the order it receives them. The
220
+ * payload is validated against its canonical schema before use.
231
221
  */
232
222
  const handleSubscriptionAck = (session, message) => {
233
223
  const pending = session.shiftPendingSubscription();
@@ -255,10 +245,10 @@ const handleSubscriptionAck = (session, message) => {
255
245
  }
256
246
  };
257
247
  /**
258
- * `delta` frames carry either a single delta or a `{ deltas: [...] }` batch.
259
- * Only DISCRIMINATES the two shapes here each delta is validated exactly
260
- * once downstream (the host's `normalizeWireDelta` seam), so batch elements
261
- * are handed over raw rather than pre-parsed.
248
+ * Handles a `delta` frame, which carries either a single delta or a
249
+ * `{ deltas: [...] }` batch. This only tells the two shapes apart; each
250
+ * delta is validated once downstream, so batch elements are passed along
251
+ * raw rather than parsed here.
262
252
  */
263
253
  const handleDeltaFrame = (session, message) => {
264
254
  const p = message.payload;
@@ -271,14 +261,15 @@ const handleDeltaFrame = (session, message) => {
271
261
  for (const d of p.deltas) {
272
262
  session.handleDelta(d);
273
263
  }
274
- // `p.newVersions` from pre-cutover servers is ignored the version
275
- // vector was removed in W4a (sync_id is the causality token).
264
+ // `p.newVersions` from older servers is ignored; `sync_id` is the
265
+ // causality token.
276
266
  }
277
267
  };
278
268
  /**
279
- * Frame-type handler table. Every named server frame the SDK
280
- * understands dispatches through here; anything else falls to the
281
- * collaboration-event / unknown-type path in {@link dispatchWsFrame}.
269
+ * Maps each frame type to its handler. Every named server frame this
270
+ * package understands is dispatched from this table; anything else falls
271
+ * through to the collaboration-event and unknown-type path in
272
+ * {@link dispatchWsFrame}.
282
273
  */
283
274
  export const wsFrameHandlers = {
284
275
  sync_response: (session, message) => { session.handleSyncResponse(message.payload); },
@@ -299,10 +290,9 @@ export const wsFrameHandlers = {
299
290
  }
300
291
  },
301
292
  claim_rejected: (session, message) => {
302
- // Server denied an `claim_begin` because the target is
303
- // already claimed by another participant. Forward the
304
- // payload as-is the ClaimStream consumer interprets
305
- // the conflict shape (peerId, target, etc.).
293
+ // The server denied a claim because the target is already held by
294
+ // another participant. The payload is forwarded as-is for the claim
295
+ // stream consumer to interpret (peerId, target, and so on).
306
296
  recordClaim('rejected', (message.payload ?? {}));
307
297
  session.emit('claim_rejected', message.payload ?? {});
308
298
  },
@@ -334,13 +324,20 @@ export const wsFrameHandlers = {
334
324
  recordClaim('lost', (message.payload ?? {}));
335
325
  session.emit('claim_lost', message.payload ?? {});
336
326
  },
327
+ claim_heartbeat_ack: (session, message) => {
328
+ // Reply to our `claim_heartbeat` — the claim stream correlates it back
329
+ // to the awaiting caller by claimId. Not logged per-frame: heartbeats
330
+ // are a cadence, and the interesting transitions (lost) surface through
331
+ // the caller's error path.
332
+ session.emit('claim_heartbeat_ack', message.payload ?? {});
333
+ },
337
334
  delta: handleDeltaFrame,
338
335
  };
339
336
  /**
340
- * Route one parsed inbound frame to its handler. Mirrors the original
341
- * inline switch exactly: keepalives are ignored, a missing `type` is
342
- * the legacy bare-delta form, unknown types fall through to the
343
- * collaboration-event map (underscore wire format colon event key).
337
+ * Routes one parsed inbound frame to its handler. Keepalive frames are
338
+ * ignored, a missing `type` is treated as a bare delta, and any unknown
339
+ * type falls through to the collaboration-event map, whose wire names use
340
+ * underscores and whose event keys use colons.
344
341
  */
345
342
  export function dispatchWsFrame(session, message) {
346
343
  if (message.type === 'pong' || message.type === 'ping') {
@@ -349,16 +346,15 @@ export function dispatchWsFrame(session, message) {
349
346
  return;
350
347
  }
351
348
  if (message.type === undefined) {
352
- // Legacy support: bare delta (validated at the host's
353
- // normalizeWireDelta seam like every other delta).
349
+ // A bare delta, validated downstream like every other delta.
354
350
  if (message.actionType || message.modelName) {
355
351
  session.handleDelta(message);
356
352
  }
357
353
  return;
358
354
  }
359
- // Own-property lookup so wire types like 'toString' can never hit
360
- // Object.prototype members those fall through to the unknown-type
361
- // path exactly as the switch's `default` did.
355
+ // Look up own properties only, so a wire type like 'toString' can't match
356
+ // an inherited Object.prototype member; such types fall through to the
357
+ // unknown-type path.
362
358
  const handler = Object.prototype.hasOwnProperty.call(wsFrameHandlers, message.type)
363
359
  ? wsFrameHandlers[message.type]
364
360
  : undefined;
@@ -1,7 +1,9 @@
1
1
  /**
2
- * Bootstrap response factories for sync engine tests.
3
- *
4
- * Creates well-formed bootstrap responses matching the server API.
2
+ * Factories that build well-formed bootstrap responses for tests. A
3
+ * bootstrap response is what the server returns when a client first syncs:
4
+ * either a full snapshot of the models or a partial batch of deltas since a
5
+ * known point. These helpers produce the same shapes, so tests can exercise
6
+ * client sync logic without a live server.
5
7
  */
6
8
  import type { BootstrapType } from '../../types/index.js';
7
9
  export type BootstrapModelData = Record<string, Record<string, unknown>[]>;
@@ -21,15 +23,19 @@ export interface BootstrapResponse {
21
23
  timestamp: number;
22
24
  }
23
25
  /**
24
- * Create a full bootstrap response (fresh snapshot from server).
26
+ * Builds a full bootstrap response — a fresh snapshot of the given models,
27
+ * as the server sends on a client's first sync.
25
28
  */
26
29
  export declare function createFullBootstrapResponse(models: BootstrapModelData, lastSyncId?: number): BootstrapResponse;
27
30
  /**
28
- * Create a partial bootstrap response (delta batch from lastSyncId).
31
+ * Builds a partial bootstrap response a batch of deltas applied on top of
32
+ * the client's last known sync point, given by `lastSyncId`.
29
33
  */
30
34
  export declare function createPartialBootstrapResponse(deltas: BootstrapResponse['deltas'], lastSyncId: number): BootstrapResponse;
31
35
  /**
32
- * Create a full bootstrap response with test model data pre-populated.
36
+ * Builds a full bootstrap response with the common test models
37
+ * pre-populated. Pass any of the named model arrays to include them in the
38
+ * snapshot.
33
39
  */
34
40
  export declare function createTestBootstrapResponse(options?: {
35
41
  tasks?: Record<string, unknown>[];
@@ -1,10 +1,13 @@
1
1
  /**
2
- * Bootstrap response factories for sync engine tests.
3
- *
4
- * Creates well-formed bootstrap responses matching the server API.
2
+ * Factories that build well-formed bootstrap responses for tests. A
3
+ * bootstrap response is what the server returns when a client first syncs:
4
+ * either a full snapshot of the models or a partial batch of deltas since a
5
+ * known point. These helpers produce the same shapes, so tests can exercise
6
+ * client sync logic without a live server.
5
7
  */
6
8
  /**
7
- * Create a full bootstrap response (fresh snapshot from server).
9
+ * Builds a full bootstrap response — a fresh snapshot of the given models,
10
+ * as the server sends on a client's first sync.
8
11
  */
9
12
  export function createFullBootstrapResponse(models, lastSyncId = 100) {
10
13
  return {
@@ -15,7 +18,8 @@ export function createFullBootstrapResponse(models, lastSyncId = 100) {
15
18
  };
16
19
  }
17
20
  /**
18
- * Create a partial bootstrap response (delta batch from lastSyncId).
21
+ * Builds a partial bootstrap response a batch of deltas applied on top of
22
+ * the client's last known sync point, given by `lastSyncId`.
19
23
  */
20
24
  export function createPartialBootstrapResponse(deltas, lastSyncId) {
21
25
  return {
@@ -27,7 +31,9 @@ export function createPartialBootstrapResponse(deltas, lastSyncId) {
27
31
  };
28
32
  }
29
33
  /**
30
- * Create a full bootstrap response with test model data pre-populated.
34
+ * Builds a full bootstrap response with the common test models
35
+ * pre-populated. Pass any of the named model arrays to include them in the
36
+ * snapshot.
31
37
  */
32
38
  export function createTestBootstrapResponse(options = {}) {
33
39
  const models = {};
@@ -1,7 +1,8 @@
1
1
  /**
2
- * Delta factories for sync engine tests.
3
- *
4
- * Creates well-formed SyncAction objects matching the server wire format.
2
+ * Factories that build well-formed delta objects for tests. A delta, a
3
+ * {@link SyncAction}, is a single change to one model instance in the wire
4
+ * format the server sends: an insert, update, delete, archive, and so on.
5
+ * These helpers let tests construct deltas without a live server.
5
6
  */
6
7
  import type { SyncActionType, SyncAction } from '../../types/index.js';
7
8
  /** Reset the delta counter (call in beforeEach for deterministic IDs) */
@@ -19,68 +20,64 @@ export interface CreateDeltaOptions {
19
20
  data?: Record<string, unknown>;
20
21
  }
21
22
  /**
22
- * Create a single SyncAction (delta) matching the server wire format.
23
+ * Builds a single delta ({@link SyncAction}) in the server's wire format.
23
24
  */
24
25
  export declare function createDelta(options: CreateDeltaOptions): SyncAction;
25
26
  /**
26
- * Create an INSERT delta for a new entity.
27
+ * Builds an insert delta for a new entity.
27
28
  */
28
29
  export declare function createInsertDelta(modelName: string, modelId: string, data: Record<string, unknown>, syncId?: number): SyncAction;
29
30
  /**
30
- * Create an UPDATE delta for an existing entity.
31
+ * Builds an update delta for an existing entity.
31
32
  */
32
33
  export declare function createUpdateDelta(modelName: string, modelId: string, data: Record<string, unknown>, syncId?: number): SyncAction;
33
34
  /**
34
- * Create a DELETE delta.
35
+ * Builds a delete delta.
35
36
  */
36
37
  export declare function createDeleteDelta(modelName: string, modelId: string, syncId?: number): SyncAction;
37
38
  /**
38
- * Create an ARCHIVE delta.
39
+ * Builds an archive delta, stamping `archivedAt` with the current time.
39
40
  */
40
41
  export declare function createArchiveDelta(modelName: string, modelId: string, syncId?: number): SyncAction;
41
42
  /**
42
- * Create an UNARCHIVE (reVive) delta.
43
+ * Builds an unarchive delta, clearing `archivedAt`.
43
44
  */
44
45
  export declare function createUnarchiveDelta(modelName: string, modelId: string, syncId?: number): SyncAction;
45
46
  /**
46
- * Create a COVERING ('C') delta.
47
- *
48
- * Signals that the client has gained permission to see an existing entity.
49
- * Treated as an insert by the client — the entity is added to the local
50
- * store as if newly created. Typically follows a GroupAdded delta.
47
+ * Builds a covering ('C') delta. It signals that the client has gained
48
+ * permission to see an entity that already exists. The client treats it
49
+ * like an insert, adding the entity to its local store as if newly created.
50
+ * A covering delta typically follows a group-added delta.
51
51
  */
52
52
  export declare function createCoveringDelta(modelName: string, modelId: string, data: Record<string, unknown>, syncId?: number): SyncAction;
53
53
  /**
54
- * Create a GROUP ADDED ('G') delta using the incremental payload shape.
55
- *
56
- * Signals that the recipient was added to a single sync group. The client
57
- * updates its subscription metadata and waits for Covering deltas to
58
- * deliver the newly-visible entities. Unlike the legacy 'G' payload
59
- * (addedGroups/removedGroups), this does not trigger a re-bootstrap.
54
+ * Builds a group-added ('G') delta in the incremental payload shape. It
55
+ * signals that the recipient was added to a single sync group. The client
56
+ * updates its subscription state and waits for covering deltas to deliver
57
+ * the newly visible entities. Unlike the older payload that carries both
58
+ * added and removed groups, this shape does not trigger a re-bootstrap.
60
59
  */
61
60
  export declare function createGroupAddedDelta(userId: string, group: string, syncId?: number): SyncAction;
62
61
  /**
63
- * Create a legacy GROUP CHANGE ('G') delta with the old payload shape.
64
- *
65
- * Carries both added and removed groups in one delta and forces a full
66
- * re-bootstrap on the client. Use for testing backward compatibility with
67
- * the deprecated EmitGroupChange path.
62
+ * Builds a group-change ('G') delta in the older payload shape, which
63
+ * carries both added and removed groups in one delta and forces a full
64
+ * re-bootstrap on the client. Useful for testing backward compatibility
65
+ * with that older shape.
68
66
  */
69
67
  export declare function createLegacyGroupChangeDelta(userId: string, added: string[], removed: string[], syncId?: number): SyncAction;
70
68
  /**
71
- * Create a GROUP REMOVED ('S') delta.
72
- *
73
- * Signals that the recipient lost access to a sync group. The client
74
- * purges affected local state and triggers a re-bootstrap with the
75
- * updated group list.
69
+ * Builds a group-removed ('S') delta. It signals that the recipient lost
70
+ * access to a sync group. The client purges the affected local state and
71
+ * re-bootstraps with the updated group list.
76
72
  */
77
73
  export declare function createGroupRemovedDelta(userId: string, group: string, syncId?: number): SyncAction;
78
74
  /**
79
- * Create a batch of deltas with sequential sync IDs.
75
+ * Builds a batch of deltas with sequential sync IDs.
80
76
  */
81
77
  export declare function createDeltaBatch(deltas: Omit<CreateDeltaOptions, 'id'>[], startingSyncId?: number): SyncAction[];
82
78
  /**
83
- * Create a confirmation delta used to confirm that a mutation
84
- * was persisted by the server (TransactionQueue watches for this).
79
+ * Builds a confirmation delta, which signals that a mutation was persisted
80
+ * by the server. The client's transaction queue watches for these to
81
+ * confirm its in-flight writes.
85
82
  */
86
83
  export declare function createConfirmationDelta(modelName: string, modelId: string, syncId: number, action?: SyncActionType, data?: Record<string, unknown>): SyncAction;