@abloatai/ablo 0.36.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 (597) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +71 -2013
  3. package/NOTICE +2 -2
  4. package/README.md +25 -71
  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 -114
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +3 -163
  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 +1 -1
  59. package/docs/api-keys.md +7 -6
  60. package/docs/api.md +10 -10
  61. package/docs/client-behavior.md +5 -5
  62. package/docs/coordination.md +52 -62
  63. package/docs/data-sources.md +1 -1
  64. package/docs/examples/agent-human.md +4 -4
  65. package/docs/examples/ai-sdk-tool.md +1 -1
  66. package/docs/examples/existing-python-backend.md +15 -4
  67. package/docs/examples/nextjs.md +27 -6
  68. package/docs/examples/server-agent.md +2 -2
  69. package/docs/how-it-works.md +4 -4
  70. package/docs/identity.md +2 -1
  71. package/docs/integration-guide.md +24 -13
  72. package/docs/internal/README.md +18 -0
  73. package/docs/internal/agent-fleet-coordination-design.md +171 -0
  74. package/docs/internal/agent-orchestration.md +58 -0
  75. package/docs/internal/commit-identifiers.md +91 -0
  76. package/docs/internal/concurrency-open-decisions.md +37 -0
  77. package/docs/internal/data-source-reverse-channel.md +150 -0
  78. package/docs/internal/per-field-conflict-detection.md +165 -0
  79. package/docs/internal/postgres-replication.md +64 -0
  80. package/docs/internal/serializable-schema.md +119 -0
  81. package/docs/internal/structure.md +32 -0
  82. package/docs/mcp.md +2 -2
  83. package/docs/migration.md +3 -3
  84. package/docs/quickstart.md +2 -2
  85. package/docs/react.md +5 -5
  86. package/docs/schema-contract.md +3 -3
  87. package/docs/sessions.md +91 -37
  88. package/examples/README.md +2 -2
  89. package/examples/data-source/README.md +1 -1
  90. package/examples/data-source/ablo-driver.ts +1 -1
  91. package/examples/data-source/customer-server.ts +1 -1
  92. package/examples/data-source/run.ts +1 -1
  93. package/examples/data-source/schema.ts +1 -1
  94. package/examples/quickstart.ts +2 -2
  95. package/llms.txt +8 -8
  96. package/package.json +63 -166
  97. package/bin/ablo.cjs +0 -39
  98. package/dist/BaseSyncedStore.d.ts +0 -843
  99. package/dist/BaseSyncedStore.js +0 -1971
  100. package/dist/Database.d.ts +0 -323
  101. package/dist/Database.js +0 -1502
  102. package/dist/InstanceCache.d.ts +0 -237
  103. package/dist/InstanceCache.js +0 -1166
  104. package/dist/LazyReferenceCollection.d.ts +0 -177
  105. package/dist/LazyReferenceCollection.js +0 -461
  106. package/dist/Model.d.ts +0 -454
  107. package/dist/Model.js +0 -919
  108. package/dist/ModelRegistry.d.ts +0 -225
  109. package/dist/ModelRegistry.js +0 -539
  110. package/dist/NetworkMonitor.d.ts +0 -28
  111. package/dist/NetworkMonitor.js +0 -79
  112. package/dist/RuntimeContext.d.ts +0 -52
  113. package/dist/RuntimeContext.js +0 -80
  114. package/dist/SyncClient.d.ts +0 -541
  115. package/dist/SyncClient.js +0 -2202
  116. package/dist/adapters/alwaysOnline.d.ts +0 -14
  117. package/dist/adapters/alwaysOnline.js +0 -17
  118. package/dist/adapters/inMemoryStorage.d.ts +0 -31
  119. package/dist/adapters/inMemoryStorage.js +0 -110
  120. package/dist/ai-sdk/coordinatedTool.d.ts +0 -120
  121. package/dist/ai-sdk/coordinatedTool.js +0 -134
  122. package/dist/ai-sdk/coordinationContext.d.ts +0 -46
  123. package/dist/ai-sdk/coordinationContext.js +0 -106
  124. package/dist/ai-sdk/index.d.ts +0 -121
  125. package/dist/ai-sdk/index.js +0 -121
  126. package/dist/ai-sdk/wrap.d.ts +0 -65
  127. package/dist/ai-sdk/wrap.js +0 -39
  128. package/dist/auth/index.d.ts +0 -1
  129. package/dist/auth/index.js +0 -8
  130. package/dist/batching/index.d.ts +0 -55
  131. package/dist/batching/index.js +0 -147
  132. package/dist/client/Ablo.d.ts +0 -231
  133. package/dist/client/Ablo.js +0 -160
  134. package/dist/client/abloClient.d.ts +0 -309
  135. package/dist/client/abloClient.js +0 -13
  136. package/dist/client/clientPrelude.d.ts +0 -52
  137. package/dist/client/clientPrelude.js +0 -60
  138. package/dist/client/consoleLogger.d.ts +0 -35
  139. package/dist/client/consoleLogger.js +0 -44
  140. package/dist/client/coreClient.d.ts +0 -60
  141. package/dist/client/coreClient.js +0 -118
  142. package/dist/client/createInternalComponents.d.ts +0 -50
  143. package/dist/client/createInternalComponents.js +0 -98
  144. package/dist/client/createModelProxy.d.ts +0 -248
  145. package/dist/client/createModelProxy.js +0 -884
  146. package/dist/client/humans.d.ts +0 -69
  147. package/dist/client/humans.js +0 -78
  148. package/dist/client/modelRegistration.d.ts +0 -10
  149. package/dist/client/modelRegistration.js +0 -312
  150. package/dist/client/options.d.ts +0 -461
  151. package/dist/client/options.js +0 -7
  152. package/dist/client/reactiveEngine.d.ts +0 -53
  153. package/dist/client/reactiveEngine.js +0 -688
  154. package/dist/client/resourceTypes.d.ts +0 -12
  155. package/dist/client/resourceTypes.js +0 -10
  156. package/dist/client/schemaConfig.d.ts +0 -44
  157. package/dist/client/schemaConfig.js +0 -185
  158. package/dist/client/storeCluster.d.ts +0 -47
  159. package/dist/client/storeCluster.js +0 -118
  160. package/dist/client/storeLifecycle.d.ts +0 -61
  161. package/dist/client/storeLifecycle.js +0 -231
  162. package/dist/client/validateAbloOptions.d.ts +0 -42
  163. package/dist/client/validateAbloOptions.js +0 -43
  164. package/dist/client/wsMutationExecutor.d.ts +0 -27
  165. package/dist/client/wsMutationExecutor.js +0 -72
  166. package/dist/context.d.ts +0 -42
  167. package/dist/context.js +0 -81
  168. package/dist/coordination/ClaimLog.d.ts +0 -26
  169. package/dist/coordination/ClaimLog.js +0 -32
  170. package/dist/coordination/index.d.ts +0 -1
  171. package/dist/coordination/index.js +0 -8
  172. package/dist/core/index.d.ts +0 -33
  173. package/dist/core/index.js +0 -48
  174. package/dist/docs/catalog.d.ts +0 -72
  175. package/dist/docs/catalog.js +0 -230
  176. package/dist/docs/index.d.ts +0 -10
  177. package/dist/docs/index.js +0 -10
  178. package/dist/environment.d.ts +0 -1
  179. package/dist/environment.js +0 -8
  180. package/dist/interfaces/index.d.ts +0 -311
  181. package/dist/interfaces/index.js +0 -9
  182. package/dist/keys/index.d.ts +0 -1
  183. package/dist/keys/index.js +0 -8
  184. package/dist/mutators/RecordingMutation.d.ts +0 -36
  185. package/dist/mutators/RecordingMutation.js +0 -182
  186. package/dist/mutators/Transaction.d.ts +0 -40
  187. package/dist/mutators/Transaction.js +0 -58
  188. package/dist/mutators/UndoManager.d.ts +0 -258
  189. package/dist/mutators/UndoManager.js +0 -658
  190. package/dist/mutators/defineMutators.d.ts +0 -60
  191. package/dist/mutators/defineMutators.js +0 -18
  192. package/dist/mutators/inverseOp.d.ts +0 -126
  193. package/dist/mutators/inverseOp.js +0 -71
  194. package/dist/mutators/mutateActions.d.ts +0 -45
  195. package/dist/mutators/mutateActions.js +0 -105
  196. package/dist/mutators/readerActions.d.ts +0 -33
  197. package/dist/mutators/readerActions.js +0 -57
  198. package/dist/mutators/undoApply.d.ts +0 -51
  199. package/dist/mutators/undoApply.js +0 -117
  200. package/dist/policy/index.d.ts +0 -21
  201. package/dist/policy/index.js +0 -20
  202. package/dist/query/QueryProcessor.d.ts +0 -75
  203. package/dist/query/QueryProcessor.js +0 -255
  204. package/dist/query/client.d.ts +0 -64
  205. package/dist/query/client.js +0 -138
  206. package/dist/query/types.d.ts +0 -85
  207. package/dist/query/types.js +0 -16
  208. package/dist/react/AbloProvider.d.ts +0 -242
  209. package/dist/react/AbloProvider.js +0 -458
  210. package/dist/react/ClientSideSuspense.d.ts +0 -36
  211. package/dist/react/ClientSideSuspense.js +0 -17
  212. package/dist/react/DefaultFallback.d.ts +0 -24
  213. package/dist/react/DefaultFallback.js +0 -43
  214. package/dist/react/context.d.ts +0 -55
  215. package/dist/react/context.js +0 -29
  216. package/dist/react/createAbloReact.d.ts +0 -56
  217. package/dist/react/createAbloReact.js +0 -51
  218. package/dist/react/index.d.ts +0 -62
  219. package/dist/react/index.js +0 -69
  220. package/dist/react/internalContext.d.ts +0 -33
  221. package/dist/react/internalContext.js +0 -3
  222. package/dist/react/useAblo.d.ts +0 -82
  223. package/dist/react/useAblo.js +0 -120
  224. package/dist/react/useCurrentUserId.d.ts +0 -22
  225. package/dist/react/useCurrentUserId.js +0 -34
  226. package/dist/react/useErrorListener.d.ts +0 -20
  227. package/dist/react/useErrorListener.js +0 -38
  228. package/dist/react/useMutationFailureListener.d.ts +0 -26
  229. package/dist/react/useMutationFailureListener.js +0 -38
  230. package/dist/react/useMutators.d.ts +0 -56
  231. package/dist/react/useMutators.js +0 -84
  232. package/dist/react/useReactive.d.ts +0 -35
  233. package/dist/react/useReactive.js +0 -123
  234. package/dist/react/useSyncStatus.d.ts +0 -59
  235. package/dist/react/useSyncStatus.js +0 -76
  236. package/dist/react/useUndoScope.d.ts +0 -34
  237. package/dist/react/useUndoScope.js +0 -81
  238. package/dist/schema/coordination.d.ts +0 -112
  239. package/dist/schema/coordination.js +0 -133
  240. package/dist/schema/ddl.d.ts +0 -97
  241. package/dist/schema/ddl.js +0 -491
  242. package/dist/schema/ddlLock.d.ts +0 -35
  243. package/dist/schema/ddlLock.js +0 -46
  244. package/dist/schema/diff.d.ts +0 -225
  245. package/dist/schema/diff.js +0 -289
  246. package/dist/schema/generate.d.ts +0 -19
  247. package/dist/schema/generate.js +0 -86
  248. package/dist/schema/index.d.ts +0 -42
  249. package/dist/schema/index.js +0 -80
  250. package/dist/schema/queries.d.ts +0 -201
  251. package/dist/schema/queries.js +0 -144
  252. package/dist/schema/select.d.ts +0 -40
  253. package/dist/schema/select.js +0 -90
  254. package/dist/schema/serialize.d.ts +0 -115
  255. package/dist/schema/serialize.js +0 -265
  256. package/dist/schema/sugar.d.ts +0 -109
  257. package/dist/schema/sugar.js +0 -83
  258. package/dist/schema/syncDeltaRow.d.ts +0 -6
  259. package/dist/schema/syncDeltaRow.js +0 -6
  260. package/dist/server/adapter.d.ts +0 -173
  261. package/dist/server/adapter.js +0 -18
  262. package/dist/server/commit.d.ts +0 -107
  263. package/dist/server/commit.js +0 -1
  264. package/dist/server/index.d.ts +0 -14
  265. package/dist/server/index.js +0 -2
  266. package/dist/server/readConfig.d.ts +0 -80
  267. package/dist/server/readConfig.js +0 -8
  268. package/dist/server/storageMode.d.ts +0 -23
  269. package/dist/server/storageMode.js +0 -17
  270. package/dist/source/adapter.d.ts +0 -83
  271. package/dist/source/adapter.js +0 -24
  272. package/dist/source/adapters/drizzle.d.ts +0 -48
  273. package/dist/source/adapters/drizzle.js +0 -219
  274. package/dist/source/adapters/kysely.d.ts +0 -42
  275. package/dist/source/adapters/kysely.js +0 -205
  276. package/dist/source/adapters/kyselyMutationCore.d.ts +0 -76
  277. package/dist/source/adapters/kyselyMutationCore.js +0 -125
  278. package/dist/source/adapters/memory.d.ts +0 -13
  279. package/dist/source/adapters/memory.js +0 -130
  280. package/dist/source/adapters/prisma.d.ts +0 -63
  281. package/dist/source/adapters/prisma.js +0 -202
  282. package/dist/source/conformance.d.ts +0 -37
  283. package/dist/source/conformance.js +0 -215
  284. package/dist/source/connector.d.ts +0 -95
  285. package/dist/source/connector.js +0 -266
  286. package/dist/source/connectorProtocol.d.ts +0 -154
  287. package/dist/source/connectorProtocol.js +0 -163
  288. package/dist/source/contract.d.ts +0 -195
  289. package/dist/source/contract.js +0 -164
  290. package/dist/source/factory.d.ts +0 -92
  291. package/dist/source/factory.js +0 -286
  292. package/dist/source/idempotency.d.ts +0 -61
  293. package/dist/source/idempotency.js +0 -144
  294. package/dist/source/index.d.ts +0 -23
  295. package/dist/source/index.js +0 -30
  296. package/dist/source/migrations.d.ts +0 -21
  297. package/dist/source/migrations.js +0 -103
  298. package/dist/source/next.d.ts +0 -32
  299. package/dist/source/next.js +0 -25
  300. package/dist/source/pushQueue.d.ts +0 -134
  301. package/dist/source/pushQueue.js +0 -256
  302. package/dist/source/signing.d.ts +0 -92
  303. package/dist/source/signing.js +0 -162
  304. package/dist/source/types.d.ts +0 -401
  305. package/dist/source/types.js +0 -59
  306. package/dist/storeContract.d.ts +0 -145
  307. package/dist/storeContract.js +0 -12
  308. package/dist/stores/DatabaseManager.d.ts +0 -107
  309. package/dist/stores/DatabaseManager.js +0 -388
  310. package/dist/stores/ObjectStore.d.ts +0 -115
  311. package/dist/stores/ObjectStore.js +0 -393
  312. package/dist/stores/ObjectStoreContract.d.ts +0 -38
  313. package/dist/stores/ObjectStoreContract.js +0 -1
  314. package/dist/stores/StoreManager.d.ts +0 -114
  315. package/dist/stores/StoreManager.js +0 -304
  316. package/dist/stores/SyncActionStore.d.ts +0 -99
  317. package/dist/stores/SyncActionStore.js +0 -506
  318. package/dist/stores/openIDBWithTimeout.d.ts +0 -65
  319. package/dist/stores/openIDBWithTimeout.js +0 -153
  320. package/dist/stores/syncAction.d.ts +0 -26
  321. package/dist/stores/syncAction.js +0 -16
  322. package/dist/surface.d.ts +0 -36
  323. package/dist/surface.js +0 -75
  324. package/dist/sync/BootstrapFetcher.d.ts +0 -284
  325. package/dist/sync/BootstrapFetcher.js +0 -964
  326. package/dist/sync/ConnectionManager.d.ts +0 -8
  327. package/dist/sync/ConnectionManager.js +0 -8
  328. package/dist/sync/OnDemandLoader.d.ts +0 -231
  329. package/dist/sync/OnDemandLoader.js +0 -743
  330. package/dist/sync/SubscriptionManager.d.ts +0 -159
  331. package/dist/sync/SubscriptionManager.js +0 -243
  332. package/dist/sync/SyncWebSocket.d.ts +0 -173
  333. package/dist/sync/SyncWebSocket.js +0 -438
  334. package/dist/sync/awaitClaimGrant.d.ts +0 -6
  335. package/dist/sync/awaitClaimGrant.js +0 -6
  336. package/dist/sync/bootstrapApply.d.ts +0 -73
  337. package/dist/sync/bootstrapApply.js +0 -73
  338. package/dist/sync/commitFrames.d.ts +0 -8
  339. package/dist/sync/commitFrames.js +0 -8
  340. package/dist/sync/contextPorts.d.ts +0 -18
  341. package/dist/sync/contextPorts.js +0 -31
  342. package/dist/sync/createClaimStream.d.ts +0 -7
  343. package/dist/sync/createClaimStream.js +0 -7
  344. package/dist/sync/createPresenceStream.d.ts +0 -69
  345. package/dist/sync/createPresenceStream.js +0 -200
  346. package/dist/sync/createSnapshot.d.ts +0 -29
  347. package/dist/sync/createSnapshot.js +0 -118
  348. package/dist/sync/credentialLifecycle.d.ts +0 -7
  349. package/dist/sync/credentialLifecycle.js +0 -7
  350. package/dist/sync/deltaPipeline.d.ts +0 -114
  351. package/dist/sync/deltaPipeline.js +0 -278
  352. package/dist/sync/groupChange.d.ts +0 -116
  353. package/dist/sync/groupChange.js +0 -244
  354. package/dist/sync/participants.d.ts +0 -132
  355. package/dist/sync/participants.js +0 -346
  356. package/dist/sync/persistedPrefix.d.ts +0 -12
  357. package/dist/sync/persistedPrefix.js +0 -22
  358. package/dist/sync/schemaDrift.d.ts +0 -55
  359. package/dist/sync/schemaDrift.js +0 -53
  360. package/dist/sync/schemas.d.ts +0 -71
  361. package/dist/sync/schemas.js +0 -94
  362. package/dist/sync/syncCursor.d.ts +0 -40
  363. package/dist/sync/syncCursor.js +0 -55
  364. package/dist/sync/syncPlan.d.ts +0 -54
  365. package/dist/sync/syncPlan.js +0 -50
  366. package/dist/sync/wsFrameHandlers.d.ts +0 -8
  367. package/dist/sync/wsFrameHandlers.js +0 -8
  368. package/dist/syncLog/contract.d.ts +0 -20
  369. package/dist/syncLog/contract.js +0 -19
  370. package/dist/syncLog/index.d.ts +0 -1
  371. package/dist/syncLog/index.js +0 -1
  372. package/dist/transaction/ablo.d.ts +0 -88
  373. package/dist/transaction/ablo.js +0 -33
  374. package/dist/transaction/auth/apiKey.d.ts +0 -152
  375. package/dist/transaction/auth/apiKey.js +0 -419
  376. package/dist/transaction/auth/bootstrapScope.d.ts +0 -15
  377. package/dist/transaction/auth/bootstrapScope.js +0 -1
  378. package/dist/transaction/auth/capability.d.ts +0 -212
  379. package/dist/transaction/auth/capability.js +0 -224
  380. package/dist/transaction/auth/credentialEndpoint.d.ts +0 -61
  381. package/dist/transaction/auth/credentialEndpoint.js +0 -86
  382. package/dist/transaction/auth/credentialPolicy.d.ts +0 -148
  383. package/dist/transaction/auth/credentialPolicy.js +0 -125
  384. package/dist/transaction/auth/credentialSource.d.ts +0 -30
  385. package/dist/transaction/auth/credentialSource.js +0 -55
  386. package/dist/transaction/auth/hostedEndpoints.d.ts +0 -21
  387. package/dist/transaction/auth/hostedEndpoints.js +0 -21
  388. package/dist/transaction/auth/identity.d.ts +0 -55
  389. package/dist/transaction/auth/identity.js +0 -210
  390. package/dist/transaction/auth/index.d.ts +0 -162
  391. package/dist/transaction/auth/index.js +0 -304
  392. package/dist/transaction/auth/schemas.d.ts +0 -59
  393. package/dist/transaction/auth/schemas.js +0 -85
  394. package/dist/transaction/auth/sessionMint.d.ts +0 -28
  395. package/dist/transaction/auth/sessionMint.js +0 -85
  396. package/dist/transaction/coordination/awaitClaimGrant.d.ts +0 -56
  397. package/dist/transaction/coordination/awaitClaimGrant.js +0 -124
  398. package/dist/transaction/coordination/claimHeartbeatLoop.d.ts +0 -84
  399. package/dist/transaction/coordination/claimHeartbeatLoop.js +0 -108
  400. package/dist/transaction/coordination/claimMeta.d.ts +0 -49
  401. package/dist/transaction/coordination/claimMeta.js +0 -52
  402. package/dist/transaction/coordination/createClaimStream.d.ts +0 -64
  403. package/dist/transaction/coordination/createClaimStream.js +0 -475
  404. package/dist/transaction/coordination/events.d.ts +0 -74
  405. package/dist/transaction/coordination/events.js +0 -7
  406. package/dist/transaction/coordination/index.d.ts +0 -19
  407. package/dist/transaction/coordination/index.js +0 -45
  408. package/dist/transaction/coordination/locator.d.ts +0 -104
  409. package/dist/transaction/coordination/locator.js +0 -102
  410. package/dist/transaction/coordination/schema.d.ts +0 -1536
  411. package/dist/transaction/coordination/schema.js +0 -1177
  412. package/dist/transaction/coordination/targetConflict.d.ts +0 -2
  413. package/dist/transaction/coordination/targetConflict.js +0 -107
  414. package/dist/transaction/coordination/trace.d.ts +0 -78
  415. package/dist/transaction/coordination/trace.js +0 -138
  416. package/dist/transaction/durableWrites.d.ts +0 -62
  417. package/dist/transaction/durableWrites.js +0 -71
  418. package/dist/transaction/environment.d.ts +0 -105
  419. package/dist/transaction/environment.js +0 -108
  420. package/dist/transaction/errorCodes.d.ts +0 -403
  421. package/dist/transaction/errorCodes.js +0 -484
  422. package/dist/transaction/errors.d.ts +0 -428
  423. package/dist/transaction/errors.js +0 -686
  424. package/dist/transaction/footprint.d.ts +0 -111
  425. package/dist/transaction/footprint.js +0 -0
  426. package/dist/transaction/index.d.ts +0 -20
  427. package/dist/transaction/index.js +0 -20
  428. package/dist/transaction/keys/index.d.ts +0 -87
  429. package/dist/transaction/keys/index.js +0 -207
  430. package/dist/transaction/log/syncDeltaRow.d.ts +0 -158
  431. package/dist/transaction/log/syncDeltaRow.js +0 -95
  432. package/dist/transaction/logPosition.d.ts +0 -97
  433. package/dist/transaction/logPosition.js +0 -125
  434. package/dist/transaction/logger.d.ts +0 -16
  435. package/dist/transaction/logger.js +0 -7
  436. package/dist/transaction/observability.d.ts +0 -53
  437. package/dist/transaction/observability.js +0 -19
  438. package/dist/transaction/persistence.d.ts +0 -12
  439. package/dist/transaction/persistence.js +0 -11
  440. package/dist/transaction/plugin.d.ts +0 -285
  441. package/dist/transaction/plugin.js +0 -106
  442. package/dist/transaction/policy/types.d.ts +0 -217
  443. package/dist/transaction/policy/types.js +0 -126
  444. package/dist/transaction/resources/functionalUpdate.d.ts +0 -79
  445. package/dist/transaction/resources/functionalUpdate.js +0 -87
  446. package/dist/transaction/resources/httpResources.d.ts +0 -321
  447. package/dist/transaction/resources/httpResources.js +0 -7
  448. package/dist/transaction/resources/modelOperations.d.ts +0 -427
  449. package/dist/transaction/resources/modelOperations.js +0 -12
  450. package/dist/transaction/resources/mutationOptions.d.ts +0 -66
  451. package/dist/transaction/resources/mutationOptions.js +0 -9
  452. package/dist/transaction/resources/where.d.ts +0 -101
  453. package/dist/transaction/resources/where.js +0 -115
  454. package/dist/transaction/resources/writeOptionsSchema.d.ts +0 -47
  455. package/dist/transaction/resources/writeOptionsSchema.js +0 -73
  456. package/dist/transaction/schema/field.d.ts +0 -120
  457. package/dist/transaction/schema/field.js +0 -265
  458. package/dist/transaction/schema/fieldRef.d.ts +0 -38
  459. package/dist/transaction/schema/fieldRef.js +0 -11
  460. package/dist/transaction/schema/loadStrategy.d.ts +0 -45
  461. package/dist/transaction/schema/loadStrategy.js +0 -46
  462. package/dist/transaction/schema/model.d.ts +0 -379
  463. package/dist/transaction/schema/model.js +0 -123
  464. package/dist/transaction/schema/openapi.d.ts +0 -58
  465. package/dist/transaction/schema/openapi.js +0 -501
  466. package/dist/transaction/schema/relation.d.ts +0 -204
  467. package/dist/transaction/schema/relation.js +0 -104
  468. package/dist/transaction/schema/residency.d.ts +0 -29
  469. package/dist/transaction/schema/residency.js +0 -25
  470. package/dist/transaction/schema/roles.d.ts +0 -249
  471. package/dist/transaction/schema/roles.js +0 -230
  472. package/dist/transaction/schema/schema.d.ts +0 -351
  473. package/dist/transaction/schema/schema.js +0 -325
  474. package/dist/transaction/schema/tenancy.d.ts +0 -139
  475. package/dist/transaction/schema/tenancy.js +0 -190
  476. package/dist/transaction/transactionLayer.d.ts +0 -82
  477. package/dist/transaction/transactionLayer.js +0 -24
  478. package/dist/transaction/transactions/settlement/commitEnvelope.d.ts +0 -143
  479. package/dist/transaction/transactions/settlement/commitEnvelope.js +0 -161
  480. package/dist/transaction/transactions/settlement/httpCommitEnvelope.d.ts +0 -53
  481. package/dist/transaction/transactions/settlement/httpCommitEnvelope.js +0 -207
  482. package/dist/transaction/transactions/settlement/idempotencyKey.d.ts +0 -10
  483. package/dist/transaction/transactions/settlement/idempotencyKey.js +0 -9
  484. package/dist/transaction/transactions/settlement/pendingWrite.d.ts +0 -112
  485. package/dist/transaction/transactions/settlement/pendingWrite.js +0 -20
  486. package/dist/transaction/transport/commitFrames.d.ts +0 -90
  487. package/dist/transaction/transport/commitFrames.js +0 -134
  488. package/dist/transaction/transport/connectionManager.d.ts +0 -215
  489. package/dist/transaction/transport/connectionManager.js +0 -673
  490. package/dist/transaction/transport/credentialLifecycle.d.ts +0 -177
  491. package/dist/transaction/transport/credentialLifecycle.js +0 -324
  492. package/dist/transaction/transport/heartbeat.d.ts +0 -65
  493. package/dist/transaction/transport/heartbeat.js +0 -93
  494. package/dist/transaction/transport/httpClient.d.ts +0 -131
  495. package/dist/transaction/transport/httpClient.js +0 -146
  496. package/dist/transaction/transport/httpOptions.d.ts +0 -33
  497. package/dist/transaction/transport/httpOptions.js +0 -12
  498. package/dist/transaction/transport/httpTransport.d.ts +0 -8
  499. package/dist/transaction/transport/httpTransport.js +0 -1388
  500. package/dist/transaction/transport/networkProbe.d.ts +0 -84
  501. package/dist/transaction/transport/networkProbe.js +0 -207
  502. package/dist/transaction/transport/wsFrameHandlers.d.ts +0 -128
  503. package/dist/transaction/transport/wsFrameHandlers.js +0 -429
  504. package/dist/transaction/transport/wsTransport.d.ts +0 -574
  505. package/dist/transaction/transport/wsTransport.js +0 -1023
  506. package/dist/transaction/types/assertExact.d.ts +0 -17
  507. package/dist/transaction/types/assertExact.js +0 -1
  508. package/dist/transaction/types/global.d.ts +0 -107
  509. package/dist/transaction/types/global.js +0 -40
  510. package/dist/transaction/types/index.d.ts +0 -205
  511. package/dist/transaction/types/index.js +0 -56
  512. package/dist/transaction/types/modelData.d.ts +0 -10
  513. package/dist/transaction/types/modelData.js +0 -9
  514. package/dist/transaction/types/participant.d.ts +0 -20
  515. package/dist/transaction/types/participant.js +0 -10
  516. package/dist/transaction/types/streams.d.ts +0 -550
  517. package/dist/transaction/types/streams.js +0 -11
  518. package/dist/transaction/utils/asyncIterator.d.ts +0 -34
  519. package/dist/transaction/utils/asyncIterator.js +0 -135
  520. package/dist/transaction/utils/duration.d.ts +0 -50
  521. package/dist/transaction/utils/duration.js +0 -77
  522. package/dist/transaction/utils/json.d.ts +0 -57
  523. package/dist/transaction/utils/json.js +0 -276
  524. package/dist/transaction/wire/accountResponses.d.ts +0 -420
  525. package/dist/transaction/wire/accountResponses.js +0 -290
  526. package/dist/transaction/wire/auth.d.ts +0 -56
  527. package/dist/transaction/wire/auth.js +0 -63
  528. package/dist/transaction/wire/bootstrapReason.d.ts +0 -9
  529. package/dist/transaction/wire/bootstrapReason.js +0 -8
  530. package/dist/transaction/wire/claimEvent.d.ts +0 -76
  531. package/dist/transaction/wire/claimEvent.js +0 -73
  532. package/dist/transaction/wire/claims.d.ts +0 -530
  533. package/dist/transaction/wire/claims.js +0 -327
  534. package/dist/transaction/wire/commit.d.ts +0 -603
  535. package/dist/transaction/wire/commit.js +0 -321
  536. package/dist/transaction/wire/delta.d.ts +0 -250
  537. package/dist/transaction/wire/delta.js +0 -147
  538. package/dist/transaction/wire/errorEnvelope.d.ts +0 -72
  539. package/dist/transaction/wire/errorEnvelope.js +0 -123
  540. package/dist/transaction/wire/feedCursor.d.ts +0 -60
  541. package/dist/transaction/wire/feedCursor.js +0 -82
  542. package/dist/transaction/wire/feedEvent.d.ts +0 -204
  543. package/dist/transaction/wire/feedEvent.js +0 -65
  544. package/dist/transaction/wire/frames.d.ts +0 -194
  545. package/dist/transaction/wire/frames.js +0 -50
  546. package/dist/transaction/wire/inboundFrames.d.ts +0 -562
  547. package/dist/transaction/wire/inboundFrames.js +0 -116
  548. package/dist/transaction/wire/index.d.ts +0 -54
  549. package/dist/transaction/wire/index.js +0 -83
  550. package/dist/transaction/wire/listEnvelope.d.ts +0 -37
  551. package/dist/transaction/wire/listEnvelope.js +0 -42
  552. package/dist/transaction/wire/modelMutations.d.ts +0 -31
  553. package/dist/transaction/wire/modelMutations.js +0 -52
  554. package/dist/transaction/wire/modelResponses.d.ts +0 -85
  555. package/dist/transaction/wire/modelResponses.js +0 -43
  556. package/dist/transaction/wire/modelShape.d.ts +0 -78
  557. package/dist/transaction/wire/modelShape.js +0 -74
  558. package/dist/transaction/wire/protocol.d.ts +0 -38
  559. package/dist/transaction/wire/protocol.js +0 -38
  560. package/dist/transaction/wire/protocolVersion.d.ts +0 -73
  561. package/dist/transaction/wire/protocolVersion.js +0 -83
  562. package/dist/transactions/mutations/MutationQueue.d.ts +0 -661
  563. package/dist/transactions/mutations/MutationQueue.js +0 -2807
  564. package/dist/transactions/mutations/MutationStore.d.ts +0 -20
  565. package/dist/transactions/mutations/MutationStore.js +0 -53
  566. package/dist/transactions/mutations/UnconfirmedWrites.d.ts +0 -82
  567. package/dist/transactions/mutations/UnconfirmedWrites.js +0 -104
  568. package/dist/transactions/mutations/coalesceRules.d.ts +0 -58
  569. package/dist/transactions/mutations/coalesceRules.js +0 -140
  570. package/dist/transactions/mutations/commitLatency.d.ts +0 -52
  571. package/dist/transactions/mutations/commitLatency.js +0 -130
  572. package/dist/transactions/mutations/commitOutboxStore.d.ts +0 -28
  573. package/dist/transactions/mutations/commitOutboxStore.js +0 -26
  574. package/dist/transactions/mutations/commitPayload.d.ts +0 -165
  575. package/dist/transactions/mutations/commitPayload.js +0 -152
  576. package/dist/transactions/mutations/deltaConfirmation.d.ts +0 -63
  577. package/dist/transactions/mutations/deltaConfirmation.js +0 -235
  578. package/dist/transactions/mutations/durableWriteStore.d.ts +0 -14
  579. package/dist/transactions/mutations/durableWriteStore.js +0 -12
  580. package/dist/transactions/mutations/optimisticApply.d.ts +0 -49
  581. package/dist/transactions/mutations/optimisticApply.js +0 -65
  582. package/dist/transactions/mutations/replayValidation.d.ts +0 -187
  583. package/dist/transactions/mutations/replayValidation.js +0 -164
  584. package/dist/utils/mobxSetup.d.ts +0 -53
  585. package/dist/utils/mobxSetup.js +0 -330
  586. package/dist/views/QueryView.d.ts +0 -79
  587. package/dist/views/QueryView.js +0 -218
  588. package/dist/views/ViewRegistry.d.ts +0 -20
  589. package/dist/views/ViewRegistry.js +0 -55
  590. package/dist/views/incrementalView.d.ts +0 -45
  591. package/dist/views/incrementalView.js +0 -69
  592. package/dist/webhooks/events.d.ts +0 -43
  593. package/dist/webhooks/events.js +0 -42
  594. package/dist/webhooks/index.d.ts +0 -8
  595. package/dist/webhooks/index.js +0 -8
  596. package/dist/wire/index.d.ts +0 -1
  597. package/dist/wire/index.js +0 -8
@@ -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,114 +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 type { RuntimeContext } from '../RuntimeContext.js';
14
- import { ModelScope } from '../InstanceCache.js';
15
- import type { Model } from '../Model.js';
16
- import type { SyncDelta } from './SyncWebSocket.js';
17
- import type { ModelData } from '../transaction/types/modelData.js';
18
- import { type AbloPlugin, type AppliedChange } from '../transaction/plugin.js';
19
- /**
20
- * What the pipeline needs back from the surrounding store: the shared mutable
21
- * pipeline state (backed by the store's own fields through accessors), narrow
22
- * persistence and pool facades, and the store's overridable hooks, so a
23
- * subclass's overrides continue to take effect.
24
- */
25
- export interface DeltaPipelineContext {
26
- /** The owning client's runtime. Defaults to the module-global bridge. */
27
- readonly runtime?: RuntimeContext;
28
- /**
29
- * The installed plugins, whose declared stage handlers this pipeline
30
- * dispatches at each boundary. Empty (or absent) on directly-constructed
31
- * stores, where the store's own apply is the whole pipeline.
32
- */
33
- readonly stagePlugins?: readonly AbloPlugin[];
34
- pendingDeltas: SyncDelta[];
35
- batchTimer: ReturnType<typeof setTimeout> | null;
36
- /** Queue for deltas arriving during an active bootstrap; null when none. */
37
- readonly bootstrapDeltaQueue: SyncDelta[] | null;
38
- readonly smartSyncOptions: {
39
- readonly batchingDelay: number;
40
- readonly maxBatchSize: number;
41
- };
42
- /** Pool-applied cursor (`syncClient.position.applied`). */
43
- readonly highestProcessedSyncId: number;
44
- /** Resume/ack cursor (`syncClient.position.persisted`). */
45
- readonly lastAckedId: number;
46
- onDeltaReceived(syncId: number, transactionId?: string, correlationId?: string): void;
47
- advanceApplied(syncId: number): void;
48
- advancePersisted(syncId: number): void;
49
- processDeltaBatch(deltas: {
50
- syncId?: number;
51
- actionType: SyncDelta['actionType'];
52
- modelName: string;
53
- modelId: string;
54
- data: ModelData | null;
55
- transactionId?: string;
56
- }[]): Promise<{
57
- results: AppliedChange[];
58
- persistedSyncId: number;
59
- }>;
60
- /** Applies persisted delta results to the in-memory pool, with the host's relation enrichment bound. */
61
- applyDeltaBatchToPool(results: AppliedChange[]): void;
62
- /** Acknowledges a sync id back to the server; a no-op when the socket is down. */
63
- acknowledge(syncId: number): void;
64
- readonly objectPool: {
65
- get(id: string): Model | undefined;
66
- add(model: Model, scope: ModelScope): void;
67
- remove(id: string): boolean;
68
- /** Full in-memory clear — the revocation-failure fallback (see
69
- * {@link handleGroupHandlerFailure}). */
70
- clear(): void;
71
- };
72
- getStateFields(modelName: string): string[];
73
- isCustomEntity(modelName: string): boolean;
74
- createCustomEntity(modelName: string, modelId: string, data: Record<string, unknown>): Model | null;
75
- deduplicateDeltas(deltas: SyncDelta[]): SyncDelta[];
76
- flushPendingDeltas(): Promise<void>;
77
- handleFlushError(error: unknown): void;
78
- handleSyncGroupChange(delta: SyncDelta): Promise<void>;
79
- handleGroupRemoved(delta: SyncDelta): Promise<void>;
80
- /** Host's re-bootstrap trigger — the revocation-failure fallback. */
81
- forceFullRebootstrap(): void;
82
- cascadeCancelTransactionsForDeletedParent(parentModelName: string, parentId: string): void;
83
- }
84
- /**
85
- * Handles a sync-group ('G' or 'S') delta whose handler rejected after the
86
- * applied watermark had already advanced. That delta will never be redelivered,
87
- * so a failed security clear — revoked data that must not stay cached — would
88
- * otherwise fail silently. The safe fallback is blunt: drop the whole in-memory
89
- * pool and force a full re-bootstrap, rebuilding local state from the server.
90
- * It never throws, because it runs inside the pipeline's fire-and-forget path.
91
- */
92
- export declare function handleGroupHandlerFailure(ctx: DeltaPipelineContext, delta: SyncDelta, error: unknown): void;
93
- /** Deduplicate deltas to the same entity — keep meaningful state transitions only */
94
- export declare function deduplicateDeltas(ctx: DeltaPipelineContext, deltas: SyncDelta[]): SyncDelta[];
95
- /**
96
- * Performs per-delta bookkeeping and enqueues the delta. Returns `true` when
97
- * the delta was pushed onto `pendingDeltas` — a regular batchable insert,
98
- * update, covering, or delete that a later flush must drain — and `false` when
99
- * it was skipped as a duplicate, deferred into the bootstrap queue, or handled
100
- * immediately (a 'G'/'S' sync-group change). It does not schedule the flush
101
- * itself; the caller chooses whether to debounce live traffic or flush a
102
- * catch-up frame atomically.
103
- */
104
- export declare function enqueueDelta(ctx: DeltaPipelineContext, delta: SyncDelta, options?: {
105
- authoritative?: boolean;
106
- }): boolean;
107
- /** Debounce a flush for live single-delta traffic. */
108
- export declare function scheduleDeltaFlush(ctx: DeltaPipelineContext): void;
109
- /**
110
- * Flushes the queued deltas: deduplicates them, applies custom-entity deltas
111
- * straight to the pool, writes the rest to the local store and then the pool,
112
- * and advances the acknowledgement cursor once the store write has committed.
113
- */
114
- export declare function flushPendingDeltas(ctx: DeltaPipelineContext): Promise<void>;