@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,53 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { estimateVmRecoveryAssetBytes, planVmRecoveryMicrobatch, } from './vm-recovery-microbatch.js';
|
|
3
|
+
export const VM_RECOVERY_STREAM_MAX_ASSET_ESTIMATED_BYTES = 8n * 1024n * 1024n;
|
|
4
|
+
export const VM_RECOVERY_STREAM_MAX_ASSET_LEAVES = 16384n;
|
|
5
|
+
/** The executor still checks the actual encoded, signed START request. */
|
|
6
|
+
export const VM_RECOVERY_STREAM_MAX_START_BYTES = 8 * 1024;
|
|
7
|
+
/** Fixed pilot profile; ordinary recovery configuration cannot widen it. */
|
|
8
|
+
export const VM_RECOVERY_STREAM_MICROBATCH_LIMITS = Object.freeze({
|
|
9
|
+
maxAssets: 10,
|
|
10
|
+
targetBytes: 80n * 1024n * 1024n,
|
|
11
|
+
targetLeaves: 163840n,
|
|
12
|
+
fixedBytesPerAsset: 64n * 1024n,
|
|
13
|
+
bytesPerLeafOverhead: 128n,
|
|
14
|
+
byteSizeMultiplierBps: 11500n,
|
|
15
|
+
// Reserve half of START for request fields, authentication and encoding.
|
|
16
|
+
maxSelectorBytes: VM_RECOVERY_STREAM_MAX_START_BYTES / 2,
|
|
17
|
+
});
|
|
18
|
+
function isStreamSizedTarget(candidate) {
|
|
19
|
+
const footprint = candidate.recoveryFootprint;
|
|
20
|
+
if (footprint?.kind !== 'public-v10')
|
|
21
|
+
return false;
|
|
22
|
+
const { byteSize, merkleLeafCount } = footprint;
|
|
23
|
+
if (typeof byteSize !== 'bigint'
|
|
24
|
+
|| typeof merkleLeafCount !== 'bigint'
|
|
25
|
+
|| byteSize <= 0n
|
|
26
|
+
|| merkleLeafCount <= 0n
|
|
27
|
+
|| byteSize > VM_RECOVERY_STREAM_MAX_ASSET_ESTIMATED_BYTES
|
|
28
|
+
|| merkleLeafCount > VM_RECOVERY_STREAM_MAX_ASSET_LEAVES)
|
|
29
|
+
return false;
|
|
30
|
+
const estimatedBytes = estimateVmRecoveryAssetBytes(byteSize, merkleLeafCount, VM_RECOVERY_STREAM_MICROBATCH_LIMITS);
|
|
31
|
+
return estimatedBytes <= VM_RECOVERY_STREAM_MAX_ASSET_ESTIMATED_BYTES;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Select only a stable prefix with complete, nonzero public-v10 sizing hints.
|
|
35
|
+
* Unknown or oversize work stays on the existing legacy singleton path; it
|
|
36
|
+
* must never be skipped to stream a later asset. The caller separately proves
|
|
37
|
+
* opt-in, current Core capability and public authority. This is sizing only.
|
|
38
|
+
*/
|
|
39
|
+
export function planVmRecoveryStreamMicrobatch(candidates, selectorBytesFor) {
|
|
40
|
+
const eligible = [];
|
|
41
|
+
for (const candidate of candidates) {
|
|
42
|
+
if (eligible.length >= VM_RECOVERY_STREAM_MICROBATCH_LIMITS.maxAssets)
|
|
43
|
+
break;
|
|
44
|
+
if (!isStreamSizedTarget(candidate))
|
|
45
|
+
break;
|
|
46
|
+
eligible.push(candidate);
|
|
47
|
+
}
|
|
48
|
+
if (eligible.length === 0)
|
|
49
|
+
return undefined;
|
|
50
|
+
const plan = planVmRecoveryMicrobatch(eligible, VM_RECOVERY_STREAM_MICROBATCH_LIMITS, selectorBytesFor);
|
|
51
|
+
return plan.targets.length > 0 ? plan : undefined;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=vm-recovery-stream-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-recovery-stream-profile.js","sourceRoot":"","sources":["../src/vm-recovery-stream-profile.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,GAIzB,MAAM,6BAA6B,CAAC;AAErC,MAAM,CAAC,MAAM,4CAA4C,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC;AAC/E,MAAM,CAAC,MAAM,mCAAmC,GAAG,MAAO,CAAC;AAC3D,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,GAAG,IAAI,CAAC;AAE3D,4EAA4E;AAC5E,MAAM,CAAC,MAAM,oCAAoC,GAAyC,MAAM,CAAC,MAAM,CAAC;IACtG,SAAS,EAAE,EAAE;IACb,WAAW,EAAE,GAAG,GAAG,KAAK,GAAG,KAAK;IAChC,YAAY,EAAE,OAAQ;IACtB,kBAAkB,EAAE,GAAG,GAAG,KAAK;IAC/B,oBAAoB,EAAE,IAAI;IAC1B,qBAAqB,EAAE,MAAO;IAC9B,yEAAyE;IACzE,gBAAgB,EAAE,kCAAkC,GAAG,CAAC;CACzD,CAAC,CAAC;AAEH,SAAS,mBAAmB,CAAC,SAAoC;IAC/D,MAAM,SAAS,GAAG,SAAS,CAAC,iBAAiB,CAAC;IAC9C,IAAI,SAAS,EAAE,IAAI,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IACnD,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC;IAChD,IACE,OAAO,QAAQ,KAAK,QAAQ;WACzB,OAAO,eAAe,KAAK,QAAQ;WACnC,QAAQ,IAAI,EAAE;WACd,eAAe,IAAI,EAAE;WACrB,QAAQ,GAAG,4CAA4C;WACvD,eAAe,GAAG,mCAAmC;QACxD,OAAO,KAAK,CAAC;IAEf,MAAM,cAAc,GAAG,4BAA4B,CACjD,QAAQ,EACR,eAAe,EACf,oCAAoC,CACrC,CAAC;IACF,OAAO,cAAc,IAAI,4CAA4C,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAC5C,UAAwB,EACxB,gBAAmD;IAEnD,MAAM,QAAQ,GAAQ,EAAE,CAAC;IACzB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,MAAM,IAAI,oCAAoC,CAAC,SAAS;YAAE,MAAM;QAC7E,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;YAAE,MAAM;QAC3C,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,IAAI,GAAG,wBAAwB,CACnC,QAAQ,EACR,oCAAoC,EACpC,gBAAgB,CACjB,CAAC;IACF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { ExactBatchStreamSetback } from './sync/requester/exact-recovery-transport.js';
|
|
2
|
+
export interface VmRecoveryStreamSetbackLimits {
|
|
3
|
+
/** How long a peer is left alone after a stream attempt that gave no verdict. */
|
|
4
|
+
readonly holdOffMs: number;
|
|
5
|
+
/**
|
|
6
|
+
* How long one run of such attempts may go on keeping targets' turns open.
|
|
7
|
+
* Past it the peer is rotated like any other until it completes an exchange.
|
|
8
|
+
*/
|
|
9
|
+
readonly streakWindowMs: number;
|
|
10
|
+
/** Broken streams in one run that keep the turn. Busy answers are not counted. */
|
|
11
|
+
readonly maxInterruptedInStreak: number;
|
|
12
|
+
readonly maxEntries: number;
|
|
13
|
+
}
|
|
14
|
+
export declare const VM_RECOVERY_STREAM_SETBACK_LIMITS: VmRecoveryStreamSetbackLimits;
|
|
15
|
+
export interface VmRecoveryStreamSetbackDecision {
|
|
16
|
+
/**
|
|
17
|
+
* The targets of the attempt keep their turn at this peer, and the peer is
|
|
18
|
+
* asked again once `holdOffMs` has passed. False rotates them as before.
|
|
19
|
+
*/
|
|
20
|
+
readonly keepsTurn: boolean;
|
|
21
|
+
readonly holdOffMs: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* What a stream attempt that ended without a verdict on the peer's data costs
|
|
25
|
+
* that peer in one graph's recovery.
|
|
26
|
+
*
|
|
27
|
+
* A peer that answered BUSY is alive and said so: the assets asked for keep
|
|
28
|
+
* their turn at it. A stream that broke keeps the turn only for a peer that
|
|
29
|
+
* has already completed a stream exchange for this graph, and only a couple of
|
|
30
|
+
* times in a row, so an asset the peer aborts on every time is rotated like
|
|
31
|
+
* before. Either way the peer is left alone for a short hold-off, which is
|
|
32
|
+
* what bounds how often it is asked.
|
|
33
|
+
*
|
|
34
|
+
* Process-local transport history on the caller's monotonic clock. It never
|
|
35
|
+
* says an asset is present or absent anywhere, and forgetting it only restores
|
|
36
|
+
* the ordinary rotation.
|
|
37
|
+
*/
|
|
38
|
+
export declare class VmRecoveryStreamSetbackPolicy {
|
|
39
|
+
private readonly limits;
|
|
40
|
+
private readonly entries;
|
|
41
|
+
constructor(limits?: VmRecoveryStreamSetbackLimits);
|
|
42
|
+
/** A stream exchange with this peer delivered everything it was asked for. */
|
|
43
|
+
recordServed(localCgId: string, peerId: string, now: number): void;
|
|
44
|
+
recordSetback(localCgId: string, peerId: string, kind: ExactBatchStreamSetback, now: number): VmRecoveryStreamSetbackDecision;
|
|
45
|
+
/** Whether the peer is still inside the hold-off of its last setback. */
|
|
46
|
+
heldOff(localCgId: string, peerId: string, now: number): boolean;
|
|
47
|
+
/** Whether the peer's last stream attempt for this graph was a setback, with no complete exchange since. */
|
|
48
|
+
inSetbackStreak(localCgId: string, peerId: string, now: number): boolean;
|
|
49
|
+
forgetContextGraph(localCgId: string): void;
|
|
50
|
+
clear(): void;
|
|
51
|
+
private touch;
|
|
52
|
+
private key;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=vm-recovery-stream-setback-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-recovery-stream-setback-policy.d.ts","sourceRoot":"","sources":["../src/vm-recovery-stream-setback-policy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAE5F,MAAM,WAAW,6BAA6B;IAC5C,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,kFAAkF;IAClF,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,iCAAiC,EAAE,6BAK9C,CAAC;AAEH,MAAM,WAAW,+BAA+B;IAC9C;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAaD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,6BAA6B;IAG5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;gBAEjC,MAAM,GAAE,6BAAiE;IAEtG,8EAA8E;IAC9E,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQlE,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,uBAAuB,EAC7B,GAAG,EAAE,MAAM,GACV,+BAA+B;IAWlC,yEAAyE;IACzE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAKhE,4GAA4G;IAC5G,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAMxE,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAO3C,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,KAAK;IAWb,OAAO,CAAC,GAAG;CAGZ"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { rememberBounded } from './bounded-map.js';
|
|
3
|
+
export const VM_RECOVERY_STREAM_SETBACK_LIMITS = Object.freeze({
|
|
4
|
+
holdOffMs: 15_000,
|
|
5
|
+
streakWindowMs: 30 * 60_000,
|
|
6
|
+
maxInterruptedInStreak: 2,
|
|
7
|
+
maxEntries: 1_024,
|
|
8
|
+
});
|
|
9
|
+
/**
|
|
10
|
+
* What a stream attempt that ended without a verdict on the peer's data costs
|
|
11
|
+
* that peer in one graph's recovery.
|
|
12
|
+
*
|
|
13
|
+
* A peer that answered BUSY is alive and said so: the assets asked for keep
|
|
14
|
+
* their turn at it. A stream that broke keeps the turn only for a peer that
|
|
15
|
+
* has already completed a stream exchange for this graph, and only a couple of
|
|
16
|
+
* times in a row, so an asset the peer aborts on every time is rotated like
|
|
17
|
+
* before. Either way the peer is left alone for a short hold-off, which is
|
|
18
|
+
* what bounds how often it is asked.
|
|
19
|
+
*
|
|
20
|
+
* Process-local transport history on the caller's monotonic clock. It never
|
|
21
|
+
* says an asset is present or absent anywhere, and forgetting it only restores
|
|
22
|
+
* the ordinary rotation.
|
|
23
|
+
*/
|
|
24
|
+
export class VmRecoveryStreamSetbackPolicy {
|
|
25
|
+
limits;
|
|
26
|
+
entries = new Map();
|
|
27
|
+
constructor(limits = VM_RECOVERY_STREAM_SETBACK_LIMITS) {
|
|
28
|
+
this.limits = limits;
|
|
29
|
+
}
|
|
30
|
+
/** A stream exchange with this peer delivered everything it was asked for. */
|
|
31
|
+
recordServed(localCgId, peerId, now) {
|
|
32
|
+
const state = this.touch(localCgId, peerId, now);
|
|
33
|
+
state.served = true;
|
|
34
|
+
state.streakStartedAt = undefined;
|
|
35
|
+
state.interruptedInStreak = 0;
|
|
36
|
+
state.retryAt = 0;
|
|
37
|
+
}
|
|
38
|
+
recordSetback(localCgId, peerId, kind, now) {
|
|
39
|
+
const state = this.touch(localCgId, peerId, now);
|
|
40
|
+
state.streakStartedAt ??= now;
|
|
41
|
+
if (kind === 'stream-interrupted')
|
|
42
|
+
state.interruptedInStreak += 1;
|
|
43
|
+
const keepsTurn = now - state.streakStartedAt <= this.limits.streakWindowMs
|
|
44
|
+
&& (kind === 'responder-busy'
|
|
45
|
+
|| (state.served && state.interruptedInStreak <= this.limits.maxInterruptedInStreak));
|
|
46
|
+
state.retryAt = keepsTurn ? now + this.limits.holdOffMs : 0;
|
|
47
|
+
return { keepsTurn, holdOffMs: keepsTurn ? this.limits.holdOffMs : 0 };
|
|
48
|
+
}
|
|
49
|
+
/** Whether the peer is still inside the hold-off of its last setback. */
|
|
50
|
+
heldOff(localCgId, peerId, now) {
|
|
51
|
+
const state = this.entries.get(this.key(localCgId, peerId));
|
|
52
|
+
return state !== undefined && now < state.retryAt;
|
|
53
|
+
}
|
|
54
|
+
/** Whether the peer's last stream attempt for this graph was a setback, with no complete exchange since. */
|
|
55
|
+
inSetbackStreak(localCgId, peerId, now) {
|
|
56
|
+
const state = this.entries.get(this.key(localCgId, peerId));
|
|
57
|
+
return state !== undefined && state.streakStartedAt !== undefined
|
|
58
|
+
&& now - state.touchedAt <= this.limits.streakWindowMs;
|
|
59
|
+
}
|
|
60
|
+
forgetContextGraph(localCgId) {
|
|
61
|
+
const prefix = `${localCgId}\0`;
|
|
62
|
+
for (const key of this.entries.keys()) {
|
|
63
|
+
if (key.startsWith(prefix))
|
|
64
|
+
this.entries.delete(key);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
clear() {
|
|
68
|
+
this.entries.clear();
|
|
69
|
+
}
|
|
70
|
+
touch(localCgId, peerId, now) {
|
|
71
|
+
const key = this.key(localCgId, peerId);
|
|
72
|
+
let state = this.entries.get(key);
|
|
73
|
+
// History older than one streak window is not "the current recovery".
|
|
74
|
+
if (state !== undefined && now - state.touchedAt > this.limits.streakWindowMs)
|
|
75
|
+
state = undefined;
|
|
76
|
+
state ??= { served: false, streakStartedAt: undefined, interruptedInStreak: 0, retryAt: 0, touchedAt: now };
|
|
77
|
+
state.touchedAt = now;
|
|
78
|
+
rememberBounded(this.entries, key, state, this.limits.maxEntries);
|
|
79
|
+
return state;
|
|
80
|
+
}
|
|
81
|
+
key(localCgId, peerId) {
|
|
82
|
+
return `${localCgId}\0${peerId}`;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=vm-recovery-stream-setback-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-recovery-stream-setback-policy.js","sourceRoot":"","sources":["../src/vm-recovery-stream-setback-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { VmRecoveryPhaseRecorder } from './vm-recovery-phase-timing.js';
|
|
2
|
+
import type { VmRecoveryFootprintObservation } from './vm-recovery-footprint.js';
|
|
3
|
+
import { type VmRecoveryPreparationStats } from './vm-recovery-preparation.js';
|
|
4
|
+
export interface VmRecoveryBatchTimingMetadata {
|
|
5
|
+
readonly peerId: string;
|
|
6
|
+
readonly assets: number;
|
|
7
|
+
readonly candidates: number;
|
|
8
|
+
readonly kind: string;
|
|
9
|
+
readonly transport: string;
|
|
10
|
+
readonly streamAdvertised: number;
|
|
11
|
+
readonly streamPeers: number;
|
|
12
|
+
readonly registeredAuthority: string;
|
|
13
|
+
}
|
|
14
|
+
/** Observation-only owner of per-batch marks, sizing, counters and log formatting. */
|
|
15
|
+
export declare class VmRecoveryTimingObserver {
|
|
16
|
+
#private;
|
|
17
|
+
private readonly localCgId;
|
|
18
|
+
private readonly log;
|
|
19
|
+
readonly phases: VmRecoveryPhaseRecorder;
|
|
20
|
+
constructor(localCgId: string, log: (message: string) => void);
|
|
21
|
+
beginBatch(): {
|
|
22
|
+
observeSizing: (observation: VmRecoveryFootprintObservation) => void;
|
|
23
|
+
complete: (metadata: VmRecoveryBatchTimingMetadata) => void;
|
|
24
|
+
};
|
|
25
|
+
finish(eligible: number, preparation?: () => VmRecoveryPreparationStats): void;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=vm-recovery-timing-observer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-recovery-timing-observer.d.ts","sourceRoot":"","sources":["../src/vm-recovery-timing-observer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EACmB,MAAM,+BAA+B,CAAC;AACzF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAoC,KAAK,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAMjH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED,sFAAsF;AACtF,qBAAa,wBAAwB;;IAMvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAU,OAAO,CAAC,QAAQ,CAAC,GAAG;IALpE,QAAQ,CAAC,MAAM,0BAAiC;gBAKnB,SAAS,EAAE,MAAM,EAAmB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IAE/F,UAAU;qCAKuB,8BAA8B,KAAG,IAAI;6BAC7C,6BAA6B,KAAG,IAAI;;IAkB7D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,0BAA0B,GAAG,IAAI;CAS/E"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { VmRecoveryPhaseRecorder, markVmRecoveryRpc, describeVmRecoveryRpcSince, formatVmRecoveryPhases, observeVmRecoveryTiming } from './vm-recovery-phase-timing.js';
|
|
3
|
+
import { formatVmRecoveryPreparationStats } from './vm-recovery-preparation.js';
|
|
4
|
+
const NO_SIZING = Object.freeze({
|
|
5
|
+
elapsedMs: 0, requested: 0, prepared: 0, resolved: 0, timedOut: 0, aborted: 0, invalid: 0, failed: 0,
|
|
6
|
+
});
|
|
7
|
+
/** Observation-only owner of per-batch marks, sizing, counters and log formatting. */
|
|
8
|
+
export class VmRecoveryTimingObserver {
|
|
9
|
+
localCgId;
|
|
10
|
+
log;
|
|
11
|
+
phases = new VmRecoveryPhaseRecorder();
|
|
12
|
+
#startedAt = performance.now();
|
|
13
|
+
#batches = 0;
|
|
14
|
+
#assets = 0;
|
|
15
|
+
constructor(localCgId, log) {
|
|
16
|
+
this.localCgId = localCgId;
|
|
17
|
+
this.log = log;
|
|
18
|
+
}
|
|
19
|
+
beginBatch() {
|
|
20
|
+
const startedAt = performance.now();
|
|
21
|
+
const rpcMark = markVmRecoveryRpc();
|
|
22
|
+
let sizing = NO_SIZING;
|
|
23
|
+
return {
|
|
24
|
+
observeSizing: (observation) => { sizing = observation; },
|
|
25
|
+
complete: (metadata) => {
|
|
26
|
+
this.#batches += 1;
|
|
27
|
+
this.#assets += metadata.assets;
|
|
28
|
+
observeVmRecoveryTiming(() => this.log(`VM recovery batch timing for "${this.localCgId}" from ${metadata.peerId.slice(-8)}: `
|
|
29
|
+
+ `assets=${metadata.assets} candidates=${metadata.candidates} kind=${metadata.kind} `
|
|
30
|
+
+ `transport=${metadata.transport} streamAdvertised=${metadata.streamAdvertised} `
|
|
31
|
+
+ `streamPeers=${metadata.streamPeers} registeredAuthority=${metadata.registeredAuthority} `
|
|
32
|
+
+ `totalMs=${Math.round(performance.now() - startedAt)} `
|
|
33
|
+
+ `${formatVmRecoveryPhases(this.phases.take())} `
|
|
34
|
+
+ `sizingRequested=${sizing.requested} sizingPrepared=${sizing.prepared} sizingResolved=${sizing.resolved} sizingTimedOut=${sizing.timedOut} `
|
|
35
|
+
+ `sizingAborted=${sizing.aborted} sizingInvalid=${sizing.invalid} sizingFailed=${sizing.failed} `
|
|
36
|
+
+ `${describeVmRecoveryRpcSince(rpcMark)}`));
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
finish(eligible, preparation) {
|
|
41
|
+
if (this.#batches === 0)
|
|
42
|
+
return;
|
|
43
|
+
observeVmRecoveryTiming(() => this.log(`VM recovery pass timing for "${this.localCgId}": batches=${this.#batches} assets=${this.#assets} `
|
|
44
|
+
+ `eligible=${eligible} totalMs=${Math.round(performance.now() - this.#startedAt)} `
|
|
45
|
+
+ `${formatVmRecoveryPhases(this.phases.cumulative())}`
|
|
46
|
+
+ (preparation ? ` ${formatVmRecoveryPreparationStats(preparation())}` : '')));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=vm-recovery-timing-observer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-recovery-timing-observer.js","sourceRoot":"","sources":["../src/vm-recovery-timing-observer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { VmRecoveryProviderAttemptKind } from './vm-recovery-provider-policy.js';
|
|
2
|
+
export interface VmRecoveryTransportBudgetTarget {
|
|
3
|
+
readonly localCgId: string;
|
|
4
|
+
readonly onChainCgId: string;
|
|
5
|
+
readonly ordinal: number;
|
|
6
|
+
readonly ual: string;
|
|
7
|
+
readonly merkleRoot: string;
|
|
8
|
+
}
|
|
9
|
+
interface BudgetSelection {
|
|
10
|
+
readonly target: VmRecoveryTransportBudgetTarget;
|
|
11
|
+
readonly peerId: string;
|
|
12
|
+
readonly providerAttemptKind: VmRecoveryProviderAttemptKind;
|
|
13
|
+
readonly registeredPublicAccess: boolean;
|
|
14
|
+
readonly competingStreamAvailable: boolean;
|
|
15
|
+
readonly streamEligible: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** Process-local physical-attempt history; it never creates asset or absence evidence. */
|
|
18
|
+
export declare class VmRecoveryTransportBudgetPolicy {
|
|
19
|
+
private readonly maxEntries;
|
|
20
|
+
private readonly attempts;
|
|
21
|
+
/** Once a counter was evicted, missing history cannot justify a shortened probe. */
|
|
22
|
+
private historyEvicted;
|
|
23
|
+
constructor(maxEntries?: number);
|
|
24
|
+
attemptOrdinal(target: VmRecoveryTransportBudgetTarget, peerId: string): number;
|
|
25
|
+
timeoutFor(selection: BudgetSelection): number | undefined;
|
|
26
|
+
recordAdmitted(target: VmRecoveryTransportBudgetTarget, peerId: string): void;
|
|
27
|
+
forgetContextGraph(localCgId: string): void;
|
|
28
|
+
clear(): void;
|
|
29
|
+
private key;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=vm-recovery-transport-budget-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-recovery-transport-budget-policy.d.ts","sourceRoot":"","sources":["../src/vm-recovery-transport-budget-policy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAOtF,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,UAAU,eAAe;IACvB,QAAQ,CAAC,MAAM,EAAE,+BAA+B,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,mBAAmB,EAAE,6BAA6B,CAAC;IAC5D,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,0FAA0F;AAC1F,qBAAa,+BAA+B;IAK9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,oFAAoF;IACpF,OAAO,CAAC,cAAc,CAAS;gBAEF,UAAU,SAAsB;IAE7D,cAAc,CAAC,MAAM,EAAE,+BAA+B,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAI/E,UAAU,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS;IAQ1D,cAAc,CAAC,MAAM,EAAE,+BAA+B,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAc7E,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAO3C,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,GAAG;CAIZ"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/** The budget is per exact probe and its full-scan fallback, not per wire request. */
|
|
3
|
+
const MIXED_LEGACY_TIMEOUT_MS = 120_000;
|
|
4
|
+
const FULL_BUDGET_EVERY = 4;
|
|
5
|
+
const MAX_HISTORY_ENTRIES = 16_384;
|
|
6
|
+
/** Process-local physical-attempt history; it never creates asset or absence evidence. */
|
|
7
|
+
export class VmRecoveryTransportBudgetPolicy {
|
|
8
|
+
maxEntries;
|
|
9
|
+
attempts = new Map();
|
|
10
|
+
/** Once a counter was evicted, missing history cannot justify a shortened probe. */
|
|
11
|
+
historyEvicted = false;
|
|
12
|
+
constructor(maxEntries = MAX_HISTORY_ENTRIES) {
|
|
13
|
+
this.maxEntries = maxEntries;
|
|
14
|
+
}
|
|
15
|
+
attemptOrdinal(target, peerId) {
|
|
16
|
+
return this.attempts.get(this.key(target, peerId)) ?? 0;
|
|
17
|
+
}
|
|
18
|
+
timeoutFor(selection) {
|
|
19
|
+
if (selection.providerAttemptKind !== 'probe' || !selection.registeredPublicAccess
|
|
20
|
+
|| !selection.competingStreamAvailable || selection.streamEligible)
|
|
21
|
+
return undefined;
|
|
22
|
+
const ordinal = this.attempts.get(this.key(selection.target, selection.peerId));
|
|
23
|
+
return (ordinal === undefined && this.historyEvicted) || ordinal === FULL_BUDGET_EVERY - 1
|
|
24
|
+
? undefined : MIXED_LEGACY_TIMEOUT_MS;
|
|
25
|
+
}
|
|
26
|
+
recordAdmitted(target, peerId) {
|
|
27
|
+
const key = this.key(target, peerId);
|
|
28
|
+
const next = (this.attempts.get(key) ?? 0) + 1;
|
|
29
|
+
this.attempts.delete(key);
|
|
30
|
+
this.attempts.set(key, next % FULL_BUDGET_EVERY);
|
|
31
|
+
if (this.attempts.size > this.maxEntries) {
|
|
32
|
+
const oldest = this.attempts.keys().next().value;
|
|
33
|
+
if (oldest !== undefined) {
|
|
34
|
+
this.attempts.delete(oldest);
|
|
35
|
+
this.historyEvicted = true;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
forgetContextGraph(localCgId) {
|
|
40
|
+
const prefix = `${localCgId}\0`;
|
|
41
|
+
for (const key of this.attempts.keys()) {
|
|
42
|
+
if (key.startsWith(prefix))
|
|
43
|
+
this.attempts.delete(key);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
clear() {
|
|
47
|
+
this.attempts.clear();
|
|
48
|
+
this.historyEvicted = false;
|
|
49
|
+
}
|
|
50
|
+
key(target, peerId) {
|
|
51
|
+
return `${target.localCgId}\0${target.onChainCgId}\0${target.ordinal}\0`
|
|
52
|
+
+ `${target.ual}\0${target.merkleRoot.toLowerCase()}\0${peerId}`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=vm-recovery-transport-budget-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-recovery-transport-budget-policy.js","sourceRoot":"","sources":["../src/vm-recovery-transport-budget-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { VmRecoveryPreparation, VmRecoveryPreparationScope, VmRecoveryPreparationCandidate } from './vm-recovery-preparation.js';
|
|
2
|
+
import type { ExactRecoveryTransportMode } from './sync/requester/exact-recovery-transport.js';
|
|
3
|
+
import { type VmRecoveryFootprintBridge, type VmRecoveryFootprintObservation, type VmRecoveryFootprintSizingReader, type VmRecoveryPreparedHints } from './vm-recovery-footprint.js';
|
|
4
|
+
import type { VmRecoveryChainFootprint } from './vm-recovery-types.js';
|
|
5
|
+
import { type VmRecoveryMicrobatchPlan } from './vm-recovery-microbatch.js';
|
|
6
|
+
import type { VmRecoveryProviderAttemptKind } from './vm-recovery-provider-policy.js';
|
|
7
|
+
export declare const VM_EXACT_MICROBATCH_LIMITS: Readonly<{
|
|
8
|
+
maxAssets: 10;
|
|
9
|
+
targetBytes: bigint;
|
|
10
|
+
targetLeaves: 4096n;
|
|
11
|
+
fixedBytesPerAsset: bigint;
|
|
12
|
+
bytesPerLeafOverhead: 128n;
|
|
13
|
+
byteSizeMultiplierBps: 11500n;
|
|
14
|
+
maxSelectorBytes: number;
|
|
15
|
+
}>;
|
|
16
|
+
export interface VmRecoveryTransportCandidate<T> {
|
|
17
|
+
readonly attempt: T;
|
|
18
|
+
readonly kaId: string;
|
|
19
|
+
readonly assetUal: string;
|
|
20
|
+
}
|
|
21
|
+
export interface VmRecoveryTransportPlanningOptions<T> {
|
|
22
|
+
/** The host has already selected a rotation-compatible prefix. */
|
|
23
|
+
readonly candidates: readonly VmRecoveryTransportCandidate<T>[];
|
|
24
|
+
readonly providerAttemptKind: VmRecoveryProviderAttemptKind;
|
|
25
|
+
readonly onChainCgId: bigint;
|
|
26
|
+
readonly streamEligible: boolean;
|
|
27
|
+
readonly registeredPublicAccess: boolean;
|
|
28
|
+
/** Budget selected by transport policy for this probe and its full-scan fallback. */
|
|
29
|
+
readonly legacyAttemptTimeoutMs?: number;
|
|
30
|
+
readonly signal?: AbortSignal;
|
|
31
|
+
readonly isCurrent: () => boolean;
|
|
32
|
+
/** Observation only: outcome counts of this plan's sizing, never consulted by a decision. */
|
|
33
|
+
readonly observeSizing?: (observation: VmRecoveryFootprintObservation) => void;
|
|
34
|
+
/** Bounds in-flight live sizing reads; omitted keeps every read concurrent. */
|
|
35
|
+
readonly sizingReadConcurrency?: number;
|
|
36
|
+
/** Deadline of one live sizing read; omitted keeps the sizing bridge's default. */
|
|
37
|
+
readonly sizingReadTimeoutMs?: number;
|
|
38
|
+
/** Pending candidates after a probe; the transport owner prepares their sizing. */
|
|
39
|
+
readonly probeRemainder?: readonly VmRecoveryPreparationCandidate[];
|
|
40
|
+
}
|
|
41
|
+
export interface VmRecoveryTransportPlanningPorts {
|
|
42
|
+
readonly resolvePublicAccess: VmRecoveryFootprintBridge['resolvePublicAccess'];
|
|
43
|
+
/** Ordinary probes do not inspect or invoke optional sizing ports. */
|
|
44
|
+
readonly createSizingReader: () => VmRecoveryFootprintSizingReader | null;
|
|
45
|
+
/** The scoped owner of advisory sizing and its transport-plan lifetime. */
|
|
46
|
+
readonly preparation?: VmRecoveryTransportPreparationPort;
|
|
47
|
+
}
|
|
48
|
+
/** A sized candidate the plan left for a later batch, with the footprint already observed. */
|
|
49
|
+
export interface VmRecoveryUnplannedCandidate<T> {
|
|
50
|
+
readonly attempt: T;
|
|
51
|
+
readonly kaId: string;
|
|
52
|
+
readonly recoveryFootprint?: VmRecoveryChainFootprint;
|
|
53
|
+
}
|
|
54
|
+
export interface VmRecoveryTransportPlan<T> {
|
|
55
|
+
readonly attempts: readonly T[];
|
|
56
|
+
readonly transportMode: ExactRecoveryTransportMode;
|
|
57
|
+
readonly legacyAttemptTimeoutMs?: number;
|
|
58
|
+
/** Unobserved probes cannot create reusable public-holder credit. */
|
|
59
|
+
readonly publicAccessEvidence: boolean | undefined;
|
|
60
|
+
readonly packing: Readonly<Omit<VmRecoveryMicrobatchPlan<unknown>, 'targets'>> | undefined;
|
|
61
|
+
/** The sized candidates a holder plan did not select, in candidate order. */
|
|
62
|
+
readonly unplanned: readonly VmRecoveryUnplannedCandidate<T>[];
|
|
63
|
+
}
|
|
64
|
+
export interface VmRecoveryTransportPreparationPort {
|
|
65
|
+
/** Holder sizing consumes hints; probes always inspect live sizing. */
|
|
66
|
+
hints(): VmRecoveryPreparedHints;
|
|
67
|
+
release(): void;
|
|
68
|
+
prepareRemainder(candidates: readonly VmRecoveryPreparationCandidate[]): void;
|
|
69
|
+
}
|
|
70
|
+
/** Coordinate advisory hint lifetime at transport-plan boundaries. */
|
|
71
|
+
export declare class VmRecoveryTransportPreparation implements VmRecoveryTransportPreparationPort {
|
|
72
|
+
#private;
|
|
73
|
+
private readonly owner;
|
|
74
|
+
private readonly scope;
|
|
75
|
+
constructor(owner: VmRecoveryPreparation, scope: VmRecoveryPreparationScope);
|
|
76
|
+
preparePass(candidates: readonly VmRecoveryPreparationCandidate[]): void;
|
|
77
|
+
hints(): VmRecoveryPreparedHints;
|
|
78
|
+
release(): void;
|
|
79
|
+
prepareRemainder(candidates: readonly VmRecoveryPreparationCandidate[]): void;
|
|
80
|
+
}
|
|
81
|
+
/** Plan, release consumed hints, then prepare only the still-pending remainder. */
|
|
82
|
+
export declare function planVmRecoveryTransport<T>(options: VmRecoveryTransportPlanningOptions<T>, ports: VmRecoveryTransportPlanningPorts): Promise<VmRecoveryTransportPlan<T>>;
|
|
83
|
+
//# sourceMappingURL=vm-recovery-transport-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-recovery-transport-plan.d.ts","sourceRoot":"","sources":["../src/vm-recovery-transport-plan.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAEtI,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAC/F,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,EACnC,KAAK,+BAA+B,EACpC,KAAK,uBAAuB,EAC7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAA4B,KAAK,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACtG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAMtF,eAAO,MAAM,0BAA0B;;;;;;;;EAQrC,CAAC;AAEH,MAAM,WAAW,4BAA4B,CAAC,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kCAAkC,CAAC,CAAC;IACnD,kEAAkE;IAClE,QAAQ,CAAC,UAAU,EAAE,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,QAAQ,CAAC,mBAAmB,EAAE,6BAA6B,CAAC;IAC5D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,qFAAqF;IACrF,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;IAClC,6FAA6F;IAC7F,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,8BAA8B,KAAK,IAAI,CAAC;IAC/E,+EAA+E;IAC/E,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,mFAAmF;IACnF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,mFAAmF;IACnF,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,8BAA8B,EAAE,CAAC;CACrE;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,mBAAmB,EAAE,yBAAyB,CAAC,qBAAqB,CAAC,CAAC;IAC/E,sEAAsE;IACtE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,+BAA+B,GAAG,IAAI,CAAC;IAC1E,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,CAAC,EAAE,kCAAkC,CAAC;CAC3D;AAED,8FAA8F;AAC9F,MAAM,WAAW,4BAA4B,CAAC,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;CACvD;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC;IACnD,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,qEAAqE;IACrE,QAAQ,CAAC,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC;IAC3F,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC;CAChE;AAoBD,MAAM,WAAW,kCAAkC;IACjD,uEAAuE;IACvE,KAAK,IAAI,uBAAuB,CAAC;IACjC,OAAO,IAAI,IAAI,CAAC;IAChB,gBAAgB,CAAC,UAAU,EAAE,SAAS,8BAA8B,EAAE,GAAG,IAAI,CAAC;CAC/E;AAKD,sEAAsE;AACtE,qBAAa,8BAA+B,YAAW,kCAAkC;;IAE3E,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAyB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAApD,KAAK,EAAE,qBAAqB,EAAmB,KAAK,EAAE,0BAA0B;IAC7G,WAAW,CAAC,UAAU,EAAE,SAAS,8BAA8B,EAAE,GAAG,IAAI;IAKxE,KAAK,IAAI,uBAAuB;IAChC,OAAO,IAAI,IAAI;IACf,gBAAgB,CAAC,UAAU,EAAE,SAAS,8BAA8B,EAAE,GAAG,IAAI;CAC9E;AAED,mFAAmF;AACnF,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,OAAO,EAAE,kCAAkC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,gCAAgC,GACtF,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAkBrC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { Buffer } from 'node:buffer';
|
|
3
|
+
import { encodeExactAssetUals, MAX_EXACT_SYNC_ASSETS } from './sync/exact-assets.js';
|
|
4
|
+
import { enrichVmRecoveryFootprints, } from './vm-recovery-footprint.js';
|
|
5
|
+
import { planVmRecoveryMicrobatch } from './vm-recovery-microbatch.js';
|
|
6
|
+
import { planVmRecoveryStreamMicrobatch } from './vm-recovery-stream-profile.js';
|
|
7
|
+
// Exact ordinary responses are capped at 64 rows per page. These soft targets
|
|
8
|
+
// keep one microbatch near 64 non-empty pages; individually larger KAs still
|
|
9
|
+
// run alone under the executor's hard guards.
|
|
10
|
+
export const VM_EXACT_MICROBATCH_LIMITS = Object.freeze({
|
|
11
|
+
maxAssets: MAX_EXACT_SYNC_ASSETS,
|
|
12
|
+
targetBytes: 24n * 1024n * 1024n,
|
|
13
|
+
targetLeaves: 4096n,
|
|
14
|
+
fixedBytesPerAsset: 64n * 1024n,
|
|
15
|
+
bytesPerLeafOverhead: 128n,
|
|
16
|
+
byteSizeMultiplierBps: 11500n,
|
|
17
|
+
maxSelectorBytes: 16 * 1024,
|
|
18
|
+
});
|
|
19
|
+
function freezePlan(attempts, transportMode, publicAccessEvidence, packing, unplanned = [], legacyAttemptTimeoutMs) {
|
|
20
|
+
// Attempt records remain owned by the host; only the planning decision and
|
|
21
|
+
// its selected order are frozen, without freezing mutable rotation state.
|
|
22
|
+
return Object.freeze({
|
|
23
|
+
attempts: Object.freeze([...attempts]), transportMode, publicAccessEvidence,
|
|
24
|
+
...(legacyAttemptTimeoutMs === undefined ? {} : { legacyAttemptTimeoutMs }),
|
|
25
|
+
packing: packing === undefined ? undefined : Object.freeze({ ...packing }),
|
|
26
|
+
unplanned: Object.freeze([...unplanned]),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/** Coordinate advisory hint lifetime at transport-plan boundaries. */
|
|
30
|
+
export class VmRecoveryTransportPreparation {
|
|
31
|
+
owner;
|
|
32
|
+
scope;
|
|
33
|
+
#entryPrepared = false;
|
|
34
|
+
constructor(owner, scope) {
|
|
35
|
+
this.owner = owner;
|
|
36
|
+
this.scope = scope;
|
|
37
|
+
}
|
|
38
|
+
preparePass(candidates) {
|
|
39
|
+
if (this.#entryPrepared)
|
|
40
|
+
return;
|
|
41
|
+
this.#entryPrepared = true;
|
|
42
|
+
this.owner.prepare(this.scope, candidates);
|
|
43
|
+
}
|
|
44
|
+
hints() { return this.owner.hintsFor(this.scope); }
|
|
45
|
+
release() { this.owner.release(this.scope); }
|
|
46
|
+
prepareRemainder(candidates) { this.owner.prepare(this.scope, candidates); }
|
|
47
|
+
}
|
|
48
|
+
/** Plan, release consumed hints, then prepare only the still-pending remainder. */
|
|
49
|
+
export async function planVmRecoveryTransport(options, ports) {
|
|
50
|
+
let plan;
|
|
51
|
+
try {
|
|
52
|
+
plan = await selectVmRecoveryTransport(options, {
|
|
53
|
+
resolvePublicAccess: ports.resolvePublicAccess,
|
|
54
|
+
createSizingReader: ports.createSizingReader,
|
|
55
|
+
}, ports.preparation?.hints());
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
if (options.providerAttemptKind !== 'probe')
|
|
59
|
+
ports.preparation?.release();
|
|
60
|
+
}
|
|
61
|
+
if (plan.attempts.length > 0 && !options.signal?.aborted && options.isCurrent()) {
|
|
62
|
+
ports.preparation?.prepareRemainder(options.providerAttemptKind === 'probe'
|
|
63
|
+
? options.probeRemainder ?? []
|
|
64
|
+
: plan.unplanned.map(({ kaId, recoveryFootprint }) => ({
|
|
65
|
+
kaId, ...(recoveryFootprint ? { footprint: recoveryFootprint } : {}),
|
|
66
|
+
})));
|
|
67
|
+
}
|
|
68
|
+
return plan;
|
|
69
|
+
}
|
|
70
|
+
/** Size and select one transport plan without changing provider/rotation state. */
|
|
71
|
+
async function selectVmRecoveryTransport(options, ports, preparedHints) {
|
|
72
|
+
const probe = options.providerAttemptKind === 'probe';
|
|
73
|
+
const candidates = probe ? options.candidates.slice(0, 1) : options.candidates;
|
|
74
|
+
if (probe && !options.streamEligible) {
|
|
75
|
+
return freezePlan(candidates.map(({ attempt }) => attempt), 'legacy', undefined, undefined, [], options.legacyAttemptTimeoutMs);
|
|
76
|
+
}
|
|
77
|
+
let publicAccessEvidence;
|
|
78
|
+
const sized = await enrichVmRecoveryFootprints(candidates, options.onChainCgId, {
|
|
79
|
+
resolvePublicAccess: async (contextGraphId, readOptions) => {
|
|
80
|
+
const allowed = options.registeredPublicAccess
|
|
81
|
+
|| await ports.resolvePublicAccess(contextGraphId, readOptions);
|
|
82
|
+
if (!probe && !options.signal?.aborted && options.isCurrent())
|
|
83
|
+
publicAccessEvidence = allowed;
|
|
84
|
+
return allowed;
|
|
85
|
+
},
|
|
86
|
+
sizing: ports.createSizingReader(),
|
|
87
|
+
...(!probe && preparedHints ? { prepared: preparedHints } : {}),
|
|
88
|
+
}, {
|
|
89
|
+
maxContextReads: probe ? 1 : MAX_EXACT_SYNC_ASSETS,
|
|
90
|
+
signal: options.signal, isCurrent: options.isCurrent,
|
|
91
|
+
...(options.observeSizing ? { observe: options.observeSizing } : {}),
|
|
92
|
+
...(options.sizingReadConcurrency !== undefined ? { readConcurrency: options.sizingReadConcurrency } : {}),
|
|
93
|
+
...(options.sizingReadTimeoutMs !== undefined ? { sizingReadTimeoutMs: options.sizingReadTimeoutMs } : {}),
|
|
94
|
+
});
|
|
95
|
+
if (options.signal?.aborted || !options.isCurrent())
|
|
96
|
+
publicAccessEvidence = undefined;
|
|
97
|
+
const selectorBytesFor = (selected) => Buffer.byteLength(encodeExactAssetUals(selected.map(({ assetUal }) => assetUal)), 'utf8');
|
|
98
|
+
const streamPlan = options.streamEligible
|
|
99
|
+
? planVmRecoveryStreamMicrobatch(sized, selectorBytesFor)
|
|
100
|
+
: undefined;
|
|
101
|
+
if (probe) {
|
|
102
|
+
// A probe remains one KA even when its footprint is unknown/oversized.
|
|
103
|
+
// Only its optional wire changes; ordinary probe admission is unchanged.
|
|
104
|
+
return freezePlan(candidates.map(({ attempt }) => attempt), streamPlan === undefined ? 'legacy' : 'stream-preferred', undefined);
|
|
105
|
+
}
|
|
106
|
+
const plan = streamPlan ?? planVmRecoveryMicrobatch(sized, VM_EXACT_MICROBATCH_LIMITS, selectorBytesFor);
|
|
107
|
+
const { targets, ...packing } = plan;
|
|
108
|
+
const selected = new Set(targets.map(({ attempt }) => attempt));
|
|
109
|
+
// The candidates after the selected prefix are the next batch's work; keep the
|
|
110
|
+
// footprints already observed for them so a later pass need not read them again.
|
|
111
|
+
const unplanned = sized.filter(({ attempt }) => !selected.has(attempt)).map(({ attempt, kaId, recoveryFootprint }) => ({
|
|
112
|
+
attempt, kaId, ...(recoveryFootprint ? { recoveryFootprint } : {}),
|
|
113
|
+
}));
|
|
114
|
+
// Holder streaming retains required mode even for a one-KA sized prefix.
|
|
115
|
+
return freezePlan(targets.map(({ attempt }) => attempt), streamPlan === undefined ? 'legacy' : 'stream-required', publicAccessEvidence, packing, unplanned);
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=vm-recovery-transport-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-recovery-transport-plan.js","sourceRoot":"","sources":["../src/vm-recovery-transport-plan.ts"],"names":[],"mappings":"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"}
|