@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,22 +1,20 @@
1
1
  /**
2
- * Up-front validation of `AbloOptions`. Returns the first error
3
- * encountered or null if all checks pass caller writes the error
4
- * into `store.syncStatus` so consumers see it through the existing
5
- * status surface rather than catching it at the call site.
2
+ * Validates the options passed when constructing a client, before any
3
+ * connection is attempted. Returns the first problem it finds as an
4
+ * {@link AbloError}, or null when every check passes. The caller records that
5
+ * error on the client's sync status, so a misconfiguration surfaces through the
6
+ * normal status channel rather than throwing at the call site.
6
7
  *
7
- * Extracted from `Ablo.ts` (which was ~2300 LOC of constructor wiring)
8
- * so the validation rules are readable in isolation. The order of
9
- * checks matters: missing `url` is checked before identity options
10
- * because the error messages reference URLs and would mislead if a
11
- * URL was actually present.
8
+ * The order of checks matters: a missing `url` is reported before any identity
9
+ * problem, because the identity error messages mention the URL and would
10
+ * mislead if the URL were the thing actually missing.
12
11
  */
13
12
  import { AbloError } from '../errors.js';
14
13
  /**
15
- * Minimal subset of `AbloOptions` the validator actually inspects.
16
- * Defined here as its own interface so the validator doesn't pull
17
- * the whole 200+-line `AbloOptions` type and to avoid a circular
18
- * import with `Ablo.ts`. Fields are kept structurally identical to
19
- * `AbloOptions` so a real options object satisfies this shape.
14
+ * The subset of client options this validator reads. It is declared as its own
15
+ * interface, structurally compatible with the full options type, so a real
16
+ * options object satisfies it without the validator having to depend on the
17
+ * complete type.
20
18
  */
21
19
  export interface ValidatableAbloOptions {
22
20
  readonly schema?: {
@@ -1,14 +1,13 @@
1
1
  /**
2
- * Up-front validation of `AbloOptions`. Returns the first error
3
- * encountered or null if all checks pass caller writes the error
4
- * into `store.syncStatus` so consumers see it through the existing
5
- * status surface rather than catching it at the call site.
2
+ * Validates the options passed when constructing a client, before any
3
+ * connection is attempted. Returns the first problem it finds as an
4
+ * {@link AbloError}, or null when every check passes. The caller records that
5
+ * error on the client's sync status, so a misconfiguration surfaces through the
6
+ * normal status channel rather than throwing at the call site.
6
7
  *
7
- * Extracted from `Ablo.ts` (which was ~2300 LOC of constructor wiring)
8
- * so the validation rules are readable in isolation. The order of
9
- * checks matters: missing `url` is checked before identity options
10
- * because the error messages reference URLs and would mislead if a
11
- * URL was actually present.
8
+ * The order of checks matters: a missing `url` is reported before any identity
9
+ * problem, because the identity error messages mention the URL and would
10
+ * mislead if the URL were the thing actually missing.
12
11
  */
13
12
  import { AbloError, AbloValidationError } from '../errors.js';
14
13
  export function validateAbloOptions(input) {
@@ -1,18 +1,19 @@
1
1
  /**
2
- * THE write-options schema one Zod schema for the write dialect every
3
- * door speaks (`ablo.<model>.create/update/delete`, `commits.create`, the
4
- * HTTP model routes). Validated once at each public boundary so a plain-JS
5
- * caller passing `onStale: 'rejct'` fails loudly at the call site with a
6
- * typed `AbloValidationError`, not silently (or 400) at the server.
2
+ * The Zod schema for write options the settings accepted by every write
3
+ * entry point, including `ablo.<model>.create/update/delete`, `commits.create`,
4
+ * and the HTTP write routes. Each of those boundaries validates against this
5
+ * one schema, so a caller who passes, say, `onStale: 'rejct'` fails right away
6
+ * with a typed {@link AbloValidationError} at the call site instead of silently
7
+ * or with a 400 from the server.
7
8
  *
8
- * Mirrors `source/contract.ts`: the schema is the runtime twin of the
9
- * `MutationOptions` interface, with a compile-time drift guard at the
10
- * bottom so the two can never silently diverge.
9
+ * The schema is the runtime counterpart of the {@link MutationOptions}
10
+ * interface. A compile-time check at the bottom of this file asserts that the
11
+ * two describe the same shape, so they cannot drift apart.
11
12
  *
12
- * Validation-only by design: callers keep their ORIGINAL options object.
13
- * Zod's parse output strips unknown keys, and the `claim` slot legally
14
- * carries live handles (`ClaimHandle` / claim leases) whose
15
- * `release`/`revoke` functions must survive so we assert, never replace.
13
+ * Validation only inspects; it never transforms. Callers keep the exact options
14
+ * object they passed in. This matters because the `claim` field can hold a live
15
+ * claim handle whose `release` and `revoke` functions must survive, so the code
16
+ * asserts the shape rather than replacing the value with a parsed copy.
16
17
  */
17
18
  import { z } from 'zod';
18
19
  export declare const onStaleModeSchema: z.ZodEnum<{
@@ -40,9 +41,10 @@ export declare const writeOptionsSchema: z.ZodObject<{
40
41
  }, z.core.$strip>;
41
42
  export type WriteOptionsInput = z.infer<typeof writeOptionsSchema>;
42
43
  /**
43
- * Assert a write-options bag against THE schema. Throws a typed
44
- * `AbloValidationError` (`code: 'write_options_invalid'`, Stripe-style
45
- * `param` pointing at the offending field) and returns nothing — the
46
- * caller keeps its original object.
44
+ * Validates a write-options object against {@link writeOptionsSchema}. On
45
+ * failure it throws a typed {@link AbloValidationError} with
46
+ * `code: 'write_options_invalid'` and a `param` pointing at the offending
47
+ * field and on success returns nothing, leaving the caller's original object
48
+ * untouched. A `null` or `undefined` value passes.
47
49
  */
48
50
  export declare function assertWriteOptions(value: unknown, context?: string): void;
@@ -1,24 +1,26 @@
1
1
  /**
2
- * THE write-options schema one Zod schema for the write dialect every
3
- * door speaks (`ablo.<model>.create/update/delete`, `commits.create`, the
4
- * HTTP model routes). Validated once at each public boundary so a plain-JS
5
- * caller passing `onStale: 'rejct'` fails loudly at the call site with a
6
- * typed `AbloValidationError`, not silently (or 400) at the server.
2
+ * The Zod schema for write options the settings accepted by every write
3
+ * entry point, including `ablo.<model>.create/update/delete`, `commits.create`,
4
+ * and the HTTP write routes. Each of those boundaries validates against this
5
+ * one schema, so a caller who passes, say, `onStale: 'rejct'` fails right away
6
+ * with a typed {@link AbloValidationError} at the call site instead of silently
7
+ * or with a 400 from the server.
7
8
  *
8
- * Mirrors `source/contract.ts`: the schema is the runtime twin of the
9
- * `MutationOptions` interface, with a compile-time drift guard at the
10
- * bottom so the two can never silently diverge.
9
+ * The schema is the runtime counterpart of the {@link MutationOptions}
10
+ * interface. A compile-time check at the bottom of this file asserts that the
11
+ * two describe the same shape, so they cannot drift apart.
11
12
  *
12
- * Validation-only by design: callers keep their ORIGINAL options object.
13
- * Zod's parse output strips unknown keys, and the `claim` slot legally
14
- * carries live handles (`ClaimHandle` / claim leases) whose
15
- * `release`/`revoke` functions must survive so we assert, never replace.
13
+ * Validation only inspects; it never transforms. Callers keep the exact options
14
+ * object they passed in. This matters because the `claim` field can hold a live
15
+ * claim handle whose `release` and `revoke` functions must survive, so the code
16
+ * asserts the shape rather than replacing the value with a parsed copy.
16
17
  */
17
18
  import { z } from 'zod';
18
19
  import { AbloValidationError } from '../errors.js';
19
20
  export const onStaleModeSchema = z.enum(['reject', 'overwrite', 'notify']);
20
21
  export const writeOptionsSchema = z.object({
21
- /** Server-side mutation_log cache key; `null` opts out of retry-safety. */
22
+ /** Idempotency key the server records in `mutation_log` to make retries
23
+ * safe; `null` opts out of that protection. */
22
24
  idempotencyKey: z.string().min(1).max(255).nullish(),
23
25
  /** Human-readable audit tag, persisted to `mutation_log.label`. */
24
26
  label: z.string().max(255).optional(),
@@ -28,17 +30,18 @@ export const writeOptionsSchema = z.object({
28
30
  readAt: z.number().int().nonnegative().nullish(),
29
31
  /** What the server does when the target moved past `readAt`. */
30
32
  onStale: onStaleModeSchema.nullish(),
31
- /** Claim/claim attributionan id, or a live lease handle (loose: the
32
- * handle's `release`/`revoke` functions ride along untouched). */
33
+ /** The claim this write belongs to either a claim id, or a live claim
34
+ * handle whose `release`/`revoke` functions are preserved untouched. */
33
35
  claim: z.union([z.string(), z.looseObject({ id: z.string() })]).nullish(),
34
- /** Dormant wire-compat field; always `null` from current clients. */
36
+ /** Reserved wire-compatibility field; current clients always send `null`. */
35
37
  causedByTaskId: z.string().nullish(),
36
38
  });
37
39
  /**
38
- * Assert a write-options bag against THE schema. Throws a typed
39
- * `AbloValidationError` (`code: 'write_options_invalid'`, Stripe-style
40
- * `param` pointing at the offending field) and returns nothing — the
41
- * caller keeps its original object.
40
+ * Validates a write-options object against {@link writeOptionsSchema}. On
41
+ * failure it throws a typed {@link AbloValidationError} with
42
+ * `code: 'write_options_invalid'` and a `param` pointing at the offending
43
+ * field and on success returns nothing, leaving the caller's original object
44
+ * untouched. A `null` or `undefined` value passes.
42
45
  */
43
46
  export function assertWriteOptions(value, context) {
44
47
  if (value == null)
@@ -1,30 +1,25 @@
1
1
  /**
2
- * The default `MutationExecutor` sends `{ type: 'commit', ... }` frames over
3
- * the engine's own WebSocket, resolved lazily at commit time (the WS doesn't
4
- * exist when the executor is constructed).
5
- *
6
- * Extracted from `Ablo.ts`; the factory wires it up with a `getWs` closure
7
- * over the store holder unless the caller supplies its own executor.
2
+ * The default {@link MutationExecutor}. It sends each change as a `commit`
3
+ * frame over the sync engine's own WebSocket, resolving that socket lazily at
4
+ * commit time because it does not exist yet when the executor is created. A
5
+ * client wires this up automatically unless you supply your own executor.
8
6
  */
9
7
  import type { StaleNotification, ReadDependency } from '../coordination/schema.js';
10
8
  import type { MutationExecutor, MutationOperation } from '../interfaces/index.js';
11
9
  /**
12
- * Default mutation executor: sends `{ type: 'commit', payload: ... }` over
13
- * the sync engine's own WebSocket.
10
+ * Creates the default mutation executor, which sends each change as a `commit`
11
+ * frame over the sync engine's own WebSocket. The engine owns its socket, so
12
+ * you pass a URL and credentials rather than transport callbacks.
14
13
  *
15
- * Transport ownership follows the Zero / Liveblocks pattern the engine
16
- * owns its socket end-to-end and the executor is internal. Apps pass URLs
17
- * and auth; they do NOT inject transport callbacks. That's why this
18
- * factory takes a `getWs` closure instead of a full SyncWebSocket: the WS
19
- * doesn't exist when the executor is constructed (it's created later in
20
- * `Ablo` during `BaseSyncedStore` init), so we resolve it
21
- * lazily at commit time. Same trick Zero uses internally — see
22
- * `packages/zero-client/src/client/zero.ts` where `Pusher`/`Puller` are
23
- * constructed before the socket then wired up at connect time.
14
+ * The factory takes a `getWs` accessor instead of a socket directly because the
15
+ * socket is created later during client startup and does not exist yet when
16
+ * this executor is constructed. The accessor is called at commit time to reach
17
+ * the ready socket.
24
18
  *
25
- * `options.idempotencyKey` becomes the wire-level `clientTxId` when set,
26
- * matching Stripe-style retry semantics. Otherwise the SDK generates one.
27
- */
19
+ * When set, `options.idempotencyKey` is sent as the wire-level `clientTxId`, so
20
+ * retrying a call with the same key is safe; otherwise the executor generates
21
+ * one.
22
+ */
28
23
  export declare function createDefaultMutationExecutor(getWs: () => {
29
24
  sendCommit?: (operations: readonly MutationOperation[], clientTxId: string, timeoutMs?: number, causedByTaskId?: string | null, reads?: readonly ReadDependency[] | null) => Promise<{
30
25
  lastSyncId: number;
@@ -1,30 +1,25 @@
1
1
  /**
2
- * The default `MutationExecutor` sends `{ type: 'commit', ... }` frames over
3
- * the engine's own WebSocket, resolved lazily at commit time (the WS doesn't
4
- * exist when the executor is constructed).
5
- *
6
- * Extracted from `Ablo.ts`; the factory wires it up with a `getWs` closure
7
- * over the store holder unless the caller supplies its own executor.
2
+ * The default {@link MutationExecutor}. It sends each change as a `commit`
3
+ * frame over the sync engine's own WebSocket, resolving that socket lazily at
4
+ * commit time because it does not exist yet when the executor is created. A
5
+ * client wires this up automatically unless you supply your own executor.
8
6
  */
9
7
  import { AbloError, AbloConnectionError } from '../errors.js';
10
8
  // ── Default mutation executor (wire: `commit` frame over WebSocket) ──────
11
9
  /**
12
- * Default mutation executor: sends `{ type: 'commit', payload: ... }` over
13
- * the sync engine's own WebSocket.
10
+ * Creates the default mutation executor, which sends each change as a `commit`
11
+ * frame over the sync engine's own WebSocket. The engine owns its socket, so
12
+ * you pass a URL and credentials rather than transport callbacks.
14
13
  *
15
- * Transport ownership follows the Zero / Liveblocks pattern the engine
16
- * owns its socket end-to-end and the executor is internal. Apps pass URLs
17
- * and auth; they do NOT inject transport callbacks. That's why this
18
- * factory takes a `getWs` closure instead of a full SyncWebSocket: the WS
19
- * doesn't exist when the executor is constructed (it's created later in
20
- * `Ablo` during `BaseSyncedStore` init), so we resolve it
21
- * lazily at commit time. Same trick Zero uses internally — see
22
- * `packages/zero-client/src/client/zero.ts` where `Pusher`/`Puller` are
23
- * constructed before the socket then wired up at connect time.
14
+ * The factory takes a `getWs` accessor instead of a socket directly because the
15
+ * socket is created later during client startup and does not exist yet when
16
+ * this executor is constructed. The accessor is called at commit time to reach
17
+ * the ready socket.
24
18
  *
25
- * `options.idempotencyKey` becomes the wire-level `clientTxId` when set,
26
- * matching Stripe-style retry semantics. Otherwise the SDK generates one.
27
- */
19
+ * When set, `options.idempotencyKey` is sent as the wire-level `clientTxId`, so
20
+ * retrying a call with the same key is safe; otherwise the executor generates
21
+ * one.
22
+ */
28
23
  export function createDefaultMutationExecutor(getWs) {
29
24
  async function commit(operations, options) {
30
25
  const ws = getWs();
@@ -41,9 +36,8 @@ export function createDefaultMutationExecutor(getWs) {
41
36
  options?.causedByTaskId, options?.reads);
42
37
  }
43
38
  catch (err) {
44
- // Wrap transport-level failures as connection errors so the
45
- // TransactionQueue's retry classifier treats them as transient
46
- // (matches the old HTTP path's network-error handling).
39
+ // Wrap transport-level failures as connection errors so the transaction
40
+ // queue's retry classifier treats them as transient and retries them.
47
41
  if (err instanceof AbloError)
48
42
  throw err;
49
43
  if (err instanceof Error) {
package/dist/context.d.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  /**
2
- * Module-level context accessor
2
+ * Module-level accessor for the sync engine's shared context.
3
3
  *
4
- * Set once during SDK initialization via `initSyncEngine(context)`.
5
- * All internal SDK files access dependencies through `getContext()`.
6
- * This avoids threading context through every constructor.
4
+ * The context is set once, during initialization, by {@link initSyncEngine}.
5
+ * Code throughout the package reaches its shared dependencies logger,
6
+ * observability, online-status detector, configuration, and the mutation
7
+ * executor — through {@link getContext} instead of receiving them through every
8
+ * constructor.
7
9
  */
8
10
  import type { SyncEngineContext } from './SyncEngineContext.js';
9
11
  /**
package/dist/context.js CHANGED
@@ -1,9 +1,11 @@
1
1
  /**
2
- * Module-level context accessor
2
+ * Module-level accessor for the sync engine's shared context.
3
3
  *
4
- * Set once during SDK initialization via `initSyncEngine(context)`.
5
- * All internal SDK files access dependencies through `getContext()`.
6
- * This avoids threading context through every constructor.
4
+ * The context is set once, during initialization, by {@link initSyncEngine}.
5
+ * Code throughout the package reaches its shared dependencies logger,
6
+ * observability, online-status detector, configuration, and the mutation
7
+ * executor — through {@link getContext} instead of receiving them through every
8
+ * constructor.
7
9
  */
8
10
  import { noopLogger, noopObservability, browserOnlineStatus, defaultSessionErrorDetector, emptyConfig, } from './SyncEngineContext.js';
9
11
  let _context = null;
@@ -1,13 +1,15 @@
1
1
  /**
2
- * `@abloatai/ablo/coordination` the canonical wire schema for the three
3
- * coordination layers (presence, pessimistic claims, optimistic stale-context).
4
- * See `./schema.ts` for the model and the per-layer schemas.
2
+ * The `@abloatai/ablo/coordination` entry point. It re-exports the wire
3
+ * schemas and inferred types for the three coordination layers: presence (who
4
+ * is currently active), claims (taking exclusive hold of a target before
5
+ * writing it), and stale-context guards (rejecting a write that was based on an
6
+ * out-of-date read). The definitions themselves live in the sibling schema
7
+ * module.
5
8
  *
6
- * Explicit named list (not `export *`): every addition to schema.ts must be a
7
- * deliberate export decision here, so new symbols don't silently become public
8
- * API of the published package.
9
+ * Exports are listed by name rather than re-exported wholesale, so every symbol
10
+ * that becomes part of this package's public API is a deliberate choice.
9
11
  */
10
- export { targetRangeSchema, participantKindSchema, wireParticipantKindSchema, participantKindFromWire, descriptionFromMeta, targetRefSchema, onStaleModeSchema, writeGuardSchema, staleNotificationSchema, readDependencySchema, claimStatusSchema, wireClaimSummarySchema, claimErrorSchema, wireClaimSchema, claimRejectionSchema, modelTargetSchema, modelClaimSchema, claimBeginPayloadSchema, claimAbandonPayloadSchema, claimReorderPayloadSchema, updateSubscriptionPayloadSchema, subscriptionAckPayloadSchema, commitOperationTypeSchema, commitOperationSchema, presenceKindSchema, presenceActivitySchema, presenceUpdateFrameSchema, } from './schema.js';
12
+ export { targetRangeSchema, participantKindSchema, wireParticipantKindSchema, participantKindFromWire, descriptionFromMeta, targetRefSchema, onStaleModeSchema, writeGuardSchema, staleNotificationSchema, readDependencySchema, claimStatusSchema, wireClaimSummarySchema, claimErrorSchema, wireClaimSchema, claimRejectionSchema, modelTargetSchema, modelClaimSchema, claimBeginPayloadSchema, claimAbandonPayloadSchema, claimReorderPayloadSchema, claimHeartbeatPayloadSchema, claimHeartbeatAckPayloadSchema, claimHeartbeatBatchPayloadSchema, claimHeartbeatBatchAckPayloadSchema, updateSubscriptionPayloadSchema, subscriptionAckPayloadSchema, commitOperationTypeSchema, commitOperationSchema, presenceKindSchema, presenceActivitySchema, presenceUpdateFrameSchema, } from './schema.js';
11
13
  export { defaultPolicy, capabilityPreemptPolicy, interpretConflictAxis } from '../policy/types.js';
12
14
  export type { Conflict, ConflictAxis, ConflictDecision, ConflictKind, ConflictOperation, ConflictPolicy, StaleContextConflict, ClaimHeldConflict, } from '../policy/types.js';
13
- export type { TargetRange, ParticipantKind, TargetRef, OnStaleMode, WriteGuard, StaleNotification, ReadDependency, ClaimStatus, WireClaimSummary, ClaimError, WireClaim, ClaimRejection, ModelTarget, ModelClaim, ClaimBeginPayload, ClaimAbandonPayload, ClaimReorderPayload, UpdateSubscriptionPayload, SubscriptionAckPayload, CommitOperationType, CommitOperation, AnyCommitOperation, PresenceKind, PresenceActivity, PresenceUpdateFrame, } from './schema.js';
15
+ export type { TargetRange, ParticipantKind, TargetRef, OnStaleMode, WriteGuard, StaleNotification, ReadDependency, ClaimStatus, WireClaimSummary, ClaimError, WireClaim, ClaimRejection, ModelTarget, ModelClaim, ClaimBeginPayload, ClaimAbandonPayload, ClaimReorderPayload, ClaimHeartbeatPayload, ClaimHeartbeatAckPayload, ClaimHeartbeatBatchPayload, ClaimHeartbeatBatchAckPayload, UpdateSubscriptionPayload, SubscriptionAckPayload, CommitOperationType, CommitOperation, AnyCommitOperation, PresenceKind, PresenceActivity, PresenceUpdateFrame, } from './schema.js';
@@ -1,11 +1,13 @@
1
1
  /**
2
- * `@abloatai/ablo/coordination` the canonical wire schema for the three
3
- * coordination layers (presence, pessimistic claims, optimistic stale-context).
4
- * See `./schema.ts` for the model and the per-layer schemas.
2
+ * The `@abloatai/ablo/coordination` entry point. It re-exports the wire
3
+ * schemas and inferred types for the three coordination layers: presence (who
4
+ * is currently active), claims (taking exclusive hold of a target before
5
+ * writing it), and stale-context guards (rejecting a write that was based on an
6
+ * out-of-date read). The definitions themselves live in the sibling schema
7
+ * module.
5
8
  *
6
- * Explicit named list (not `export *`): every addition to schema.ts must be a
7
- * deliberate export decision here, so new symbols don't silently become public
8
- * API of the published package.
9
+ * Exports are listed by name rather than re-exported wholesale, so every symbol
10
+ * that becomes part of this package's public API is a deliberate choice.
9
11
  */
10
12
  // Runtime schemas + helpers.
11
13
  export {
@@ -14,16 +16,16 @@ targetRangeSchema, participantKindSchema, wireParticipantKindSchema, participant
14
16
  // Layer 3 — optimistic stale-context
15
17
  onStaleModeSchema, writeGuardSchema, staleNotificationSchema, readDependencySchema,
16
18
  // Layer 2 — pessimistic claim / claim-lease
17
- claimStatusSchema, wireClaimSummarySchema, claimErrorSchema, wireClaimSchema, claimRejectionSchema, modelTargetSchema, modelClaimSchema, claimBeginPayloadSchema, claimAbandonPayloadSchema, claimReorderPayloadSchema,
19
+ claimStatusSchema, wireClaimSummarySchema, claimErrorSchema, wireClaimSchema, claimRejectionSchema, modelTargetSchema, modelClaimSchema, claimBeginPayloadSchema, claimAbandonPayloadSchema, claimReorderPayloadSchema, claimHeartbeatPayloadSchema, claimHeartbeatAckPayloadSchema, claimHeartbeatBatchPayloadSchema, claimHeartbeatBatchAckPayloadSchema,
18
20
  // Read interest — area-of-interest navigation
19
21
  updateSubscriptionPayloadSchema, subscriptionAckPayloadSchema,
20
22
  // Commit operation — carries the optimistic write-guard
21
23
  commitOperationTypeSchema, commitOperationSchema,
22
24
  // Layer 1 — presence
23
25
  presenceKindSchema, presenceActivitySchema, presenceUpdateFrameSchema, } from './schema.js';
24
- // Conflict-policy runtime — the engine detects, the policy decides. Lives in
25
- // `../policy/types.js` (a dependency-free leaf: its only imports are types),
26
- // exported here so a server-side consumer reaches the coordination vocabulary
27
- // AND its default resolution through one leaf subpath instead of the root
28
- // barrel (which would evaluate the whole browser client stack in Node).
26
+ // Conflict-policy runtime — the engine detects a conflict, and the policy
27
+ // decides what to do about it. These are re-exported here so that server-side
28
+ // code can reach both the coordination vocabulary and its default conflict
29
+ // resolution from this one subpath, without importing the full client from the
30
+ // package root.
29
31
  export { defaultPolicy, capabilityPreemptPolicy, interpretConflictAxis } from '../policy/types.js';