@abloatai/ablo 0.25.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 (425) hide show
  1. package/AGENTS.md +5 -3
  2. package/CHANGELOG.md +34 -0
  3. package/README.md +104 -88
  4. package/dist/BaseSyncedStore.d.ts +140 -266
  5. package/dist/BaseSyncedStore.js +338 -739
  6. package/dist/Database.d.ts +62 -77
  7. package/dist/Database.js +106 -127
  8. package/dist/{ObjectPool.d.ts → InstanceCache.d.ts} +10 -13
  9. package/dist/{ObjectPool.js → InstanceCache.js} +91 -83
  10. package/dist/LazyReferenceCollection.d.ts +11 -15
  11. package/dist/LazyReferenceCollection.js +16 -15
  12. package/dist/Model.d.ts +37 -52
  13. package/dist/Model.js +52 -69
  14. package/dist/ModelRegistry.d.ts +46 -25
  15. package/dist/ModelRegistry.js +32 -30
  16. package/dist/NetworkMonitor.d.ts +5 -6
  17. package/dist/NetworkMonitor.js +6 -7
  18. package/dist/SyncClient.d.ts +119 -109
  19. package/dist/SyncClient.js +303 -224
  20. package/dist/SyncEngineContext.d.ts +1 -3
  21. package/dist/SyncEngineContext.js +1 -2
  22. package/dist/adapters/alwaysOnline.d.ts +6 -8
  23. package/dist/adapters/alwaysOnline.js +6 -8
  24. package/dist/adapters/inMemoryStorage.d.ts +9 -9
  25. package/dist/adapters/inMemoryStorage.js +9 -9
  26. package/dist/agent/Agent.d.ts +39 -31
  27. package/dist/agent/Agent.js +35 -23
  28. package/dist/agent/index.d.ts +4 -4
  29. package/dist/agent/index.js +5 -5
  30. package/dist/agent/session.d.ts +47 -44
  31. package/dist/agent/session.js +37 -48
  32. package/dist/agent/types.d.ts +26 -31
  33. package/dist/agent/types.js +6 -7
  34. package/dist/ai-sdk/coordinatedTool.d.ts +108 -0
  35. package/dist/ai-sdk/{coordinated-tool.js → coordinatedTool.js} +44 -38
  36. package/dist/ai-sdk/coordinationContext.d.ts +46 -0
  37. package/dist/ai-sdk/{coordination-context.js → coordinationContext.js} +30 -31
  38. package/dist/ai-sdk/index.d.ts +25 -22
  39. package/dist/ai-sdk/index.js +25 -22
  40. package/dist/ai-sdk/wrap.d.ts +7 -8
  41. package/dist/ai-sdk/wrap.js +2 -2
  42. package/dist/auth/credentialPolicy.d.ts +74 -71
  43. package/dist/auth/credentialPolicy.js +51 -56
  44. package/dist/auth/credentialSource.d.ts +7 -18
  45. package/dist/auth/credentialSource.js +10 -18
  46. package/dist/auth/index.d.ts +59 -58
  47. package/dist/auth/index.js +34 -40
  48. package/dist/auth/schemas.d.ts +5 -4
  49. package/dist/auth/schemas.js +5 -4
  50. package/dist/batching/index.d.ts +19 -21
  51. package/dist/batching/index.js +14 -17
  52. package/dist/cli.cjs +483 -369
  53. package/dist/client/Ablo.d.ts +107 -836
  54. package/dist/client/Ablo.js +174 -833
  55. package/dist/client/ApiClient.d.ts +44 -20
  56. package/dist/client/ApiClient.js +193 -44
  57. package/dist/client/auth.d.ts +51 -60
  58. package/dist/client/auth.js +137 -110
  59. package/dist/client/claimHeartbeatLoop.d.ts +50 -0
  60. package/dist/client/claimHeartbeatLoop.js +88 -0
  61. package/dist/client/consoleLogger.d.ts +35 -0
  62. package/dist/client/consoleLogger.js +44 -0
  63. package/dist/client/createInternalComponents.d.ts +14 -17
  64. package/dist/client/createInternalComponents.js +26 -31
  65. package/dist/client/createModelProxy.d.ts +130 -120
  66. package/dist/client/createModelProxy.js +158 -124
  67. package/dist/client/credentialEndpoint.d.ts +61 -0
  68. package/dist/client/credentialEndpoint.js +86 -0
  69. package/dist/client/functionalUpdate.d.ts +29 -27
  70. package/dist/client/functionalUpdate.js +21 -21
  71. package/dist/client/hostedEndpoints.d.ts +21 -0
  72. package/dist/client/hostedEndpoints.js +21 -0
  73. package/dist/client/httpClient.d.ts +58 -54
  74. package/dist/client/httpClient.js +29 -31
  75. package/dist/client/identity.d.ts +15 -20
  76. package/dist/client/identity.js +49 -59
  77. package/dist/client/modelRegistration.d.ts +10 -0
  78. package/dist/client/modelRegistration.js +301 -0
  79. package/dist/client/options.d.ts +373 -0
  80. package/dist/client/options.js +6 -0
  81. package/dist/client/registerDataSource.d.ts +9 -9
  82. package/dist/client/registerDataSource.js +15 -16
  83. package/dist/client/resourceTypes.d.ts +333 -0
  84. package/dist/client/resourceTypes.js +7 -0
  85. package/dist/client/schemaConfig.d.ts +44 -0
  86. package/dist/client/schemaConfig.js +176 -0
  87. package/dist/client/sessionMint.d.ts +17 -13
  88. package/dist/client/sessionMint.js +26 -31
  89. package/dist/client/validateAbloOptions.d.ts +12 -14
  90. package/dist/client/validateAbloOptions.js +9 -10
  91. package/dist/client/writeOptionsSchema.d.ts +18 -16
  92. package/dist/client/writeOptionsSchema.js +23 -20
  93. package/dist/client/wsMutationExecutor.d.ts +28 -0
  94. package/dist/client/wsMutationExecutor.js +71 -0
  95. package/dist/context.d.ts +6 -4
  96. package/dist/context.js +6 -7
  97. package/dist/coordination/index.d.ts +13 -4
  98. package/dist/coordination/index.js +29 -4
  99. package/dist/coordination/schema.d.ts +176 -128
  100. package/dist/coordination/schema.js +197 -133
  101. package/dist/coordination/trace.d.ts +9 -11
  102. package/dist/coordination/trace.js +13 -15
  103. package/dist/core/DatabaseManager.d.ts +5 -8
  104. package/dist/core/DatabaseManager.js +38 -40
  105. package/dist/core/QueryProcessor.d.ts +7 -9
  106. package/dist/core/QueryProcessor.js +27 -34
  107. package/dist/core/QueryView.d.ts +17 -5
  108. package/dist/core/QueryView.js +6 -7
  109. package/dist/core/StoreManager.d.ts +14 -16
  110. package/dist/core/StoreManager.js +26 -25
  111. package/dist/core/ViewRegistry.d.ts +5 -5
  112. package/dist/core/ViewRegistry.js +4 -4
  113. package/dist/core/index.d.ts +18 -13
  114. package/dist/core/index.js +32 -26
  115. package/dist/core/openIDBWithTimeout.d.ts +38 -36
  116. package/dist/core/openIDBWithTimeout.js +57 -54
  117. package/dist/core/queryUtils.d.ts +45 -0
  118. package/dist/core/queryUtils.js +69 -0
  119. package/dist/core/storeContract.d.ts +145 -0
  120. package/dist/core/storeContract.js +12 -0
  121. package/dist/environment.d.ts +28 -0
  122. package/dist/environment.js +21 -0
  123. package/dist/errorCodes.d.ts +118 -101
  124. package/dist/errorCodes.js +277 -260
  125. package/dist/errors.d.ts +170 -165
  126. package/dist/errors.js +161 -151
  127. package/dist/index.d.ts +30 -27
  128. package/dist/index.js +90 -82
  129. package/dist/interfaces/index.d.ts +108 -133
  130. package/dist/interfaces/index.js +5 -4
  131. package/dist/keys/index.d.ts +27 -29
  132. package/dist/keys/index.js +59 -49
  133. package/dist/mutators/RecordingTransaction.d.ts +16 -16
  134. package/dist/mutators/RecordingTransaction.js +31 -37
  135. package/dist/mutators/Transaction.d.ts +18 -26
  136. package/dist/mutators/Transaction.js +14 -20
  137. package/dist/mutators/UndoManager.d.ts +122 -131
  138. package/dist/mutators/UndoManager.js +149 -155
  139. package/dist/mutators/defineMutators.d.ts +24 -37
  140. package/dist/mutators/defineMutators.js +14 -20
  141. package/dist/mutators/inverseOp.d.ts +12 -15
  142. package/dist/mutators/inverseOp.js +12 -15
  143. package/dist/mutators/mutateActions.d.ts +10 -9
  144. package/dist/mutators/mutateActions.js +1 -1
  145. package/dist/mutators/readerActions.d.ts +9 -8
  146. package/dist/mutators/readerActions.js +2 -2
  147. package/dist/mutators/undoApply.d.ts +31 -27
  148. package/dist/mutators/undoApply.js +26 -24
  149. package/dist/policy/index.d.ts +5 -3
  150. package/dist/policy/index.js +5 -3
  151. package/dist/policy/types.d.ts +105 -101
  152. package/dist/policy/types.js +67 -66
  153. package/dist/query/client.d.ts +32 -16
  154. package/dist/query/client.js +103 -72
  155. package/dist/query/types.d.ts +37 -60
  156. package/dist/query/types.js +13 -33
  157. package/dist/react/AbloProvider.d.ts +7 -11
  158. package/dist/react/AbloProvider.js +24 -17
  159. package/dist/react/context.d.ts +27 -146
  160. package/dist/react/context.js +9 -10
  161. package/dist/react/index.d.ts +41 -42
  162. package/dist/react/index.js +37 -38
  163. package/dist/react/internalContext.d.ts +17 -19
  164. package/dist/react/useAblo.d.ts +23 -22
  165. package/dist/react/useAblo.js +17 -15
  166. package/dist/react/useCurrentUserId.d.ts +8 -7
  167. package/dist/react/useCurrentUserId.js +8 -7
  168. package/dist/react/useErrorListener.d.ts +7 -7
  169. package/dist/react/useErrorListener.js +11 -12
  170. package/dist/react/useMutationFailureListener.d.ts +8 -8
  171. package/dist/react/useMutationFailureListener.js +9 -9
  172. package/dist/react/useMutators.d.ts +11 -11
  173. package/dist/react/useMutators.js +10 -4
  174. package/dist/react/useReactive.js +2 -3
  175. package/dist/react/useSyncStatus.d.ts +4 -6
  176. package/dist/react/useUndoScope.d.ts +7 -9
  177. package/dist/react/useUndoScope.js +3 -3
  178. package/dist/schema/coordination.d.ts +21 -25
  179. package/dist/schema/coordination.js +21 -25
  180. package/dist/schema/ddl.d.ts +43 -39
  181. package/dist/schema/ddl.js +75 -68
  182. package/dist/schema/ddlLock.d.ts +35 -0
  183. package/dist/schema/ddlLock.js +46 -0
  184. package/dist/schema/diff.d.ts +99 -61
  185. package/dist/schema/diff.js +43 -34
  186. package/dist/schema/field.d.ts +37 -42
  187. package/dist/schema/field.js +36 -49
  188. package/dist/schema/generate.d.ts +12 -12
  189. package/dist/schema/generate.js +12 -12
  190. package/dist/schema/index.d.ts +5 -4
  191. package/dist/schema/index.js +29 -21
  192. package/dist/schema/model.d.ts +121 -146
  193. package/dist/schema/model.js +24 -35
  194. package/dist/schema/openapi.d.ts +10 -9
  195. package/dist/schema/openapi.js +7 -1
  196. package/dist/schema/queries.d.ts +30 -32
  197. package/dist/schema/queries.js +24 -25
  198. package/dist/schema/relation.d.ts +89 -99
  199. package/dist/schema/relation.js +13 -13
  200. package/dist/schema/residency.d.ts +38 -0
  201. package/dist/schema/residency.js +30 -0
  202. package/dist/schema/roles.d.ts +45 -27
  203. package/dist/schema/roles.js +52 -21
  204. package/dist/schema/schema.d.ts +36 -45
  205. package/dist/schema/schema.js +42 -39
  206. package/dist/schema/select.d.ts +13 -13
  207. package/dist/schema/select.js +13 -13
  208. package/dist/schema/serialize.d.ts +36 -39
  209. package/dist/schema/serialize.js +27 -31
  210. package/dist/schema/sugar.d.ts +17 -32
  211. package/dist/schema/sugar.js +14 -29
  212. package/dist/schema/{sync-delta-row.d.ts → syncDeltaRow.d.ts} +27 -50
  213. package/dist/schema/syncDeltaRow.js +89 -0
  214. package/dist/schema/tenancy.d.ts +44 -46
  215. package/dist/schema/tenancy.js +46 -48
  216. package/dist/server/adapter.d.ts +58 -58
  217. package/dist/server/adapter.js +13 -14
  218. package/dist/server/commit.d.ts +60 -64
  219. package/dist/server/index.d.ts +9 -10
  220. package/dist/server/index.js +1 -1
  221. package/dist/server/readConfig.d.ts +70 -0
  222. package/dist/server/readConfig.js +8 -0
  223. package/dist/server/storageMode.d.ts +23 -0
  224. package/dist/server/storageMode.js +17 -0
  225. package/dist/source/adapter.d.ts +31 -26
  226. package/dist/source/adapter.js +10 -10
  227. package/dist/source/adapters/drizzle.d.ts +28 -23
  228. package/dist/source/adapters/drizzle.js +34 -28
  229. package/dist/source/adapters/kysely.d.ts +27 -25
  230. package/dist/source/adapters/kysely.js +28 -26
  231. package/dist/source/adapters/memory.d.ts +8 -7
  232. package/dist/source/adapters/memory.js +10 -9
  233. package/dist/source/adapters/prisma.d.ts +13 -12
  234. package/dist/source/adapters/prisma.js +27 -29
  235. package/dist/source/conformance.d.ts +18 -11
  236. package/dist/source/conformance.js +27 -19
  237. package/dist/source/connector.d.ts +31 -32
  238. package/dist/source/connector.js +30 -28
  239. package/dist/source/connectorProtocol.d.ts +160 -0
  240. package/dist/source/connectorProtocol.js +162 -0
  241. package/dist/source/contract.d.ts +26 -27
  242. package/dist/source/contract.js +28 -29
  243. package/dist/source/factory.d.ts +94 -0
  244. package/dist/source/factory.js +268 -0
  245. package/dist/source/index.d.ts +10 -462
  246. package/dist/source/index.js +17 -421
  247. package/dist/source/migrations.d.ts +9 -9
  248. package/dist/source/migrations.js +9 -9
  249. package/dist/source/next.d.ts +10 -11
  250. package/dist/source/next.js +7 -8
  251. package/dist/source/pushQueue.d.ts +70 -48
  252. package/dist/source/pushQueue.js +36 -29
  253. package/dist/source/signing.d.ts +88 -0
  254. package/dist/source/signing.js +159 -0
  255. package/dist/source/types.d.ts +351 -0
  256. package/dist/source/types.js +43 -0
  257. package/dist/stores/ObjectStore.d.ts +11 -12
  258. package/dist/stores/ObjectStore.js +34 -35
  259. package/dist/stores/ObjectStoreContract.d.ts +12 -15
  260. package/dist/stores/SyncActionStore.d.ts +8 -12
  261. package/dist/stores/SyncActionStore.js +77 -46
  262. package/dist/surface.d.ts +28 -21
  263. package/dist/surface.js +28 -20
  264. package/dist/sync/{BootstrapHelper.d.ts → BootstrapFetcher.d.ts} +37 -45
  265. package/dist/sync/{BootstrapHelper.js → BootstrapFetcher.js} +101 -80
  266. package/dist/sync/ConnectionManager.d.ts +47 -50
  267. package/dist/sync/ConnectionManager.js +74 -70
  268. package/dist/sync/NetworkProbe.d.ts +27 -31
  269. package/dist/sync/NetworkProbe.js +67 -72
  270. package/dist/sync/{HydrationCoordinator.d.ts → OnDemandLoader.d.ts} +49 -36
  271. package/dist/sync/{HydrationCoordinator.js → OnDemandLoader.js} +79 -54
  272. package/dist/sync/{AreaOfInterestManager.d.ts → SubscriptionManager.d.ts} +45 -59
  273. package/dist/sync/{AreaOfInterestManager.js → SubscriptionManager.js} +44 -52
  274. package/dist/sync/SyncWebSocket.d.ts +175 -250
  275. package/dist/sync/SyncWebSocket.js +431 -769
  276. package/dist/sync/awaitClaimGrant.d.ts +18 -18
  277. package/dist/sync/awaitClaimGrant.js +38 -30
  278. package/dist/sync/bootstrapApply.d.ts +70 -0
  279. package/dist/sync/bootstrapApply.js +73 -0
  280. package/dist/sync/commitFrames.d.ts +44 -0
  281. package/dist/sync/commitFrames.js +94 -0
  282. package/dist/sync/createClaimStream.d.ts +23 -22
  283. package/dist/sync/createClaimStream.js +108 -25
  284. package/dist/sync/createPresenceStream.d.ts +19 -18
  285. package/dist/sync/createPresenceStream.js +25 -26
  286. package/dist/sync/createSnapshot.d.ts +13 -17
  287. package/dist/sync/createSnapshot.js +20 -26
  288. package/dist/sync/credentialLifecycle.d.ts +175 -0
  289. package/dist/sync/credentialLifecycle.js +322 -0
  290. package/dist/sync/deltaPipeline.d.ts +113 -0
  291. package/dist/sync/deltaPipeline.js +261 -0
  292. package/dist/sync/groupChange.d.ts +113 -0
  293. package/dist/sync/groupChange.js +242 -0
  294. package/dist/sync/heartbeat.d.ts +63 -0
  295. package/dist/sync/heartbeat.js +91 -0
  296. package/dist/sync/participants.d.ts +27 -27
  297. package/dist/sync/schemas.d.ts +3 -2
  298. package/dist/sync/schemas.js +14 -10
  299. package/dist/sync/syncCursor.d.ts +40 -0
  300. package/dist/sync/syncCursor.js +55 -0
  301. package/dist/sync/syncPlan.d.ts +54 -0
  302. package/dist/sync/syncPlan.js +50 -0
  303. package/dist/sync/syncPosition.d.ts +54 -49
  304. package/dist/sync/syncPosition.js +57 -52
  305. package/dist/sync/wsFrameHandlers.d.ts +116 -0
  306. package/dist/sync/wsFrameHandlers.js +374 -0
  307. package/dist/testing/fixtures/bootstrap.d.ts +21 -17
  308. package/dist/testing/fixtures/bootstrap.js +12 -6
  309. package/dist/testing/fixtures/deltas.d.ts +31 -34
  310. package/dist/testing/fixtures/deltas.js +30 -33
  311. package/dist/testing/fixtures/models.d.ts +11 -10
  312. package/dist/testing/fixtures/models.js +12 -10
  313. package/dist/testing/helpers/{react-wrapper.d.ts → reactWrapper.d.ts} +13 -10
  314. package/dist/testing/helpers/{react-wrapper.js → reactWrapper.js} +15 -12
  315. package/dist/testing/helpers/{sync-engine-harness.d.ts → syncEngineHarness.d.ts} +17 -18
  316. package/dist/testing/helpers/{sync-engine-harness.js → syncEngineHarness.js} +14 -11
  317. package/dist/testing/helpers/wait.d.ts +13 -8
  318. package/dist/testing/helpers/wait.js +13 -8
  319. package/dist/testing/index.d.ts +4 -4
  320. package/dist/testing/index.js +3 -3
  321. package/dist/testing/mocks/MockMutationExecutor.d.ts +18 -17
  322. package/dist/testing/mocks/MockMutationExecutor.js +15 -14
  323. package/dist/testing/mocks/MockNetworkMonitor.d.ts +8 -8
  324. package/dist/testing/mocks/MockNetworkMonitor.js +8 -8
  325. package/dist/testing/mocks/MockSyncContext.d.ts +21 -34
  326. package/dist/testing/mocks/MockSyncContext.js +16 -45
  327. package/dist/testing/mocks/MockSyncStore.d.ts +14 -14
  328. package/dist/testing/mocks/MockSyncStore.js +11 -11
  329. package/dist/testing/mocks/MockWebSocket.d.ts +28 -24
  330. package/dist/testing/mocks/MockWebSocket.js +22 -21
  331. package/dist/transactions/TransactionQueue.d.ts +190 -221
  332. package/dist/transactions/TransactionQueue.js +424 -822
  333. package/dist/transactions/TransactionStore.d.ts +20 -0
  334. package/dist/transactions/TransactionStore.js +53 -0
  335. package/dist/transactions/UnconfirmedWrites.d.ts +82 -0
  336. package/dist/transactions/UnconfirmedWrites.js +104 -0
  337. package/dist/transactions/coalesceRules.d.ts +58 -0
  338. package/dist/transactions/coalesceRules.js +140 -0
  339. package/dist/transactions/commitPayload.d.ts +130 -0
  340. package/dist/transactions/commitPayload.js +143 -0
  341. package/dist/transactions/deltaConfirmation.d.ts +58 -0
  342. package/dist/transactions/deltaConfirmation.js +215 -0
  343. package/dist/transactions/optimisticApply.d.ts +49 -0
  344. package/dist/transactions/optimisticApply.js +65 -0
  345. package/dist/transactions/replayValidation.d.ts +99 -0
  346. package/dist/transactions/replayValidation.js +111 -0
  347. package/dist/types/global.d.ts +46 -41
  348. package/dist/types/global.js +20 -19
  349. package/dist/types/index.d.ts +74 -80
  350. package/dist/types/index.js +22 -27
  351. package/dist/types/modelData.d.ts +10 -0
  352. package/dist/types/modelData.js +9 -0
  353. package/dist/types/participant.d.ts +20 -0
  354. package/dist/types/participant.js +10 -0
  355. package/dist/types/streams.d.ts +216 -209
  356. package/dist/types/streams.js +7 -7
  357. package/dist/utils/asyncIterator.d.ts +25 -32
  358. package/dist/utils/asyncIterator.js +25 -32
  359. package/dist/utils/duration.d.ts +12 -15
  360. package/dist/utils/duration.js +12 -15
  361. package/dist/utils/mobxSetup.d.ts +53 -0
  362. package/dist/utils/{mobx-setup.js → mobxSetup.js} +44 -100
  363. package/dist/webhooks/events.d.ts +21 -16
  364. package/dist/webhooks/events.js +10 -8
  365. package/dist/webhooks/index.d.ts +5 -7
  366. package/dist/webhooks/index.js +5 -7
  367. package/dist/{schema/sync-delta-wire.d.ts → wire/delta.d.ts} +58 -41
  368. package/dist/wire/delta.js +114 -0
  369. package/dist/wire/errorEnvelope.d.ts +35 -27
  370. package/dist/wire/errorEnvelope.js +38 -32
  371. package/dist/wire/frames.d.ts +150 -67
  372. package/dist/wire/frames.js +48 -1
  373. package/dist/wire/index.d.ts +18 -13
  374. package/dist/wire/index.js +36 -13
  375. package/dist/wire/listEnvelope.d.ts +16 -23
  376. package/dist/wire/listEnvelope.js +7 -6
  377. package/dist/wire/protocol.d.ts +38 -0
  378. package/dist/wire/protocol.js +38 -0
  379. package/dist/wire/protocolVersion.d.ts +60 -0
  380. package/dist/wire/protocolVersion.js +67 -0
  381. package/docs/api-keys.md +4 -3
  382. package/docs/coordination.md +59 -0
  383. package/docs/examples/existing-python-backend.md +3 -3
  384. package/docs/identity.md +4 -4
  385. package/docs/integration-guide.md +1 -1
  386. package/docs/react.md +1 -1
  387. package/docs/sessions.md +5 -7
  388. package/package.json +24 -21
  389. package/dist/ai-sdk/coordinated-tool.d.ts +0 -101
  390. package/dist/ai-sdk/coordination-context.d.ts +0 -52
  391. package/dist/client/index.d.ts +0 -36
  392. package/dist/client/index.js +0 -33
  393. package/dist/config/index.d.ts +0 -10
  394. package/dist/config/index.js +0 -12
  395. package/dist/core/query-utils.d.ts +0 -34
  396. package/dist/core/query-utils.js +0 -59
  397. package/dist/interfaces/headless.d.ts +0 -95
  398. package/dist/interfaces/headless.js +0 -41
  399. package/dist/query/index.d.ts +0 -6
  400. package/dist/query/index.js +0 -5
  401. package/dist/realtime/index.d.ts +0 -10
  402. package/dist/realtime/index.js +0 -9
  403. package/dist/schema/plane.d.ts +0 -23
  404. package/dist/schema/plane.js +0 -19
  405. package/dist/schema/sync-delta-row.js +0 -103
  406. package/dist/schema/sync-delta-wire.js +0 -102
  407. package/dist/server/next.d.ts +0 -51
  408. package/dist/server/next.js +0 -47
  409. package/dist/server/read-config.d.ts +0 -67
  410. package/dist/server/read-config.js +0 -8
  411. package/dist/server/storage-mode.d.ts +0 -1
  412. package/dist/server/storage-mode.js +0 -18
  413. package/dist/source/connector-protocol.d.ts +0 -159
  414. package/dist/source/connector-protocol.js +0 -161
  415. package/dist/sync/OfflineFlush.d.ts +0 -9
  416. package/dist/sync/OfflineFlush.js +0 -22
  417. package/dist/sync/OfflineTransactionStore.d.ts +0 -37
  418. package/dist/sync/OfflineTransactionStore.js +0 -263
  419. package/dist/transactions/OptimisticEchoTracker.d.ts +0 -82
  420. package/dist/transactions/OptimisticEchoTracker.js +0 -104
  421. package/dist/transactions/index.d.ts +0 -16
  422. package/dist/transactions/index.js +0 -7
  423. package/dist/transactions/mutation-error-handler.d.ts +0 -5
  424. package/dist/transactions/mutation-error-handler.js +0 -39
  425. package/dist/utils/mobx-setup.d.ts +0 -42
@@ -1,37 +1,32 @@
1
1
  /**
2
- * `mintSession` the ONE implementation behind `sessions.create`, shared by the
3
- * stateful `Ablo` client and the stateless protocol / HTTP client so the two can
4
- * never drift on HOW a token is minted.
2
+ * Mints a session token. This is the single implementation behind
3
+ * `sessions.create`, shared by the schema-aware client and the schemaless HTTP
4
+ * client so the two never disagree on how a token is produced.
5
5
  *
6
- * Minting is a pure control-plane HTTP call (no socket, no synced pool): a backend
7
- * holding a secret `sk_` exchanges it for a short-lived scoped token — `ek_` for an
8
- * `{ user }` session (full end-user authority) or `rk_` for an `{ agent }` session
9
- * (scoped to exactly the operations named in `can`). The two arms map to the
10
- * server's two mint doors:
6
+ * Minting is a plain control-plane HTTP call no socket, no synced data. A
7
+ * backend holding a secret key (`sk_`) exchanges it for a short-lived, scoped
8
+ * token whose kind depends on the session requested:
11
9
  *
12
- * `{ user }` → POST /auth/ephemeral-keys `ek_`. The user-session door;
13
- * routing this arm through /auth/capability is structurally
14
- * impossible that route rejects participantKind 'user' outright
15
- * (`invalid_participant_kind`, the 2026-06-11 Pulse cascade where
16
- * the SDK's own blessed pattern 403'd and integrators fell back to
17
- * minting humans as agents).
18
- * `{ agent }` → POST /auth/capability → scoped `rk_`. `can: { tasks: ['update'] }`
19
- * serializes to the wire allowlist (`tasks.update`); the Hub matches
20
- * it against every registered alias of the model.
10
+ * `{ user }` → POST /auth/ephemeral-keys, returning an `ek_` key that carries
11
+ * full end-user authority. This is the only route that mints a
12
+ * user session; the capability route rejects a `user`
13
+ * participant with `invalid_participant_kind`.
14
+ * `{ agent }` POST /auth/capability, returning an `rk_` key scoped to exactly
15
+ * the operations named in `can`. For example
16
+ * `can: { tasks: ['update'] }` becomes the wire allowlist entry
17
+ * `tasks.update`, which the server matches against the model's
18
+ * registered names.
21
19
  *
22
- * The caller supplies the resolved control-plane credential + base URL in `ctx`;
23
- * WHICH key to use (the original `sk_`, never a derived `rk_` the startup exchange
24
- * may have installed) is the caller's concern see the two call sites.
25
- *
26
- * Type-only imports of `CreateSessionParams` / `AbloSession` keep this module a
27
- * leaf (no runtime cycle back to `Ablo.ts`): at runtime it depends on `auth` +
28
- * `schema` only.
20
+ * The caller supplies the already-resolved secret key and base URL in
21
+ * {@link MintSessionContext}. Choosing which key to pass the original secret
22
+ * key, not a derived key that an earlier exchange may have produced — is the
23
+ * caller's responsibility.
29
24
  */
30
25
  import { exchangeApiKey, mintUserSessionKey } from '../auth/index.js';
31
26
  /**
32
- * Mint a session token from an already-resolved `sk_` credential + base URL.
33
- * Discriminates the `{ user }` / `{ agent }` union onto the server's two mint
34
- * doors and reshapes each flat response into the `AbloSession` resource.
27
+ * Mints a session token from an already-resolved secret key and base URL.
28
+ * Routes the `{ user }` or `{ agent }` request to the matching mint endpoint
29
+ * and reshapes the response into an {@link AbloSession}.
35
30
  */
36
31
  export async function mintSession(params, ctx) {
37
32
  const { apiKey, baseUrl } = ctx;
@@ -64,10 +59,10 @@ export async function mintSession(params, ctx) {
64
59
  };
65
60
  }
66
61
  const operations = Object.entries(params.can).flatMap(([model, ops]) => {
67
- // Translate the schema key the developer used in `can` to the wire
68
- // typename the Hub gates on — see `modelTypenames` above. Falls back to
69
- // the key when no map is supplied (schemaless client) or the key isn't
70
- // in it, preserving the prior behaviour exactly for those callers.
62
+ // Translate the schema key the developer used in `can` into the wire type
63
+ // name the server checks — see `modelTypenames` above. Falls back to the
64
+ // key itself when no map is supplied (the schemaless client) or the key is
65
+ // absent from it.
71
66
  const ns = ctx.modelTypenames?.[model] ?? model;
72
67
  return (ops ?? []).map((op) => `${ns.toLowerCase()}.${op}`);
73
68
  });
@@ -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,16 +1,15 @@
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
- import { AbloValidationError } from '../errors.js';
12
+ import { AbloError, AbloValidationError } from '../errors.js';
14
13
  export function validateAbloOptions(input) {
15
14
  const { options, url, configuredApiKey, configuredAuthToken } = input;
16
15
  const kind = options.kind ?? 'user';
@@ -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)
@@ -0,0 +1,28 @@
1
+ /**
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.
6
+ */
7
+ import type { StaleNotification, ReadDependency } from '../coordination/schema.js';
8
+ import type { MutationExecutor, MutationOperation } from '../interfaces/index.js';
9
+ /**
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.
13
+ *
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.
18
+ *
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
+ */
23
+ export declare function createDefaultMutationExecutor(getWs: () => {
24
+ sendCommit?: (operations: readonly MutationOperation[], clientTxId: string, timeoutMs?: number, causedByTaskId?: string | null, reads?: readonly ReadDependency[] | null) => Promise<{
25
+ lastSyncId: number;
26
+ notifications?: StaleNotification[];
27
+ }>;
28
+ } | null): MutationExecutor;
@@ -0,0 +1,71 @@
1
+ /**
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.
6
+ */
7
+ import { AbloError, AbloConnectionError } from '../errors.js';
8
+ // ── Default mutation executor (wire: `commit` frame over WebSocket) ──────
9
+ /**
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.
13
+ *
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.
18
+ *
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
+ */
23
+ export function createDefaultMutationExecutor(getWs) {
24
+ async function commit(operations, options) {
25
+ const ws = getWs();
26
+ if (!ws?.sendCommit) {
27
+ throw new AbloConnectionError('SyncWebSocket not ready for commit. The engine must finish bootstrap ' +
28
+ 'before mutations can be sent.', { code: 'ws_not_ready' });
29
+ }
30
+ const clientTxId = options?.idempotencyKey ??
31
+ (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'
32
+ ? crypto.randomUUID()
33
+ : `tx_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`);
34
+ try {
35
+ return await ws.sendCommit(operations, clientTxId, undefined, // use sendCommit's built-in 15s default; no per-call override
36
+ options?.causedByTaskId, options?.reads);
37
+ }
38
+ catch (err) {
39
+ // Wrap transport-level failures as connection errors so the transaction
40
+ // queue's retry classifier treats them as transient and retries them.
41
+ if (err instanceof AbloError)
42
+ throw err;
43
+ if (err instanceof Error) {
44
+ if (/not connected|timed out|connection|ECONN/i.test(err.message)) {
45
+ const wrapped = new AbloConnectionError(err.message, { cause: err });
46
+ // Preserve any `diagnostics` snapshot the underlying SyncWebSocket
47
+ // attached to the rejection. Without this, the wrapped error
48
+ // bottoms out at "AbloConnectionError: not connected" with no
49
+ // attribution to which close code / heartbeat trip / session
50
+ // error caused it. See SyncWebSocket.notConnectedError().
51
+ if (err &&
52
+ typeof err === 'object' &&
53
+ 'diagnostics' in err &&
54
+ err.diagnostics) {
55
+ wrapped.diagnostics = err.diagnostics;
56
+ }
57
+ throw wrapped;
58
+ }
59
+ }
60
+ throw err;
61
+ }
62
+ }
63
+ return {
64
+ commit,
65
+ executeCreate: (model, id, input, _txId, options) => commit([{ type: 'CREATE', model: model.toLowerCase(), id, input }], options).then(() => { }),
66
+ executeUpdate: (model, id, data, _txId, options) => commit([{ type: 'UPDATE', model: model.toLowerCase(), id, input: data }], options),
67
+ executeDelete: (model, id, _txId, options) => commit([{ type: 'DELETE', model: model.toLowerCase(), id }], options).then(() => { }),
68
+ executeArchive: (model, id, _txId, options) => commit([{ type: 'ARCHIVE', model: model.toLowerCase(), id }], options).then(() => { }),
69
+ executeUnarchive: (model, id, _txId, options) => commit([{ type: 'UNARCHIVE', model: model.toLowerCase(), id }], options).then(() => { }),
70
+ };
71
+ }
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;
@@ -52,7 +54,4 @@ const _fallback = {
52
54
  executeArchive: () => Promise.resolve(),
53
55
  executeUnarchive: () => Promise.resolve(),
54
56
  },
55
- mutationDispatcher: {
56
- dispatch: () => Promise.resolve(),
57
- },
58
57
  };
@@ -1,6 +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.
8
+ *
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.
5
11
  */
6
- export * 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';
13
+ export { defaultPolicy, capabilityPreemptPolicy, interpretConflictAxis } from '../policy/types.js';
14
+ export type { Conflict, ConflictAxis, ConflictDecision, ConflictKind, ConflictOperation, ConflictPolicy, StaleContextConflict, ClaimHeldConflict, } from '../policy/types.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,6 +1,31 @@
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.
8
+ *
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.
5
11
  */
6
- export * from './schema.js';
12
+ // Runtime schemas + helpers.
13
+ export {
14
+ // Shared primitives
15
+ targetRangeSchema, participantKindSchema, wireParticipantKindSchema, participantKindFromWire, descriptionFromMeta, targetRefSchema,
16
+ // Layer 3 — optimistic stale-context
17
+ onStaleModeSchema, writeGuardSchema, staleNotificationSchema, readDependencySchema,
18
+ // Layer 2 — pessimistic claim / claim-lease
19
+ claimStatusSchema, wireClaimSummarySchema, claimErrorSchema, wireClaimSchema, claimRejectionSchema, modelTargetSchema, modelClaimSchema, claimBeginPayloadSchema, claimAbandonPayloadSchema, claimReorderPayloadSchema, claimHeartbeatPayloadSchema, claimHeartbeatAckPayloadSchema, claimHeartbeatBatchPayloadSchema, claimHeartbeatBatchAckPayloadSchema,
20
+ // Read interest — area-of-interest navigation
21
+ updateSubscriptionPayloadSchema, subscriptionAckPayloadSchema,
22
+ // Commit operation — carries the optimistic write-guard
23
+ commitOperationTypeSchema, commitOperationSchema,
24
+ // Layer 1 — presence
25
+ presenceKindSchema, presenceActivitySchema, presenceUpdateFrameSchema, } from './schema.js';
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.
31
+ export { defaultPolicy, capabilityPreemptPolicy, interpretConflictAxis } from '../policy/types.js';