@origintrail-official/dkg-agent 10.0.19 → 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/confirmed-graph-scoped-vm-resolver.d.ts +7 -1
- package/dist/confirmed-graph-scoped-vm-resolver.d.ts.map +1 -1
- package/dist/confirmed-graph-scoped-vm-resolver.js +5 -3
- package/dist/confirmed-graph-scoped-vm-resolver.js.map +1 -1
- package/dist/context-graph-authority-dependency.d.ts +11 -0
- package/dist/context-graph-authority-dependency.d.ts.map +1 -0
- package/dist/context-graph-authority-dependency.js +50 -0
- package/dist/context-graph-authority-dependency.js.map +1 -0
- package/dist/context-graph-binding-state.d.ts +6 -0
- package/dist/context-graph-binding-state.d.ts.map +1 -1
- package/dist/context-graph-binding-state.js +17 -10
- package/dist/context-graph-binding-state.js.map +1 -1
- package/dist/context-graph-claim-proof.d.ts +74 -0
- package/dist/context-graph-claim-proof.d.ts.map +1 -0
- package/dist/context-graph-claim-proof.js +137 -0
- package/dist/context-graph-claim-proof.js.map +1 -0
- package/dist/context-graph-member-proof.d.ts +33 -0
- package/dist/context-graph-member-proof.d.ts.map +1 -0
- package/dist/context-graph-member-proof.js +142 -0
- package/dist/context-graph-member-proof.js.map +1 -0
- 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-confirmation.d.ts +22 -2
- package/dist/context-graph-meta-confirmation.d.ts.map +1 -1
- package/dist/context-graph-meta-confirmation.js +54 -23
- package/dist/context-graph-meta-confirmation.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-metadata-relocation.d.ts +18 -30
- package/dist/context-graph-metadata-relocation.d.ts.map +1 -1
- package/dist/context-graph-metadata-relocation.js +32 -2
- package/dist/context-graph-metadata-relocation.js.map +1 -1
- package/dist/context-graph-private-meta-proof.d.ts +8 -9
- package/dist/context-graph-private-meta-proof.d.ts.map +1 -1
- package/dist/context-graph-private-meta-proof.js +25 -89
- package/dist/context-graph-private-meta-proof.js.map +1 -1
- package/dist/context-graph-public-meta-proof.d.ts +11 -1
- package/dist/context-graph-public-meta-proof.d.ts.map +1 -1
- package/dist/context-graph-public-meta-proof.js +23 -3
- package/dist/context-graph-public-meta-proof.js.map +1 -1
- package/dist/context-graph-read-authority.d.ts +30 -3
- package/dist/context-graph-read-authority.d.ts.map +1 -1
- package/dist/context-graph-read-authority.js +62 -18
- package/dist/context-graph-read-authority.js.map +1 -1
- package/dist/context-graph-storage-discovery.d.ts +14 -4
- package/dist/context-graph-storage-discovery.d.ts.map +1 -1
- package/dist/context-graph-storage-discovery.js +27 -7
- package/dist/context-graph-storage-discovery.js.map +1 -1
- package/dist/context-graph-subscription-authority-recovery.d.ts +7 -0
- package/dist/context-graph-subscription-authority-recovery.d.ts.map +1 -1
- package/dist/context-graph-subscription-authority-recovery.js +1 -0
- package/dist/context-graph-subscription-authority-recovery.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 +18 -4
- package/dist/curator-meta-refresh.d.ts.map +1 -1
- package/dist/curator-meta-refresh.js +61 -58
- 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-agents-phonebook.d.ts +41 -0
- package/dist/dkg-agent-agents-phonebook.d.ts.map +1 -0
- package/dist/dkg-agent-agents-phonebook.js +155 -0
- package/dist/dkg-agent-agents-phonebook.js.map +1 -0
- package/dist/dkg-agent-base.d.ts +162 -24
- package/dist/dkg-agent-base.d.ts.map +1 -1
- package/dist/dkg-agent-base.js +175 -147
- package/dist/dkg-agent-base.js.map +1 -1
- package/dist/dkg-agent-cg-chain-observation.d.ts +6 -1
- package/dist/dkg-agent-cg-chain-observation.d.ts.map +1 -1
- package/dist/dkg-agent-cg-chain-observation.js +20 -5
- package/dist/dkg-agent-cg-chain-observation.js.map +1 -1
- package/dist/dkg-agent-cg-name-resolution.d.ts +38 -2
- package/dist/dkg-agent-cg-name-resolution.d.ts.map +1 -1
- package/dist/dkg-agent-cg-name-resolution.js +100 -8
- package/dist/dkg-agent-cg-name-resolution.js.map +1 -1
- package/dist/dkg-agent-cg-registry.d.ts +43 -3
- package/dist/dkg-agent-cg-registry.d.ts.map +1 -1
- package/dist/dkg-agent-cg-registry.js +267 -129
- 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 +40 -18
- package/dist/dkg-agent-cg-resolve.js.map +1 -1
- package/dist/dkg-agent-constants.d.ts +10 -2
- package/dist/dkg-agent-constants.d.ts.map +1 -1
- package/dist/dkg-agent-constants.js +10 -2
- package/dist/dkg-agent-constants.js.map +1 -1
- package/dist/dkg-agent-context-graph.d.ts.map +1 -1
- package/dist/dkg-agent-context-graph.js +1 -5
- package/dist/dkg-agent-context-graph.js.map +1 -1
- package/dist/dkg-agent-crypto.d.ts +128 -21
- package/dist/dkg-agent-crypto.d.ts.map +1 -1
- package/dist/dkg-agent-crypto.js +824 -176
- package/dist/dkg-agent-crypto.js.map +1 -1
- package/dist/dkg-agent-diagnostics.d.ts.map +1 -1
- package/dist/dkg-agent-diagnostics.js +4 -3
- package/dist/dkg-agent-diagnostics.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 +129 -22
- package/dist/dkg-agent-lifecycle.d.ts.map +1 -1
- package/dist/dkg-agent-lifecycle.js +690 -211
- 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 +194 -281
- 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 +102 -86
- 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 +87 -80
- package/dist/dkg-agent-rfc64-catalog.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-catalog.js +726 -476
- package/dist/dkg-agent-rfc64-catalog.js.map +1 -1
- package/dist/dkg-agent-rfc64-meta-bootstrap.d.ts +6 -1
- package/dist/dkg-agent-rfc64-meta-bootstrap.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-meta-bootstrap.js +29 -13
- package/dist/dkg-agent-rfc64-meta-bootstrap.js.map +1 -1
- package/dist/dkg-agent-rfc64-swm-catalog-projection-supervisor.d.ts +8 -0
- package/dist/dkg-agent-rfc64-swm-catalog-projection-supervisor.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-swm-catalog-projection-supervisor.js +249 -40
- package/dist/dkg-agent-rfc64-swm-catalog-projection-supervisor.js.map +1 -1
- package/dist/dkg-agent-rfc64-swm-catalog-projection.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-swm-catalog-projection.js +3 -2
- package/dist/dkg-agent-rfc64-swm-catalog-projection.js.map +1 -1
- package/dist/dkg-agent-swm-host.d.ts +217 -52
- package/dist/dkg-agent-swm-host.d.ts.map +1 -1
- package/dist/dkg-agent-swm-host.js +1305 -858
- 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 +49 -8
- package/dist/dkg-agent-swm-substrate.d.ts.map +1 -1
- package/dist/dkg-agent-swm-substrate.js +219 -46
- package/dist/dkg-agent-swm-substrate.js.map +1 -1
- package/dist/dkg-agent-types.d.ts +86 -27
- 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 +4 -0
- package/dist/dkg-agent-vm-promotion.d.ts.map +1 -1
- package/dist/dkg-agent-vm-promotion.js +40 -5
- package/dist/dkg-agent-vm-promotion.js.map +1 -1
- package/dist/dkg-agent-vm-reconcile-scheduling.d.ts +7 -0
- package/dist/dkg-agent-vm-reconcile-scheduling.d.ts.map +1 -1
- package/dist/dkg-agent-vm-reconcile-scheduling.js +18 -0
- package/dist/dkg-agent-vm-reconcile-scheduling.js.map +1 -1
- package/dist/dkg-agent.d.ts +31 -2
- package/dist/dkg-agent.d.ts.map +1 -1
- package/dist/dkg-agent.js +188 -72
- 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 +26 -211
- package/dist/finalization-handler.d.ts.map +1 -1
- package/dist/finalization-handler.js +94 -1652
- package/dist/finalization-handler.js.map +1 -1
- package/dist/finalization-recovery-sqlite-displacement.d.ts +37 -0
- package/dist/finalization-recovery-sqlite-displacement.d.ts.map +1 -0
- package/dist/finalization-recovery-sqlite-displacement.js +102 -0
- package/dist/finalization-recovery-sqlite-displacement.js.map +1 -0
- package/dist/finalization-recovery-sqlite-policy.d.ts +20 -4
- package/dist/finalization-recovery-sqlite-policy.d.ts.map +1 -1
- package/dist/finalization-recovery-sqlite-policy.js +21 -5
- package/dist/finalization-recovery-sqlite-policy.js.map +1 -1
- package/dist/finalization-recovery-sqlite-rows.d.ts +53 -0
- package/dist/finalization-recovery-sqlite-rows.d.ts.map +1 -0
- package/dist/finalization-recovery-sqlite-rows.js +77 -0
- package/dist/finalization-recovery-sqlite-rows.js.map +1 -0
- package/dist/finalization-recovery-sqlite-store.d.ts +10 -4
- package/dist/finalization-recovery-sqlite-store.d.ts.map +1 -1
- package/dist/finalization-recovery-sqlite-store.js +49 -50
- package/dist/finalization-recovery-sqlite-store.js.map +1 -1
- package/dist/finalization-recovery-store.d.ts +18 -0
- package/dist/finalization-recovery-store.d.ts.map +1 -1
- package/dist/finalization-recovery-store.js +24 -0
- package/dist/finalization-recovery-store.js.map +1 -1
- package/dist/finalization-recovery-worker.js +1 -1
- package/dist/finalization-recovery-worker.js.map +1 -1
- package/dist/finalization-recovery.d.ts +2 -3
- package/dist/finalization-recovery.d.ts.map +1 -1
- package/dist/finalization-recovery.js +12 -9
- package/dist/finalization-recovery.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-publish-handler.d.ts.map +1 -1
- package/dist/gossip-publish-handler.js +4 -2
- package/dist/gossip-publish-handler.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 +4 -1
- 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/approved-member-acceptance.d.ts +61 -0
- package/dist/internal/context-graph-authority/approved-member-acceptance.d.ts.map +1 -0
- package/dist/internal/context-graph-authority/approved-member-acceptance.js +75 -0
- package/dist/internal/context-graph-authority/approved-member-acceptance.js.map +1 -0
- 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/context-graph-authority.d.ts +1 -0
- package/dist/internal/context-graph-authority/context-graph-authority.d.ts.map +1 -1
- package/dist/internal/context-graph-authority/context-graph-authority.js +25 -0
- package/dist/internal/context-graph-authority/context-graph-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 +84 -0
- package/dist/internal/context-graph-authority/swm-transport-authority.d.ts.map +1 -0
- package/dist/internal/context-graph-authority/swm-transport-authority.js +175 -0
- package/dist/internal/context-graph-authority/swm-transport-authority.js.map +1 -0
- 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 +79 -22
- 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/p2p/peer-connect.d.ts +10 -1
- package/dist/p2p/peer-connect.d.ts.map +1 -1
- package/dist/p2p/peer-connect.js +11 -2
- package/dist/p2p/peer-connect.js.map +1 -1
- package/dist/p2p/peer-selection.d.ts +8 -0
- package/dist/p2p/peer-selection.d.ts.map +1 -1
- package/dist/p2p/peer-selection.js +21 -12
- package/dist/p2p/peer-selection.js.map +1 -1
- package/dist/p2p/protocol-readiness.d.ts +3 -3
- package/dist/p2p/protocol-readiness.d.ts.map +1 -1
- package/dist/p2p/protocol-readiness.js +4 -3
- package/dist/p2p/protocol-readiness.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 +19 -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/applied-catalog-authority-transition-v1.d.ts.map +1 -1
- package/dist/rfc64/applied-catalog-authority-transition-v1.js +15 -17
- package/dist/rfc64/applied-catalog-authority-transition-v1.js.map +1 -1
- 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 +12 -13
- package/dist/rfc64/catalog-operational-applied-heads-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-operational-applied-heads-v1.js +17 -52
- 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-repair-diagnostics-v1.d.ts +28 -0
- package/dist/rfc64/catalog-repair-diagnostics-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-repair-diagnostics-v1.js +93 -0
- package/dist/rfc64/catalog-repair-diagnostics-v1.js.map +1 -0
- package/dist/rfc64/catalog-repair-retry-v1.d.ts +13 -0
- package/dist/rfc64/catalog-repair-retry-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-repair-retry-v1.js +39 -0
- package/dist/rfc64/catalog-repair-retry-v1.js.map +1 -0
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.d.ts +52 -0
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.js +188 -32
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.js.map +1 -1
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.d.ts +2 -8
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.js +10 -37
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.js.map +1 -1
- package/dist/rfc64/catalog-rollout-authority-v1.d.ts +13 -0
- package/dist/rfc64/catalog-rollout-authority-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-rollout-authority-v1.js +11 -0
- package/dist/rfc64/catalog-rollout-authority-v1.js.map +1 -1
- package/dist/rfc64/catalog-row-authorship.d.ts +12 -0
- package/dist/rfc64/catalog-row-authorship.d.ts.map +1 -1
- package/dist/rfc64/catalog-row-authorship.js +110 -57
- package/dist/rfc64/catalog-row-authorship.js.map +1 -1
- package/dist/rfc64/inventory-v1/candidate.d.ts +31 -10
- package/dist/rfc64/inventory-v1/candidate.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/candidate.js +51 -16
- package/dist/rfc64/inventory-v1/candidate.js.map +1 -1
- package/dist/rfc64/inventory-v1/index.d.ts +1 -1
- package/dist/rfc64/inventory-v1/index.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/index.js +1 -1
- package/dist/rfc64/inventory-v1/index.js.map +1 -1
- package/dist/rfc64/inventory-v1/open.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/open.js +7 -4
- package/dist/rfc64/inventory-v1/open.js.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-persistence.d.ts +3 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-persistence.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-persistence.js +15 -0
- package/dist/rfc64/inventory-v1/swm-author-inventory-persistence.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/public-catalog-native-receiver-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-native-receiver-v1.js +26 -21
- package/dist/rfc64/public-catalog-native-receiver-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-native-reconciler-v1.d.ts +17 -11
- package/dist/rfc64/public-catalog-native-reconciler-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-native-reconciler-v1.js +10 -8
- package/dist/rfc64/public-catalog-native-reconciler-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-receiver-v1.d.ts +9 -0
- package/dist/rfc64/public-catalog-receiver-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-receiver-v1.js +11 -2
- package/dist/rfc64/public-catalog-receiver-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-service-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-service-v1.js +21 -22
- package/dist/rfc64/public-catalog-service-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-successor-producer-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-successor-producer-v1.js +5 -4
- package/dist/rfc64/public-catalog-successor-producer-v1.js.map +1 -1
- 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-catalog-durable-asset-resolver-v1.d.ts.map +1 -1
- package/dist/rfc64/swm-catalog-durable-asset-resolver-v1.js +60 -53
- package/dist/rfc64/swm-catalog-durable-asset-resolver-v1.js.map +1 -1
- package/dist/rfc64/swm-inventory-catalog-reconciler-v1.d.ts +2 -1
- package/dist/rfc64/swm-inventory-catalog-reconciler-v1.d.ts.map +1 -1
- package/dist/rfc64/swm-inventory-catalog-reconciler-v1.js +44 -4
- package/dist/rfc64/swm-inventory-catalog-reconciler-v1.js.map +1 -1
- 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-asset-fetch.d.ts +22 -0
- package/dist/sync/exact-asset-fetch.d.ts.map +1 -1
- package/dist/sync/exact-asset-fetch.js +30 -3
- package/dist/sync/exact-asset-fetch.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/on-connect/sync-on-connect.d.ts +1 -1
- package/dist/sync/on-connect/sync-on-connect.d.ts.map +1 -1
- package/dist/sync/on-connect/sync-on-connect.js +3 -3
- package/dist/sync/on-connect/sync-on-connect.js.map +1 -1
- package/dist/sync/on-demand-agents-phonebook.d.ts +162 -0
- package/dist/sync/on-demand-agents-phonebook.d.ts.map +1 -0
- package/dist/sync/on-demand-agents-phonebook.js +571 -0
- package/dist/sync/on-demand-agents-phonebook.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 +61 -27
- 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 +26 -1
- package/dist/sync/responder/sync-handler.d.ts.map +1 -1
- package/dist/sync/responder/sync-handler.js +107 -58
- 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/system-context-graph-policy.d.ts +10 -0
- package/dist/sync/system-context-graph-policy.d.ts.map +1 -1
- package/dist/sync/system-context-graph-policy.js +11 -0
- package/dist/sync/system-context-graph-policy.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-publish-snapshot-preflight.d.ts +13 -0
- package/dist/vm-publish-snapshot-preflight.d.ts.map +1 -0
- package/dist/vm-publish-snapshot-preflight.js +94 -0
- package/dist/vm-publish-snapshot-preflight.js.map +1 -0
- 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/dist/vm-refresh.d.ts +138 -0
- package/dist/vm-refresh.d.ts.map +1 -0
- package/dist/vm-refresh.js +201 -0
- package/dist/vm-refresh.js.map +1 -0
- package/package.json +19 -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,571 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* On-demand, bounded fetch of the `agents` phonebook for nodes that do not
|
|
4
|
+
* sync it on every connect (Edge nodes by default).
|
|
5
|
+
*
|
|
6
|
+
* VM exact recovery ranks a wallet-scoped Context Graph's holders through its
|
|
7
|
+
* curator tier: owner wallet -> `agents` profile -> peer id plus the relay or
|
|
8
|
+
* circuit addresses the profile advertises. An Edge keeps no durable copy of
|
|
9
|
+
* the phonebook by default (`resolveAutomaticSystemContextGraphSync`), so for
|
|
10
|
+
* a public graph whose only holder is the publisher's own Edge that tier is
|
|
11
|
+
* empty and recovery asks only the peers it already happens to be connected
|
|
12
|
+
* to. This module fetches the phonebook once, when a public graph actually
|
|
13
|
+
* needs it, instead of making every Edge sync it on every connect.
|
|
14
|
+
*
|
|
15
|
+
* Bounds, all per process:
|
|
16
|
+
* - at most one fetch in flight; concurrent requests join it;
|
|
17
|
+
* - one fetch tries at most `maxPeers` connected, network-admitted peers
|
|
18
|
+
* (known Cores first) inside one shared wall-clock budget;
|
|
19
|
+
* - a cooldown after every fetch that reached a peer, longer after one that
|
|
20
|
+
* obtained data than after one that failed;
|
|
21
|
+
* - a graph whose curator a complete Core phonebook did not contain stops
|
|
22
|
+
* asking for hours (live `agents` gossip still delivers later profiles);
|
|
23
|
+
* an empty or near-empty "complete" answer does not count as one;
|
|
24
|
+
* - finding no usable peer starts no cooldown, and its re-check is bounded.
|
|
25
|
+
*
|
|
26
|
+
* Only wallet-scoped (`0x<wallet>/<slug>`) graphs whose on-chain access policy
|
|
27
|
+
* is public can trigger a fetch: the phonebook feeds the curator tier only
|
|
28
|
+
* through the owner wallet, and curated graphs are never resolved through it.
|
|
29
|
+
*/
|
|
30
|
+
import { getMetrics, SYSTEM_CONTEXT_GRAPHS } from '@origintrail-official/dkg-core';
|
|
31
|
+
import { orderCoresFirst } from '../p2p/peer-selection.js';
|
|
32
|
+
import { parseBooleanEnv } from './agents-meta-policy.js';
|
|
33
|
+
import { resolveAutomaticSystemContextGraphSync, } from './system-context-graph-policy.js';
|
|
34
|
+
/**
|
|
35
|
+
* Whether this node may fetch the phonebook on demand.
|
|
36
|
+
*
|
|
37
|
+
* A node that already syncs the system graphs on every connect (Cores by
|
|
38
|
+
* default, or `DKG_SYNC_SYSTEM_CONTEXT_GRAPHS_ON_CONNECT=1`) has nothing to
|
|
39
|
+
* fetch. Otherwise the kill switch follows the same precedence as that flag:
|
|
40
|
+
* the environment wins over config, and the default is on.
|
|
41
|
+
*/
|
|
42
|
+
export function resolveOnDemandAgentsPhonebookFetch(options) {
|
|
43
|
+
if (resolveAutomaticSystemContextGraphSync(options))
|
|
44
|
+
return false;
|
|
45
|
+
const envValue = parseBooleanEnv(options.onDemandEnvValue);
|
|
46
|
+
if (envValue !== undefined)
|
|
47
|
+
return envValue;
|
|
48
|
+
return options.onDemandConfigValue ?? true;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Minimum spacing between fetches that obtained data. A full fetch is one
|
|
52
|
+
* durable sync of the whole `agents` graph (~75k triples, ~24 s from one Core
|
|
53
|
+
* on Base mainnet in September 2026). Profiles are re-published every 20
|
|
54
|
+
* minutes and arrive over live `agents` gossip while the node is online, so a
|
|
55
|
+
* phonebook fetched less than 30 minutes ago is not meaningfully stale; this
|
|
56
|
+
* caps the worst case at two full fetches per hour per node.
|
|
57
|
+
*/
|
|
58
|
+
export const AGENTS_PHONEBOOK_FETCH_COOLDOWN_MS = 30 * 60_000;
|
|
59
|
+
/** Spacing after a fetch that reached peers but obtained nothing. */
|
|
60
|
+
export const AGENTS_PHONEBOOK_FETCH_FAILURE_COOLDOWN_MS = 10 * 60_000;
|
|
61
|
+
/** Wall-clock budget one fetch shares across every peer it tries. */
|
|
62
|
+
export const AGENTS_PHONEBOOK_FETCH_BUDGET_MS = 120_000;
|
|
63
|
+
/** Peers one fetch may transfer from. */
|
|
64
|
+
export const AGENTS_PHONEBOOK_FETCH_MAX_PEERS = 3;
|
|
65
|
+
/** Connected peers one fetch may examine (admission and protocol checks). */
|
|
66
|
+
export const AGENTS_PHONEBOOK_FETCH_MAX_CANDIDATES = 8;
|
|
67
|
+
/**
|
|
68
|
+
* How long a graph stops asking after a complete Core phonebook did not
|
|
69
|
+
* contain its curator. Fetching the same phonebook again cannot add a profile
|
|
70
|
+
* that live gossip has not already delivered.
|
|
71
|
+
*/
|
|
72
|
+
export const AGENTS_PHONEBOOK_CURATOR_MISS_SUPPRESSION_MS = 6 * 60 * 60_000;
|
|
73
|
+
/**
|
|
74
|
+
* Triples a known Core's complete answer must carry before it counts as the
|
|
75
|
+
* network's phonebook: before it ends the peer walk or earns a graph the
|
|
76
|
+
* miss suppression above. "Known Core" only means the peer advertises the
|
|
77
|
+
* storage-ACK protocol, and a just-started Core, one with a reset store, or
|
|
78
|
+
* one that does not sync `agents` answers a full scan as complete with no
|
|
79
|
+
* rows, or with little more than its own profile. Base mainnet's phonebook
|
|
80
|
+
* was 75,141 triples (about 39 per profile), so this is roughly 25 profiles.
|
|
81
|
+
*/
|
|
82
|
+
export const AGENTS_PHONEBOOK_MIN_NETWORK_TRIPLES = 1_000;
|
|
83
|
+
/** Re-check cadence while wanted graphs wait for a first usable peer. */
|
|
84
|
+
export const AGENTS_PHONEBOOK_NO_PEER_RETRY_MS = 30_000;
|
|
85
|
+
/** No-peer re-checks one wait may use before waiting for the next trigger. */
|
|
86
|
+
export const AGENTS_PHONEBOOK_NO_PEER_MAX_RETRIES = 20;
|
|
87
|
+
/** Reuse window for an on-chain access-policy answer. */
|
|
88
|
+
export const AGENTS_PHONEBOOK_POLICY_VERDICT_TTL_MS = 30 * 60_000;
|
|
89
|
+
/** Bound for every per-graph map this module keeps. */
|
|
90
|
+
export const AGENTS_PHONEBOOK_STATE_MAX_ENTRIES = 1_024;
|
|
91
|
+
/**
|
|
92
|
+
* New dials one catch-up connection-priming walk may attempt on a node in
|
|
93
|
+
* on-demand mode. Such a node ends up holding every relay-advertising profile
|
|
94
|
+
* (1,910 on Base mainnet in September 2026), and the unbounded walk dialled
|
|
95
|
+
* 150-500 relay circuits per minute there, against about 6 per minute on an
|
|
96
|
+
* Edge without the phonebook. Catch-up peers still come from admitted
|
|
97
|
+
* connections and the curator tier.
|
|
98
|
+
*/
|
|
99
|
+
export const AGENTS_PHONEBOOK_PRIME_MAX_DIALS = 8;
|
|
100
|
+
const SYSTEM_CONTEXT_GRAPH_IDS = new Set(Object.values(SYSTEM_CONTEXT_GRAPHS));
|
|
101
|
+
function shortPeerId(peerId) {
|
|
102
|
+
return peerId.slice(-8);
|
|
103
|
+
}
|
|
104
|
+
function errorMessage(error) {
|
|
105
|
+
return error instanceof Error ? error.message : String(error);
|
|
106
|
+
}
|
|
107
|
+
/** Wait for `promise`, or stop waiting (without rejecting) once `signal` aborts. */
|
|
108
|
+
async function waitUnlessAborted(promise, signal) {
|
|
109
|
+
if (signal === undefined) {
|
|
110
|
+
await promise.catch(() => undefined);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (signal.aborted)
|
|
114
|
+
return;
|
|
115
|
+
await new Promise((resolve) => {
|
|
116
|
+
const done = () => resolve();
|
|
117
|
+
signal.addEventListener('abort', done, { once: true });
|
|
118
|
+
promise.then(done, done).finally(() => signal.removeEventListener('abort', done));
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
function setBounded(map, key, value, maxEntries) {
|
|
122
|
+
map.delete(key);
|
|
123
|
+
map.set(key, value);
|
|
124
|
+
while (map.size > maxEntries) {
|
|
125
|
+
const oldest = map.keys().next().value;
|
|
126
|
+
if (oldest === undefined)
|
|
127
|
+
break;
|
|
128
|
+
map.delete(oldest);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/** Process-local owner of on-demand phonebook fetches. */
|
|
132
|
+
export class OnDemandAgentsPhonebookFetcher {
|
|
133
|
+
#deps;
|
|
134
|
+
#now;
|
|
135
|
+
#cooldownMs;
|
|
136
|
+
#failureCooldownMs;
|
|
137
|
+
#budgetMs;
|
|
138
|
+
#maxPeers;
|
|
139
|
+
#maxCandidates;
|
|
140
|
+
#curatorMissSuppressionMs;
|
|
141
|
+
#minNetworkTriples;
|
|
142
|
+
#noPeerRetryMs;
|
|
143
|
+
#noPeerMaxRetries;
|
|
144
|
+
#policyVerdictTtlMs;
|
|
145
|
+
#maxStateEntries;
|
|
146
|
+
#closed = false;
|
|
147
|
+
#lifetime = new AbortController();
|
|
148
|
+
#inFlight;
|
|
149
|
+
#nextEligibleAt = 0;
|
|
150
|
+
/** Graph -> first trigger that wanted it; drained by the next fetch. */
|
|
151
|
+
#wants = new Map();
|
|
152
|
+
/** Lower-cased wallets a waiting share needs; drained by the next fetch. */
|
|
153
|
+
#wantedWallets = new Set();
|
|
154
|
+
#evaluating = new Set();
|
|
155
|
+
#evaluations = new Set();
|
|
156
|
+
#curatorMissUntil = new Map();
|
|
157
|
+
#policyVerdicts = new Map();
|
|
158
|
+
#recheckTimer;
|
|
159
|
+
#rechecks = 0;
|
|
160
|
+
constructor(deps, options = {}) {
|
|
161
|
+
this.#deps = deps;
|
|
162
|
+
this.#now = options.now ?? Date.now;
|
|
163
|
+
this.#cooldownMs = options.cooldownMs ?? AGENTS_PHONEBOOK_FETCH_COOLDOWN_MS;
|
|
164
|
+
this.#failureCooldownMs = options.failureCooldownMs ?? AGENTS_PHONEBOOK_FETCH_FAILURE_COOLDOWN_MS;
|
|
165
|
+
this.#budgetMs = options.budgetMs ?? AGENTS_PHONEBOOK_FETCH_BUDGET_MS;
|
|
166
|
+
this.#maxPeers = options.maxPeers ?? AGENTS_PHONEBOOK_FETCH_MAX_PEERS;
|
|
167
|
+
this.#maxCandidates = options.maxCandidates ?? AGENTS_PHONEBOOK_FETCH_MAX_CANDIDATES;
|
|
168
|
+
this.#curatorMissSuppressionMs = options.curatorMissSuppressionMs
|
|
169
|
+
?? AGENTS_PHONEBOOK_CURATOR_MISS_SUPPRESSION_MS;
|
|
170
|
+
this.#minNetworkTriples = options.minNetworkTriples ?? AGENTS_PHONEBOOK_MIN_NETWORK_TRIPLES;
|
|
171
|
+
this.#noPeerRetryMs = options.noPeerRetryMs ?? AGENTS_PHONEBOOK_NO_PEER_RETRY_MS;
|
|
172
|
+
this.#noPeerMaxRetries = options.noPeerMaxRetries ?? AGENTS_PHONEBOOK_NO_PEER_MAX_RETRIES;
|
|
173
|
+
this.#policyVerdictTtlMs = options.policyVerdictTtlMs ?? AGENTS_PHONEBOOK_POLICY_VERDICT_TTL_MS;
|
|
174
|
+
this.#maxStateEntries = options.maxStateEntries ?? AGENTS_PHONEBOOK_STATE_MAX_ENTRIES;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Ask for the phonebook on behalf of one graph. Synchronous, O(1) and never
|
|
178
|
+
* throws: the subscribe path calls it. Everything that reads the store, the
|
|
179
|
+
* chain or the network runs detached.
|
|
180
|
+
*/
|
|
181
|
+
request(contextGraphId, trigger) {
|
|
182
|
+
try {
|
|
183
|
+
if (this.#closed || SYSTEM_CONTEXT_GRAPH_IDS.has(contextGraphId))
|
|
184
|
+
return;
|
|
185
|
+
if (!this.#deps.isEnabled())
|
|
186
|
+
return;
|
|
187
|
+
const wallet = this.#deps.remoteCuratorWallet(contextGraphId);
|
|
188
|
+
if (wallet === null)
|
|
189
|
+
return;
|
|
190
|
+
const now = this.#now();
|
|
191
|
+
if ((this.#curatorMissUntil.get(contextGraphId) ?? 0) > now)
|
|
192
|
+
return;
|
|
193
|
+
if (this.#wants.has(contextGraphId) || this.#evaluating.has(contextGraphId))
|
|
194
|
+
return;
|
|
195
|
+
// An in-flight fetch still adopts a graph that qualifies; a cooling-down
|
|
196
|
+
// one does not, and the graph's next reconcile pass asks again later.
|
|
197
|
+
if (this.#inFlight === undefined && now < this.#nextEligibleAt)
|
|
198
|
+
return;
|
|
199
|
+
this.#evaluating.add(contextGraphId);
|
|
200
|
+
// Start on a later turn, so a caller's synchronous path (subscribe, a
|
|
201
|
+
// VM recovery pass) does no store or chain work here.
|
|
202
|
+
const evaluation = Promise.resolve()
|
|
203
|
+
.then(() => this.#evaluate(contextGraphId, wallet, trigger))
|
|
204
|
+
.catch((error) => {
|
|
205
|
+
this.#deps.logDebug(`On-demand agents phonebook check for "${contextGraphId}" failed: ${errorMessage(error)}`);
|
|
206
|
+
})
|
|
207
|
+
.finally(() => {
|
|
208
|
+
this.#evaluating.delete(contextGraphId);
|
|
209
|
+
this.#evaluations.delete(evaluation);
|
|
210
|
+
});
|
|
211
|
+
this.#evaluations.add(evaluation);
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
// The trigger is advisory; a broken dependency must never fail its caller.
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Fetch the phonebook for agents a private share needs keys for (#2849), and
|
|
219
|
+
* wait for that fetch. Resolves with the lower-cased wallets whose key the
|
|
220
|
+
* local store holds afterwards. A disabled, closed or cooling-down fetcher
|
|
221
|
+
* fetches nothing and only reports, so the cost stays within the existing
|
|
222
|
+
* cooldowns. The share is judged on the keys it then finds, never on this
|
|
223
|
+
* answer alone. Never throws; aborting `signal` stops the wait, not a fetch
|
|
224
|
+
* other callers share.
|
|
225
|
+
*/
|
|
226
|
+
async ensureWallets(wallets, signal) {
|
|
227
|
+
const wanted = [...new Set(wallets.map((wallet) => wallet.toLowerCase()))];
|
|
228
|
+
const known = new Set();
|
|
229
|
+
const refresh = async () => {
|
|
230
|
+
for (const wallet of wanted) {
|
|
231
|
+
if (known.has(wallet))
|
|
232
|
+
continue;
|
|
233
|
+
const present = await this.#deps
|
|
234
|
+
.recipientKeyKnown(wallet, signal ?? this.#lifetime.signal)
|
|
235
|
+
.catch(() => false);
|
|
236
|
+
if (present)
|
|
237
|
+
known.add(wallet);
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
try {
|
|
241
|
+
await refresh();
|
|
242
|
+
if (known.size === wanted.length || this.#closed || !this.#deps.isEnabled())
|
|
243
|
+
return known;
|
|
244
|
+
for (const wallet of wanted) {
|
|
245
|
+
if (known.has(wallet))
|
|
246
|
+
continue;
|
|
247
|
+
this.#wantedWallets.add(wallet);
|
|
248
|
+
while (this.#wantedWallets.size > this.#maxStateEntries) {
|
|
249
|
+
const oldest = this.#wantedWallets.values().next().value;
|
|
250
|
+
if (oldest === undefined)
|
|
251
|
+
break;
|
|
252
|
+
this.#wantedWallets.delete(oldest);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
this.#maybeStart();
|
|
256
|
+
const inFlight = this.#inFlight;
|
|
257
|
+
if (inFlight !== undefined)
|
|
258
|
+
await waitUnlessAborted(inFlight, signal);
|
|
259
|
+
await refresh();
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
// Advisory: the caller resolves keys and fails closed on its own.
|
|
263
|
+
}
|
|
264
|
+
return known;
|
|
265
|
+
}
|
|
266
|
+
/** Resolves once no evaluation or fetch started before this call is running. */
|
|
267
|
+
async whenIdle() {
|
|
268
|
+
while (this.#evaluations.size > 0 || this.#inFlight !== undefined) {
|
|
269
|
+
await Promise.allSettled([...this.#evaluations, this.#inFlight]);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/** Abort the in-flight fetch and the no-peer re-check; resolves once idle. */
|
|
273
|
+
close() {
|
|
274
|
+
this.#closed = true;
|
|
275
|
+
this.#lifetime.abort(new DOMException('On-demand agents phonebook closed', 'AbortError'));
|
|
276
|
+
this.#clearRecheck();
|
|
277
|
+
this.#wants.clear();
|
|
278
|
+
this.#wantedWallets.clear();
|
|
279
|
+
return this.whenIdle();
|
|
280
|
+
}
|
|
281
|
+
/** Admit requests again after a restart. Cooldowns and suppressions survive. */
|
|
282
|
+
reopen() {
|
|
283
|
+
if (!this.#closed)
|
|
284
|
+
return;
|
|
285
|
+
this.#closed = false;
|
|
286
|
+
this.#lifetime = new AbortController();
|
|
287
|
+
this.#rechecks = 0;
|
|
288
|
+
}
|
|
289
|
+
async #evaluate(contextGraphId, wallet, trigger) {
|
|
290
|
+
const signal = this.#lifetime.signal;
|
|
291
|
+
if (!this.#deps.isActiveSubscription(contextGraphId))
|
|
292
|
+
return;
|
|
293
|
+
if (await this.#deps.phonebookHasWallet(wallet, signal))
|
|
294
|
+
return;
|
|
295
|
+
if (this.#closed)
|
|
296
|
+
return;
|
|
297
|
+
if (!(await this.#isPublic(contextGraphId, signal)))
|
|
298
|
+
return;
|
|
299
|
+
if (this.#closed || !this.#deps.isActiveSubscription(contextGraphId))
|
|
300
|
+
return;
|
|
301
|
+
if (!this.#wants.has(contextGraphId)) {
|
|
302
|
+
// The first wanted graph starts a new wait: it gets the whole no-peer
|
|
303
|
+
// re-check budget, whatever an earlier wait spent.
|
|
304
|
+
if (this.#wants.size === 0)
|
|
305
|
+
this.#rechecks = 0;
|
|
306
|
+
setBounded(this.#wants, contextGraphId, trigger, this.#maxStateEntries);
|
|
307
|
+
}
|
|
308
|
+
this.#maybeStart();
|
|
309
|
+
}
|
|
310
|
+
async #isPublic(contextGraphId, signal) {
|
|
311
|
+
const now = this.#now();
|
|
312
|
+
const cached = this.#policyVerdicts.get(contextGraphId);
|
|
313
|
+
if (cached !== undefined && cached.expiresAt > now)
|
|
314
|
+
return cached.publicPolicy;
|
|
315
|
+
const policy = await this.#deps.readAccessPolicy(contextGraphId, signal);
|
|
316
|
+
// An unanswered read is not a verdict: the next trigger reads again.
|
|
317
|
+
if (policy === 'unknown')
|
|
318
|
+
return false;
|
|
319
|
+
const publicPolicy = policy === 'public';
|
|
320
|
+
setBounded(this.#policyVerdicts, contextGraphId, { publicPolicy, expiresAt: now + this.#policyVerdictTtlMs }, this.#maxStateEntries);
|
|
321
|
+
return publicPolicy;
|
|
322
|
+
}
|
|
323
|
+
#maybeStart() {
|
|
324
|
+
if (this.#closed
|
|
325
|
+
|| this.#inFlight !== undefined
|
|
326
|
+
|| (this.#wants.size === 0 && this.#wantedWallets.size === 0))
|
|
327
|
+
return;
|
|
328
|
+
if (this.#now() < this.#nextEligibleAt) {
|
|
329
|
+
this.#wants.clear();
|
|
330
|
+
this.#wantedWallets.clear();
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
333
|
+
this.#clearRecheck();
|
|
334
|
+
const fetch = this.#fetch()
|
|
335
|
+
.catch((error) => {
|
|
336
|
+
this.#deps.logDebug(`On-demand agents phonebook fetch stopped: ${errorMessage(error)}`);
|
|
337
|
+
})
|
|
338
|
+
.finally(() => {
|
|
339
|
+
if (this.#inFlight === fetch)
|
|
340
|
+
this.#inFlight = undefined;
|
|
341
|
+
// A share that asked late already has its answer and retries itself.
|
|
342
|
+
this.#wantedWallets.clear();
|
|
343
|
+
if (this.#closed || this.#wants.size === 0)
|
|
344
|
+
return;
|
|
345
|
+
// A graph that qualified after this fetch read its wanted list must
|
|
346
|
+
// not stay parked there. Inside the cooldown it is dropped and asks
|
|
347
|
+
// again on its next trigger; otherwise a bounded re-check picks it up.
|
|
348
|
+
if (this.#now() < this.#nextEligibleAt)
|
|
349
|
+
this.#wants.clear();
|
|
350
|
+
else
|
|
351
|
+
this.#scheduleRecheck();
|
|
352
|
+
});
|
|
353
|
+
this.#inFlight = fetch;
|
|
354
|
+
}
|
|
355
|
+
async #fetch() {
|
|
356
|
+
const lifetime = this.#lifetime.signal;
|
|
357
|
+
const startedAt = this.#now();
|
|
358
|
+
const trigger = this.#wants.values().next().value
|
|
359
|
+
?? (this.#wantedWallets.size > 0 ? 'share-recipient' : 'vm-reconcile');
|
|
360
|
+
const candidates = orderCoresFirst(this.#deps.listConnectedPeers(), (peer) => peer.core)
|
|
361
|
+
.slice(0, this.#maxCandidates);
|
|
362
|
+
const budget = new AbortController();
|
|
363
|
+
const abortBudget = () => budget.abort(lifetime.reason);
|
|
364
|
+
lifetime.addEventListener('abort', abortBudget, { once: true });
|
|
365
|
+
const budgetTimer = setTimeout(() => {
|
|
366
|
+
budget.abort(new DOMException('On-demand agents phonebook budget exhausted', 'TimeoutError'));
|
|
367
|
+
}, this.#budgetMs);
|
|
368
|
+
budgetTimer.unref?.();
|
|
369
|
+
const peerSummaries = [];
|
|
370
|
+
let attemptedPeers = 0;
|
|
371
|
+
let fetchedTriples = 0;
|
|
372
|
+
let insertedTriples = 0;
|
|
373
|
+
let answeredEmpty = false;
|
|
374
|
+
// A known Core's complete answer that carried a real phonebook. Only this
|
|
375
|
+
// ends the walk early or suppresses a graph whose owner it lacks.
|
|
376
|
+
let networkPhonebook = false;
|
|
377
|
+
try {
|
|
378
|
+
for (const { peerId, core } of candidates) {
|
|
379
|
+
if (attemptedPeers >= this.#maxPeers || budget.signal.aborted)
|
|
380
|
+
break;
|
|
381
|
+
let ready = false;
|
|
382
|
+
try {
|
|
383
|
+
ready = await this.#deps.preparePeer(peerId, budget.signal);
|
|
384
|
+
}
|
|
385
|
+
catch {
|
|
386
|
+
ready = false;
|
|
387
|
+
}
|
|
388
|
+
if (budget.signal.aborted)
|
|
389
|
+
break;
|
|
390
|
+
if (!ready)
|
|
391
|
+
continue;
|
|
392
|
+
const remainingMs = startedAt + this.#budgetMs - this.#now();
|
|
393
|
+
if (remainingMs <= 0)
|
|
394
|
+
break;
|
|
395
|
+
attemptedPeers += 1;
|
|
396
|
+
const role = core ? 'core' : 'peer';
|
|
397
|
+
try {
|
|
398
|
+
const result = await this.#deps.syncAgentsFromPeer(peerId, {
|
|
399
|
+
signal: budget.signal,
|
|
400
|
+
totalTimeoutMs: remainingMs,
|
|
401
|
+
});
|
|
402
|
+
fetchedTriples += result.fetchedTriples;
|
|
403
|
+
insertedTriples += result.insertedTriples;
|
|
404
|
+
if (result.fetchedTriples === 0)
|
|
405
|
+
answeredEmpty = true;
|
|
406
|
+
if (core && result.complete && result.fetchedTriples >= this.#minNetworkTriples) {
|
|
407
|
+
networkPhonebook = true;
|
|
408
|
+
}
|
|
409
|
+
peerSummaries.push(`${shortPeerId(peerId)}:${role}:${result.complete ? 'complete' : 'partial'}:${result.fetchedTriples}`);
|
|
410
|
+
}
|
|
411
|
+
catch (error) {
|
|
412
|
+
peerSummaries.push(`${shortPeerId(peerId)}:${role}:failed`);
|
|
413
|
+
this.#deps.logDebug(`On-demand agents phonebook sync from ${shortPeerId(peerId)} failed: ${errorMessage(error)}`);
|
|
414
|
+
}
|
|
415
|
+
// A complete Core phonebook is the network's phonebook; another Core
|
|
416
|
+
// would send the same rows. An empty or near-empty "complete" answer
|
|
417
|
+
// is not. Also stop once every wanted curator is in.
|
|
418
|
+
if (networkPhonebook || budget.signal.aborted)
|
|
419
|
+
break;
|
|
420
|
+
if ((await this.#unresolvedWants(budget.signal)).length === 0
|
|
421
|
+
&& (await this.#unresolvedWallets(budget.signal)).length === 0)
|
|
422
|
+
break;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
finally {
|
|
426
|
+
clearTimeout(budgetTimer);
|
|
427
|
+
lifetime.removeEventListener('abort', abortBudget);
|
|
428
|
+
}
|
|
429
|
+
if (lifetime.aborted)
|
|
430
|
+
return;
|
|
431
|
+
if (attemptedPeers === 0) {
|
|
432
|
+
// Nothing was asked of any peer: keep the wanted graphs and re-check
|
|
433
|
+
// soon, without starting a cooldown. A waiting share has its answer
|
|
434
|
+
// already and asks again on its next attempt.
|
|
435
|
+
this.#wantedWallets.clear();
|
|
436
|
+
this.#recordMetrics(trigger, 'no-peers', false, this.#now() - startedAt);
|
|
437
|
+
this.#deps.logDebug(`On-demand agents phonebook fetch deferred: no usable connected peer `
|
|
438
|
+
+ `(trigger=${trigger} candidates=${candidates.length} wanted=${this.#wants.size})`);
|
|
439
|
+
this.#scheduleRecheck();
|
|
440
|
+
return;
|
|
441
|
+
}
|
|
442
|
+
// Graphs that asked while this fetch ran are served by the same phonebook.
|
|
443
|
+
const wanted = [...this.#wants.keys()];
|
|
444
|
+
this.#wants.clear();
|
|
445
|
+
const wantedWallets = [...this.#wantedWallets];
|
|
446
|
+
this.#wantedWallets.clear();
|
|
447
|
+
const unresolved = new Set(await this.#unresolvedWantsOf(wanted, lifetime));
|
|
448
|
+
const unresolvedWallets = await this.#unresolvedWalletsOf(wantedWallets, lifetime);
|
|
449
|
+
// Closed (stop()) while checking: a closed fetcher reports nothing, meters
|
|
450
|
+
// nothing and schedules no recovery for a host that is shutting down.
|
|
451
|
+
if (lifetime.aborted)
|
|
452
|
+
return;
|
|
453
|
+
const resolved = wanted.filter((contextGraphId) => !unresolved.has(contextGraphId));
|
|
454
|
+
const now = this.#now();
|
|
455
|
+
// `empty`: peers answered but served no rows (a just-started or lean Core);
|
|
456
|
+
// like `failed`, it keeps the short cooldown so another peer is asked soon.
|
|
457
|
+
const outcome = networkPhonebook
|
|
458
|
+
|| (fetchedTriples > 0 && unresolved.size === 0 && unresolvedWallets.length === 0)
|
|
459
|
+
? 'complete'
|
|
460
|
+
: fetchedTriples > 0 ? 'partial' : answeredEmpty ? 'empty' : 'failed';
|
|
461
|
+
this.#nextEligibleAt = now + (outcome === 'failed' || outcome === 'empty'
|
|
462
|
+
? this.#failureCooldownMs
|
|
463
|
+
: this.#cooldownMs);
|
|
464
|
+
if (networkPhonebook) {
|
|
465
|
+
for (const contextGraphId of unresolved) {
|
|
466
|
+
setBounded(this.#curatorMissUntil, contextGraphId, now + this.#curatorMissSuppressionMs, this.#maxStateEntries);
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
const durationMs = now - startedAt;
|
|
470
|
+
this.#recordMetrics(trigger, outcome, resolved.length > 0, durationMs);
|
|
471
|
+
const firstWanted = wanted[0] ?? 'none';
|
|
472
|
+
this.#deps.logInfo(`On-demand agents phonebook fetch: trigger=${trigger} `
|
|
473
|
+
+ `graph=${firstWanted}${wanted.length > 1 ? ` (+${wanted.length - 1})` : ''} `
|
|
474
|
+
+ `peers=[${peerSummaries.join(' ')}] fetched=${fetchedTriples} inserted=${insertedTriples} `
|
|
475
|
+
+ `durationMs=${durationMs} `
|
|
476
|
+
+ `curatorResolved=${resolved.length}/${wanted.length} outcome=${outcome} `
|
|
477
|
+
+ `nextFetchInMs=${this.#nextEligibleAt - now}`
|
|
478
|
+
+ (wantedWallets.length > 0
|
|
479
|
+
? ` recipientsResolved=${wantedWallets.length - unresolvedWallets.length}/${wantedWallets.length}`
|
|
480
|
+
: ''));
|
|
481
|
+
if (resolved.length > 0)
|
|
482
|
+
this.#deps.onCuratorsResolved(resolved);
|
|
483
|
+
}
|
|
484
|
+
async #unresolvedWallets(signal) {
|
|
485
|
+
return this.#unresolvedWalletsOf([...this.#wantedWallets], signal);
|
|
486
|
+
}
|
|
487
|
+
async #unresolvedWalletsOf(wallets, signal) {
|
|
488
|
+
const unresolved = [];
|
|
489
|
+
for (const wallet of wallets) {
|
|
490
|
+
const known = await this.#deps.recipientKeyKnown(wallet, signal).catch(() => false);
|
|
491
|
+
if (!known)
|
|
492
|
+
unresolved.push(wallet);
|
|
493
|
+
}
|
|
494
|
+
return unresolved;
|
|
495
|
+
}
|
|
496
|
+
async #unresolvedWants(signal) {
|
|
497
|
+
return this.#unresolvedWantsOf([...this.#wants.keys()], signal);
|
|
498
|
+
}
|
|
499
|
+
async #unresolvedWantsOf(contextGraphIds, signal) {
|
|
500
|
+
const unresolved = [];
|
|
501
|
+
for (const contextGraphId of contextGraphIds) {
|
|
502
|
+
const wallet = this.#deps.remoteCuratorWallet(contextGraphId);
|
|
503
|
+
if (wallet === null)
|
|
504
|
+
continue;
|
|
505
|
+
const known = await this.#deps.phonebookHasWallet(wallet, signal).catch(() => false);
|
|
506
|
+
if (!known)
|
|
507
|
+
unresolved.push(contextGraphId);
|
|
508
|
+
}
|
|
509
|
+
return unresolved;
|
|
510
|
+
}
|
|
511
|
+
/** Re-check the wanted graphs later; bounded, and a no-op while one is armed. */
|
|
512
|
+
#scheduleRecheck() {
|
|
513
|
+
if (this.#closed || this.#recheckTimer !== undefined)
|
|
514
|
+
return;
|
|
515
|
+
if (this.#rechecks >= this.#noPeerMaxRetries) {
|
|
516
|
+
// Stop polling; the next subscribe or reconcile pass asks again.
|
|
517
|
+
this.#wants.clear();
|
|
518
|
+
return;
|
|
519
|
+
}
|
|
520
|
+
this.#rechecks += 1;
|
|
521
|
+
const timer = setTimeout(() => {
|
|
522
|
+
if (this.#recheckTimer === timer)
|
|
523
|
+
this.#recheckTimer = undefined;
|
|
524
|
+
this.#maybeStart();
|
|
525
|
+
}, this.#noPeerRetryMs);
|
|
526
|
+
timer.unref?.();
|
|
527
|
+
this.#recheckTimer = timer;
|
|
528
|
+
}
|
|
529
|
+
#clearRecheck() {
|
|
530
|
+
if (this.#recheckTimer === undefined)
|
|
531
|
+
return;
|
|
532
|
+
clearTimeout(this.#recheckTimer);
|
|
533
|
+
this.#recheckTimer = undefined;
|
|
534
|
+
}
|
|
535
|
+
#recordMetrics(trigger, outcome, curatorResolved, durationMs) {
|
|
536
|
+
try {
|
|
537
|
+
const metrics = getMetrics();
|
|
538
|
+
metrics.agentsPhonebookFetchTotal.add(1, {
|
|
539
|
+
trigger,
|
|
540
|
+
outcome,
|
|
541
|
+
curator_resolved: curatorResolved ? 'true' : 'false',
|
|
542
|
+
});
|
|
543
|
+
if (outcome !== 'no-peers') {
|
|
544
|
+
metrics.agentsPhonebookFetchDurationMs.record(durationMs, { trigger, outcome });
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
catch {
|
|
548
|
+
// Telemetry never changes fetch behaviour.
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* One fetcher per agent-like host, created on first use. Keyed by host
|
|
554
|
+
* identity rather than stored on the class, so prototype-bound test hosts own
|
|
555
|
+
* one exactly as a constructed agent does (the same pattern as the finalized
|
|
556
|
+
* authority cold-resolution runtime).
|
|
557
|
+
*/
|
|
558
|
+
const fetchersByHost = new WeakMap();
|
|
559
|
+
export function onDemandAgentsPhonebookFor(host, create) {
|
|
560
|
+
let fetcher = fetchersByHost.get(host);
|
|
561
|
+
if (fetcher === undefined) {
|
|
562
|
+
fetcher = create();
|
|
563
|
+
fetchersByHost.set(host, fetcher);
|
|
564
|
+
}
|
|
565
|
+
return fetcher;
|
|
566
|
+
}
|
|
567
|
+
/** The host's fetcher if one was ever created; lifecycle hooks never create one. */
|
|
568
|
+
export function peekOnDemandAgentsPhonebook(host) {
|
|
569
|
+
return fetchersByHost.get(host);
|
|
570
|
+
}
|
|
571
|
+
//# sourceMappingURL=on-demand-agents-phonebook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-demand-agents-phonebook.js","sourceRoot":"","sources":["../../src/sync/on-demand-agents-phonebook.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-connection.d.ts","sourceRoot":"","sources":["../../src/sync/peer-connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"peer-connection.d.ts","sourceRoot":"","sources":["../../src/sync/peer-connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iFAAiF;IACjF,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;QACjD,KAAK,IAAI,IAAI,CAAC;QACd,MAAM,IAAI,IAAI,CAAC;KAChB,CAAC,GAAG,IAAI,CAAC;IACV,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjG,eAAe,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClF,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;CACzF;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,uBAAuB,CAAC;IAC/B,OAAO,EAAE,eAAe,CAAC;IACzB,GAAG,EAAE,gBAAgB,CAAC;IACtB,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CACpC;AAED,qFAAqF;AACrF,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,yBAAyB,EAClC,UAAU,EAAE,kBAAkB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA0Ef"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NetworkAdmissionProbeError } from '../p2p/network-admission-coordinator.js';
|
|
1
2
|
/** Connection policy belongs to sync; the generic lifetime owns only supervision. */
|
|
2
3
|
export async function syncOpenedPeerConnection(context, connection) {
|
|
3
4
|
const { ports, session, ctx, log } = context;
|
|
@@ -22,8 +23,16 @@ export async function syncOpenedPeerConnection(context, connection) {
|
|
|
22
23
|
}
|
|
23
24
|
catch (err) {
|
|
24
25
|
signal.throwIfAborted();
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
// The coordinator logs a failed probe itself, once, with the reason and
|
|
27
|
+
// the backoff it starts (see NetworkAdmissionProbeError). Logging the
|
|
28
|
+
// error again here ran once per connection callback, including every
|
|
29
|
+
// reconnect skipped inside that backoff, which made this the hottest
|
|
30
|
+
// network-churn warning (GH#1578). Any other failure has no owner that
|
|
31
|
+
// reports it, so it is still logged here.
|
|
32
|
+
if (!(err instanceof NetworkAdmissionProbeError)) {
|
|
33
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
34
|
+
log.warn(ctx, `Network admission probe failed for ${remotePeer.slice(-8)} on connect: ${message}`);
|
|
35
|
+
}
|
|
27
36
|
rejectCatalogReplay();
|
|
28
37
|
return;
|
|
29
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-connection.js","sourceRoot":"","sources":["../../src/sync/peer-connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"peer-connection.js","sourceRoot":"","sources":["../../src/sync/peer-connection.ts"],"names":[],"mappings":"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"}
|