@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.
- package/dist/approved-private-replica.d.ts +54 -0
- package/dist/approved-private-replica.d.ts.map +1 -0
- package/dist/approved-private-replica.js +148 -0
- package/dist/approved-private-replica.js.map +1 -0
- package/dist/bounded-operation.d.ts +2 -0
- package/dist/bounded-operation.d.ts.map +1 -1
- package/dist/bounded-operation.js +5 -0
- package/dist/bounded-operation.js.map +1 -1
- package/dist/chain-finality-confirmations-v1.d.ts +7 -0
- package/dist/chain-finality-confirmations-v1.d.ts.map +1 -0
- package/dist/chain-finality-confirmations-v1.js +9 -0
- package/dist/chain-finality-confirmations-v1.js.map +1 -0
- package/dist/chain-reconciler.d.ts +23 -0
- package/dist/chain-reconciler.d.ts.map +1 -1
- package/dist/chain-reconciler.js +35 -0
- package/dist/chain-reconciler.js.map +1 -1
- package/dist/context-graph-member-proof.d.ts +13 -0
- package/dist/context-graph-member-proof.d.ts.map +1 -1
- package/dist/context-graph-member-proof.js +36 -0
- package/dist/context-graph-member-proof.js.map +1 -1
- package/dist/context-graph-membership-persist-scheduler.d.ts +7 -23
- package/dist/context-graph-membership-persist-scheduler.d.ts.map +1 -1
- package/dist/context-graph-membership-persist-scheduler.js +12 -88
- package/dist/context-graph-membership-persist-scheduler.js.map +1 -1
- package/dist/context-graph-meta-projection.d.ts +13 -2
- package/dist/context-graph-meta-projection.d.ts.map +1 -1
- package/dist/context-graph-meta-projection.js +61 -24
- package/dist/context-graph-meta-projection.js.map +1 -1
- package/dist/context-graph-private-meta-proof.d.ts +5 -0
- package/dist/context-graph-private-meta-proof.d.ts.map +1 -1
- package/dist/context-graph-private-meta-proof.js +23 -0
- package/dist/context-graph-private-meta-proof.js.map +1 -1
- package/dist/context-graph-read-authority.d.ts +13 -0
- package/dist/context-graph-read-authority.d.ts.map +1 -1
- package/dist/context-graph-read-authority.js +23 -3
- package/dist/context-graph-read-authority.js.map +1 -1
- package/dist/context-graph-storage-discovery.d.ts +11 -2
- package/dist/context-graph-storage-discovery.d.ts.map +1 -1
- package/dist/context-graph-storage-discovery.js +11 -2
- package/dist/context-graph-storage-discovery.js.map +1 -1
- package/dist/context-graph-subscription-persist-scheduler.d.ts +52 -0
- package/dist/context-graph-subscription-persist-scheduler.d.ts.map +1 -0
- package/dist/context-graph-subscription-persist-scheduler.js +78 -0
- package/dist/context-graph-subscription-persist-scheduler.js.map +1 -0
- package/dist/curator-dial-address.d.ts +16 -0
- package/dist/curator-dial-address.d.ts.map +1 -0
- package/dist/curator-dial-address.js +58 -0
- package/dist/curator-dial-address.js.map +1 -0
- package/dist/curator-meta-refresh.d.ts +2 -0
- package/dist/curator-meta-refresh.d.ts.map +1 -1
- package/dist/curator-meta-refresh.js +2 -44
- package/dist/curator-meta-refresh.js.map +1 -1
- package/dist/curator-peer-connection.d.ts +21 -0
- package/dist/curator-peer-connection.d.ts.map +1 -0
- package/dist/curator-peer-connection.js +41 -0
- package/dist/curator-peer-connection.js.map +1 -0
- package/dist/dkg-agent-base.d.ts +94 -22
- package/dist/dkg-agent-base.d.ts.map +1 -1
- package/dist/dkg-agent-base.js +97 -144
- package/dist/dkg-agent-base.js.map +1 -1
- package/dist/dkg-agent-cg-registry.d.ts +10 -0
- package/dist/dkg-agent-cg-registry.d.ts.map +1 -1
- package/dist/dkg-agent-cg-registry.js +176 -115
- package/dist/dkg-agent-cg-registry.js.map +1 -1
- package/dist/dkg-agent-cg-resolve.d.ts +6 -4
- package/dist/dkg-agent-cg-resolve.d.ts.map +1 -1
- package/dist/dkg-agent-cg-resolve.js +22 -16
- package/dist/dkg-agent-cg-resolve.js.map +1 -1
- package/dist/dkg-agent-constants.d.ts +4 -2
- package/dist/dkg-agent-constants.d.ts.map +1 -1
- package/dist/dkg-agent-constants.js +4 -2
- package/dist/dkg-agent-constants.js.map +1 -1
- package/dist/dkg-agent-crypto.d.ts +101 -21
- package/dist/dkg-agent-crypto.d.ts.map +1 -1
- package/dist/dkg-agent-crypto.js +670 -152
- package/dist/dkg-agent-crypto.js.map +1 -1
- package/dist/dkg-agent-helpers.d.ts +2 -2
- package/dist/dkg-agent-helpers.d.ts.map +1 -1
- package/dist/dkg-agent-helpers.js +3 -3
- package/dist/dkg-agent-helpers.js.map +1 -1
- package/dist/dkg-agent-join.d.ts +12 -1
- package/dist/dkg-agent-join.d.ts.map +1 -1
- package/dist/dkg-agent-join.js +80 -92
- package/dist/dkg-agent-join.js.map +1 -1
- package/dist/dkg-agent-lifecycle.d.ts +58 -15
- package/dist/dkg-agent-lifecycle.d.ts.map +1 -1
- package/dist/dkg-agent-lifecycle.js +295 -114
- package/dist/dkg-agent-lifecycle.js.map +1 -1
- package/dist/dkg-agent-publish.d.ts +33 -40
- package/dist/dkg-agent-publish.d.ts.map +1 -1
- package/dist/dkg-agent-publish.js +190 -256
- package/dist/dkg-agent-publish.js.map +1 -1
- package/dist/dkg-agent-query.d.ts +7 -0
- package/dist/dkg-agent-query.d.ts.map +1 -1
- package/dist/dkg-agent-query.js +75 -63
- package/dist/dkg-agent-query.js.map +1 -1
- package/dist/dkg-agent-registered-private-empty-vm.d.ts +70 -0
- package/dist/dkg-agent-registered-private-empty-vm.d.ts.map +1 -0
- package/dist/dkg-agent-registered-private-empty-vm.js +133 -0
- package/dist/dkg-agent-registered-private-empty-vm.js.map +1 -0
- package/dist/dkg-agent-rfc64-catalog-auto-publish.d.ts +8 -3
- package/dist/dkg-agent-rfc64-catalog-auto-publish.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-catalog-auto-publish.js +45 -51
- package/dist/dkg-agent-rfc64-catalog-auto-publish.js.map +1 -1
- package/dist/dkg-agent-rfc64-catalog.d.ts +63 -87
- package/dist/dkg-agent-rfc64-catalog.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-catalog.js +595 -551
- package/dist/dkg-agent-rfc64-catalog.js.map +1 -1
- package/dist/dkg-agent-swm-host.d.ts +43 -52
- package/dist/dkg-agent-swm-host.d.ts.map +1 -1
- package/dist/dkg-agent-swm-host.js +629 -812
- package/dist/dkg-agent-swm-host.js.map +1 -1
- package/dist/dkg-agent-swm-state.d.ts +15 -0
- package/dist/dkg-agent-swm-state.d.ts.map +1 -1
- package/dist/dkg-agent-swm-state.js +43 -0
- package/dist/dkg-agent-swm-state.js.map +1 -1
- package/dist/dkg-agent-swm-substrate.d.ts +2 -0
- package/dist/dkg-agent-swm-substrate.d.ts.map +1 -1
- package/dist/dkg-agent-swm-substrate.js +110 -53
- package/dist/dkg-agent-swm-substrate.js.map +1 -1
- package/dist/dkg-agent-types.d.ts +62 -26
- package/dist/dkg-agent-types.d.ts.map +1 -1
- package/dist/dkg-agent-types.js.map +1 -1
- package/dist/dkg-agent-vm-promotion.d.ts +2 -0
- package/dist/dkg-agent-vm-promotion.d.ts.map +1 -1
- package/dist/dkg-agent-vm-promotion.js +39 -5
- package/dist/dkg-agent-vm-promotion.js.map +1 -1
- package/dist/dkg-agent.d.ts +8 -1
- package/dist/dkg-agent.d.ts.map +1 -1
- package/dist/dkg-agent.js +75 -45
- package/dist/dkg-agent.js.map +1 -1
- package/dist/exact-graph-content-verifier.d.ts.map +1 -1
- package/dist/exact-graph-content-verifier.js +3 -2
- package/dist/exact-graph-content-verifier.js.map +1 -1
- package/dist/finalization-handler.d.ts +19 -207
- package/dist/finalization-handler.d.ts.map +1 -1
- package/dist/finalization-handler.js +79 -1646
- package/dist/finalization-handler.js.map +1 -1
- package/dist/finalization-recovery-worker.js +1 -1
- package/dist/finalization-recovery-worker.js.map +1 -1
- package/dist/finalized-authority-cold-resolution.d.ts +6 -1
- package/dist/finalized-authority-cold-resolution.d.ts.map +1 -1
- package/dist/finalized-authority-cold-resolution.js +22 -3
- package/dist/finalized-authority-cold-resolution.js.map +1 -1
- package/dist/gossip-session.d.ts +29 -0
- package/dist/gossip-session.d.ts.map +1 -0
- package/dist/gossip-session.js +48 -0
- package/dist/gossip-session.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.d.ts +5 -5
- package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.d.ts.map +1 -1
- package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.js +59 -49
- package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.js.map +1 -1
- package/dist/internal/context-graph-authority/finalized-target-projection.d.ts +17 -0
- package/dist/internal/context-graph-authority/finalized-target-projection.d.ts.map +1 -0
- package/dist/internal/context-graph-authority/finalized-target-projection.js +36 -0
- package/dist/internal/context-graph-authority/finalized-target-projection.js.map +1 -0
- package/dist/internal/context-graph-authority/swm-transport-authority.d.ts +43 -7
- package/dist/internal/context-graph-authority/swm-transport-authority.d.ts.map +1 -1
- package/dist/internal/context-graph-authority/swm-transport-authority.js +135 -18
- package/dist/internal/context-graph-authority/swm-transport-authority.js.map +1 -1
- package/dist/internal/context-graph-binding-abort.d.ts +3 -0
- package/dist/internal/context-graph-binding-abort.d.ts.map +1 -0
- package/dist/internal/context-graph-binding-abort.js +32 -0
- package/dist/internal/context-graph-binding-abort.js.map +1 -0
- package/dist/internal/context-graph-cache-invalidating-store.d.ts +3 -0
- package/dist/internal/context-graph-cache-invalidating-store.d.ts.map +1 -0
- package/dist/internal/context-graph-cache-invalidating-store.js +167 -0
- package/dist/internal/context-graph-cache-invalidating-store.js.map +1 -0
- package/dist/internal/context-graph-meta-record-copy.d.ts +3 -0
- package/dist/internal/context-graph-meta-record-copy.d.ts.map +1 -0
- package/dist/internal/context-graph-meta-record-copy.js +21 -0
- package/dist/internal/context-graph-meta-record-copy.js.map +1 -0
- package/dist/internal/gossip/host-mode-handler.d.ts +11 -0
- package/dist/internal/gossip/host-mode-handler.d.ts.map +1 -0
- package/dist/internal/gossip/host-mode-handler.js +41 -0
- package/dist/internal/gossip/host-mode-handler.js.map +1 -0
- package/dist/internal/join-encryption-key-bundle.d.ts +10 -0
- package/dist/internal/join-encryption-key-bundle.d.ts.map +1 -0
- package/dist/internal/join-encryption-key-bundle.js +72 -0
- package/dist/internal/join-encryption-key-bundle.js.map +1 -0
- package/dist/internal/knowledge-asset-vm-publish-request.d.ts +31 -0
- package/dist/internal/knowledge-asset-vm-publish-request.d.ts.map +1 -0
- package/dist/internal/knowledge-asset-vm-publish-request.js +91 -0
- package/dist/internal/knowledge-asset-vm-publish-request.js.map +1 -0
- package/dist/internal/lifecycle-sync-policy.d.ts +5 -0
- package/dist/internal/lifecycle-sync-policy.d.ts.map +1 -0
- package/dist/internal/lifecycle-sync-policy.js +12 -0
- package/dist/internal/lifecycle-sync-policy.js.map +1 -0
- package/dist/internal/local-private-member.d.ts +14 -0
- package/dist/internal/local-private-member.d.ts.map +1 -0
- package/dist/internal/local-private-member.js +21 -0
- package/dist/internal/local-private-member.js.map +1 -0
- package/dist/internal/promote/assertion-promote-precommit.d.ts +41 -1
- package/dist/internal/promote/assertion-promote-precommit.d.ts.map +1 -1
- package/dist/internal/promote/assertion-promote-precommit.js +74 -5
- package/dist/internal/promote/assertion-promote-precommit.js.map +1 -1
- package/dist/internal/storage-ack-owned-request.d.ts +16 -0
- package/dist/internal/storage-ack-owned-request.d.ts.map +1 -0
- package/dist/internal/storage-ack-owned-request.js +16 -0
- package/dist/internal/storage-ack-owned-request.js.map +1 -0
- package/dist/internal/vm-reconcile-local-admission-wait.d.ts +96 -0
- package/dist/internal/vm-reconcile-local-admission-wait.d.ts.map +1 -0
- package/dist/internal/vm-reconcile-local-admission-wait.js +226 -0
- package/dist/internal/vm-reconcile-local-admission-wait.js.map +1 -0
- package/dist/internal/vm-reconcile-read-authority.d.ts +27 -0
- package/dist/internal/vm-reconcile-read-authority.d.ts.map +1 -0
- package/dist/internal/vm-reconcile-read-authority.js +33 -0
- package/dist/internal/vm-reconcile-read-authority.js.map +1 -0
- package/dist/internal/vm-reconcile-sweep-admission.d.ts +2 -0
- package/dist/internal/vm-reconcile-sweep-admission.d.ts.map +1 -1
- package/dist/internal/vm-reconcile-sweep.d.ts +16 -4
- package/dist/internal/vm-reconcile-sweep.d.ts.map +1 -1
- package/dist/internal/vm-reconcile-sweep.js +91 -50
- package/dist/internal/vm-reconcile-sweep.js.map +1 -1
- package/dist/internal/workspace-projected-delegatees.d.ts +3 -0
- package/dist/internal/workspace-projected-delegatees.d.ts.map +1 -0
- package/dist/internal/workspace-projected-delegatees.js +34 -0
- package/dist/internal/workspace-projected-delegatees.js.map +1 -0
- package/dist/join-approval-restart-projection.d.ts +14 -0
- package/dist/join-approval-restart-projection.d.ts.map +1 -0
- package/dist/join-approval-restart-projection.js +32 -0
- package/dist/join-approval-restart-projection.js.map +1 -0
- package/dist/keyed-persist-scheduler.d.ts +72 -0
- package/dist/keyed-persist-scheduler.d.ts.map +1 -0
- package/dist/keyed-persist-scheduler.js +140 -0
- package/dist/keyed-persist-scheduler.js.map +1 -0
- package/dist/map-with-concurrency.d.ts +7 -0
- package/dist/map-with-concurrency.d.ts.map +1 -1
- package/dist/map-with-concurrency.js +36 -0
- package/dist/map-with-concurrency.js.map +1 -1
- package/dist/p2p/network-admission-coordinator.d.ts +15 -0
- package/dist/p2p/network-admission-coordinator.d.ts.map +1 -1
- package/dist/p2p/network-admission-coordinator.js +20 -2
- package/dist/p2p/network-admission-coordinator.js.map +1 -1
- package/dist/prepare-unscoped-context-graph-read-checks.d.ts.map +1 -1
- package/dist/prepare-unscoped-context-graph-read-checks.js +12 -0
- package/dist/prepare-unscoped-context-graph-read-checks.js.map +1 -1
- package/dist/registered-context-graph-authority.d.ts +7 -0
- package/dist/registered-context-graph-authority.d.ts.map +1 -1
- package/dist/registered-private-empty-vm-attempt-v1.d.ts +34 -0
- package/dist/registered-private-empty-vm-attempt-v1.d.ts.map +1 -0
- package/dist/registered-private-empty-vm-attempt-v1.js +120 -0
- package/dist/registered-private-empty-vm-attempt-v1.js.map +1 -0
- package/dist/reserved-ka-id-allocation.d.ts +12 -0
- package/dist/reserved-ka-id-allocation.d.ts.map +1 -0
- package/dist/reserved-ka-id-allocation.js +25 -0
- package/dist/reserved-ka-id-allocation.js.map +1 -0
- package/dist/rfc64/authority-rpc-circuit-breaker-v1.d.ts +5 -3
- package/dist/rfc64/authority-rpc-circuit-breaker-v1.d.ts.map +1 -1
- package/dist/rfc64/authority-rpc-circuit-breaker-v1.js +9 -0
- package/dist/rfc64/authority-rpc-circuit-breaker-v1.js.map +1 -1
- package/dist/rfc64/catalog-completion-evidence-v1.d.ts +38 -0
- package/dist/rfc64/catalog-completion-evidence-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-completion-evidence-v1.js +49 -0
- package/dist/rfc64/catalog-completion-evidence-v1.js.map +1 -0
- package/dist/rfc64/catalog-operational-applied-heads-v1.d.ts +6 -3
- package/dist/rfc64/catalog-operational-applied-heads-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-operational-applied-heads-v1.js +6 -3
- package/dist/rfc64/catalog-operational-applied-heads-v1.js.map +1 -1
- package/dist/rfc64/catalog-operational-reads-v1.d.ts +13 -0
- package/dist/rfc64/catalog-operational-reads-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-operational-reads-v1.js +56 -0
- package/dist/rfc64/catalog-operational-reads-v1.js.map +1 -0
- package/dist/rfc64/catalog-operational-targets-v1.d.ts +55 -0
- package/dist/rfc64/catalog-operational-targets-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-operational-targets-v1.js +379 -0
- package/dist/rfc64/catalog-operational-targets-v1.js.map +1 -0
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.d.ts +2 -0
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.js +18 -25
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.js.map +1 -1
- package/dist/rfc64/legacy-swm-boundary-codec-v1.d.ts +25 -0
- package/dist/rfc64/legacy-swm-boundary-codec-v1.d.ts.map +1 -0
- package/dist/rfc64/legacy-swm-boundary-codec-v1.js +127 -0
- package/dist/rfc64/legacy-swm-boundary-codec-v1.js.map +1 -0
- package/dist/rfc64/legacy-swm-boundary-v1.d.ts +12 -0
- package/dist/rfc64/legacy-swm-boundary-v1.d.ts.map +1 -1
- package/dist/rfc64/legacy-swm-boundary-v1.js +83 -144
- package/dist/rfc64/legacy-swm-boundary-v1.js.map +1 -1
- package/dist/rfc64/private-catalog-subscription-readiness-v1.d.ts +33 -0
- package/dist/rfc64/private-catalog-subscription-readiness-v1.d.ts.map +1 -0
- package/dist/rfc64/private-catalog-subscription-readiness-v1.js +97 -0
- package/dist/rfc64/private-catalog-subscription-readiness-v1.js.map +1 -0
- package/dist/rfc64/private-read-roster-v1.d.ts +14 -0
- package/dist/rfc64/private-read-roster-v1.d.ts.map +1 -0
- package/dist/rfc64/private-read-roster-v1.js +57 -0
- package/dist/rfc64/private-read-roster-v1.js.map +1 -0
- package/dist/rfc64/registered-private-empty-vm-proof-v1.d.ts +20 -0
- package/dist/rfc64/registered-private-empty-vm-proof-v1.d.ts.map +1 -0
- package/dist/rfc64/registered-private-empty-vm-proof-v1.js +26 -0
- package/dist/rfc64/registered-private-empty-vm-proof-v1.js.map +1 -0
- package/dist/rfc64/swm-inventory-shadow-runtime-v1.d.ts +3 -1
- package/dist/rfc64/swm-inventory-shadow-runtime-v1.d.ts.map +1 -1
- package/dist/rfc64/swm-inventory-shadow-runtime-v1.js +34 -0
- package/dist/rfc64/swm-inventory-shadow-runtime-v1.js.map +1 -1
- package/dist/sync/auth/pipe-request-tail.d.ts +5 -1
- package/dist/sync/auth/pipe-request-tail.d.ts.map +1 -1
- package/dist/sync/auth/pipe-request-tail.js +13 -3
- package/dist/sync/auth/pipe-request-tail.js.map +1 -1
- package/dist/sync/auth/request-build.d.ts +3 -0
- package/dist/sync/auth/request-build.d.ts.map +1 -1
- package/dist/sync/auth/request-build.js +11 -2
- package/dist/sync/auth/request-build.js.map +1 -1
- package/dist/sync/backpressure.d.ts +27 -16
- package/dist/sync/backpressure.d.ts.map +1 -1
- package/dist/sync/backpressure.js +66 -40
- package/dist/sync/backpressure.js.map +1 -1
- package/dist/sync/catchup-policy.d.ts +2 -0
- package/dist/sync/catchup-policy.d.ts.map +1 -1
- package/dist/sync/catchup-policy.js +2 -0
- package/dist/sync/catchup-policy.js.map +1 -1
- package/dist/sync/exact-assets.d.ts +7 -5
- package/dist/sync/exact-assets.d.ts.map +1 -1
- package/dist/sync/exact-assets.js +13 -8
- package/dist/sync/exact-assets.js.map +1 -1
- package/dist/sync/exact-batch-observation.d.ts +3 -0
- package/dist/sync/exact-batch-observation.d.ts.map +1 -0
- package/dist/sync/exact-batch-observation.js +13 -0
- package/dist/sync/exact-batch-observation.js.map +1 -0
- package/dist/sync/exact-batch-stream-capability.d.ts +24 -0
- package/dist/sync/exact-batch-stream-capability.d.ts.map +1 -0
- package/dist/sync/exact-batch-stream-capability.js +88 -0
- package/dist/sync/exact-batch-stream-capability.js.map +1 -0
- package/dist/sync/exact-batch-stream-contract.d.ts +78 -0
- package/dist/sync/exact-batch-stream-contract.d.ts.map +1 -0
- package/dist/sync/exact-batch-stream-contract.js +206 -0
- package/dist/sync/exact-batch-stream-contract.js.map +1 -0
- package/dist/sync/peer-connection.d.ts.map +1 -1
- package/dist/sync/peer-connection.js +11 -2
- package/dist/sync/peer-connection.js.map +1 -1
- package/dist/sync/priority-admission-queue.d.ts +17 -0
- package/dist/sync/priority-admission-queue.d.ts.map +1 -1
- package/dist/sync/priority-admission-queue.js +58 -37
- package/dist/sync/priority-admission-queue.js.map +1 -1
- package/dist/sync/requester/admission-boundary.d.ts +12 -0
- package/dist/sync/requester/admission-boundary.d.ts.map +1 -0
- package/dist/sync/requester/admission-boundary.js +22 -0
- package/dist/sync/requester/admission-boundary.js.map +1 -0
- package/dist/sync/requester/durable-sync.d.ts +2 -1
- package/dist/sync/requester/durable-sync.d.ts.map +1 -1
- package/dist/sync/requester/durable-sync.js +3 -188
- package/dist/sync/requester/durable-sync.js.map +1 -1
- package/dist/sync/requester/exact-batch-stream-driver.d.ts +83 -0
- package/dist/sync/requester/exact-batch-stream-driver.d.ts.map +1 -0
- package/dist/sync/requester/exact-batch-stream-driver.js +299 -0
- package/dist/sync/requester/exact-batch-stream-driver.js.map +1 -0
- package/dist/sync/requester/exact-batch-stream.d.ts +72 -0
- package/dist/sync/requester/exact-batch-stream.d.ts.map +1 -0
- package/dist/sync/requester/exact-batch-stream.js +267 -0
- package/dist/sync/requester/exact-batch-stream.js.map +1 -0
- package/dist/sync/requester/exact-recovery-transport.d.ts +19 -0
- package/dist/sync/requester/exact-recovery-transport.d.ts.map +1 -0
- package/dist/sync/requester/exact-recovery-transport.js +3 -0
- package/dist/sync/requester/exact-recovery-transport.js.map +1 -0
- package/dist/sync/requester/finalized-swm-twin-reconciliation.js +12 -3
- package/dist/sync/requester/finalized-swm-twin-reconciliation.js.map +1 -1
- package/dist/sync/requester/graph-scoped-materialization.d.ts.map +1 -1
- package/dist/sync/requester/graph-scoped-materialization.js +58 -24
- package/dist/sync/requester/graph-scoped-materialization.js.map +1 -1
- package/dist/sync/requester/page-fetch.d.ts +7 -0
- package/dist/sync/requester/page-fetch.d.ts.map +1 -1
- package/dist/sync/requester/page-fetch.js +103 -49
- package/dist/sync/requester/page-fetch.js.map +1 -1
- package/dist/sync/requester/shared-memory-sync.d.ts +10 -5
- package/dist/sync/requester/shared-memory-sync.d.ts.map +1 -1
- package/dist/sync/requester/shared-memory-sync.js +149 -150
- package/dist/sync/requester/shared-memory-sync.js.map +1 -1
- package/dist/sync/requester/swm-materialization-memo.d.ts +12 -0
- package/dist/sync/requester/swm-materialization-memo.d.ts.map +1 -0
- package/dist/sync/requester/swm-materialization-memo.js +54 -0
- package/dist/sync/requester/swm-materialization-memo.js.map +1 -0
- package/dist/sync/requester/swm-recovery.d.ts +3 -29
- package/dist/sync/requester/swm-recovery.d.ts.map +1 -1
- package/dist/sync/requester/swm-recovery.js +11 -10
- package/dist/sync/requester/swm-recovery.js.map +1 -1
- package/dist/sync/requester/swm-snapshot-materializer.d.ts.map +1 -1
- package/dist/sync/requester/swm-snapshot-materializer.js +18 -0
- package/dist/sync/requester/swm-snapshot-materializer.js.map +1 -1
- package/dist/sync/requester/swm-target-executor.d.ts +6 -0
- package/dist/sync/requester/swm-target-executor.d.ts.map +1 -1
- package/dist/sync/requester/swm-target-executor.js +24 -3
- package/dist/sync/requester/swm-target-executor.js.map +1 -1
- package/dist/sync/requester/verified-asset-preparation.d.ts +9 -0
- package/dist/sync/requester/verified-asset-preparation.d.ts.map +1 -0
- package/dist/sync/requester/verified-asset-preparation.js +190 -0
- package/dist/sync/requester/verified-asset-preparation.js.map +1 -0
- package/dist/sync/responder/asset-metadata.d.ts +18 -0
- package/dist/sync/responder/asset-metadata.d.ts.map +1 -0
- package/dist/sync/responder/asset-metadata.js +27 -0
- package/dist/sync/responder/asset-metadata.js.map +1 -0
- package/dist/sync/responder/durable-data-request-policy.d.ts +2 -16
- package/dist/sync/responder/durable-data-request-policy.d.ts.map +1 -1
- package/dist/sync/responder/durable-data-request-policy.js +1 -31
- package/dist/sync/responder/durable-data-request-policy.js.map +1 -1
- package/dist/sync/responder/exact-asset-export-cache.d.ts +89 -0
- package/dist/sync/responder/exact-asset-export-cache.d.ts.map +1 -0
- package/dist/sync/responder/exact-asset-export-cache.js +550 -0
- package/dist/sync/responder/exact-asset-export-cache.js.map +1 -0
- package/dist/sync/responder/exact-batch-stream.d.ts +47 -0
- package/dist/sync/responder/exact-batch-stream.d.ts.map +1 -0
- package/dist/sync/responder/exact-batch-stream.js +151 -0
- package/dist/sync/responder/exact-batch-stream.js.map +1 -0
- package/dist/sync/responder/exact-data-session.d.ts +67 -0
- package/dist/sync/responder/exact-data-session.d.ts.map +1 -0
- package/dist/sync/responder/exact-data-session.js +130 -0
- package/dist/sync/responder/exact-data-session.js.map +1 -0
- package/dist/sync/responder/exact-graph-cursor-filter.d.ts +9 -0
- package/dist/sync/responder/exact-graph-cursor-filter.d.ts.map +1 -0
- package/dist/sync/responder/exact-graph-cursor-filter.js +101 -0
- package/dist/sync/responder/exact-graph-cursor-filter.js.map +1 -0
- package/dist/sync/responder/exact-graph-reader.d.ts +95 -0
- package/dist/sync/responder/exact-graph-reader.d.ts.map +1 -0
- package/dist/sync/responder/exact-graph-reader.js +623 -0
- package/dist/sync/responder/exact-graph-reader.js.map +1 -0
- package/dist/sync/responder/exact-page-reader.d.ts +37 -0
- package/dist/sync/responder/exact-page-reader.d.ts.map +1 -0
- package/dist/sync/responder/exact-page-reader.js +130 -0
- package/dist/sync/responder/exact-page-reader.js.map +1 -0
- package/dist/sync/responder/graph-plan.d.ts +19 -85
- package/dist/sync/responder/graph-plan.d.ts.map +1 -1
- package/dist/sync/responder/graph-plan.js +51 -988
- package/dist/sync/responder/graph-plan.js.map +1 -1
- package/dist/sync/responder/page-framing-policy.d.ts +31 -0
- package/dist/sync/responder/page-framing-policy.d.ts.map +1 -0
- package/dist/sync/responder/page-framing-policy.js +41 -0
- package/dist/sync/responder/page-framing-policy.js.map +1 -0
- package/dist/sync/responder/responder-row-page.d.ts +85 -0
- package/dist/sync/responder/responder-row-page.d.ts.map +1 -0
- package/dist/sync/responder/responder-row-page.js +181 -0
- package/dist/sync/responder/responder-row-page.js.map +1 -0
- package/dist/sync/responder/row-serialization.d.ts +34 -0
- package/dist/sync/responder/row-serialization.d.ts.map +1 -0
- package/dist/sync/responder/row-serialization.js +69 -0
- package/dist/sync/responder/row-serialization.js.map +1 -0
- package/dist/sync/responder/session-plan-memo.d.ts +20 -0
- package/dist/sync/responder/session-plan-memo.d.ts.map +1 -0
- package/dist/sync/responder/session-plan-memo.js +135 -0
- package/dist/sync/responder/session-plan-memo.js.map +1 -0
- package/dist/sync/responder/sync-handler.d.ts +18 -1
- package/dist/sync/responder/sync-handler.d.ts.map +1 -1
- package/dist/sync/responder/sync-handler.js +101 -57
- package/dist/sync/responder/sync-handler.js.map +1 -1
- package/dist/sync/shared-memory-completion.d.ts +30 -0
- package/dist/sync/shared-memory-completion.d.ts.map +1 -1
- package/dist/sync/shared-memory-completion.js +13 -0
- package/dist/sync/shared-memory-completion.js.map +1 -1
- package/dist/sync/wire-compression.d.ts +47 -0
- package/dist/sync/wire-compression.d.ts.map +1 -0
- package/dist/sync/wire-compression.js +111 -0
- package/dist/sync/wire-compression.js.map +1 -0
- package/dist/unscoped-query-consistency.d.ts +12 -0
- package/dist/unscoped-query-consistency.d.ts.map +1 -1
- package/dist/unscoped-query-consistency.js +17 -1
- package/dist/unscoped-query-consistency.js.map +1 -1
- package/dist/vm-promotion-audit.d.ts +2 -2
- package/dist/vm-promotion-audit.d.ts.map +1 -1
- package/dist/vm-promotion-audit.js +26 -9
- package/dist/vm-promotion-audit.js.map +1 -1
- package/dist/vm-reconcile-dispatcher.d.ts +42 -1
- package/dist/vm-reconcile-dispatcher.d.ts.map +1 -1
- package/dist/vm-reconcile-dispatcher.js +103 -4
- package/dist/vm-reconcile-dispatcher.js.map +1 -1
- package/dist/vm-reconcile-peer-topology.d.ts +7 -9
- package/dist/vm-reconcile-peer-topology.d.ts.map +1 -1
- package/dist/vm-reconcile-peer-topology.js +1 -37
- package/dist/vm-reconcile-peer-topology.js.map +1 -1
- package/dist/vm-recovery-candidate-order.d.ts +16 -0
- package/dist/vm-recovery-candidate-order.d.ts.map +1 -0
- package/dist/vm-recovery-candidate-order.js +24 -0
- package/dist/vm-recovery-candidate-order.js.map +1 -0
- package/dist/vm-recovery-core-transport-preference.d.ts +69 -0
- package/dist/vm-recovery-core-transport-preference.d.ts.map +1 -0
- package/dist/vm-recovery-core-transport-preference.js +131 -0
- package/dist/vm-recovery-core-transport-preference.js.map +1 -0
- package/dist/vm-recovery-experiment-policy.d.ts +24 -0
- package/dist/vm-recovery-experiment-policy.d.ts.map +1 -0
- package/dist/vm-recovery-experiment-policy.js +18 -0
- package/dist/vm-recovery-experiment-policy.js.map +1 -0
- package/dist/vm-recovery-footprint.d.ts +54 -0
- package/dist/vm-recovery-footprint.d.ts.map +1 -1
- package/dist/vm-recovery-footprint.js +88 -24
- package/dist/vm-recovery-footprint.js.map +1 -1
- package/dist/vm-recovery-microbatch.d.ts +2 -0
- package/dist/vm-recovery-microbatch.d.ts.map +1 -1
- package/dist/vm-recovery-microbatch.js +7 -3
- package/dist/vm-recovery-microbatch.js.map +1 -1
- package/dist/vm-recovery-pass-authority.d.ts +84 -0
- package/dist/vm-recovery-pass-authority.d.ts.map +1 -0
- package/dist/vm-recovery-pass-authority.js +126 -0
- package/dist/vm-recovery-pass-authority.js.map +1 -0
- package/dist/vm-recovery-phase-timing.d.ts +75 -0
- package/dist/vm-recovery-phase-timing.d.ts.map +1 -0
- package/dist/vm-recovery-phase-timing.js +236 -0
- package/dist/vm-recovery-phase-timing.js.map +1 -0
- package/dist/vm-recovery-preparation.d.ts +143 -0
- package/dist/vm-recovery-preparation.d.ts.map +1 -0
- package/dist/vm-recovery-preparation.js +433 -0
- package/dist/vm-recovery-preparation.js.map +1 -0
- package/dist/vm-recovery-provider-policy.d.ts +13 -1
- package/dist/vm-recovery-provider-policy.d.ts.map +1 -1
- package/dist/vm-recovery-provider-policy.js +37 -5
- package/dist/vm-recovery-provider-policy.js.map +1 -1
- package/dist/vm-recovery-stream-profile.d.ts +15 -0
- package/dist/vm-recovery-stream-profile.d.ts.map +1 -0
- package/dist/vm-recovery-stream-profile.js +53 -0
- package/dist/vm-recovery-stream-profile.js.map +1 -0
- package/dist/vm-recovery-stream-setback-policy.d.ts +54 -0
- package/dist/vm-recovery-stream-setback-policy.d.ts.map +1 -0
- package/dist/vm-recovery-stream-setback-policy.js +85 -0
- package/dist/vm-recovery-stream-setback-policy.js.map +1 -0
- package/dist/vm-recovery-timing-observer.d.ts +27 -0
- package/dist/vm-recovery-timing-observer.d.ts.map +1 -0
- package/dist/vm-recovery-timing-observer.js +49 -0
- package/dist/vm-recovery-timing-observer.js.map +1 -0
- package/dist/vm-recovery-transport-budget-policy.d.ts +32 -0
- package/dist/vm-recovery-transport-budget-policy.d.ts.map +1 -0
- package/dist/vm-recovery-transport-budget-policy.js +55 -0
- package/dist/vm-recovery-transport-budget-policy.js.map +1 -0
- package/dist/vm-recovery-transport-plan.d.ts +83 -0
- package/dist/vm-recovery-transport-plan.d.ts.map +1 -0
- package/dist/vm-recovery-transport-plan.js +117 -0
- package/dist/vm-recovery-transport-plan.js.map +1 -0
- package/package.json +17 -9
- package/dist/finalization-annotations.d.ts +0 -5
- package/dist/finalization-annotations.d.ts.map +0 -1
- package/dist/finalization-annotations.js +0 -6
- package/dist/finalization-annotations.js.map +0 -1
- package/dist/swm-ka-bound.d.ts +0 -21
- package/dist/swm-ka-bound.d.ts.map +0 -1
- package/dist/swm-ka-bound.js +0 -36
- package/dist/swm-ka-bound.js.map +0 -1
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { WORKSPACE_AGENT_ENCRYPTION_KEY_ALGORITHM_X25519, decodeWorkspaceEncryptionKey, workspaceAgentEncryptionKeyId } from '@origintrail-official/dkg-core';
|
|
4
|
+
import { ethers } from 'ethers';
|
|
5
|
+
import { computeWorkspaceEncryptionKeysAttestationDigest, verifyAgentDelegation } from '../auth/agent-delegation.js';
|
|
6
|
+
import { verifyWorkspaceEncryptionKeyBinding } from '../agent-keystore.js';
|
|
7
|
+
const JOIN_ENCRYPTION_KEY_LIMIT = 8;
|
|
8
|
+
export function verifiedDelegationKeyIds(agentAddress, keys) {
|
|
9
|
+
return new Set(keys.map((key) => workspaceAgentEncryptionKeyId(agentAddress, decodeWorkspaceEncryptionKey(key.publicEncryptionKey)).toLowerCase()));
|
|
10
|
+
}
|
|
11
|
+
export function verifyJoinEncryptionKeyBundle(delegation, carrierPeerId) {
|
|
12
|
+
const keys = delegation.workspaceEncryptionKeys;
|
|
13
|
+
if (keys === undefined)
|
|
14
|
+
return null;
|
|
15
|
+
if (!Array.isArray(keys) || keys.length === 0 || keys.length > JOIN_ENCRYPTION_KEY_LIMIT) {
|
|
16
|
+
throw new Error(`Join request must carry between 1 and ${JOIN_ENCRYPTION_KEY_LIMIT} workspace encryption keys.`);
|
|
17
|
+
}
|
|
18
|
+
// Preserve the existing admission contract for a signed carrier mismatch:
|
|
19
|
+
// policy evaluation reports a bounded pending decision. Do not accept the
|
|
20
|
+
// bundle because the carrier has not proven it is the signed delegatee.
|
|
21
|
+
if (delegation.delegateePeerId !== carrierPeerId)
|
|
22
|
+
return null;
|
|
23
|
+
// issuedAtMs becomes the durable cross-CG cache high-water, so authenticate
|
|
24
|
+
// the base delegation here as well as at the admission boundary.
|
|
25
|
+
verifyAgentDelegation(delegation);
|
|
26
|
+
if (!Number.isSafeInteger(delegation.issuedAtMs) || delegation.issuedAtMs < 0) {
|
|
27
|
+
throw new Error('Join request carries an invalid encryption-key freshness timestamp.');
|
|
28
|
+
}
|
|
29
|
+
const verified = keys.map((key) => {
|
|
30
|
+
if (key === null
|
|
31
|
+
|| typeof key !== 'object'
|
|
32
|
+
|| key.encryptionKeyAlgorithm !== WORKSPACE_AGENT_ENCRYPTION_KEY_ALGORITHM_X25519
|
|
33
|
+
|| typeof key.publicEncryptionKey !== 'string'
|
|
34
|
+
|| typeof key.encryptionKeyProof !== 'string') {
|
|
35
|
+
throw new Error('Join request carries a malformed workspace encryption key.');
|
|
36
|
+
}
|
|
37
|
+
let valid = false;
|
|
38
|
+
try {
|
|
39
|
+
valid = verifyWorkspaceEncryptionKeyBinding(delegation.agentAddress, key.encryptionKeyAlgorithm, key.publicEncryptionKey, key.encryptionKeyProof);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
valid = false;
|
|
43
|
+
}
|
|
44
|
+
if (!valid) {
|
|
45
|
+
throw new Error('Join request carries an invalid workspace encryption key proof.');
|
|
46
|
+
}
|
|
47
|
+
return key;
|
|
48
|
+
});
|
|
49
|
+
if (typeof delegation.workspaceEncryptionKeysSignature !== 'string') {
|
|
50
|
+
throw new Error('Join request is missing its workspace encryption-key attestation.');
|
|
51
|
+
}
|
|
52
|
+
let attestationSigner = '';
|
|
53
|
+
try {
|
|
54
|
+
attestationSigner = ethers.verifyMessage(computeWorkspaceEncryptionKeysAttestationDigest(delegation), delegation.workspaceEncryptionKeysSignature);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
attestationSigner = '';
|
|
58
|
+
}
|
|
59
|
+
if (attestationSigner.toLowerCase() !== delegation.agentAddress.toLowerCase()) {
|
|
60
|
+
throw new Error('Join request carries an invalid workspace encryption-key attestation.');
|
|
61
|
+
}
|
|
62
|
+
const canonicalKeySet = [...new Set(verified.map((key) => JSON.stringify({
|
|
63
|
+
encryptionKeyAlgorithm: key.encryptionKeyAlgorithm,
|
|
64
|
+
publicEncryptionKey: key.publicEncryptionKey,
|
|
65
|
+
})))].sort();
|
|
66
|
+
return {
|
|
67
|
+
issuedAtMs: delegation.issuedAtMs,
|
|
68
|
+
keySetDigest: `0x${createHash('sha256').update(JSON.stringify(canonicalKeySet)).digest('hex')}`,
|
|
69
|
+
keys: verified,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=join-encryption-key-bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"join-encryption-key-bundle.js","sourceRoot":"","sources":["../../src/internal/join-encryption-key-bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type AssertionSeal, GRAPH_KA_CONTENT_SCOPE_VERSION } from '@origintrail-official/dkg-core';
|
|
2
|
+
import { type PublishOptions, type KnowledgeAssetVmPublishRequest } from '@origintrail-official/dkg-publisher';
|
|
3
|
+
type KnowledgeAssetVmPublicationOperationPlan = {
|
|
4
|
+
readonly kind: 'initial';
|
|
5
|
+
readonly pricingPolicy: PublishOptions['pricingPolicy'];
|
|
6
|
+
} | {
|
|
7
|
+
readonly kind: 'update';
|
|
8
|
+
readonly vmCurrentAssertion: string;
|
|
9
|
+
};
|
|
10
|
+
/** One operation discriminator shared by admission, sync, and queued execution. */
|
|
11
|
+
export declare function planKnowledgeAssetVmPublication(input: {
|
|
12
|
+
readonly vmCurrentAssertion?: string;
|
|
13
|
+
readonly pricingPolicy?: PublishOptions['pricingPolicy'];
|
|
14
|
+
}): KnowledgeAssetVmPublicationOperationPlan;
|
|
15
|
+
/** Required immutable envelope consumed by graph-scoped queued publication. */
|
|
16
|
+
export type GraphScopedKnowledgeAssetVmPublishRequest = KnowledgeAssetVmPublishRequest & {
|
|
17
|
+
readonly contentScopeVersion: typeof GRAPH_KA_CONTENT_SCOPE_VERSION;
|
|
18
|
+
readonly kaUal: string;
|
|
19
|
+
readonly assertionVersion: string;
|
|
20
|
+
readonly publicTripleCount: number;
|
|
21
|
+
readonly privateTripleCount: number;
|
|
22
|
+
};
|
|
23
|
+
/** Narrow the existing persisted-envelope checks before any graph mutation. */
|
|
24
|
+
export declare function isGraphScopedKnowledgeAssetVmPublishRequest(request: KnowledgeAssetVmPublishRequest): request is GraphScopedKnowledgeAssetVmPublishRequest;
|
|
25
|
+
/** Rebuild the immutable graph-scoped seal carried by one queued VM request. */
|
|
26
|
+
export declare function assertionSealFromQueuedKnowledgeAssetVmPublishRequest(request: GraphScopedKnowledgeAssetVmPublishRequest): AssertionSeal;
|
|
27
|
+
export type KnowledgeAssetVmPublishRequestWithoutIntentKey = Omit<KnowledgeAssetVmPublishRequest, 'intentKey'>;
|
|
28
|
+
/** Canonical immutable projection of the persisted queued-publish request. */
|
|
29
|
+
export declare function createKnowledgeAssetVmPublishIntentKey(request: KnowledgeAssetVmPublishRequestWithoutIntentKey): string;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=knowledge-asset-vm-publish-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge-asset-vm-publish-request.d.ts","sourceRoot":"","sources":["../../src/internal/knowledge-asset-vm-publish-request.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAAE,8BAA8B,EAAkC,MAAM,gCAAgC,CAAC;AACpI,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,8BAA8B,EAA4C,MAAM,qCAAqC,CAAC;AAGzJ,KAAK,wCAAwC,GACzC;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;CACzD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC,CAAC;AAEN,mFAAmF;AACnF,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;CAC1D,GAAG,wCAAwC,CAU3C;AAED,+EAA+E;AAC/E,MAAM,MAAM,yCAAyC,GAAG,8BAA8B,GAAG;IACvF,QAAQ,CAAC,mBAAmB,EAAE,OAAO,8BAA8B,CAAC;IACpE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,2CAA2C,CACzD,OAAO,EAAE,8BAA8B,GACtC,OAAO,IAAI,yCAAyC,CAOtD;AAED,gFAAgF;AAChF,wBAAgB,qDAAqD,CACnE,OAAO,EAAE,yCAAyC,GACjD,aAAa,CA2Bf;AAED,MAAM,MAAM,8CAA8C,GAAG,IAAI,CAC/D,8BAA8B,EAC9B,WAAW,CACZ,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,8CAA8C,GACtD,MAAM,CAqCR"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { GRAPH_KA_CONTENT_SCOPE_VERSION, createGraphKnowledgeAssetScope } from '@origintrail-official/dkg-core';
|
|
4
|
+
import { assertPublicationPricingPolicyApplicable } from '@origintrail-official/dkg-publisher';
|
|
5
|
+
import { ethers } from 'ethers';
|
|
6
|
+
/** One operation discriminator shared by admission, sync, and queued execution. */
|
|
7
|
+
export function planKnowledgeAssetVmPublication(input) {
|
|
8
|
+
if (input.vmCurrentAssertion) {
|
|
9
|
+
assertPublicationPricingPolicyApplicable(input.pricingPolicy, { kind: 'update' });
|
|
10
|
+
return { kind: 'update', vmCurrentAssertion: input.vmCurrentAssertion };
|
|
11
|
+
}
|
|
12
|
+
assertPublicationPricingPolicyApplicable(input.pricingPolicy, {
|
|
13
|
+
kind: 'initial',
|
|
14
|
+
graphScoped: true,
|
|
15
|
+
});
|
|
16
|
+
return { kind: 'initial', pricingPolicy: input.pricingPolicy };
|
|
17
|
+
}
|
|
18
|
+
/** Narrow the existing persisted-envelope checks before any graph mutation. */
|
|
19
|
+
export function isGraphScopedKnowledgeAssetVmPublishRequest(request) {
|
|
20
|
+
return request.contentScopeVersion === GRAPH_KA_CONTENT_SCOPE_VERSION
|
|
21
|
+
&& request.kaUal !== undefined
|
|
22
|
+
&& request.assertionVersion !== undefined
|
|
23
|
+
&& request.publicTripleCount !== undefined
|
|
24
|
+
&& request.privateTripleCount !== undefined
|
|
25
|
+
&& request.roots.length === 0;
|
|
26
|
+
}
|
|
27
|
+
/** Rebuild the immutable graph-scoped seal carried by one queued VM request. */
|
|
28
|
+
export function assertionSealFromQueuedKnowledgeAssetVmPublishRequest(request) {
|
|
29
|
+
const graphScope = createGraphKnowledgeAssetScope(request.kaUal, request.assertionVersion);
|
|
30
|
+
return {
|
|
31
|
+
merkleRoot: ethers.getBytes(request.seal.merkleRoot),
|
|
32
|
+
authorAddress: ethers.getAddress(request.seal.authorAddress),
|
|
33
|
+
authorAttestationR: ethers.getBytes(request.seal.signature.r),
|
|
34
|
+
authorAttestationVS: ethers.getBytes(request.seal.signature.vs),
|
|
35
|
+
authorSchemeVersion: request.seal.schemeVersion,
|
|
36
|
+
chainId: BigInt(request.sealChainId),
|
|
37
|
+
kav10Address: ethers.getAddress(request.sealKav10Address),
|
|
38
|
+
finalizedAtIso: request.sealFinalizedAtIso,
|
|
39
|
+
contentScopeVersion: GRAPH_KA_CONTENT_SCOPE_VERSION,
|
|
40
|
+
kaUal: graphScope.ual,
|
|
41
|
+
assertionVersion: graphScope.assertionVersion,
|
|
42
|
+
publicTripleCount: request.publicTripleCount,
|
|
43
|
+
...(request.privateMerkleRoot
|
|
44
|
+
? { privateMerkleRoot: ethers.getBytes(request.privateMerkleRoot) }
|
|
45
|
+
: {}),
|
|
46
|
+
privateTripleCount: request.privateTripleCount,
|
|
47
|
+
rootEntities: [],
|
|
48
|
+
...(request.seal.reservedKaId !== undefined
|
|
49
|
+
? { reservedKaId: BigInt(request.seal.reservedKaId) }
|
|
50
|
+
: {}),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/** Canonical immutable projection of the persisted queued-publish request. */
|
|
54
|
+
export function createKnowledgeAssetVmPublishIntentKey(request) {
|
|
55
|
+
const canonicalIntent = {
|
|
56
|
+
contextGraphId: request.contextGraphId,
|
|
57
|
+
name: request.name,
|
|
58
|
+
agentAddress: request.agentAddress ?? null,
|
|
59
|
+
subGraphName: request.subGraphName ?? null,
|
|
60
|
+
shareOperationId: request.shareOperationId,
|
|
61
|
+
roots: request.roots,
|
|
62
|
+
contentScopeVersion: request.contentScopeVersion ?? null,
|
|
63
|
+
kaUal: request.kaUal ?? null,
|
|
64
|
+
assertionVersion: request.assertionVersion ?? null,
|
|
65
|
+
publicTripleCount: request.publicTripleCount ?? null,
|
|
66
|
+
privateMerkleRoot: request.privateMerkleRoot?.toLowerCase() ?? null,
|
|
67
|
+
privateTripleCount: request.privateTripleCount ?? null,
|
|
68
|
+
accessPolicy: request.accessPolicy ?? null,
|
|
69
|
+
allowedPeers: request.allowedPeers ?? [],
|
|
70
|
+
entityProofs: request.entityProofs ?? null,
|
|
71
|
+
sealMerkleRoot: request.sealMerkleRoot.toLowerCase(),
|
|
72
|
+
seal: request.seal,
|
|
73
|
+
sealChainId: request.sealChainId,
|
|
74
|
+
sealKav10Address: request.sealKav10Address,
|
|
75
|
+
sealFinalizedAtIso: request.sealFinalizedAtIso,
|
|
76
|
+
wmCurrentAssertion: request.wmCurrentAssertion ?? null,
|
|
77
|
+
swmCurrentAssertion: request.swmCurrentAssertion ?? null,
|
|
78
|
+
vmCurrentAssertion: request.vmCurrentAssertion ?? null,
|
|
79
|
+
kaNumber: request.kaNumber ?? null,
|
|
80
|
+
reservedUal: request.reservedUal ?? null,
|
|
81
|
+
publishEpochs: request.publishEpochs ?? null,
|
|
82
|
+
// Keep the pre-feature canonical JSON unchanged when the policy is omitted.
|
|
83
|
+
...(request.pricingPolicy !== undefined
|
|
84
|
+
? { pricingPolicy: request.pricingPolicy }
|
|
85
|
+
: {}),
|
|
86
|
+
clearSharedMemoryAfter: request.clearSharedMemoryAfter ?? null,
|
|
87
|
+
publisherNodeIdentityIdOverride: request.publisherNodeIdentityIdOverride ?? null,
|
|
88
|
+
};
|
|
89
|
+
return `sha256:${createHash('sha256').update(JSON.stringify(canonicalIntent)).digest('hex')}`;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=knowledge-asset-vm-publish-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge-asset-vm-publish-request.js","sourceRoot":"","sources":["../../src/internal/knowledge-asset-vm-publish-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type DKGAgentConfig } from '../dkg-agent-types.js';
|
|
2
|
+
export declare function syncReconcilerEnabled(config: DKGAgentConfig): boolean;
|
|
3
|
+
export declare function syncOnConnectEnabled(config: DKGAgentConfig): boolean;
|
|
4
|
+
export declare function durableSyncEnabled(config: DKGAgentConfig): boolean;
|
|
5
|
+
//# sourceMappingURL=lifecycle-sync-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle-sync-policy.d.ts","sourceRoot":"","sources":["../../src/internal/lifecycle-sync-policy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAErE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAEpE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAElE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { resolveBooleanSwitch, resolveSyncReconcilerEnabled } from '../sync/backpressure.js';
|
|
3
|
+
export function syncReconcilerEnabled(config) {
|
|
4
|
+
return resolveSyncReconcilerEnabled(config.syncReconcilerEnabled);
|
|
5
|
+
}
|
|
6
|
+
export function syncOnConnectEnabled(config) {
|
|
7
|
+
return resolveBooleanSwitch(config.syncOnConnectEnabled, 'DKG_SYNC_ON_CONNECT_ENABLED', true);
|
|
8
|
+
}
|
|
9
|
+
export function durableSyncEnabled(config) {
|
|
10
|
+
return resolveBooleanSwitch(config.durableSyncEnabled, 'DKG_DURABLE_SYNC_ENABLED', true);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=lifecycle-sync-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle-sync-policy.js","sourceRoot":"","sources":["../../src/internal/lifecycle-sync-policy.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAG7F,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IAC1D,OAAO,4BAA4B,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAsB;IACzD,OAAO,oBAAoB,CAAC,MAAM,CAAC,oBAAoB,EAAE,6BAA6B,EAAE,IAAI,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,OAAO,oBAAoB,CAAC,MAAM,CAAC,kBAAkB,EAAE,0BAA0B,EAAE,IAAI,CAAC,CAAC;AAC3F,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether `meta` declares an explicit private policy (#865) and lists one of
|
|
3
|
+
* `localAgents` among its allowed agents, participants, curators or creators,
|
|
4
|
+
* and not among its revoked agents.
|
|
5
|
+
*/
|
|
6
|
+
export declare function isLocalPrivateMember(meta: {
|
|
7
|
+
readonly accessPolicy?: string;
|
|
8
|
+
readonly allowedAgents: readonly string[];
|
|
9
|
+
readonly participantAgents: readonly string[];
|
|
10
|
+
readonly curators: readonly string[];
|
|
11
|
+
readonly creators: readonly string[];
|
|
12
|
+
readonly revokedAgents: readonly string[];
|
|
13
|
+
}, localAgents: readonly (string | undefined)[]): boolean;
|
|
14
|
+
//# sourceMappingURL=local-private-member.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-private-member.d.ts","sourceRoot":"","sources":["../../src/internal/local-private-member.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE;IACJ,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C,EACD,WAAW,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAC3C,OAAO,CAWT"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/** A context graph member identity: a bare agent address or its `did:dkg:agent:` DID. */
|
|
3
|
+
function memberAgentAddress(value) {
|
|
4
|
+
const match = /^(?:did:dkg:agent:)?(0x[0-9a-fA-F]{40})$/.exec(value.trim());
|
|
5
|
+
return match?.[1]?.toLowerCase();
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Whether `meta` declares an explicit private policy (#865) and lists one of
|
|
9
|
+
* `localAgents` among its allowed agents, participants, curators or creators,
|
|
10
|
+
* and not among its revoked agents.
|
|
11
|
+
*/
|
|
12
|
+
export function isLocalPrivateMember(meta, localAgents) {
|
|
13
|
+
if (meta.accessPolicy?.trim().toLowerCase() !== 'private')
|
|
14
|
+
return false;
|
|
15
|
+
const revoked = new Set(meta.revokedAgents.map(memberAgentAddress));
|
|
16
|
+
const members = new Set([...meta.allowedAgents, ...meta.participantAgents, ...meta.curators, ...meta.creators]
|
|
17
|
+
.map(memberAgentAddress)
|
|
18
|
+
.filter((member) => member !== undefined && !revoked.has(member)));
|
|
19
|
+
return localAgents.some((local) => (local !== undefined && members.has(memberAgentAddress(local))));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=local-private-member.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-private-member.js","sourceRoot":"","sources":["../../src/internal/local-private-member.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAItC,yFAAyF;AACzF,SAAS,kBAAkB,CAAC,KAAa;IACvC,MAAM,KAAK,GAAG,0CAA0C,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5E,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAOC,EACD,WAA4C;IAE5C,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;SACnF,GAAG,CAAC,kBAAkB,CAAC;SACvB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CACpE,CAAC;IACF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACjC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAC9D,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -16,11 +16,51 @@ type AssertionPromotePreCommitResult = {
|
|
|
16
16
|
gossipSigner: GossipSigner;
|
|
17
17
|
publisherOptions: PublisherAssertionPromoteOptions;
|
|
18
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* The same translation for the root promote's boundary companion, which the
|
|
21
|
+
* publisher prepares synchronously. Only the retirement fence is transient:
|
|
22
|
+
* every other refusal from the prepare (unavailable persistence, the head
|
|
23
|
+
* limit, invalid input) is a hard failure and passes through unchanged.
|
|
24
|
+
*/
|
|
25
|
+
export declare function translateLegacySwmRetirementFence<T>(prepare: () => T): T;
|
|
26
|
+
/** Waits before each repeat of a promote's recipient read. */
|
|
27
|
+
export declare const PROMOTE_RECIPIENT_RETRY_DELAYS_MS: readonly number[];
|
|
28
|
+
/**
|
|
29
|
+
* No repeat starts later than this after the first read began. It sits below
|
|
30
|
+
* the chain authority read deadline, so a read that ran into that deadline is
|
|
31
|
+
* reported at once instead of being asked again.
|
|
32
|
+
*/
|
|
33
|
+
export declare const PROMOTE_RECIPIENT_RETRY_BUDGET_MS = 2000;
|
|
34
|
+
/** The clock and sleep of the recipient repeat, replaceable in tests. */
|
|
35
|
+
export interface PromoteRecipientRetryTiming {
|
|
36
|
+
now(): number;
|
|
37
|
+
sleep(delayMs: number): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Repeat a promote's recipient read while it fails with a retryable authority
|
|
41
|
+
* outage and the bound allows.
|
|
42
|
+
*
|
|
43
|
+
* The recipient read accepts its roster only while the node-wide authority
|
|
44
|
+
* facts revision stands still, and it gives up after a few attempts. Work that
|
|
45
|
+
* has nothing to do with this promote moves that revision: after a Context
|
|
46
|
+
* Graph is registered the node reconciles the new graph's gossip subscription
|
|
47
|
+
* several times within a few hundred milliseconds. A share sent straight after
|
|
48
|
+
* a registration can therefore use up those attempts and report the roster as
|
|
49
|
+
* temporarily unavailable, although no fact changed and the same read succeeds
|
|
50
|
+
* moments later.
|
|
51
|
+
*
|
|
52
|
+
* Repeating it is safe. It only reads authority and recipient keys, it fails
|
|
53
|
+
* closed every time, and the publisher asks for it before the attempt claims
|
|
54
|
+
* an operation id or writes Shared Memory. The bound is short on purpose: each
|
|
55
|
+
* repeat costs chain reads, and a failure that outlasts the bound is reported
|
|
56
|
+
* to the caller, which retries the whole promote.
|
|
57
|
+
*/
|
|
58
|
+
export declare function resolvePromoteRecipientsWithinBound<T>(resolve: () => Promise<T>, timing?: PromoteRecipientRetryTiming): Promise<T>;
|
|
19
59
|
/**
|
|
20
60
|
* Resolve agent prerequisites without access to the committing publisher.
|
|
21
61
|
* The publisher receives concrete, pre-wrapped recipient and curator callbacks,
|
|
22
62
|
* not a policy that it could apply to arbitrary commit/finalization failures.
|
|
23
63
|
*/
|
|
24
|
-
export declare function prepareAssertionPromote(host: AssertionPromotePreCommitHost, input: AssertionPromotePreCommitInput): Promise<AssertionPromotePreCommitResult>;
|
|
64
|
+
export declare function prepareAssertionPromote(host: AssertionPromotePreCommitHost, input: AssertionPromotePreCommitInput, recipientRetryTiming?: PromoteRecipientRetryTiming): Promise<AssertionPromotePreCommitResult>;
|
|
25
65
|
export {};
|
|
26
66
|
//# sourceMappingURL=assertion-promote-precommit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertion-promote-precommit.d.ts","sourceRoot":"","sources":["../../../src/internal/promote/assertion-promote-precommit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assertion-promote-precommit.d.ts","sourceRoot":"","sources":["../../../src/internal/promote/assertion-promote-precommit.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,gCAAgC,EACtC,MAAM,qCAAqC,CAAC;AAM7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,KAAK,YAAY,GAAG,OAAO,CACzB,UAAU,CAAC,QAAQ,CAAC,oCAAoC,CAAC,CAAC,CAC3D,CAAC;AAEF,KAAK,gCAAgC,GAAG,IAAI,CAC1C,uBAAuB,EACrB,cAAc,GACd,iBAAiB,GACjB,qBAAqB,GACrB,cAAc,GACd,cAAc,CACjB,CAAC;AAEF,KAAK,mCAAmC,GACpC,oCAAoC,GACpC,0BAA0B,GAC1B,iCAAiC,GACjC,8BAA8B,GAC9B,2BAA2B,CAAC;AAEhC,KAAK,6BAA6B,GAAG;KAClC,MAAM,IAAI,mCAAmC,GAAG,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CACrF,CAAC;AAEF,UAAU,8BAA8B;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,gCAAgC,CAAC;CAC5C;AAED,KAAK,+BAA+B,GAAG;IACrC,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gCAAgC,CAAC;CACpD,CAAC;AAuBF;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CASxE;AAED,8DAA8D;AAC9D,eAAO,MAAM,iCAAiC,EAAE,SAAS,MAAM,EAAmC,CAAC;AAEnG;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,OAAQ,CAAC;AAEvD,yEAAyE;AACzE,MAAM,WAAW,2BAA2B;IAC1C,GAAG,IAAI,MAAM,CAAC;IACd,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAOD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,mCAAmC,CAAC,CAAC,EACzD,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,MAAM,GAAE,2BAAiE,GACxE,OAAO,CAAC,CAAC,CAAC,CAiBZ;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,6BAA6B,EACnC,KAAK,EAAE,8BAA8B,EACrC,oBAAoB,CAAC,EAAE,2BAA2B,GACjD,OAAO,CAAC,+BAA+B,CAAC,CA+C1C"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
import { createOperationContext } from '@origintrail-official/dkg-core';
|
|
2
|
+
import { createOperationContext, isRfc64LegacySwmBoundaryRetirementInProgressError, } from '@origintrail-official/dkg-core';
|
|
3
3
|
import { createPromoteRetryableFailure, } from '@origintrail-official/dkg-publisher';
|
|
4
4
|
import { isContextGraphAuthorityUnavailableMarker, isRetryableContextGraphAuthorityUnavailableReason, } from '../context-graph-authority/context-graph-authority.js';
|
|
5
|
+
/** An authority failure that can heal on its own (the shared classification). */
|
|
6
|
+
function isRetryableAuthorityUnavailable(error) {
|
|
7
|
+
return isContextGraphAuthorityUnavailableMarker(error)
|
|
8
|
+
&& isRetryableContextGraphAuthorityUnavailableReason(error.reason);
|
|
9
|
+
}
|
|
5
10
|
/**
|
|
6
11
|
* Retry translation belongs to these concrete agent prerequisite callbacks;
|
|
7
12
|
* which reasons are retryable is the shared authority classification.
|
|
@@ -11,19 +16,83 @@ async function resolvePromoteAuthority(resolve) {
|
|
|
11
16
|
return await resolve();
|
|
12
17
|
}
|
|
13
18
|
catch (error) {
|
|
14
|
-
if (
|
|
15
|
-
|
|
19
|
+
if (isRetryableAuthorityUnavailable(error)) {
|
|
20
|
+
throw createPromoteRetryableFailure(error);
|
|
21
|
+
}
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The same translation for the root promote's boundary companion, which the
|
|
27
|
+
* publisher prepares synchronously. Only the retirement fence is transient:
|
|
28
|
+
* every other refusal from the prepare (unavailable persistence, the head
|
|
29
|
+
* limit, invalid input) is a hard failure and passes through unchanged.
|
|
30
|
+
*/
|
|
31
|
+
export function translateLegacySwmRetirementFence(prepare) {
|
|
32
|
+
try {
|
|
33
|
+
return prepare();
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (isRfc64LegacySwmBoundaryRetirementInProgressError(error)) {
|
|
16
37
|
throw createPromoteRetryableFailure(error);
|
|
17
38
|
}
|
|
18
39
|
throw error;
|
|
19
40
|
}
|
|
20
41
|
}
|
|
42
|
+
/** Waits before each repeat of a promote's recipient read. */
|
|
43
|
+
export const PROMOTE_RECIPIENT_RETRY_DELAYS_MS = Object.freeze([100, 300, 700]);
|
|
44
|
+
/**
|
|
45
|
+
* No repeat starts later than this after the first read began. It sits below
|
|
46
|
+
* the chain authority read deadline, so a read that ran into that deadline is
|
|
47
|
+
* reported at once instead of being asked again.
|
|
48
|
+
*/
|
|
49
|
+
export const PROMOTE_RECIPIENT_RETRY_BUDGET_MS = 2_000;
|
|
50
|
+
const REAL_PROMOTE_RECIPIENT_RETRY_TIMING = Object.freeze({
|
|
51
|
+
now: () => performance.now(),
|
|
52
|
+
sleep: (delayMs) => new Promise((resolve) => { setTimeout(resolve, delayMs); }),
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* Repeat a promote's recipient read while it fails with a retryable authority
|
|
56
|
+
* outage and the bound allows.
|
|
57
|
+
*
|
|
58
|
+
* The recipient read accepts its roster only while the node-wide authority
|
|
59
|
+
* facts revision stands still, and it gives up after a few attempts. Work that
|
|
60
|
+
* has nothing to do with this promote moves that revision: after a Context
|
|
61
|
+
* Graph is registered the node reconciles the new graph's gossip subscription
|
|
62
|
+
* several times within a few hundred milliseconds. A share sent straight after
|
|
63
|
+
* a registration can therefore use up those attempts and report the roster as
|
|
64
|
+
* temporarily unavailable, although no fact changed and the same read succeeds
|
|
65
|
+
* moments later.
|
|
66
|
+
*
|
|
67
|
+
* Repeating it is safe. It only reads authority and recipient keys, it fails
|
|
68
|
+
* closed every time, and the publisher asks for it before the attempt claims
|
|
69
|
+
* an operation id or writes Shared Memory. The bound is short on purpose: each
|
|
70
|
+
* repeat costs chain reads, and a failure that outlasts the bound is reported
|
|
71
|
+
* to the caller, which retries the whole promote.
|
|
72
|
+
*/
|
|
73
|
+
export async function resolvePromoteRecipientsWithinBound(resolve, timing = REAL_PROMOTE_RECIPIENT_RETRY_TIMING) {
|
|
74
|
+
const startedAt = timing.now();
|
|
75
|
+
for (let attempt = 0;; attempt += 1) {
|
|
76
|
+
try {
|
|
77
|
+
return await resolve();
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
const delayMs = PROMOTE_RECIPIENT_RETRY_DELAYS_MS[attempt];
|
|
81
|
+
if (delayMs === undefined
|
|
82
|
+
|| !isRetryableAuthorityUnavailable(error)
|
|
83
|
+
|| timing.now() - startedAt + delayMs > PROMOTE_RECIPIENT_RETRY_BUDGET_MS) {
|
|
84
|
+
throw error;
|
|
85
|
+
}
|
|
86
|
+
await timing.sleep(delayMs);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
21
90
|
/**
|
|
22
91
|
* Resolve agent prerequisites without access to the committing publisher.
|
|
23
92
|
* The publisher receives concrete, pre-wrapped recipient and curator callbacks,
|
|
24
93
|
* not a policy that it could apply to arbitrary commit/finalization failures.
|
|
25
94
|
*/
|
|
26
|
-
export async function prepareAssertionPromote(host, input) {
|
|
95
|
+
export async function prepareAssertionPromote(host, input, recipientRetryTiming) {
|
|
27
96
|
return resolvePromoteAuthority(async () => {
|
|
28
97
|
const gossipSigner = await host.resolveWorkspaceGossipSigningAgent(input.contextGraphId);
|
|
29
98
|
const confirmBeforeCommit = await host.buildCuratorAckConfirmer(input.contextGraphId, gossipSigner, {
|
|
@@ -52,7 +121,7 @@ export async function prepareAssertionPromote(host, input) {
|
|
|
52
121
|
confirmBeforeCommit: confirmBeforeCommit === undefined
|
|
53
122
|
? undefined
|
|
54
123
|
: (message) => resolvePromoteAuthority(() => confirmBeforeCommit(message)),
|
|
55
|
-
resolveWorkspaceRecipients: (request) => resolvePromoteAuthority(() => host.resolveWorkspaceRecipientsGated(request)),
|
|
124
|
+
resolveWorkspaceRecipients: (request) => resolvePromoteAuthority(() => resolvePromoteRecipientsWithinBound(() => host.resolveWorkspaceRecipientsGated(request), recipientRetryTiming)),
|
|
56
125
|
...(shareAccessPolicy !== undefined ? { accessPolicy: shareAccessPolicy } : {}),
|
|
57
126
|
...(input.options?.allowedPeers !== undefined
|
|
58
127
|
? { allowedPeers: [...input.options.allowedPeers] }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertion-promote-precommit.js","sourceRoot":"","sources":["../../../src/internal/promote/assertion-promote-precommit.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,
|
|
1
|
+
{"version":3,"file":"assertion-promote-precommit.js","sourceRoot":"","sources":["../../../src/internal/promote/assertion-promote-precommit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ACKCollectorDeps } from '@origintrail-official/dkg-publisher';
|
|
2
|
+
interface ACKReliableMessenger {
|
|
3
|
+
sendRequestOwned(peerId: string, protocol: string, data: Uint8Array, opts: {
|
|
4
|
+
timeoutMs: number;
|
|
5
|
+
}): Promise<{
|
|
6
|
+
delivered: boolean;
|
|
7
|
+
error?: unknown;
|
|
8
|
+
response?: Uint8Array;
|
|
9
|
+
}>;
|
|
10
|
+
}
|
|
11
|
+
export declare function createACKSendP2P(input: {
|
|
12
|
+
messenger: ACKReliableMessenger;
|
|
13
|
+
timeoutMs: number;
|
|
14
|
+
}): ACKCollectorDeps['sendP2P'];
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=storage-ack-owned-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-ack-owned-request.d.ts","sourceRoot":"","sources":["../../src/internal/storage-ack-owned-request.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,UAAU,oBAAoB;IAC5B,gBAAgB,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAC1B,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;CAC5E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,SAAS,EAAE,oBAAoB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAa9B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
export function createACKSendP2P(input) {
|
|
3
|
+
return async (peerId, protocol, data) => {
|
|
4
|
+
const sendResult = await input.messenger.sendRequestOwned(peerId, protocol, data, {
|
|
5
|
+
timeoutMs: input.timeoutMs,
|
|
6
|
+
});
|
|
7
|
+
if (!sendResult.delivered) {
|
|
8
|
+
throw new Error(`substrate send already in flight (transport): ${sendResult.error}`);
|
|
9
|
+
}
|
|
10
|
+
if (!sendResult.response) {
|
|
11
|
+
throw new Error('substrate delivered (transport) without response');
|
|
12
|
+
}
|
|
13
|
+
return sendResult.response;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=storage-ack-owned-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-ack-owned-request.js","sourceRoot":"","sources":["../../src/internal/storage-ack-owned-request.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAatC,MAAM,UAAU,gBAAgB,CAAC,KAGhC;IACC,OAAO,KAAK,EAAE,MAAc,EAAE,QAAgB,EAAE,IAAgB,EAAE,EAAE;QAClE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAChF,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,iDAAiD,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graphs waiting for node-local sync admission, served in turn.
|
|
3
|
+
*
|
|
4
|
+
* A reconcile pass that the node's own sync admission refused has nothing to
|
|
5
|
+
* gain from running again while that capacity is still in use: every repeat
|
|
6
|
+
* costs the pass's chain reads and is refused the same way, and every waiting
|
|
7
|
+
* graph pays them at once. This component owns the wait instead. A refused
|
|
8
|
+
* graph is kept in arrival order and nudged once the admission can take its
|
|
9
|
+
* fetch, one graph at a time.
|
|
10
|
+
*
|
|
11
|
+
* A pass that could not start its work at all, because the source it had to
|
|
12
|
+
* ask did not answer, waits here too (see {@link VmReconcileLocalAdmissionWait.defer}).
|
|
13
|
+
*
|
|
14
|
+
* It owns no sync lease and no VM worker. A nudge re-enters the ordinary
|
|
15
|
+
* bounded dispatcher, and the periodic sweep still visits a waiting graph.
|
|
16
|
+
*/
|
|
17
|
+
export interface LocalAdmissionWaitOptions {
|
|
18
|
+
signal?: AbortSignal;
|
|
19
|
+
isCurrent: () => boolean;
|
|
20
|
+
/** Whether the node's sync admission would take this graph's fetch right now. */
|
|
21
|
+
canAdmit: () => boolean;
|
|
22
|
+
}
|
|
23
|
+
/** One pass of a graph, from the moment it started. */
|
|
24
|
+
export interface LocalAdmissionPass {
|
|
25
|
+
readonly key: string;
|
|
26
|
+
/** The graph's place in the wait when the pass started, if it had one. */
|
|
27
|
+
readonly waiting: object | undefined;
|
|
28
|
+
}
|
|
29
|
+
export interface VmReconcileLocalAdmissionWaitDeps {
|
|
30
|
+
/**
|
|
31
|
+
* Nudge one graph and return its pass's completion. Undefined when the
|
|
32
|
+
* nudge was not admitted (held after a failed pass, or no queue room).
|
|
33
|
+
* `deferred` says the graph was parked by `defer`, so the hold a failed
|
|
34
|
+
* pass leaves is its own and this nudge is the retry.
|
|
35
|
+
*/
|
|
36
|
+
readonly nudge: (key: string, deferred: boolean) => Promise<unknown> | undefined;
|
|
37
|
+
/** Bound on retained waiters. */
|
|
38
|
+
readonly maxWaiters: number;
|
|
39
|
+
}
|
|
40
|
+
export declare class VmReconcileLocalAdmissionWait {
|
|
41
|
+
private readonly deps;
|
|
42
|
+
/** Waiting graphs, in the order they are served. */
|
|
43
|
+
private readonly waiters;
|
|
44
|
+
/** The waiter nudged last, until its pass settles. */
|
|
45
|
+
private turn;
|
|
46
|
+
/** No waiter is nudged before this time: a nudged pass was refused all the same. */
|
|
47
|
+
private holdUntil;
|
|
48
|
+
private timer;
|
|
49
|
+
private closed;
|
|
50
|
+
constructor(deps: VmReconcileLocalAdmissionWaitDeps);
|
|
51
|
+
/**
|
|
52
|
+
* The node's sync admission refused this graph's fetch. `canAdmit` reads the
|
|
53
|
+
* admission the fetch will ask. Every waiter uses this readiness contract.
|
|
54
|
+
*/
|
|
55
|
+
retry(key: string, options: LocalAdmissionWaitOptions): void;
|
|
56
|
+
/**
|
|
57
|
+
* A graph that just used the node's sync admission and has more to fetch
|
|
58
|
+
* goes behind the graphs already waiting for it. Returns false, and parks
|
|
59
|
+
* nothing, when no other graph is waiting.
|
|
60
|
+
*/
|
|
61
|
+
yieldTurn(key: string, options: LocalAdmissionWaitOptions): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* A pass ended before its work started: the source it had to ask gave no
|
|
64
|
+
* answer. Nothing here can read when it will, so the graph goes behind the
|
|
65
|
+
* others and no waiter is nudged for one delay. A graph that keeps getting
|
|
66
|
+
* no answer then costs one short pass per delay, in turn with the rest.
|
|
67
|
+
* `canAdmit` is the same readiness contract as for a refused fetch: the
|
|
68
|
+
* graph is not asked again while its fetch could not start anyway.
|
|
69
|
+
*
|
|
70
|
+
* Returns `again` when the pass was this wait's own nudge, `parked` when it
|
|
71
|
+
* came from elsewhere, and undefined when the graph was not taken.
|
|
72
|
+
*/
|
|
73
|
+
defer(key: string, options: LocalAdmissionWaitOptions): 'parked' | 'again' | undefined;
|
|
74
|
+
/** A pass of this graph is starting. Hand the result to {@link passEnded}. */
|
|
75
|
+
passStarted(key: string): LocalAdmissionPass;
|
|
76
|
+
/**
|
|
77
|
+
* The pass ended. A graph whose place in the wait is still the one it had
|
|
78
|
+
* when the pass started was not refused again, so it is no longer waiting.
|
|
79
|
+
* Whatever the pass used is free now, so this is also when the next waiter
|
|
80
|
+
* can go.
|
|
81
|
+
*/
|
|
82
|
+
passEnded(pass: LocalAdmissionPass): void;
|
|
83
|
+
close(): void;
|
|
84
|
+
private park;
|
|
85
|
+
private remove;
|
|
86
|
+
/**
|
|
87
|
+
* Nudge the longest waiter the node's sync admission can take, unless a
|
|
88
|
+
* nudged pass is still out. Waiters are read in arrival order and one that
|
|
89
|
+
* cannot be admitted yet is passed over, so a graph with capacity of its own
|
|
90
|
+
* is not held behind one without.
|
|
91
|
+
*/
|
|
92
|
+
private wake;
|
|
93
|
+
/** One timer for the whole wait: the next delay to run out, else a capacity re-read per interval. */
|
|
94
|
+
private armTimer;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=vm-reconcile-local-admission-wait.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-reconcile-local-admission-wait.d.ts","sourceRoot":"","sources":["../../src/internal/vm-reconcile-local-admission-wait.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAYH,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,OAAO,CAAC;CACzB;AAQD,uDAAuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,iCAAiC;IAChD;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IACjF,iCAAiC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAWD,qBAAa,6BAA6B;IAU5B,OAAO,CAAC,QAAQ,CAAC,IAAI;IATjC,oDAAoD;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,sDAAsD;IACtD,OAAO,CAAC,IAAI,CAAiD;IAC7D,oFAAoF;IACpF,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,MAAM,CAAS;gBAEM,IAAI,EAAE,iCAAiC;IAEpE;;;OAGG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,GAAG,IAAI;IAY5D;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,GAAG,OAAO;IAYnE;;;;;;;;;;OAUG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS;IAStF,8EAA8E;IAC9E,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAI5C;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAOzC,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,IAAI;IAkCZ,OAAO,CAAC,MAAM;IAOd;;;;;OAKG;IACH,OAAO,CAAC,IAAI;IA6BZ,qGAAqG;IACrG,OAAO,CAAC,QAAQ;CAejB"}
|