@cello-protocol/daemon 0.0.227 → 0.0.229
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 +454 -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,538 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M7 Keystone (Part 2) — production `signalingConnect` for the daemon.
|
|
3
|
+
*
|
|
4
|
+
* This is the daemon's directory-facing dialer. It establishes ONE authenticated
|
|
5
|
+
* signaling stream to a directory node and returns it as a transport
|
|
6
|
+
* `ConnectResult`. The transport `SignalingManager` owns everything after connect:
|
|
7
|
+
* heartbeat, reconnect (it calls connect() again on a fresh attempt), the outbound
|
|
8
|
+
* queue, and optional manifest polling.
|
|
9
|
+
*
|
|
10
|
+
* The 7-step handshake below is the wire protocol the directory speaks. It is not negotiable from
|
|
11
|
+
* this side: change a step and registration, the DKG ceremony, and session sealing all break.
|
|
12
|
+
*
|
|
13
|
+
* Architecture note (2026-06-11 daemon-transport doc): this is the *directory-facing
|
|
14
|
+
* node* — one per daemon, signaling only. A FRESH libp2p node (and therefore a fresh
|
|
15
|
+
* transport key / Peer ID) is created on every connect, which is exactly the
|
|
16
|
+
* reconnect-rotation behavior the architecture calls for. Per-session data exchange
|
|
17
|
+
* uses separate ephemeral session nodes, not this node.
|
|
18
|
+
*
|
|
19
|
+
* Step-5/6 directory identity verification (the consortium-manifest "directory proves
|
|
20
|
+
* itself back" hardening) is OPTIONAL here: it runs only when a `challengeVerifier`
|
|
21
|
+
* is supplied. M6 ran with it off (challengeVerifier = null) and connected fine; the
|
|
22
|
+
* hardening layers on later without changing this path.
|
|
23
|
+
*
|
|
24
|
+
* Crypto reference: agent→directory auth signs SHA-256(domain ‖ nonce ‖ pubkey) with
|
|
25
|
+
* the agent's K_local Ed25519 key (RFC 8032). K_local never leaves the KeyProvider.
|
|
26
|
+
*/
|
|
27
|
+
import { createHash } from "node:crypto";
|
|
28
|
+
import { decode } from "cbor-x";
|
|
29
|
+
import { encodeCbor } from "@cello-protocol/protocol-types";
|
|
30
|
+
import * as lp from "it-length-prefixed";
|
|
31
|
+
import { createNode, buildStep5Tbs, } from "@cello-protocol/transport";
|
|
32
|
+
import { extractErrorMessage } from "./error-message.js";
|
|
33
|
+
const SIGNALING_PROTOCOL_ID = "/cello/signaling/1.0.0";
|
|
34
|
+
const AUTH_DOMAIN_DIR = "CELLO-DIR-AUTH-v1";
|
|
35
|
+
const AUTH_TIMEOUT_MS = 5_000;
|
|
36
|
+
function toU8(v) {
|
|
37
|
+
if (v instanceof Uint8Array)
|
|
38
|
+
return v;
|
|
39
|
+
if (Buffer.isBuffer(v))
|
|
40
|
+
return new Uint8Array(v);
|
|
41
|
+
if (typeof v.slice === "function") {
|
|
42
|
+
return v.slice();
|
|
43
|
+
}
|
|
44
|
+
throw new Error(`expected bytes, got ${typeof v}`);
|
|
45
|
+
}
|
|
46
|
+
function errMsg(err) {
|
|
47
|
+
return extractErrorMessage(err);
|
|
48
|
+
}
|
|
49
|
+
async function nextWithTimeout(iter, timeoutMs) {
|
|
50
|
+
return Promise.race([
|
|
51
|
+
iter.next(),
|
|
52
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error("auth_timeout")), timeoutMs)),
|
|
53
|
+
]);
|
|
54
|
+
}
|
|
55
|
+
async function safeStop(node) {
|
|
56
|
+
try {
|
|
57
|
+
await node.stop();
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
/* best-effort teardown */
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* DOD-M15-STEP6-REPLAY-1 — how far out of date a directory identity proof may be.
|
|
65
|
+
*
|
|
66
|
+
* ±5 minutes: wide enough for ordinary clock skew between an operator's machine and a directory
|
|
67
|
+
* node without requiring either to be time-synced, narrow enough that a captured proof stops being
|
|
68
|
+
* useful in minutes rather than never. An UNPARSEABLE timestamp is treated as out of window — the
|
|
69
|
+
* NaN-comparison lesson from the manifest gate, where `new Date("nonsense") <= x` is false and a
|
|
70
|
+
* garbage value sailed through a check that looked like it covered it.
|
|
71
|
+
*/
|
|
72
|
+
const IDENTITY_PROOF_MAX_SKEW_MS = 5 * 60_000;
|
|
73
|
+
/**
|
|
74
|
+
* Parse signaling_auth_ok's optional `relay_endpoints` field. Per-entry strict:
|
|
75
|
+
* a malformed entry is dropped (auth must never fail on a bad hint), a valid one
|
|
76
|
+
* survives. Returns [] when the field is absent or not an array.
|
|
77
|
+
*/
|
|
78
|
+
function parseRelayEndpoints(raw) {
|
|
79
|
+
if (!Array.isArray(raw))
|
|
80
|
+
return [];
|
|
81
|
+
const out = [];
|
|
82
|
+
for (const entry of raw) {
|
|
83
|
+
if (typeof entry !== "object" || entry === null)
|
|
84
|
+
continue;
|
|
85
|
+
const e = entry;
|
|
86
|
+
const peerId = e["peer_id"];
|
|
87
|
+
const multiaddrs = e["multiaddrs"];
|
|
88
|
+
if (typeof peerId !== "string" || peerId.length === 0)
|
|
89
|
+
continue;
|
|
90
|
+
if (!Array.isArray(multiaddrs) || multiaddrs.length === 0)
|
|
91
|
+
continue;
|
|
92
|
+
if (!multiaddrs.every((a) => typeof a === "string" && a.length > 0))
|
|
93
|
+
continue;
|
|
94
|
+
out.push({ peerId, addrs: multiaddrs });
|
|
95
|
+
}
|
|
96
|
+
return out;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Build a production `signalingConnect` for `DaemonConfig.signalingConnect`.
|
|
100
|
+
*
|
|
101
|
+
* The returned function performs one full connect attempt. It throws on any failure
|
|
102
|
+
* (no endpoint, no identity, dial failure, auth rejection, challenge failure); the
|
|
103
|
+
* transport SignalingManager catches the throw and schedules a reconnect.
|
|
104
|
+
*/
|
|
105
|
+
export function createSignalingConnect(deps) {
|
|
106
|
+
/**
|
|
107
|
+
* DOD-M15-DIRAUTH-1 — directory peers already told about a skipped identity check.
|
|
108
|
+
*
|
|
109
|
+
* Mirrors `consortium-bootstrap`'s `lapsedMembershipReportedFor` idiom: the fact is about a PEER,
|
|
110
|
+
* not about a connection, so reporting it per connection says the same true thing ~48 times an
|
|
111
|
+
* hour forever. Keyed on the peer this daemon DIALLED — never on the peer's own claim about
|
|
112
|
+
* itself, which on this path is precisely the thing that was not verified.
|
|
113
|
+
*
|
|
114
|
+
* ⚠️ SCOPED TO THE FACTORY, not the module. A module-level set is shared by every daemon wiring in
|
|
115
|
+
* the process and never resets, which makes the suppression outlive the thing it describes and
|
|
116
|
+
* makes test order load-bearing — my first version did exactly that and a later test silently lost
|
|
117
|
+
* its warning to an earlier one.
|
|
118
|
+
*/
|
|
119
|
+
const authSkipReportedFor = new Set();
|
|
120
|
+
return async function connect() {
|
|
121
|
+
const endpoint = await deps.getDirectoryEndpoint();
|
|
122
|
+
if (!endpoint) {
|
|
123
|
+
throw new Error("directory_endpoint_unknown");
|
|
124
|
+
}
|
|
125
|
+
const identity = deps.getAuthIdentity();
|
|
126
|
+
if (!identity) {
|
|
127
|
+
throw new Error("no_agent_identity");
|
|
128
|
+
}
|
|
129
|
+
// Fresh directory-facing node per connect → fresh transport key / Peer ID.
|
|
130
|
+
//
|
|
131
|
+
// DOD-NAT-REACHABILITY-1: relayServer disabled, and the opt-out is NOT made redundant by this
|
|
132
|
+
// node listening on nothing (see below). Leaving `nodeType` unset takes the service-node
|
|
133
|
+
// default, which adds `circuitRelayServer` to the service map and advertises HOP — and HOP is
|
|
134
|
+
// advertised over connections WE opened, not only over ones we accept. A node with no listener
|
|
135
|
+
// still holds a live outbound connection to the directory.
|
|
136
|
+
//
|
|
137
|
+
// (This comment described the node as "bound on 0.0.0.0" until DOD-M15-SURFACE-1 removed the
|
|
138
|
+
// binding. Rewritten rather than deleted: the constraint it records is still load-bearing, and
|
|
139
|
+
// leaving it in past tense put two comments in one expression contradicting each other about
|
|
140
|
+
// the exact fact this unit changed — which is how the binding gets "restored" by a later
|
|
141
|
+
// session that stops reading at the first one.)
|
|
142
|
+
const node = deps.createDirectoryNode
|
|
143
|
+
? await deps.createDirectoryNode(identity.keyProvider)
|
|
144
|
+
: await createNode({
|
|
145
|
+
keyProvider: identity.keyProvider,
|
|
146
|
+
/**
|
|
147
|
+
* DOD-M15-SURFACE-1 — LISTEN ON NOTHING. This node had a real open port on every
|
|
148
|
+
* interface, for no reason.
|
|
149
|
+
*
|
|
150
|
+
* It bound `/ip4/0.0.0.0/tcp/0` while registering **no protocol handler at all**, and the
|
|
151
|
+
* directory never dials a client — every directory connection is one this daemon opened.
|
|
152
|
+
* So the port accepted connections that could reach no CELLO protocol, on an operator's
|
|
153
|
+
* machine, for the life of the daemon. Not listening is strictly stronger than filtering
|
|
154
|
+
* who may connect: there is no socket, nothing to scan, and nothing to gate. (A
|
|
155
|
+
* `DirectoryConnectionGater` exists for the filtering approach and is constructed only in
|
|
156
|
+
* tests — it is the consolation prize, not the fix.)
|
|
157
|
+
*
|
|
158
|
+
* FALSIFIED BEFORE REMOVING, because `listenAddresses()` IS sent to the directory at step
|
|
159
|
+
* 7 below, in `peer_info_announce`, under a comment saying it is so the directory can
|
|
160
|
+
* broker sessions. Traced to the consumer: the directory stores it and its own code says
|
|
161
|
+
* this address is *"its per-agent DIRECTORY node, NOT its standing-receiver session node,
|
|
162
|
+
* so it is NOT a valid content endpoint (using it yields 'could not negotiate
|
|
163
|
+
* /cello/content')"*. A counterparty's session endpoint reaches the other side through the
|
|
164
|
+
* `session_offer` → `session_offer_accept` round-trip, never through this announce. No
|
|
165
|
+
* client reads `participant_a/b.multiaddrs` at all.
|
|
166
|
+
*
|
|
167
|
+
* The announce still matters and still happens: `#peerInfoAnnounced` gates `session_request`
|
|
168
|
+
* on the directory side, and it is set by the frame ARRIVING, not by what is in it. The
|
|
169
|
+
* peer id still goes with it, and a peer id needs no listener.
|
|
170
|
+
*
|
|
171
|
+
* INBOUND SESSIONS ARE UNAFFECTED. They arrive on the standing receiver, which is a
|
|
172
|
+
* different node and keeps its socket deliberately (relay-audit Decision 2 — it is
|
|
173
|
+
* load-bearing for same-machine and same-LAN sessions).
|
|
174
|
+
*/
|
|
175
|
+
listenAddresses: [],
|
|
176
|
+
relayServer: { enabled: false },
|
|
177
|
+
// Same reason as relayServer above: this is a CLIENT node that leaves nodeType unset, so
|
|
178
|
+
// the service-node default would leave the AutoNAT responder on -- and answering one
|
|
179
|
+
// dial-back tears down this very connection, killing signaling mid-registration.
|
|
180
|
+
autonatResponder: { enabled: false },
|
|
181
|
+
});
|
|
182
|
+
let sigStream;
|
|
183
|
+
try {
|
|
184
|
+
// L1: start() is inside the try so a start failure is caught and the
|
|
185
|
+
// partially-started node is torn down (safeStop) rather than leaked.
|
|
186
|
+
await node.start();
|
|
187
|
+
if (endpoint.multiaddr) {
|
|
188
|
+
// Best-effort dial; newStream below surfaces the real failure if unreachable.
|
|
189
|
+
try {
|
|
190
|
+
await node.dial(endpoint.multiaddr);
|
|
191
|
+
}
|
|
192
|
+
catch (dialErr) {
|
|
193
|
+
// L2: non-fatal (dial-by-peerId may still work / already connected), but
|
|
194
|
+
// keep the real reason — newStream's error is generic.
|
|
195
|
+
deps.logger.debug("directory.dial.failed", {
|
|
196
|
+
multiaddr: endpoint.multiaddr,
|
|
197
|
+
error: errMsg(dialErr),
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
sigStream = await node.newStream(endpoint.peerId, SIGNALING_PROTOCOL_ID);
|
|
202
|
+
}
|
|
203
|
+
catch (err) {
|
|
204
|
+
await safeStop(node);
|
|
205
|
+
throw new Error(`directory_dial_failed: ${errMsg(err)}`);
|
|
206
|
+
}
|
|
207
|
+
const iter = lp.decode(sigStream)[Symbol.asyncIterator]();
|
|
208
|
+
try {
|
|
209
|
+
// ── Steps 1-2: receive the directory's auth challenge (32-byte nonce) ──
|
|
210
|
+
const challenge = await nextWithTimeout(iter, AUTH_TIMEOUT_MS);
|
|
211
|
+
if (challenge.done || challenge.value === undefined)
|
|
212
|
+
throw new Error("directory_auth_no_challenge");
|
|
213
|
+
const challengeFrame = decode(toU8(challenge.value));
|
|
214
|
+
if (challengeFrame["type"] !== "signaling_auth_challenge") {
|
|
215
|
+
throw new Error(`directory_auth_unexpected_frame: ${String(challengeFrame["type"])}`);
|
|
216
|
+
}
|
|
217
|
+
const nonce = toU8(challengeFrame["nonce"]);
|
|
218
|
+
if (nonce.length !== 32)
|
|
219
|
+
throw new Error("directory_auth_bad_nonce");
|
|
220
|
+
// ── Steps 3-4: sign SHA-256(domain ‖ nonce ‖ pubkey), send auth response ──
|
|
221
|
+
const myPubkey = Buffer.from(identity.pubkeyHex, "hex");
|
|
222
|
+
const domain = Buffer.from(AUTH_DOMAIN_DIR, "utf8");
|
|
223
|
+
const authMsg = new Uint8Array(Buffer.concat([domain, nonce, myPubkey]));
|
|
224
|
+
const msgHash = new Uint8Array(createHash("sha256").update(authMsg).digest());
|
|
225
|
+
const sig = await identity.keyProvider.sign(msgHash);
|
|
226
|
+
const authResponse = encodeCbor({
|
|
227
|
+
type: "signaling_auth_response",
|
|
228
|
+
pubkey: myPubkey,
|
|
229
|
+
signature: sig,
|
|
230
|
+
// Cross-node item 3: only the transient visiting connection sets this; home connections omit it.
|
|
231
|
+
...(deps.visiting ? { visiting: true } : {}),
|
|
232
|
+
});
|
|
233
|
+
sigStream.send(lp.encode.single(authResponse));
|
|
234
|
+
// ── Step 5: receive signaling_auth_ok ──
|
|
235
|
+
const ack = await nextWithTimeout(iter, AUTH_TIMEOUT_MS);
|
|
236
|
+
if (ack.done || ack.value === undefined)
|
|
237
|
+
throw new Error("directory_auth_no_ack");
|
|
238
|
+
const ackFrame = decode(toU8(ack.value));
|
|
239
|
+
if (ackFrame["type"] !== "signaling_auth_ok") {
|
|
240
|
+
throw new Error(`directory_auth_rejected: ${String(ackFrame["type"])}`);
|
|
241
|
+
}
|
|
242
|
+
// ── Step 6 (optional hardening): verify the directory's identity proof ──
|
|
243
|
+
// Runs only when a challengeVerifier is configured. M6 ran without one.
|
|
244
|
+
let directoryNodeId = typeof ackFrame["nodeId"] === "string" ? ackFrame["nodeId"] : endpoint.peerId;
|
|
245
|
+
const verifier = deps.challengeVerifier;
|
|
246
|
+
if (!verifier) {
|
|
247
|
+
/**
|
|
248
|
+
* DOD-M15-DIRAUTH-1 — **A DISARMED CHECK MUST NOT LOOK LIKE A HEALTHY ONE.**
|
|
249
|
+
*
|
|
250
|
+
* With no verifier configured, step 6 does not run at all: this daemon takes the
|
|
251
|
+
* directory's word for which directory it is. Until now the only trace of that was
|
|
252
|
+
* `verified: false` — a boolean field inside the **info** line at the bottom of a successful
|
|
253
|
+
* connect. Every other connect logged the same event at the same level, so the disarmed
|
|
254
|
+
* state and the enforced state were distinguishable only by reading one field of one line,
|
|
255
|
+
* which nothing alerts on and no operator reads.
|
|
256
|
+
*
|
|
257
|
+
* ⚠️ THIS IS NOT THE FIX AND MUST NOT BE MISTAKEN FOR ONE — this entry's own conclusion is
|
|
258
|
+
* that **a log is not a control**, and a WARN is still a log. What it buys is that the
|
|
259
|
+
* absence has a name and a level of its own, so "authentication is off" can be seen without
|
|
260
|
+
* knowing to look for it. The control is `CELLO_REQUIRE_DIRECTORY_AUTH`, which refuses at
|
|
261
|
+
* startup; this is what tells an operator who has not set it what they are running.
|
|
262
|
+
*/
|
|
263
|
+
/**
|
|
264
|
+
* ⚠️ ONCE PER DIRECTORY, NOT ONCE PER CONNECT — review F3, and the number is the argument.
|
|
265
|
+
* The signaling stream turns over roughly every 70 seconds and reconnects forever, so a
|
|
266
|
+
* per-connect WARN is ~48 an hour PER AGENT, indefinitely, and the daemon's stdout logger
|
|
267
|
+
* has no level filtering. Three agents is ~3,400 identical lines a day. **A signal that
|
|
268
|
+
* fires on the normal case is not a signal** — this repo's own rule — and it would bury the
|
|
269
|
+
* public-directory case this exists to raise.
|
|
270
|
+
*
|
|
271
|
+
* ⚠️ AND THE FIELD IS NAMED FOR WHAT IT IS — review F4. On this path `directoryNodeId` is
|
|
272
|
+
* `ackFrame["nodeId"]`: a string the REMOTE sent about itself, with nothing checked. Printing
|
|
273
|
+
* it under that name inside a line whose whole subject is *"we did not check which directory
|
|
274
|
+
* this is"* presents the peer's own answer as the answer. `dialedPeerId` sits beside it as
|
|
275
|
+
* the thing this daemon actually chose.
|
|
276
|
+
*/
|
|
277
|
+
const claimedNodeId = typeof ackFrame["nodeId"] === "string" ? ackFrame["nodeId"] : null;
|
|
278
|
+
if (!authSkipReportedFor.has(endpoint.peerId)) {
|
|
279
|
+
authSkipReportedFor.add(endpoint.peerId);
|
|
280
|
+
deps.logger.warn("directory.auth.skipped", {
|
|
281
|
+
dialedPeerId: endpoint.peerId,
|
|
282
|
+
claimedNodeId,
|
|
283
|
+
agentPubkey: identity.pubkeyHex,
|
|
284
|
+
impact: "no directory identity verifier is configured, so this connection did NOT check which " +
|
|
285
|
+
"directory it reached — the peer's claim of its own identity was accepted as given. " +
|
|
286
|
+
"Set CELLO_CONSORTIUM_ROOT_KEYS (with CELLO_CONSORTIUM_THRESHOLD) to enable " +
|
|
287
|
+
"verification, or CELLO_REQUIRE_DIRECTORY_AUTH=1 to refuse at startup instead of " +
|
|
288
|
+
"connecting unverified. Reported ONCE per directory peer, not per reconnect.",
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
if (verifier) {
|
|
293
|
+
const nodeId = ackFrame["nodeId"];
|
|
294
|
+
const signature = ackFrame["signature"];
|
|
295
|
+
const timestamp = ackFrame["timestamp"];
|
|
296
|
+
if (!nodeId || !signature || !timestamp) {
|
|
297
|
+
deps.logger.error("directory.auth.challenge.failed", { reason: "no_identity_proof" });
|
|
298
|
+
throw new Error("directory_challenge_no_identity_proof");
|
|
299
|
+
}
|
|
300
|
+
const tbsBytes = buildStep5Tbs({
|
|
301
|
+
nodeId,
|
|
302
|
+
agentPubkeyHex: identity.pubkeyHex,
|
|
303
|
+
nonceHex: Buffer.from(nonce).toString("hex"),
|
|
304
|
+
isoTimestamp: timestamp,
|
|
305
|
+
});
|
|
306
|
+
const result = verifier.verifyChallenge(nodeId, tbsBytes, signature);
|
|
307
|
+
if (!result.valid) {
|
|
308
|
+
deps.logger.error("directory.auth.challenge.failed", { directoryNodeId: nodeId, reason: result.reason });
|
|
309
|
+
throw new Error(`directory_challenge_failed: ${result.reason}`);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* DOD-M15-STEP6-REPLAY-1 — A VALID SIGNATURE IS NOT A FRESH ONE.
|
|
313
|
+
*
|
|
314
|
+
* The TBS covers `nodeId ‖ agent pubkey ‖ nonce ‖ timestamp`, and until this check the
|
|
315
|
+
* client verified the signature over that tuple and looked at **neither** the timestamp nor
|
|
316
|
+
* the nonce. So **any party that once obtained a valid tuple for this agent could replay it
|
|
317
|
+
* indefinitely.**
|
|
318
|
+
*
|
|
319
|
+
* ─── WHY THE NONCE CANNOT CARRY THE FRESHNESS, WHICH IS THE PART THAT SURPRISED ME ──────
|
|
320
|
+
*
|
|
321
|
+
* The obvious answer is "check the nonce is the one we just sent". **We did not send it.**
|
|
322
|
+
* The nonce here is `challengeFrame["nonce"]` — the DIRECTORY's own, from step 1-2. The
|
|
323
|
+
* client contributes no fresh value to this exchange at all, so it holds nothing of its own
|
|
324
|
+
* to bind against. A replaying party simply replays the captured nonce in step 2 and the
|
|
325
|
+
* captured ack in step 5, and both halves agree.
|
|
326
|
+
*
|
|
327
|
+
* **That leaves the timestamp as the only freshness anchor**, and it is a real one: it is
|
|
328
|
+
* inside the signed bytes, so a replayer cannot move it without invalidating the signature
|
|
329
|
+
* they are replaying.
|
|
330
|
+
*
|
|
331
|
+
* ─── AFTER the signature, deliberately ─────────────────────────────────────────────────
|
|
332
|
+
*
|
|
333
|
+
* A stale proof and a forged one are different facts and must not collapse into one
|
|
334
|
+
* message. Checking freshness only once the signature verifies means `identity_proof_stale`
|
|
335
|
+
* always describes a GENUINE proof that is too old — never a forgery — which is what makes
|
|
336
|
+
* it diagnostic rather than another exit-point label.
|
|
337
|
+
*
|
|
338
|
+
* **The window, and what it does NOT fix.** ±5 minutes tolerates ordinary client/directory
|
|
339
|
+
* clock skew without a time-sync dependency. It BOUNDS replay to that window; it does not
|
|
340
|
+
* eliminate it, because with no client-chosen nonce there is nothing to make a proof
|
|
341
|
+
* single-use. Closing the remainder needs either a client contribution in the challenge or a
|
|
342
|
+
* seen-nonce cache — both wire or state changes, and neither is this line.
|
|
343
|
+
*/
|
|
344
|
+
const proofMs = Date.parse(timestamp);
|
|
345
|
+
const skewMs = Number.isFinite(proofMs) ? Math.abs(Date.now() - proofMs) : Number.NaN;
|
|
346
|
+
if (!Number.isFinite(skewMs) || skewMs > IDENTITY_PROOF_MAX_SKEW_MS) {
|
|
347
|
+
deps.logger.error("directory.auth.challenge.failed", {
|
|
348
|
+
directoryNodeId: nodeId,
|
|
349
|
+
reason: "identity_proof_stale",
|
|
350
|
+
timestamp,
|
|
351
|
+
skewMs: Number.isFinite(skewMs) ? Math.round(skewMs) : null,
|
|
352
|
+
maxSkewMs: IDENTITY_PROOF_MAX_SKEW_MS,
|
|
353
|
+
detail: "the directory's identity proof carries a valid signature over a timestamp outside the " +
|
|
354
|
+
"freshness window — either a replayed proof, or a clock that is badly out on one side.",
|
|
355
|
+
});
|
|
356
|
+
throw new Error("directory_challenge_failed: identity_proof_stale");
|
|
357
|
+
}
|
|
358
|
+
directoryNodeId = nodeId;
|
|
359
|
+
deps.logger.info("directory.auth.challenge.verified", { directoryNodeId, skewMs: Math.round(skewMs) });
|
|
360
|
+
}
|
|
361
|
+
// DOD-NAT-REACHABILITY-1 (Phase 2): the directory's relay pool rides
|
|
362
|
+
// signaling_auth_ok, so an agent knows WHERE it could reserve before any
|
|
363
|
+
// session exists. 056-SLOTDEAD: it used to say the receiver reserves here;
|
|
364
|
+
// since 055-ONDEMAND this is a candidate list and the slot is taken at
|
|
365
|
+
// offer time. Surfaced via callback; parse failures drop entries, never
|
|
366
|
+
// the handshake.
|
|
367
|
+
if (deps.onRelayEndpoints) {
|
|
368
|
+
const endpoints = parseRelayEndpoints(ackFrame["relay_endpoints"]);
|
|
369
|
+
if (endpoints.length > 0) {
|
|
370
|
+
deps.logger.info("directory.relay_endpoints.received", {
|
|
371
|
+
directoryNodeId,
|
|
372
|
+
relayPeerIds: endpoints.map((e) => e.peerId),
|
|
373
|
+
});
|
|
374
|
+
deps.onRelayEndpoints(endpoints);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* DOD-M15-RELAYSLOTS-1: the online token rides the same frame as the relay pool above, for
|
|
379
|
+
* the same reason — a standing receiver needs both before any session exists: WHERE to ask
|
|
380
|
+
* for a reservation slot, and the credential that lets it keep one.
|
|
381
|
+
*
|
|
382
|
+
* A field of the wrong type is dropped rather than failing the handshake, exactly as a
|
|
383
|
+
* malformed relay endpoint is. The consequence is bounded and visible (this agent gets no
|
|
384
|
+
* slot on any relay, and the relay names the reason when it refuses), whereas failing the
|
|
385
|
+
* handshake would also cost session offers, which arrive on this same stream.
|
|
386
|
+
*/
|
|
387
|
+
if (deps.onOnlineToken) {
|
|
388
|
+
const raw = ackFrame["online_token"];
|
|
389
|
+
const token = raw instanceof Uint8Array ? raw : Buffer.isBuffer(raw) ? new Uint8Array(raw) : undefined;
|
|
390
|
+
if (token && token.length > 0) {
|
|
391
|
+
deps.logger.info("directory.online_token.received", { directoryNodeId, bytes: token.length });
|
|
392
|
+
deps.onOnlineToken(token);
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
/**
|
|
396
|
+
* Review M1: the directory names WHICH absence, so this is no longer one label for three
|
|
397
|
+
* different problems. `not_registered_here` in particular is a payload fact, and reporting
|
|
398
|
+
* it as a generic "no token" sent the operator to check a directory connection that is
|
|
399
|
+
* working perfectly.
|
|
400
|
+
*/
|
|
401
|
+
const raw = ackFrame["online_token_absent_reason"];
|
|
402
|
+
const absentReason = raw === "not_registered_here" || raw === "issue_failed" ? raw : undefined;
|
|
403
|
+
deps.onOnlineTokenAbsent?.(absentReason);
|
|
404
|
+
deps.logger.warn("directory.online_token.absent", {
|
|
405
|
+
directoryNodeId,
|
|
406
|
+
agentPubkey: identity.pubkeyHex,
|
|
407
|
+
reason: absentReason ?? "unstated",
|
|
408
|
+
impact: absentReason === "not_registered_here"
|
|
409
|
+
? "this directory holds no agent profile for this key, so it issued no online token " +
|
|
410
|
+
"and no relay will grant this agent a reservation. The directory connection is FINE " +
|
|
411
|
+
"— either this agent registered against a different sovereign node and its profile " +
|
|
412
|
+
"has not replicated here yet, or it is not registered at all."
|
|
413
|
+
: absentReason === "issue_failed"
|
|
414
|
+
? "this directory could not issue an online token — its own lookup or signing failed. " +
|
|
415
|
+
"That is a fault on the directory, not on this agent or on any relay."
|
|
416
|
+
: "this directory issued no online token, so no relay will let this agent hold a " +
|
|
417
|
+
"circuit reservation and it will be reachable only over a direct connection. It " +
|
|
418
|
+
"stated no reason, which means it predates the token.",
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
// ── Step 7: announce our peer info so the directory can broker sessions ──
|
|
423
|
+
const peerInfo = encodeCbor({
|
|
424
|
+
type: "peer_info_announce",
|
|
425
|
+
peer_id: node.getPeerId(),
|
|
426
|
+
multiaddrs: node.listenAddresses(),
|
|
427
|
+
});
|
|
428
|
+
sigStream.send(lp.encode.single(peerInfo));
|
|
429
|
+
/**
|
|
430
|
+
* ⚠️ **RENAMED FROM `directory.signaling.connected` — 058-LOGNAME, AND THE OLD NAME COST AN
|
|
431
|
+
* HOUR OF THE WRONG INVESTIGATION.**
|
|
432
|
+
*
|
|
433
|
+
* `SignalingManager.runConnectedPhase` logs `directory.signaling.connected` too, for a
|
|
434
|
+
* different fact: the manager has entered the connected STATE, carrying `manifestVersion`.
|
|
435
|
+
* This line is about the HANDSHAKE — who it was for, and whether the directory's challenge
|
|
436
|
+
* verified. Two meanings, one name, emitted in the same millisecond, so the event could not be
|
|
437
|
+
* counted at all.
|
|
438
|
+
*
|
|
439
|
+
* What that cost, concretely: reading 361 `directory.signaling.connected` in 90 minutes off a
|
|
440
|
+
* real daemon and spending an hour on connection churn, when the number was doubled by this
|
|
441
|
+
* collision and the actual defect was a credential that never refreshed (057-STALECRED).
|
|
442
|
+
*
|
|
443
|
+
* Keep them distinct. `connected` is the transport's state transition; `authenticated` is this
|
|
444
|
+
* — the daemon's per-agent handshake result, and the only one of the two that knows WHO.
|
|
445
|
+
*/
|
|
446
|
+
deps.logger.info("directory.signaling.authenticated", {
|
|
447
|
+
directoryNodeId,
|
|
448
|
+
agentPubkey: identity.pubkeyHex,
|
|
449
|
+
verified: !!verifier,
|
|
450
|
+
});
|
|
451
|
+
// Publish the live, directory-connected node so registration/FROST/seal can
|
|
452
|
+
// open further streams to the directory on the same node.
|
|
453
|
+
deps.publishNode?.(node);
|
|
454
|
+
const stream = wrapSignalingStream(sigStream, iter, node, deps.logger, deps.publishNode);
|
|
455
|
+
return {
|
|
456
|
+
stream,
|
|
457
|
+
directoryNodeId,
|
|
458
|
+
manifestVersion: deps.getManifestVersion?.() ?? 0,
|
|
459
|
+
};
|
|
460
|
+
}
|
|
461
|
+
catch (err) {
|
|
462
|
+
// Symmetry with publishNode(node): if anything threw after we published (or in a
|
|
463
|
+
// reconnect attempt), clear the daemon's reference so it never points at a node
|
|
464
|
+
// we're about to stop. No-op when nothing was published this attempt.
|
|
465
|
+
deps.publishNode?.(null);
|
|
466
|
+
try {
|
|
467
|
+
sigStream.abort(new Error("directory_auth_error"));
|
|
468
|
+
}
|
|
469
|
+
catch {
|
|
470
|
+
/* stream may already be torn down */
|
|
471
|
+
}
|
|
472
|
+
await safeStop(node);
|
|
473
|
+
throw err instanceof Error ? err : new Error(errMsg(err));
|
|
474
|
+
}
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Adapt the post-handshake libp2p stream to the transport `SignalingStream`
|
|
479
|
+
* interface the SignalingManager drives. Frames are CBOR objects; the wire is
|
|
480
|
+
* length-prefixed CBOR, matching the directory and the M6 client exactly.
|
|
481
|
+
*
|
|
482
|
+
* The read loop continues from the SAME iterator the handshake used, so no inbound
|
|
483
|
+
* frame is dropped between auth_ok and the manager registering its handler.
|
|
484
|
+
*/
|
|
485
|
+
function wrapSignalingStream(sigStream, iter, node, logger, publishNode) {
|
|
486
|
+
let closed = false;
|
|
487
|
+
return {
|
|
488
|
+
async send(frame) {
|
|
489
|
+
const encoded = encodeCbor(frame);
|
|
490
|
+
sigStream.send(lp.encode.single(encoded));
|
|
491
|
+
},
|
|
492
|
+
onMessage(handler) {
|
|
493
|
+
void (async () => {
|
|
494
|
+
try {
|
|
495
|
+
for (;;) {
|
|
496
|
+
const { value, done } = await iter.next();
|
|
497
|
+
if (done || value === undefined)
|
|
498
|
+
break;
|
|
499
|
+
let frame;
|
|
500
|
+
try {
|
|
501
|
+
frame = decode(toU8(value));
|
|
502
|
+
}
|
|
503
|
+
catch {
|
|
504
|
+
// Skip undecodable frames rather than killing the whole stream.
|
|
505
|
+
continue;
|
|
506
|
+
}
|
|
507
|
+
handler(frame);
|
|
508
|
+
}
|
|
509
|
+
logger.debug("directory.signaling.stream.ended", { expected: true });
|
|
510
|
+
}
|
|
511
|
+
catch (err) {
|
|
512
|
+
// M8C-ONBOARD-LOGNOISE-1 (F11): routine reconnect churn (the reader loop ends when the
|
|
513
|
+
// directory rotates/drops the stream, ~every 40–70 min, and the caller reconnects). At
|
|
514
|
+
// `warn` a healthy daemon looked like it was failing. Log it quietly + marked expected; a
|
|
515
|
+
// genuine SUSTAINED outage still stands out via the `reconnecting`→`lost` state escalation
|
|
516
|
+
// (getAgentSignaling retry budget), which is unchanged.
|
|
517
|
+
logger.debug("directory.signaling.reader.error", { error: errMsg(err), expected: true });
|
|
518
|
+
}
|
|
519
|
+
})();
|
|
520
|
+
},
|
|
521
|
+
close() {
|
|
522
|
+
if (closed)
|
|
523
|
+
return;
|
|
524
|
+
closed = true;
|
|
525
|
+
// Clear the daemon's reference before tearing the node down — registration/
|
|
526
|
+
// FROST/seal must not use a node that is being stopped.
|
|
527
|
+
publishNode?.(null);
|
|
528
|
+
try {
|
|
529
|
+
sigStream.abort(new Error("signaling_closed"));
|
|
530
|
+
}
|
|
531
|
+
catch {
|
|
532
|
+
/* already closed */
|
|
533
|
+
}
|
|
534
|
+
void safeStop(node);
|
|
535
|
+
},
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
//# sourceMappingURL=signaling-connect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signaling-connect.js","sourceRoot":"","sources":["../src/signaling-connect.ts"],"names":[],"mappings":"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"}
|