@cello-protocol/daemon 0.0.227 → 0.0.228
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/agent-admin-handlers.d.ts +56 -0
- package/dist/agent-admin-handlers.d.ts.map +1 -0
- package/dist/agent-admin-handlers.js +73 -0
- package/dist/agent-admin-handlers.js.map +1 -0
- package/dist/agent-handlers.d.ts +72 -0
- package/dist/agent-handlers.d.ts.map +1 -0
- package/dist/agent-handlers.js +604 -0
- package/dist/agent-handlers.js.map +1 -0
- package/dist/agent-id-migration.d.ts +70 -0
- package/dist/agent-id-migration.d.ts.map +1 -0
- package/dist/agent-id-migration.js +468 -0
- package/dist/agent-id-migration.js.map +1 -0
- package/dist/agent-loader.d.ts +37 -0
- package/dist/agent-loader.d.ts.map +1 -0
- package/dist/agent-loader.js +37 -0
- package/dist/agent-loader.js.map +1 -0
- package/dist/agent-selection-root.d.ts +29 -0
- package/dist/agent-selection-root.d.ts.map +1 -0
- package/dist/agent-selection-root.js +126 -0
- package/dist/agent-selection-root.js.map +1 -0
- package/dist/agent-selection.d.ts +73 -0
- package/dist/agent-selection.d.ts.map +1 -0
- package/dist/agent-selection.js +80 -0
- package/dist/agent-selection.js.map +1 -0
- package/dist/agent-settings-keys.d.ts +52 -0
- package/dist/agent-settings-keys.d.ts.map +1 -0
- package/dist/agent-settings-keys.js +114 -0
- package/dist/agent-settings-keys.js.map +1 -0
- package/dist/agent-state.d.ts +67 -0
- package/dist/agent-state.d.ts.map +1 -0
- package/dist/agent-state.js +66 -0
- package/dist/agent-state.js.map +1 -0
- package/dist/assignment-verify.d.ts +90 -0
- package/dist/assignment-verify.d.ts.map +1 -0
- package/dist/assignment-verify.js +301 -0
- package/dist/assignment-verify.js.map +1 -0
- package/dist/attendance-wiring.d.ts +23 -0
- package/dist/attendance-wiring.d.ts.map +1 -0
- package/dist/attendance-wiring.js +248 -0
- package/dist/attendance-wiring.js.map +1 -0
- package/dist/attestation-body.d.ts +47 -0
- package/dist/attestation-body.d.ts.map +1 -0
- package/dist/attestation-body.js +71 -0
- package/dist/attestation-body.js.map +1 -0
- package/dist/authorship-verification.d.ts +91 -0
- package/dist/authorship-verification.d.ts.map +1 -0
- package/dist/authorship-verification.js +532 -0
- package/dist/authorship-verification.js.map +1 -0
- package/dist/away-detection.d.ts +139 -0
- package/dist/away-detection.d.ts.map +1 -0
- package/dist/away-detection.js +186 -0
- package/dist/away-detection.js.map +1 -0
- package/dist/away-inbox-oneshot.d.ts +40 -0
- package/dist/away-inbox-oneshot.d.ts.map +1 -0
- package/dist/away-inbox-oneshot.js +311 -0
- package/dist/away-inbox-oneshot.js.map +1 -0
- package/dist/backup-restore-handlers.d.ts +10 -0
- package/dist/backup-restore-handlers.d.ts.map +1 -0
- package/dist/backup-restore-handlers.js +82 -0
- package/dist/backup-restore-handlers.js.map +1 -0
- package/dist/backup-restore.d.ts +102 -0
- package/dist/backup-restore.d.ts.map +1 -0
- package/dist/backup-restore.js +341 -0
- package/dist/backup-restore.js.map +1 -0
- package/dist/bin/cello-daemon.d.ts +13 -0
- package/dist/bin/cello-daemon.d.ts.map +1 -0
- package/dist/bin/cello-daemon.js.map +1 -0
- package/dist/boot-agents.d.ts +64 -0
- package/dist/boot-agents.d.ts.map +1 -0
- package/dist/boot-agents.js +241 -0
- package/dist/boot-agents.js.map +1 -0
- package/dist/boot-connection-state.d.ts +38 -0
- package/dist/boot-connection-state.d.ts.map +1 -0
- package/dist/boot-connection-state.js +95 -0
- package/dist/boot-connection-state.js.map +1 -0
- package/dist/boot-core.d.ts +36 -0
- package/dist/boot-core.d.ts.map +1 -0
- package/dist/boot-core.js +293 -0
- package/dist/boot-core.js.map +1 -0
- package/dist/boot-parked-content.d.ts +34 -0
- package/dist/boot-parked-content.d.ts.map +1 -0
- package/dist/boot-parked-content.js +528 -0
- package/dist/boot-parked-content.js.map +1 -0
- package/dist/boot-sweeps.d.ts +22 -0
- package/dist/boot-sweeps.d.ts.map +1 -0
- package/dist/boot-sweeps.js +51 -0
- package/dist/boot-sweeps.js.map +1 -0
- package/dist/bundled-consortium-manifest.d.ts +47 -0
- package/dist/bundled-consortium-manifest.d.ts.map +1 -0
- package/dist/bundled-consortium-manifest.js +116 -0
- package/dist/bundled-consortium-manifest.js.map +1 -0
- package/dist/cbor-blob-migration.d.ts +8 -0
- package/dist/cbor-blob-migration.d.ts.map +1 -0
- package/dist/cbor-blob-migration.js +116 -0
- package/dist/cbor-blob-migration.js.map +1 -0
- package/dist/challenge-verifier.d.ts +12 -0
- package/dist/challenge-verifier.d.ts.map +1 -0
- package/dist/challenge-verifier.js +11 -0
- package/dist/challenge-verifier.js.map +1 -0
- package/dist/channel-log-store.d.ts +80 -0
- package/dist/channel-log-store.d.ts.map +1 -0
- package/dist/channel-log-store.js +290 -0
- package/dist/channel-log-store.js.map +1 -0
- package/dist/close-commitment.d.ts +67 -0
- package/dist/close-commitment.d.ts.map +1 -0
- package/dist/close-commitment.js +78 -0
- package/dist/close-commitment.js.map +1 -0
- package/dist/close-session-handler.d.ts +94 -0
- package/dist/close-session-handler.d.ts.map +1 -0
- package/dist/close-session-handler.js +1418 -0
- package/dist/close-session-handler.js.map +1 -0
- package/dist/co-attendance.d.ts +29 -0
- package/dist/co-attendance.d.ts.map +1 -0
- package/dist/co-attendance.js +32 -0
- package/dist/co-attendance.js.map +1 -0
- package/dist/column-birth.d.ts +40 -0
- package/dist/column-birth.d.ts.map +1 -0
- package/dist/column-birth.js +61 -0
- package/dist/column-birth.js.map +1 -0
- package/dist/connect-or-start.d.ts +25 -0
- package/dist/connect-or-start.d.ts.map +1 -0
- package/dist/connect-or-start.js +175 -0
- package/dist/connect-or-start.js.map +1 -0
- package/dist/connection-agents.d.ts +16 -0
- package/dist/connection-agents.d.ts.map +1 -0
- package/dist/connection-agents.js +68 -0
- package/dist/connection-agents.js.map +1 -0
- package/dist/consent-migration.d.ts +49 -0
- package/dist/consent-migration.d.ts.map +1 -0
- package/dist/consent-migration.js +128 -0
- package/dist/consent-migration.js.map +1 -0
- package/dist/consortium-bootstrap.d.ts +138 -0
- package/dist/consortium-bootstrap.d.ts.map +1 -0
- package/dist/consortium-bootstrap.js +339 -0
- package/dist/consortium-bootstrap.js.map +1 -0
- package/dist/consortium-fingerprint.d.ts +115 -0
- package/dist/consortium-fingerprint.d.ts.map +1 -0
- package/dist/consortium-fingerprint.js +175 -0
- package/dist/consortium-fingerprint.js.map +1 -0
- package/dist/contact-handlers.d.ts +59 -0
- package/dist/contact-handlers.d.ts.map +1 -0
- package/dist/contact-handlers.js +343 -0
- package/dist/contact-handlers.js.map +1 -0
- package/dist/contact-pubkey-case.d.ts +65 -0
- package/dist/contact-pubkey-case.d.ts.map +1 -0
- package/dist/contact-pubkey-case.js +136 -0
- package/dist/contact-pubkey-case.js.map +1 -0
- package/dist/contacts-tier-migration.d.ts +90 -0
- package/dist/contacts-tier-migration.d.ts.map +1 -0
- package/dist/contacts-tier-migration.js +150 -0
- package/dist/contacts-tier-migration.js.map +1 -0
- package/dist/content-encryption-status.d.ts +111 -0
- package/dist/content-encryption-status.d.ts.map +1 -0
- package/dist/content-encryption-status.js +158 -0
- package/dist/content-encryption-status.js.map +1 -0
- package/dist/content-park-client.d.ts +90 -0
- package/dist/content-park-client.d.ts.map +1 -0
- package/dist/content-park-client.js +362 -0
- package/dist/content-park-client.js.map +1 -0
- package/dist/content-park.d.ts +52 -0
- package/dist/content-park.d.ts.map +1 -0
- package/dist/content-park.js +1309 -0
- package/dist/content-park.js.map +1 -0
- package/dist/cross-node-negotiation.d.ts +44 -0
- package/dist/cross-node-negotiation.d.ts.map +1 -0
- package/dist/cross-node-negotiation.js +34 -0
- package/dist/cross-node-negotiation.js.map +1 -0
- package/dist/daemon-handle.d.ts +57 -0
- package/dist/daemon-handle.d.ts.map +1 -0
- package/dist/daemon-handle.js +2 -0
- package/dist/daemon-handle.js.map +1 -0
- package/dist/daemon-status-report.d.ts +50 -0
- package/dist/daemon-status-report.d.ts.map +1 -0
- package/dist/daemon-status-report.js +81 -0
- package/dist/daemon-status-report.js.map +1 -0
- package/dist/daemon.d.ts +45 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +1177 -0
- package/dist/daemon.js.map +1 -0
- package/dist/db-identity-store.d.ts +159 -0
- package/dist/db-identity-store.d.ts.map +1 -0
- package/dist/db-identity-store.js +502 -0
- package/dist/db-identity-store.js.map +1 -0
- package/dist/delivery-open-registry.d.ts +92 -0
- package/dist/delivery-open-registry.d.ts.map +1 -0
- package/dist/delivery-open-registry.js +121 -0
- package/dist/delivery-open-registry.js.map +1 -0
- package/dist/delivery-session-suspects.d.ts +56 -0
- package/dist/delivery-session-suspects.d.ts.map +1 -0
- package/dist/delivery-session-suspects.js +94 -0
- package/dist/delivery-session-suspects.js.map +1 -0
- package/dist/directory-auth-posture.d.ts +87 -0
- package/dist/directory-auth-posture.d.ts.map +1 -0
- package/dist/directory-auth-posture.js +134 -0
- package/dist/directory-auth-posture.js.map +1 -0
- package/dist/directory-bootstrap.d.ts +310 -0
- package/dist/directory-bootstrap.d.ts.map +1 -0
- package/dist/directory-bootstrap.js +557 -0
- package/dist/directory-bootstrap.js.map +1 -0
- package/dist/directory-connect.d.ts +27 -0
- package/dist/directory-connect.d.ts.map +1 -0
- package/dist/directory-connect.js +106 -0
- package/dist/directory-connect.js.map +1 -0
- package/dist/disconnect-cleanup.d.ts +51 -0
- package/dist/disconnect-cleanup.d.ts.map +1 -0
- package/dist/disconnect-cleanup.js +72 -0
- package/dist/disconnect-cleanup.js.map +1 -0
- package/dist/document-amendment-store.d.ts +120 -0
- package/dist/document-amendment-store.d.ts.map +1 -0
- package/dist/document-amendment-store.js +266 -0
- package/dist/document-amendment-store.js.map +1 -0
- package/dist/document-delivery-transport.d.ts +168 -0
- package/dist/document-delivery-transport.d.ts.map +1 -0
- package/dist/document-delivery-transport.js +206 -0
- package/dist/document-delivery-transport.js.map +1 -0
- package/dist/document-engine.d.ts +134 -0
- package/dist/document-engine.d.ts.map +1 -0
- package/dist/document-engine.js +282 -0
- package/dist/document-engine.js.map +1 -0
- package/dist/document-flag.d.ts +58 -0
- package/dist/document-flag.d.ts.map +1 -0
- package/dist/document-flag.js +70 -0
- package/dist/document-flag.js.map +1 -0
- package/dist/document-frame-router.d.ts +245 -0
- package/dist/document-frame-router.d.ts.map +1 -0
- package/dist/document-frame-router.js +397 -0
- package/dist/document-frame-router.js.map +1 -0
- package/dist/document-gate-wiring.d.ts +61 -0
- package/dist/document-gate-wiring.d.ts.map +1 -0
- package/dist/document-gate-wiring.js +125 -0
- package/dist/document-gate-wiring.js.map +1 -0
- package/dist/document-gate.d.ts +149 -0
- package/dist/document-gate.d.ts.map +1 -0
- package/dist/document-gate.js +509 -0
- package/dist/document-gate.js.map +1 -0
- package/dist/document-handlers.d.ts +47 -0
- package/dist/document-handlers.d.ts.map +1 -0
- package/dist/document-handlers.js +2203 -0
- package/dist/document-handlers.js.map +1 -0
- package/dist/document-handshake.d.ts +176 -0
- package/dist/document-handshake.d.ts.map +1 -0
- package/dist/document-handshake.js +452 -0
- package/dist/document-handshake.js.map +1 -0
- package/dist/document-inbound.d.ts +162 -0
- package/dist/document-inbound.d.ts.map +1 -0
- package/dist/document-inbound.js +530 -0
- package/dist/document-inbound.js.map +1 -0
- package/dist/document-json.d.ts +120 -0
- package/dist/document-json.d.ts.map +1 -0
- package/dist/document-json.js +191 -0
- package/dist/document-json.js.map +1 -0
- package/dist/document-layer.d.ts +215 -0
- package/dist/document-layer.d.ts.map +1 -0
- package/dist/document-layer.js +1025 -0
- package/dist/document-layer.js.map +1 -0
- package/dist/document-lifecycle.d.ts +52 -0
- package/dist/document-lifecycle.d.ts.map +1 -0
- package/dist/document-lifecycle.js +134 -0
- package/dist/document-lifecycle.js.map +1 -0
- package/dist/document-live-docs.d.ts +58 -0
- package/dist/document-live-docs.d.ts.map +1 -0
- package/dist/document-live-docs.js +126 -0
- package/dist/document-live-docs.js.map +1 -0
- package/dist/document-notify.d.ts +228 -0
- package/dist/document-notify.d.ts.map +1 -0
- package/dist/document-notify.js +580 -0
- package/dist/document-notify.js.map +1 -0
- package/dist/document-profile.d.ts +61 -0
- package/dist/document-profile.d.ts.map +1 -0
- package/dist/document-profile.js +112 -0
- package/dist/document-profile.js.map +1 -0
- package/dist/document-publish.d.ts +87 -0
- package/dist/document-publish.d.ts.map +1 -0
- package/dist/document-publish.js +173 -0
- package/dist/document-publish.js.map +1 -0
- package/dist/document-reachability.d.ts +42 -0
- package/dist/document-reachability.d.ts.map +1 -0
- package/dist/document-reachability.js +80 -0
- package/dist/document-reachability.js.map +1 -0
- package/dist/document-reconcile-engine.d.ts +66 -0
- package/dist/document-reconcile-engine.d.ts.map +1 -0
- package/dist/document-reconcile-engine.js +225 -0
- package/dist/document-reconcile-engine.js.map +1 -0
- package/dist/document-reconcile-scheduler.d.ts +163 -0
- package/dist/document-reconcile-scheduler.d.ts.map +1 -0
- package/dist/document-reconcile-scheduler.js +303 -0
- package/dist/document-reconcile-scheduler.js.map +1 -0
- package/dist/document-rejection.d.ts +251 -0
- package/dist/document-rejection.d.ts.map +1 -0
- package/dist/document-rejection.js +435 -0
- package/dist/document-rejection.js.map +1 -0
- package/dist/document-screen.d.ts +114 -0
- package/dist/document-screen.d.ts.map +1 -0
- package/dist/document-screen.js +223 -0
- package/dist/document-screen.js.map +1 -0
- package/dist/document-store.d.ts +372 -0
- package/dist/document-store.d.ts.map +1 -0
- package/dist/document-store.js +931 -0
- package/dist/document-store.js.map +1 -0
- package/dist/document-surface.d.ts +32 -0
- package/dist/document-surface.d.ts.map +1 -0
- package/dist/document-surface.js +151 -0
- package/dist/document-surface.js.map +1 -0
- package/dist/document-types.d.ts +94 -0
- package/dist/document-types.d.ts.map +1 -0
- package/dist/document-types.js +90 -0
- package/dist/document-types.js.map +1 -0
- package/dist/document-watch.d.ts +69 -0
- package/dist/document-watch.d.ts.map +1 -0
- package/dist/document-watch.js +108 -0
- package/dist/document-watch.js.map +1 -0
- package/dist/document-wiring.d.ts +53 -0
- package/dist/document-wiring.d.ts.map +1 -0
- package/dist/document-wiring.js +323 -0
- package/dist/document-wiring.js.map +1 -0
- package/dist/document-write-guard.d.ts +66 -0
- package/dist/document-write-guard.d.ts.map +1 -0
- package/dist/document-write-guard.js +98 -0
- package/dist/document-write-guard.js.map +1 -0
- package/dist/document-write-path.d.ts +94 -0
- package/dist/document-write-path.d.ts.map +1 -0
- package/dist/document-write-path.js +530 -0
- package/dist/document-write-path.js.map +1 -0
- package/dist/error-message.d.ts +7 -0
- package/dist/error-message.d.ts.map +1 -0
- package/dist/error-message.js +19 -0
- package/dist/error-message.js.map +1 -0
- package/dist/file-manifest-provider.d.ts +37 -0
- package/dist/file-manifest-provider.d.ts.map +1 -0
- package/dist/file-manifest-provider.js +105 -0
- package/dist/file-manifest-provider.js.map +1 -0
- package/dist/frame-values.d.ts +3 -0
- package/dist/frame-values.d.ts.map +1 -0
- package/dist/frame-values.js +84 -0
- package/dist/frame-values.js.map +1 -0
- package/dist/frontier-mismatch.d.ts +73 -0
- package/dist/frontier-mismatch.d.ts.map +1 -0
- package/dist/frontier-mismatch.js +89 -0
- package/dist/frontier-mismatch.js.map +1 -0
- package/dist/gateway-config-handlers.d.ts +26 -0
- package/dist/gateway-config-handlers.d.ts.map +1 -0
- package/dist/gateway-config-handlers.js +429 -0
- package/dist/gateway-config-handlers.js.map +1 -0
- package/dist/held-content.d.ts +145 -0
- package/dist/held-content.d.ts.map +1 -0
- package/dist/held-content.js +389 -0
- package/dist/held-content.js.map +1 -0
- package/dist/http-manifest-poll.d.ts +67 -0
- package/dist/http-manifest-poll.d.ts.map +1 -0
- package/dist/http-manifest-poll.js +150 -0
- package/dist/http-manifest-poll.js.map +1 -0
- package/dist/identity-migration.d.ts +40 -0
- package/dist/identity-migration.d.ts.map +1 -0
- package/dist/identity-migration.js +461 -0
- package/dist/identity-migration.js.map +1 -0
- package/dist/inbound-refusals.d.ts +283 -0
- package/dist/inbound-refusals.d.ts.map +1 -0
- package/dist/inbound-refusals.js +919 -0
- package/dist/inbound-refusals.js.map +1 -0
- package/dist/inbound-seal-request.d.ts +32 -0
- package/dist/inbound-seal-request.d.ts.map +1 -0
- package/dist/inbound-seal-request.js +228 -0
- package/dist/inbound-seal-request.js.map +1 -0
- package/dist/inbound-sessions.d.ts +291 -0
- package/dist/inbound-sessions.d.ts.map +1 -0
- package/dist/inbound-sessions.js +1609 -0
- package/dist/inbound-sessions.js.map +1 -0
- package/dist/inclusion-proof-handlers.d.ts +43 -0
- package/dist/inclusion-proof-handlers.d.ts.map +1 -0
- package/dist/inclusion-proof-handlers.js +565 -0
- package/dist/inclusion-proof-handlers.js.map +1 -0
- package/dist/inclusion-proof.d.ts +151 -0
- package/dist/inclusion-proof.d.ts.map +1 -0
- package/dist/inclusion-proof.js +228 -0
- package/dist/inclusion-proof.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/initiate-session-handler.d.ts +55 -0
- package/dist/initiate-session-handler.d.ts.map +1 -0
- package/dist/initiate-session-handler.js +310 -0
- package/dist/initiate-session-handler.js.map +1 -0
- package/dist/ipc-client.d.ts +31 -0
- package/dist/ipc-client.d.ts.map +1 -0
- package/dist/ipc-client.js +113 -0
- package/dist/ipc-client.js.map +1 -0
- package/dist/ipc-server.d.ts +63 -0
- package/dist/ipc-server.d.ts.map +1 -0
- package/dist/ipc-server.js +429 -0
- package/dist/ipc-server.js.map +1 -0
- package/dist/ipc-surface.d.ts +44 -0
- package/dist/ipc-surface.d.ts.map +1 -0
- package/dist/ipc-surface.js +107 -0
- package/dist/ipc-surface.js.map +1 -0
- package/dist/line-lcs.d.ts +51 -0
- package/dist/line-lcs.d.ts.map +1 -0
- package/dist/line-lcs.js +71 -0
- package/dist/line-lcs.js.map +1 -0
- package/dist/lock-file.d.ts +39 -0
- package/dist/lock-file.d.ts.map +1 -0
- package/dist/lock-file.js +120 -0
- package/dist/lock-file.js.map +1 -0
- package/dist/log-collapse.d.ts +66 -0
- package/dist/log-collapse.d.ts.map +1 -0
- package/dist/log-collapse.js +244 -0
- package/dist/log-collapse.js.map +1 -0
- package/dist/log-rotate.d.ts +67 -0
- package/dist/log-rotate.d.ts.map +1 -0
- package/dist/log-rotate.js +134 -0
- package/dist/log-rotate.js.map +1 -0
- package/dist/manifest-deps.d.ts +25 -0
- package/dist/manifest-deps.d.ts.map +1 -0
- package/dist/manifest-deps.js +151 -0
- package/dist/manifest-deps.js.map +1 -0
- package/dist/manifest-poll-scheduler.d.ts +31 -0
- package/dist/manifest-poll-scheduler.d.ts.map +1 -0
- package/dist/manifest-poll-scheduler.js +59 -0
- package/dist/manifest-poll-scheduler.js.map +1 -0
- package/dist/manifest-validity.d.ts +153 -0
- package/dist/manifest-validity.d.ts.map +1 -0
- package/dist/manifest-validity.js +268 -0
- package/dist/manifest-validity.js.map +1 -0
- package/dist/manifest-version-store-db.d.ts +24 -0
- package/dist/manifest-version-store-db.d.ts.map +1 -0
- package/dist/manifest-version-store-db.js +58 -0
- package/dist/manifest-version-store-db.js.map +1 -0
- package/dist/manifest-version-store.d.ts +16 -0
- package/dist/manifest-version-store.d.ts.map +1 -0
- package/dist/manifest-version-store.js +15 -0
- package/dist/manifest-version-store.js.map +1 -0
- package/dist/network-directory-node.d.ts +136 -0
- package/dist/network-directory-node.d.ts.map +1 -0
- package/dist/network-directory-node.js +810 -0
- package/dist/network-directory-node.js.map +1 -0
- package/dist/nonce-dedup.d.ts +68 -0
- package/dist/nonce-dedup.d.ts.map +1 -0
- package/dist/nonce-dedup.js +205 -0
- package/dist/nonce-dedup.js.map +1 -0
- package/dist/notification-dispatcher.d.ts +92 -0
- package/dist/notification-dispatcher.d.ts.map +1 -0
- package/dist/notification-dispatcher.js +210 -0
- package/dist/notification-dispatcher.js.map +1 -0
- package/dist/notification-handlers.d.ts +53 -0
- package/dist/notification-handlers.d.ts.map +1 -0
- package/dist/notification-handlers.js +461 -0
- package/dist/notification-handlers.js.map +1 -0
- package/dist/onboarding-guidance.d.ts +79 -0
- package/dist/onboarding-guidance.d.ts.map +1 -0
- package/dist/onboarding-guidance.js +95 -0
- package/dist/onboarding-guidance.js.map +1 -0
- package/dist/operator-guidance.d.ts +25 -0
- package/dist/operator-guidance.d.ts.map +1 -0
- package/dist/operator-guidance.js +50 -0
- package/dist/operator-guidance.js.map +1 -0
- package/dist/orphan-triage.d.ts +130 -0
- package/dist/orphan-triage.d.ts.map +1 -0
- package/dist/orphan-triage.js +207 -0
- package/dist/orphan-triage.js.map +1 -0
- package/dist/outbound-sessions.d.ts +126 -0
- package/dist/outbound-sessions.d.ts.map +1 -0
- package/dist/outbound-sessions.js +1052 -0
- package/dist/outbound-sessions.js.map +1 -0
- package/dist/park-envelope.d.ts +329 -0
- package/dist/park-envelope.d.ts.map +1 -0
- package/dist/park-envelope.js +509 -0
- package/dist/park-envelope.js.map +1 -0
- package/dist/park-recovery.d.ts +273 -0
- package/dist/park-recovery.d.ts.map +1 -0
- package/dist/park-recovery.js +717 -0
- package/dist/park-recovery.js.map +1 -0
- package/dist/park-refusals.d.ts +147 -0
- package/dist/park-refusals.d.ts.map +1 -0
- package/dist/park-refusals.js +331 -0
- package/dist/park-refusals.js.map +1 -0
- package/dist/quarantine-framing.d.ts +92 -0
- package/dist/quarantine-framing.d.ts.map +1 -0
- package/dist/quarantine-framing.js +111 -0
- package/dist/quarantine-framing.js.map +1 -0
- package/dist/reconnect-drain.d.ts +22 -0
- package/dist/reconnect-drain.d.ts.map +1 -0
- package/dist/reconnect-drain.js +65 -0
- package/dist/reconnect-drain.js.map +1 -0
- package/dist/recovered-position.d.ts +14 -0
- package/dist/recovered-position.d.ts.map +1 -0
- package/dist/recovered-position.js +59 -0
- package/dist/recovered-position.js.map +1 -0
- package/dist/refusal-notices.d.ts +196 -0
- package/dist/refusal-notices.d.ts.map +1 -0
- package/dist/refusal-notices.js +516 -0
- package/dist/refusal-notices.js.map +1 -0
- package/dist/refusal-reasons.d.ts +245 -0
- package/dist/refusal-reasons.d.ts.map +1 -0
- package/dist/refusal-reasons.js +363 -0
- package/dist/refusal-reasons.js.map +1 -0
- package/dist/register-handler.d.ts +36 -0
- package/dist/register-handler.d.ts.map +1 -0
- package/dist/register-handler.js +285 -0
- package/dist/register-handler.js.map +1 -0
- package/dist/registration-context.d.ts +72 -0
- package/dist/registration-context.d.ts.map +1 -0
- package/dist/registration-context.js +126 -0
- package/dist/registration-context.js.map +1 -0
- package/dist/registration-manager.d.ts +94 -0
- package/dist/registration-manager.d.ts.map +1 -0
- package/dist/registration-manager.js +585 -0
- package/dist/registration-manager.js.map +1 -0
- package/dist/registration-persistence.d.ts +183 -0
- package/dist/registration-persistence.d.ts.map +1 -0
- package/dist/registration-persistence.js +263 -0
- package/dist/registration-persistence.js.map +1 -0
- package/dist/registry-poll.d.ts +52 -0
- package/dist/registry-poll.d.ts.map +1 -0
- package/dist/registry-poll.js +140 -0
- package/dist/registry-poll.js.map +1 -0
- package/dist/registry-version-store-db.d.ts +22 -0
- package/dist/registry-version-store-db.d.ts.map +1 -0
- package/dist/registry-version-store-db.js +50 -0
- package/dist/registry-version-store-db.js.map +1 -0
- package/dist/relay-endpoints.d.ts +18 -0
- package/dist/relay-endpoints.d.ts.map +1 -0
- package/dist/relay-endpoints.js +9 -0
- package/dist/relay-endpoints.js.map +1 -0
- package/dist/relay-only.d.ts +140 -0
- package/dist/relay-only.d.ts.map +1 -0
- package/dist/relay-only.js +193 -0
- package/dist/relay-only.js.map +1 -0
- package/dist/relay-receipt-store.d.ts +155 -0
- package/dist/relay-receipt-store.d.ts.map +1 -0
- package/dist/relay-receipt-store.js +284 -0
- package/dist/relay-receipt-store.js.map +1 -0
- package/dist/relay-reconnect.d.ts +32 -0
- package/dist/relay-reconnect.d.ts.map +1 -0
- package/dist/relay-reconnect.js +29 -0
- package/dist/relay-reconnect.js.map +1 -0
- package/dist/reply-lag.d.ts +11 -0
- package/dist/reply-lag.d.ts.map +1 -0
- package/dist/reply-lag.js +46 -0
- package/dist/reply-lag.js.map +1 -0
- package/dist/resolve-named-agent.d.ts +49 -0
- package/dist/resolve-named-agent.d.ts.map +1 -0
- package/dist/resolve-named-agent.js +77 -0
- package/dist/resolve-named-agent.js.map +1 -0
- package/dist/restart-seal-resolver.d.ts +110 -0
- package/dist/restart-seal-resolver.d.ts.map +1 -0
- package/dist/restart-seal-resolver.js +353 -0
- package/dist/restart-seal-resolver.js.map +1 -0
- package/dist/resume-last-seen.d.ts +15 -0
- package/dist/resume-last-seen.d.ts.map +1 -0
- package/dist/resume-last-seen.js +44 -0
- package/dist/resume-last-seen.js.map +1 -0
- package/dist/retry-queue.d.ts +203 -0
- package/dist/retry-queue.d.ts.map +1 -0
- package/dist/retry-queue.js +701 -0
- package/dist/retry-queue.js.map +1 -0
- package/dist/roster-freshness.d.ts +160 -0
- package/dist/roster-freshness.d.ts.map +1 -0
- package/dist/roster-freshness.js +250 -0
- package/dist/roster-freshness.js.map +1 -0
- package/dist/screening-status.d.ts +15 -0
- package/dist/screening-status.d.ts.map +1 -0
- package/dist/screening-status.js +65 -0
- package/dist/screening-status.js.map +1 -0
- package/dist/seal-carried-close.d.ts +37 -0
- package/dist/seal-carried-close.d.ts.map +1 -0
- package/dist/seal-carried-close.js +179 -0
- package/dist/seal-carried-close.js.map +1 -0
- package/dist/seal-certificate-pull.d.ts +79 -0
- package/dist/seal-certificate-pull.d.ts.map +1 -0
- package/dist/seal-certificate-pull.js +186 -0
- package/dist/seal-certificate-pull.js.map +1 -0
- package/dist/seal-certified-root-check.d.ts +37 -0
- package/dist/seal-certified-root-check.d.ts.map +1 -0
- package/dist/seal-certified-root-check.js +127 -0
- package/dist/seal-certified-root-check.js.map +1 -0
- package/dist/seal-coordinator.d.ts +118 -0
- package/dist/seal-coordinator.d.ts.map +1 -0
- package/dist/seal-coordinator.js +927 -0
- package/dist/seal-coordinator.js.map +1 -0
- package/dist/seal-escalation.d.ts +80 -0
- package/dist/seal-escalation.d.ts.map +1 -0
- package/dist/seal-escalation.js +283 -0
- package/dist/seal-escalation.js.map +1 -0
- package/dist/seal-evidence-root-check.d.ts +70 -0
- package/dist/seal-evidence-root-check.d.ts.map +1 -0
- package/dist/seal-evidence-root-check.js +199 -0
- package/dist/seal-evidence-root-check.js.map +1 -0
- package/dist/seal-failure-store.d.ts +139 -0
- package/dist/seal-failure-store.d.ts.map +1 -0
- package/dist/seal-failure-store.js +207 -0
- package/dist/seal-failure-store.js.map +1 -0
- package/dist/seal-flows.d.ts +107 -0
- package/dist/seal-flows.d.ts.map +1 -0
- package/dist/seal-flows.js +638 -0
- package/dist/seal-flows.js.map +1 -0
- package/dist/seal-frontier-verify.d.ts +103 -0
- package/dist/seal-frontier-verify.d.ts.map +1 -0
- package/dist/seal-frontier-verify.js +143 -0
- package/dist/seal-frontier-verify.js.map +1 -0
- package/dist/seal-leaf.d.ts +58 -0
- package/dist/seal-leaf.d.ts.map +1 -0
- package/dist/seal-leaf.js +112 -0
- package/dist/seal-leaf.js.map +1 -0
- package/dist/seal-legibility-tbs.d.ts +25 -0
- package/dist/seal-legibility-tbs.d.ts.map +1 -0
- package/dist/seal-legibility-tbs.js +77 -0
- package/dist/seal-legibility-tbs.js.map +1 -0
- package/dist/seal-local-terminus.d.ts +41 -0
- package/dist/seal-local-terminus.d.ts.map +1 -0
- package/dist/seal-local-terminus.js +170 -0
- package/dist/seal-local-terminus.js.map +1 -0
- package/dist/seal-receipt-upgrade.d.ts +30 -0
- package/dist/seal-receipt-upgrade.d.ts.map +1 -0
- package/dist/seal-receipt-upgrade.js +49 -0
- package/dist/seal-receipt-upgrade.js.map +1 -0
- package/dist/seal-relay-silence.d.ts +51 -0
- package/dist/seal-relay-silence.d.ts.map +1 -0
- package/dist/seal-relay-silence.js +76 -0
- package/dist/seal-relay-silence.js.map +1 -0
- package/dist/seal-settle.d.ts +38 -0
- package/dist/seal-settle.d.ts.map +1 -0
- package/dist/seal-settle.js +33 -0
- package/dist/seal-settle.js.map +1 -0
- package/dist/seal-upgrade.d.ts +107 -0
- package/dist/seal-upgrade.d.ts.map +1 -0
- package/dist/seal-upgrade.js +200 -0
- package/dist/seal-upgrade.js.map +1 -0
- package/dist/sealed-conversation.d.ts +36 -0
- package/dist/sealed-conversation.d.ts.map +1 -0
- package/dist/sealed-conversation.js +171 -0
- package/dist/sealed-conversation.js.map +1 -0
- package/dist/sealed-leaf-set.d.ts +92 -0
- package/dist/sealed-leaf-set.d.ts.map +1 -0
- package/dist/sealed-leaf-set.js +122 -0
- package/dist/sealed-leaf-set.js.map +1 -0
- package/dist/send-claims.d.ts +56 -0
- package/dist/send-claims.d.ts.map +1 -0
- package/dist/send-claims.js +50 -0
- package/dist/send-claims.js.map +1 -0
- package/dist/session-assignment-parser.d.ts +104 -0
- package/dist/session-assignment-parser.d.ts.map +1 -0
- package/dist/session-assignment-parser.js +345 -0
- package/dist/session-assignment-parser.js.map +1 -0
- package/dist/session-category.d.ts +19 -0
- package/dist/session-category.d.ts.map +1 -0
- package/dist/session-category.js +14 -0
- package/dist/session-category.js.map +1 -0
- package/dist/session-ceremony.d.ts +297 -0
- package/dist/session-ceremony.d.ts.map +1 -0
- package/dist/session-ceremony.js +964 -0
- package/dist/session-ceremony.js.map +1 -0
- package/dist/session-closed.d.ts +79 -0
- package/dist/session-closed.d.ts.map +1 -0
- package/dist/session-closed.js +189 -0
- package/dist/session-closed.js.map +1 -0
- package/dist/session-connection-gater.d.ts +148 -0
- package/dist/session-connection-gater.d.ts.map +1 -0
- package/dist/session-connection-gater.js +332 -0
- package/dist/session-connection-gater.js.map +1 -0
- package/dist/session-content-context.d.ts +162 -0
- package/dist/session-content-context.d.ts.map +1 -0
- package/dist/session-content-context.js +2 -0
- package/dist/session-content-context.js.map +1 -0
- package/dist/session-content-handlers.d.ts +82 -0
- package/dist/session-content-handlers.d.ts.map +1 -0
- package/dist/session-content-handlers.js +1382 -0
- package/dist/session-content-handlers.js.map +1 -0
- package/dist/session-content-ingest.d.ts +206 -0
- package/dist/session-content-ingest.d.ts.map +1 -0
- package/dist/session-content-ingest.js +2167 -0
- package/dist/session-content-ingest.js.map +1 -0
- package/dist/session-content-send.d.ts +191 -0
- package/dist/session-content-send.d.ts.map +1 -0
- package/dist/session-content-send.js +1360 -0
- package/dist/session-content-send.js.map +1 -0
- package/dist/session-delivery-acks.d.ts +169 -0
- package/dist/session-delivery-acks.d.ts.map +1 -0
- package/dist/session-delivery-acks.js +569 -0
- package/dist/session-delivery-acks.js.map +1 -0
- package/dist/session-ephemerals.d.ts +279 -0
- package/dist/session-ephemerals.d.ts.map +1 -0
- package/dist/session-ephemerals.js +591 -0
- package/dist/session-ephemerals.js.map +1 -0
- package/dist/session-leaf-records.d.ts +159 -0
- package/dist/session-leaf-records.d.ts.map +1 -0
- package/dist/session-leaf-records.js +408 -0
- package/dist/session-leaf-records.js.map +1 -0
- package/dist/session-lifecycle.d.ts +303 -0
- package/dist/session-lifecycle.d.ts.map +1 -0
- package/dist/session-lifecycle.js +1679 -0
- package/dist/session-lifecycle.js.map +1 -0
- package/dist/session-liveness.d.ts +135 -0
- package/dist/session-liveness.d.ts.map +1 -0
- package/dist/session-liveness.js +347 -0
- package/dist/session-liveness.js.map +1 -0
- package/dist/session-name.d.ts +35 -0
- package/dist/session-name.d.ts.map +1 -0
- package/dist/session-name.js +60 -0
- package/dist/session-name.js.map +1 -0
- package/dist/session-node-factory.d.ts +18 -0
- package/dist/session-node-factory.d.ts.map +1 -0
- package/dist/session-node-factory.js +182 -0
- package/dist/session-node-factory.js.map +1 -0
- package/dist/session-node-manager.d.ts +877 -0
- package/dist/session-node-manager.d.ts.map +1 -0
- package/dist/session-node-manager.js +2998 -0
- package/dist/session-node-manager.js.map +1 -0
- package/dist/session-node-types.d.ts +1057 -0
- package/dist/session-node-types.d.ts.map +1 -0
- package/dist/session-node-types.js +657 -0
- package/dist/session-node-types.js.map +1 -0
- package/dist/session-notify.d.ts +46 -0
- package/dist/session-notify.d.ts.map +1 -0
- package/dist/session-notify.js +116 -0
- package/dist/session-notify.js.map +1 -0
- package/dist/session-own-chain-store.d.ts +65 -0
- package/dist/session-own-chain-store.d.ts.map +1 -0
- package/dist/session-own-chain-store.js +75 -0
- package/dist/session-own-chain-store.js.map +1 -0
- package/dist/session-queries.d.ts +476 -0
- package/dist/session-queries.d.ts.map +1 -0
- package/dist/session-queries.js +1007 -0
- package/dist/session-queries.js.map +1 -0
- package/dist/session-read-handlers.d.ts +87 -0
- package/dist/session-read-handlers.d.ts.map +1 -0
- package/dist/session-read-handlers.js +689 -0
- package/dist/session-read-handlers.js.map +1 -0
- package/dist/session-records.d.ts +341 -0
- package/dist/session-records.d.ts.map +1 -0
- package/dist/session-records.js +858 -0
- package/dist/session-records.js.map +1 -0
- package/dist/session-relay-client.d.ts +659 -0
- package/dist/session-relay-client.d.ts.map +1 -0
- package/dist/session-relay-client.js +2876 -0
- package/dist/session-relay-client.js.map +1 -0
- package/dist/session-relay.d.ts +397 -0
- package/dist/session-relay.d.ts.map +1 -0
- package/dist/session-relay.js +1636 -0
- package/dist/session-relay.js.map +1 -0
- package/dist/session-salt-agreement.d.ts +331 -0
- package/dist/session-salt-agreement.d.ts.map +1 -0
- package/dist/session-salt-agreement.js +472 -0
- package/dist/session-salt-agreement.js.map +1 -0
- package/dist/session-salts.d.ts +432 -0
- package/dist/session-salts.d.ts.map +1 -0
- package/dist/session-salts.js +1540 -0
- package/dist/session-salts.js.map +1 -0
- package/dist/session-schema.d.ts +30 -0
- package/dist/session-schema.d.ts.map +1 -0
- package/dist/session-schema.js +877 -0
- package/dist/session-schema.js.map +1 -0
- package/dist/session-seal-leaf-store.d.ts +70 -0
- package/dist/session-seal-leaf-store.d.ts.map +1 -0
- package/dist/session-seal-leaf-store.js +105 -0
- package/dist/session-seal-leaf-store.js.map +1 -0
- package/dist/session-seal.d.ts +334 -0
- package/dist/session-seal.d.ts.map +1 -0
- package/dist/session-seal.js +1017 -0
- package/dist/session-seal.js.map +1 -0
- package/dist/session-terminal-refusal.d.ts +65 -0
- package/dist/session-terminal-refusal.d.ts.map +1 -0
- package/dist/session-terminal-refusal.js +87 -0
- package/dist/session-terminal-refusal.js.map +1 -0
- package/dist/session-tree.d.ts +110 -0
- package/dist/session-tree.d.ts.map +1 -0
- package/dist/session-tree.js +144 -0
- package/dist/session-tree.js.map +1 -0
- package/dist/session-views.d.ts +47 -0
- package/dist/session-views.d.ts.map +1 -0
- package/dist/session-views.js +278 -0
- package/dist/session-views.js.map +1 -0
- package/dist/signal-handlers.d.ts +63 -0
- package/dist/signal-handlers.d.ts.map +1 -0
- package/dist/signal-handlers.js +980 -0
- package/dist/signal-handlers.js.map +1 -0
- package/dist/signal-requirement-policy.d.ts +51 -0
- package/dist/signal-requirement-policy.d.ts.map +1 -0
- package/dist/signal-requirement-policy.js +89 -0
- package/dist/signal-requirement-policy.js.map +1 -0
- package/dist/signal-revocability.d.ts +49 -0
- package/dist/signal-revocability.d.ts.map +1 -0
- package/dist/signal-revocability.js +93 -0
- package/dist/signal-revocability.js.map +1 -0
- package/dist/signal-submission.d.ts +181 -0
- package/dist/signal-submission.d.ts.map +1 -0
- package/dist/signal-submission.js +368 -0
- package/dist/signal-submission.js.map +1 -0
- package/dist/signaling-connect.d.ts +118 -0
- package/dist/signaling-connect.d.ts.map +1 -0
- package/dist/signaling-connect.js +538 -0
- package/dist/signaling-connect.js.map +1 -0
- package/dist/signaling-wiring.d.ts +105 -0
- package/dist/signaling-wiring.d.ts.map +1 -0
- package/dist/signaling-wiring.js +393 -0
- package/dist/signaling-wiring.js.map +1 -0
- package/dist/singleton-lock.d.ts +85 -0
- package/dist/singleton-lock.d.ts.map +1 -0
- package/dist/singleton-lock.js +219 -0
- package/dist/singleton-lock.js.map +1 -0
- package/dist/sqlcipher-db.d.ts +139 -0
- package/dist/sqlcipher-db.d.ts.map +1 -0
- package/dist/sqlcipher-db.js +357 -0
- package/dist/sqlcipher-db.js.map +1 -0
- package/dist/standing-receivers.d.ts +319 -0
- package/dist/standing-receivers.d.ts.map +1 -0
- package/dist/standing-receivers.js +1295 -0
- package/dist/standing-receivers.js.map +1 -0
- package/dist/start-agent.d.ts +64 -0
- package/dist/start-agent.d.ts.map +1 -0
- package/dist/start-agent.js +136 -0
- package/dist/start-agent.js.map +1 -0
- package/dist/status-handler.d.ts +54 -0
- package/dist/status-handler.d.ts.map +1 -0
- package/dist/status-handler.js +61 -0
- package/dist/status-handler.js.map +1 -0
- package/dist/submission-retry.d.ts +208 -0
- package/dist/submission-retry.d.ts.map +1 -0
- package/dist/submission-retry.js +506 -0
- package/dist/submission-retry.js.map +1 -0
- package/dist/telegram-bot-client.d.ts +34 -0
- package/dist/telegram-bot-client.d.ts.map +1 -0
- package/dist/telegram-bot-client.js +36 -0
- package/dist/telegram-bot-client.js.map +1 -0
- package/dist/telegram-doorbell.d.ts +38 -0
- package/dist/telegram-doorbell.d.ts.map +1 -0
- package/dist/telegram-doorbell.js +140 -0
- package/dist/telegram-doorbell.js.map +1 -0
- package/dist/test-handlers.d.ts +62 -0
- package/dist/test-handlers.d.ts.map +1 -0
- package/dist/test-handlers.js +240 -0
- package/dist/test-handlers.js.map +1 -0
- package/dist/testing.d.ts +10 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +10 -0
- package/dist/testing.js.map +1 -0
- package/dist/transport-composition.d.ts +31 -0
- package/dist/transport-composition.d.ts.map +1 -0
- package/dist/transport-composition.js +55 -0
- package/dist/transport-composition.js.map +1 -0
- package/dist/transport-selector.d.ts +202 -0
- package/dist/transport-selector.d.ts.map +1 -0
- package/dist/transport-selector.js +196 -0
- package/dist/transport-selector.js.map +1 -0
- package/dist/trust-signal-pickup-listener.d.ts +43 -0
- package/dist/trust-signal-pickup-listener.d.ts.map +1 -0
- package/dist/trust-signal-pickup-listener.js +48 -0
- package/dist/trust-signal-pickup-listener.js.map +1 -0
- package/dist/trust-signal-store.d.ts +406 -0
- package/dist/trust-signal-store.d.ts.map +1 -0
- package/dist/trust-signal-store.js +939 -0
- package/dist/trust-signal-store.js.map +1 -0
- package/dist/trust-signal-sweep-tick.d.ts +60 -0
- package/dist/trust-signal-sweep-tick.d.ts.map +1 -0
- package/dist/trust-signal-sweep-tick.js +101 -0
- package/dist/trust-signal-sweep-tick.js.map +1 -0
- package/dist/trust-signal-sweep.d.ts +94 -0
- package/dist/trust-signal-sweep.d.ts.map +1 -0
- package/dist/trust-signal-sweep.js +147 -0
- package/dist/trust-signal-sweep.js.map +1 -0
- package/dist/type-registry.d.ts +42 -0
- package/dist/type-registry.d.ts.map +1 -0
- package/dist/type-registry.js +37 -0
- package/dist/type-registry.js.map +1 -0
- package/dist/types.d.ts +746 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +20 -0
- package/dist/types.js.map +1 -0
- package/dist/unresolved-nodes-report.d.ts +14 -0
- package/dist/unresolved-nodes-report.d.ts.map +1 -0
- package/dist/unresolved-nodes-report.js +96 -0
- package/dist/unresolved-nodes-report.js.map +1 -0
- package/dist/vocabulary.d.ts +150 -0
- package/dist/vocabulary.d.ts.map +1 -0
- package/dist/vocabulary.js +386 -0
- package/dist/vocabulary.js.map +1 -0
- package/dist/who-label.d.ts +28 -0
- package/dist/who-label.d.ts.map +1 -0
- package/dist/who-label.js +31 -0
- package/dist/who-label.js.map +1 -0
- package/dist/who-resolver.d.ts +15 -0
- package/dist/who-resolver.d.ts.map +1 -0
- package/dist/who-resolver.js +47 -0
- package/dist/who-resolver.js.map +1 -0
- package/dist/wire-content-hash.d.ts +93 -0
- package/dist/wire-content-hash.d.ts.map +1 -0
- package/dist/wire-content-hash.js +116 -0
- package/dist/wire-content-hash.js.map +1 -0
- package/dist/withheld-content.d.ts +13 -0
- package/dist/withheld-content.d.ts.map +1 -0
- package/dist/withheld-content.js +46 -0
- package/dist/withheld-content.js.map +1 -0
- package/dist/witness-alerts.d.ts +40 -0
- package/dist/witness-alerts.d.ts.map +1 -0
- package/dist/witness-alerts.js +102 -0
- package/dist/witness-alerts.js.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-flows.js","sourceRoot":"","sources":["../src/seal-flows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side content-frontier re-derivation.
|
|
3
|
+
*
|
|
4
|
+
* The directory builds + signs the seal legibility, including each party's
|
|
5
|
+
* `content_frontier_seq` ("the highest message the party provably received"). The client
|
|
6
|
+
* must NOT trust that published value: a buggy or malicious directory could inflate it.
|
|
7
|
+
* The client independently re-derives each party's frontier from the SIGNED leaves the
|
|
8
|
+
* directory ships on the session_sealed frame, and rejects the certificate
|
|
9
|
+
* (`certificate_frontier_unverifiable`) if any published frontier EXCEEDS what the signed
|
|
10
|
+
* leaves support.
|
|
11
|
+
*
|
|
12
|
+
* Why signature-verification alone is sufficient to catch inflation: the directory cannot
|
|
13
|
+
* forge a leaf signed by a participant (it holds no participant key), so it can only ship
|
|
14
|
+
* REAL signed leaves. The maximum real signed last_seen_seq for a party IS that party's
|
|
15
|
+
* honest frontier — there is no way to fabricate a higher one. (A malicious directory could
|
|
16
|
+
* OMIT leaves, lowering the re-derived value and DoS-ing its own seal, but that is a refusal
|
|
17
|
+
* to seal, not an inflation attack — and Merkle-binding the shipped leaves to the sealed_root
|
|
18
|
+
* is a further hardening tracked separately.)
|
|
19
|
+
*
|
|
20
|
+
* Mirrors the directory's buildSealLegibility frontier derivation
|
|
21
|
+
* (trustless-cello/packages/directory/src/seal-legibility.ts): max signed last_seen_seq
|
|
22
|
+
* (Structure 1 index 4) per sender, over that sender's OWN signed leaves.
|
|
23
|
+
*/
|
|
24
|
+
export interface SealFrontierLeaf {
|
|
25
|
+
structure1_cbor: Uint8Array;
|
|
26
|
+
sender_pubkey: Uint8Array;
|
|
27
|
+
sender_signature: Uint8Array;
|
|
28
|
+
}
|
|
29
|
+
export type ReDeriveResult = {
|
|
30
|
+
ok: true;
|
|
31
|
+
frontiers: Map<string, number>;
|
|
32
|
+
} | {
|
|
33
|
+
ok: false;
|
|
34
|
+
reason: "leaf_signature_invalid" | "leaf_malformed" | "leaf_session_mismatch";
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Re-derive each party's content_frontier_seq from the signed leaves. Verifies every leaf's
|
|
38
|
+
* Ed25519 signature over its Structure 1 bytes AND that the leaf's SIGNED session_id matches
|
|
39
|
+
* the session being sealed — otherwise a malicious directory could replay a party's genuinely
|
|
40
|
+
* signed leaves from a DIFFERENT session (where it reached a higher frontier) to inflate this
|
|
41
|
+
* session's frontier. An unverifiable or wrong-session leaf fails the whole re-derivation.
|
|
42
|
+
* Returns a map of lowercase-hex sender pubkey → max signed last_seen_seq.
|
|
43
|
+
*/
|
|
44
|
+
export declare function reDeriveFrontiers(leaves: SealFrontierLeaf[], expectedSessionId: Uint8Array): ReDeriveResult;
|
|
45
|
+
/**
|
|
46
|
+
* Compare each published per-party content_frontier_seq against the re-derived value. Returns
|
|
47
|
+
* the first party whose PUBLISHED frontier exceeds what its signed leaves support (inflation —
|
|
48
|
+
* the certificate_frontier_unverifiable case), or null when every published frontier is honest.
|
|
49
|
+
*/
|
|
50
|
+
export declare function findInflatedFrontier(participants: ReadonlyArray<{
|
|
51
|
+
pubkey: string;
|
|
52
|
+
content_frontier_seq: number;
|
|
53
|
+
}>, derived: Map<string, number>): {
|
|
54
|
+
party: string;
|
|
55
|
+
publishedFrontier: number;
|
|
56
|
+
derivedFrontier: number;
|
|
57
|
+
} | null;
|
|
58
|
+
export interface UnilateralFrontierParticipant {
|
|
59
|
+
pubkey: string;
|
|
60
|
+
content_frontier_seq: number;
|
|
61
|
+
attestation_mode: string;
|
|
62
|
+
}
|
|
63
|
+
export interface UnilateralFrontierCheck {
|
|
64
|
+
/**
|
|
65
|
+
* - verified: leaves present, no CLIENT-VERIFIABLE ('live') frontier exceeded its leaves.
|
|
66
|
+
* - corrected: leaves present, one or more 'live' frontiers were inflated and overridden
|
|
67
|
+
* DOWN to the re-derived value (see `corrections`).
|
|
68
|
+
* - directory_attested: no frontier_leaves shipped (an older directory) — the cert stays
|
|
69
|
+
* directory-attested. No correction possible.
|
|
70
|
+
* - leaves_invalid: frontier_leaves are forged / cross-session (reDeriveFrontiers failed) — a
|
|
71
|
+
* tamper signal; persist the directory-attested frontiers, log loudly. NEVER
|
|
72
|
+
* rejected: the unilateral dedup guard makes rejection an unrecoverable
|
|
73
|
+
* dead-end.
|
|
74
|
+
*/
|
|
75
|
+
status: "verified" | "corrected" | "directory_attested" | "leaves_invalid";
|
|
76
|
+
/** lowercased pubkey → corrected content_frontier_seq, for inflated 'live' parties. The caller
|
|
77
|
+
* lowers the persisted frontier to this before recording the receipt. Empty unless status is 'corrected'. */
|
|
78
|
+
corrections: Map<string, number>;
|
|
79
|
+
reason?: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The present party independently re-verifies (and CORRECTS) the UNILATERAL receipt's frontiers.
|
|
83
|
+
* OVERRIDE, never reject.
|
|
84
|
+
*
|
|
85
|
+
* The unilateral legibility is FROST-notarized by the directory but the frontier VALUES are NOT bound
|
|
86
|
+
* into the seal signature (unlike the bilateral seal, whose signer binds the legibility hash), so the
|
|
87
|
+
* client must not trust them blindly. Because the directory-side dedup guard makes a client REJECTION
|
|
88
|
+
* of a unilateral cert unrecoverable (a retry close is silently ignored — no receipt is ever
|
|
89
|
+
* produced), the client CORRECTS rather than rejects:
|
|
90
|
+
* - CLIENT-VERIFIABLE ('live') party: the present (submitting) party carries all its own signed
|
|
91
|
+
* leaves, so its content_frontier_seq is fully re-derivable. The directory cannot forge signed
|
|
92
|
+
* leaves, so the re-derived value is the provable truth → an inflated published value is OVERRIDDEN
|
|
93
|
+
* DOWN to it (inflation neutralized, receipt still persisted).
|
|
94
|
+
* - DIRECTORY-ATTESTED ('absent' / anything not 'live') party: its received-frontier remainder
|
|
95
|
+
* (acks of the present party's content) lives with the absent party and was never provided, so a
|
|
96
|
+
* published value ABOVE what the present party can derive is not provably inflation — left
|
|
97
|
+
* untouched, directory-attested (already marked per-participant).
|
|
98
|
+
*
|
|
99
|
+
* The caller applies `corrections` to the persisted legibility and logs per `status`; it ALWAYS
|
|
100
|
+
* persists a receipt (never dead-ends the close).
|
|
101
|
+
*/
|
|
102
|
+
export declare function checkUnilateralFrontier(participants: ReadonlyArray<UnilateralFrontierParticipant>, frontierLeaves: SealFrontierLeaf[] | undefined, sessionId: Uint8Array): UnilateralFrontierCheck;
|
|
103
|
+
//# sourceMappingURL=seal-frontier-verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-frontier-verify.d.ts","sourceRoot":"","sources":["../src/seal-frontier-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,UAAU,CAAC;IAC5B,aAAa,EAAE,UAAU,CAAC;IAC1B,gBAAgB,EAAE,UAAU,CAAC;CAC9B;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAC5C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,wBAAwB,GAAG,gBAAgB,GAAG,uBAAuB,CAAA;CAAE,CAAC;AAQjG;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,iBAAiB,EAAE,UAAU,GAAG,cAAc,CAmC3G;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,aAAa,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE,CAAC,EAC7E,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQ9E;AAID,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC;;;;;;;;;;OAUG;IACH,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,oBAAoB,GAAG,gBAAgB,CAAC;IAC3E;kHAC8G;IAC9G,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,aAAa,CAAC,6BAA6B,CAAC,EAC1D,cAAc,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAC9C,SAAS,EAAE,UAAU,GACpB,uBAAuB,CAwBzB"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side content-frontier re-derivation.
|
|
3
|
+
*
|
|
4
|
+
* The directory builds + signs the seal legibility, including each party's
|
|
5
|
+
* `content_frontier_seq` ("the highest message the party provably received"). The client
|
|
6
|
+
* must NOT trust that published value: a buggy or malicious directory could inflate it.
|
|
7
|
+
* The client independently re-derives each party's frontier from the SIGNED leaves the
|
|
8
|
+
* directory ships on the session_sealed frame, and rejects the certificate
|
|
9
|
+
* (`certificate_frontier_unverifiable`) if any published frontier EXCEEDS what the signed
|
|
10
|
+
* leaves support.
|
|
11
|
+
*
|
|
12
|
+
* Why signature-verification alone is sufficient to catch inflation: the directory cannot
|
|
13
|
+
* forge a leaf signed by a participant (it holds no participant key), so it can only ship
|
|
14
|
+
* REAL signed leaves. The maximum real signed last_seen_seq for a party IS that party's
|
|
15
|
+
* honest frontier — there is no way to fabricate a higher one. (A malicious directory could
|
|
16
|
+
* OMIT leaves, lowering the re-derived value and DoS-ing its own seal, but that is a refusal
|
|
17
|
+
* to seal, not an inflation attack — and Merkle-binding the shipped leaves to the sealed_root
|
|
18
|
+
* is a further hardening tracked separately.)
|
|
19
|
+
*
|
|
20
|
+
* Mirrors the directory's buildSealLegibility frontier derivation
|
|
21
|
+
* (trustless-cello/packages/directory/src/seal-legibility.ts): max signed last_seen_seq
|
|
22
|
+
* (Structure 1 index 4) per sender, over that sender's OWN signed leaves.
|
|
23
|
+
*/
|
|
24
|
+
import { verify } from "@cello-protocol/crypto";
|
|
25
|
+
import { decodeStructure1 } from "@cello-protocol/protocol-types";
|
|
26
|
+
function bytesEqual(a, b) {
|
|
27
|
+
if (a.length !== b.length)
|
|
28
|
+
return false;
|
|
29
|
+
for (let i = 0; i < a.length; i++)
|
|
30
|
+
if (a[i] !== b[i])
|
|
31
|
+
return false;
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Re-derive each party's content_frontier_seq from the signed leaves. Verifies every leaf's
|
|
36
|
+
* Ed25519 signature over its Structure 1 bytes AND that the leaf's SIGNED session_id matches
|
|
37
|
+
* the session being sealed — otherwise a malicious directory could replay a party's genuinely
|
|
38
|
+
* signed leaves from a DIFFERENT session (where it reached a higher frontier) to inflate this
|
|
39
|
+
* session's frontier. An unverifiable or wrong-session leaf fails the whole re-derivation.
|
|
40
|
+
* Returns a map of lowercase-hex sender pubkey → max signed last_seen_seq.
|
|
41
|
+
*/
|
|
42
|
+
export function reDeriveFrontiers(leaves, expectedSessionId) {
|
|
43
|
+
const frontiers = new Map();
|
|
44
|
+
for (const leaf of leaves) {
|
|
45
|
+
if (!verify(leaf.sender_pubkey, leaf.structure1_cbor, leaf.sender_signature)) {
|
|
46
|
+
return { ok: false, reason: "leaf_signature_invalid" };
|
|
47
|
+
}
|
|
48
|
+
// Structure 1 = [version, content_hash(32), sender_pubkey(32), session_id(16), last_seen_seq,
|
|
49
|
+
// ts], plus last_seen_hash(32) at index 6 on a v2 claim (020-ACKHASH). session_id is index 3 and
|
|
50
|
+
// last_seen_seq index 4 in both — the field was appended, so neither read moved.
|
|
51
|
+
//
|
|
52
|
+
// The length check was `< 5`, which admitted an array of any length ≥ 5 and lifted a frontier
|
|
53
|
+
// number out of it. An unnamed layout is now `leaf_malformed`, the same outcome as undecodable
|
|
54
|
+
// bytes: a shape this build cannot name must not contribute to a frontier it cannot interpret.
|
|
55
|
+
//
|
|
56
|
+
// TWO NARROWINGS CAME WITH THAT, both recorded because they are changes and not merely a
|
|
57
|
+
// tightening of the length rule (review F7):
|
|
58
|
+
// - a non-numeric `last_seen_seq` used to `continue` (skip this leaf, keep verifying the rest)
|
|
59
|
+
// and is now `leaf_malformed`, failing the whole re-derivation;
|
|
60
|
+
// - a `bigint` `last_seen_seq` used to be coerced with `Number(raw)` and is now refused.
|
|
61
|
+
// Both are unreachable in practice — the relay refuses `typeof last_seen_seq !== "number"` at
|
|
62
|
+
// ingest, so no leaf that reaches a seal can carry either shape — and both move in the
|
|
63
|
+
// fail-closed direction. A frontier is a published claim about how far a party countersigned;
|
|
64
|
+
// deriving one from a leaf we could not fully read is the thing worth refusing.
|
|
65
|
+
const s1 = decodeStructure1(leaf.structure1_cbor);
|
|
66
|
+
if (!s1.ok)
|
|
67
|
+
return { ok: false, reason: "leaf_malformed" };
|
|
68
|
+
if (!bytesEqual(s1.fields.sessionId, expectedSessionId)) {
|
|
69
|
+
return { ok: false, reason: "leaf_session_mismatch" };
|
|
70
|
+
}
|
|
71
|
+
const lss = s1.fields.lastSeenSeq;
|
|
72
|
+
if (!Number.isFinite(lss))
|
|
73
|
+
continue; // leaf carries no usable signed last_seen
|
|
74
|
+
const senderHex = Buffer.from(leaf.sender_pubkey).toString("hex").toLowerCase();
|
|
75
|
+
const cur = frontiers.get(senderHex) ?? 0;
|
|
76
|
+
if (lss > cur)
|
|
77
|
+
frontiers.set(senderHex, lss);
|
|
78
|
+
}
|
|
79
|
+
return { ok: true, frontiers };
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Compare each published per-party content_frontier_seq against the re-derived value. Returns
|
|
83
|
+
* the first party whose PUBLISHED frontier exceeds what its signed leaves support (inflation —
|
|
84
|
+
* the certificate_frontier_unverifiable case), or null when every published frontier is honest.
|
|
85
|
+
*/
|
|
86
|
+
export function findInflatedFrontier(participants, derived) {
|
|
87
|
+
for (const p of participants) {
|
|
88
|
+
const d = derived.get(p.pubkey.toLowerCase()) ?? 0;
|
|
89
|
+
if (p.content_frontier_seq > d) {
|
|
90
|
+
return { party: p.pubkey, publishedFrontier: p.content_frontier_seq, derivedFrontier: d };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* The present party independently re-verifies (and CORRECTS) the UNILATERAL receipt's frontiers.
|
|
97
|
+
* OVERRIDE, never reject.
|
|
98
|
+
*
|
|
99
|
+
* The unilateral legibility is FROST-notarized by the directory but the frontier VALUES are NOT bound
|
|
100
|
+
* into the seal signature (unlike the bilateral seal, whose signer binds the legibility hash), so the
|
|
101
|
+
* client must not trust them blindly. Because the directory-side dedup guard makes a client REJECTION
|
|
102
|
+
* of a unilateral cert unrecoverable (a retry close is silently ignored — no receipt is ever
|
|
103
|
+
* produced), the client CORRECTS rather than rejects:
|
|
104
|
+
* - CLIENT-VERIFIABLE ('live') party: the present (submitting) party carries all its own signed
|
|
105
|
+
* leaves, so its content_frontier_seq is fully re-derivable. The directory cannot forge signed
|
|
106
|
+
* leaves, so the re-derived value is the provable truth → an inflated published value is OVERRIDDEN
|
|
107
|
+
* DOWN to it (inflation neutralized, receipt still persisted).
|
|
108
|
+
* - DIRECTORY-ATTESTED ('absent' / anything not 'live') party: its received-frontier remainder
|
|
109
|
+
* (acks of the present party's content) lives with the absent party and was never provided, so a
|
|
110
|
+
* published value ABOVE what the present party can derive is not provably inflation — left
|
|
111
|
+
* untouched, directory-attested (already marked per-participant).
|
|
112
|
+
*
|
|
113
|
+
* The caller applies `corrections` to the persisted legibility and logs per `status`; it ALWAYS
|
|
114
|
+
* persists a receipt (never dead-ends the close).
|
|
115
|
+
*/
|
|
116
|
+
export function checkUnilateralFrontier(participants, frontierLeaves, sessionId) {
|
|
117
|
+
const corrections = new Map();
|
|
118
|
+
const haveLeaves = Array.isArray(frontierLeaves) && frontierLeaves.length > 0;
|
|
119
|
+
// A directory that ships no leaves leaves the cert directory-attested. Never reject — rejecting
|
|
120
|
+
// would break unilateral seals against a not-yet-upgraded directory during rollout.
|
|
121
|
+
if (!haveLeaves)
|
|
122
|
+
return { status: "directory_attested", corrections };
|
|
123
|
+
const rederived = reDeriveFrontiers(frontierLeaves, sessionId);
|
|
124
|
+
// Forged / cross-session leaves are the STRONGEST tamper evidence, so they get the strongest
|
|
125
|
+
// correction: treat them as ZERO trustworthy evidence (an empty derived map), which drives any
|
|
126
|
+
// 'live' frontier > 0 down to 0. Do NOT leave the published value untouched on invalid leaves —
|
|
127
|
+
// that would make malformed leaves an EASIER inflation bypass than shipping none. Still never
|
|
128
|
+
// REJECT (the directory dedup guard makes rejection an unrecoverable dead-end); the caller logs.
|
|
129
|
+
const derived = rederived.ok ? rederived.frontiers : new Map();
|
|
130
|
+
// Only CLIENT-VERIFIABLE ('live') parties are re-derivable; override any value above the provable
|
|
131
|
+
// one DOWN to it. The absent party is directory-attested (its remainder is not re-derivable here).
|
|
132
|
+
for (const p of participants) {
|
|
133
|
+
if (p.attestation_mode !== "live")
|
|
134
|
+
continue;
|
|
135
|
+
const d = derived.get(p.pubkey.toLowerCase()) ?? 0;
|
|
136
|
+
if (p.content_frontier_seq > d)
|
|
137
|
+
corrections.set(p.pubkey.toLowerCase(), d);
|
|
138
|
+
}
|
|
139
|
+
if (!rederived.ok)
|
|
140
|
+
return { status: "leaves_invalid", corrections, reason: rederived.reason };
|
|
141
|
+
return { status: corrections.size > 0 ? "corrected" : "verified", corrections };
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=seal-frontier-verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-frontier-verify.js","sourceRoot":"","sources":["../src/seal-frontier-verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { SealInterruptedLeaf } from "@cello-protocol/protocol-types";
|
|
2
|
+
import type { KeyProvider } from "@cello-protocol/crypto";
|
|
3
|
+
export type SealLeafVerifyReason = "nonce_mismatch" | "leaf_count_mismatch" | "leaf_signature_invalid";
|
|
4
|
+
/**
|
|
5
|
+
* M7-SESSION-001 (H-1): canonical byte encoding of a SEAL-INTERRUPTED leaf for
|
|
6
|
+
* Ed25519 signing/verification. Field order is fixed and deterministic. Both the
|
|
7
|
+
* initiator and the responder, and the verifier, MUST use exactly this encoding —
|
|
8
|
+
* any drift causes silent signature-verification failure.
|
|
9
|
+
*/
|
|
10
|
+
export declare function canonicalSealInterruptedLeafBytes(leaf: {
|
|
11
|
+
type: string;
|
|
12
|
+
sessionId: string;
|
|
13
|
+
leafCount: number;
|
|
14
|
+
merkleRootAtInterruption: string;
|
|
15
|
+
timestamp: number;
|
|
16
|
+
signerPubkey: string;
|
|
17
|
+
}): Uint8Array;
|
|
18
|
+
/**
|
|
19
|
+
* M7-SESSION-001 (H-1): construct and K_local-sign a SEAL-INTERRUPTED leaf.
|
|
20
|
+
* The private key never leaves keyProvider — only the Ed25519 signature is returned.
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildSignedSealInterruptedLeaf(keyProvider: KeyProvider, opts: {
|
|
23
|
+
sessionId: string;
|
|
24
|
+
leafCount: number;
|
|
25
|
+
merkleRootAtInterruption: string;
|
|
26
|
+
signerPubkeyHex: string;
|
|
27
|
+
}): Promise<SealInterruptedLeaf>;
|
|
28
|
+
/**
|
|
29
|
+
* M7-SESSION-001 / DAEMON-004: verify a counterparty's SEAL-INTERRUPTED ack leaf.
|
|
30
|
+
*
|
|
31
|
+
* Shared by BOTH the interrupted-seal flow (SESSION-001) and the active-session
|
|
32
|
+
* seal flow (DAEMON-004 finding #1) so the two paths perform an identical
|
|
33
|
+
* bilateral check. Returns a generic reason; each caller maps it to its own
|
|
34
|
+
* reason codes / observability events / guidance.
|
|
35
|
+
*
|
|
36
|
+
* Checks, in order:
|
|
37
|
+
* 1. L-2: the ack echoes the exact nonce we sent (replay / stale-response guard).
|
|
38
|
+
* 2. leafCount agreement: the counterparty's leafCount equals our own — an
|
|
39
|
+
* independent value, so a genuine divergence in transcript length is caught.
|
|
40
|
+
* 3. SI-002 / SI-003: the leaf carries a valid Ed25519 signature produced by the
|
|
41
|
+
* counterparty's OWN key (signerPubkey must equal the expected counterparty).
|
|
42
|
+
*
|
|
43
|
+
* Crypto: Ed25519 RFC 8032.
|
|
44
|
+
*/
|
|
45
|
+
export declare function verifyCounterpartySealLeaf(opts: {
|
|
46
|
+
leaf: Record<string, unknown>;
|
|
47
|
+
sentNonce: string;
|
|
48
|
+
ackNonce: string | null;
|
|
49
|
+
ownLeafCount: number;
|
|
50
|
+
expectedCounterpartyPubkey: string;
|
|
51
|
+
}): {
|
|
52
|
+
ok: true;
|
|
53
|
+
} | {
|
|
54
|
+
ok: false;
|
|
55
|
+
reason: SealLeafVerifyReason;
|
|
56
|
+
error: string;
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=seal-leaf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-leaf.d.ts","sourceRoot":"","sources":["../src/seal-leaf.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,wBAAwB,CAAC;AAEvG;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,EAAE;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB,EAAE,MAAM,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,UAAU,CAWb;AAED;;;GAGG;AACH,wBAAsB,8BAA8B,CAClD,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE;IACJ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB,EAAE,MAAM,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;CACzB,GACA,OAAO,CAAC,mBAAmB,CAAC,CAW9B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,0BAA0B,EAAE,MAAM,CAAC;CACpC,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAoD5E"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The SEAL-INTERRUPTED leaf: canonical bytes, K_local signing, and counterparty verification.
|
|
3
|
+
*
|
|
4
|
+
* The canonical encoding is the load-bearing part. Field order is fixed and deterministic, and the
|
|
5
|
+
* initiator, the responder and the verifier MUST all use exactly this encoding — any drift causes a
|
|
6
|
+
* SILENT signature-verification failure, which is the worst kind. That is why these three live
|
|
7
|
+
* together in one file: they are one agreement about bytes, and splitting them is how they drift.
|
|
8
|
+
*
|
|
9
|
+
* The private key never leaves the KeyProvider. Only the Ed25519 signature comes back.
|
|
10
|
+
*/
|
|
11
|
+
import { Buffer } from "node:buffer";
|
|
12
|
+
import { verify as ed25519Verify } from "@cello-protocol/crypto";
|
|
13
|
+
import { extractErrorMessage } from "./error-message.js";
|
|
14
|
+
/**
|
|
15
|
+
* M7-SESSION-001 (H-1): canonical byte encoding of a SEAL-INTERRUPTED leaf for
|
|
16
|
+
* Ed25519 signing/verification. Field order is fixed and deterministic. Both the
|
|
17
|
+
* initiator and the responder, and the verifier, MUST use exactly this encoding —
|
|
18
|
+
* any drift causes silent signature-verification failure.
|
|
19
|
+
*/
|
|
20
|
+
export function canonicalSealInterruptedLeafBytes(leaf) {
|
|
21
|
+
return new TextEncoder().encode(JSON.stringify({
|
|
22
|
+
type: leaf.type,
|
|
23
|
+
sessionId: leaf.sessionId,
|
|
24
|
+
leafCount: leaf.leafCount,
|
|
25
|
+
merkleRootAtInterruption: leaf.merkleRootAtInterruption,
|
|
26
|
+
timestamp: leaf.timestamp,
|
|
27
|
+
signerPubkey: leaf.signerPubkey,
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* M7-SESSION-001 (H-1): construct and K_local-sign a SEAL-INTERRUPTED leaf.
|
|
32
|
+
* The private key never leaves keyProvider — only the Ed25519 signature is returned.
|
|
33
|
+
*/
|
|
34
|
+
export async function buildSignedSealInterruptedLeaf(keyProvider, opts) {
|
|
35
|
+
const partial = {
|
|
36
|
+
type: "SEAL_INTERRUPTED",
|
|
37
|
+
sessionId: opts.sessionId,
|
|
38
|
+
leafCount: opts.leafCount,
|
|
39
|
+
merkleRootAtInterruption: opts.merkleRootAtInterruption,
|
|
40
|
+
timestamp: Date.now(),
|
|
41
|
+
signerPubkey: opts.signerPubkeyHex,
|
|
42
|
+
};
|
|
43
|
+
const sig = await keyProvider.sign(canonicalSealInterruptedLeafBytes(partial));
|
|
44
|
+
return { ...partial, signature: Buffer.from(sig).toString("hex") };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* M7-SESSION-001 / DAEMON-004: verify a counterparty's SEAL-INTERRUPTED ack leaf.
|
|
48
|
+
*
|
|
49
|
+
* Shared by BOTH the interrupted-seal flow (SESSION-001) and the active-session
|
|
50
|
+
* seal flow (DAEMON-004 finding #1) so the two paths perform an identical
|
|
51
|
+
* bilateral check. Returns a generic reason; each caller maps it to its own
|
|
52
|
+
* reason codes / observability events / guidance.
|
|
53
|
+
*
|
|
54
|
+
* Checks, in order:
|
|
55
|
+
* 1. L-2: the ack echoes the exact nonce we sent (replay / stale-response guard).
|
|
56
|
+
* 2. leafCount agreement: the counterparty's leafCount equals our own — an
|
|
57
|
+
* independent value, so a genuine divergence in transcript length is caught.
|
|
58
|
+
* 3. SI-002 / SI-003: the leaf carries a valid Ed25519 signature produced by the
|
|
59
|
+
* counterparty's OWN key (signerPubkey must equal the expected counterparty).
|
|
60
|
+
*
|
|
61
|
+
* Crypto: Ed25519 RFC 8032.
|
|
62
|
+
*/
|
|
63
|
+
export function verifyCounterpartySealLeaf(opts) {
|
|
64
|
+
const { leaf, sentNonce, ackNonce, ownLeafCount, expectedCounterpartyPubkey } = opts;
|
|
65
|
+
// 1. L-2: the counterparty MUST echo the exact nonce we sent.
|
|
66
|
+
if (ackNonce !== sentNonce) {
|
|
67
|
+
return { ok: false, reason: "nonce_mismatch", error: "ack nonce did not match the request nonce" };
|
|
68
|
+
}
|
|
69
|
+
// 2. leafCount agreement against our own independent count.
|
|
70
|
+
const cpLeafCount = typeof leaf["leafCount"] === "number" ? leaf["leafCount"] : null;
|
|
71
|
+
if (cpLeafCount !== ownLeafCount) {
|
|
72
|
+
return {
|
|
73
|
+
ok: false,
|
|
74
|
+
reason: "leaf_count_mismatch",
|
|
75
|
+
error: `counterparty leafCount ${String(cpLeafCount)} != own leafCount ${ownLeafCount}`,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// 3. SI-002/SI-003: verify the counterparty's Ed25519 signature on its OWN leaf.
|
|
79
|
+
try {
|
|
80
|
+
const signerPubkeyHex = typeof leaf["signerPubkey"] === "string" ? leaf["signerPubkey"] : null;
|
|
81
|
+
const signatureHex = typeof leaf["signature"] === "string" ? leaf["signature"] : null;
|
|
82
|
+
if (!signerPubkeyHex || !signatureHex) {
|
|
83
|
+
throw new Error("leaf missing signerPubkey or signature");
|
|
84
|
+
}
|
|
85
|
+
if (signerPubkeyHex !== expectedCounterpartyPubkey) {
|
|
86
|
+
throw new Error(`leaf signerPubkey ${signerPubkeyHex.slice(0, 16)} does not match counterparty ${expectedCounterpartyPubkey.slice(0, 16)}`);
|
|
87
|
+
}
|
|
88
|
+
const canonicalLeaf = {
|
|
89
|
+
type: leaf["type"],
|
|
90
|
+
sessionId: leaf["sessionId"],
|
|
91
|
+
leafCount: leaf["leafCount"],
|
|
92
|
+
merkleRootAtInterruption: leaf["merkleRootAtInterruption"],
|
|
93
|
+
timestamp: leaf["timestamp"],
|
|
94
|
+
signerPubkey: leaf["signerPubkey"],
|
|
95
|
+
};
|
|
96
|
+
const leafBytes = new TextEncoder().encode(JSON.stringify(canonicalLeaf));
|
|
97
|
+
const pubkeyBytes = new Uint8Array(Buffer.from(signerPubkeyHex, "hex"));
|
|
98
|
+
const sigBytes = new Uint8Array(Buffer.from(signatureHex, "hex"));
|
|
99
|
+
if (!ed25519Verify(pubkeyBytes, leafBytes, sigBytes)) {
|
|
100
|
+
return { ok: false, reason: "leaf_signature_invalid", error: "Ed25519 signature verification failed on SEAL-INTERRUPTED leaf" };
|
|
101
|
+
}
|
|
102
|
+
return { ok: true };
|
|
103
|
+
}
|
|
104
|
+
catch (verifyErr) {
|
|
105
|
+
return {
|
|
106
|
+
ok: false,
|
|
107
|
+
reason: "leaf_signature_invalid",
|
|
108
|
+
error: extractErrorMessage(verifyErr),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=seal-leaf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-leaf.js","sourceRoot":"","sources":["../src/seal-leaf.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** The legibility shape this hash reads — pubkeys may be Uint8Array or Buffer (CBOR-decoded). */
|
|
2
|
+
export interface LegibilityForHash {
|
|
3
|
+
participants: Array<{
|
|
4
|
+
pubkey: unknown;
|
|
5
|
+
content_frontier_seq: unknown;
|
|
6
|
+
last_authored_seq: unknown;
|
|
7
|
+
attestation_mode: unknown;
|
|
8
|
+
}>;
|
|
9
|
+
final_message: {
|
|
10
|
+
sender_pubkey: unknown;
|
|
11
|
+
seq: unknown;
|
|
12
|
+
answered: unknown;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare function canonicalLegibilityBytes(legibility: LegibilityForHash): Buffer;
|
|
16
|
+
/** SHA-256 of the canonical legibility bytes (32 bytes). */
|
|
17
|
+
export declare function canonicalLegibilityHash(legibility: LegibilityForHash): Uint8Array;
|
|
18
|
+
/**
|
|
19
|
+
* Build the seal TBS bytes WITH the legibility binding: the plain seal TBS concatenated with
|
|
20
|
+
* the 32-byte legibility hash. When `legibility` is absent (the unilateral seal carries none),
|
|
21
|
+
* returns the plain TBS unchanged — so the unilateral path keeps signing/verifying the plain TBS
|
|
22
|
+
* and only the bilateral path (which always carries legibility) is bound.
|
|
23
|
+
*/
|
|
24
|
+
export declare function bindLegibilityToTbs(tbs: Uint8Array, legibility: LegibilityForHash | null | undefined): Uint8Array;
|
|
25
|
+
//# sourceMappingURL=seal-legibility-tbs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-legibility-tbs.d.ts","sourceRoot":"","sources":["../src/seal-legibility-tbs.ts"],"names":[],"mappings":"AAsBA,iGAAiG;AACjG,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,KAAK,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,oBAAoB,EAAE,OAAO,CAAC;QAC9B,iBAAiB,EAAE,OAAO,CAAC;QAC3B,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC,CAAC;IACH,aAAa,EAAE;QACb,aAAa,EAAE,OAAO,CAAC;QACvB,GAAG,EAAE,OAAO,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AA0BD,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM,CAY9E;AAED,4DAA4D;AAC5D,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,iBAAiB,GAAG,UAAU,CAEjF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,CAOjH"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CELLO-M7 — canonical hash of the seal-certificate legibility object, for binding it into
|
|
3
|
+
* the FROST-signed seal TBS (tamper-evidence). MUST stay byte-for-byte identical to the
|
|
4
|
+
* directory's copy (`trustless-cello/packages/directory/src/seal-legibility.ts`
|
|
5
|
+
* canonicalLegibilityHash) — the live bilateral seal SELF-CHECKS agreement: directory and
|
|
6
|
+
* daemon each fold this hash into the signed TBS, and the seal verifies only if they match.
|
|
7
|
+
*
|
|
8
|
+
* Design: an EXPLICIT, fixed byte layout (NOT canonical CBOR) so there is zero dependence on
|
|
9
|
+
* a CBOR library's determinism. Only the TAMPERABLE facts are bound — the per-party frontiers
|
|
10
|
+
* + attestation_mode and the final_message. The constants (attests / disclaimer) are NOT bound:
|
|
11
|
+
* the daemon re-asserts attests as a literal, and the disclaimer is informational.
|
|
12
|
+
*
|
|
13
|
+
* Hash = SHA-256( domain || u32(participantCount) ||
|
|
14
|
+
* for each participant (in array order): pubkey[32] || u32(content_frontier_seq) ||
|
|
15
|
+
* u32(last_authored_seq) || modeByte ||
|
|
16
|
+
* final_message.sender_pubkey[32] || u32(seq) || answeredByte )
|
|
17
|
+
*
|
|
18
|
+
* Participants are hashed in array order, so a MITM that REORDERS the participants array also
|
|
19
|
+
* changes the hash → the seal signature fails. Crypto ref: SHA-256 FIPS 180-4.
|
|
20
|
+
*/
|
|
21
|
+
import { createHash } from "node:crypto";
|
|
22
|
+
const DOMAIN = Buffer.from("CELLO-SEAL-LEGIBILITY-v1", "utf8");
|
|
23
|
+
/** Coerce any byte-ish value to a 32-byte Buffer (zero-padded/truncated). Both sides do this. */
|
|
24
|
+
function pubkey32(v) {
|
|
25
|
+
const out = Buffer.alloc(32);
|
|
26
|
+
if (v instanceof Uint8Array)
|
|
27
|
+
Buffer.from(v).copy(out, 0, 0, 32);
|
|
28
|
+
else if (Buffer.isBuffer(v))
|
|
29
|
+
v.copy(out, 0, 0, 32);
|
|
30
|
+
else if (typeof v === "string" && /^[0-9a-fA-F]{64}$/.test(v))
|
|
31
|
+
Buffer.from(v, "hex").copy(out, 0, 0, 32);
|
|
32
|
+
return out;
|
|
33
|
+
}
|
|
34
|
+
/** Coerce to uint32 the SAME way on both sides (handles bigint/number; >>>0 normalises). */
|
|
35
|
+
function u32(v) {
|
|
36
|
+
const n = typeof v === "bigint" ? Number(v) : typeof v === "number" ? v : 0;
|
|
37
|
+
const out = Buffer.alloc(4);
|
|
38
|
+
out.writeUInt32BE((n >>> 0), 0);
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
function modeByte(v) {
|
|
42
|
+
const b = v === "live" ? 1 : v === "recovered" ? 2 : v === "absent" ? 3 : 0;
|
|
43
|
+
return Buffer.from([b]);
|
|
44
|
+
}
|
|
45
|
+
export function canonicalLegibilityBytes(legibility) {
|
|
46
|
+
const parts = [DOMAIN];
|
|
47
|
+
const participants = Array.isArray(legibility.participants) ? legibility.participants : [];
|
|
48
|
+
const count = Buffer.alloc(4);
|
|
49
|
+
count.writeUInt32BE(participants.length >>> 0, 0);
|
|
50
|
+
parts.push(count);
|
|
51
|
+
for (const p of participants) {
|
|
52
|
+
parts.push(pubkey32(p.pubkey), u32(p.content_frontier_seq), u32(p.last_authored_seq), modeByte(p.attestation_mode));
|
|
53
|
+
}
|
|
54
|
+
const fm = legibility.final_message ?? { sender_pubkey: undefined, seq: 0, answered: false };
|
|
55
|
+
parts.push(pubkey32(fm.sender_pubkey), u32(fm.seq), Buffer.from([fm.answered === true ? 1 : 0]));
|
|
56
|
+
return Buffer.concat(parts);
|
|
57
|
+
}
|
|
58
|
+
/** SHA-256 of the canonical legibility bytes (32 bytes). */
|
|
59
|
+
export function canonicalLegibilityHash(legibility) {
|
|
60
|
+
return new Uint8Array(createHash("sha256").update(canonicalLegibilityBytes(legibility)).digest());
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Build the seal TBS bytes WITH the legibility binding: the plain seal TBS concatenated with
|
|
64
|
+
* the 32-byte legibility hash. When `legibility` is absent (the unilateral seal carries none),
|
|
65
|
+
* returns the plain TBS unchanged — so the unilateral path keeps signing/verifying the plain TBS
|
|
66
|
+
* and only the bilateral path (which always carries legibility) is bound.
|
|
67
|
+
*/
|
|
68
|
+
export function bindLegibilityToTbs(tbs, legibility) {
|
|
69
|
+
if (!legibility)
|
|
70
|
+
return tbs;
|
|
71
|
+
const h = canonicalLegibilityHash(legibility);
|
|
72
|
+
const out = new Uint8Array(tbs.length + h.length);
|
|
73
|
+
out.set(tbs, 0);
|
|
74
|
+
out.set(h, tbs.length);
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=seal-legibility-tbs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-legibility-tbs.js","sourceRoot":"","sources":["../src/seal-legibility-tbs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { SealCarryLeaf } from "./session-seal-leaf-store.js";
|
|
2
|
+
export interface LocalSealTerminusInput {
|
|
3
|
+
/** The relay's ordered log as this side holds it, ascending. Both parties' leaves. */
|
|
4
|
+
carry: readonly SealCarryLeaf[];
|
|
5
|
+
/** This agent's K_local pubkey, hex — who the terminus is authored by. */
|
|
6
|
+
ownPubkeyHex: string;
|
|
7
|
+
/** The same key as bytes, for the Structure 1 claim. */
|
|
8
|
+
ownPubkey: Uint8Array;
|
|
9
|
+
/** The RELAY session id the carried leaves are recorded under. */
|
|
10
|
+
sessionIdBytes: Uint8Array;
|
|
11
|
+
/** The session's agreed starting point — what both links fall back to before anyone has spoken. */
|
|
12
|
+
genesis: Uint8Array;
|
|
13
|
+
/** The content-only root this side signs, hex. */
|
|
14
|
+
finalRootHex: string;
|
|
15
|
+
closeTimestamp: number;
|
|
16
|
+
sign: (bytes: Uint8Array) => Promise<Uint8Array>;
|
|
17
|
+
}
|
|
18
|
+
export type LocalSealTerminusResult = {
|
|
19
|
+
ok: true;
|
|
20
|
+
leaf: SealCarryLeaf;
|
|
21
|
+
payload: Uint8Array;
|
|
22
|
+
contentHashHex: string;
|
|
23
|
+
} | {
|
|
24
|
+
ok: false;
|
|
25
|
+
reason: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Refusals, and each one is a case where writing a leaf anyway would make things worse:
|
|
29
|
+
*
|
|
30
|
+
* `seal_carry_empty` nothing was ever witnessed, so there is no record to close.
|
|
31
|
+
* `seal_carry_noncontiguous` a witnessed leaf never reached us; a terminus over a record with a
|
|
32
|
+
* hole in it would be signing a history we know is not the history.
|
|
33
|
+
* `seal_carry_own_ctrl_present` we already closed. A SECOND control leaf from one party makes the
|
|
34
|
+
* session unsealable by any directory, permanently — the caller must
|
|
35
|
+
* reuse the one that is there, never add to it.
|
|
36
|
+
* `seal_carry_unreadable` a leaf this daemon cannot decode is one it cannot chain onto.
|
|
37
|
+
* `seal_carry_leaf_kind_unknown` a leaf kind this build cannot name has no domain to hash in, and
|
|
38
|
+
* a guessed one yields a root nobody else computes.
|
|
39
|
+
*/
|
|
40
|
+
export declare function buildLocalSealTerminus(input: LocalSealTerminusInput): Promise<LocalSealTerminusResult>;
|
|
41
|
+
//# sourceMappingURL=seal-local-terminus.d.ts.map
|