@origintrail-official/dkg-agent 10.0.20 → 10.0.21

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 (535) hide show
  1. package/dist/approved-private-replica.d.ts +54 -0
  2. package/dist/approved-private-replica.d.ts.map +1 -0
  3. package/dist/approved-private-replica.js +148 -0
  4. package/dist/approved-private-replica.js.map +1 -0
  5. package/dist/bounded-operation.d.ts +2 -0
  6. package/dist/bounded-operation.d.ts.map +1 -1
  7. package/dist/bounded-operation.js +5 -0
  8. package/dist/bounded-operation.js.map +1 -1
  9. package/dist/chain-finality-confirmations-v1.d.ts +7 -0
  10. package/dist/chain-finality-confirmations-v1.d.ts.map +1 -0
  11. package/dist/chain-finality-confirmations-v1.js +9 -0
  12. package/dist/chain-finality-confirmations-v1.js.map +1 -0
  13. package/dist/chain-reconciler.d.ts +23 -0
  14. package/dist/chain-reconciler.d.ts.map +1 -1
  15. package/dist/chain-reconciler.js +35 -0
  16. package/dist/chain-reconciler.js.map +1 -1
  17. package/dist/context-graph-member-proof.d.ts +13 -0
  18. package/dist/context-graph-member-proof.d.ts.map +1 -1
  19. package/dist/context-graph-member-proof.js +36 -0
  20. package/dist/context-graph-member-proof.js.map +1 -1
  21. package/dist/context-graph-membership-persist-scheduler.d.ts +7 -23
  22. package/dist/context-graph-membership-persist-scheduler.d.ts.map +1 -1
  23. package/dist/context-graph-membership-persist-scheduler.js +12 -88
  24. package/dist/context-graph-membership-persist-scheduler.js.map +1 -1
  25. package/dist/context-graph-meta-projection.d.ts +13 -2
  26. package/dist/context-graph-meta-projection.d.ts.map +1 -1
  27. package/dist/context-graph-meta-projection.js +61 -24
  28. package/dist/context-graph-meta-projection.js.map +1 -1
  29. package/dist/context-graph-private-meta-proof.d.ts +5 -0
  30. package/dist/context-graph-private-meta-proof.d.ts.map +1 -1
  31. package/dist/context-graph-private-meta-proof.js +23 -0
  32. package/dist/context-graph-private-meta-proof.js.map +1 -1
  33. package/dist/context-graph-read-authority.d.ts +13 -0
  34. package/dist/context-graph-read-authority.d.ts.map +1 -1
  35. package/dist/context-graph-read-authority.js +23 -3
  36. package/dist/context-graph-read-authority.js.map +1 -1
  37. package/dist/context-graph-storage-discovery.d.ts +11 -2
  38. package/dist/context-graph-storage-discovery.d.ts.map +1 -1
  39. package/dist/context-graph-storage-discovery.js +11 -2
  40. package/dist/context-graph-storage-discovery.js.map +1 -1
  41. package/dist/context-graph-subscription-persist-scheduler.d.ts +52 -0
  42. package/dist/context-graph-subscription-persist-scheduler.d.ts.map +1 -0
  43. package/dist/context-graph-subscription-persist-scheduler.js +78 -0
  44. package/dist/context-graph-subscription-persist-scheduler.js.map +1 -0
  45. package/dist/curator-dial-address.d.ts +16 -0
  46. package/dist/curator-dial-address.d.ts.map +1 -0
  47. package/dist/curator-dial-address.js +58 -0
  48. package/dist/curator-dial-address.js.map +1 -0
  49. package/dist/curator-meta-refresh.d.ts +2 -0
  50. package/dist/curator-meta-refresh.d.ts.map +1 -1
  51. package/dist/curator-meta-refresh.js +2 -44
  52. package/dist/curator-meta-refresh.js.map +1 -1
  53. package/dist/curator-peer-connection.d.ts +21 -0
  54. package/dist/curator-peer-connection.d.ts.map +1 -0
  55. package/dist/curator-peer-connection.js +41 -0
  56. package/dist/curator-peer-connection.js.map +1 -0
  57. package/dist/dkg-agent-base.d.ts +94 -22
  58. package/dist/dkg-agent-base.d.ts.map +1 -1
  59. package/dist/dkg-agent-base.js +97 -144
  60. package/dist/dkg-agent-base.js.map +1 -1
  61. package/dist/dkg-agent-cg-registry.d.ts +10 -0
  62. package/dist/dkg-agent-cg-registry.d.ts.map +1 -1
  63. package/dist/dkg-agent-cg-registry.js +176 -115
  64. package/dist/dkg-agent-cg-registry.js.map +1 -1
  65. package/dist/dkg-agent-cg-resolve.d.ts +6 -4
  66. package/dist/dkg-agent-cg-resolve.d.ts.map +1 -1
  67. package/dist/dkg-agent-cg-resolve.js +22 -16
  68. package/dist/dkg-agent-cg-resolve.js.map +1 -1
  69. package/dist/dkg-agent-constants.d.ts +4 -2
  70. package/dist/dkg-agent-constants.d.ts.map +1 -1
  71. package/dist/dkg-agent-constants.js +4 -2
  72. package/dist/dkg-agent-constants.js.map +1 -1
  73. package/dist/dkg-agent-crypto.d.ts +101 -21
  74. package/dist/dkg-agent-crypto.d.ts.map +1 -1
  75. package/dist/dkg-agent-crypto.js +670 -152
  76. package/dist/dkg-agent-crypto.js.map +1 -1
  77. package/dist/dkg-agent-helpers.d.ts +2 -2
  78. package/dist/dkg-agent-helpers.d.ts.map +1 -1
  79. package/dist/dkg-agent-helpers.js +3 -3
  80. package/dist/dkg-agent-helpers.js.map +1 -1
  81. package/dist/dkg-agent-join.d.ts +12 -1
  82. package/dist/dkg-agent-join.d.ts.map +1 -1
  83. package/dist/dkg-agent-join.js +80 -92
  84. package/dist/dkg-agent-join.js.map +1 -1
  85. package/dist/dkg-agent-lifecycle.d.ts +58 -15
  86. package/dist/dkg-agent-lifecycle.d.ts.map +1 -1
  87. package/dist/dkg-agent-lifecycle.js +295 -114
  88. package/dist/dkg-agent-lifecycle.js.map +1 -1
  89. package/dist/dkg-agent-publish.d.ts +33 -40
  90. package/dist/dkg-agent-publish.d.ts.map +1 -1
  91. package/dist/dkg-agent-publish.js +190 -256
  92. package/dist/dkg-agent-publish.js.map +1 -1
  93. package/dist/dkg-agent-query.d.ts +7 -0
  94. package/dist/dkg-agent-query.d.ts.map +1 -1
  95. package/dist/dkg-agent-query.js +75 -63
  96. package/dist/dkg-agent-query.js.map +1 -1
  97. package/dist/dkg-agent-registered-private-empty-vm.d.ts +70 -0
  98. package/dist/dkg-agent-registered-private-empty-vm.d.ts.map +1 -0
  99. package/dist/dkg-agent-registered-private-empty-vm.js +133 -0
  100. package/dist/dkg-agent-registered-private-empty-vm.js.map +1 -0
  101. package/dist/dkg-agent-rfc64-catalog-auto-publish.d.ts +8 -3
  102. package/dist/dkg-agent-rfc64-catalog-auto-publish.d.ts.map +1 -1
  103. package/dist/dkg-agent-rfc64-catalog-auto-publish.js +45 -51
  104. package/dist/dkg-agent-rfc64-catalog-auto-publish.js.map +1 -1
  105. package/dist/dkg-agent-rfc64-catalog.d.ts +63 -87
  106. package/dist/dkg-agent-rfc64-catalog.d.ts.map +1 -1
  107. package/dist/dkg-agent-rfc64-catalog.js +595 -551
  108. package/dist/dkg-agent-rfc64-catalog.js.map +1 -1
  109. package/dist/dkg-agent-swm-host.d.ts +43 -52
  110. package/dist/dkg-agent-swm-host.d.ts.map +1 -1
  111. package/dist/dkg-agent-swm-host.js +629 -812
  112. package/dist/dkg-agent-swm-host.js.map +1 -1
  113. package/dist/dkg-agent-swm-state.d.ts +15 -0
  114. package/dist/dkg-agent-swm-state.d.ts.map +1 -1
  115. package/dist/dkg-agent-swm-state.js +43 -0
  116. package/dist/dkg-agent-swm-state.js.map +1 -1
  117. package/dist/dkg-agent-swm-substrate.d.ts +2 -0
  118. package/dist/dkg-agent-swm-substrate.d.ts.map +1 -1
  119. package/dist/dkg-agent-swm-substrate.js +110 -53
  120. package/dist/dkg-agent-swm-substrate.js.map +1 -1
  121. package/dist/dkg-agent-types.d.ts +62 -26
  122. package/dist/dkg-agent-types.d.ts.map +1 -1
  123. package/dist/dkg-agent-types.js.map +1 -1
  124. package/dist/dkg-agent-vm-promotion.d.ts +2 -0
  125. package/dist/dkg-agent-vm-promotion.d.ts.map +1 -1
  126. package/dist/dkg-agent-vm-promotion.js +39 -5
  127. package/dist/dkg-agent-vm-promotion.js.map +1 -1
  128. package/dist/dkg-agent.d.ts +8 -1
  129. package/dist/dkg-agent.d.ts.map +1 -1
  130. package/dist/dkg-agent.js +75 -45
  131. package/dist/dkg-agent.js.map +1 -1
  132. package/dist/exact-graph-content-verifier.d.ts.map +1 -1
  133. package/dist/exact-graph-content-verifier.js +3 -2
  134. package/dist/exact-graph-content-verifier.js.map +1 -1
  135. package/dist/finalization-handler.d.ts +19 -207
  136. package/dist/finalization-handler.d.ts.map +1 -1
  137. package/dist/finalization-handler.js +79 -1646
  138. package/dist/finalization-handler.js.map +1 -1
  139. package/dist/finalization-recovery-worker.js +1 -1
  140. package/dist/finalization-recovery-worker.js.map +1 -1
  141. package/dist/finalized-authority-cold-resolution.d.ts +6 -1
  142. package/dist/finalized-authority-cold-resolution.d.ts.map +1 -1
  143. package/dist/finalized-authority-cold-resolution.js +22 -3
  144. package/dist/finalized-authority-cold-resolution.js.map +1 -1
  145. package/dist/gossip-session.d.ts +29 -0
  146. package/dist/gossip-session.d.ts.map +1 -0
  147. package/dist/gossip-session.js +48 -0
  148. package/dist/gossip-session.js.map +1 -0
  149. package/dist/index.d.ts +3 -0
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/index.js +4 -0
  152. package/dist/index.js.map +1 -1
  153. package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.d.ts +5 -5
  154. package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.d.ts.map +1 -1
  155. package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.js +59 -49
  156. package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.js.map +1 -1
  157. package/dist/internal/context-graph-authority/finalized-target-projection.d.ts +17 -0
  158. package/dist/internal/context-graph-authority/finalized-target-projection.d.ts.map +1 -0
  159. package/dist/internal/context-graph-authority/finalized-target-projection.js +36 -0
  160. package/dist/internal/context-graph-authority/finalized-target-projection.js.map +1 -0
  161. package/dist/internal/context-graph-authority/swm-transport-authority.d.ts +43 -7
  162. package/dist/internal/context-graph-authority/swm-transport-authority.d.ts.map +1 -1
  163. package/dist/internal/context-graph-authority/swm-transport-authority.js +135 -18
  164. package/dist/internal/context-graph-authority/swm-transport-authority.js.map +1 -1
  165. package/dist/internal/context-graph-binding-abort.d.ts +3 -0
  166. package/dist/internal/context-graph-binding-abort.d.ts.map +1 -0
  167. package/dist/internal/context-graph-binding-abort.js +32 -0
  168. package/dist/internal/context-graph-binding-abort.js.map +1 -0
  169. package/dist/internal/context-graph-cache-invalidating-store.d.ts +3 -0
  170. package/dist/internal/context-graph-cache-invalidating-store.d.ts.map +1 -0
  171. package/dist/internal/context-graph-cache-invalidating-store.js +167 -0
  172. package/dist/internal/context-graph-cache-invalidating-store.js.map +1 -0
  173. package/dist/internal/context-graph-meta-record-copy.d.ts +3 -0
  174. package/dist/internal/context-graph-meta-record-copy.d.ts.map +1 -0
  175. package/dist/internal/context-graph-meta-record-copy.js +21 -0
  176. package/dist/internal/context-graph-meta-record-copy.js.map +1 -0
  177. package/dist/internal/gossip/host-mode-handler.d.ts +11 -0
  178. package/dist/internal/gossip/host-mode-handler.d.ts.map +1 -0
  179. package/dist/internal/gossip/host-mode-handler.js +41 -0
  180. package/dist/internal/gossip/host-mode-handler.js.map +1 -0
  181. package/dist/internal/join-encryption-key-bundle.d.ts +10 -0
  182. package/dist/internal/join-encryption-key-bundle.d.ts.map +1 -0
  183. package/dist/internal/join-encryption-key-bundle.js +72 -0
  184. package/dist/internal/join-encryption-key-bundle.js.map +1 -0
  185. package/dist/internal/knowledge-asset-vm-publish-request.d.ts +31 -0
  186. package/dist/internal/knowledge-asset-vm-publish-request.d.ts.map +1 -0
  187. package/dist/internal/knowledge-asset-vm-publish-request.js +91 -0
  188. package/dist/internal/knowledge-asset-vm-publish-request.js.map +1 -0
  189. package/dist/internal/lifecycle-sync-policy.d.ts +5 -0
  190. package/dist/internal/lifecycle-sync-policy.d.ts.map +1 -0
  191. package/dist/internal/lifecycle-sync-policy.js +12 -0
  192. package/dist/internal/lifecycle-sync-policy.js.map +1 -0
  193. package/dist/internal/local-private-member.d.ts +14 -0
  194. package/dist/internal/local-private-member.d.ts.map +1 -0
  195. package/dist/internal/local-private-member.js +21 -0
  196. package/dist/internal/local-private-member.js.map +1 -0
  197. package/dist/internal/promote/assertion-promote-precommit.d.ts +41 -1
  198. package/dist/internal/promote/assertion-promote-precommit.d.ts.map +1 -1
  199. package/dist/internal/promote/assertion-promote-precommit.js +74 -5
  200. package/dist/internal/promote/assertion-promote-precommit.js.map +1 -1
  201. package/dist/internal/storage-ack-owned-request.d.ts +16 -0
  202. package/dist/internal/storage-ack-owned-request.d.ts.map +1 -0
  203. package/dist/internal/storage-ack-owned-request.js +16 -0
  204. package/dist/internal/storage-ack-owned-request.js.map +1 -0
  205. package/dist/internal/vm-reconcile-local-admission-wait.d.ts +96 -0
  206. package/dist/internal/vm-reconcile-local-admission-wait.d.ts.map +1 -0
  207. package/dist/internal/vm-reconcile-local-admission-wait.js +226 -0
  208. package/dist/internal/vm-reconcile-local-admission-wait.js.map +1 -0
  209. package/dist/internal/vm-reconcile-read-authority.d.ts +27 -0
  210. package/dist/internal/vm-reconcile-read-authority.d.ts.map +1 -0
  211. package/dist/internal/vm-reconcile-read-authority.js +33 -0
  212. package/dist/internal/vm-reconcile-read-authority.js.map +1 -0
  213. package/dist/internal/vm-reconcile-sweep-admission.d.ts +2 -0
  214. package/dist/internal/vm-reconcile-sweep-admission.d.ts.map +1 -1
  215. package/dist/internal/vm-reconcile-sweep.d.ts +16 -4
  216. package/dist/internal/vm-reconcile-sweep.d.ts.map +1 -1
  217. package/dist/internal/vm-reconcile-sweep.js +91 -50
  218. package/dist/internal/vm-reconcile-sweep.js.map +1 -1
  219. package/dist/internal/workspace-projected-delegatees.d.ts +3 -0
  220. package/dist/internal/workspace-projected-delegatees.d.ts.map +1 -0
  221. package/dist/internal/workspace-projected-delegatees.js +34 -0
  222. package/dist/internal/workspace-projected-delegatees.js.map +1 -0
  223. package/dist/join-approval-restart-projection.d.ts +14 -0
  224. package/dist/join-approval-restart-projection.d.ts.map +1 -0
  225. package/dist/join-approval-restart-projection.js +32 -0
  226. package/dist/join-approval-restart-projection.js.map +1 -0
  227. package/dist/keyed-persist-scheduler.d.ts +72 -0
  228. package/dist/keyed-persist-scheduler.d.ts.map +1 -0
  229. package/dist/keyed-persist-scheduler.js +140 -0
  230. package/dist/keyed-persist-scheduler.js.map +1 -0
  231. package/dist/map-with-concurrency.d.ts +7 -0
  232. package/dist/map-with-concurrency.d.ts.map +1 -1
  233. package/dist/map-with-concurrency.js +36 -0
  234. package/dist/map-with-concurrency.js.map +1 -1
  235. package/dist/p2p/network-admission-coordinator.d.ts +15 -0
  236. package/dist/p2p/network-admission-coordinator.d.ts.map +1 -1
  237. package/dist/p2p/network-admission-coordinator.js +20 -2
  238. package/dist/p2p/network-admission-coordinator.js.map +1 -1
  239. package/dist/prepare-unscoped-context-graph-read-checks.d.ts.map +1 -1
  240. package/dist/prepare-unscoped-context-graph-read-checks.js +12 -0
  241. package/dist/prepare-unscoped-context-graph-read-checks.js.map +1 -1
  242. package/dist/registered-context-graph-authority.d.ts +7 -0
  243. package/dist/registered-context-graph-authority.d.ts.map +1 -1
  244. package/dist/registered-private-empty-vm-attempt-v1.d.ts +34 -0
  245. package/dist/registered-private-empty-vm-attempt-v1.d.ts.map +1 -0
  246. package/dist/registered-private-empty-vm-attempt-v1.js +120 -0
  247. package/dist/registered-private-empty-vm-attempt-v1.js.map +1 -0
  248. package/dist/reserved-ka-id-allocation.d.ts +12 -0
  249. package/dist/reserved-ka-id-allocation.d.ts.map +1 -0
  250. package/dist/reserved-ka-id-allocation.js +25 -0
  251. package/dist/reserved-ka-id-allocation.js.map +1 -0
  252. package/dist/rfc64/authority-rpc-circuit-breaker-v1.d.ts +5 -3
  253. package/dist/rfc64/authority-rpc-circuit-breaker-v1.d.ts.map +1 -1
  254. package/dist/rfc64/authority-rpc-circuit-breaker-v1.js +9 -0
  255. package/dist/rfc64/authority-rpc-circuit-breaker-v1.js.map +1 -1
  256. package/dist/rfc64/catalog-completion-evidence-v1.d.ts +38 -0
  257. package/dist/rfc64/catalog-completion-evidence-v1.d.ts.map +1 -0
  258. package/dist/rfc64/catalog-completion-evidence-v1.js +49 -0
  259. package/dist/rfc64/catalog-completion-evidence-v1.js.map +1 -0
  260. package/dist/rfc64/catalog-operational-applied-heads-v1.d.ts +6 -3
  261. package/dist/rfc64/catalog-operational-applied-heads-v1.d.ts.map +1 -1
  262. package/dist/rfc64/catalog-operational-applied-heads-v1.js +6 -3
  263. package/dist/rfc64/catalog-operational-applied-heads-v1.js.map +1 -1
  264. package/dist/rfc64/catalog-operational-reads-v1.d.ts +13 -0
  265. package/dist/rfc64/catalog-operational-reads-v1.d.ts.map +1 -0
  266. package/dist/rfc64/catalog-operational-reads-v1.js +56 -0
  267. package/dist/rfc64/catalog-operational-reads-v1.js.map +1 -0
  268. package/dist/rfc64/catalog-operational-targets-v1.d.ts +55 -0
  269. package/dist/rfc64/catalog-operational-targets-v1.d.ts.map +1 -0
  270. package/dist/rfc64/catalog-operational-targets-v1.js +379 -0
  271. package/dist/rfc64/catalog-operational-targets-v1.js.map +1 -0
  272. package/dist/rfc64/catalog-replay-recovery-runtime-v1.d.ts +2 -0
  273. package/dist/rfc64/catalog-replay-recovery-runtime-v1.d.ts.map +1 -1
  274. package/dist/rfc64/catalog-replay-recovery-runtime-v1.js +18 -25
  275. package/dist/rfc64/catalog-replay-recovery-runtime-v1.js.map +1 -1
  276. package/dist/rfc64/legacy-swm-boundary-codec-v1.d.ts +25 -0
  277. package/dist/rfc64/legacy-swm-boundary-codec-v1.d.ts.map +1 -0
  278. package/dist/rfc64/legacy-swm-boundary-codec-v1.js +127 -0
  279. package/dist/rfc64/legacy-swm-boundary-codec-v1.js.map +1 -0
  280. package/dist/rfc64/legacy-swm-boundary-v1.d.ts +12 -0
  281. package/dist/rfc64/legacy-swm-boundary-v1.d.ts.map +1 -1
  282. package/dist/rfc64/legacy-swm-boundary-v1.js +83 -144
  283. package/dist/rfc64/legacy-swm-boundary-v1.js.map +1 -1
  284. package/dist/rfc64/private-catalog-subscription-readiness-v1.d.ts +33 -0
  285. package/dist/rfc64/private-catalog-subscription-readiness-v1.d.ts.map +1 -0
  286. package/dist/rfc64/private-catalog-subscription-readiness-v1.js +97 -0
  287. package/dist/rfc64/private-catalog-subscription-readiness-v1.js.map +1 -0
  288. package/dist/rfc64/private-read-roster-v1.d.ts +14 -0
  289. package/dist/rfc64/private-read-roster-v1.d.ts.map +1 -0
  290. package/dist/rfc64/private-read-roster-v1.js +57 -0
  291. package/dist/rfc64/private-read-roster-v1.js.map +1 -0
  292. package/dist/rfc64/registered-private-empty-vm-proof-v1.d.ts +20 -0
  293. package/dist/rfc64/registered-private-empty-vm-proof-v1.d.ts.map +1 -0
  294. package/dist/rfc64/registered-private-empty-vm-proof-v1.js +26 -0
  295. package/dist/rfc64/registered-private-empty-vm-proof-v1.js.map +1 -0
  296. package/dist/rfc64/swm-inventory-shadow-runtime-v1.d.ts +3 -1
  297. package/dist/rfc64/swm-inventory-shadow-runtime-v1.d.ts.map +1 -1
  298. package/dist/rfc64/swm-inventory-shadow-runtime-v1.js +34 -0
  299. package/dist/rfc64/swm-inventory-shadow-runtime-v1.js.map +1 -1
  300. package/dist/sync/auth/pipe-request-tail.d.ts +5 -1
  301. package/dist/sync/auth/pipe-request-tail.d.ts.map +1 -1
  302. package/dist/sync/auth/pipe-request-tail.js +13 -3
  303. package/dist/sync/auth/pipe-request-tail.js.map +1 -1
  304. package/dist/sync/auth/request-build.d.ts +3 -0
  305. package/dist/sync/auth/request-build.d.ts.map +1 -1
  306. package/dist/sync/auth/request-build.js +11 -2
  307. package/dist/sync/auth/request-build.js.map +1 -1
  308. package/dist/sync/backpressure.d.ts +27 -16
  309. package/dist/sync/backpressure.d.ts.map +1 -1
  310. package/dist/sync/backpressure.js +66 -40
  311. package/dist/sync/backpressure.js.map +1 -1
  312. package/dist/sync/catchup-policy.d.ts +2 -0
  313. package/dist/sync/catchup-policy.d.ts.map +1 -1
  314. package/dist/sync/catchup-policy.js +2 -0
  315. package/dist/sync/catchup-policy.js.map +1 -1
  316. package/dist/sync/exact-assets.d.ts +7 -5
  317. package/dist/sync/exact-assets.d.ts.map +1 -1
  318. package/dist/sync/exact-assets.js +13 -8
  319. package/dist/sync/exact-assets.js.map +1 -1
  320. package/dist/sync/exact-batch-observation.d.ts +3 -0
  321. package/dist/sync/exact-batch-observation.d.ts.map +1 -0
  322. package/dist/sync/exact-batch-observation.js +13 -0
  323. package/dist/sync/exact-batch-observation.js.map +1 -0
  324. package/dist/sync/exact-batch-stream-capability.d.ts +24 -0
  325. package/dist/sync/exact-batch-stream-capability.d.ts.map +1 -0
  326. package/dist/sync/exact-batch-stream-capability.js +88 -0
  327. package/dist/sync/exact-batch-stream-capability.js.map +1 -0
  328. package/dist/sync/exact-batch-stream-contract.d.ts +78 -0
  329. package/dist/sync/exact-batch-stream-contract.d.ts.map +1 -0
  330. package/dist/sync/exact-batch-stream-contract.js +206 -0
  331. package/dist/sync/exact-batch-stream-contract.js.map +1 -0
  332. package/dist/sync/peer-connection.d.ts.map +1 -1
  333. package/dist/sync/peer-connection.js +11 -2
  334. package/dist/sync/peer-connection.js.map +1 -1
  335. package/dist/sync/priority-admission-queue.d.ts +17 -0
  336. package/dist/sync/priority-admission-queue.d.ts.map +1 -1
  337. package/dist/sync/priority-admission-queue.js +58 -37
  338. package/dist/sync/priority-admission-queue.js.map +1 -1
  339. package/dist/sync/requester/admission-boundary.d.ts +12 -0
  340. package/dist/sync/requester/admission-boundary.d.ts.map +1 -0
  341. package/dist/sync/requester/admission-boundary.js +22 -0
  342. package/dist/sync/requester/admission-boundary.js.map +1 -0
  343. package/dist/sync/requester/durable-sync.d.ts +2 -1
  344. package/dist/sync/requester/durable-sync.d.ts.map +1 -1
  345. package/dist/sync/requester/durable-sync.js +3 -188
  346. package/dist/sync/requester/durable-sync.js.map +1 -1
  347. package/dist/sync/requester/exact-batch-stream-driver.d.ts +83 -0
  348. package/dist/sync/requester/exact-batch-stream-driver.d.ts.map +1 -0
  349. package/dist/sync/requester/exact-batch-stream-driver.js +299 -0
  350. package/dist/sync/requester/exact-batch-stream-driver.js.map +1 -0
  351. package/dist/sync/requester/exact-batch-stream.d.ts +72 -0
  352. package/dist/sync/requester/exact-batch-stream.d.ts.map +1 -0
  353. package/dist/sync/requester/exact-batch-stream.js +267 -0
  354. package/dist/sync/requester/exact-batch-stream.js.map +1 -0
  355. package/dist/sync/requester/exact-recovery-transport.d.ts +19 -0
  356. package/dist/sync/requester/exact-recovery-transport.d.ts.map +1 -0
  357. package/dist/sync/requester/exact-recovery-transport.js +3 -0
  358. package/dist/sync/requester/exact-recovery-transport.js.map +1 -0
  359. package/dist/sync/requester/finalized-swm-twin-reconciliation.js +12 -3
  360. package/dist/sync/requester/finalized-swm-twin-reconciliation.js.map +1 -1
  361. package/dist/sync/requester/graph-scoped-materialization.d.ts.map +1 -1
  362. package/dist/sync/requester/graph-scoped-materialization.js +58 -24
  363. package/dist/sync/requester/graph-scoped-materialization.js.map +1 -1
  364. package/dist/sync/requester/page-fetch.d.ts +7 -0
  365. package/dist/sync/requester/page-fetch.d.ts.map +1 -1
  366. package/dist/sync/requester/page-fetch.js +103 -49
  367. package/dist/sync/requester/page-fetch.js.map +1 -1
  368. package/dist/sync/requester/shared-memory-sync.d.ts +10 -5
  369. package/dist/sync/requester/shared-memory-sync.d.ts.map +1 -1
  370. package/dist/sync/requester/shared-memory-sync.js +149 -150
  371. package/dist/sync/requester/shared-memory-sync.js.map +1 -1
  372. package/dist/sync/requester/swm-materialization-memo.d.ts +12 -0
  373. package/dist/sync/requester/swm-materialization-memo.d.ts.map +1 -0
  374. package/dist/sync/requester/swm-materialization-memo.js +54 -0
  375. package/dist/sync/requester/swm-materialization-memo.js.map +1 -0
  376. package/dist/sync/requester/swm-recovery.d.ts +3 -29
  377. package/dist/sync/requester/swm-recovery.d.ts.map +1 -1
  378. package/dist/sync/requester/swm-recovery.js +11 -10
  379. package/dist/sync/requester/swm-recovery.js.map +1 -1
  380. package/dist/sync/requester/swm-snapshot-materializer.d.ts.map +1 -1
  381. package/dist/sync/requester/swm-snapshot-materializer.js +18 -0
  382. package/dist/sync/requester/swm-snapshot-materializer.js.map +1 -1
  383. package/dist/sync/requester/swm-target-executor.d.ts +6 -0
  384. package/dist/sync/requester/swm-target-executor.d.ts.map +1 -1
  385. package/dist/sync/requester/swm-target-executor.js +24 -3
  386. package/dist/sync/requester/swm-target-executor.js.map +1 -1
  387. package/dist/sync/requester/verified-asset-preparation.d.ts +9 -0
  388. package/dist/sync/requester/verified-asset-preparation.d.ts.map +1 -0
  389. package/dist/sync/requester/verified-asset-preparation.js +190 -0
  390. package/dist/sync/requester/verified-asset-preparation.js.map +1 -0
  391. package/dist/sync/responder/asset-metadata.d.ts +18 -0
  392. package/dist/sync/responder/asset-metadata.d.ts.map +1 -0
  393. package/dist/sync/responder/asset-metadata.js +27 -0
  394. package/dist/sync/responder/asset-metadata.js.map +1 -0
  395. package/dist/sync/responder/durable-data-request-policy.d.ts +2 -16
  396. package/dist/sync/responder/durable-data-request-policy.d.ts.map +1 -1
  397. package/dist/sync/responder/durable-data-request-policy.js +1 -31
  398. package/dist/sync/responder/durable-data-request-policy.js.map +1 -1
  399. package/dist/sync/responder/exact-asset-export-cache.d.ts +89 -0
  400. package/dist/sync/responder/exact-asset-export-cache.d.ts.map +1 -0
  401. package/dist/sync/responder/exact-asset-export-cache.js +550 -0
  402. package/dist/sync/responder/exact-asset-export-cache.js.map +1 -0
  403. package/dist/sync/responder/exact-batch-stream.d.ts +47 -0
  404. package/dist/sync/responder/exact-batch-stream.d.ts.map +1 -0
  405. package/dist/sync/responder/exact-batch-stream.js +151 -0
  406. package/dist/sync/responder/exact-batch-stream.js.map +1 -0
  407. package/dist/sync/responder/exact-data-session.d.ts +67 -0
  408. package/dist/sync/responder/exact-data-session.d.ts.map +1 -0
  409. package/dist/sync/responder/exact-data-session.js +130 -0
  410. package/dist/sync/responder/exact-data-session.js.map +1 -0
  411. package/dist/sync/responder/exact-graph-cursor-filter.d.ts +9 -0
  412. package/dist/sync/responder/exact-graph-cursor-filter.d.ts.map +1 -0
  413. package/dist/sync/responder/exact-graph-cursor-filter.js +101 -0
  414. package/dist/sync/responder/exact-graph-cursor-filter.js.map +1 -0
  415. package/dist/sync/responder/exact-graph-reader.d.ts +95 -0
  416. package/dist/sync/responder/exact-graph-reader.d.ts.map +1 -0
  417. package/dist/sync/responder/exact-graph-reader.js +623 -0
  418. package/dist/sync/responder/exact-graph-reader.js.map +1 -0
  419. package/dist/sync/responder/exact-page-reader.d.ts +37 -0
  420. package/dist/sync/responder/exact-page-reader.d.ts.map +1 -0
  421. package/dist/sync/responder/exact-page-reader.js +130 -0
  422. package/dist/sync/responder/exact-page-reader.js.map +1 -0
  423. package/dist/sync/responder/graph-plan.d.ts +19 -85
  424. package/dist/sync/responder/graph-plan.d.ts.map +1 -1
  425. package/dist/sync/responder/graph-plan.js +51 -988
  426. package/dist/sync/responder/graph-plan.js.map +1 -1
  427. package/dist/sync/responder/page-framing-policy.d.ts +31 -0
  428. package/dist/sync/responder/page-framing-policy.d.ts.map +1 -0
  429. package/dist/sync/responder/page-framing-policy.js +41 -0
  430. package/dist/sync/responder/page-framing-policy.js.map +1 -0
  431. package/dist/sync/responder/responder-row-page.d.ts +85 -0
  432. package/dist/sync/responder/responder-row-page.d.ts.map +1 -0
  433. package/dist/sync/responder/responder-row-page.js +181 -0
  434. package/dist/sync/responder/responder-row-page.js.map +1 -0
  435. package/dist/sync/responder/row-serialization.d.ts +34 -0
  436. package/dist/sync/responder/row-serialization.d.ts.map +1 -0
  437. package/dist/sync/responder/row-serialization.js +69 -0
  438. package/dist/sync/responder/row-serialization.js.map +1 -0
  439. package/dist/sync/responder/session-plan-memo.d.ts +20 -0
  440. package/dist/sync/responder/session-plan-memo.d.ts.map +1 -0
  441. package/dist/sync/responder/session-plan-memo.js +135 -0
  442. package/dist/sync/responder/session-plan-memo.js.map +1 -0
  443. package/dist/sync/responder/sync-handler.d.ts +18 -1
  444. package/dist/sync/responder/sync-handler.d.ts.map +1 -1
  445. package/dist/sync/responder/sync-handler.js +101 -57
  446. package/dist/sync/responder/sync-handler.js.map +1 -1
  447. package/dist/sync/shared-memory-completion.d.ts +30 -0
  448. package/dist/sync/shared-memory-completion.d.ts.map +1 -1
  449. package/dist/sync/shared-memory-completion.js +13 -0
  450. package/dist/sync/shared-memory-completion.js.map +1 -1
  451. package/dist/sync/wire-compression.d.ts +47 -0
  452. package/dist/sync/wire-compression.d.ts.map +1 -0
  453. package/dist/sync/wire-compression.js +111 -0
  454. package/dist/sync/wire-compression.js.map +1 -0
  455. package/dist/unscoped-query-consistency.d.ts +12 -0
  456. package/dist/unscoped-query-consistency.d.ts.map +1 -1
  457. package/dist/unscoped-query-consistency.js +17 -1
  458. package/dist/unscoped-query-consistency.js.map +1 -1
  459. package/dist/vm-promotion-audit.d.ts +2 -2
  460. package/dist/vm-promotion-audit.d.ts.map +1 -1
  461. package/dist/vm-promotion-audit.js +26 -9
  462. package/dist/vm-promotion-audit.js.map +1 -1
  463. package/dist/vm-reconcile-dispatcher.d.ts +42 -1
  464. package/dist/vm-reconcile-dispatcher.d.ts.map +1 -1
  465. package/dist/vm-reconcile-dispatcher.js +103 -4
  466. package/dist/vm-reconcile-dispatcher.js.map +1 -1
  467. package/dist/vm-reconcile-peer-topology.d.ts +7 -9
  468. package/dist/vm-reconcile-peer-topology.d.ts.map +1 -1
  469. package/dist/vm-reconcile-peer-topology.js +1 -37
  470. package/dist/vm-reconcile-peer-topology.js.map +1 -1
  471. package/dist/vm-recovery-candidate-order.d.ts +16 -0
  472. package/dist/vm-recovery-candidate-order.d.ts.map +1 -0
  473. package/dist/vm-recovery-candidate-order.js +24 -0
  474. package/dist/vm-recovery-candidate-order.js.map +1 -0
  475. package/dist/vm-recovery-core-transport-preference.d.ts +69 -0
  476. package/dist/vm-recovery-core-transport-preference.d.ts.map +1 -0
  477. package/dist/vm-recovery-core-transport-preference.js +131 -0
  478. package/dist/vm-recovery-core-transport-preference.js.map +1 -0
  479. package/dist/vm-recovery-experiment-policy.d.ts +24 -0
  480. package/dist/vm-recovery-experiment-policy.d.ts.map +1 -0
  481. package/dist/vm-recovery-experiment-policy.js +18 -0
  482. package/dist/vm-recovery-experiment-policy.js.map +1 -0
  483. package/dist/vm-recovery-footprint.d.ts +54 -0
  484. package/dist/vm-recovery-footprint.d.ts.map +1 -1
  485. package/dist/vm-recovery-footprint.js +88 -24
  486. package/dist/vm-recovery-footprint.js.map +1 -1
  487. package/dist/vm-recovery-microbatch.d.ts +2 -0
  488. package/dist/vm-recovery-microbatch.d.ts.map +1 -1
  489. package/dist/vm-recovery-microbatch.js +7 -3
  490. package/dist/vm-recovery-microbatch.js.map +1 -1
  491. package/dist/vm-recovery-pass-authority.d.ts +84 -0
  492. package/dist/vm-recovery-pass-authority.d.ts.map +1 -0
  493. package/dist/vm-recovery-pass-authority.js +126 -0
  494. package/dist/vm-recovery-pass-authority.js.map +1 -0
  495. package/dist/vm-recovery-phase-timing.d.ts +75 -0
  496. package/dist/vm-recovery-phase-timing.d.ts.map +1 -0
  497. package/dist/vm-recovery-phase-timing.js +236 -0
  498. package/dist/vm-recovery-phase-timing.js.map +1 -0
  499. package/dist/vm-recovery-preparation.d.ts +143 -0
  500. package/dist/vm-recovery-preparation.d.ts.map +1 -0
  501. package/dist/vm-recovery-preparation.js +433 -0
  502. package/dist/vm-recovery-preparation.js.map +1 -0
  503. package/dist/vm-recovery-provider-policy.d.ts +13 -1
  504. package/dist/vm-recovery-provider-policy.d.ts.map +1 -1
  505. package/dist/vm-recovery-provider-policy.js +37 -5
  506. package/dist/vm-recovery-provider-policy.js.map +1 -1
  507. package/dist/vm-recovery-stream-profile.d.ts +15 -0
  508. package/dist/vm-recovery-stream-profile.d.ts.map +1 -0
  509. package/dist/vm-recovery-stream-profile.js +53 -0
  510. package/dist/vm-recovery-stream-profile.js.map +1 -0
  511. package/dist/vm-recovery-stream-setback-policy.d.ts +54 -0
  512. package/dist/vm-recovery-stream-setback-policy.d.ts.map +1 -0
  513. package/dist/vm-recovery-stream-setback-policy.js +85 -0
  514. package/dist/vm-recovery-stream-setback-policy.js.map +1 -0
  515. package/dist/vm-recovery-timing-observer.d.ts +27 -0
  516. package/dist/vm-recovery-timing-observer.d.ts.map +1 -0
  517. package/dist/vm-recovery-timing-observer.js +49 -0
  518. package/dist/vm-recovery-timing-observer.js.map +1 -0
  519. package/dist/vm-recovery-transport-budget-policy.d.ts +32 -0
  520. package/dist/vm-recovery-transport-budget-policy.d.ts.map +1 -0
  521. package/dist/vm-recovery-transport-budget-policy.js +55 -0
  522. package/dist/vm-recovery-transport-budget-policy.js.map +1 -0
  523. package/dist/vm-recovery-transport-plan.d.ts +83 -0
  524. package/dist/vm-recovery-transport-plan.d.ts.map +1 -0
  525. package/dist/vm-recovery-transport-plan.js +117 -0
  526. package/dist/vm-recovery-transport-plan.js.map +1 -0
  527. package/package.json +17 -9
  528. package/dist/finalization-annotations.d.ts +0 -5
  529. package/dist/finalization-annotations.d.ts.map +0 -1
  530. package/dist/finalization-annotations.js +0 -6
  531. package/dist/finalization-annotations.js.map +0 -1
  532. package/dist/swm-ka-bound.d.ts +0 -21
  533. package/dist/swm-ka-bound.d.ts.map +0 -1
  534. package/dist/swm-ka-bound.js +0 -36
  535. package/dist/swm-ka-bound.js.map +0 -1
@@ -0,0 +1,111 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { gzipBounded, gunzipBounded } from '@origintrail-official/dkg-core';
3
+ export const EXACT_SYNC_GZIP_ENCODING = 'gzip-nquads-v1';
4
+ export const EXACT_SYNC_GZIP_MAX_COMPRESSED_BYTES = 4 * 1024 * 1024;
5
+ export const EXACT_SYNC_GZIP_MAX_INFLATED_BYTES = 16 * 1024 * 1024;
6
+ export const EXACT_SYNC_GZIP_MAX_ROWS = 100_000;
7
+ export const EXACT_SYNC_GZIP_MAX_HEAP_BYTES_ESTIMATE = 32 * 1024 * 1024;
8
+ const EXACT_SYNC_GZIP_PROFILE = Object.freeze({
9
+ responseEncoding: EXACT_SYNC_GZIP_ENCODING,
10
+ maxCompressedBytes: EXACT_SYNC_GZIP_MAX_COMPRESSED_BYTES,
11
+ maxInflatedBytes: EXACT_SYNC_GZIP_MAX_INFLATED_BYTES,
12
+ maxRows: EXACT_SYNC_GZIP_MAX_ROWS,
13
+ maxHeapBytesEstimate: EXACT_SYNC_GZIP_MAX_HEAP_BYTES_ESTIMATE,
14
+ });
15
+ const MAGIC = new TextEncoder().encode('DKGZQ01\n');
16
+ const HEADER_BYTES = 20;
17
+ const CODEC_TIMEOUT_MS = 5_000;
18
+ export function normalizeExactSyncResponseEncoding(value) {
19
+ return value === EXACT_SYNC_GZIP_ENCODING ? EXACT_SYNC_GZIP_ENCODING : undefined;
20
+ }
21
+ /** Encoding is response shaping only; it never establishes read authority. */
22
+ export function negotiatesExactSyncGzip(request) {
23
+ return request.responseEncoding === EXACT_SYNC_GZIP_ENCODING && request.includeSharedMemory !== true
24
+ && (request.phase === 'data' || request.phase === 'meta') && request.assetUals?.length === 1;
25
+ }
26
+ /** One negotiated encoding decision and its fixed resource ceilings. */
27
+ export function resolveExactSyncGzipProfile(request) {
28
+ return negotiatesExactSyncGzip(request) ? EXACT_SYNC_GZIP_PROFILE : undefined;
29
+ }
30
+ export function isExactSyncGzipFrame(bytes) {
31
+ return bytes.byteLength >= MAGIC.length && MAGIC.every((byte, index) => bytes[index] === byte);
32
+ }
33
+ function lines(bytes) {
34
+ let count = 0;
35
+ for (const byte of bytes)
36
+ if (byte === 10)
37
+ count++;
38
+ return count + (bytes.byteLength > 0 && bytes.at(-1) !== 10 ? 1 : 0);
39
+ }
40
+ /** Compress unchanged N-Quads only for a requesting, already-authorized exact peer. */
41
+ export async function encodeNegotiatedExactSyncResponse(bytes, options) {
42
+ return encodeResolvedExactSyncResponse(bytes, {
43
+ profile: resolveExactSyncGzipProfile(options.request), signal: options.signal,
44
+ });
45
+ }
46
+ /** Encode with the request profile already chosen by the authenticated responder. */
47
+ export async function encodeResolvedExactSyncResponse(bytes, options) {
48
+ options.signal?.throwIfAborted();
49
+ const profile = options.profile;
50
+ if (!profile || bytes.byteLength === 0)
51
+ return bytes;
52
+ if (bytes.byteLength > profile.maxInflatedBytes || lines(bytes) > profile.maxRows) {
53
+ throw new RangeError('Exact sync decoded page exceeds bounded transport profile');
54
+ }
55
+ let compressed;
56
+ try {
57
+ compressed = await gzipBounded(bytes, { maxInputBytes: profile.maxInflatedBytes,
58
+ maxOutputBytes: profile.maxCompressedBytes - HEADER_BYTES, timeoutMs: CODEC_TIMEOUT_MS, signal: options.signal });
59
+ }
60
+ catch (error) {
61
+ options.signal?.throwIfAborted();
62
+ // The responder can use its existing plain path only within that path's
63
+ // four-MiB body cap. Larger codec refusal is an error, never a partial EOF.
64
+ if (bytes.byteLength <= profile.maxCompressedBytes)
65
+ return bytes;
66
+ throw error;
67
+ }
68
+ if (compressed.byteLength + HEADER_BYTES >= bytes.byteLength && bytes.byteLength <= profile.maxCompressedBytes)
69
+ return bytes;
70
+ const frame = new Uint8Array(HEADER_BYTES + compressed.byteLength);
71
+ frame.set(MAGIC);
72
+ const view = new DataView(frame.buffer);
73
+ view.setUint32(8, bytes.byteLength);
74
+ view.setUint32(12, lines(bytes));
75
+ view.setUint32(16, compressed.byteLength);
76
+ frame.set(compressed, HEADER_BYTES);
77
+ return frame;
78
+ }
79
+ /** A recognized malformed/compression-bomb frame never falls back to plaintext. */
80
+ export async function decodeNegotiatedExactSyncResponse(bytes, options) {
81
+ options.signal?.throwIfAborted();
82
+ const maxInflated = Math.min(options.maxInflatedBytes ?? EXACT_SYNC_GZIP_MAX_INFLATED_BYTES, EXACT_SYNC_GZIP_MAX_INFLATED_BYTES);
83
+ if (!Number.isSafeInteger(maxInflated) || maxInflated < 0)
84
+ throw new TypeError('Invalid exact sync inflate allowance');
85
+ if (!isExactSyncGzipFrame(bytes)) {
86
+ if (options.allowCompression && bytes.byteLength > EXACT_SYNC_GZIP_MAX_COMPRESSED_BYTES)
87
+ throw new RangeError('Exact sync plaintext frame exceeds physical wire allowance');
88
+ if (options.allowCompression && bytes.byteLength > maxInflated)
89
+ throw new RangeError('Exact sync decoded phase exceeds remaining allowance');
90
+ const rows = options.allowCompression ? lines(bytes) : undefined;
91
+ if (rows !== undefined && rows > EXACT_SYNC_GZIP_MAX_ROWS)
92
+ throw new RangeError('Exact sync decoded page exceeds row allowance');
93
+ return Object.freeze({ bytes, compressed: false, ...(rows === undefined ? {} : { rows }) });
94
+ }
95
+ if (!options.allowCompression || bytes.byteLength < HEADER_BYTES || bytes.byteLength > EXACT_SYNC_GZIP_MAX_COMPRESSED_BYTES) {
96
+ throw new Error('Unnegotiated or oversized exact sync gzip frame');
97
+ }
98
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
99
+ const inflatedLength = view.getUint32(8), rowCount = view.getUint32(12), compressedLength = view.getUint32(16);
100
+ if (inflatedLength < 1 || inflatedLength > maxInflated || rowCount < 1 || rowCount > EXACT_SYNC_GZIP_MAX_ROWS
101
+ || compressedLength < 18 || compressedLength !== bytes.byteLength - HEADER_BYTES)
102
+ throw new Error('Invalid exact sync gzip lengths or rows');
103
+ const inflated = await gunzipBounded(bytes.subarray(HEADER_BYTES), { maxInputBytes: EXACT_SYNC_GZIP_MAX_COMPRESSED_BYTES,
104
+ maxOutputBytes: inflatedLength, maxOutputLines: rowCount, timeoutMs: CODEC_TIMEOUT_MS, signal: options.signal });
105
+ if (inflated.byteLength !== inflatedLength || lines(inflated) !== rowCount)
106
+ throw new Error('Exact sync gzip declared length/row mismatch');
107
+ new TextDecoder('utf-8', { fatal: true }).decode(inflated);
108
+ options.signal?.throwIfAborted();
109
+ return Object.freeze({ bytes: inflated, compressed: true, rows: rowCount });
110
+ }
111
+ //# sourceMappingURL=wire-compression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-compression.js","sourceRoot":"","sources":["../../src/sync/wire-compression.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,15 @@
1
+ /**
2
+ * A local write or a read-authority change landed inside the interval an
3
+ * unscoped query has to hold unchanged, so its result was withheld. The request
4
+ * is sound and the same query can succeed once that change has settled. The
5
+ * code and the sentence are the dkg-core contract the daemon answers with; the
6
+ * class itself stays out of the public agent surface.
7
+ */
8
+ export declare class UnscopedQueryInvalidatedError extends Error {
9
+ readonly code = "UNSCOPED_QUERY_INVALIDATED";
10
+ readonly retryable = true;
11
+ constructor();
12
+ }
1
13
  /**
2
14
  * Own result release across one unchanged local dataset/metadata interval.
3
15
  * Chain authorization retains the admission-time semantics of scoped reads;
@@ -1 +1 @@
1
- {"version":3,"file":"unscoped-query-consistency.d.ts","sourceRoot":"","sources":["../src/unscoped-query-consistency.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE;IAClD,KAAK,EAAE,OAAO,CAAC;IACf,oBAAoB,IAAI,MAAM,CAAC;IAC/B,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,IAAI,CAAC,CAAC;CACb,GAAG,OAAO,CAAC,CAAC,CAAC,CAOb;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,EACd,oBAAoB,EAAE,MAAM,MAAM,GACjC,MAAM,IAAI,CAkBZ"}
1
+ {"version":3,"file":"unscoped-query-consistency.d.ts","sourceRoot":"","sources":["../src/unscoped-query-consistency.ts"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,QAAQ,CAAC,IAAI,gCAAmC;IAChD,QAAQ,CAAC,SAAS,QAAQ;;CAM3B;AAID;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE;IAClD,KAAK,EAAE,OAAO,CAAC;IACf,oBAAoB,IAAI,MAAM,CAAC;IAC/B,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,IAAI,CAAC,CAAC;CACb,GAAG,OAAO,CAAC,CAAC,CAAC,CAOb;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,EACd,oBAAoB,EAAE,MAAM,MAAM,GACjC,MAAM,IAAI,CAkBZ"}
@@ -1,7 +1,23 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
+ import { UNSCOPED_QUERY_INVALIDATED_CODE, UNSCOPED_QUERY_INVALIDATED_MESSAGE, } from '@origintrail-official/dkg-core';
2
3
  import { asGraphWriteRevisionSource } from '@origintrail-official/dkg-storage';
3
4
  const unsupported = () => new Error('Unscoped query requires a store with all-writer consistency coverage; specify contextGraphId to scope the query');
4
- const invalidated = () => new Error('Unscoped query dataset or read authority changed; retry the query or specify contextGraphId');
5
+ /**
6
+ * A local write or a read-authority change landed inside the interval an
7
+ * unscoped query has to hold unchanged, so its result was withheld. The request
8
+ * is sound and the same query can succeed once that change has settled. The
9
+ * code and the sentence are the dkg-core contract the daemon answers with; the
10
+ * class itself stays out of the public agent surface.
11
+ */
12
+ export class UnscopedQueryInvalidatedError extends Error {
13
+ code = UNSCOPED_QUERY_INVALIDATED_CODE;
14
+ retryable = true;
15
+ constructor() {
16
+ super(UNSCOPED_QUERY_INVALIDATED_MESSAGE);
17
+ this.name = 'UnscopedQueryInvalidatedError';
18
+ }
19
+ }
20
+ const invalidated = () => new UnscopedQueryInvalidatedError();
5
21
  /**
6
22
  * Own result release across one unchanged local dataset/metadata interval.
7
23
  * Chain authorization retains the admission-time semantics of scoped reads;
@@ -1 +1 @@
1
- {"version":3,"file":"unscoped-query-consistency.js","sourceRoot":"","sources":["../src/unscoped-query-consistency.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAE/E,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,CACjC,iHAAiH,CAClH,CAAC;AACF,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,CACjC,6FAA6F,CAC9F,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAI,IAM7C;IACC,MAAM,eAAe,GAAG,+BAA+B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC/F,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IAChD,eAAe,EAAE,CAAC;IAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,eAAe,EAAE,CAAC;IAClB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B,CAC7C,KAAc,EACd,oBAAkC;IAElC,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,MAAM,EAAE,qBAAqB,KAAK,aAAa;QAAE,MAAM,WAAW,EAAE,CAAC;IACzE,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC;QAAE,MAAM,WAAW,EAAE,CAAC;IACvG,MAAM,gBAAgB,GAAG,oBAAoB,EAAE,CAAC;IAEhD,OAAO,GAAG,EAAE;QACV,MAAM,aAAa,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,aAAa,EAAE,qBAAqB,KAAK,aAAa;YAAE,MAAM,WAAW,EAAE,CAAC;QAChF,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACnD,IACE,OAAO,CAAC,MAAM,KAAK,IAAI;eACpB,OAAO,CAAC,UAAU,KAAK,UAAU;eACjC,oBAAoB,EAAE,KAAK,gBAAgB;YAC9C,MAAM,WAAW,EAAE,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"unscoped-query-consistency.js","sourceRoot":"","sources":["../src/unscoped-query-consistency.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,GACnC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAE/E,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,CACjC,iHAAiH,CAClH,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAC7C,IAAI,GAAG,+BAA+B,CAAC;IACvC,SAAS,GAAG,IAAI,CAAC;IAE1B;QACE,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,6BAA6B,EAAE,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAI,IAM7C;IACC,MAAM,eAAe,GAAG,+BAA+B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC/F,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IAChD,eAAe,EAAE,CAAC;IAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,eAAe,EAAE,CAAC;IAClB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B,CAC7C,KAAc,EACd,oBAAkC;IAElC,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,MAAM,EAAE,qBAAqB,KAAK,aAAa;QAAE,MAAM,WAAW,EAAE,CAAC;IACzE,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC;QAAE,MAAM,WAAW,EAAE,CAAC;IACvG,MAAM,gBAAgB,GAAG,oBAAoB,EAAE,CAAC;IAEhD,OAAO,GAAG,EAAE;QACV,MAAM,aAAa,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,aAAa,EAAE,qBAAqB,KAAK,aAAa;YAAE,MAAM,WAAW,EAAE,CAAC;QAChF,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACnD,IACE,OAAO,CAAC,MAAM,KAAK,IAAI;eACpB,OAAO,CAAC,UAAU,KAAK,UAAU;eACjC,oBAAoB,EAAE,KAAK,gBAAgB;YAC9C,MAAM,WAAW,EAAE,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC"}
@@ -77,8 +77,8 @@ export declare function storageAckPendingUpdatesQuery(input: Readonly<{
77
77
  export declare function storageAckAssetSubGraphsQuery(namespace: string, kaUal: string): string;
78
78
  /** Sub-graphs of one namespace that hold ledgered copies. */
79
79
  export declare function storageAckNamespaceSubGraphsQuery(namespace: string, limit: number): string;
80
- /** Whether the namespace's VM holds the asset at `version` or later. */
81
- export declare function storageAckPromotedQuery(namespace: string, kaUal: string, version: bigint): string;
80
+ /** Check one already-bounded audit slice across its exact VM metadata graphs. */
81
+ export declare function storageAckPromotedBatchQuery(candidates: readonly Pick<StorageAckLedgerCandidate, 'operationSubject' | 'namespace' | 'kaUal' | 'assertionVersion'>[]): string;
82
82
  /** Ledger rows whose ACK copy no longer exists (retired or expired). */
83
83
  export declare function storageAckLedgerOrphansQuery(limit: number): string;
84
84
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"vm-promotion-audit.d.ts","sourceRoot":"","sources":["../src/vm-promotion-audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vm-promotion-audit.d.ts","sourceRoot":"","sources":["../src/vm-promotion-audit.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  * paged): no COUNT or GROUP BY, which Blazegraph mis-evaluates over
9
9
  * multi-graph patterns.
10
10
  */
11
- import { contextGraphMetaUri, createGraphKnowledgeAssetScope, isSafeIri, sparqlString, validateSubGraphName, } from '@origintrail-official/dkg-core';
11
+ import { contextGraphMetaUri, createGraphKnowledgeAssetScope, assertSafeIri, isSafeIri, sparqlString, validateSubGraphName, } from '@origintrail-official/dkg-core';
12
12
  import { STORAGE_ACK_LEDGER_GRAPH, STORAGE_ACK_LEDGER_PREDICATES as LEDGER, } from '@origintrail-official/dkg-publisher';
13
13
  const DKG = 'http://dkg.io/ontology/';
14
14
  const XSD_DATE_TIME = 'http://www.w3.org/2001/XMLSchema#dateTime';
@@ -120,13 +120,30 @@ export function storageAckNamespaceSubGraphsQuery(namespace, limit) {
120
120
  <${LEDGER.subGraphName}> ?subGraph .
121
121
  } } ORDER BY ?subGraph LIMIT ${limit}`;
122
122
  }
123
- /** Whether the namespace's VM holds the asset at `version` or later. */
124
- export function storageAckPromotedQuery(namespace, kaUal, version) {
125
- return `ASK { GRAPH <${contextGraphMetaUri(namespace)}> {
126
- <${kaUal}> <${DKG}status> "confirmed" ;
127
- <${DKG}assertionVersion> ?confirmedVersion .
128
- FILTER(?confirmedVersion >= ${version})
129
- } }`;
123
+ /** Check one already-bounded audit slice across its exact VM metadata graphs. */
124
+ export function storageAckPromotedBatchQuery(candidates) {
125
+ if (candidates.length === 0)
126
+ throw new Error('Promoted-copy batch must not be empty');
127
+ const values = candidates.map((candidate) => {
128
+ if (typeof candidate.assertionVersion !== 'bigint' || candidate.assertionVersion < 0n) {
129
+ throw new Error('Promoted-copy batch requires a non-negative assertion version');
130
+ }
131
+ return `(<${assertSafeIri(candidate.operationSubject)}> `
132
+ + `<${assertSafeIri(contextGraphMetaUri(candidate.namespace))}> `
133
+ + `<${assertSafeIri(candidate.kaUal)}> ${candidate.assertionVersion})`;
134
+ }).join('\n ');
135
+ // Keep the filter outside GRAPH: Oxigraph does not see the VALUES-bound
136
+ // minimum inside the graph pattern, even though it sees the graph's version.
137
+ return `SELECT DISTINCT ?op WHERE {
138
+ VALUES (?op ?graph ?ka ?minVersion) {
139
+ ${values}
140
+ }
141
+ GRAPH ?graph {
142
+ ?ka <${DKG}status> "confirmed" ;
143
+ <${DKG}assertionVersion> ?confirmedVersion .
144
+ }
145
+ FILTER(?confirmedVersion >= ?minVersion)
146
+ }`;
130
147
  }
131
148
  /** Ledger rows whose ACK copy no longer exists (retired or expired). */
132
149
  export function storageAckLedgerOrphansQuery(limit) {
@@ -155,7 +172,7 @@ export function parseStorageAckLedgerCandidate(row) {
155
172
  if (!operationSubject || !namespace || !kaUal || !versionLiteral || !Number.isFinite(signedAtMs)) {
156
173
  return null;
157
174
  }
158
- if (!isStorageAckNamespace(namespace) || !isSafeIri(kaUal))
175
+ if (!isSafeIri(operationSubject) || !isStorageAckNamespace(namespace) || !isSafeIri(kaUal))
159
176
  return null;
160
177
  let assertionVersion;
161
178
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"vm-promotion-audit.js","sourceRoot":"","sources":["../src/vm-promotion-audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vm-promotion-audit.js","sourceRoot":"","sources":["../src/vm-promotion-audit.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,15 @@
1
1
  /** Agent-owned admission and scheduling for chain-driven VM reconciliation. */
2
+ import { type LocalAdmissionWaitOptions } from './internal/vm-reconcile-local-admission-wait.js';
2
3
  import { type VmReconcileSource } from './vm-reconcile-service.js';
3
4
  export interface VmReconcileDispatcherOptions {
4
5
  concurrency?: number;
5
6
  maxPending?: number;
6
7
  maxForegroundBurst?: number;
7
8
  }
9
+ export interface VmReconcileSchedulingOptions extends VmReconcileDispatcherOptions {
10
+ discoveryBatchSize?: number;
11
+ periodicBoundBatchSize?: number;
12
+ }
8
13
  /**
9
14
  * Single admission and scheduling policy for chain-driven VM reconciliation.
10
15
  *
@@ -30,9 +35,17 @@ export declare class VmReconcileDispatcher<T> {
30
35
  private readonly concurrency;
31
36
  private readonly maxPending;
32
37
  private readonly maxForegroundBurst;
38
+ private timerBoundOutstanding;
39
+ private readonly timerBoundOutstandingLimit;
33
40
  constructor(run: (key: string, source: VmReconcileSource) => Promise<T>, onFailure: (key: string, error: unknown) => void, options?: VmReconcileDispatcherOptions);
34
41
  /** Enqueue a low-latency chain-event nudge; suppressed until a sweep after failure. */
35
42
  triggerLive(key: string): void;
43
+ /**
44
+ * A live nudge with its completion handle. Undefined in the two cases
45
+ * `triggerLive` drops without a trace: the nudge is held after a failed
46
+ * pass, or the bounded queue has no room for it.
47
+ */
48
+ protected tryDispatchLive(key: string): Promise<T> | undefined;
36
49
  /** A newly established binding is fresh evidence, so its first live nudge must not inherit an old discovery miss. */
37
50
  releaseLiveHold(key: string): void;
38
51
  /** Enqueue the reliability path; every periodic sweep gets one failure retry. */
@@ -49,6 +62,8 @@ export declare class VmReconcileDispatcher<T> {
49
62
  tryTriggerPeriodic(key: string): boolean;
50
63
  /** Periodic admission with its exact completion handle; undefined means no admission. */
51
64
  protected tryDispatchPeriodic(key: string): Promise<T> | undefined;
65
+ /** Count only newly admitted timer work; coalesced calls create no backlog. */
66
+ protected tryDispatchPeriodicBoundTimer(key: string): Promise<T> | undefined;
52
67
  protected waitForPeriodicStateChange(signal?: AbortSignal): Promise<void>;
53
68
  /** A sweep owns its capacity claim across notifications, retries, and cancellation. */
54
69
  protected retainPeriodicCapacity(signal: AbortSignal): () => void;
@@ -80,6 +95,7 @@ export declare class VmReconcileDispatcher<T> {
80
95
  private resolveKeyIdleWaiters;
81
96
  private drain;
82
97
  }
98
+ export type { LocalAdmissionWaitOptions };
83
99
  /**
84
100
  * Cohesive host-owned runtime for foreground nudges and periodic sweep work.
85
101
  *
@@ -91,8 +107,33 @@ export declare class VmReconcileSchedulingRuntime<T> {
91
107
  private readonly dispatcher;
92
108
  private readonly planner;
93
109
  private readonly sweepAdmission;
94
- constructor(run: (key: string, source: VmReconcileSource) => Promise<T>, onFailure: (key: string, error: unknown) => void, options?: VmReconcileDispatcherOptions, discoveryBatchSize?: number);
110
+ private readonly localAdmissionWait;
111
+ constructor(run: (key: string, source: VmReconcileSource) => Promise<T>, onFailure: (key: string, error: unknown) => void, options?: VmReconcileSchedulingOptions);
95
112
  triggerLive(key: string): void;
113
+ /**
114
+ * Local sync pressure earns a bounded retry, rather than peer backoff: the
115
+ * graph waits in arrival order and is nudged once the node's sync admission
116
+ * can take its fetch (see `internal/vm-reconcile-local-admission-wait.ts`).
117
+ * The nudge re-enters the ordinary bounded dispatcher, including
118
+ * foreground-burst and periodic fairness.
119
+ */
120
+ retryLocalAdmission(key: string, options: LocalAdmissionWaitOptions): void;
121
+ /**
122
+ * A graph that just used the node's sync admission and has more to fetch
123
+ * goes behind the graphs already waiting for it. Returns false, and parks
124
+ * nothing, when no other graph is waiting.
125
+ */
126
+ yieldLocalAdmissionTurn(key: string, options: LocalAdmissionWaitOptions): boolean;
127
+ /**
128
+ * A pass whose read-authority check got no answer did none of its work, so
129
+ * its end says nothing about the graph. The graph waits with those refused
130
+ * by sync admission and is asked again from there (see `defer` in
131
+ * `internal/vm-reconcile-local-admission-wait.ts`). The pass still ends as
132
+ * a failed one, so live nudges from elsewhere stay held; only the wait's own
133
+ * nudge lifts that hold. Undefined when the wait did not take the graph: the
134
+ * periodic sweep then retries it, as after any failed pass.
135
+ */
136
+ deferForReadAuthority(key: string, options: LocalAdmissionWaitOptions): 'parked' | 'again' | undefined;
96
137
  releaseLiveHold(key: string): void;
97
138
  triggerPeriodic(key: string): void;
98
139
  tryTriggerPeriodic(key: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"vm-reconcile-dispatcher.d.ts","sourceRoot":"","sources":["../src/vm-reconcile-dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vm-reconcile-dispatcher.d.ts","sourceRoot":"","sources":["../src/vm-reconcile-dispatcher.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  /** Agent-owned admission and scheduling for chain-driven VM reconciliation. */
2
+ import { VmReconcileLocalAdmissionWait, } from './internal/vm-reconcile-local-admission-wait.js';
2
3
  import { VmReconcileSweepPlanner } from './internal/vm-reconcile-sweep.js';
3
4
  import { VmReconcileQueueClosedError, VmReconcileQueueFullError, } from './vm-reconcile-service.js';
4
5
  function vmReconcileSourceRank(source) {
@@ -33,6 +34,8 @@ export class VmReconcileDispatcher {
33
34
  concurrency;
34
35
  maxPending;
35
36
  maxForegroundBurst;
37
+ timerBoundOutstanding = 0;
38
+ timerBoundOutstandingLimit;
36
39
  constructor(run, onFailure, options = {}) {
37
40
  this.run = run;
38
41
  this.onFailure = onFailure;
@@ -49,6 +52,7 @@ export class VmReconcileDispatcher {
49
52
  this.concurrency = concurrency;
50
53
  this.maxPending = maxPending;
51
54
  this.maxForegroundBurst = maxForegroundBurst;
55
+ this.timerBoundOutstandingLimit = 2 * concurrency;
52
56
  }
53
57
  /** Enqueue a low-latency chain-event nudge; suppressed until a sweep after failure. */
54
58
  triggerLive(key) {
@@ -56,6 +60,20 @@ export class VmReconcileDispatcher {
56
60
  return;
57
61
  void this.dispatch(key, 'live').catch(() => undefined);
58
62
  }
63
+ /**
64
+ * A live nudge with its completion handle. Undefined in the two cases
65
+ * `triggerLive` drops without a trace: the nudge is held after a failed
66
+ * pass, or the bounded queue has no room for it.
67
+ */
68
+ tryDispatchLive(key) {
69
+ if (this.states.get(key)?.hold === 'live-blocked')
70
+ return undefined;
71
+ const outcome = this.admit(key, 'live');
72
+ if (!('completion' in outcome))
73
+ return undefined;
74
+ void outcome.completion.catch(() => undefined);
75
+ return outcome.completion;
76
+ }
59
77
  /** A newly established binding is fresh evidence, so its first live nudge must not inherit an old discovery miss. */
60
78
  releaseLiveHold(key) {
61
79
  const state = this.states.get(key);
@@ -92,6 +110,24 @@ export class VmReconcileDispatcher {
92
110
  void outcome.completion.catch(() => undefined);
93
111
  return outcome.completion;
94
112
  }
113
+ /** Count only newly admitted timer work; coalesced calls create no backlog. */
114
+ tryDispatchPeriodicBoundTimer(key) {
115
+ if (this.timerBoundOutstanding >= this.timerBoundOutstandingLimit) {
116
+ const state = this.states.get(key);
117
+ // Pending/trailing work can coalesce without creating another task.
118
+ if (!state?.pending && !state?.trailing)
119
+ return undefined;
120
+ }
121
+ const outcome = this.admit(key, 'periodic');
122
+ if (!('completion' in outcome))
123
+ return undefined;
124
+ if (outcome.kind === 'admitted') {
125
+ this.timerBoundOutstanding += 1;
126
+ void outcome.completion.then(() => { this.timerBoundOutstanding -= 1; }, () => { this.timerBoundOutstanding -= 1; });
127
+ }
128
+ void outcome.completion.catch(() => undefined);
129
+ return outcome.completion;
130
+ }
95
131
  waitForPeriodicStateChange(signal) {
96
132
  return new Promise(resolve => {
97
133
  const finish = () => {
@@ -402,11 +438,16 @@ class VmReconcileRuntimeDispatcher extends VmReconcileDispatcher {
402
438
  super(run, onFailure, options);
403
439
  installSweepAdmission(Object.freeze({
404
440
  tryAdmit: (key) => this.tryDispatchPeriodic(key),
441
+ tryAdmitBoundTimer: (key) => this.tryDispatchPeriodicBoundTimer(key),
405
442
  waitForChange: (signal) => this.waitForPeriodicStateChange(signal),
406
443
  isClosed: () => this.closed,
407
444
  retainCapacity: (signal) => this.retainPeriodicCapacity(signal),
408
445
  }));
409
446
  }
447
+ /** The runtime's nudge for a graph that waited for sync admission. */
448
+ nudgeLive(key) {
449
+ return this.tryDispatchLive(key);
450
+ }
410
451
  }
411
452
  /**
412
453
  * Cohesive host-owned runtime for foreground nudges and periodic sweep work.
@@ -419,13 +460,66 @@ export class VmReconcileSchedulingRuntime {
419
460
  dispatcher;
420
461
  planner;
421
462
  sweepAdmission;
422
- constructor(run, onFailure, options = {}, discoveryBatchSize = 8) {
463
+ localAdmissionWait;
464
+ constructor(run, onFailure, options = {}) {
423
465
  let sweepAdmission;
424
- this.dispatcher = new VmReconcileRuntimeDispatcher(run, onFailure, options, (admission) => { sweepAdmission = admission; });
425
- this.planner = new VmReconcileSweepPlanner(discoveryBatchSize, sweepAdmission.retainCapacity);
466
+ this.dispatcher = new VmReconcileRuntimeDispatcher(async (key, source) => {
467
+ const pass = this.localAdmissionWait.passStarted(key);
468
+ try {
469
+ return await run(key, source);
470
+ }
471
+ finally {
472
+ this.localAdmissionWait.passEnded(pass);
473
+ }
474
+ }, onFailure, options, (admission) => { sweepAdmission = admission; });
475
+ this.localAdmissionWait = new VmReconcileLocalAdmissionWait({
476
+ nudge: (key, deferred) => {
477
+ // A deferred graph's last pass ended as a failed one and left the
478
+ // live hold. This nudge is that pass's retry, so it lifts the hold it
479
+ // is about to use; nudges from elsewhere stayed held meanwhile.
480
+ if (deferred)
481
+ this.dispatcher.releaseLiveHold(key);
482
+ return this.dispatcher.nudgeLive(key);
483
+ },
484
+ maxWaiters: options.maxPending ?? 256,
485
+ });
486
+ this.planner = new VmReconcileSweepPlanner({
487
+ discoveryBatchSize: options.discoveryBatchSize ?? 8,
488
+ periodicBoundBatchSize: options.periodicBoundBatchSize ?? 8,
489
+ }, sweepAdmission.retainCapacity);
426
490
  this.sweepAdmission = sweepAdmission;
427
491
  }
428
492
  triggerLive(key) { this.dispatcher.triggerLive(key); }
493
+ /**
494
+ * Local sync pressure earns a bounded retry, rather than peer backoff: the
495
+ * graph waits in arrival order and is nudged once the node's sync admission
496
+ * can take its fetch (see `internal/vm-reconcile-local-admission-wait.ts`).
497
+ * The nudge re-enters the ordinary bounded dispatcher, including
498
+ * foreground-burst and periodic fairness.
499
+ */
500
+ retryLocalAdmission(key, options) {
501
+ this.localAdmissionWait.retry(key, options);
502
+ }
503
+ /**
504
+ * A graph that just used the node's sync admission and has more to fetch
505
+ * goes behind the graphs already waiting for it. Returns false, and parks
506
+ * nothing, when no other graph is waiting.
507
+ */
508
+ yieldLocalAdmissionTurn(key, options) {
509
+ return this.localAdmissionWait.yieldTurn(key, options);
510
+ }
511
+ /**
512
+ * A pass whose read-authority check got no answer did none of its work, so
513
+ * its end says nothing about the graph. The graph waits with those refused
514
+ * by sync admission and is asked again from there (see `defer` in
515
+ * `internal/vm-reconcile-local-admission-wait.ts`). The pass still ends as
516
+ * a failed one, so live nudges from elsewhere stay held; only the wait's own
517
+ * nudge lifts that hold. Undefined when the wait did not take the graph: the
518
+ * periodic sweep then retries it, as after any failed pass.
519
+ */
520
+ deferForReadAuthority(key, options) {
521
+ return this.localAdmissionWait.defer(key, options);
522
+ }
429
523
  releaseLiveHold(key) { this.dispatcher.releaseLiveHold(key); }
430
524
  triggerPeriodic(key) { this.dispatcher.triggerPeriodic(key); }
431
525
  tryTriggerPeriodic(key) { return this.dispatcher.tryTriggerPeriodic(key); }
@@ -442,13 +536,18 @@ export class VmReconcileSchedulingRuntime {
442
536
  }
443
537
  waitForIdle(key) { return this.dispatcher.waitForIdle(key); }
444
538
  scheduleSweep(boundKeys, unboundKeys, isCurrent) {
445
- this.planner.admit(boundKeys, unboundKeys, key => isCurrent() ? this.sweepAdmission.tryAdmit(key) : undefined);
539
+ this.planner.admit(boundKeys, unboundKeys, {
540
+ tryAdmit: key => isCurrent() ? this.sweepAdmission.tryAdmit(key) : undefined,
541
+ tryAdmitBoundTimer: key => isCurrent()
542
+ ? this.sweepAdmission.tryAdmitBoundTimer(key) : undefined,
543
+ });
446
544
  }
447
545
  completeSweep(boundKeys, unboundKeys, isCurrent, signal) {
448
546
  return this.planner.complete(boundKeys, unboundKeys, this.sweepAdmission, isCurrent, signal);
449
547
  }
450
548
  resetSweep() { this.planner.reset(); }
451
549
  close() {
550
+ this.localAdmissionWait.close();
452
551
  this.planner.reset();
453
552
  return this.dispatcher.close();
454
553
  }