@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,623 @@
1
+ import { assertSafeIri, compareCodePoint, GRAPH_KA_CONTENT_SCOPE_VERSION, MemoryLayer, createGraphKnowledgeAssetScope, knowledgeAssetLayerGraphUri, validateSubGraphName } from '@origintrail-official/dkg-core';
2
+ import { StoreResponseTooLargeError } from '@origintrail-official/dkg-storage';
3
+ import { SYNC_RESPONDER_SNAPSHOT_BUILD_MAX_BYTES_ESTIMATE, SYNC_RESPONDER_SNAPSHOT_BUILD_MAX_ROWS } from './snapshot-cache.js';
4
+ import { SyncRowSnapshotBudgetError } from './snapshot-budget.js';
5
+ import { estimateStringRowHeapBytes } from '../memory-telemetry.js';
6
+ import { compareRows } from './row-serialization.js';
7
+ import { exactGraphCursorFilter, hasUnsupportedExactGraphCursorTerm } from './exact-graph-cursor-filter.js';
8
+ import { raceAgainstAbort, throwIfAborted } from './responder-row-page.js';
9
+ const DKG = 'http://dkg.io/ontology/';
10
+ const DKG_CONTENT_SCOPE_VERSION = `${DKG}contentScopeVersion`;
11
+ const DKG_KA_UAL = `${DKG}kaUal`;
12
+ const DKG_ASSERTION_VERSION = `${DKG}assertionVersion`;
13
+ const DKG_ASSERTION_GRAPH = `${DKG}assertionGraph`;
14
+ const DKG_CONTEXT_GRAPH = `${DKG}contextGraph`;
15
+ const DKG_PUBLIC_TRIPLE_COUNT = `${DKG}publicTripleCount`;
16
+ const DKG_PRIVATE_TRIPLE_COUNT = `${DKG}privateTripleCount`;
17
+ const DKG_STATUS = `${DKG}status`;
18
+ const DKG_SUB_GRAPH_NAME = `${DKG}subGraphName`;
19
+ const DETERMINISTIC_KA_UAL_SHAPE = /^did:dkg:[^/]+\/0x[0-9A-Fa-f]{40}\/[0-9]+$/;
20
+ function syncResponderStoreOptions(signal, source) {
21
+ return { signal, priority: 'background', source };
22
+ }
23
+ /**
24
+ * Read the constant-size V2 control rows that already form a per-KA manifest.
25
+ *
26
+ * The payload graph and its row count are authenticated again by the requester,
27
+ * but deriving the responder plan from these rows removes three store-wide or
28
+ * per-graph discovery operations from the normal rootless path: graph-family
29
+ * enumeration as authority, child-prefix probing after the reserved VM segment,
30
+ * and COUNT(*)/countQuads for every KA. The query is deliberately one exact
31
+ * metadata graph, standard SPARQL 1.1, unordered, row/response bounded, and
32
+ * backend-neutral.
33
+ */
34
+ export async function readGraphScopedVmManifest(store, contextGraphId, signal, assetUals) {
35
+ if (assetUals?.length === 0)
36
+ return {
37
+ confirmedEntries: [], confirmedGraphs: new Set(), knownGraphs: new Set(),
38
+ };
39
+ const selection = assetUals === undefined ? ''
40
+ : `VALUES ?ual { ${[...new Set(assetUals)].map(ual => `<${assertSafeIri(ual)}>`).join(' ')} }`;
41
+ const metaGraph = contextGraphMetaGraphUri(contextGraphId);
42
+ const contextGraph = contextGraphDataGraphUri(contextGraphId);
43
+ const maxRows = SYNC_RESPONDER_SNAPSHOT_BUILD_MAX_ROWS;
44
+ const readBoundedBindings = async (sparql, operation) => {
45
+ let result;
46
+ try {
47
+ result = await store.query(sparql, {
48
+ ...syncResponderStoreOptions(signal, operation),
49
+ maxResponseBytes: snapshotResponseByteLimit(SYNC_RESPONDER_SNAPSHOT_BUILD_MAX_BYTES_ESTIMATE),
50
+ });
51
+ }
52
+ catch (error) {
53
+ if (!(error instanceof StoreResponseTooLargeError))
54
+ throw error;
55
+ throw snapshotBudgetError({
56
+ key: `durable-v2-manifest:${contextGraphId}`,
57
+ reason: 'snapshot_bytes',
58
+ rows: 0,
59
+ bytesEstimate: storeResponseActualBytes(error),
60
+ limit: SYNC_RESPONDER_SNAPSHOT_BUILD_MAX_BYTES_ESTIMATE,
61
+ });
62
+ }
63
+ if (result.type !== 'bindings')
64
+ return [];
65
+ if (result.bindings.length > maxRows) {
66
+ throw snapshotBudgetError({
67
+ key: `durable-v2-manifest:${contextGraphId}`,
68
+ reason: 'snapshot_rows',
69
+ rows: result.bindings.length,
70
+ bytesEstimate: 0,
71
+ limit: maxRows,
72
+ });
73
+ }
74
+ return result.bindings;
75
+ };
76
+ // Read every scope marker independently of the complete descriptor join.
77
+ // Without this pass, a partially written V2 descriptor would be absent from
78
+ // the join below and its payload graph could incorrectly fall through the
79
+ // legacy compatibility lane.
80
+ const markerBindings = await readBoundedBindings(`
81
+ SELECT ?ual ?scopeVersion WHERE {
82
+ ${selection}
83
+ GRAPH <${assertSafeIri(metaGraph)}> {
84
+ ?ual <${DKG_CONTENT_SCOPE_VERSION}> ?scopeVersion .
85
+ }
86
+ }
87
+ LIMIT ${maxRows + 1}
88
+ `, 'sync.responder.readGraphScopedVmManifestMarkers');
89
+ const scopeVersionsByUal = new Map();
90
+ for (const row of markerBindings) {
91
+ const ual = row['ual'];
92
+ const rawVersion = row['scopeVersion'];
93
+ if (!ual || !rawVersion)
94
+ continue;
95
+ const versions = scopeVersionsByUal.get(ual) ?? new Set();
96
+ versions.add(stripLiteral(rawVersion));
97
+ scopeVersionsByUal.set(ual, versions);
98
+ }
99
+ const currentV2Uals = new Set();
100
+ for (const [ual, versions] of scopeVersionsByUal) {
101
+ // Lifecycle, assertion-graph and SWM-operation rows deliberately repeat
102
+ // contentScopeVersion. Only deterministic UAL subjects are V2 descriptor
103
+ // candidates; a UAL-shaped partial descriptor still fails closed below.
104
+ if (!DETERMINISTIC_KA_UAL_SHAPE.test(ual))
105
+ continue;
106
+ if (versions.size !== 1) {
107
+ throw new Error(`Rootless sync manifest ${ual} has ambiguous scopeVersion`);
108
+ }
109
+ const decoded = [...versions][0];
110
+ if (!/^-?\d+$/.test(decoded)) {
111
+ throw new Error(`Rootless sync manifest ${ual} has invalid scopeVersion: ${decoded}`);
112
+ }
113
+ const version = BigInt(decoded);
114
+ if (version < 0n || version.toString() !== decoded) {
115
+ throw new Error(`Rootless sync manifest ${ual} has non-canonical scopeVersion: ${decoded}`);
116
+ }
117
+ if (version === 0n || version === 1n)
118
+ continue;
119
+ if (version !== BigInt(GRAPH_KA_CONTENT_SCOPE_VERSION)) {
120
+ throw new Error(`Rootless sync manifest ${ual} has unsupported contentScopeVersion ${decoded}`);
121
+ }
122
+ currentV2Uals.add(ual);
123
+ }
124
+ const bindings = await readBoundedBindings(`
125
+ SELECT ?ual ?scopeVersion ?kaUal ?assertionVersion ?assertionGraph
126
+ ?contextGraph ?publicTripleCount ?privateTripleCount ?status ?subGraphName
127
+ WHERE {
128
+ ${selection}
129
+ GRAPH <${assertSafeIri(metaGraph)}> {
130
+ ?ual <${DKG_CONTENT_SCOPE_VERSION}> ?scopeVersion ;
131
+ <${DKG_KA_UAL}> ?kaUal ;
132
+ <${DKG_ASSERTION_VERSION}> ?assertionVersion ;
133
+ <${DKG_ASSERTION_GRAPH}> ?assertionGraph ;
134
+ <${DKG_CONTEXT_GRAPH}> ?contextGraph ;
135
+ <${DKG_PUBLIC_TRIPLE_COUNT}> ?publicTripleCount ;
136
+ <${DKG_PRIVATE_TRIPLE_COUNT}> ?privateTripleCount ;
137
+ <${DKG_STATUS}> ?status .
138
+ OPTIONAL { ?ual <${DKG_SUB_GRAPH_NAME}> ?subGraphName }
139
+ }
140
+ }
141
+ LIMIT ${maxRows + 1}
142
+ `, 'sync.responder.readGraphScopedVmManifest');
143
+ const fields = [
144
+ 'scopeVersion',
145
+ 'kaUal',
146
+ 'assertionVersion',
147
+ 'assertionGraph',
148
+ 'contextGraph',
149
+ 'publicTripleCount',
150
+ 'privateTripleCount',
151
+ 'status',
152
+ 'subGraphName',
153
+ ];
154
+ const byUal = new Map();
155
+ for (const row of bindings) {
156
+ const ual = row['ual'];
157
+ if (!ual)
158
+ continue;
159
+ const values = byUal.get(ual) ?? new Map();
160
+ for (const field of fields) {
161
+ const value = row[field];
162
+ if (!value)
163
+ continue;
164
+ const set = values.get(field) ?? new Set();
165
+ set.add(value);
166
+ values.set(field, set);
167
+ }
168
+ byUal.set(ual, values);
169
+ }
170
+ for (const ual of currentV2Uals) {
171
+ if (!byUal.has(ual)) {
172
+ throw new Error(`Rootless sync manifest ${ual} has an incomplete V2 descriptor`);
173
+ }
174
+ }
175
+ const confirmedEntries = [];
176
+ const knownGraphs = new Set();
177
+ const graphOwners = new Map();
178
+ for (const [ual, values] of byUal) {
179
+ if (!currentV2Uals.has(ual))
180
+ continue;
181
+ const requireSingle = (field) => {
182
+ const candidates = [...(values.get(field) ?? [])];
183
+ if (candidates.length !== 1) {
184
+ throw new Error(`Rootless sync manifest ${ual} has ${candidates.length === 0 ? 'missing' : 'ambiguous'} ${field}`);
185
+ }
186
+ return candidates[0];
187
+ };
188
+ const optionalSingle = (field) => {
189
+ const candidates = [...(values.get(field) ?? [])];
190
+ if (candidates.length > 1) {
191
+ throw new Error(`Rootless sync manifest ${ual} has ambiguous ${field}`);
192
+ }
193
+ return candidates[0];
194
+ };
195
+ const parseCanonicalInteger = (field, minimum) => {
196
+ const decoded = stripLiteral(requireSingle(field));
197
+ if (!/^-?\d+$/.test(decoded)) {
198
+ throw new Error(`Rootless sync manifest ${ual} has invalid ${field}: ${decoded}`);
199
+ }
200
+ const value = BigInt(decoded);
201
+ if (value < minimum || value.toString() !== decoded) {
202
+ throw new Error(`Rootless sync manifest ${ual} has non-canonical ${field}: ${decoded}`);
203
+ }
204
+ return value;
205
+ };
206
+ const scopeVersion = parseCanonicalInteger('scopeVersion', 0n);
207
+ if (scopeVersion !== BigInt(GRAPH_KA_CONTENT_SCOPE_VERSION)) {
208
+ throw new Error(`Rootless sync manifest ${ual} changed scopeVersion during projection`);
209
+ }
210
+ const metadataUal = requireSingle('kaUal');
211
+ if (metadataUal !== ual) {
212
+ throw new Error(`Rootless sync manifest UAL mismatch: subject ${ual}, kaUal ${metadataUal}`);
213
+ }
214
+ const assertionVersion = parseCanonicalInteger('assertionVersion', 1n);
215
+ const scope = createGraphKnowledgeAssetScope(ual, assertionVersion);
216
+ if (scope.ual !== ual) {
217
+ throw new Error(`Rootless sync manifest contains non-canonical UAL ${ual}`);
218
+ }
219
+ if (requireSingle('contextGraph') !== contextGraph) {
220
+ throw new Error(`Rootless sync manifest ${ual} points outside context graph ${contextGraphId}`);
221
+ }
222
+ const rawSubGraphName = optionalSingle('subGraphName');
223
+ const subGraphName = rawSubGraphName === undefined
224
+ ? undefined
225
+ : stripLiteral(rawSubGraphName);
226
+ if (subGraphName !== undefined && !validateSubGraphName(subGraphName).valid) {
227
+ throw new Error(`Rootless sync manifest ${ual} has invalid subGraphName ${subGraphName}`);
228
+ }
229
+ const expectedGraph = knowledgeAssetLayerGraphUri(contextGraphId, MemoryLayer.VerifiableMemory, scope, subGraphName);
230
+ const assertionGraph = requireSingle('assertionGraph');
231
+ if (assertionGraph !== expectedGraph) {
232
+ throw new Error(`Rootless sync manifest ${ual} assertionGraph mismatch: expected ${expectedGraph}, found ${assertionGraph}`);
233
+ }
234
+ const publicCount = parseCanonicalInteger('publicTripleCount', 0n);
235
+ const privateCount = parseCanonicalInteger('privateTripleCount', 0n);
236
+ if (publicCount > BigInt(Number.MAX_SAFE_INTEGER) || privateCount > BigInt(Number.MAX_SAFE_INTEGER)) {
237
+ throw new Error(`Rootless sync manifest ${ual} has an unsafe triple count`);
238
+ }
239
+ if (publicCount === 0n && privateCount === 0n) {
240
+ throw new Error(`Rootless sync manifest ${ual} describes an empty asset`);
241
+ }
242
+ const owner = graphOwners.get(assertionGraph);
243
+ if (owner && owner !== ual) {
244
+ throw new Error(`Rootless sync graph ${assertionGraph} has multiple UAL owners`);
245
+ }
246
+ graphOwners.set(assertionGraph, ual);
247
+ knownGraphs.add(assertionGraph);
248
+ const statuses = new Set([...(values.get('status') ?? [])].map((status) => stripLiteral(status)));
249
+ if (statuses.size !== 1) {
250
+ throw new Error(`Rootless sync manifest ${ual} has ambiguous status metadata`);
251
+ }
252
+ if (!statuses.has('confirmed'))
253
+ continue;
254
+ confirmedEntries.push({
255
+ ual,
256
+ graph: assertionGraph,
257
+ rowCount: Number(publicCount),
258
+ });
259
+ }
260
+ confirmedEntries.sort((a, b) => compareCodePoint(a.graph, b.graph));
261
+ return {
262
+ confirmedEntries,
263
+ confirmedGraphs: new Set(confirmedEntries.map((entry) => entry.graph)),
264
+ knownGraphs,
265
+ };
266
+ }
267
+ export async function buildExactGraphPagePlan(store, graphs, isAdmitted, signal, knownRowCounts, exactGraphReadMode = 'snapshot-or-page') {
268
+ const entries = [];
269
+ for (const graph of dedupeStrings(graphs).sort(compareCodePoint)) {
270
+ throwIfAborted(signal);
271
+ if (!(await isAdmitted(graph)))
272
+ continue;
273
+ const rowCount = knownRowCounts?.get(graph) ?? await store.countQuads(graph, syncResponderStoreOptions(signal, 'sync.responder.countExactGraphRows'));
274
+ if (rowCount > 0)
275
+ entries.push({ graph, rowCount });
276
+ }
277
+ return {
278
+ entries,
279
+ totalRows: entries.reduce((sum, entry) => sum + entry.rowCount, 0),
280
+ pagedGraphs: new Set(exactGraphReadMode === 'page-only'
281
+ ? entries.map((entry) => entry.graph)
282
+ : []),
283
+ cursors: new Map([[0, null]]),
284
+ };
285
+ }
286
+ const EXACT_GRAPH_CURSOR_CACHE_MAX_ENTRIES = 512;
287
+ export const EXACT_GRAPH_CURSOR_CACHE_MAX_BYTES_ESTIMATE = 256 * 1024;
288
+ export const EXACT_GRAPH_PLAN_MAX_BYTES_ESTIMATE = 1024 * 1024;
289
+ export function exactGraphPlanScalarBytes(plan) {
290
+ return 256 + plan.entries.reduce((bytes, entry) => bytes + 128 + entry.graph.length * 4, 0);
291
+ }
292
+ function exactGraphCursorBytes(cursor) {
293
+ return cursor ? 128 + (cursor.graph.length + cursor.s.length + cursor.p.length + cursor.o.length) * 2 : 32;
294
+ }
295
+ function rememberExactGraphPageCursor(plan, offset, cursor) {
296
+ const existing = plan.cursors.get(offset);
297
+ if (existing && (existing.graph !== cursor.graph
298
+ || existing.graphOffset !== cursor.graphOffset
299
+ || existing.s !== cursor.s
300
+ || existing.p !== cursor.p
301
+ || existing.o !== cursor.o)) {
302
+ // A boundary changing within one memoized session means the source no
303
+ // longer describes the committed plan. Do not silently choose one cursor.
304
+ throw new Error(`Sync exact-graph cursor changed at offset ${offset}`);
305
+ }
306
+ plan.cursorBytesEstimate = (plan.cursorBytesEstimate ??
307
+ [...plan.cursors.values()].reduce((bytes, value) => bytes + exactGraphCursorBytes(value), 0))
308
+ - (existing ? exactGraphCursorBytes(existing) : 0);
309
+ plan.cursors.delete(offset);
310
+ const cursorBytes = exactGraphCursorBytes(cursor);
311
+ // A single very large boundary stays on the compatible OFFSET path.
312
+ if (cursorBytes > EXACT_GRAPH_CURSOR_CACHE_MAX_BYTES_ESTIMATE)
313
+ return;
314
+ plan.cursors.set(offset, cursor);
315
+ plan.cursorBytesEstimate += cursorBytes;
316
+ while (plan.cursors.size > EXACT_GRAPH_CURSOR_CACHE_MAX_ENTRIES ||
317
+ plan.cursorBytesEstimate > EXACT_GRAPH_CURSOR_CACHE_MAX_BYTES_ESTIMATE) {
318
+ let evict = plan.cursors.keys().next().value;
319
+ // Offset zero is the session origin and is never evicted.
320
+ if (evict === 0) {
321
+ const next = plan.cursors.keys();
322
+ next.next();
323
+ evict = next.next().value;
324
+ }
325
+ plan.cursorBytesEstimate -= exactGraphCursorBytes(plan.cursors.get(evict) ?? null);
326
+ plan.cursors.delete(evict);
327
+ }
328
+ }
329
+ export function snapshotResponseByteLimit(maxBytesEstimate) {
330
+ // SPARQL JSON adds field names and escaping around each RDF term. Bound the
331
+ // transport body independently while leaving enough headroom for that wire
332
+ // overhead. HTTP adapters enforce this before parsing; embedded adapters are
333
+ // still bounded by the row LIMIT below.
334
+ return Math.max(1, Math.min(Number.MAX_SAFE_INTEGER, Math.floor(maxBytesEstimate) * 2));
335
+ }
336
+ /** Clamp a store response-cap overshoot (possibly bigint) into a safe number. */
337
+ export function storeResponseActualBytes(error) {
338
+ return typeof error.actualBytes === 'bigint'
339
+ ? Number(error.actualBytes > BigInt(Number.MAX_SAFE_INTEGER)
340
+ ? BigInt(Number.MAX_SAFE_INTEGER)
341
+ : error.actualBytes)
342
+ : error.actualBytes;
343
+ }
344
+ export function snapshotBudgetError(params) {
345
+ return new SyncRowSnapshotBudgetError(params);
346
+ }
347
+ async function loadExactGraphRowsSnapshot(store, plan, entry, limits, signal) {
348
+ if (entry.rowCount > limits.maxRows || plan.pagedGraphs.has(entry.graph))
349
+ return null;
350
+ if (plan.activeGraphRows?.graph === entry.graph)
351
+ return plan.activeGraphRows.rows;
352
+ if (plan.activeGraphRowsLoad?.graph === entry.graph) {
353
+ return raceAgainstAbort(plan.activeGraphRowsLoad.promise, signal);
354
+ }
355
+ const load = (async () => {
356
+ try {
357
+ const result = await store.query(`
358
+ SELECT ?s ?p ?o WHERE {
359
+ GRAPH <${assertSafeIri(entry.graph)}> { ?s ?p ?o }
360
+ }
361
+ LIMIT ${limits.maxRows + 1}
362
+ `, {
363
+ ...syncResponderStoreOptions(undefined, 'sync.responder.readExactGraphSnapshot'),
364
+ maxResponseBytes: snapshotResponseByteLimit(limits.maxBytesEstimate),
365
+ });
366
+ if (result.type !== 'bindings')
367
+ return [];
368
+ const rows = [];
369
+ let bytesEstimate = 0;
370
+ for (const row of result.bindings) {
371
+ const s = row['s'];
372
+ const p = row['p'];
373
+ const o = row['o'];
374
+ if (!s || !p || !o)
375
+ continue;
376
+ const nextBytes = bytesEstimate + estimateStringRowHeapBytes(s, p, o, entry.graph);
377
+ if (rows.length + 1 > limits.maxRows || nextBytes > limits.maxBytesEstimate) {
378
+ plan.pagedGraphs.add(entry.graph);
379
+ return null;
380
+ }
381
+ rows.push({ s, p, o, g: entry.graph });
382
+ bytesEstimate = nextBytes;
383
+ }
384
+ // The plan count and payload must describe one immutable graph snapshot.
385
+ // A mismatch means the graph changed between COUNT and SELECT; fail the
386
+ // session rather than silently skipping or duplicating rows.
387
+ if (rows.length !== entry.rowCount) {
388
+ throw new Error(`Sync exact-graph plan changed while reading ${entry.graph}: ` +
389
+ `expected ${entry.rowCount} rows, found ${rows.length}`);
390
+ }
391
+ rows.sort(compareRows);
392
+ plan.activeGraphRows = { graph: entry.graph, rows };
393
+ return rows;
394
+ }
395
+ catch (error) {
396
+ if (error instanceof StoreResponseTooLargeError) {
397
+ plan.pagedGraphs.add(entry.graph);
398
+ return null;
399
+ }
400
+ throw error;
401
+ }
402
+ })().finally(() => {
403
+ if (plan.activeGraphRowsLoad?.promise === load)
404
+ plan.activeGraphRowsLoad = undefined;
405
+ });
406
+ plan.activeGraphRowsLoad = { graph: entry.graph, promise: load };
407
+ return raceAgainstAbort(load, signal);
408
+ }
409
+ export async function readExactGraphPlanSnapshot(store, plan, cache, limits) {
410
+ if (plan.totalRows > limits.maxRows) {
411
+ throw snapshotBudgetError({
412
+ key: cache.key,
413
+ reason: 'snapshot_rows',
414
+ rows: plan.totalRows,
415
+ bytesEstimate: 0,
416
+ limit: limits.maxRows,
417
+ });
418
+ }
419
+ const rows = [];
420
+ let bytesEstimate = 0;
421
+ for (const entry of plan.entries) {
422
+ const graphRows = await loadExactGraphRowsSnapshot(store, plan, entry, limits);
423
+ if (!graphRows) {
424
+ throw snapshotBudgetError({
425
+ key: cache.key,
426
+ reason: 'snapshot_bytes',
427
+ rows: rows.length,
428
+ bytesEstimate: limits.maxBytesEstimate + 1,
429
+ limit: limits.maxBytesEstimate,
430
+ });
431
+ }
432
+ for (const row of graphRows) {
433
+ const nextBytes = bytesEstimate + estimateStringRowHeapBytes(row.s, row.p, row.o, row.g);
434
+ if (nextBytes > limits.maxBytesEstimate) {
435
+ throw snapshotBudgetError({
436
+ key: cache.key,
437
+ reason: 'snapshot_bytes',
438
+ rows: rows.length + 1,
439
+ bytesEstimate: nextBytes,
440
+ limit: limits.maxBytesEstimate,
441
+ });
442
+ }
443
+ rows.push(row);
444
+ bytesEstimate = nextBytes;
445
+ }
446
+ }
447
+ return rows.sort(compareRows);
448
+ }
449
+ export function rememberExactGraphReturnedPrefix(plan, offset, rows) {
450
+ const lastRow = rows[rows.length - 1];
451
+ if (!lastRow)
452
+ return;
453
+ let graphStart = 0;
454
+ for (const entry of plan.entries) {
455
+ if (entry.graph === lastRow.g) {
456
+ rememberExactGraphPageCursor(plan, offset + rows.length, {
457
+ graph: lastRow.g, graphOffset: offset + rows.length - graphStart,
458
+ s: lastRow.s, p: lastRow.p, o: lastRow.o,
459
+ });
460
+ return;
461
+ }
462
+ graphStart += entry.rowCount;
463
+ }
464
+ }
465
+ export async function readRowsPageFromExactGraphPlan(store, plan, offset, limit, snapshotLimits, signal) {
466
+ const safeOffset = Math.max(0, Math.floor(offset));
467
+ let skip = safeOffset;
468
+ let remaining = Math.max(0, Math.floor(limit));
469
+ if (remaining === 0 || skip >= plan.totalRows)
470
+ return [];
471
+ const rows = [];
472
+ const cursor = plan.cursors.get(safeOffset);
473
+ const useSeek = cursor !== undefined
474
+ && cursor !== null
475
+ && !hasUnsupportedExactGraphCursorTerm(cursor);
476
+ let cursorActive = useSeek;
477
+ let lastGraphOffset = 0;
478
+ let lastRow;
479
+ for (const entry of plan.entries) {
480
+ let entryOffset;
481
+ let seekFilter;
482
+ if (cursorActive && cursor) {
483
+ const graphOrder = compareCodePoint(entry.graph, cursor.graph);
484
+ if (graphOrder < 0)
485
+ continue;
486
+ if (graphOrder === 0) {
487
+ entryOffset = cursor.graphOffset;
488
+ if (entryOffset > entry.rowCount) {
489
+ throw new Error(`Sync exact-graph cursor is past the committed row count for ${entry.graph}`);
490
+ }
491
+ seekFilter = exactGraphCursorFilter(cursor);
492
+ }
493
+ else {
494
+ // Once the cursor's graph is exhausted, every later graph starts at
495
+ // row zero and can be read with a plain LIMIT. There is no OFFSET to
496
+ // make the store revisit the already-consumed prefix.
497
+ entryOffset = 0;
498
+ }
499
+ }
500
+ else {
501
+ if (skip >= entry.rowCount) {
502
+ skip -= entry.rowCount;
503
+ continue;
504
+ }
505
+ entryOffset = skip;
506
+ }
507
+ const expectedRows = Math.min(entry.rowCount - entryOffset, remaining);
508
+ if (expectedRows <= 0) {
509
+ cursorActive = false;
510
+ // The cursor already consumed this graph. Subsequent graphs start at
511
+ // their own zero offset rather than reusing the request's global offset.
512
+ skip = 0;
513
+ continue;
514
+ }
515
+ let added = 0;
516
+ const graphRows = await loadExactGraphRowsSnapshot(store, plan, entry, snapshotLimits, signal);
517
+ if (graphRows) {
518
+ const page = graphRows.slice(entryOffset, entryOffset + expectedRows);
519
+ rows.push(...page);
520
+ added = page.length;
521
+ }
522
+ else {
523
+ const isFinalGraphPage = entryOffset + expectedRows === entry.rowCount;
524
+ const seekEntry = cursorActive && cursor !== undefined && cursor !== null;
525
+ const offsetClause = seekFilter || seekEntry ? '' : `\n OFFSET ${entryOffset}`;
526
+ // Keep the no-cursor query compact and compatible with adapters and
527
+ // instrumentation that recognize the established one-line graph
528
+ // pattern. Cursor pages need the expanded form for their FILTER.
529
+ const graphPattern = seekFilter
530
+ ? `GRAPH <${assertSafeIri(entry.graph)}> {
531
+ ?s ?p ?o
532
+ FILTER(${seekFilter})
533
+ }`
534
+ : `GRAPH <${assertSafeIri(entry.graph)}> { ?s ?p ?o }`;
535
+ const result = await store.query(`
536
+ SELECT ?s ?p ?o WHERE {
537
+ ${graphPattern}
538
+ }
539
+ ORDER BY ?s ?p ?o
540
+ ${offsetClause}
541
+ LIMIT ${expectedRows + (isFinalGraphPage ? 1 : 0)}
542
+ `, {
543
+ ...syncResponderStoreOptions(signal, 'sync.responder.readExactGraphRowsPage'),
544
+ maxResponseBytes: snapshotLimits.maxPageResponseBytes ??
545
+ snapshotResponseByteLimit(snapshotLimits.maxBytesEstimate),
546
+ });
547
+ if (result.type === 'bindings') {
548
+ for (const row of result.bindings) {
549
+ const s = row['s'];
550
+ const p = row['p'];
551
+ const o = row['o'];
552
+ if (s && p && o) {
553
+ rows.push({ s, p, o, g: entry.graph });
554
+ added += 1;
555
+ }
556
+ }
557
+ }
558
+ if (isFinalGraphPage && added > expectedRows) {
559
+ throw new Error(`Sync exact-graph plan changed while paging ${entry.graph}: `
560
+ + `expected ${entry.rowCount} total rows but found a surplus row`);
561
+ }
562
+ }
563
+ // Exact-asset metadata is a commitment to the number of rows in each
564
+ // assertion graph. Do not let a short graph borrow rows from the next
565
+ // graph in the plan: that produces a full-looking response whose graph
566
+ // boundaries no longer match the manifest and hides the damaged source.
567
+ if (added !== expectedRows) {
568
+ throw new Error(`Sync exact-graph plan changed while paging ${entry.graph}: ` +
569
+ `expected ${expectedRows} rows at offset ${entryOffset}, found ${added}`);
570
+ }
571
+ if (added > 0) {
572
+ lastRow = rows[rows.length - 1];
573
+ lastGraphOffset = entryOffset + added;
574
+ }
575
+ remaining -= added;
576
+ if (remaining <= 0)
577
+ break;
578
+ skip = 0;
579
+ // The cursor has served its graph. Later entries are read from their
580
+ // beginning, still without OFFSET.
581
+ cursorActive = false;
582
+ }
583
+ const expectedTotal = Math.min(safeOffset + Math.max(0, Math.floor(limit)), plan.totalRows)
584
+ - safeOffset;
585
+ if (rows.length !== expectedTotal) {
586
+ throw new Error(`Sync exact-graph plan changed at offset ${safeOffset}: `
587
+ + `expected ${expectedTotal} rows, found ${rows.length}`);
588
+ }
589
+ if (lastRow) {
590
+ rememberExactGraphPageCursor(plan, safeOffset + rows.length, {
591
+ graph: lastRow.g,
592
+ graphOffset: lastGraphOffset,
593
+ s: lastRow.s,
594
+ p: lastRow.p,
595
+ o: lastRow.o,
596
+ });
597
+ }
598
+ return rows;
599
+ }
600
+ function dedupeStrings(values) {
601
+ const seen = new Set();
602
+ const out = [];
603
+ for (const value of values) {
604
+ if (seen.has(value))
605
+ continue;
606
+ seen.add(value);
607
+ out.push(value);
608
+ }
609
+ return out;
610
+ }
611
+ function contextGraphDataGraphUri(contextGraphId) {
612
+ return `did:dkg:context-graph:${contextGraphId}`;
613
+ }
614
+ function contextGraphMetaGraphUri(contextGraphId) {
615
+ return `${contextGraphDataGraphUri(contextGraphId)}/_meta`;
616
+ }
617
+ function stripLiteral(value) {
618
+ if (!value)
619
+ return '';
620
+ const match = value.match(/^"((?:[^"\\]|\\.)*)"(?:@[\w-]+|\^\^<[^>]+>)?$/);
621
+ return match ? match[1].replace(/\\"/g, '"').replace(/\\\\/g, '\\') : value;
622
+ }
623
+ //# sourceMappingURL=exact-graph-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exact-graph-reader.js","sourceRoot":"","sources":["../../../src/sync/responder/exact-graph-reader.ts"],"names":[],"mappings":"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"}