@abloatai/ablo 0.35.0 → 0.37.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 (622) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +71 -1929
  3. package/NOTICE +2 -2
  4. package/README.md +23 -532
  5. package/assets/banner.png +0 -0
  6. package/dist/auth.d.ts +2 -0
  7. package/dist/auth.d.ts.map +1 -0
  8. package/dist/auth.js +2 -0
  9. package/dist/auth.js.map +1 -0
  10. package/dist/client.d.ts +3 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +3 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/coordination.d.ts +2 -0
  15. package/dist/coordination.d.ts.map +1 -0
  16. package/dist/coordination.js +2 -0
  17. package/dist/coordination.js.map +1 -0
  18. package/dist/index.d.ts +3 -112
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +3 -161
  21. package/dist/index.js.map +1 -0
  22. package/dist/react.d.ts +4 -0
  23. package/dist/react.d.ts.map +1 -0
  24. package/dist/react.js +3 -0
  25. package/dist/react.js.map +1 -0
  26. package/dist/schema.d.ts +2 -0
  27. package/dist/schema.d.ts.map +1 -0
  28. package/dist/schema.js +2 -0
  29. package/dist/schema.js.map +1 -0
  30. package/dist/server.d.ts +2 -0
  31. package/dist/server.d.ts.map +1 -0
  32. package/dist/server.js +2 -0
  33. package/dist/server.js.map +1 -0
  34. package/dist/source-conformance.d.ts +2 -0
  35. package/dist/source-conformance.d.ts.map +1 -0
  36. package/dist/source-conformance.js +2 -0
  37. package/dist/source-conformance.js.map +1 -0
  38. package/dist/source-drizzle.d.ts +2 -0
  39. package/dist/source-drizzle.d.ts.map +1 -0
  40. package/dist/source-drizzle.js +2 -0
  41. package/dist/source-drizzle.js.map +1 -0
  42. package/dist/source-kysely.d.ts +2 -0
  43. package/dist/source-kysely.d.ts.map +1 -0
  44. package/dist/source-kysely.js +2 -0
  45. package/dist/source-kysely.js.map +1 -0
  46. package/dist/source-next.d.ts +2 -0
  47. package/dist/source-next.d.ts.map +1 -0
  48. package/dist/source-next.js +2 -0
  49. package/dist/source-next.js.map +1 -0
  50. package/dist/source.d.ts +2 -0
  51. package/dist/source.d.ts.map +1 -0
  52. package/dist/source.js +2 -0
  53. package/dist/source.js.map +1 -0
  54. package/dist/wire.d.ts +2 -0
  55. package/dist/wire.d.ts.map +1 -0
  56. package/dist/wire.js +2 -0
  57. package/dist/wire.js.map +1 -0
  58. package/docs/agents.md +2 -2
  59. package/docs/api-keys.md +13 -12
  60. package/docs/api.md +15 -53
  61. package/docs/audit.md +4 -3
  62. package/docs/cli.md +11 -11
  63. package/docs/client-behavior.md +9 -9
  64. package/docs/concurrency-convention.md +28 -42
  65. package/docs/coordination.md +228 -86
  66. package/docs/data-sources.md +5 -5
  67. package/docs/debugging.md +34 -12
  68. package/docs/deployment.md +8 -8
  69. package/docs/examples/agent-human.md +4 -4
  70. package/docs/examples/ai-sdk-tool.md +1 -1
  71. package/docs/examples/existing-python-backend.md +15 -4
  72. package/docs/examples/nextjs.md +27 -6
  73. package/docs/examples/scoped-agent.md +3 -3
  74. package/docs/examples/server-agent.md +2 -2
  75. package/docs/groups.md +57 -3
  76. package/docs/guarantees.md +37 -10
  77. package/docs/how-it-works.md +32 -8
  78. package/docs/idempotency.md +6 -6
  79. package/docs/identity.md +24 -24
  80. package/docs/index.md +8 -8
  81. package/docs/integration-guide.md +38 -16
  82. package/docs/internal/README.md +18 -0
  83. package/docs/internal/agent-fleet-coordination-design.md +171 -0
  84. package/docs/internal/agent-orchestration.md +58 -0
  85. package/docs/internal/commit-identifiers.md +91 -0
  86. package/docs/internal/concurrency-open-decisions.md +37 -0
  87. package/docs/internal/data-source-reverse-channel.md +150 -0
  88. package/docs/internal/per-field-conflict-detection.md +165 -0
  89. package/docs/internal/postgres-replication.md +64 -0
  90. package/docs/internal/serializable-schema.md +119 -0
  91. package/docs/internal/structure.md +32 -0
  92. package/docs/mcp.md +9 -9
  93. package/docs/migration.md +37 -18
  94. package/docs/projects.md +1 -1
  95. package/docs/quickstart.md +2 -2
  96. package/docs/react.md +24 -13
  97. package/docs/schema-contract.md +3 -3
  98. package/docs/sessions.md +91 -37
  99. package/docs/webhooks.md +9 -9
  100. package/examples/README.md +2 -2
  101. package/examples/data-source/README.md +1 -1
  102. package/examples/data-source/ablo-driver.ts +1 -1
  103. package/examples/data-source/customer-server.ts +1 -1
  104. package/examples/data-source/run.ts +1 -1
  105. package/examples/data-source/schema.ts +1 -1
  106. package/examples/quickstart.ts +2 -2
  107. package/llms.txt +12 -12
  108. package/package.json +64 -174
  109. package/dist/BaseSyncedStore.d.ts +0 -823
  110. package/dist/BaseSyncedStore.js +0 -1955
  111. package/dist/Database.d.ts +0 -335
  112. package/dist/Database.js +0 -1500
  113. package/dist/InstanceCache.d.ts +0 -233
  114. package/dist/InstanceCache.js +0 -1164
  115. package/dist/LazyReferenceCollection.d.ts +0 -177
  116. package/dist/LazyReferenceCollection.js +0 -461
  117. package/dist/Model.d.ts +0 -444
  118. package/dist/Model.js +0 -909
  119. package/dist/ModelRegistry.d.ts +0 -221
  120. package/dist/ModelRegistry.js +0 -537
  121. package/dist/NetworkMonitor.d.ts +0 -26
  122. package/dist/NetworkMonitor.js +0 -77
  123. package/dist/RuntimeContext.d.ts +0 -52
  124. package/dist/RuntimeContext.js +0 -80
  125. package/dist/SyncClient.d.ts +0 -551
  126. package/dist/SyncClient.js +0 -2199
  127. package/dist/adapters/alwaysOnline.d.ts +0 -14
  128. package/dist/adapters/alwaysOnline.js +0 -17
  129. package/dist/adapters/inMemoryStorage.d.ts +0 -31
  130. package/dist/adapters/inMemoryStorage.js +0 -110
  131. package/dist/ai-sdk/coordinatedTool.d.ts +0 -120
  132. package/dist/ai-sdk/coordinatedTool.js +0 -134
  133. package/dist/ai-sdk/coordinationContext.d.ts +0 -46
  134. package/dist/ai-sdk/coordinationContext.js +0 -106
  135. package/dist/ai-sdk/index.d.ts +0 -121
  136. package/dist/ai-sdk/index.js +0 -121
  137. package/dist/ai-sdk/wrap.d.ts +0 -65
  138. package/dist/ai-sdk/wrap.js +0 -39
  139. package/dist/auth/index.d.ts +0 -1
  140. package/dist/auth/index.js +0 -8
  141. package/dist/batching/index.d.ts +0 -55
  142. package/dist/batching/index.js +0 -147
  143. package/dist/cli.cjs +0 -288600
  144. package/dist/client/Ablo.d.ts +0 -231
  145. package/dist/client/Ablo.js +0 -149
  146. package/dist/client/abloClient.d.ts +0 -309
  147. package/dist/client/abloClient.js +0 -13
  148. package/dist/client/clientPrelude.d.ts +0 -52
  149. package/dist/client/clientPrelude.js +0 -60
  150. package/dist/client/consoleLogger.d.ts +0 -35
  151. package/dist/client/consoleLogger.js +0 -44
  152. package/dist/client/coreClient.d.ts +0 -60
  153. package/dist/client/coreClient.js +0 -118
  154. package/dist/client/createInternalComponents.d.ts +0 -46
  155. package/dist/client/createInternalComponents.js +0 -92
  156. package/dist/client/createModelProxy.d.ts +0 -228
  157. package/dist/client/createModelProxy.js +0 -818
  158. package/dist/client/humans.d.ts +0 -48
  159. package/dist/client/humans.js +0 -52
  160. package/dist/client/modelRegistration.d.ts +0 -10
  161. package/dist/client/modelRegistration.js +0 -312
  162. package/dist/client/options.d.ts +0 -461
  163. package/dist/client/options.js +0 -7
  164. package/dist/client/reactiveEngine.d.ts +0 -48
  165. package/dist/client/reactiveEngine.js +0 -910
  166. package/dist/client/resourceTypes.d.ts +0 -12
  167. package/dist/client/resourceTypes.js +0 -10
  168. package/dist/client/schemaConfig.d.ts +0 -44
  169. package/dist/client/schemaConfig.js +0 -185
  170. package/dist/client/validateAbloOptions.d.ts +0 -42
  171. package/dist/client/validateAbloOptions.js +0 -43
  172. package/dist/client/wsMutationExecutor.d.ts +0 -27
  173. package/dist/client/wsMutationExecutor.js +0 -72
  174. package/dist/context.d.ts +0 -29
  175. package/dist/context.js +0 -58
  176. package/dist/coordination/ClaimLog.d.ts +0 -26
  177. package/dist/coordination/ClaimLog.js +0 -32
  178. package/dist/coordination/index.d.ts +0 -1
  179. package/dist/coordination/index.js +0 -8
  180. package/dist/core/DatabaseManager.d.ts +0 -105
  181. package/dist/core/DatabaseManager.js +0 -387
  182. package/dist/core/QueryProcessor.d.ts +0 -75
  183. package/dist/core/QueryProcessor.js +0 -255
  184. package/dist/core/QueryView.d.ts +0 -79
  185. package/dist/core/QueryView.js +0 -218
  186. package/dist/core/StoreManager.d.ts +0 -112
  187. package/dist/core/StoreManager.js +0 -302
  188. package/dist/core/ViewRegistry.d.ts +0 -20
  189. package/dist/core/ViewRegistry.js +0 -55
  190. package/dist/core/index.d.ts +0 -33
  191. package/dist/core/index.js +0 -48
  192. package/dist/core/openIDBWithTimeout.d.ts +0 -65
  193. package/dist/core/openIDBWithTimeout.js +0 -153
  194. package/dist/core/queryUtils.d.ts +0 -45
  195. package/dist/core/queryUtils.js +0 -69
  196. package/dist/core/storeContract.d.ts +0 -145
  197. package/dist/core/storeContract.js +0 -12
  198. package/dist/docs/catalog.d.ts +0 -72
  199. package/dist/docs/catalog.js +0 -227
  200. package/dist/docs/index.d.ts +0 -10
  201. package/dist/docs/index.js +0 -10
  202. package/dist/environment.d.ts +0 -1
  203. package/dist/environment.js +0 -8
  204. package/dist/interfaces/index.d.ts +0 -311
  205. package/dist/interfaces/index.js +0 -9
  206. package/dist/keys/index.d.ts +0 -1
  207. package/dist/keys/index.js +0 -8
  208. package/dist/mutators/RecordingMutation.d.ts +0 -36
  209. package/dist/mutators/RecordingMutation.js +0 -182
  210. package/dist/mutators/Transaction.d.ts +0 -40
  211. package/dist/mutators/Transaction.js +0 -58
  212. package/dist/mutators/UndoManager.d.ts +0 -258
  213. package/dist/mutators/UndoManager.js +0 -658
  214. package/dist/mutators/defineMutators.d.ts +0 -60
  215. package/dist/mutators/defineMutators.js +0 -18
  216. package/dist/mutators/inverseOp.d.ts +0 -126
  217. package/dist/mutators/inverseOp.js +0 -71
  218. package/dist/mutators/mutateActions.d.ts +0 -45
  219. package/dist/mutators/mutateActions.js +0 -105
  220. package/dist/mutators/readerActions.d.ts +0 -33
  221. package/dist/mutators/readerActions.js +0 -57
  222. package/dist/mutators/undoApply.d.ts +0 -51
  223. package/dist/mutators/undoApply.js +0 -117
  224. package/dist/policy/index.d.ts +0 -21
  225. package/dist/policy/index.js +0 -20
  226. package/dist/query/client.d.ts +0 -61
  227. package/dist/query/client.js +0 -137
  228. package/dist/query/types.d.ts +0 -85
  229. package/dist/query/types.js +0 -16
  230. package/dist/react/AbloProvider.d.ts +0 -230
  231. package/dist/react/AbloProvider.js +0 -455
  232. package/dist/react/ClientSideSuspense.d.ts +0 -36
  233. package/dist/react/ClientSideSuspense.js +0 -17
  234. package/dist/react/DefaultFallback.d.ts +0 -24
  235. package/dist/react/DefaultFallback.js +0 -43
  236. package/dist/react/context.d.ts +0 -55
  237. package/dist/react/context.js +0 -29
  238. package/dist/react/index.d.ts +0 -61
  239. package/dist/react/index.js +0 -66
  240. package/dist/react/internalContext.d.ts +0 -33
  241. package/dist/react/internalContext.js +0 -3
  242. package/dist/react/useAblo.d.ts +0 -75
  243. package/dist/react/useAblo.js +0 -102
  244. package/dist/react/useCurrentUserId.d.ts +0 -22
  245. package/dist/react/useCurrentUserId.js +0 -34
  246. package/dist/react/useErrorListener.d.ts +0 -20
  247. package/dist/react/useErrorListener.js +0 -38
  248. package/dist/react/useMutationFailureListener.d.ts +0 -26
  249. package/dist/react/useMutationFailureListener.js +0 -38
  250. package/dist/react/useMutators.d.ts +0 -56
  251. package/dist/react/useMutators.js +0 -84
  252. package/dist/react/useReactive.d.ts +0 -35
  253. package/dist/react/useReactive.js +0 -123
  254. package/dist/react/useSyncStatus.d.ts +0 -59
  255. package/dist/react/useSyncStatus.js +0 -76
  256. package/dist/react/useUndoScope.d.ts +0 -34
  257. package/dist/react/useUndoScope.js +0 -81
  258. package/dist/schema/coordination.d.ts +0 -112
  259. package/dist/schema/coordination.js +0 -129
  260. package/dist/schema/ddl.d.ts +0 -97
  261. package/dist/schema/ddl.js +0 -491
  262. package/dist/schema/ddlLock.d.ts +0 -35
  263. package/dist/schema/ddlLock.js +0 -46
  264. package/dist/schema/diff.d.ts +0 -225
  265. package/dist/schema/diff.js +0 -289
  266. package/dist/schema/generate.d.ts +0 -19
  267. package/dist/schema/generate.js +0 -86
  268. package/dist/schema/index.d.ts +0 -41
  269. package/dist/schema/index.js +0 -76
  270. package/dist/schema/queries.d.ts +0 -201
  271. package/dist/schema/queries.js +0 -144
  272. package/dist/schema/select.d.ts +0 -40
  273. package/dist/schema/select.js +0 -87
  274. package/dist/schema/serialize.d.ts +0 -115
  275. package/dist/schema/serialize.js +0 -262
  276. package/dist/schema/sugar.d.ts +0 -109
  277. package/dist/schema/sugar.js +0 -83
  278. package/dist/schema/syncDeltaRow.d.ts +0 -6
  279. package/dist/schema/syncDeltaRow.js +0 -6
  280. package/dist/server/adapter.d.ts +0 -173
  281. package/dist/server/adapter.js +0 -18
  282. package/dist/server/commit.d.ts +0 -107
  283. package/dist/server/commit.js +0 -1
  284. package/dist/server/index.d.ts +0 -14
  285. package/dist/server/index.js +0 -2
  286. package/dist/server/readConfig.d.ts +0 -80
  287. package/dist/server/readConfig.js +0 -8
  288. package/dist/server/storageMode.d.ts +0 -23
  289. package/dist/server/storageMode.js +0 -17
  290. package/dist/source/adapter.d.ts +0 -81
  291. package/dist/source/adapter.js +0 -22
  292. package/dist/source/adapters/drizzle.d.ts +0 -48
  293. package/dist/source/adapters/drizzle.js +0 -219
  294. package/dist/source/adapters/kysely.d.ts +0 -42
  295. package/dist/source/adapters/kysely.js +0 -205
  296. package/dist/source/adapters/kyselyMutationCore.d.ts +0 -76
  297. package/dist/source/adapters/kyselyMutationCore.js +0 -125
  298. package/dist/source/adapters/memory.d.ts +0 -13
  299. package/dist/source/adapters/memory.js +0 -130
  300. package/dist/source/adapters/prisma.d.ts +0 -63
  301. package/dist/source/adapters/prisma.js +0 -202
  302. package/dist/source/conformance.d.ts +0 -37
  303. package/dist/source/conformance.js +0 -215
  304. package/dist/source/connector.d.ts +0 -95
  305. package/dist/source/connector.js +0 -266
  306. package/dist/source/connectorProtocol.d.ts +0 -154
  307. package/dist/source/connectorProtocol.js +0 -163
  308. package/dist/source/contract.d.ts +0 -195
  309. package/dist/source/contract.js +0 -164
  310. package/dist/source/factory.d.ts +0 -92
  311. package/dist/source/factory.js +0 -286
  312. package/dist/source/footprint.d.ts +0 -111
  313. package/dist/source/footprint.js +0 -0
  314. package/dist/source/idempotency.d.ts +0 -61
  315. package/dist/source/idempotency.js +0 -144
  316. package/dist/source/index.d.ts +0 -23
  317. package/dist/source/index.js +0 -30
  318. package/dist/source/migrations.d.ts +0 -21
  319. package/dist/source/migrations.js +0 -103
  320. package/dist/source/next.d.ts +0 -32
  321. package/dist/source/next.js +0 -25
  322. package/dist/source/pushQueue.d.ts +0 -134
  323. package/dist/source/pushQueue.js +0 -256
  324. package/dist/source/signing.d.ts +0 -92
  325. package/dist/source/signing.js +0 -162
  326. package/dist/source/types.d.ts +0 -401
  327. package/dist/source/types.js +0 -59
  328. package/dist/stores/ObjectStore.d.ts +0 -115
  329. package/dist/stores/ObjectStore.js +0 -393
  330. package/dist/stores/ObjectStoreContract.d.ts +0 -38
  331. package/dist/stores/ObjectStoreContract.js +0 -1
  332. package/dist/stores/SyncActionStore.d.ts +0 -97
  333. package/dist/stores/SyncActionStore.js +0 -504
  334. package/dist/stores/syncAction.d.ts +0 -26
  335. package/dist/stores/syncAction.js +0 -16
  336. package/dist/surface.d.ts +0 -36
  337. package/dist/surface.js +0 -75
  338. package/dist/sync/BootstrapFetcher.d.ts +0 -280
  339. package/dist/sync/BootstrapFetcher.js +0 -962
  340. package/dist/sync/ConnectionManager.d.ts +0 -8
  341. package/dist/sync/ConnectionManager.js +0 -8
  342. package/dist/sync/OnDemandLoader.d.ts +0 -228
  343. package/dist/sync/OnDemandLoader.js +0 -742
  344. package/dist/sync/SubscriptionManager.d.ts +0 -159
  345. package/dist/sync/SubscriptionManager.js +0 -243
  346. package/dist/sync/SyncWebSocket.d.ts +0 -173
  347. package/dist/sync/SyncWebSocket.js +0 -438
  348. package/dist/sync/awaitClaimGrant.d.ts +0 -6
  349. package/dist/sync/awaitClaimGrant.js +0 -6
  350. package/dist/sync/bootstrapApply.d.ts +0 -70
  351. package/dist/sync/bootstrapApply.js +0 -73
  352. package/dist/sync/commitFrames.d.ts +0 -8
  353. package/dist/sync/commitFrames.js +0 -8
  354. package/dist/sync/contextPorts.d.ts +0 -18
  355. package/dist/sync/contextPorts.js +0 -31
  356. package/dist/sync/createClaimStream.d.ts +0 -7
  357. package/dist/sync/createClaimStream.js +0 -7
  358. package/dist/sync/createPresenceStream.d.ts +0 -69
  359. package/dist/sync/createPresenceStream.js +0 -200
  360. package/dist/sync/createSnapshot.d.ts +0 -29
  361. package/dist/sync/createSnapshot.js +0 -118
  362. package/dist/sync/credentialLifecycle.d.ts +0 -7
  363. package/dist/sync/credentialLifecycle.js +0 -7
  364. package/dist/sync/deltaPipeline.d.ts +0 -113
  365. package/dist/sync/deltaPipeline.js +0 -261
  366. package/dist/sync/groupChange.d.ts +0 -113
  367. package/dist/sync/groupChange.js +0 -242
  368. package/dist/sync/participants.d.ts +0 -115
  369. package/dist/sync/participants.js +0 -344
  370. package/dist/sync/persistedPrefix.d.ts +0 -12
  371. package/dist/sync/persistedPrefix.js +0 -22
  372. package/dist/sync/schemaDrift.d.ts +0 -55
  373. package/dist/sync/schemaDrift.js +0 -53
  374. package/dist/sync/schemas.d.ts +0 -70
  375. package/dist/sync/schemas.js +0 -94
  376. package/dist/sync/syncCursor.d.ts +0 -40
  377. package/dist/sync/syncCursor.js +0 -55
  378. package/dist/sync/syncPlan.d.ts +0 -54
  379. package/dist/sync/syncPlan.js +0 -50
  380. package/dist/sync/wsFrameHandlers.d.ts +0 -8
  381. package/dist/sync/wsFrameHandlers.js +0 -8
  382. package/dist/testing/fixtures/bootstrap.d.ts +0 -49
  383. package/dist/testing/fixtures/bootstrap.js +0 -59
  384. package/dist/testing/fixtures/deltas.d.ts +0 -83
  385. package/dist/testing/fixtures/deltas.js +0 -136
  386. package/dist/testing/fixtures/httpResponses.d.ts +0 -70
  387. package/dist/testing/fixtures/httpResponses.js +0 -90
  388. package/dist/testing/fixtures/models.d.ts +0 -83
  389. package/dist/testing/fixtures/models.js +0 -272
  390. package/dist/testing/helpers/reactWrapper.d.ts +0 -69
  391. package/dist/testing/helpers/reactWrapper.js +0 -67
  392. package/dist/testing/helpers/syncEngineHarness.d.ts +0 -54
  393. package/dist/testing/helpers/syncEngineHarness.js +0 -73
  394. package/dist/testing/helpers/wait.d.ts +0 -30
  395. package/dist/testing/helpers/wait.js +0 -49
  396. package/dist/testing/index.d.ts +0 -23
  397. package/dist/testing/index.js +0 -33
  398. package/dist/testing/mocks/FakeDatabase.d.ts +0 -18
  399. package/dist/testing/mocks/FakeDatabase.js +0 -10
  400. package/dist/testing/mocks/MockMutationExecutor.d.ts +0 -87
  401. package/dist/testing/mocks/MockMutationExecutor.js +0 -186
  402. package/dist/testing/mocks/MockNetworkMonitor.d.ts +0 -20
  403. package/dist/testing/mocks/MockNetworkMonitor.js +0 -46
  404. package/dist/testing/mocks/MockSyncContext.d.ts +0 -51
  405. package/dist/testing/mocks/MockSyncContext.js +0 -72
  406. package/dist/testing/mocks/MockSyncStore.d.ts +0 -88
  407. package/dist/testing/mocks/MockSyncStore.js +0 -171
  408. package/dist/testing/mocks/MockWebSocket.d.ts +0 -71
  409. package/dist/testing/mocks/MockWebSocket.js +0 -118
  410. package/dist/transaction/ablo.d.ts +0 -88
  411. package/dist/transaction/ablo.js +0 -33
  412. package/dist/transaction/auth/apiKey.d.ts +0 -152
  413. package/dist/transaction/auth/apiKey.js +0 -419
  414. package/dist/transaction/auth/bootstrapScope.d.ts +0 -15
  415. package/dist/transaction/auth/bootstrapScope.js +0 -1
  416. package/dist/transaction/auth/capability.d.ts +0 -177
  417. package/dist/transaction/auth/capability.js +0 -199
  418. package/dist/transaction/auth/credentialEndpoint.d.ts +0 -61
  419. package/dist/transaction/auth/credentialEndpoint.js +0 -86
  420. package/dist/transaction/auth/credentialPolicy.d.ts +0 -148
  421. package/dist/transaction/auth/credentialPolicy.js +0 -125
  422. package/dist/transaction/auth/credentialSource.d.ts +0 -30
  423. package/dist/transaction/auth/credentialSource.js +0 -55
  424. package/dist/transaction/auth/hostedEndpoints.d.ts +0 -21
  425. package/dist/transaction/auth/hostedEndpoints.js +0 -21
  426. package/dist/transaction/auth/identity.d.ts +0 -55
  427. package/dist/transaction/auth/identity.js +0 -210
  428. package/dist/transaction/auth/index.d.ts +0 -162
  429. package/dist/transaction/auth/index.js +0 -304
  430. package/dist/transaction/auth/schemas.d.ts +0 -59
  431. package/dist/transaction/auth/schemas.js +0 -85
  432. package/dist/transaction/auth/sessionMint.d.ts +0 -28
  433. package/dist/transaction/auth/sessionMint.js +0 -85
  434. package/dist/transaction/coordination/awaitClaimGrant.d.ts +0 -49
  435. package/dist/transaction/coordination/awaitClaimGrant.js +0 -112
  436. package/dist/transaction/coordination/claimHeartbeatLoop.d.ts +0 -50
  437. package/dist/transaction/coordination/claimHeartbeatLoop.js +0 -88
  438. package/dist/transaction/coordination/claimMeta.d.ts +0 -49
  439. package/dist/transaction/coordination/claimMeta.js +0 -52
  440. package/dist/transaction/coordination/createClaimStream.d.ts +0 -64
  441. package/dist/transaction/coordination/createClaimStream.js +0 -475
  442. package/dist/transaction/coordination/events.d.ts +0 -74
  443. package/dist/transaction/coordination/events.js +0 -7
  444. package/dist/transaction/coordination/index.d.ts +0 -19
  445. package/dist/transaction/coordination/index.js +0 -44
  446. package/dist/transaction/coordination/locator.d.ts +0 -83
  447. package/dist/transaction/coordination/locator.js +0 -82
  448. package/dist/transaction/coordination/schema.d.ts +0 -1473
  449. package/dist/transaction/coordination/schema.js +0 -1013
  450. package/dist/transaction/coordination/targetConflict.d.ts +0 -2
  451. package/dist/transaction/coordination/targetConflict.js +0 -103
  452. package/dist/transaction/coordination/trace.d.ts +0 -78
  453. package/dist/transaction/coordination/trace.js +0 -138
  454. package/dist/transaction/durableWrites.d.ts +0 -62
  455. package/dist/transaction/durableWrites.js +0 -71
  456. package/dist/transaction/environment.d.ts +0 -105
  457. package/dist/transaction/environment.js +0 -108
  458. package/dist/transaction/errorCodes.d.ts +0 -403
  459. package/dist/transaction/errorCodes.js +0 -480
  460. package/dist/transaction/errors.d.ts +0 -428
  461. package/dist/transaction/errors.js +0 -686
  462. package/dist/transaction/index.d.ts +0 -20
  463. package/dist/transaction/index.js +0 -20
  464. package/dist/transaction/keys/index.d.ts +0 -87
  465. package/dist/transaction/keys/index.js +0 -207
  466. package/dist/transaction/log/syncDeltaRow.d.ts +0 -158
  467. package/dist/transaction/log/syncDeltaRow.js +0 -95
  468. package/dist/transaction/logPosition.d.ts +0 -97
  469. package/dist/transaction/logPosition.js +0 -125
  470. package/dist/transaction/logger.d.ts +0 -16
  471. package/dist/transaction/logger.js +0 -7
  472. package/dist/transaction/observability.d.ts +0 -53
  473. package/dist/transaction/observability.js +0 -19
  474. package/dist/transaction/persistence.d.ts +0 -12
  475. package/dist/transaction/persistence.js +0 -11
  476. package/dist/transaction/plugin.d.ts +0 -192
  477. package/dist/transaction/plugin.js +0 -87
  478. package/dist/transaction/policy/types.d.ts +0 -217
  479. package/dist/transaction/policy/types.js +0 -126
  480. package/dist/transaction/resources/functionalUpdate.d.ts +0 -79
  481. package/dist/transaction/resources/functionalUpdate.js +0 -87
  482. package/dist/transaction/resources/httpResources.d.ts +0 -266
  483. package/dist/transaction/resources/httpResources.js +0 -7
  484. package/dist/transaction/resources/modelOperations.d.ts +0 -319
  485. package/dist/transaction/resources/modelOperations.js +0 -12
  486. package/dist/transaction/resources/mutationOptions.d.ts +0 -66
  487. package/dist/transaction/resources/mutationOptions.js +0 -9
  488. package/dist/transaction/resources/where.d.ts +0 -85
  489. package/dist/transaction/resources/where.js +0 -70
  490. package/dist/transaction/resources/writeOptionsSchema.d.ts +0 -47
  491. package/dist/transaction/resources/writeOptionsSchema.js +0 -73
  492. package/dist/transaction/schema/field.d.ts +0 -126
  493. package/dist/transaction/schema/field.js +0 -265
  494. package/dist/transaction/schema/loadStrategy.d.ts +0 -45
  495. package/dist/transaction/schema/loadStrategy.js +0 -46
  496. package/dist/transaction/schema/model.d.ts +0 -379
  497. package/dist/transaction/schema/model.js +0 -123
  498. package/dist/transaction/schema/openapi.d.ts +0 -57
  499. package/dist/transaction/schema/openapi.js +0 -340
  500. package/dist/transaction/schema/relation.d.ts +0 -199
  501. package/dist/transaction/schema/relation.js +0 -104
  502. package/dist/transaction/schema/residency.d.ts +0 -29
  503. package/dist/transaction/schema/residency.js +0 -25
  504. package/dist/transaction/schema/roles.d.ts +0 -249
  505. package/dist/transaction/schema/roles.js +0 -230
  506. package/dist/transaction/schema/schema.d.ts +0 -324
  507. package/dist/transaction/schema/schema.js +0 -305
  508. package/dist/transaction/schema/tenancy.d.ts +0 -139
  509. package/dist/transaction/schema/tenancy.js +0 -190
  510. package/dist/transaction/transactionLayer.d.ts +0 -82
  511. package/dist/transaction/transactionLayer.js +0 -24
  512. package/dist/transaction/transactions/settlement/commitEnvelope.d.ts +0 -143
  513. package/dist/transaction/transactions/settlement/commitEnvelope.js +0 -161
  514. package/dist/transaction/transactions/settlement/httpCommitEnvelope.d.ts +0 -53
  515. package/dist/transaction/transactions/settlement/httpCommitEnvelope.js +0 -207
  516. package/dist/transaction/transactions/settlement/idempotencyKey.d.ts +0 -10
  517. package/dist/transaction/transactions/settlement/idempotencyKey.js +0 -9
  518. package/dist/transaction/transactions/settlement/pendingWrite.d.ts +0 -112
  519. package/dist/transaction/transactions/settlement/pendingWrite.js +0 -20
  520. package/dist/transaction/transport/commitFrames.d.ts +0 -90
  521. package/dist/transaction/transport/commitFrames.js +0 -134
  522. package/dist/transaction/transport/connectionManager.d.ts +0 -215
  523. package/dist/transaction/transport/connectionManager.js +0 -673
  524. package/dist/transaction/transport/credentialLifecycle.d.ts +0 -177
  525. package/dist/transaction/transport/credentialLifecycle.js +0 -324
  526. package/dist/transaction/transport/heartbeat.d.ts +0 -65
  527. package/dist/transaction/transport/heartbeat.js +0 -93
  528. package/dist/transaction/transport/httpClient.d.ts +0 -123
  529. package/dist/transaction/transport/httpClient.js +0 -145
  530. package/dist/transaction/transport/httpOptions.d.ts +0 -33
  531. package/dist/transaction/transport/httpOptions.js +0 -12
  532. package/dist/transaction/transport/httpTransport.d.ts +0 -8
  533. package/dist/transaction/transport/httpTransport.js +0 -1276
  534. package/dist/transaction/transport/networkProbe.d.ts +0 -84
  535. package/dist/transaction/transport/networkProbe.js +0 -207
  536. package/dist/transaction/transport/wsFrameHandlers.d.ts +0 -128
  537. package/dist/transaction/transport/wsFrameHandlers.js +0 -429
  538. package/dist/transaction/transport/wsTransport.d.ts +0 -576
  539. package/dist/transaction/transport/wsTransport.js +0 -1017
  540. package/dist/transaction/types/assertExact.d.ts +0 -17
  541. package/dist/transaction/types/assertExact.js +0 -1
  542. package/dist/transaction/types/global.d.ts +0 -107
  543. package/dist/transaction/types/global.js +0 -40
  544. package/dist/transaction/types/index.d.ts +0 -205
  545. package/dist/transaction/types/index.js +0 -56
  546. package/dist/transaction/types/modelData.d.ts +0 -10
  547. package/dist/transaction/types/modelData.js +0 -9
  548. package/dist/transaction/types/participant.d.ts +0 -20
  549. package/dist/transaction/types/participant.js +0 -10
  550. package/dist/transaction/types/streams.d.ts +0 -540
  551. package/dist/transaction/types/streams.js +0 -11
  552. package/dist/transaction/utils/asyncIterator.d.ts +0 -34
  553. package/dist/transaction/utils/asyncIterator.js +0 -135
  554. package/dist/transaction/utils/duration.d.ts +0 -25
  555. package/dist/transaction/utils/duration.js +0 -45
  556. package/dist/transaction/utils/json.d.ts +0 -57
  557. package/dist/transaction/utils/json.js +0 -276
  558. package/dist/transaction/wire/accountResponses.d.ts +0 -351
  559. package/dist/transaction/wire/accountResponses.js +0 -255
  560. package/dist/transaction/wire/auth.d.ts +0 -49
  561. package/dist/transaction/wire/auth.js +0 -57
  562. package/dist/transaction/wire/bootstrapReason.d.ts +0 -9
  563. package/dist/transaction/wire/bootstrapReason.js +0 -8
  564. package/dist/transaction/wire/claimEvent.d.ts +0 -76
  565. package/dist/transaction/wire/claimEvent.js +0 -73
  566. package/dist/transaction/wire/claims.d.ts +0 -463
  567. package/dist/transaction/wire/claims.js +0 -229
  568. package/dist/transaction/wire/commit.d.ts +0 -603
  569. package/dist/transaction/wire/commit.js +0 -321
  570. package/dist/transaction/wire/delta.d.ts +0 -250
  571. package/dist/transaction/wire/delta.js +0 -147
  572. package/dist/transaction/wire/errorEnvelope.d.ts +0 -72
  573. package/dist/transaction/wire/errorEnvelope.js +0 -123
  574. package/dist/transaction/wire/feedCursor.d.ts +0 -60
  575. package/dist/transaction/wire/feedCursor.js +0 -82
  576. package/dist/transaction/wire/feedEvent.d.ts +0 -177
  577. package/dist/transaction/wire/feedEvent.js +0 -39
  578. package/dist/transaction/wire/frames.d.ts +0 -194
  579. package/dist/transaction/wire/frames.js +0 -50
  580. package/dist/transaction/wire/inboundFrames.d.ts +0 -552
  581. package/dist/transaction/wire/inboundFrames.js +0 -116
  582. package/dist/transaction/wire/index.d.ts +0 -50
  583. package/dist/transaction/wire/index.js +0 -74
  584. package/dist/transaction/wire/listEnvelope.d.ts +0 -37
  585. package/dist/transaction/wire/listEnvelope.js +0 -42
  586. package/dist/transaction/wire/modelResponses.d.ts +0 -85
  587. package/dist/transaction/wire/modelResponses.js +0 -43
  588. package/dist/transaction/wire/protocol.d.ts +0 -38
  589. package/dist/transaction/wire/protocol.js +0 -38
  590. package/dist/transaction/wire/protocolVersion.d.ts +0 -73
  591. package/dist/transaction/wire/protocolVersion.js +0 -83
  592. package/dist/transactions/mutations/MutationQueue.d.ts +0 -655
  593. package/dist/transactions/mutations/MutationQueue.js +0 -2797
  594. package/dist/transactions/mutations/MutationStore.d.ts +0 -20
  595. package/dist/transactions/mutations/MutationStore.js +0 -53
  596. package/dist/transactions/mutations/UnconfirmedWrites.d.ts +0 -82
  597. package/dist/transactions/mutations/UnconfirmedWrites.js +0 -104
  598. package/dist/transactions/mutations/coalesceRules.d.ts +0 -58
  599. package/dist/transactions/mutations/coalesceRules.js +0 -140
  600. package/dist/transactions/mutations/commitLatency.d.ts +0 -52
  601. package/dist/transactions/mutations/commitLatency.js +0 -130
  602. package/dist/transactions/mutations/commitOutboxStore.d.ts +0 -28
  603. package/dist/transactions/mutations/commitOutboxStore.js +0 -26
  604. package/dist/transactions/mutations/commitPayload.d.ts +0 -164
  605. package/dist/transactions/mutations/commitPayload.js +0 -152
  606. package/dist/transactions/mutations/deltaConfirmation.d.ts +0 -59
  607. package/dist/transactions/mutations/deltaConfirmation.js +0 -233
  608. package/dist/transactions/mutations/durableWriteStore.d.ts +0 -14
  609. package/dist/transactions/mutations/durableWriteStore.js +0 -12
  610. package/dist/transactions/mutations/optimisticApply.d.ts +0 -49
  611. package/dist/transactions/mutations/optimisticApply.js +0 -65
  612. package/dist/transactions/mutations/replayValidation.d.ts +0 -186
  613. package/dist/transactions/mutations/replayValidation.js +0 -163
  614. package/dist/utils/mobxSetup.d.ts +0 -53
  615. package/dist/utils/mobxSetup.js +0 -330
  616. package/dist/webhooks/events.d.ts +0 -43
  617. package/dist/webhooks/events.js +0 -42
  618. package/dist/webhooks/index.d.ts +0 -8
  619. package/dist/webhooks/index.js +0 -8
  620. package/dist/wire/index.d.ts +0 -1
  621. package/dist/wire/index.js +0 -8
  622. package/docs/interaction-model.md +0 -99
@@ -1,97 +0,0 @@
1
- /**
2
- * Records where this client stands in the global delta order. It is a single
3
- * typed object holding three related but distinct positions, each with its own
4
- * rule for when it may advance. Keeping them separate is deliberate: collapsing
5
- * them into one counter is a classic source of sync bugs.
6
- *
7
- * - `persisted` — the resume cursor. It advances only after deltas have
8
- * committed to durable local storage. This is the value reconnect catch-up
9
- * sends to the server, so it must never run ahead of what actually landed
10
- * on disk; otherwise the server would skip deltas the client never stored.
11
- *
12
- * - `applied` — the in-memory cursor: the last delta applied to the object
13
- * pool. It drives the guards that deduplicate and reject replayed deltas.
14
- * It may run ahead of `persisted`, because the pool is updated before the
15
- * flush to disk, and behind what has merely been received, because
16
- * bootstrap-queued deltas arrive before they are applied.
17
- *
18
- * - `acked` — the highest server position acknowledged for this client's own
19
- * commits. An acknowledgement at N means the server applied our write at N;
20
- * the optimistic pool already reflects it, so for the entities we wrote we
21
- * have effectively read through N even before the echo returns on the
22
- * stream.
23
- *
24
- * One value is derived: `readFloor` is the greater of `applied` and `acked`,
25
- * and is the only position a snapshot or claim should stamp as its read point.
26
- * Using the raw stream cursor alone would make a claim taken right after a
27
- * confirmed write look stale against that write's own delta; using the raw
28
- * acknowledgement alone would be wrong for read-only clients. The maximum is
29
- * correct per entity, because a competing change to an entity we just wrote
30
- * necessarily lands above our acknowledgement and still rejects as stale.
31
- *
32
- * The validation schema is the state shape: the class holds exactly one
33
- * {@link LogPositionSnapshot} and merges monotonically into it, so snapshot
34
- * and restore share that shape and {@link parseLogPosition} is the single gate
35
- * for anything loaded from disk — a corrupted cursor stored "ahead of reality"
36
- * being a known failure mode.
37
- */
38
- import { z } from 'zod';
39
- export declare const logPositionSchema: z.ZodObject<{
40
- persisted: z.ZodNumber;
41
- applied: z.ZodNumber;
42
- acked: z.ZodNumber;
43
- }, z.core.$strip>;
44
- export type LogPositionSnapshot = z.infer<typeof logPositionSchema>;
45
- /**
46
- * Only the `persisted` cursor is stored durably; `applied` and `acked` are
47
- * not. On resume the object pool is rebuilt from the persisted state, so the
48
- * correct restore is simply to advance `persisted` to the stored value, which
49
- * also implies `applied`. `acked` starts at zero, because a past session's
50
- * acknowledgements carry no read authority and the offline queue
51
- * re-acknowledges its own replays.
52
- */
53
- /**
54
- * Validates an untrusted value, such as one loaded from disk, into a position
55
- * snapshot, or returns null when it does not match the schema.
56
- */
57
- export declare function parseLogPosition(value: unknown): LogPositionSnapshot | null;
58
- /**
59
- * The live sync position: one instance per client. Three producers each
60
- * advance their own cursor, and consumers read the result.
61
- */
62
- export declare class LogPosition {
63
- #private;
64
- /** Returns a copy of the current state in the schema's shape. */
65
- snapshot(): LogPositionSnapshot;
66
- get persisted(): number;
67
- get applied(): number;
68
- get acked(): number;
69
- /** The position a snapshot or claim stamps as its read point: the greater of `applied` and `acked`. */
70
- get readFloor(): number;
71
- /**
72
- * Records that deltas through `syncId` have committed to durable local
73
- * storage. This also advances `applied`, since the flush applies each delta
74
- * before or as it persists.
75
- */
76
- advancePersisted(syncId: number): void;
77
- /** Records that a delta was applied to the in-memory object pool. */
78
- advanceApplied(syncId: number): void;
79
- /** Records that the server acknowledged one of this client's commits at the given position. */
80
- noteAck(lastSyncId: number | undefined): void;
81
- /** Restores from an already-validated snapshot, for example on resume from disk. The merge is monotonic. */
82
- restore(snapshot: LogPositionSnapshot): void;
83
- }
84
- /** @deprecated Renamed to {@link logPositionSchema}. Removed in 0.36.0. */
85
- export declare const syncPositionSchema: z.ZodObject<{
86
- persisted: z.ZodNumber;
87
- applied: z.ZodNumber;
88
- acked: z.ZodNumber;
89
- }, z.core.$strip>;
90
- /** @deprecated Renamed to {@link LogPositionSnapshot}. Removed in 0.36.0. */
91
- export type SyncPositionSnapshot = LogPositionSnapshot;
92
- /** @deprecated Renamed to {@link parseLogPosition}. Removed in 0.36.0. */
93
- export declare const parseSyncPosition: typeof parseLogPosition;
94
- /** @deprecated Renamed to {@link LogPosition}. Removed in 0.36.0. */
95
- export declare const SyncPosition: typeof LogPosition;
96
- /** @deprecated Renamed to {@link LogPosition}. Removed in 0.36.0. */
97
- export type SyncPosition = LogPosition;
@@ -1,125 +0,0 @@
1
- /**
2
- * Records where this client stands in the global delta order. It is a single
3
- * typed object holding three related but distinct positions, each with its own
4
- * rule for when it may advance. Keeping them separate is deliberate: collapsing
5
- * them into one counter is a classic source of sync bugs.
6
- *
7
- * - `persisted` — the resume cursor. It advances only after deltas have
8
- * committed to durable local storage. This is the value reconnect catch-up
9
- * sends to the server, so it must never run ahead of what actually landed
10
- * on disk; otherwise the server would skip deltas the client never stored.
11
- *
12
- * - `applied` — the in-memory cursor: the last delta applied to the object
13
- * pool. It drives the guards that deduplicate and reject replayed deltas.
14
- * It may run ahead of `persisted`, because the pool is updated before the
15
- * flush to disk, and behind what has merely been received, because
16
- * bootstrap-queued deltas arrive before they are applied.
17
- *
18
- * - `acked` — the highest server position acknowledged for this client's own
19
- * commits. An acknowledgement at N means the server applied our write at N;
20
- * the optimistic pool already reflects it, so for the entities we wrote we
21
- * have effectively read through N even before the echo returns on the
22
- * stream.
23
- *
24
- * One value is derived: `readFloor` is the greater of `applied` and `acked`,
25
- * and is the only position a snapshot or claim should stamp as its read point.
26
- * Using the raw stream cursor alone would make a claim taken right after a
27
- * confirmed write look stale against that write's own delta; using the raw
28
- * acknowledgement alone would be wrong for read-only clients. The maximum is
29
- * correct per entity, because a competing change to an entity we just wrote
30
- * necessarily lands above our acknowledgement and still rejects as stale.
31
- *
32
- * The validation schema is the state shape: the class holds exactly one
33
- * {@link LogPositionSnapshot} and merges monotonically into it, so snapshot
34
- * and restore share that shape and {@link parseLogPosition} is the single gate
35
- * for anything loaded from disk — a corrupted cursor stored "ahead of reality"
36
- * being a known failure mode.
37
- */
38
- import { z } from 'zod';
39
- export const logPositionSchema = z.object({
40
- /** The resume cursor; advances only after deltas persist to durable local storage. */
41
- persisted: z.number().int().nonnegative(),
42
- /** The in-memory cursor: the last delta applied to the object pool. */
43
- applied: z.number().int().nonnegative(),
44
- /** The highest server position acknowledged for this client's own commits. */
45
- acked: z.number().int().nonnegative(),
46
- });
47
- /**
48
- * Only the `persisted` cursor is stored durably; `applied` and `acked` are
49
- * not. On resume the object pool is rebuilt from the persisted state, so the
50
- * correct restore is simply to advance `persisted` to the stored value, which
51
- * also implies `applied`. `acked` starts at zero, because a past session's
52
- * acknowledgements carry no read authority and the offline queue
53
- * re-acknowledges its own replays.
54
- */
55
- /**
56
- * Validates an untrusted value, such as one loaded from disk, into a position
57
- * snapshot, or returns null when it does not match the schema.
58
- */
59
- export function parseLogPosition(value) {
60
- const result = logPositionSchema.safeParse(value);
61
- return result.success ? result.data : null;
62
- }
63
- const ZERO = { persisted: 0, applied: 0, acked: 0 };
64
- /** Monotonic merge: each cursor only ever moves forward. */
65
- function advance(state, next) {
66
- return {
67
- persisted: Math.max(state.persisted, next.persisted ?? 0),
68
- applied: Math.max(state.applied, next.applied ?? 0),
69
- acked: Math.max(state.acked, next.acked ?? 0),
70
- };
71
- }
72
- /**
73
- * The live sync position: one instance per client. Three producers each
74
- * advance their own cursor, and consumers read the result.
75
- */
76
- export class LogPosition {
77
- #state = ZERO;
78
- /** Returns a copy of the current state in the schema's shape. */
79
- snapshot() {
80
- return { ...this.#state };
81
- }
82
- get persisted() {
83
- return this.#state.persisted;
84
- }
85
- get applied() {
86
- return this.#state.applied;
87
- }
88
- get acked() {
89
- return this.#state.acked;
90
- }
91
- /** The position a snapshot or claim stamps as its read point: the greater of `applied` and `acked`. */
92
- get readFloor() {
93
- return Math.max(this.#state.applied, this.#state.acked);
94
- }
95
- /**
96
- * Records that deltas through `syncId` have committed to durable local
97
- * storage. This also advances `applied`, since the flush applies each delta
98
- * before or as it persists.
99
- */
100
- advancePersisted(syncId) {
101
- this.#state = advance(this.#state, { persisted: syncId, applied: syncId });
102
- }
103
- /** Records that a delta was applied to the in-memory object pool. */
104
- advanceApplied(syncId) {
105
- this.#state = advance(this.#state, { applied: syncId });
106
- }
107
- /** Records that the server acknowledged one of this client's commits at the given position. */
108
- noteAck(lastSyncId) {
109
- if (lastSyncId !== undefined)
110
- this.#state = advance(this.#state, { acked: lastSyncId });
111
- }
112
- /** Restores from an already-validated snapshot, for example on resume from disk. The merge is monotonic. */
113
- restore(snapshot) {
114
- this.#state = advance(this.#state, snapshot);
115
- }
116
- }
117
- // ── Deprecated aliases (renamed from the sync/syncPosition module, 2026-07-17) ──
118
- // The position is a participant's place in the transaction log; the old names
119
- // said the consumer. Same class, same instanceof identity. Removed in 0.36.0.
120
- /** @deprecated Renamed to {@link logPositionSchema}. Removed in 0.36.0. */
121
- export const syncPositionSchema = logPositionSchema;
122
- /** @deprecated Renamed to {@link parseLogPosition}. Removed in 0.36.0. */
123
- export const parseSyncPosition = parseLogPosition;
124
- /** @deprecated Renamed to {@link LogPosition}. Removed in 0.36.0. */
125
- export const SyncPosition = LogPosition;
@@ -1,16 +0,0 @@
1
- /**
2
- * The logging port the SDK writes through.
3
- *
4
- * A contract with no framework and no local state: credential exchange, commit,
5
- * and claim all need to log with no UI and no offline store present, so the port
6
- * belongs to the settlement core (ADR 0016). The consumer supplies the
7
- * implementation; the SDK ships a no-op default.
8
- */
9
- export interface Logger {
10
- debug(message: string, ...args: unknown[]): void;
11
- info(message: string, ...args: unknown[]): void;
12
- warn(message: string, ...args: unknown[]): void;
13
- error(message: string, ...args: unknown[]): void;
14
- }
15
- /** The no-op default — what the core logs through when no logger is wired. */
16
- export declare const noopLogger: Logger;
@@ -1,7 +0,0 @@
1
- /** The no-op default — what the core logs through when no logger is wired. */
2
- export const noopLogger = {
3
- debug() { },
4
- info() { },
5
- warn() { },
6
- error() { },
7
- };
@@ -1,53 +0,0 @@
1
- /**
2
- * The observability the settlement core reports on its own behalf.
3
- *
4
- * Coordination outcomes — a claim changing state, a stale-write collision that
5
- * notified instead of aborting — happen with no UI and no local store anywhere,
6
- * so the core must be able to report them without depending on the consumer's
7
- * full provider (ADR 0016).
8
- *
9
- * This is deliberately the narrow set the core actually calls today. Widening it
10
- * later is non-breaking; the reactive engine's `ObservabilityProvider` extends
11
- * this interface, so a single implementation still satisfies both.
12
- */
13
- import type { ClaimEvent, ConflictEvent } from './coordination/events.js';
14
- export interface CoordinationObservability {
15
- /** Capture a claim state change (acquired / queued / granted / lost / rejected / expired). */
16
- captureClaim(event: ClaimEvent): void;
17
- /** Capture a notify-instead-of-abort stale-write collision. */
18
- captureConflict(event: ConflictEvent): void;
19
- }
20
- /** Breadcrumb severity levels */
21
- export type BreadcrumbLevel = 'debug' | 'info' | 'warning' | 'error';
22
- /** Breadcrumb categories for sync engine lifecycle events */
23
- export type BreadcrumbCategory = 'sync.bootstrap' | 'sync.transaction' | 'sync.websocket' | 'sync.offline' | 'sync.database' | 'sync.conflict' | 'sync.coordination' | 'sync.groups';
24
- export interface WebSocketErrorDetails {
25
- context: string;
26
- error?: string;
27
- code?: number;
28
- reason?: string;
29
- }
30
- /**
31
- * The observability the duplex transport reports on its own behalf: connection
32
- * lifecycle breadcrumbs and socket errors. A server-side agent holding a socket
33
- * for claim push has no store and no UI, so the transport must be able to
34
- * report without the consumer's full provider — the same reasoning as
35
- * {@link CoordinationObservability}, one layer down. The reactive engine's
36
- * `ObservabilityProvider` extends this interface, so a single implementation
37
- * satisfies both.
38
- */
39
- export interface TransportObservability {
40
- /** Add a breadcrumb for sync lifecycle events */
41
- breadcrumb(message: string, category: BreadcrumbCategory, level?: BreadcrumbLevel, data?: Record<string, string | number | boolean | undefined>): void;
42
- /** Capture WebSocket error */
43
- captureWebSocketError(details: WebSocketErrorDetails): void;
44
- }
45
- /**
46
- * Everything the duplex transport reports: its own lifecycle
47
- * ({@link TransportObservability}) plus the coordination outcomes that ride
48
- * the socket ({@link CoordinationObservability} — claim pushes and notified
49
- * collisions arrive as frames, so the transport is where they surface).
50
- */
51
- export type SocketObservability = TransportObservability & CoordinationObservability;
52
- /** The no-op default — what the transport reports through when nothing is wired. */
53
- export declare const noopSocketObservability: SocketObservability;
@@ -1,19 +0,0 @@
1
- /**
2
- * The observability the settlement core reports on its own behalf.
3
- *
4
- * Coordination outcomes — a claim changing state, a stale-write collision that
5
- * notified instead of aborting — happen with no UI and no local store anywhere,
6
- * so the core must be able to report them without depending on the consumer's
7
- * full provider (ADR 0016).
8
- *
9
- * This is deliberately the narrow set the core actually calls today. Widening it
10
- * later is non-breaking; the reactive engine's `ObservabilityProvider` extends
11
- * this interface, so a single implementation still satisfies both.
12
- */
13
- /** The no-op default — what the transport reports through when nothing is wired. */
14
- export const noopSocketObservability = {
15
- breadcrumb() { },
16
- captureWebSocketError() { },
17
- captureClaim() { },
18
- captureConflict() { },
19
- };
@@ -1,12 +0,0 @@
1
- /**
2
- * Local persistence modes. `'memory'` (the default everywhere outside the
3
- * browser) keeps the local graph in process memory; `'indexeddb'` adds
4
- * offline queueing and a reload-surviving cache in the browser.
5
- */
6
- export type AbloPersistence = 'memory' | 'indexeddb';
7
- export interface PersistenceOptions {
8
- readonly persistence?: AbloPersistence | undefined;
9
- readonly inMemory?: boolean | undefined;
10
- readonly offline?: boolean | undefined;
11
- }
12
- export declare function shouldUseInMemoryPersistence(options: PersistenceOptions): boolean;
@@ -1,11 +0,0 @@
1
- export function shouldUseInMemoryPersistence(options) {
2
- if (typeof window === 'undefined')
3
- return true;
4
- if (options.persistence)
5
- return options.persistence === 'memory';
6
- if (typeof options.inMemory === 'boolean')
7
- return options.inMemory;
8
- if (options.offline === true)
9
- return false;
10
- return true;
11
- }
@@ -1,192 +0,0 @@
1
- /**
2
- * The plugin contract (ADR 0016).
3
- *
4
- * The core is `commit` · `get`/`list` · `observe` · `claim` · auth. Everything
5
- * else a caller might want — a local materialised copy, presence rendering,
6
- * batching, framework bindings — is a plugin declared in one list, so a server
7
- * or an agent installs only what it asked for.
8
- *
9
- * Every plugin has the same shape on purpose. Uniformity is what makes the list
10
- * composable and the types inferable; bespoke plugins would reproduce today's
11
- * nineteen export subpaths with extra ceremony.
12
- *
13
- * Where this shape came from, and the field-by-field reasoning behind it, is
14
- * recorded in ADR 0016 — the contract itself only states what each field does.
15
- */
16
- import type { ParticipantKind } from './types/participant.js';
17
- import type { ErrorCodeSpec } from './errorCodes.js';
18
- import type { Logger } from './logger.js';
19
- import type { CoordinationObservability } from './observability.js';
20
- import type { WsTransport } from './transport/wsTransport.js';
21
- /**
22
- * A string type that keeps literal inference alive: `id: 'humans'` stays the
23
- * literal `'humans'` through object-literal inference instead of widening to
24
- * `string`, which is what lets {@link InstalledSurface} key a plugin list's
25
- * surface by id.
26
- */
27
- export type LiteralString = '' | (string & Record<never, never>);
28
- /**
29
- * The ordered stages a delta passes through on its way from the feed into
30
- * whatever is watching. A plugin names the one it attaches to.
31
- *
32
- * The order is not a convention — it is a correctness constraint. `acknowledge`
33
- * must follow `persist`, because acknowledging the input range rather than the
34
- * persisted high-water mark advances the server's cursor past deltas that never
35
- * committed, and the next catch-up then answers "you're up to date" for a delta
36
- * that was lost. Declaring the stage keeps that ordering out of array position,
37
- * where it would be load-bearing and undocumented.
38
- */
39
- export type PipelineStage =
40
- /** Deltas arrive from `observe()` and are queued. */
41
- 'receive'
42
- /** Per-entity collapse of the queued batch. */
43
- | 'dedupe'
44
- /** The batch is written to durable local storage. */
45
- | 'persist'
46
- /** Persisted results land in the in-memory graph. */
47
- | 'apply'
48
- /** The cursor advances — gated on `persist`, never on the input range. */
49
- | 'acknowledge'
50
- /** Anything downstream reacts: re-render, presence, subscribers. */
51
- | 'notify';
52
- /** Canonical order. A plugin runner must run stages in this sequence. */
53
- export declare const PIPELINE_STAGES: readonly PipelineStage[];
54
- /**
55
- * What a capability needs from whatever transport was selected.
56
- *
57
- * Transport is a slot the caller fills, not a packaging axis, so a capability
58
- * states its requirement and an incompatible pairing fails when the client is
59
- * configured — with a typed error naming the plugin — rather than at runtime
60
- * with a subscription that silently never delivers.
61
- */
62
- export interface TransportCapabilities {
63
- /**
64
- * Requires a transport the server can initiate frames on. Live subscriptions,
65
- * presence, and claim grants need this; commit and point-in-time reads do not.
66
- */
67
- readonly duplex?: boolean;
68
- }
69
- /**
70
- * The core surface a plugin is handed at construction.
71
- *
72
- * Generic over the client's options type: the host instantiates it with its
73
- * own options bag, so a plugin reads configuration without this package
74
- * naming any consumer's types. Alongside the raw options, the context
75
- * carries the values the host has already resolved (`participant`,
76
- * `syncGroups`), so a plugin never re-derives identity.
77
- */
78
- export interface PluginContext<Options = unknown> {
79
- readonly logger: Logger;
80
- readonly observability?: CoordinationObservability;
81
- /** The client's own options bag, as the host received it. */
82
- readonly options?: Options;
83
- /**
84
- * The live duplex connection. The host builds it during construction, so a
85
- * plugin holds the thing rather than a function that fetches it: the
86
- * connection object is stable for the client's lifetime — identity and
87
- * read scope are seeded into it when they resolve, and reconnects replace
88
- * only the socket inside it, never the object. Absent on a
89
- * request-response client, which is what `requires: { duplex: true }`
90
- * guards.
91
- */
92
- readonly transport?: WsTransport;
93
- /** The participant this client runs as, when known at construction. */
94
- readonly participant?: {
95
- readonly id: string;
96
- readonly kind: ParticipantKind;
97
- };
98
- /** The connection's initial read scope (sync groups). */
99
- readonly syncGroups?: readonly string[];
100
- }
101
- /**
102
- * One installed capability.
103
- *
104
- * @typeParam Surface - what `init` contributes to the client. The plugin list's
105
- * element types are what let the installed surface be inferred rather than
106
- * declared.
107
- */
108
- export interface AbloPlugin<Surface = unknown> {
109
- /** Stable identity — deduplication, diagnostics, and error attribution.
110
- * Literal-typed so a list's installed surface can be keyed by it. */
111
- readonly id: LiteralString;
112
- /** The plugin's own version, for diagnostics. */
113
- readonly version?: string;
114
- /** What this plugin needs from the transport. Checked at configuration time. */
115
- readonly requires?: TransportCapabilities;
116
- /**
117
- * Whether this plugin keeps a local copy of rows.
118
- *
119
- * This is ADR 0013 §4's membership test as a declared, checkable property
120
- * rather than a rule someone has to remember: a stateless caller can assert
121
- * that nothing in its list materialises, and CI can assert the core's own
122
- * list is uniformly `false`.
123
- */
124
- readonly materialises: boolean;
125
- /**
126
- * Error codes this plugin may raise, folded into the registry.
127
- *
128
- * Registration is part of the contract because the error catalog is
129
- * generated — a plugin that invents untyped errors would silently punch a
130
- * hole in the published reference.
131
- */
132
- readonly errorCodes?: Readonly<Record<string, ErrorCodeSpec>>;
133
- /** Which pipeline stage this plugin attaches to, if it observes deltas. */
134
- readonly stage?: PipelineStage;
135
- /** Build the plugin's contribution to the client surface. */
136
- init(context: PluginContext): Surface;
137
- }
138
- /** The surface a plugin list contributes, keyed by plugin id. */
139
- export type InstalledSurface<Plugins extends readonly AbloPlugin[]> = {
140
- [P in Plugins[number] as P['id']]: P extends AbloPlugin<infer S> ? S : never;
141
- };
142
- /**
143
- * The plugin with the given id in a list, or `never` when absent. Sound
144
- * because ids are literal ({@link LiteralString}); a list typed only as
145
- * `AbloPlugin[]` has widened ids and resolves to `never`, so write plugin
146
- * lists inline for the client type to follow them.
147
- */
148
- export type PluginById<Plugins extends readonly AbloPlugin[], Id extends string> = Extract<Plugins[number], {
149
- id: Id;
150
- }>;
151
- /** Collapses a union into an intersection, member by member. */
152
- type UnionToIntersection<U> = (U extends unknown ? (member: U) => void : never) extends (member: infer I) => void ? I : never;
153
- /**
154
- * Every surface in a plugin list, folded into the one shape that merges onto
155
- * the client: `[a(), b()]` contributes `ASurface & BSurface`. An empty list
156
- * contributes nothing (`unknown`), so intersecting it changes no type.
157
- */
158
- export type MergedSurface<Plugins extends readonly AbloPlugin[]> = [
159
- Plugins[number]
160
- ] extends [never] ? unknown : UnionToIntersection<Plugins[number] extends AbloPlugin<infer Surface> ? Surface : never>;
161
- /** What the selected transport can actually do, for checking `requires`. */
162
- export interface TransportProfile {
163
- readonly duplex: boolean;
164
- }
165
- /**
166
- * Check a plugin list against the selected transport and build its surface.
167
- *
168
- * Both failures are configuration mistakes, so they surface here — while the
169
- * client is being constructed and the stack still points at the caller's own
170
- * setup — rather than later as a subscription that never delivers.
171
- */
172
- export declare function resolvePlugins<const Plugins extends readonly AbloPlugin[], Options = unknown>(plugins: Plugins, transport: TransportProfile, context: PluginContext<Options>): InstalledSurface<Plugins>;
173
- /**
174
- * Lays every installed plugin surface over a built client, so a plugin's
175
- * contributions are reachable as client members. The base always wins — a
176
- * plugin cannot shadow `dispose`, a model accessor, or any other member the
177
- * client itself defines; contributions only fill what the base leaves
178
- * undefined. With nothing installed the base is returned untouched.
179
- *
180
- * The second half of {@link resolvePlugins}: that call turns a list into a
181
- * surface, this one merges the surface onto the client the host built.
182
- */
183
- export declare function layerPluginSurface<T extends object>(base: T, installed: Record<string, unknown>): T;
184
- /**
185
- * The plugins attached to one pipeline stage, in declaration order.
186
- *
187
- * Stage order across the pipeline is fixed by {@link PIPELINE_STAGES}; this
188
- * returns the members of a single stage, where declaration order is the caller's
189
- * to choose and carries no correctness weight.
190
- */
191
- export declare function pluginsForStage(plugins: readonly AbloPlugin[], stage: PipelineStage): readonly AbloPlugin[];
192
- export {};
@@ -1,87 +0,0 @@
1
- /**
2
- * The plugin contract (ADR 0016).
3
- *
4
- * The core is `commit` · `get`/`list` · `observe` · `claim` · auth. Everything
5
- * else a caller might want — a local materialised copy, presence rendering,
6
- * batching, framework bindings — is a plugin declared in one list, so a server
7
- * or an agent installs only what it asked for.
8
- *
9
- * Every plugin has the same shape on purpose. Uniformity is what makes the list
10
- * composable and the types inferable; bespoke plugins would reproduce today's
11
- * nineteen export subpaths with extra ceremony.
12
- *
13
- * Where this shape came from, and the field-by-field reasoning behind it, is
14
- * recorded in ADR 0016 — the contract itself only states what each field does.
15
- */
16
- import { AbloValidationError } from './errors.js';
17
- /** Canonical order. A plugin runner must run stages in this sequence. */
18
- export const PIPELINE_STAGES = [
19
- 'receive',
20
- 'dedupe',
21
- 'persist',
22
- 'apply',
23
- 'acknowledge',
24
- 'notify',
25
- ];
26
- /**
27
- * Check a plugin list against the selected transport and build its surface.
28
- *
29
- * Both failures are configuration mistakes, so they surface here — while the
30
- * client is being constructed and the stack still points at the caller's own
31
- * setup — rather than later as a subscription that never delivers.
32
- */
33
- export function resolvePlugins(plugins, transport, context) {
34
- const surface = {};
35
- const seen = new Set();
36
- for (const plugin of plugins) {
37
- if (seen.has(plugin.id)) {
38
- throw new AbloValidationError(`The ${plugin.id} plugin is listed twice. Remove the duplicate; a plugin is installed once per client.`, { code: 'invalid_options', param: 'plugins' });
39
- }
40
- seen.add(plugin.id);
41
- if (plugin.requires?.duplex && !transport.duplex) {
42
- throw new AbloValidationError(`The ${plugin.id} plugin needs a connection the server can send on, and this client is set up for request-response only. Switch the transport to 'websocket', or drop the plugin.`, { code: 'invalid_options', param: 'plugins' });
43
- }
44
- surface[plugin.id] = plugin.init(context);
45
- }
46
- return surface;
47
- }
48
- /**
49
- * Lays every installed plugin surface over a built client, so a plugin's
50
- * contributions are reachable as client members. The base always wins — a
51
- * plugin cannot shadow `dispose`, a model accessor, or any other member the
52
- * client itself defines; contributions only fill what the base leaves
53
- * undefined. With nothing installed the base is returned untouched.
54
- *
55
- * The second half of {@link resolvePlugins}: that call turns a list into a
56
- * surface, this one merges the surface onto the client the host built.
57
- */
58
- export function layerPluginSurface(base, installed) {
59
- const contributions = {};
60
- for (const surface of Object.values(installed)) {
61
- if (surface && typeof surface === 'object') {
62
- Object.assign(contributions, surface);
63
- }
64
- }
65
- if (Object.keys(contributions).length === 0)
66
- return base;
67
- return new Proxy(base, {
68
- get(target, prop, receiver) {
69
- const own = Reflect.get(target, prop, receiver);
70
- if (own !== undefined)
71
- return own;
72
- return typeof prop === 'string' && prop in contributions
73
- ? contributions[prop]
74
- : own;
75
- },
76
- });
77
- }
78
- /**
79
- * The plugins attached to one pipeline stage, in declaration order.
80
- *
81
- * Stage order across the pipeline is fixed by {@link PIPELINE_STAGES}; this
82
- * returns the members of a single stage, where declaration order is the caller's
83
- * to choose and carries no correctness weight.
84
- */
85
- export function pluginsForStage(plugins, stage) {
86
- return plugins.filter((plugin) => plugin.stage === stage);
87
- }