@origintrail-official/dkg-agent 10.0.15 → 10.0.17
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/README.md +24 -0
- package/dist/active-public-context-graph-chain-proof.d.ts +8 -5
- package/dist/active-public-context-graph-chain-proof.d.ts.map +1 -1
- package/dist/active-public-context-graph-chain-proof.js +8 -3
- package/dist/active-public-context-graph-chain-proof.js.map +1 -1
- package/dist/agent-peer-discovery.d.ts +24 -0
- package/dist/agent-peer-discovery.d.ts.map +1 -0
- package/dist/agent-peer-discovery.js +50 -0
- package/dist/agent-peer-discovery.js.map +1 -0
- package/dist/auth/agent-delegation.d.ts +21 -0
- package/dist/auth/agent-delegation.d.ts.map +1 -1
- package/dist/auth/agent-delegation.js +30 -0
- package/dist/auth/agent-delegation.js.map +1 -1
- package/dist/authority-index-config.d.ts +21 -0
- package/dist/authority-index-config.d.ts.map +1 -0
- package/dist/authority-index-config.js +55 -0
- package/dist/authority-index-config.js.map +1 -0
- package/dist/authority-index-snapshot-client.d.ts +42 -0
- package/dist/authority-index-snapshot-client.d.ts.map +1 -0
- package/dist/authority-index-snapshot-client.js +119 -0
- package/dist/authority-index-snapshot-client.js.map +1 -0
- package/dist/authority-index-snapshot-config.d.ts +17 -0
- package/dist/authority-index-snapshot-config.d.ts.map +1 -0
- package/dist/authority-index-snapshot-config.js +54 -0
- package/dist/authority-index-snapshot-config.js.map +1 -0
- package/dist/authority-index-snapshot-handler.d.ts +12 -0
- package/dist/authority-index-snapshot-handler.d.ts.map +1 -0
- package/dist/authority-index-snapshot-handler.js +93 -0
- package/dist/authority-index-snapshot-handler.js.map +1 -0
- package/dist/authority-index-snapshot-runtime.d.ts +16 -0
- package/dist/authority-index-snapshot-runtime.d.ts.map +1 -0
- package/dist/authority-index-snapshot-runtime.js +45 -0
- package/dist/authority-index-snapshot-runtime.js.map +1 -0
- package/dist/authority-index-snapshot-service.d.ts +6 -0
- package/dist/authority-index-snapshot-service.d.ts.map +1 -0
- package/dist/authority-index-snapshot-service.js +7 -0
- package/dist/authority-index-snapshot-service.js.map +1 -0
- package/dist/authority-index-snapshot-transport.d.ts +11 -0
- package/dist/authority-index-snapshot-transport.d.ts.map +1 -0
- package/dist/authority-index-snapshot-transport.js +25 -0
- package/dist/authority-index-snapshot-transport.js.map +1 -0
- package/dist/authority-index-snapshot-wire.d.ts +15 -0
- package/dist/authority-index-snapshot-wire.d.ts.map +1 -0
- package/dist/authority-index-snapshot-wire.js +55 -0
- package/dist/authority-index-snapshot-wire.js.map +1 -0
- package/dist/bounded-curator-roster-traversal.d.ts +41 -0
- package/dist/bounded-curator-roster-traversal.d.ts.map +1 -0
- package/dist/bounded-curator-roster-traversal.js +59 -0
- package/dist/bounded-curator-roster-traversal.js.map +1 -0
- package/dist/chain-reconciler.d.ts +13 -67
- package/dist/chain-reconciler.d.ts.map +1 -1
- package/dist/chain-reconciler.js +42 -321
- package/dist/chain-reconciler.js.map +1 -1
- package/dist/coalescing-recurring-task.d.ts +2 -0
- package/dist/coalescing-recurring-task.d.ts.map +1 -0
- package/dist/coalescing-recurring-task.js +3 -0
- package/dist/coalescing-recurring-task.js.map +1 -0
- package/dist/context-graph-binding-state.d.ts +9 -0
- package/dist/context-graph-binding-state.d.ts.map +1 -1
- package/dist/context-graph-binding-state.js +28 -6
- package/dist/context-graph-binding-state.js.map +1 -1
- package/dist/context-graph-discovery-options.d.ts +46 -0
- package/dist/context-graph-discovery-options.d.ts.map +1 -0
- package/dist/context-graph-discovery-options.js +85 -0
- package/dist/context-graph-discovery-options.js.map +1 -0
- package/dist/context-graph-join-admission.d.ts +4 -1
- package/dist/context-graph-join-admission.d.ts.map +1 -1
- package/dist/context-graph-join-admission.js +18 -6
- package/dist/context-graph-join-admission.js.map +1 -1
- package/dist/context-graph-list-authority-enrichment.d.ts +48 -0
- package/dist/context-graph-list-authority-enrichment.d.ts.map +1 -0
- package/dist/context-graph-list-authority-enrichment.js +78 -0
- package/dist/context-graph-list-authority-enrichment.js.map +1 -0
- package/dist/context-graph-meta-projection.d.ts +25 -3
- package/dist/context-graph-meta-projection.d.ts.map +1 -1
- package/dist/context-graph-meta-projection.js +90 -5
- package/dist/context-graph-meta-projection.js.map +1 -1
- package/dist/context-graph-read-authority.d.ts +16 -1
- package/dist/context-graph-read-authority.d.ts.map +1 -1
- package/dist/context-graph-read-authority.js +22 -0
- package/dist/context-graph-read-authority.js.map +1 -1
- package/dist/context-graph-registration-read-plan.d.ts +28 -0
- package/dist/context-graph-registration-read-plan.d.ts.map +1 -0
- package/dist/context-graph-registration-read-plan.js +142 -0
- package/dist/context-graph-registration-read-plan.js.map +1 -0
- package/dist/context-graph-subscription-authority-recovery.d.ts +49 -0
- package/dist/context-graph-subscription-authority-recovery.d.ts.map +1 -0
- package/dist/context-graph-subscription-authority-recovery.js +197 -0
- package/dist/context-graph-subscription-authority-recovery.js.map +1 -0
- package/dist/core-hosted-public-cg-record-decision.d.ts +10 -0
- package/dist/core-hosted-public-cg-record-decision.d.ts.map +1 -0
- package/dist/core-hosted-public-cg-record-decision.js +16 -0
- package/dist/core-hosted-public-cg-record-decision.js.map +1 -0
- package/dist/curator-meta-refresh.d.ts +39 -0
- package/dist/curator-meta-refresh.d.ts.map +1 -1
- package/dist/curator-meta-refresh.js +203 -27
- package/dist/curator-meta-refresh.js.map +1 -1
- package/dist/discovery.d.ts +11 -4
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +43 -11
- package/dist/discovery.js.map +1 -1
- package/dist/dkg-agent-base.d.ts +89 -85
- package/dist/dkg-agent-base.d.ts.map +1 -1
- package/dist/dkg-agent-base.js +94 -83
- package/dist/dkg-agent-base.js.map +1 -1
- package/dist/dkg-agent-ccl.d.ts.map +1 -1
- package/dist/dkg-agent-ccl.js.map +1 -1
- package/dist/dkg-agent-cg-registry.d.ts +73 -1
- package/dist/dkg-agent-cg-registry.d.ts.map +1 -1
- package/dist/dkg-agent-cg-registry.js +510 -29
- package/dist/dkg-agent-cg-registry.js.map +1 -1
- package/dist/dkg-agent-cg-resolve.d.ts +46 -74
- package/dist/dkg-agent-cg-resolve.d.ts.map +1 -1
- package/dist/dkg-agent-cg-resolve.js +265 -57
- package/dist/dkg-agent-cg-resolve.js.map +1 -1
- package/dist/dkg-agent-constants.d.ts +11 -0
- package/dist/dkg-agent-constants.d.ts.map +1 -1
- package/dist/dkg-agent-constants.js +11 -0
- 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 +374 -81
- package/dist/dkg-agent-context-graph.js.map +1 -1
- package/dist/dkg-agent-crypto.d.ts +28 -8
- package/dist/dkg-agent-crypto.d.ts.map +1 -1
- package/dist/dkg-agent-crypto.js +210 -161
- 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 +1 -2
- package/dist/dkg-agent-diagnostics.js.map +1 -1
- package/dist/dkg-agent-endorse.d.ts.map +1 -1
- package/dist/dkg-agent-endorse.js.map +1 -1
- package/dist/dkg-agent-join.d.ts +26 -18
- package/dist/dkg-agent-join.d.ts.map +1 -1
- package/dist/dkg-agent-join.js +394 -12
- package/dist/dkg-agent-join.js.map +1 -1
- package/dist/dkg-agent-lifecycle.d.ts +151 -20
- package/dist/dkg-agent-lifecycle.d.ts.map +1 -1
- package/dist/dkg-agent-lifecycle.js +1510 -1257
- package/dist/dkg-agent-lifecycle.js.map +1 -1
- package/dist/dkg-agent-ownership.d.ts.map +1 -1
- package/dist/dkg-agent-ownership.js.map +1 -1
- package/dist/dkg-agent-publish.d.ts +14 -3
- package/dist/dkg-agent-publish.d.ts.map +1 -1
- package/dist/dkg-agent-publish.js +201 -102
- package/dist/dkg-agent-publish.js.map +1 -1
- package/dist/dkg-agent-query.d.ts +26 -8
- package/dist/dkg-agent-query.d.ts.map +1 -1
- package/dist/dkg-agent-query.js +203 -107
- package/dist/dkg-agent-query.js.map +1 -1
- package/dist/dkg-agent-registry.d.ts +15 -17
- package/dist/dkg-agent-registry.d.ts.map +1 -1
- package/dist/dkg-agent-registry.js +64 -22
- package/dist/dkg-agent-registry.js.map +1 -1
- package/dist/dkg-agent-rfc64-catalog-auto-publish.d.ts +33 -1
- package/dist/dkg-agent-rfc64-catalog-auto-publish.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-catalog-auto-publish.js +600 -126
- package/dist/dkg-agent-rfc64-catalog-auto-publish.js.map +1 -1
- package/dist/dkg-agent-rfc64-catalog-bootstrap.d.ts +14 -12
- package/dist/dkg-agent-rfc64-catalog-bootstrap.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-catalog-bootstrap.js +43 -38
- package/dist/dkg-agent-rfc64-catalog-bootstrap.js.map +1 -1
- package/dist/dkg-agent-rfc64-catalog-upsert.d.ts +7 -0
- package/dist/dkg-agent-rfc64-catalog-upsert.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-catalog-upsert.js +20 -3
- package/dist/dkg-agent-rfc64-catalog-upsert.js.map +1 -1
- package/dist/dkg-agent-rfc64-catalog.d.ts +373 -8
- package/dist/dkg-agent-rfc64-catalog.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-catalog.js +2965 -48
- package/dist/dkg-agent-rfc64-catalog.js.map +1 -1
- package/dist/dkg-agent-rfc64-meta-bootstrap.d.ts +15 -0
- package/dist/dkg-agent-rfc64-meta-bootstrap.d.ts.map +1 -0
- package/dist/dkg-agent-rfc64-meta-bootstrap.js +127 -0
- package/dist/dkg-agent-rfc64-meta-bootstrap.js.map +1 -0
- package/dist/dkg-agent-rfc64-seed-fetch.d.ts +85 -0
- package/dist/dkg-agent-rfc64-seed-fetch.d.ts.map +1 -0
- package/dist/dkg-agent-rfc64-seed-fetch.js +389 -0
- package/dist/dkg-agent-rfc64-seed-fetch.js.map +1 -0
- package/dist/dkg-agent-rfc64-seed-store.d.ts +42 -0
- package/dist/dkg-agent-rfc64-seed-store.d.ts.map +1 -0
- package/dist/dkg-agent-rfc64-seed-store.js +127 -0
- package/dist/dkg-agent-rfc64-seed-store.js.map +1 -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 +34 -13
- 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 +39 -16
- package/dist/dkg-agent-rfc64-swm-catalog-projection.js.map +1 -1
- package/dist/dkg-agent-rfc64-swm-recovery-runtime.d.ts +98 -0
- package/dist/dkg-agent-rfc64-swm-recovery-runtime.d.ts.map +1 -0
- package/dist/dkg-agent-rfc64-swm-recovery-runtime.js +174 -0
- package/dist/dkg-agent-rfc64-swm-recovery-runtime.js.map +1 -0
- package/dist/dkg-agent-swm-host.d.ts +50 -33
- package/dist/dkg-agent-swm-host.d.ts.map +1 -1
- package/dist/dkg-agent-swm-host.js +529 -252
- package/dist/dkg-agent-swm-host.js.map +1 -1
- package/dist/dkg-agent-swm-substrate.d.ts +11 -0
- package/dist/dkg-agent-swm-substrate.d.ts.map +1 -1
- package/dist/dkg-agent-swm-substrate.js +87 -36
- package/dist/dkg-agent-swm-substrate.js.map +1 -1
- package/dist/dkg-agent-types.d.ts +124 -186
- package/dist/dkg-agent-types.d.ts.map +1 -1
- package/dist/dkg-agent-types.js +21 -0
- package/dist/dkg-agent-types.js.map +1 -1
- package/dist/dkg-agent-vm-reconcile-scheduling.d.ts +25 -0
- package/dist/dkg-agent-vm-reconcile-scheduling.d.ts.map +1 -0
- package/dist/dkg-agent-vm-reconcile-scheduling.js +106 -0
- package/dist/dkg-agent-vm-reconcile-scheduling.js.map +1 -0
- package/dist/dkg-agent.d.ts +54 -31
- package/dist/dkg-agent.d.ts.map +1 -1
- package/dist/dkg-agent.js +676 -353
- package/dist/dkg-agent.js.map +1 -1
- package/dist/finalization-annotations.d.ts +5 -0
- package/dist/finalization-annotations.d.ts.map +1 -0
- package/dist/finalization-annotations.js +6 -0
- package/dist/finalization-annotations.js.map +1 -0
- package/dist/finalization-graph-envelope.d.ts +3 -2
- package/dist/finalization-graph-envelope.d.ts.map +1 -1
- package/dist/finalization-graph-envelope.js.map +1 -1
- package/dist/finalization-handler.d.ts +23 -5
- package/dist/finalization-handler.d.ts.map +1 -1
- package/dist/finalization-handler.js +239 -62
- package/dist/finalization-handler.js.map +1 -1
- package/dist/finalization-publisher-authority-observer.d.ts +40 -0
- package/dist/finalization-publisher-authority-observer.d.ts.map +1 -0
- package/dist/finalization-publisher-authority-observer.js +76 -0
- package/dist/finalization-publisher-authority-observer.js.map +1 -0
- package/dist/finalization-recovery-eligibility.d.ts +23 -0
- package/dist/finalization-recovery-eligibility.d.ts.map +1 -0
- package/dist/finalization-recovery-eligibility.js +40 -0
- package/dist/finalization-recovery-eligibility.js.map +1 -0
- package/dist/finalization-recovery-sqlite-codec.d.ts.map +1 -1
- package/dist/finalization-recovery-sqlite-codec.js +4 -0
- package/dist/finalization-recovery-sqlite-codec.js.map +1 -1
- package/dist/finalization-recovery-sqlite-schema.d.ts.map +1 -1
- package/dist/finalization-recovery-sqlite-schema.js +52 -13
- package/dist/finalization-recovery-sqlite-schema.js.map +1 -1
- package/dist/finalization-recovery-sqlite-store.d.ts +2 -2
- package/dist/finalization-recovery-sqlite-store.d.ts.map +1 -1
- package/dist/finalization-recovery-sqlite-store.js +49 -19
- package/dist/finalization-recovery-sqlite-store.js.map +1 -1
- package/dist/finalization-recovery-store.d.ts +33 -1
- package/dist/finalization-recovery-store.d.ts.map +1 -1
- package/dist/finalization-recovery-store.js +40 -0
- package/dist/finalization-recovery-store.js.map +1 -1
- package/dist/finalization-recovery.d.ts +7 -6
- package/dist/finalization-recovery.d.ts.map +1 -1
- package/dist/finalization-recovery.js +145 -86
- package/dist/finalization-recovery.js.map +1 -1
- package/dist/generic-sql-source.d.ts.map +1 -1
- package/dist/generic-sql-source.js +2 -1
- package/dist/generic-sql-source.js.map +1 -1
- package/dist/gossip-publish-handler.d.ts.map +1 -1
- package/dist/gossip-publish-handler.js +6 -7
- package/dist/gossip-publish-handler.js.map +1 -1
- package/dist/imported-artifact.d.ts.map +1 -1
- package/dist/imported-artifact.js +2 -1
- package/dist/imported-artifact.js.map +1 -1
- package/dist/index.d.ts +15 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/internal/context-graph-authority/context-graph-access-policy.d.ts +57 -0
- package/dist/internal/context-graph-authority/context-graph-access-policy.d.ts.map +1 -0
- package/dist/internal/context-graph-authority/context-graph-access-policy.js +140 -0
- package/dist/internal/context-graph-authority/context-graph-access-policy.js.map +1 -0
- package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.d.ts +19 -0
- package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.d.ts.map +1 -0
- package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.js +73 -0
- package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.js.map +1 -0
- package/dist/internal/context-graph-authority/context-graph-authority.d.ts +36 -0
- package/dist/internal/context-graph-authority/context-graph-authority.d.ts.map +1 -0
- package/dist/internal/context-graph-authority/context-graph-authority.js +56 -0
- package/dist/internal/context-graph-authority/context-graph-authority.js.map +1 -0
- package/dist/internal/promote/assertion-promote-precommit.d.ts +26 -0
- package/dist/internal/promote/assertion-promote-precommit.d.ts.map +1 -0
- package/dist/internal/promote/assertion-promote-precommit.js +76 -0
- package/dist/internal/promote/assertion-promote-precommit.js.map +1 -0
- package/dist/internal/vm-reconcile-sweep-admission.d.ts +9 -0
- package/dist/internal/vm-reconcile-sweep-admission.d.ts.map +1 -0
- package/dist/internal/vm-reconcile-sweep-admission.js +2 -0
- package/dist/internal/vm-reconcile-sweep-admission.js.map +1 -0
- package/dist/internal/vm-reconcile-sweep.d.ts +33 -0
- package/dist/internal/vm-reconcile-sweep.d.ts.map +1 -0
- package/dist/internal/vm-reconcile-sweep.js +168 -0
- package/dist/internal/vm-reconcile-sweep.js.map +1 -0
- package/dist/local-context-graph-provenance.d.ts +30 -0
- package/dist/local-context-graph-provenance.d.ts.map +1 -0
- package/dist/local-context-graph-provenance.js +50 -0
- package/dist/local-context-graph-provenance.js.map +1 -0
- package/dist/local-context-graph-registration-status.d.ts +20 -0
- package/dist/local-context-graph-registration-status.d.ts.map +1 -0
- package/dist/local-context-graph-registration-status.js +91 -0
- package/dist/local-context-graph-registration-status.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 +82 -0
- package/dist/map-with-concurrency.js.map +1 -1
- package/dist/p2p/messenger.d.ts +13 -13
- package/dist/p2p/messenger.d.ts.map +1 -1
- package/dist/p2p/messenger.js +23 -15
- package/dist/p2p/messenger.js.map +1 -1
- package/dist/p2p/network-admission-coordinator.d.ts +20 -0
- package/dist/p2p/network-admission-coordinator.d.ts.map +1 -1
- package/dist/p2p/network-admission-coordinator.js +58 -3
- package/dist/p2p/network-admission-coordinator.js.map +1 -1
- package/dist/p2p/network-admission-probe-retry.d.ts +10 -0
- package/dist/p2p/network-admission-probe-retry.d.ts.map +1 -1
- package/dist/p2p/network-admission-probe-retry.js +23 -0
- package/dist/p2p/network-admission-probe-retry.js.map +1 -1
- package/dist/p2p/network-admission.d.ts +4 -0
- package/dist/p2p/network-admission.d.ts.map +1 -1
- package/dist/p2p/network-admission.js +10 -0
- package/dist/p2p/network-admission.js.map +1 -1
- package/dist/p2p/outbox-drain-types.d.ts +26 -0
- package/dist/p2p/outbox-drain-types.d.ts.map +1 -0
- package/dist/p2p/outbox-drain-types.js +2 -0
- package/dist/p2p/outbox-drain-types.js.map +1 -0
- package/dist/p2p/outbox-drainer.d.ts +21 -5
- package/dist/p2p/outbox-drainer.d.ts.map +1 -1
- package/dist/p2p/outbox-drainer.js +71 -22
- package/dist/p2p/outbox-drainer.js.map +1 -1
- package/dist/p2p/peer-connection.d.ts +11 -0
- package/dist/p2p/peer-connection.d.ts.map +1 -0
- package/dist/p2p/peer-connection.js +2 -0
- package/dist/p2p/peer-connection.js.map +1 -0
- package/dist/p2p/peer-event-lifetime.d.ts +15 -0
- package/dist/p2p/peer-event-lifetime.d.ts.map +1 -0
- package/dist/p2p/peer-event-lifetime.js +46 -0
- package/dist/p2p/peer-event-lifetime.js.map +1 -0
- package/dist/p2p/sync-transport.d.ts +14 -4
- package/dist/p2p/sync-transport.d.ts.map +1 -1
- package/dist/p2p/sync-transport.js +14 -4
- package/dist/p2p/sync-transport.js.map +1 -1
- package/dist/prepare-unscoped-context-graph-read-checks.d.ts +16 -0
- package/dist/prepare-unscoped-context-graph-read-checks.d.ts.map +1 -0
- package/dist/prepare-unscoped-context-graph-read-checks.js +133 -0
- package/dist/prepare-unscoped-context-graph-read-checks.js.map +1 -0
- package/dist/profile-manager.d.ts.map +1 -1
- package/dist/profile-manager.js.map +1 -1
- package/dist/random-sampling-bind.d.ts +23 -3
- package/dist/random-sampling-bind.d.ts.map +1 -1
- package/dist/random-sampling-bind.js +38 -19
- package/dist/random-sampling-bind.js.map +1 -1
- package/dist/random-sampling-eligibility.d.ts +24 -0
- package/dist/random-sampling-eligibility.d.ts.map +1 -0
- package/dist/random-sampling-eligibility.js +31 -0
- package/dist/random-sampling-eligibility.js.map +1 -0
- package/dist/random-sampling-runtime.d.ts +86 -0
- package/dist/random-sampling-runtime.d.ts.map +1 -0
- package/dist/random-sampling-runtime.js +228 -0
- package/dist/random-sampling-runtime.js.map +1 -0
- package/dist/registered-context-graph-authority.d.ts +29 -0
- package/dist/registered-context-graph-authority.d.ts.map +1 -0
- package/dist/registered-context-graph-authority.js +3 -0
- package/dist/registered-context-graph-authority.js.map +1 -0
- package/dist/registered-context-graph-participant-mutation.d.ts +1 -1
- package/dist/registered-context-graph-participant-mutation.d.ts.map +1 -1
- package/dist/registered-context-graph-participant-mutation.js.map +1 -1
- package/dist/rfc64/authority-rpc-circuit-breaker-v1.d.ts +150 -0
- package/dist/rfc64/authority-rpc-circuit-breaker-v1.d.ts.map +1 -0
- package/dist/rfc64/authority-rpc-circuit-breaker-v1.js +360 -0
- package/dist/rfc64/authority-rpc-circuit-breaker-v1.js.map +1 -0
- package/dist/rfc64/background-work-dispatcher-v1.d.ts +21 -0
- package/dist/rfc64/background-work-dispatcher-v1.d.ts.map +1 -0
- package/dist/rfc64/background-work-dispatcher-v1.js +144 -0
- package/dist/rfc64/background-work-dispatcher-v1.js.map +1 -0
- package/dist/rfc64/catalog-access-policy-v1.d.ts +50 -19
- package/dist/rfc64/catalog-access-policy-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-access-policy-v1.js +229 -15
- package/dist/rfc64/catalog-access-policy-v1.js.map +1 -1
- package/dist/rfc64/catalog-authority-config-v1.d.ts +9 -0
- package/dist/rfc64/catalog-authority-config-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-authority-config-v1.js +15 -0
- package/dist/rfc64/catalog-authority-config-v1.js.map +1 -1
- package/dist/rfc64/catalog-authority-refresh-binding-v1.d.ts +25 -0
- package/dist/rfc64/catalog-authority-refresh-binding-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-authority-refresh-binding-v1.js +60 -0
- package/dist/rfc64/catalog-authority-refresh-binding-v1.js.map +1 -0
- package/dist/rfc64/catalog-authority-refresh-loop-v1.d.ts +63 -0
- package/dist/rfc64/catalog-authority-refresh-loop-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-authority-refresh-loop-v1.js +412 -0
- package/dist/rfc64/catalog-authority-refresh-loop-v1.js.map +1 -0
- package/dist/rfc64/catalog-authority-revision-projection-v1.d.ts +10 -0
- package/dist/rfc64/catalog-authority-revision-projection-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-authority-revision-projection-v1.js +33 -0
- package/dist/rfc64/catalog-authority-revision-projection-v1.js.map +1 -0
- package/dist/rfc64/catalog-limits-v1.d.ts +3 -0
- package/dist/rfc64/catalog-limits-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-limits-v1.js +4 -0
- package/dist/rfc64/catalog-limits-v1.js.map +1 -0
- package/dist/rfc64/catalog-mutation-runtime-v1.d.ts +3 -0
- package/dist/rfc64/catalog-mutation-runtime-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-mutation-runtime-v1.js +27 -3
- package/dist/rfc64/catalog-mutation-runtime-v1.js.map +1 -1
- package/dist/rfc64/catalog-replay-connection-runtime-v1.d.ts +29 -0
- package/dist/rfc64/catalog-replay-connection-runtime-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-replay-connection-runtime-v1.js +82 -0
- package/dist/rfc64/catalog-replay-connection-runtime-v1.js.map +1 -0
- package/dist/rfc64/catalog-replay-generation-v1.d.ts +43 -0
- package/dist/rfc64/catalog-replay-generation-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-replay-generation-v1.js +54 -0
- package/dist/rfc64/catalog-replay-generation-v1.js.map +1 -0
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.d.ts +86 -0
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.js +528 -0
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.js.map +1 -0
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.d.ts +29 -0
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.js +121 -0
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.js.map +1 -0
- package/dist/rfc64/catalog-responsibility-registry-v1.d.ts +59 -0
- package/dist/rfc64/catalog-responsibility-registry-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-responsibility-registry-v1.js +130 -0
- package/dist/rfc64/catalog-responsibility-registry-v1.js.map +1 -0
- package/dist/rfc64/catalog-rollout-authority-reconciliation-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-rollout-authority-reconciliation-v1.js +13 -0
- package/dist/rfc64/catalog-rollout-authority-reconciliation-v1.js.map +1 -1
- package/dist/rfc64/catalog-rollout-authority-v1.d.ts +55 -2
- package/dist/rfc64/catalog-rollout-authority-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-rollout-authority-v1.js +174 -17
- package/dist/rfc64/catalog-rollout-authority-v1.js.map +1 -1
- package/dist/rfc64/catalog-runtime-v1.d.ts +13 -8
- package/dist/rfc64/catalog-runtime-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-runtime-v1.js +48 -16
- package/dist/rfc64/catalog-runtime-v1.js.map +1 -1
- package/dist/rfc64/catalog-shadow-observability-v1.d.ts +136 -0
- package/dist/rfc64/catalog-shadow-observability-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-shadow-observability-v1.js +175 -0
- package/dist/rfc64/catalog-shadow-observability-v1.js.map +1 -0
- package/dist/rfc64/catalog-transport-authorization-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-transport-authorization-v1.js +20 -13
- package/dist/rfc64/catalog-transport-authorization-v1.js.map +1 -1
- package/dist/rfc64/finalized-authority-snapshot-batch-runtime-v1.d.ts +28 -0
- package/dist/rfc64/finalized-authority-snapshot-batch-runtime-v1.d.ts.map +1 -0
- package/dist/rfc64/finalized-authority-snapshot-batch-runtime-v1.js +78 -0
- package/dist/rfc64/finalized-authority-snapshot-batch-runtime-v1.js.map +1 -0
- package/dist/rfc64/finalized-policy-agent-precommit-v1.d.ts +14 -0
- package/dist/rfc64/finalized-policy-agent-precommit-v1.d.ts.map +1 -1
- package/dist/rfc64/finalized-policy-agent-precommit-v1.js +10 -0
- package/dist/rfc64/finalized-policy-agent-precommit-v1.js.map +1 -1
- package/dist/rfc64/finalized-vm-agent-precommit-v1.d.ts +6 -0
- package/dist/rfc64/finalized-vm-agent-precommit-v1.d.ts.map +1 -1
- package/dist/rfc64/finalized-vm-agent-precommit-v1.js +2 -1
- package/dist/rfc64/finalized-vm-agent-precommit-v1.js.map +1 -1
- package/dist/rfc64/inventory-v1/candidate.d.ts +13 -5
- package/dist/rfc64/inventory-v1/candidate.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/candidate.js +133 -3
- 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.map +1 -1
- package/dist/rfc64/inventory-v1/open.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/open.js +28 -3
- package/dist/rfc64/inventory-v1/open.js.map +1 -1
- package/dist/rfc64/inventory-v1/sql.d.ts +13 -1
- package/dist/rfc64/inventory-v1/sql.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/sql.js +42 -2
- package/dist/rfc64/inventory-v1/sql.js.map +1 -1
- package/dist/rfc64/inventory-v1/statements.d.ts +10 -2
- package/dist/rfc64/inventory-v1/statements.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/statements.js +35 -0
- package/dist/rfc64/inventory-v1/statements.js.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-auth-v1.d.ts +9 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-auth-v1.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-auth-v1.js +50 -0
- package/dist/rfc64/inventory-v1/swm-author-inventory-auth-v1.js.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-commit-plan.d.ts +16 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-commit-plan.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-commit-plan.js +28 -0
- package/dist/rfc64/inventory-v1/swm-author-inventory-commit-plan.js.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-contracts.d.ts +19 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-contracts.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-contracts.js.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-persistence.d.ts +5 -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 +137 -13
- package/dist/rfc64/inventory-v1/swm-author-inventory-persistence.js.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-sql-codec.d.ts +2 -2
- package/dist/rfc64/inventory-v1/swm-author-inventory-sql-codec.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-sql-codec.js.map +1 -1
- package/dist/rfc64/legacy-swm-boundary-v1.d.ts +69 -0
- package/dist/rfc64/legacy-swm-boundary-v1.d.ts.map +1 -0
- package/dist/rfc64/legacy-swm-boundary-v1.js +749 -0
- package/dist/rfc64/legacy-swm-boundary-v1.js.map +1 -0
- package/dist/rfc64/persistence-v1.d.ts +3 -0
- package/dist/rfc64/persistence-v1.d.ts.map +1 -1
- package/dist/rfc64/persistence-v1.js +16 -2
- package/dist/rfc64/persistence-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-activation-config-v1.d.ts +41 -2
- package/dist/rfc64/public-catalog-activation-config-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-activation-config-v1.js +252 -33
- package/dist/rfc64/public-catalog-activation-config-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-native-receiver-v1.d.ts +29 -0
- package/dist/rfc64/public-catalog-native-receiver-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-native-receiver-v1.js +381 -256
- package/dist/rfc64/public-catalog-native-receiver-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-native-reconciler-v1.d.ts +5 -3
- package/dist/rfc64/public-catalog-native-reconciler-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-native-reconciler-v1.js +20 -7
- package/dist/rfc64/public-catalog-native-reconciler-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-native-transport-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-native-transport-v1.js +26 -23
- package/dist/rfc64/public-catalog-native-transport-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-receiver-task-lifecycle-v1.d.ts +35 -4
- package/dist/rfc64/public-catalog-receiver-task-lifecycle-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-receiver-task-lifecycle-v1.js +73 -12
- package/dist/rfc64/public-catalog-receiver-task-lifecycle-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-receiver-v1.d.ts +69 -4
- package/dist/rfc64/public-catalog-receiver-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-receiver-v1.js +299 -34
- package/dist/rfc64/public-catalog-receiver-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-service-v1.d.ts +125 -3
- package/dist/rfc64/public-catalog-service-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-service-v1.js +580 -13
- package/dist/rfc64/public-catalog-service-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-transport-v1.d.ts +54 -2
- package/dist/rfc64/public-catalog-transport-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-transport-v1.js +304 -11
- package/dist/rfc64/public-catalog-transport-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-workload-owner-v1.d.ts +31 -0
- package/dist/rfc64/public-catalog-workload-owner-v1.d.ts.map +1 -0
- package/dist/rfc64/public-catalog-workload-owner-v1.js +110 -0
- package/dist/rfc64/public-catalog-workload-owner-v1.js.map +1 -0
- package/dist/rfc64/release-native-catalog-authority-v1.d.ts +52 -0
- package/dist/rfc64/release-native-catalog-authority-v1.d.ts.map +1 -0
- package/dist/rfc64/release-native-catalog-authority-v1.js +281 -0
- package/dist/rfc64/release-native-catalog-authority-v1.js.map +1 -0
- package/dist/rfc64/swm-author-inventory-producer-v1.d.ts +19 -0
- package/dist/rfc64/swm-author-inventory-producer-v1.d.ts.map +1 -1
- package/dist/rfc64/swm-author-inventory-producer-v1.js +154 -0
- package/dist/rfc64/swm-author-inventory-producer-v1.js.map +1 -1
- package/dist/rfc64/swm-catalog-durable-asset-resolver-v1.d.ts.map +1 -1
- package/dist/rfc64/swm-catalog-durable-asset-resolver-v1.js +43 -29
- package/dist/rfc64/swm-catalog-durable-asset-resolver-v1.js.map +1 -1
- package/dist/rfc64/swm-inventory-shadow-runtime-v1.d.ts +7 -2
- package/dist/rfc64/swm-inventory-shadow-runtime-v1.d.ts.map +1 -1
- package/dist/rfc64/swm-inventory-shadow-runtime-v1.js +24 -10
- package/dist/rfc64/swm-inventory-shadow-runtime-v1.js.map +1 -1
- package/dist/rfc64/swm-recovery-coordinator-v1.d.ts +2 -3
- package/dist/rfc64/swm-recovery-coordinator-v1.d.ts.map +1 -1
- package/dist/rfc64/swm-recovery-coordinator-v1.js +4 -9
- package/dist/rfc64/swm-recovery-coordinator-v1.js.map +1 -1
- package/dist/rfc64/swm-recovery-plan-v1.d.ts +36 -2
- package/dist/rfc64/swm-recovery-plan-v1.d.ts.map +1 -1
- package/dist/rfc64/swm-recovery-plan-v1.js +47 -10
- package/dist/rfc64/swm-recovery-plan-v1.js.map +1 -1
- package/dist/rfc64/unregistered-authority-seed-store-v1.d.ts +57 -0
- package/dist/rfc64/unregistered-authority-seed-store-v1.d.ts.map +1 -0
- package/dist/rfc64/unregistered-authority-seed-store-v1.js +97 -0
- package/dist/rfc64/unregistered-authority-seed-store-v1.js.map +1 -0
- package/dist/rfc64/unregistered-authority-transport-v1.d.ts +131 -0
- package/dist/rfc64/unregistered-authority-transport-v1.d.ts.map +1 -0
- package/dist/rfc64/unregistered-authority-transport-v1.js +379 -0
- package/dist/rfc64/unregistered-authority-transport-v1.js.map +1 -0
- package/dist/rfc64/unregistered-replica-authority-v1.d.ts +114 -0
- package/dist/rfc64/unregistered-replica-authority-v1.d.ts.map +1 -0
- package/dist/rfc64/unregistered-replica-authority-v1.js +242 -0
- package/dist/rfc64/unregistered-replica-authority-v1.js.map +1 -0
- package/dist/sqlite/module-loader-v1.d.ts +6 -1
- package/dist/sqlite/module-loader-v1.d.ts.map +1 -1
- package/dist/sqlite/module-loader-v1.js +5 -3
- package/dist/sqlite/module-loader-v1.js.map +1 -1
- package/dist/swm/swm-catchup-peer-selection.d.ts +11 -1
- package/dist/swm/swm-catchup-peer-selection.d.ts.map +1 -1
- package/dist/swm/swm-catchup-peer-selection.js +18 -1
- package/dist/swm/swm-catchup-peer-selection.js.map +1 -1
- package/dist/sync/auth/request-authorize.d.ts.map +1 -1
- package/dist/sync/auth/request-authorize.js +4 -3
- package/dist/sync/auth/request-authorize.js.map +1 -1
- package/dist/sync/durable-integrity.d.ts.map +1 -1
- package/dist/sync/durable-integrity.js +63 -75
- package/dist/sync/durable-integrity.js.map +1 -1
- package/dist/sync/exact-asset-fetch.d.ts +6 -0
- package/dist/sync/exact-asset-fetch.d.ts.map +1 -1
- package/dist/sync/exact-asset-fetch.js +1 -0
- package/dist/sync/exact-asset-fetch.js.map +1 -1
- package/dist/sync/graph-membership-snapshot.d.ts.map +1 -1
- package/dist/sync/graph-membership-snapshot.js +2 -14
- package/dist/sync/graph-membership-snapshot.js.map +1 -1
- package/dist/sync/graph-scoped-swm-recovery.d.ts +28 -7
- package/dist/sync/graph-scoped-swm-recovery.d.ts.map +1 -1
- package/dist/sync/graph-scoped-swm-recovery.js +262 -121
- package/dist/sync/graph-scoped-swm-recovery.js.map +1 -1
- package/dist/sync/memory-telemetry.d.ts +1 -1
- package/dist/sync/memory-telemetry.d.ts.map +1 -1
- package/dist/sync/metadata-literal.d.ts +4 -0
- package/dist/sync/metadata-literal.d.ts.map +1 -0
- package/dist/sync/metadata-literal.js +6 -0
- package/dist/sync/metadata-literal.js.map +1 -0
- package/dist/sync/on-connect/attempt-accounting.d.ts.map +1 -1
- package/dist/sync/on-connect/attempt-accounting.js +10 -5
- package/dist/sync/on-connect/attempt-accounting.js.map +1 -1
- package/dist/sync/on-connect/peer-job-runner.d.ts +4 -1
- package/dist/sync/on-connect/peer-job-runner.d.ts.map +1 -1
- package/dist/sync/on-connect/peer-job-runner.js +16 -2
- package/dist/sync/on-connect/peer-job-runner.js.map +1 -1
- package/dist/sync/on-connect/peer-scheduler.d.ts +3 -0
- package/dist/sync/on-connect/peer-scheduler.d.ts.map +1 -1
- package/dist/sync/on-connect/peer-scheduler.js +15 -0
- package/dist/sync/on-connect/peer-scheduler.js.map +1 -1
- package/dist/sync/on-connect/sync-on-connect.d.ts +38 -4
- package/dist/sync/on-connect/sync-on-connect.d.ts.map +1 -1
- package/dist/sync/on-connect/sync-on-connect.js +114 -10
- package/dist/sync/on-connect/sync-on-connect.js.map +1 -1
- package/dist/sync/peer-connection.d.ts +24 -0
- package/dist/sync/peer-connection.d.ts.map +1 -0
- package/dist/sync/peer-connection.js +75 -0
- package/dist/sync/peer-connection.js.map +1 -0
- package/dist/sync/peer-sync-session.d.ts +59 -0
- package/dist/sync/peer-sync-session.d.ts.map +1 -0
- package/dist/sync/peer-sync-session.js +139 -0
- package/dist/sync/peer-sync-session.js.map +1 -0
- package/dist/sync/requester/durable-sync.d.ts +4 -2
- package/dist/sync/requester/durable-sync.d.ts.map +1 -1
- package/dist/sync/requester/durable-sync.js +53 -9
- package/dist/sync/requester/durable-sync.js.map +1 -1
- package/dist/sync/requester/entity-slice-recovery.d.ts +53 -0
- package/dist/sync/requester/entity-slice-recovery.d.ts.map +1 -0
- package/dist/sync/requester/entity-slice-recovery.js +77 -0
- package/dist/sync/requester/entity-slice-recovery.js.map +1 -0
- package/dist/sync/requester/exact-durable-fetch.d.ts +27 -0
- package/dist/sync/requester/exact-durable-fetch.d.ts.map +1 -1
- package/dist/sync/requester/exact-durable-fetch.js +39 -10
- package/dist/sync/requester/exact-durable-fetch.js.map +1 -1
- package/dist/sync/requester/graph-scoped-materialization.d.ts.map +1 -1
- package/dist/sync/requester/graph-scoped-materialization.js +17 -2
- package/dist/sync/requester/graph-scoped-materialization.js.map +1 -1
- package/dist/sync/requester/manifest-bound-snapshot-walk.d.ts +55 -0
- package/dist/sync/requester/manifest-bound-snapshot-walk.d.ts.map +1 -0
- package/dist/sync/requester/manifest-bound-snapshot-walk.js +197 -0
- package/dist/sync/requester/manifest-bound-snapshot-walk.js.map +1 -0
- package/dist/sync/requester/page-fetch.d.ts +11 -3
- package/dist/sync/requester/page-fetch.d.ts.map +1 -1
- package/dist/sync/requester/page-fetch.js +208 -174
- package/dist/sync/requester/page-fetch.js.map +1 -1
- package/dist/sync/requester/private-swm-recovery-budget.d.ts +14 -0
- package/dist/sync/requester/private-swm-recovery-budget.d.ts.map +1 -0
- package/dist/sync/requester/private-swm-recovery-budget.js +39 -0
- package/dist/sync/requester/private-swm-recovery-budget.js.map +1 -0
- package/dist/sync/requester/private-swm-snapshot-walk-registry.d.ts +44 -0
- package/dist/sync/requester/private-swm-snapshot-walk-registry.d.ts.map +1 -0
- package/dist/sync/requester/private-swm-snapshot-walk-registry.js +96 -0
- package/dist/sync/requester/private-swm-snapshot-walk-registry.js.map +1 -0
- package/dist/sync/requester/quad-key.d.ts +4 -0
- package/dist/sync/requester/quad-key.d.ts.map +1 -0
- package/dist/sync/requester/quad-key.js +5 -0
- package/dist/sync/requester/quad-key.js.map +1 -0
- package/dist/sync/requester/recovery-execution-guard.d.ts +33 -0
- package/dist/sync/requester/recovery-execution-guard.d.ts.map +1 -0
- package/dist/sync/requester/recovery-execution-guard.js +31 -0
- package/dist/sync/requester/recovery-execution-guard.js.map +1 -0
- package/dist/sync/requester/shared-memory-sync.d.ts +66 -105
- package/dist/sync/requester/shared-memory-sync.d.ts.map +1 -1
- package/dist/sync/requester/shared-memory-sync.js +462 -268
- package/dist/sync/requester/shared-memory-sync.js.map +1 -1
- package/dist/sync/requester/swm-recovery-apply.d.ts +117 -2
- package/dist/sync/requester/swm-recovery-apply.d.ts.map +1 -1
- package/dist/sync/requester/swm-recovery-apply.js +328 -16
- package/dist/sync/requester/swm-recovery-apply.js.map +1 -1
- package/dist/sync/requester/swm-recovery.d.ts +65 -25
- package/dist/sync/requester/swm-recovery.d.ts.map +1 -1
- package/dist/sync/requester/swm-recovery.js +264 -181
- package/dist/sync/requester/swm-recovery.js.map +1 -1
- package/dist/sync/requester/swm-snapshot-materializer.d.ts +9 -0
- package/dist/sync/requester/swm-snapshot-materializer.d.ts.map +1 -1
- package/dist/sync/requester/swm-snapshot-materializer.js +45 -10
- package/dist/sync/requester/swm-snapshot-materializer.js.map +1 -1
- package/dist/sync/requester/swm-target-executor.d.ts +90 -0
- package/dist/sync/requester/swm-target-executor.d.ts.map +1 -0
- package/dist/sync/requester/swm-target-executor.js +200 -0
- package/dist/sync/requester/swm-target-executor.js.map +1 -0
- package/dist/sync/responder/graph-plan.d.ts +25 -1
- package/dist/sync/responder/graph-plan.d.ts.map +1 -1
- package/dist/sync/responder/graph-plan.js +304 -15
- package/dist/sync/responder/graph-plan.js.map +1 -1
- package/dist/sync/selected-swm-bootstrap-admission.d.ts +6 -0
- package/dist/sync/selected-swm-bootstrap-admission.d.ts.map +1 -1
- package/dist/sync/selected-swm-bootstrap-admission.js +21 -0
- package/dist/sync/selected-swm-bootstrap-admission.js.map +1 -1
- package/dist/sync/selected-swm-meta-budget.d.ts +11 -0
- package/dist/sync/selected-swm-meta-budget.d.ts.map +1 -1
- package/dist/sync/selected-swm-meta-budget.js +10 -0
- package/dist/sync/selected-swm-meta-budget.js.map +1 -1
- package/dist/sync/selected-swm-meta-fetcher.d.ts +2 -0
- package/dist/sync/selected-swm-meta-fetcher.d.ts.map +1 -1
- package/dist/sync/selected-swm-meta-fetcher.js +87 -73
- package/dist/sync/selected-swm-meta-fetcher.js.map +1 -1
- package/dist/sync/shared-memory-completion.d.ts +27 -0
- package/dist/sync/shared-memory-completion.d.ts.map +1 -0
- package/dist/sync/shared-memory-completion.js +28 -0
- package/dist/sync/shared-memory-completion.js.map +1 -0
- package/dist/sync/shared-memory-diagnostics.d.ts +106 -0
- package/dist/sync/shared-memory-diagnostics.d.ts.map +1 -0
- package/dist/sync/shared-memory-diagnostics.js +170 -0
- package/dist/sync/shared-memory-diagnostics.js.map +1 -0
- package/dist/sync/shared-memory-freshness.d.ts +2 -3
- package/dist/sync/shared-memory-freshness.d.ts.map +1 -1
- package/dist/sync/shared-memory-freshness.js +0 -9
- package/dist/sync/shared-memory-freshness.js.map +1 -1
- package/dist/sync/shared-memory-graphs.d.ts +14 -0
- package/dist/sync/shared-memory-graphs.d.ts.map +1 -1
- package/dist/sync/shared-memory-graphs.js +71 -0
- package/dist/sync/shared-memory-graphs.js.map +1 -1
- package/dist/sync/work-admission.d.ts +38 -0
- package/dist/sync/work-admission.d.ts.map +1 -0
- package/dist/sync/work-admission.js +70 -0
- package/dist/sync/work-admission.js.map +1 -0
- package/dist/unscoped-query-admission.d.ts +17 -0
- package/dist/unscoped-query-admission.d.ts.map +1 -0
- package/dist/unscoped-query-admission.js +69 -0
- package/dist/unscoped-query-admission.js.map +1 -0
- package/dist/unscoped-query-consistency.d.ts +20 -0
- package/dist/unscoped-query-consistency.d.ts.map +1 -0
- package/dist/unscoped-query-consistency.js +45 -0
- package/dist/unscoped-query-consistency.js.map +1 -0
- package/dist/vm-reconcile-dispatcher.d.ts +114 -0
- package/dist/vm-reconcile-dispatcher.d.ts.map +1 -0
- package/dist/vm-reconcile-dispatcher.js +456 -0
- package/dist/vm-reconcile-dispatcher.js.map +1 -0
- package/package.json +31 -10
- package/dist/rfc64/coalescing-supervisor-v1.d.ts +0 -22
- package/dist/rfc64/coalescing-supervisor-v1.d.ts.map +0 -1
- package/dist/rfc64/coalescing-supervisor-v1.js +0 -110
- package/dist/rfc64/coalescing-supervisor-v1.js.map +0 -1
package/README.md
CHANGED
|
@@ -45,6 +45,30 @@ const agents = await agent.findAgents();
|
|
|
45
45
|
const skills = await agent.findSkills({ skillType: 'sentiment-analysis' });
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
+
## Bounded peer discovery
|
|
49
|
+
|
|
50
|
+
`DiscoveryClient.findAgentPeerPageByAddress(wallet, { limit, afterPeerId?, signal? })`
|
|
51
|
+
requires an integer limit from 1 to `MAX_AGENT_PEER_PAGE_SIZE` (1,024). It returns
|
|
52
|
+
`{ peerIds, nextAfterPeerId }`: peer IDs are unique and ordered, the cursor is
|
|
53
|
+
exclusive, and a null continuation means the query found no further row. The
|
|
54
|
+
query retains at most `limit + 1` rows and does not select optional profile fields.
|
|
55
|
+
The existing `findAgentPeerIdsByAddress(wallet, options?)` remains available as a
|
|
56
|
+
deprecated array-returning facade. It walks bounded pages internally, retaining
|
|
57
|
+
the full result only for callers explicitly using that legacy API.
|
|
58
|
+
|
|
59
|
+
Bounded recovery providers must implement the exported `AgentPeerDiscovery`
|
|
60
|
+
contract. Providers that cannot paginate must reject the lookup; bounded recovery
|
|
61
|
+
reports `lookupFailed` and never substitutes `findAgents()`. This also applies to
|
|
62
|
+
registry discovery during its metadata-refresh fallback. Legacy single-curator
|
|
63
|
+
metadata resolution and callers explicitly using the rich profile API retain
|
|
64
|
+
their existing behavior.
|
|
65
|
+
|
|
66
|
+
A page walk is not a snapshot of a changing registry. Recovery treats tail pages
|
|
67
|
+
as incomplete roster evidence even when a tail page has no continuation. Only a
|
|
68
|
+
fresh first-page query covering the entire bounded roster can support its existing
|
|
69
|
+
absence-proof checks. These local peer IDs do not themselves establish curator
|
|
70
|
+
authority.
|
|
71
|
+
|
|
48
72
|
## Internal Dependencies
|
|
49
73
|
|
|
50
74
|
- `@origintrail-official/dkg-core` — P2P node, crypto, event bus
|
|
@@ -10,13 +10,16 @@ export type ActivePublicContextGraphChainProof = {
|
|
|
10
10
|
detail?: string;
|
|
11
11
|
};
|
|
12
12
|
export type OnChainAccessPolicyState = 0 | 1 | 'unregistered' | 'unknown';
|
|
13
|
-
export type
|
|
14
|
-
slotBindingMode: 'chain-attested-repair';
|
|
15
|
-
}) => Promise<OnChainAccessPolicyState>;
|
|
13
|
+
export type FinalizedOnChainAccessPolicyStateResolver = (contextGraphId: string, operationContext: OperationContext) => Promise<OnChainAccessPolicyState>;
|
|
16
14
|
export type OperationAwareActivePublicChainProofResolver = (contextGraphId: string, operationContext: OperationContext) => Promise<ActivePublicContextGraphChainProof>;
|
|
17
15
|
export type BoundActivePublicChainProofResolver = (operationContext: OperationContext) => Promise<ActivePublicContextGraphChainProof>;
|
|
18
|
-
/**
|
|
19
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Strict metadata-bootstrap proof boundary: owns binding policy, finalized
|
|
18
|
+
* authority-index consistency, RPC classification, and state conversion.
|
|
19
|
+
* Runtime SWM/publish policy gates do not use this resolver and retain fresh
|
|
20
|
+
* current-state reads.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveActivePublicContextGraphChainProof(resolveFinalizedOnChainAccessPolicyState: FinalizedOnChainAccessPolicyStateResolver, contextGraphId: string, operationContext: OperationContext): Promise<ActivePublicContextGraphChainProof>;
|
|
20
23
|
/** Bind one lazy proof promise to one normalized graph for repair + confirmation reuse. */
|
|
21
24
|
export declare function memoizeActivePublicContextGraphChainProof(contextGraphId: string, resolveProof: OperationAwareActivePublicChainProofResolver): BoundActivePublicChainProofResolver;
|
|
22
25
|
//# sourceMappingURL=active-public-context-graph-chain-proof.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active-public-context-graph-chain-proof.d.ts","sourceRoot":"","sources":["../src/active-public-context-graph-chain-proof.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,MAAM,MAAM,kCAAkC,GAC1C;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,GACnB;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,cAAc,CAAA;CAAE,GAC3D;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,MAAM,wBAAwB,GAAG,CAAC,GAAG,CAAC,GAAG,cAAc,GAAG,SAAS,CAAC;AAE1E,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"active-public-context-graph-chain-proof.d.ts","sourceRoot":"","sources":["../src/active-public-context-graph-chain-proof.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,MAAM,MAAM,kCAAkC,GAC1C;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,GACnB;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,cAAc,CAAA;CAAE,GAC3D;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,MAAM,wBAAwB,GAAG,CAAC,GAAG,CAAC,GAAG,cAAc,GAAG,SAAS,CAAC;AAE1E,MAAM,MAAM,yCAAyC,GAAG,CACtD,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,gBAAgB,KAC/B,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAEvC,MAAM,MAAM,4CAA4C,GAAG,CACzD,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,gBAAgB,KAC/B,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAEjD,MAAM,MAAM,mCAAmC,GAAG,CAChD,gBAAgB,EAAE,gBAAgB,KAC/B,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAEjD;;;;;GAKG;AACH,wBAAsB,yCAAyC,CAC7D,wCAAwC,EAAE,yCAAyC,EACnF,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,kCAAkC,CAAC,CAoB7C;AAED,2FAA2F;AAC3F,wBAAgB,yCAAyC,CACvD,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,4CAA4C,GACzD,mCAAmC,CAMrC"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
/**
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Strict metadata-bootstrap proof boundary: owns binding policy, finalized
|
|
4
|
+
* authority-index consistency, RPC classification, and state conversion.
|
|
5
|
+
* Runtime SWM/publish policy gates do not use this resolver and retain fresh
|
|
6
|
+
* current-state reads.
|
|
7
|
+
*/
|
|
8
|
+
export async function resolveActivePublicContextGraphChainProof(resolveFinalizedOnChainAccessPolicyState, contextGraphId, operationContext) {
|
|
4
9
|
let state;
|
|
5
10
|
try {
|
|
6
|
-
state = await
|
|
11
|
+
state = await resolveFinalizedOnChainAccessPolicyState(contextGraphId, operationContext);
|
|
7
12
|
}
|
|
8
13
|
catch (error) {
|
|
9
14
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active-public-context-graph-chain-proof.js","sourceRoot":"","sources":["../src/active-public-context-graph-chain-proof.ts"],"names":[],"mappings":"AAAA,sCAAsC;
|
|
1
|
+
{"version":3,"file":"active-public-context-graph-chain-proof.js","sourceRoot":"","sources":["../src/active-public-context-graph-chain-proof.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAyBtC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,yCAAyC,CAC7D,wCAAmF,EACnF,cAAsB,EACtB,gBAAkC;IAElC,IAAI,KAA+B,CAAC;IACpC,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,wCAAwC,CACpD,cAAc,EACd,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC/D,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC5C,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACnE,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IACzD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AACpD,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,yCAAyC,CACvD,cAAsB,EACtB,YAA0D;IAE1D,IAAI,KAA8D,CAAC;IACnE,OAAO,CAAC,gBAAgB,EAAE,EAAE;QAC1B,KAAK,KAAK,YAAY,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** Maximum peer IDs in one wallet-registry page, excluding one lookahead row. */
|
|
2
|
+
export declare const MAX_AGENT_PEER_PAGE_SIZE = 1024;
|
|
3
|
+
export interface AgentPeerPageRequest {
|
|
4
|
+
/** Positive integer, at most MAX_AGENT_PEER_PAGE_SIZE. */
|
|
5
|
+
readonly limit: number;
|
|
6
|
+
/** Exclusive lexical peer-ID cursor; omit for the first page. */
|
|
7
|
+
readonly afterPeerId?: string;
|
|
8
|
+
readonly signal?: AbortSignal;
|
|
9
|
+
}
|
|
10
|
+
export interface AgentPeerPage {
|
|
11
|
+
/** Strictly increasing, duplicate-free peer IDs; at most request.limit. */
|
|
12
|
+
readonly peerIds: readonly string[];
|
|
13
|
+
/** Last returned peer ID when another row exists, otherwise null. */
|
|
14
|
+
readonly nextAfterPeerId: string | null;
|
|
15
|
+
}
|
|
16
|
+
/** Required capability for bounded recovery. Unsupported providers must reject. */
|
|
17
|
+
export interface AgentPeerDiscovery {
|
|
18
|
+
findAgentPeerPageByAddress(agentAddress: string, request: AgentPeerPageRequest): Promise<AgentPeerPage>;
|
|
19
|
+
}
|
|
20
|
+
export declare function validateAgentPeerPageRequest(request: AgentPeerPageRequest): void;
|
|
21
|
+
/** Reject a broken provider contract before treating a page as registry evidence. */
|
|
22
|
+
export declare function validateAgentPeerPage(page: unknown, request: AgentPeerPageRequest): AgentPeerPage;
|
|
23
|
+
export declare function readAgentPeerPage(discovery: AgentPeerDiscovery, agentAddress: string, request: AgentPeerPageRequest): Promise<AgentPeerPage>;
|
|
24
|
+
//# sourceMappingURL=agent-peer-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-peer-discovery.d.ts","sourceRoot":"","sources":["../src/agent-peer-discovery.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,MAAM,WAAW,oBAAoB;IACnC,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,qEAAqE;IACrE,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACzG;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAQhF;AAED,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA8BjG;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,kBAAkB,EAC7B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAKxB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/** Maximum peer IDs in one wallet-registry page, excluding one lookahead row. */
|
|
2
|
+
export const MAX_AGENT_PEER_PAGE_SIZE = 1024;
|
|
3
|
+
export function validateAgentPeerPageRequest(request) {
|
|
4
|
+
if (!Number.isSafeInteger(request.limit) || request.limit < 1 || request.limit > MAX_AGENT_PEER_PAGE_SIZE) {
|
|
5
|
+
throw new RangeError(`Peer page limit must be an integer from 1 to ${MAX_AGENT_PEER_PAGE_SIZE}`);
|
|
6
|
+
}
|
|
7
|
+
if (request.afterPeerId !== undefined && (typeof request.afterPeerId !== 'string' || request.afterPeerId.length === 0)) {
|
|
8
|
+
throw new TypeError('Peer page cursor must be a nonempty string');
|
|
9
|
+
}
|
|
10
|
+
request.signal?.throwIfAborted();
|
|
11
|
+
}
|
|
12
|
+
/** Reject a broken provider contract before treating a page as registry evidence. */
|
|
13
|
+
export function validateAgentPeerPage(page, request) {
|
|
14
|
+
if (page === null || typeof page !== 'object' || Array.isArray(page)) {
|
|
15
|
+
throw new TypeError('Peer discovery returned an invalid page');
|
|
16
|
+
}
|
|
17
|
+
const { peerIds: rawPeerIds, nextAfterPeerId } = page;
|
|
18
|
+
if (!Array.isArray(rawPeerIds)) {
|
|
19
|
+
throw new Error('Peer discovery exceeded its page bound');
|
|
20
|
+
}
|
|
21
|
+
const peerCount = rawPeerIds.length;
|
|
22
|
+
if (!Number.isSafeInteger(peerCount) || peerCount < 0 || peerCount > request.limit) {
|
|
23
|
+
throw new Error('Peer discovery exceeded its page bound');
|
|
24
|
+
}
|
|
25
|
+
if (nextAfterPeerId !== null && typeof nextAfterPeerId !== 'string') {
|
|
26
|
+
throw new TypeError('Peer discovery returned an invalid continuation');
|
|
27
|
+
}
|
|
28
|
+
const peerIds = [];
|
|
29
|
+
let previous = request.afterPeerId;
|
|
30
|
+
for (let index = 0; index < peerCount; index++) {
|
|
31
|
+
const peerId = rawPeerIds[index];
|
|
32
|
+
if (typeof peerId !== 'string' || peerId.length === 0 || (previous !== undefined && peerId <= previous)) {
|
|
33
|
+
throw new Error('Peer discovery returned a non-monotonic page');
|
|
34
|
+
}
|
|
35
|
+
peerIds.push(peerId);
|
|
36
|
+
previous = peerId;
|
|
37
|
+
}
|
|
38
|
+
if (nextAfterPeerId !== null && (peerIds.length !== request.limit || nextAfterPeerId !== previous)) {
|
|
39
|
+
throw new Error('Peer discovery returned an invalid continuation');
|
|
40
|
+
}
|
|
41
|
+
request.signal?.throwIfAborted();
|
|
42
|
+
return { peerIds, nextAfterPeerId };
|
|
43
|
+
}
|
|
44
|
+
export async function readAgentPeerPage(discovery, agentAddress, request) {
|
|
45
|
+
const boundedRequest = Object.freeze({ ...request });
|
|
46
|
+
validateAgentPeerPageRequest(boundedRequest);
|
|
47
|
+
const page = await discovery.findAgentPeerPageByAddress(agentAddress, boundedRequest);
|
|
48
|
+
return validateAgentPeerPage(page, boundedRequest);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=agent-peer-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-peer-discovery.js","sourceRoot":"","sources":["../src/agent-peer-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,28 @@ export interface AgentDelegationPayload {
|
|
|
40
40
|
export interface SignedAgentDelegation extends AgentDelegationPayload {
|
|
41
41
|
/** EIP-191 signature over `computeDelegationDigest(payload)` by `agentAddress`. */
|
|
42
42
|
signature: string;
|
|
43
|
+
/**
|
|
44
|
+
* Optional self-authenticating public keys for cold private enrollment.
|
|
45
|
+
* Each proof is signed independently by `agentAddress`; the delegation
|
|
46
|
+
* signature intentionally continues to cover only the stable v2 payload so
|
|
47
|
+
* older curators can verify it. `workspaceEncryptionKeysSignature` binds
|
|
48
|
+
* this exact bundle to the signed delegation for upgraded curators.
|
|
49
|
+
*/
|
|
50
|
+
workspaceEncryptionKeys?: Array<{
|
|
51
|
+
encryptionKeyAlgorithm: 'X25519';
|
|
52
|
+
publicEncryptionKey: string;
|
|
53
|
+
encryptionKeyProof: string;
|
|
54
|
+
}>;
|
|
55
|
+
/** Wallet signature over `computeWorkspaceEncryptionKeysAttestationDigest`. */
|
|
56
|
+
workspaceEncryptionKeysSignature?: string;
|
|
43
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Bind a cold-enrollment key bundle to one otherwise backwards-compatible v2
|
|
60
|
+
* delegation. Sorting makes transport reordering harmless while retaining
|
|
61
|
+
* duplicates in the signed payload, so removing or adding any entry changes
|
|
62
|
+
* the digest.
|
|
63
|
+
*/
|
|
64
|
+
export declare function computeWorkspaceEncryptionKeysAttestationDigest(delegation: Pick<SignedAgentDelegation, 'agentAddress' | 'delegateePeerId' | 'signature' | 'workspaceEncryptionKeys'>): Uint8Array;
|
|
44
65
|
/**
|
|
45
66
|
* Canonical digest used for both signing and verification.
|
|
46
67
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-delegation.d.ts","sourceRoot":"","sources":["../../src/auth/agent-delegation.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,sBAAsB;IACrC,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6FAA6F;IAC7F,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACnE,mFAAmF;IACnF,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-delegation.d.ts","sourceRoot":"","sources":["../../src/auth/agent-delegation.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,sBAAsB;IACrC,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6FAA6F;IAC7F,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACnE,mFAAmF;IACnF,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,KAAK,CAAC;QAC9B,sBAAsB,EAAE,QAAQ,CAAC;QACjC,mBAAmB,EAAE,MAAM,CAAC;QAC5B,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC,CAAC;IACH,+EAA+E;IAC/E,gCAAgC,CAAC,EAAE,MAAM,CAAC;CAC3C;AAED;;;;;GAKG;AACH,wBAAgB,+CAA+C,CAC7D,UAAU,EAAE,IAAI,CACd,qBAAqB,EACrB,cAAc,GAAG,iBAAiB,GAAG,WAAW,GAAG,yBAAyB,CAC7E,GACA,UAAU,CA0BZ;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,sBAAsB,GAAG,UAAU,CAcnF;AAED,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB;IACvE,6FAA6F;IAC7F,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAgB3G;AAED,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,qBAAqB,EACjC,OAAO,CAAC,EAAE,4BAA4B,GACrC,sBAAsB,CAoCxB"}
|
|
@@ -1,4 +1,34 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
|
+
/**
|
|
3
|
+
* Bind a cold-enrollment key bundle to one otherwise backwards-compatible v2
|
|
4
|
+
* delegation. Sorting makes transport reordering harmless while retaining
|
|
5
|
+
* duplicates in the signed payload, so removing or adding any entry changes
|
|
6
|
+
* the digest.
|
|
7
|
+
*/
|
|
8
|
+
export function computeWorkspaceEncryptionKeysAttestationDigest(delegation) {
|
|
9
|
+
if (!delegation.workspaceEncryptionKeys?.length) {
|
|
10
|
+
throw new Error('Workspace encryption-key attestation requires at least one key.');
|
|
11
|
+
}
|
|
12
|
+
const canonicalKeys = [...delegation.workspaceEncryptionKeys]
|
|
13
|
+
.map((key) => ({
|
|
14
|
+
encryptionKeyAlgorithm: key.encryptionKeyAlgorithm,
|
|
15
|
+
publicEncryptionKey: key.publicEncryptionKey,
|
|
16
|
+
encryptionKeyProof: key.encryptionKeyProof,
|
|
17
|
+
}))
|
|
18
|
+
.sort((left, right) => {
|
|
19
|
+
const leftJson = JSON.stringify(left);
|
|
20
|
+
const rightJson = JSON.stringify(right);
|
|
21
|
+
return leftJson < rightJson ? -1 : leftJson > rightJson ? 1 : 0;
|
|
22
|
+
});
|
|
23
|
+
const encoded = ethers.AbiCoder.defaultAbiCoder().encode(['string', 'address', 'string', 'string', 'string'], [
|
|
24
|
+
'dkg.join-encryption-keys.v1',
|
|
25
|
+
delegation.agentAddress.toLowerCase(),
|
|
26
|
+
delegation.delegateePeerId ?? '',
|
|
27
|
+
delegation.signature.toLowerCase(),
|
|
28
|
+
JSON.stringify(canonicalKeys),
|
|
29
|
+
]);
|
|
30
|
+
return ethers.getBytes(ethers.keccak256(encoded));
|
|
31
|
+
}
|
|
2
32
|
/**
|
|
3
33
|
* Canonical digest used for both signing and verification.
|
|
4
34
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-delegation.js","sourceRoot":"","sources":["../../src/auth/agent-delegation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-delegation.js","sourceRoot":"","sources":["../../src/auth/agent-delegation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type NormalizedAuthorityIndexSnapshotConfig } from './authority-index-snapshot-service.js';
|
|
2
|
+
/** Explicit trust in the history supplied by these core PeerIDs. */
|
|
3
|
+
export interface AuthorityIndexConfig {
|
|
4
|
+
mode: 'core-snapshot';
|
|
5
|
+
trustedCorePeers: readonly string[];
|
|
6
|
+
maxTailBlocks?: number;
|
|
7
|
+
/** Increment to discard cached trusted history while keeping the same peers. */
|
|
8
|
+
cacheEpoch?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface ResolvedAuthorityIndexConfig extends AuthorityIndexConfig {
|
|
11
|
+
readonly maxTailBlocks: number;
|
|
12
|
+
readonly cacheEpoch: number;
|
|
13
|
+
/** Canonical identities retained for transport and persistence namespacing. */
|
|
14
|
+
readonly snapshot: NormalizedAuthorityIndexSnapshotConfig;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* `nodeRole` is required: this resolver's job includes rejecting cores, so a
|
|
18
|
+
* default would silently opt an embedder's unlabelled core out of that rule.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveAuthorityIndexConfig(config: unknown, nodeRole: 'core' | 'edge'): ResolvedAuthorityIndexConfig | undefined;
|
|
21
|
+
//# sourceMappingURL=authority-index-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authority-index-config.d.ts","sourceRoot":"","sources":["../src/authority-index-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,sCAAsC,EAC5C,MAAM,uCAAuC,CAAC;AAI/C,oEAAoE;AACpE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,eAAe,CAAC;IACtB,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,4BAA6B,SAAQ,oBAAoB;IACxE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,sCAAsC,CAAC;CAC3D;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,GAAG,MAAM,GACxB,4BAA4B,GAAG,SAAS,CA6C1C"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { normalizeAuthorityIndexSnapshotConfig, } from './authority-index-snapshot-service.js';
|
|
3
|
+
const resolvedConfigs = new WeakSet();
|
|
4
|
+
/**
|
|
5
|
+
* `nodeRole` is required: this resolver's job includes rejecting cores, so a
|
|
6
|
+
* default would silently opt an embedder's unlabelled core out of that rule.
|
|
7
|
+
*/
|
|
8
|
+
export function resolveAuthorityIndexConfig(config, nodeRole) {
|
|
9
|
+
if (config === undefined)
|
|
10
|
+
return undefined;
|
|
11
|
+
if (config === null || typeof config !== 'object' || Array.isArray(config)) {
|
|
12
|
+
throw new TypeError('authorityIndex must be an object');
|
|
13
|
+
}
|
|
14
|
+
const allowedKeys = new Set(['mode', 'trustedCorePeers', 'maxTailBlocks', 'cacheEpoch']);
|
|
15
|
+
const unknownKeys = Object.keys(config).filter((key) => !allowedKeys.has(key));
|
|
16
|
+
if (unknownKeys.length > 0) {
|
|
17
|
+
throw new TypeError(`Unknown authorityIndex option(s): ${unknownKeys.join(', ')}. `
|
|
18
|
+
+ 'Supported options: mode, trustedCorePeers, maxTailBlocks, cacheEpoch');
|
|
19
|
+
}
|
|
20
|
+
const value = config;
|
|
21
|
+
const cacheEpoch = value.cacheEpoch === undefined ? 0 : value.cacheEpoch;
|
|
22
|
+
if (!Number.isSafeInteger(cacheEpoch) || cacheEpoch < 0) {
|
|
23
|
+
throw new TypeError('authorityIndex.cacheEpoch must be a non-negative safe integer');
|
|
24
|
+
}
|
|
25
|
+
if (value.mode !== 'core-snapshot') {
|
|
26
|
+
throw new TypeError('authorityIndex.mode must be core-snapshot');
|
|
27
|
+
}
|
|
28
|
+
if (nodeRole !== 'edge') {
|
|
29
|
+
throw new TypeError('authorityIndex core-snapshot mode is only supported on edge nodes');
|
|
30
|
+
}
|
|
31
|
+
// The daemon validates before allocating resources, then passes this same
|
|
32
|
+
// immutable value to DKGAgent.create. Only our own objects bypass re-parsing.
|
|
33
|
+
if (resolvedConfigs.has(config))
|
|
34
|
+
return config;
|
|
35
|
+
try {
|
|
36
|
+
const normalized = normalizeAuthorityIndexSnapshotConfig(value);
|
|
37
|
+
const resolved = {
|
|
38
|
+
mode: 'core-snapshot',
|
|
39
|
+
trustedCorePeers: Object.freeze(normalized.trustedCorePeers.map((peer) => peer.multiaddr)),
|
|
40
|
+
maxTailBlocks: normalized.maxTailBlocks,
|
|
41
|
+
cacheEpoch,
|
|
42
|
+
snapshot: normalized,
|
|
43
|
+
};
|
|
44
|
+
// Persisted config keeps its public wire shape; parsed runtime metadata must
|
|
45
|
+
// not become an unknown field when a caller serializes a resolved config.
|
|
46
|
+
Object.defineProperty(resolved, 'snapshot', { enumerable: false });
|
|
47
|
+
Object.freeze(resolved);
|
|
48
|
+
resolvedConfigs.add(resolved);
|
|
49
|
+
return resolved;
|
|
50
|
+
}
|
|
51
|
+
catch (cause) {
|
|
52
|
+
throw new TypeError(`authorityIndex: ${cause instanceof Error ? cause.message : String(cause)}`, { cause });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=authority-index-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authority-index-config.js","sourceRoot":"","sources":["../src/authority-index-config.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EACL,qCAAqC,GAEtC,MAAM,uCAAuC,CAAC;AAE/C,MAAM,eAAe,GAAG,IAAI,OAAO,EAAU,CAAC;AAkB9C;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAe,EACf,QAAyB;IAEzB,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;IACzF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,SAAS,CACjB,qCAAqC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;cAC7D,sEAAsE,CACzE,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,MAAuC,CAAC;IACtD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IACzE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,SAAS,CAAC,+DAA+D,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,SAAS,CAAC,mEAAmE,CAAC,CAAC;IAC3F,CAAC;IACD,0EAA0E;IAC1E,8EAA8E;IAC9E,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,MAAsC,CAAC;IAC/E,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,qCAAqC,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,eAAwB;YAC9B,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1F,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,UAAU;YACV,QAAQ,EAAE,UAAU;SACrB,CAAC;QACF,6EAA6E;QAC7E,0EAA0E;QAC1E,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxB,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,SAAS,CAAC,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9G,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type ContextGraphAuthorityIndexSnapshotRequest } from '@origintrail-official/dkg-chain';
|
|
2
|
+
import { type AuthorityIndexSnapshotConfig, type AuthorityIndexSnapshotPeer, type NormalizedAuthorityIndexSnapshotConfig } from './authority-index-snapshot-config.js';
|
|
3
|
+
import { type Status } from './authority-index-snapshot-wire.js';
|
|
4
|
+
export interface AuthorityIndexSnapshotTransportOptions {
|
|
5
|
+
readonly signal: AbortSignal;
|
|
6
|
+
readonly timeoutMs: number;
|
|
7
|
+
readonly maxReadBytes: number;
|
|
8
|
+
readonly payloadReuse: 'single-use';
|
|
9
|
+
}
|
|
10
|
+
export type AuthorityIndexSnapshotClientOptions = ({
|
|
11
|
+
readonly config: AuthorityIndexSnapshotConfig;
|
|
12
|
+
readonly normalizedConfig?: never;
|
|
13
|
+
} | {
|
|
14
|
+
readonly normalizedConfig: NormalizedAuthorityIndexSnapshotConfig;
|
|
15
|
+
readonly config?: never;
|
|
16
|
+
}) & {
|
|
17
|
+
/**
|
|
18
|
+
* Prime peer.multiaddr, then call ProtocolRouter.send(peer.peerId, protocol, ...).
|
|
19
|
+
* The router's authenticated Noise connection binds the response to that exact
|
|
20
|
+
* configured PeerID. Never implement this callback with a response-claimed ID.
|
|
21
|
+
* Pass the complete options object: single-use bypasses pooled buffering and
|
|
22
|
+
* maxReadBytes aborts the response stream before its wire budget is exceeded.
|
|
23
|
+
*/
|
|
24
|
+
readonly request: (peer: AuthorityIndexSnapshotPeer, bytes: Uint8Array, options: AuthorityIndexSnapshotTransportOptions) => Promise<Uint8Array>;
|
|
25
|
+
readonly timeoutMs?: number;
|
|
26
|
+
/** One peer walk, including chain admission, never gets more than 30 seconds. */
|
|
27
|
+
readonly overallTimeoutMs?: number;
|
|
28
|
+
};
|
|
29
|
+
export declare class AuthorityIndexSnapshotUnavailableError extends AggregateError {
|
|
30
|
+
readonly code = "AUTHORITY_INDEX_SNAPSHOT_UNAVAILABLE";
|
|
31
|
+
constructor(errors: readonly unknown[]);
|
|
32
|
+
}
|
|
33
|
+
export declare class AuthorityIndexSnapshotPeerStatusError extends Error {
|
|
34
|
+
readonly peerId: string;
|
|
35
|
+
readonly status: Status;
|
|
36
|
+
constructor(peerId: string, status: Status);
|
|
37
|
+
}
|
|
38
|
+
/** Ordered, bounded failover; no discovery, multicast, or durable message outbox. */
|
|
39
|
+
export declare function createAuthorityIndexSnapshotClient(options: AuthorityIndexSnapshotClientOptions): {
|
|
40
|
+
fetchSnapshot(request: ContextGraphAuthorityIndexSnapshotRequest, signal?: AbortSignal, validateSnapshot?: (snapshot: unknown, signal?: AbortSignal) => Promise<void>): Promise<unknown>;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=authority-index-snapshot-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authority-index-snapshot-client.d.ts","sourceRoot":"","sources":["../src/authority-index-snapshot-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,yCAAyC,EAC/C,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEL,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,sCAAsC,EAC5C,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAUL,KAAK,MAAM,EACZ,MAAM,oCAAoC,CAAC;AAI5C,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CACrC;AAED,MAAM,MAAM,mCAAmC,GAAG,CAC9C;IAAE,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAA;CAAE,GACpF;IAAE,QAAQ,CAAC,gBAAgB,EAAE,sCAAsC,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CACjG,GAAG;IACF;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,CAChB,IAAI,EAAE,0BAA0B,EAChC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,sCAAsC,KAC5C,OAAO,CAAC,UAAU,CAAC,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,iFAAiF;IACjF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF,qBAAa,sCAAuC,SAAQ,cAAc;IACxE,QAAQ,CAAC,IAAI,0CAA0C;gBAE3C,MAAM,EAAE,SAAS,OAAO,EAAE;CAIvC;AAED,qBAAa,qCAAsC,SAAQ,KAAK;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAvC,MAAM,EAAE,MAAM,EAAW,MAAM,EAAE,MAAM;CAI7D;AAED,qFAAqF;AACrF,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,mCAAmC,GAAG;IAChG,aAAa,CACX,OAAO,EAAE,yCAAyC,EAClD,MAAM,CAAC,EAAE,WAAW,EACpB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAC5E,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB,CAiGA"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { CONTEXT_GRAPH_AUTHORITY_INDEX_BOOTSTRAP_TIMEOUT_MS, decodeContextGraphAuthorityIndexSnapshot, } from '@origintrail-official/dkg-chain';
|
|
3
|
+
import { normalizeAuthorityIndexSnapshotConfig, } from './authority-index-snapshot-config.js';
|
|
4
|
+
import { AUTHORITY_INDEX_SNAPSHOT_MAX_REQUEST_BYTES, AUTHORITY_INDEX_SNAPSHOT_MAX_RESPONSE_BYTES, encoder, exactKeys, hasSnapshotEnvelopeKeys, parseBounded, record, STATUSES, validateRequest, } from './authority-index-snapshot-wire.js';
|
|
5
|
+
const DEFAULT_TIMEOUT_MS = 10_000;
|
|
6
|
+
export class AuthorityIndexSnapshotUnavailableError extends AggregateError {
|
|
7
|
+
code = 'AUTHORITY_INDEX_SNAPSHOT_UNAVAILABLE';
|
|
8
|
+
constructor(errors) {
|
|
9
|
+
super(errors, 'No configured trusted core supplied a usable authority index snapshot; retry later');
|
|
10
|
+
this.name = 'AuthorityIndexSnapshotUnavailableError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class AuthorityIndexSnapshotPeerStatusError extends Error {
|
|
14
|
+
peerId;
|
|
15
|
+
status;
|
|
16
|
+
constructor(peerId, status) {
|
|
17
|
+
super(`Authority index core ${peerId} replied ${status}`);
|
|
18
|
+
this.peerId = peerId;
|
|
19
|
+
this.status = status;
|
|
20
|
+
this.name = 'AuthorityIndexSnapshotPeerStatusError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** Ordered, bounded failover; no discovery, multicast, or durable message outbox. */
|
|
24
|
+
export function createAuthorityIndexSnapshotClient(options) {
|
|
25
|
+
const config = options.normalizedConfig ?? normalizeAuthorityIndexSnapshotConfig(options.config);
|
|
26
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
27
|
+
if (!Number.isSafeInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > DEFAULT_TIMEOUT_MS) {
|
|
28
|
+
throw new Error('Authority index snapshot timeout must be an integer between 1 and 10000 ms');
|
|
29
|
+
}
|
|
30
|
+
const overallTimeoutMs = options.overallTimeoutMs ?? CONTEXT_GRAPH_AUTHORITY_INDEX_BOOTSTRAP_TIMEOUT_MS;
|
|
31
|
+
if (!Number.isSafeInteger(overallTimeoutMs) || overallTimeoutMs < 1
|
|
32
|
+
|| overallTimeoutMs > CONTEXT_GRAPH_AUTHORITY_INDEX_BOOTSTRAP_TIMEOUT_MS) {
|
|
33
|
+
throw new Error('Authority index snapshot overall timeout must be an integer between 1 and 30000 ms');
|
|
34
|
+
}
|
|
35
|
+
return Object.freeze({
|
|
36
|
+
async fetchSnapshot(rawRequest, signal, validateSnapshot) {
|
|
37
|
+
signal?.throwIfAborted();
|
|
38
|
+
const request = validateRequest(rawRequest, config.maxTailBlocks);
|
|
39
|
+
const bytes = encoder.encode(JSON.stringify({ version: 1, request }));
|
|
40
|
+
if (bytes.byteLength > AUTHORITY_INDEX_SNAPSHOT_MAX_REQUEST_BYTES) {
|
|
41
|
+
throw new Error('Authority index snapshot request exceeds wire limit');
|
|
42
|
+
}
|
|
43
|
+
const failures = [];
|
|
44
|
+
const overall = new AbortController();
|
|
45
|
+
const forwardOverallAbort = () => overall.abort(signal.reason);
|
|
46
|
+
signal?.addEventListener('abort', forwardOverallAbort, { once: true });
|
|
47
|
+
const overallDeadline = Date.now() + overallTimeoutMs;
|
|
48
|
+
const overallTimer = setTimeout(() => overall.abort(new Error('Authority index snapshot total seed deadline exceeded')), overallTimeoutMs);
|
|
49
|
+
try {
|
|
50
|
+
for (const peer of config.trustedCorePeers) {
|
|
51
|
+
signal?.throwIfAborted();
|
|
52
|
+
if (overall.signal.aborted)
|
|
53
|
+
break;
|
|
54
|
+
const attempt = new AbortController();
|
|
55
|
+
const forwardAbort = () => attempt.abort(overall.signal.reason);
|
|
56
|
+
overall.signal.addEventListener('abort', forwardAbort, { once: true });
|
|
57
|
+
const attemptTimeoutMs = Math.min(timeoutMs, Math.max(1, overallDeadline - Date.now()));
|
|
58
|
+
const timeout = setTimeout(() => attempt.abort(new Error(`Authority index snapshot peer ${peer.peerId} timeout`)), attemptTimeoutMs);
|
|
59
|
+
let onAttemptAbort;
|
|
60
|
+
try {
|
|
61
|
+
const aborted = new Promise((_, reject) => {
|
|
62
|
+
onAttemptAbort = () => reject(attempt.signal.reason);
|
|
63
|
+
attempt.signal.addEventListener('abort', onAttemptAbort, { once: true });
|
|
64
|
+
});
|
|
65
|
+
const fetched = (async () => {
|
|
66
|
+
const responseBytes = await options.request(peer, bytes, {
|
|
67
|
+
signal: attempt.signal,
|
|
68
|
+
timeoutMs: attemptTimeoutMs,
|
|
69
|
+
maxReadBytes: AUTHORITY_INDEX_SNAPSHOT_MAX_RESPONSE_BYTES,
|
|
70
|
+
payloadReuse: 'single-use',
|
|
71
|
+
});
|
|
72
|
+
attempt.signal.throwIfAborted();
|
|
73
|
+
const response = record(parseBounded(responseBytes, AUTHORITY_INDEX_SNAPSHOT_MAX_RESPONSE_BYTES));
|
|
74
|
+
if (response?.version === 1 && typeof response.status === 'string'
|
|
75
|
+
&& STATUSES.has(response.status) && exactKeys(response, ['version', 'status'])) {
|
|
76
|
+
throw new AuthorityIndexSnapshotPeerStatusError(peer.peerId, response.status);
|
|
77
|
+
}
|
|
78
|
+
if (!response || response.version !== 1 || response.status !== 'ok'
|
|
79
|
+
|| !exactKeys(response, ['version', 'status', 'snapshot'])) {
|
|
80
|
+
throw new Error('Authority index core snapshot invalid response');
|
|
81
|
+
}
|
|
82
|
+
const snapshot = response.snapshot;
|
|
83
|
+
if (!hasSnapshotEnvelopeKeys(snapshot)
|
|
84
|
+
|| decodeContextGraphAuthorityIndexSnapshot(snapshot, request) === undefined) {
|
|
85
|
+
throw new Error('Invalid authority index snapshot envelope, scope, coverage, or integrity');
|
|
86
|
+
}
|
|
87
|
+
// Canonical hash/integrity errors try the next trusted provider,
|
|
88
|
+
// inside both the per-peer and physical seed deadline.
|
|
89
|
+
await validateSnapshot?.(snapshot, attempt.signal);
|
|
90
|
+
attempt.signal.throwIfAborted();
|
|
91
|
+
return snapshot;
|
|
92
|
+
})();
|
|
93
|
+
return await Promise.race([fetched, aborted]);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
signal?.throwIfAborted();
|
|
97
|
+
failures.push(error);
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
clearTimeout(timeout);
|
|
101
|
+
overall.signal.removeEventListener('abort', forwardAbort);
|
|
102
|
+
if (onAttemptAbort)
|
|
103
|
+
attempt.signal.removeEventListener('abort', onAttemptAbort);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (overall.signal.aborted && !failures.includes(overall.signal.reason)) {
|
|
107
|
+
failures.push(overall.signal.reason);
|
|
108
|
+
}
|
|
109
|
+
// Retry classification and cooldown belong to the chain bootstrap owner.
|
|
110
|
+
throw new AuthorityIndexSnapshotUnavailableError(failures);
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
clearTimeout(overallTimer);
|
|
114
|
+
signal?.removeEventListener('abort', forwardOverallAbort);
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=authority-index-snapshot-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authority-index-snapshot-client.js","sourceRoot":"","sources":["../src/authority-index-snapshot-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const AUTHORITY_INDEX_SNAPSHOT_MAX_TRUSTED_PEERS = 8;
|
|
2
|
+
export declare const AUTHORITY_INDEX_SNAPSHOT_DEFAULT_MAX_TAIL_BLOCKS = 2000;
|
|
3
|
+
export interface AuthorityIndexSnapshotConfig {
|
|
4
|
+
readonly trustedCorePeers: readonly string[];
|
|
5
|
+
readonly maxTailBlocks?: number;
|
|
6
|
+
}
|
|
7
|
+
export interface AuthorityIndexSnapshotPeer {
|
|
8
|
+
readonly peerId: string;
|
|
9
|
+
readonly multiaddr: string;
|
|
10
|
+
}
|
|
11
|
+
export interface NormalizedAuthorityIndexSnapshotConfig {
|
|
12
|
+
readonly trustedCorePeers: readonly AuthorityIndexSnapshotPeer[];
|
|
13
|
+
readonly maxTailBlocks: number;
|
|
14
|
+
}
|
|
15
|
+
/** Explicit identities only. Discovery or relay roles never enlarge this trust set. */
|
|
16
|
+
export declare function normalizeAuthorityIndexSnapshotConfig(config: unknown): NormalizedAuthorityIndexSnapshotConfig;
|
|
17
|
+
//# sourceMappingURL=authority-index-snapshot-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authority-index-snapshot-config.d.ts","sourceRoot":"","sources":["../src/authority-index-snapshot-config.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,0CAA0C,IAA2D,CAAC;AACnH,eAAO,MAAM,gDAAgD,OAAQ,CAAC;AAEtE,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,gBAAgB,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACjE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,uFAAuF;AACvF,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,OAAO,GACd,sCAAsC,CA6CxC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { peerIdFromString } from '@libp2p/peer-id';
|
|
3
|
+
import { multiaddr } from '@multiformats/multiaddr';
|
|
4
|
+
import { CONTEXT_GRAPH_AUTHORITY_INDEX_SNAPSHOT_MAX_TAIL_BLOCKS, CONTEXT_GRAPH_AUTHORITY_INDEX_SNAPSHOT_MAX_TRUSTED_PEERS, CONTEXT_GRAPH_AUTHORITY_INDEX_SNAPSHOT_MIN_TAIL_BLOCKS, } from '@origintrail-official/dkg-chain';
|
|
5
|
+
import { record } from './authority-index-snapshot-wire.js';
|
|
6
|
+
export const AUTHORITY_INDEX_SNAPSHOT_MAX_TRUSTED_PEERS = CONTEXT_GRAPH_AUTHORITY_INDEX_SNAPSHOT_MAX_TRUSTED_PEERS;
|
|
7
|
+
export const AUTHORITY_INDEX_SNAPSHOT_DEFAULT_MAX_TAIL_BLOCKS = 2_000;
|
|
8
|
+
/** Explicit identities only. Discovery or relay roles never enlarge this trust set. */
|
|
9
|
+
export function normalizeAuthorityIndexSnapshotConfig(config) {
|
|
10
|
+
const data = record(config);
|
|
11
|
+
if (!data || !Array.isArray(data.trustedCorePeers)
|
|
12
|
+
|| data.trustedCorePeers.length === 0
|
|
13
|
+
|| data.trustedCorePeers.length > AUTHORITY_INDEX_SNAPSHOT_MAX_TRUSTED_PEERS) {
|
|
14
|
+
throw new Error(`Authority index trustedCorePeers must contain at least 1 and at most ${AUTHORITY_INDEX_SNAPSHOT_MAX_TRUSTED_PEERS} explicit multiaddrs`);
|
|
15
|
+
}
|
|
16
|
+
const maxTailBlocks = data.maxTailBlocks === undefined
|
|
17
|
+
? AUTHORITY_INDEX_SNAPSHOT_DEFAULT_MAX_TAIL_BLOCKS
|
|
18
|
+
: data.maxTailBlocks;
|
|
19
|
+
if (typeof maxTailBlocks !== 'number' || !Number.isSafeInteger(maxTailBlocks)
|
|
20
|
+
|| maxTailBlocks < CONTEXT_GRAPH_AUTHORITY_INDEX_SNAPSHOT_MIN_TAIL_BLOCKS
|
|
21
|
+
|| maxTailBlocks > CONTEXT_GRAPH_AUTHORITY_INDEX_SNAPSHOT_MAX_TAIL_BLOCKS) {
|
|
22
|
+
throw new Error(`Authority index maxTailBlocks must be an integer between ${CONTEXT_GRAPH_AUTHORITY_INDEX_SNAPSHOT_MIN_TAIL_BLOCKS} and ${CONTEXT_GRAPH_AUTHORITY_INDEX_SNAPSHOT_MAX_TAIL_BLOCKS}`);
|
|
23
|
+
}
|
|
24
|
+
const identities = new Set();
|
|
25
|
+
const peers = data.trustedCorePeers.map((raw) => {
|
|
26
|
+
if (typeof raw !== 'string' || raw.length === 0 || raw.length > 1_024) {
|
|
27
|
+
throw new Error('Authority index trusted core must be an explicit multiaddr');
|
|
28
|
+
}
|
|
29
|
+
const parsed = multiaddr(raw);
|
|
30
|
+
const components = parsed.getComponents();
|
|
31
|
+
const last = components.at(-1);
|
|
32
|
+
const circuitIndexes = components.flatMap((part, index) => part.name === 'p2p-circuit' ? [index] : []);
|
|
33
|
+
const peerIndexes = components.flatMap((part, index) => part.name === 'p2p' ? [index] : []);
|
|
34
|
+
const host = components[0];
|
|
35
|
+
if (!host || !['ip4', 'ip6', 'dns', 'dns4', 'dns6'].includes(host.name)
|
|
36
|
+
|| !components.some((part) => part.name === 'tcp' || part.name === 'udp')
|
|
37
|
+
|| last?.name !== 'p2p' || !last.value
|
|
38
|
+
|| circuitIndexes.length > 1
|
|
39
|
+
|| (circuitIndexes.length === 0 && peerIndexes.length !== 1)
|
|
40
|
+
|| (circuitIndexes.length === 1 && (peerIndexes.length !== 2
|
|
41
|
+
|| peerIndexes[0] !== circuitIndexes[0] - 1
|
|
42
|
+
|| peerIndexes[1] !== circuitIndexes[0] + 1))) {
|
|
43
|
+
throw new Error('Authority index trusted core requires a host transport and unambiguous final /p2p/<peerId>');
|
|
44
|
+
}
|
|
45
|
+
// Canonicalize alternate encodings so one identity cannot count twice.
|
|
46
|
+
const peerId = peerIdFromString(last.value).toString();
|
|
47
|
+
if (identities.has(peerId))
|
|
48
|
+
throw new Error('Authority index trustedCorePeers contains a duplicate peer identity');
|
|
49
|
+
identities.add(peerId);
|
|
50
|
+
return Object.freeze({ peerId, multiaddr: parsed.toString() });
|
|
51
|
+
});
|
|
52
|
+
return Object.freeze({ trustedCorePeers: Object.freeze(peers), maxTailBlocks });
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=authority-index-snapshot-config.js.map
|