@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,7 +0,0 @@
1
- /**
2
- * Moved to the settlement core (ADR 0016): claim push is coordination, and
3
- * coordination is the product — a contending agent wants `claim_granted`
4
- * pushed exactly as much as a person does. This path re-exports it so
5
- * existing importers stay unchanged.
6
- */
7
- export { createClaimStream, type ClaimTransport, type ClaimStreamConfig, type AttachableClaimStream, } from '../transaction/coordination/createClaimStream.js';
@@ -1,7 +0,0 @@
1
- /**
2
- * Moved to the settlement core (ADR 0016): claim push is coordination, and
3
- * coordination is the product — a contending agent wants `claim_granted`
4
- * pushed exactly as much as a person does. This path re-exports it so
5
- * existing importers stay unchanged.
6
- */
7
- export { createClaimStream, } from '../transaction/coordination/createClaimStream.js';
@@ -1,69 +0,0 @@
1
- /**
2
- * Creates a {@link PresenceStream} over a live sync connection. Presence is the
3
- * lightweight, ephemeral "who's here and what are they doing" view: each
4
- * participant broadcasts a status and an activity, and sees everyone else's.
5
- * The stream is built directly on the sync WebSocket and adds no second
6
- * connection. It is the sibling of {@link createClaimStream}, which reuses the
7
- * same presence frames.
8
- *
9
- * There are two ways to construct it:
10
- *
11
- * 1. Direct — pass an already-open `transport`, for example an agent worker
12
- * or a test.
13
- * 2. Deferred — construct without a transport and call `attach(transport)`
14
- * once the connection is ready. The returned stream object is stable from
15
- * construction, so callers can hold the reference and let attachment
16
- * happen later.
17
- *
18
- * Wire frames:
19
- * • Outbound `presence_update` — `{ status, activity? }`. The server stamps
20
- * `userId`, `kind`, `timestamp`, and `isAgent`, then broadcasts to the
21
- * other participants on the same sync groups.
22
- * • Inbound — the same frame, with `kind` one of `enter`, `update`, or
23
- * `leave`.
24
- */
25
- import type { WsTransport } from '../transaction/transport/wsTransport.js';
26
- import type { PresenceStream } from '../transaction/types/streams.js';
27
- import type { ParticipantKind } from '../transaction/types/participant.js';
28
- /**
29
- * The wire capability the presence stream actually uses: subscribe to typed
30
- * inbound frames, check liveness, and send outbound frames. The duplex
31
- * `WsTransport` satisfies it — the same port shape the claim stream depends
32
- * on — so the stream can attach to whatever connection the host built,
33
- * without naming the engine's subclass.
34
- */
35
- export type PresenceTransport = Pick<WsTransport, 'subscribe' | 'isConnected' | 'send'>;
36
- export interface PresenceStreamConfig {
37
- /** Identity used to filter our own echoed frames out of `others`. */
38
- participantId: string;
39
- /** Optional human label for the self entry. */
40
- label?: string;
41
- /** Sync groups the participant is broadcasting on. Used for the
42
- * initial `self` entry and for `othersIn(...)` filtering. */
43
- syncGroups: readonly string[];
44
- /** Marks `self` as an agent. Server is the source of truth for
45
- * peers' `isAgent`, but `self` is local — caller decides. */
46
- isAgent?: boolean;
47
- }
48
- /** PresenceStream extended with engine-lifecycle hooks. */
49
- export interface AttachablePresenceStream extends PresenceStream {
50
- /** Wire the stream to a now-ready transport. Calls before this are
51
- * buffered (self mutations only — no wire send). Idempotent. */
52
- attach(transport: PresenceTransport): void;
53
- /**
54
- * Seeds the participant identity once the host resolves it. The stream can
55
- * be built before identity is known — a hosted client learns who it is
56
- * from its credential's scope during connect — and until then the
57
- * construction-time values (possibly empty) would leave the `self` entry
58
- * blank and let the participant's own echoed frames into `others`. Updates
59
- * the `self` entry in place, so held references see the resolved identity.
60
- */
61
- setParticipant(participant: {
62
- id: string;
63
- kind?: ParticipantKind;
64
- syncGroups?: readonly string[];
65
- }): void;
66
- /** Tear down listeners. Stream object stays usable as a no-op. */
67
- dispose(): void;
68
- }
69
- export declare function createPresenceStream(config: PresenceStreamConfig, transport?: PresenceTransport | null): AttachablePresenceStream;
@@ -1,200 +0,0 @@
1
- /**
2
- * Creates a {@link PresenceStream} over a live sync connection. Presence is the
3
- * lightweight, ephemeral "who's here and what are they doing" view: each
4
- * participant broadcasts a status and an activity, and sees everyone else's.
5
- * The stream is built directly on the sync WebSocket and adds no second
6
- * connection. It is the sibling of {@link createClaimStream}, which reuses the
7
- * same presence frames.
8
- *
9
- * There are two ways to construct it:
10
- *
11
- * 1. Direct — pass an already-open `transport`, for example an agent worker
12
- * or a test.
13
- * 2. Deferred — construct without a transport and call `attach(transport)`
14
- * once the connection is ready. The returned stream object is stable from
15
- * construction, so callers can hold the reference and let attachment
16
- * happen later.
17
- *
18
- * Wire frames:
19
- * • Outbound `presence_update` — `{ status, activity? }`. The server stamps
20
- * `userId`, `kind`, `timestamp`, and `isAgent`, then broadcasts to the
21
- * other participants on the same sync groups.
22
- * • Inbound — the same frame, with `kind` one of `enter`, `update`, or
23
- * `leave`.
24
- */
25
- import { asyncIteratorFrom } from '../transaction/utils/asyncIterator.js';
26
- import { participantKindFromWire } from '../transaction/coordination/schema.js';
27
- import { isTargetTuple, subTarget, wireTarget } from '../transaction/coordination/index.js';
28
- export function createPresenceStream(config, transport = null) {
29
- const { label, syncGroups, isAgent = false } = config;
30
- // Mutable: the host seeds the resolved identity via `setParticipant` once
31
- // it is known; the own-echo filter always reads the current value.
32
- let participantId = config.participantId;
33
- // ── Self ─────────────────────────────────────────────────────────
34
- const self = {
35
- participantKind: isAgent ? 'agent' : 'user',
36
- participantId,
37
- label,
38
- syncGroups: [...syncGroups],
39
- activity: { entityType: 'Unknown', entityId: '', action: 'idle' },
40
- lastActive: new Date().toISOString(),
41
- };
42
- // ── Others ───────────────────────────────────────────────────────
43
- const othersById = new Map();
44
- let othersSnapshot = Object.freeze([]);
45
- const listeners = new Set();
46
- const notifyListeners = () => {
47
- othersSnapshot = Object.freeze(Array.from(othersById.values()));
48
- for (const l of listeners) {
49
- try {
50
- l();
51
- }
52
- catch {
53
- /* one bad listener doesn't break the others */
54
- }
55
- }
56
- };
57
- // ── Wire wiring ──────────────────────────────────────────────────
58
- let attached = null;
59
- const unsubs = [];
60
- function attach(t) {
61
- if (attached)
62
- return; // idempotent
63
- attached = t;
64
- // Reconnect: clear roster (Hub sends fresh snapshot), re-announce
65
- // own activity (peers don't auto-learn about us across reconnects).
66
- unsubs.push(t.subscribe('connected', () => {
67
- if (othersById.size > 0) {
68
- othersById.clear();
69
- othersSnapshot = Object.freeze([]);
70
- notifyListeners();
71
- }
72
- if (self.activity.entityId)
73
- sendUpdate(self.activity);
74
- }));
75
- // Inbound presence frames arrive in the wire vocabulary
76
- // (userId / isAgent / timestamp); translate them into the shape this
77
- // stream exposes (participantId / participantKind / lastActive).
78
- unsubs.push(t.subscribe('presence_update', (event) => {
79
- if (event.userId === participantId)
80
- return; // own echo
81
- if (!event.userId)
82
- return;
83
- switch (event.kind) {
84
- case 'leave':
85
- if (othersById.delete(event.userId))
86
- notifyListeners();
87
- return;
88
- // No `undefined` arm: every site that builds a presence frame stamps
89
- // `kind`, and the schema now says so, so an unlabelled frame is not a
90
- // shape the transport can hand us.
91
- case 'enter':
92
- case 'update': {
93
- const entry = {
94
- participantKind: participantKindFromWire(event.participantKind, event.isAgent),
95
- participantId: event.userId,
96
- syncGroups: event.syncGroups ?? [],
97
- activity: event.activity
98
- ? {
99
- ...wireTarget(event.activity),
100
- ...subTarget(event.activity),
101
- action: event.activity.action,
102
- ...(event.activity.detail !== undefined
103
- ? { detail: event.activity.detail }
104
- : {}),
105
- }
106
- : { entityType: 'Unknown', entityId: '', action: event.status },
107
- lastActive: event.timestamp
108
- ? new Date(event.timestamp).toISOString()
109
- : new Date().toISOString(),
110
- };
111
- othersById.set(event.userId, entry);
112
- notifyListeners();
113
- return;
114
- }
115
- }
116
- }));
117
- // If self was already mutated before attach, broadcast it now.
118
- if (self.activity.entityId)
119
- sendUpdate(self.activity);
120
- }
121
- if (transport)
122
- attach(transport);
123
- // ── Outbound ────────────────────────────────────────────────────
124
- // Do not include `isAgent` in the payload. The server derives it
125
- // authoritatively from the connection's identity, and letting a client
126
- // self-declare it once caused human sessions to broadcast as agents to peers.
127
- function sendUpdate(activity) {
128
- if (!attached?.isConnected())
129
- return; // no-op until connected
130
- attached.send({
131
- type: 'presence_update',
132
- payload: { status: 'online', activity },
133
- });
134
- }
135
- function doUpdate(activity) {
136
- self.activity = activity;
137
- self.lastActive = new Date().toISOString();
138
- sendUpdate(activity);
139
- }
140
- function resolveTarget(target) {
141
- if (isTargetTuple(target)) {
142
- return { entityType: target[0], entityId: target[1], action: 'unknown' };
143
- }
144
- return {
145
- ...wireTarget(target),
146
- ...subTarget(target),
147
- action: 'unknown',
148
- };
149
- }
150
- const withVerb = (action) => (target, detail) => {
151
- doUpdate({ ...resolveTarget(target), action, detail });
152
- };
153
- return {
154
- self,
155
- update: doUpdate,
156
- editing: withVerb('editing'),
157
- reading: withVerb('reading'),
158
- viewing: withVerb('viewing'),
159
- idle: () => {
160
- doUpdate({ entityType: 'Unknown', entityId: '', action: 'idle' });
161
- },
162
- get others() {
163
- return othersSnapshot;
164
- },
165
- othersIn: (syncGroup) => othersSnapshot.filter((e) => e.syncGroups.includes(syncGroup)),
166
- onChange: (listener) => {
167
- listeners.add(listener);
168
- return () => {
169
- listeners.delete(listener);
170
- };
171
- },
172
- [Symbol.asyncIterator]() {
173
- return asyncIteratorFrom((onChange) => {
174
- listeners.add(onChange);
175
- return () => {
176
- listeners.delete(onChange);
177
- };
178
- }, () => othersSnapshot);
179
- },
180
- attach,
181
- setParticipant(participant) {
182
- participantId = participant.id;
183
- const writable = self;
184
- writable.participantId = participant.id;
185
- if (participant.kind)
186
- writable.participantKind = participant.kind;
187
- if (participant.syncGroups)
188
- writable.syncGroups = [...participant.syncGroups];
189
- },
190
- dispose() {
191
- for (const off of unsubs)
192
- off();
193
- unsubs.length = 0;
194
- listeners.clear();
195
- othersById.clear();
196
- othersSnapshot = Object.freeze([]);
197
- attached = null;
198
- },
199
- };
200
- }
@@ -1,29 +0,0 @@
1
- /**
2
- * Captures a {@link Snapshot} of a chosen set of entities, along with a
3
- * watermark, so a caller can detect when that state has gone stale. This is
4
- * what an LLM caller threads into a prompt: `stamp` flows into later writes as
5
- * `readAt`, so the server rejects a mutation premised on data that has since
6
- * changed; `signal` is an `AbortSignal` that fires as soon as any captured
7
- * entity receives a delta, so a mid-generation invalidation can abort the token
8
- * stream instead of producing output against stale context.
9
- *
10
- * It reads the current entity state from the in-memory pool, reads the engine's
11
- * current `lastSyncId` as the watermark, and subscribes to delta frames on the
12
- * existing sync connection — no second connection.
13
- */
14
- import type { InstanceCache } from '../InstanceCache.js';
15
- import type { Schema } from '../transaction/schema/schema.js';
16
- import type { SyncWebSocket } from './SyncWebSocket.js';
17
- import type { Snapshot } from '../transaction/types/streams.js';
18
- export interface CreateSnapshotArgs<TSchema extends Schema = Schema, K extends keyof TSchema['models'] & string = keyof TSchema['models'] & string> {
19
- pool: InstanceCache;
20
- /** Live transport for delta subscriptions. May be null if the engine
21
- * hasn't connected yet — the snapshot still resolves with current
22
- * pool state, but `signal` won't fire until reconnect. */
23
- transport: SyncWebSocket | null;
24
- /** Returns the engine's current `lastSyncId`. Read at snapshot time
25
- * to stamp the watermark; not re-read after. */
26
- getLastSyncId: () => number;
27
- entities: Readonly<Record<K, string | readonly string[]>>;
28
- }
29
- export declare function createSnapshot<TSchema extends Schema, K extends keyof TSchema['models'] & string>(args: CreateSnapshotArgs<TSchema, K>): Snapshot<TSchema, K>;
@@ -1,118 +0,0 @@
1
- /**
2
- * Captures a {@link Snapshot} of a chosen set of entities, along with a
3
- * watermark, so a caller can detect when that state has gone stale. This is
4
- * what an LLM caller threads into a prompt: `stamp` flows into later writes as
5
- * `readAt`, so the server rejects a mutation premised on data that has since
6
- * changed; `signal` is an `AbortSignal` that fires as soon as any captured
7
- * entity receives a delta, so a mid-generation invalidation can abort the token
8
- * stream instead of producing output against stale context.
9
- *
10
- * It reads the current entity state from the in-memory pool, reads the engine's
11
- * current `lastSyncId` as the watermark, and subscribes to delta frames on the
12
- * existing sync connection — no second connection.
13
- */
14
- import { AbloValidationError } from '../transaction/errors.js';
15
- import { Model, modelAsRow } from '../Model.js';
16
- /**
17
- * The snapshot result exposes `stamp`, `signal`, and `onChange` at its top
18
- * level, alongside one bucket per model. If a schema declares a model with one
19
- * of these names, the two would collide, so snapshot creation throws instead.
20
- */
21
- const RESERVED_SNAPSHOT_KEYS = new Set([
22
- 'stamp',
23
- 'signal',
24
- 'onChange',
25
- ]);
26
- export function createSnapshot(args) {
27
- const { pool, transport, getLastSyncId, entities } = args;
28
- // ── Validate keys ────────────────────────────────────────────────
29
- for (const key of Object.keys(entities)) {
30
- if (RESERVED_SNAPSHOT_KEYS.has(key)) {
31
- throw new AbloValidationError(`engine.snapshot: model key "${key}" collides with a reserved ` +
32
- `snapshot field (stamp / signal / onChange). Rename the model ` +
33
- 'in your schema.', { code: 'snapshot_reserved_key' });
34
- }
35
- }
36
- // ── Watermark ────────────────────────────────────────────────────
37
- const stamp = getLastSyncId();
38
- // ── Capture data + watched set ───────────────────────────────────
39
- const watched = new Set(); // `${type}:${id}`
40
- const data = {};
41
- for (const [type, idOrIds] of Object.entries(entities)) {
42
- const ids = Array.isArray(idOrIds)
43
- ? idOrIds
44
- : [idOrIds];
45
- const bucket = {};
46
- for (const id of ids) {
47
- const m = pool.get(id);
48
- // Only include if the model actually has the requested type —
49
- // pool keys models globally by id, so `pool.get(id)` could
50
- // return a different model that happens to share the id (rare,
51
- // but type guards keep the surface honest).
52
- if (m && m instanceof Model && m.getModelName() === type) {
53
- bucket[id] = modelAsRow(m);
54
- }
55
- watched.add(`${type}:${id}`);
56
- }
57
- data[type] = bucket;
58
- }
59
- // ── Invalidation wiring ──────────────────────────────────────────
60
- const listeners = new Set();
61
- const controller = new AbortController();
62
- const fireChange = (change) => {
63
- if (!controller.signal.aborted) {
64
- controller.abort(new Error('snapshot invalidated — underlying entity received a delta'));
65
- }
66
- for (const l of listeners) {
67
- try {
68
- l(change);
69
- }
70
- catch {
71
- /* listener errors don't break siblings */
72
- }
73
- }
74
- };
75
- let unsubDelta = null;
76
- if (transport) {
77
- unsubDelta = transport.subscribe('delta', (delta) => {
78
- const key = `${delta.modelName}:${delta.modelId}`;
79
- if (!watched.has(key))
80
- return;
81
- // Every delta to a captured entity is reported as 'semantic' severity.
82
- fireChange({
83
- model: delta.modelName,
84
- id: delta.modelId,
85
- severity: 'semantic',
86
- });
87
- });
88
- }
89
- // ── Build the flat result ────────────────────────────────────────
90
- const result = {
91
- stamp,
92
- signal: controller.signal,
93
- onChange: (listener) => {
94
- listeners.add(listener);
95
- // The caller unsubscribes its own listener via the returned function.
96
- // The underlying delta subscription lives for the snapshot's lifetime;
97
- // there is no explicit dispose because a snapshot is short-lived (one
98
- // LLM call's worth) and the subscription is cheap.
99
- return () => {
100
- listeners.delete(listener);
101
- // Once the last listener is gone and the abort has fired, drop the
102
- // delta subscription too — nothing is listening anymore.
103
- if (listeners.size === 0 && controller.signal.aborted && unsubDelta) {
104
- unsubDelta();
105
- unsubDelta = null;
106
- }
107
- };
108
- },
109
- };
110
- for (const [modelName, bucket] of Object.entries(data)) {
111
- result[modelName] = bucket;
112
- }
113
- // Dynamic-shape boundary — `result` is built at runtime by iterating
114
- // schema-derived buckets, so it structurally satisfies
115
- // `Snapshot<TSchema, K>`. TS can't prove the static cast, but the
116
- // runtime invariant holds.
117
- return result;
118
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * Moved to the settlement core with the duplex transport (ADR 0016): keeping
3
- * a long-lived socket's credential fresh is connection plumbing an agent needs
4
- * as much as a browser does. This path re-exports it so existing importers
5
- * stay unchanged.
6
- */
7
- export { DEFAULT_PREROLL_INTERVAL_MS, MIN_PREROLL_DELAY_MS, computePrerollDelayMs, CredentialLifecycle, type CredentialRefreshOutcome, type CredentialRecoveryOutcome, type CredentialRefreshResult, type CredentialRefresher, type CredentialLifecycleContext, } from '../transaction/transport/credentialLifecycle.js';
@@ -1,7 +0,0 @@
1
- /**
2
- * Moved to the settlement core with the duplex transport (ADR 0016): keeping
3
- * a long-lived socket's credential fresh is connection plumbing an agent needs
4
- * as much as a browser does. This path re-exports it so existing importers
5
- * stay unchanged.
6
- */
7
- export { DEFAULT_PREROLL_INTERVAL_MS, MIN_PREROLL_DELAY_MS, computePrerollDelayMs, CredentialLifecycle, } from '../transaction/transport/credentialLifecycle.js';
@@ -1,113 +0,0 @@
1
- /**
2
- * The pipeline that takes incoming deltas from the server and lands them in
3
- * local state. It has four stages: deduplicating deltas by state signature,
4
- * per-delta bookkeeping and enqueue, a debounce for live traffic, and a flush
5
- * that writes to the local store and then the in-memory pool. Every call it
6
- * makes back into the surrounding store — resolving state fields, identifying
7
- * custom entities, deduplicating, flushing, handling sync-group changes —
8
- * routes through the {@link DeltaPipelineContext} interface, so a subclass that
9
- * overrides any of those hooks still takes effect. The atomic frame-apply entry
10
- * point lives on the store and drives this pipeline through {@link enqueueDelta}
11
- * and {@link flushPendingDeltas}.
12
- */
13
- import { ModelScope } from '../InstanceCache.js';
14
- import type { Model } from '../Model.js';
15
- import type { ModelData } from '../transaction/types/modelData.js';
16
- import type { SyncDelta } from './SyncWebSocket.js';
17
- /** One applied-delta result from the persistence layer's batch write, forwarded to the pool. */
18
- interface DeltaDbResult {
19
- action: 'add' | 'update' | 'remove' | 'archive' | 'verify';
20
- modelName: string;
21
- modelId: string;
22
- data?: ModelData | null;
23
- transactionId?: string;
24
- }
25
- /**
26
- * What the pipeline needs back from the surrounding store: the shared mutable
27
- * pipeline state (backed by the store's own fields through accessors), narrow
28
- * persistence and pool facades, and the store's overridable hooks, so a
29
- * subclass's overrides continue to take effect.
30
- */
31
- export interface DeltaPipelineContext {
32
- pendingDeltas: SyncDelta[];
33
- batchTimer: ReturnType<typeof setTimeout> | null;
34
- /** Queue for deltas arriving during an active bootstrap; null when none. */
35
- readonly bootstrapDeltaQueue: SyncDelta[] | null;
36
- readonly smartSyncOptions: {
37
- readonly batchingDelay: number;
38
- readonly maxBatchSize: number;
39
- };
40
- /** Pool-applied cursor (`syncClient.position.applied`). */
41
- readonly highestProcessedSyncId: number;
42
- /** Resume/ack cursor (`syncClient.position.persisted`). */
43
- readonly lastAckedId: number;
44
- onDeltaReceived(syncId: number, transactionId?: string, correlationId?: string): void;
45
- advanceApplied(syncId: number): void;
46
- advancePersisted(syncId: number): void;
47
- processDeltaBatch(deltas: {
48
- syncId?: number;
49
- actionType: SyncDelta['actionType'];
50
- modelName: string;
51
- modelId: string;
52
- data: ModelData | null;
53
- transactionId?: string;
54
- }[]): Promise<{
55
- results: DeltaDbResult[];
56
- persistedSyncId: number;
57
- }>;
58
- /** Applies persisted delta results to the in-memory pool, with the host's relation enrichment bound. */
59
- applyDeltaBatchToPool(results: DeltaDbResult[]): void;
60
- /** Acknowledges a sync id back to the server; a no-op when the socket is down. */
61
- acknowledge(syncId: number): void;
62
- readonly objectPool: {
63
- get(id: string): Model | undefined;
64
- add(model: Model, scope: ModelScope): void;
65
- remove(id: string): boolean;
66
- /** Full in-memory clear — the revocation-failure fallback (see
67
- * {@link handleGroupHandlerFailure}). */
68
- clear(): void;
69
- };
70
- getStateFields(modelName: string): string[];
71
- isCustomEntity(modelName: string): boolean;
72
- createCustomEntity(modelName: string, modelId: string, data: Record<string, unknown>): Model | null;
73
- deduplicateDeltas(deltas: SyncDelta[]): SyncDelta[];
74
- flushPendingDeltas(): Promise<void>;
75
- handleFlushError(error: unknown): void;
76
- handleSyncGroupChange(delta: SyncDelta): Promise<void>;
77
- handleGroupRemoved(delta: SyncDelta): Promise<void>;
78
- /** Host's re-bootstrap trigger — the revocation-failure fallback. */
79
- forceFullRebootstrap(): void;
80
- cascadeCancelTransactionsForDeletedParent(parentModelName: string, parentId: string): void;
81
- }
82
- /**
83
- * Handles a sync-group ('G' or 'S') delta whose handler rejected after the
84
- * applied watermark had already advanced. That delta will never be redelivered,
85
- * so a failed security clear — revoked data that must not stay cached — would
86
- * otherwise fail silently. The safe fallback is blunt: drop the whole in-memory
87
- * pool and force a full re-bootstrap, rebuilding local state from the server.
88
- * It never throws, because it runs inside the pipeline's fire-and-forget path.
89
- */
90
- export declare function handleGroupHandlerFailure(ctx: DeltaPipelineContext, delta: SyncDelta, error: unknown): void;
91
- /** Deduplicate deltas to the same entity — keep meaningful state transitions only */
92
- export declare function deduplicateDeltas(ctx: DeltaPipelineContext, deltas: SyncDelta[]): SyncDelta[];
93
- /**
94
- * Performs per-delta bookkeeping and enqueues the delta. Returns `true` when
95
- * the delta was pushed onto `pendingDeltas` — a regular batchable insert,
96
- * update, covering, or delete that a later flush must drain — and `false` when
97
- * it was skipped as a duplicate, deferred into the bootstrap queue, or handled
98
- * immediately (a 'G'/'S' sync-group change). It does not schedule the flush
99
- * itself; the caller chooses whether to debounce live traffic or flush a
100
- * catch-up frame atomically.
101
- */
102
- export declare function enqueueDelta(ctx: DeltaPipelineContext, delta: SyncDelta, options?: {
103
- authoritative?: boolean;
104
- }): boolean;
105
- /** Debounce a flush for live single-delta traffic. */
106
- export declare function scheduleDeltaFlush(ctx: DeltaPipelineContext): void;
107
- /**
108
- * Flushes the queued deltas: deduplicates them, applies custom-entity deltas
109
- * straight to the pool, writes the rest to the local store and then the pool,
110
- * and advances the acknowledgement cursor once the store write has committed.
111
- */
112
- export declare function flushPendingDeltas(ctx: DeltaPipelineContext): Promise<void>;
113
- export {};