@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,877 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CELLO Daemon — SessionNodeManager
|
|
3
|
+
*
|
|
4
|
+
* Manages the lifecycle of all ephemeral session nodes:
|
|
5
|
+
* 1. Per-session nodes: fresh transport key + Peer ID, connectionGater allows
|
|
6
|
+
* only the designated counterparty. Created during cello_initiate_session
|
|
7
|
+
* (outbound) or cello_await_session (inbound, via standing receiver handoff).
|
|
8
|
+
* 2. Standing receiver node: pre-created, kept alive at all times, handed to the first inbound
|
|
9
|
+
* session and immediately replaced. Its gater is NOT open — `DOD-M15-ASSIGN-1` made it admit
|
|
10
|
+
* nobody inbound until a session offer names the dialer (see `standing-receivers.ts`). This
|
|
11
|
+
* line said "open gater" for as long as that was true and for a while after it was not.
|
|
12
|
+
* 3. 32-node cap: enforced before any new node is created.
|
|
13
|
+
* 4. Session status in the DB: active → sealed (on close) or interrupted
|
|
14
|
+
* (on graceful shutdown or SIGKILL-restart detection).
|
|
15
|
+
*
|
|
16
|
+
* Interrupted-session detection runs BEFORE the IPC socket opens, so a client cannot observe a
|
|
17
|
+
* stale 'active' row from a previous process.
|
|
18
|
+
*/
|
|
19
|
+
import { type ContentHashAlg } from "./wire-content-hash.js";
|
|
20
|
+
import { type CapacityReason } from "./refusal-reasons.js";
|
|
21
|
+
import { type SaltAgreementFrame } from "./session-salt-agreement.js";
|
|
22
|
+
import { type DaemonDatabase } from "./sqlcipher-db.js";
|
|
23
|
+
import { type RefusalKind } from "./refusal-reasons.js";
|
|
24
|
+
import type { Logger, SessionRecord } from "./types.js";
|
|
25
|
+
import { SessionTree, type WritableSessionTreeLeafKind } from "./session-tree.js";
|
|
26
|
+
import { type CelloNode, type IAutoNatService } from "@cello-protocol/transport";
|
|
27
|
+
import type { KeyProvider } from "@cello-protocol/crypto";
|
|
28
|
+
import { type SessionEphemeral } from "@cello-protocol/crypto";
|
|
29
|
+
import { type ParkEnvelope } from "./park-envelope.js";
|
|
30
|
+
import { AgentRelayClient, type RelayAuthRefusal, type RelayWitnessAlert } from "./session-relay-client.js";
|
|
31
|
+
import { ParkRecovery } from "./park-recovery.js";
|
|
32
|
+
import type { LivenessAnswer } from "./session-relay-client.js";
|
|
33
|
+
import { SessionContentSender } from "./session-content-send.js";
|
|
34
|
+
import { SessionContentIngest } from "./session-content-ingest.js";
|
|
35
|
+
import { SessionSeal } from "./session-seal.js";
|
|
36
|
+
import { SessionRelay } from "./session-relay.js";
|
|
37
|
+
import { SessionLifecycle } from "./session-lifecycle.js";
|
|
38
|
+
import { RelayReceiptStore } from "./relay-receipt-store.js";
|
|
39
|
+
import { SessionSealLeafStore } from "./session-seal-leaf-store.js";
|
|
40
|
+
import { ChannelLogStore } from "./channel-log-store.js";
|
|
41
|
+
import { SessionOwnChainStore } from "./session-own-chain-store.js";
|
|
42
|
+
import type { SealFrontierLeaf } from "./seal-frontier-verify.js";
|
|
43
|
+
import { type SecurityGatewayClient } from "@cello-protocol/gateway";
|
|
44
|
+
import { type ISessionNodeFactory, type ParkedDrainReason, type QuarantinedRecord, type RefusalNotice, type SessionImpairment, type TranscriptEntry, type WitnessAlertNotice } from "./session-node-types.js";
|
|
45
|
+
export { ABUSE_MAX_SESSIONS_PER_UNKNOWN_SENDER, ABUSE_MAX_SESSION_RECEIVED_BYTES, ABUSE_MAX_UNKNOWN_SESSIONS_GLOBAL, type AbandonNoticeResult, type AckHashReason, CAP_INTERRUPTED_TTL_MS, type ISessionNodeFactory, LEAF_FETCH_GRACE_MS, MAX_TERMINAL_REFUSALS_PER_SESSION, type ParkedDrainReason, type QuarantinedRecord, RELAY_QUARANTINE_MS, REVIVAL_BOUND_SWEEP_MS, REVIVAL_WINDOW_MS, REVIVE_RESERVATION_CANDIDATES, REVIVE_RESERVATION_TIMEOUT_MS, type RefusalNotice, type RelayConnectParams, SR_RESERVATION_MAX_RETRIES, type SentAuthorship, type SessionImpairment, type SessionNodeConfig, TERMINAL_REFUSAL_READ_RETRY_MS, TERMINAL_REFUSAL_REASONS, type TranscriptEntry, type WitnessAlertNotice, } from "./session-node-types.js";
|
|
46
|
+
export declare class SessionNodeManager {
|
|
47
|
+
#private;
|
|
48
|
+
getChannelLogStore(): ChannelLogStore;
|
|
49
|
+
setDetachedRelayClientBuilder(fn: (agentName: string, relayPeerId: string, relayAddrs: string[], stores: {
|
|
50
|
+
receiptStore?: RelayReceiptStore;
|
|
51
|
+
sealLeafStore?: SessionSealLeafStore;
|
|
52
|
+
ownChainStore?: SessionOwnChainStore;
|
|
53
|
+
onlineToken: () => Uint8Array | undefined;
|
|
54
|
+
}) => AgentRelayClient | undefined): void;
|
|
55
|
+
/**
|
|
56
|
+
* Why this agent's standing receiver could not hold a reservation, in words the person running it
|
|
57
|
+
* can act on — or null when the last attempt succeeded or none has been made.
|
|
58
|
+
*
|
|
59
|
+
* This is the surface DoD clause 7 is about: the assertion that matters is what the CLIENT can
|
|
60
|
+
* show someone, not what the relay wrote in its own log.
|
|
61
|
+
*/
|
|
62
|
+
getStandingReceiverRefusal(agentName: string): (RelayAuthRefusal & {
|
|
63
|
+
relayPeerId: string;
|
|
64
|
+
}) | null;
|
|
65
|
+
/** ─── DELEGATORS — the standing-receiver API other files call ───────────────────────── */
|
|
66
|
+
standingReceiverAbsenceReason(agentName: string): "daemon_shutting_down" | "standing_receiver_creating" | "agent_offline" | "no_standing_receiver";
|
|
67
|
+
getStandingReceiverInfo(agentName: string): {
|
|
68
|
+
peerId: string;
|
|
69
|
+
addrs: string[];
|
|
70
|
+
} | null;
|
|
71
|
+
getStandingReceiverReady(agentName?: string): boolean;
|
|
72
|
+
getStandingReceiverNode(agentName?: string): CelloNode | null;
|
|
73
|
+
getStandingReceiverReachability(agentName: string): "reserved" | "ready" | "retrying" | "unreachable" | "absent";
|
|
74
|
+
getStandingReceiverAutoNat(): IAutoNatService | null;
|
|
75
|
+
getStandingReceiverAllowedPeer(agentName: string): string | null;
|
|
76
|
+
admitOfferedDialer(a: string, p: string, sid: string): "narrowed" | "no_receiver" | "no_peer_named";
|
|
77
|
+
takeReservationForSession(a: string, c: string, cid: string, offerSid?: string): Promise<boolean>;
|
|
78
|
+
retakeReservationOn(a: string, node: CelloNode, c: string, cid: string): Promise<boolean>;
|
|
79
|
+
getStandingReceiverRelayIds(a: string): string[];
|
|
80
|
+
/** 055-ONDEMAND — a live session's own node. Its circuit is not the receiver's; see the release path. */
|
|
81
|
+
getSessionNodeForTest(a: string, sid: string): CelloNode | null;
|
|
82
|
+
getOfferedDialer(agentName: string, sessionIdHex: string): string | null;
|
|
83
|
+
clearOfferedDialer(agentName: string, sessionIdHex: string): void;
|
|
84
|
+
revokeOfferedDialer(agentName: string, sessionIdHex: string, offeredPeerId: string | null): void;
|
|
85
|
+
/** ─── DELEGATORS — the leaf-record API other files call ─────────────────────────────── */
|
|
86
|
+
recordSessionGenesis(agentName: string, sessionId: string, participantA: Uint8Array, participantB: Uint8Array, sessionTimestamp: number, sessionSignature: Uint8Array | undefined, relayAnchorHex?: string): void;
|
|
87
|
+
/** 069-ORDERPROOF: the relay key this session's ordering attestations are verified against. */
|
|
88
|
+
sessionRelayAnchor(agentName: string, sessionId: string): string | undefined;
|
|
89
|
+
persistRelayAnchor(agentName: string, sessionId: string, relayAnchorHex: string | undefined): void;
|
|
90
|
+
setSessionGenesisForTest(agentName: string, sessionId: string, genesis: Uint8Array): void;
|
|
91
|
+
recordCertifiedLeafSet(agentName: string, sessionId: string, signedLeaves: readonly SealFrontierLeaf[], sealedRootHex: string, correlationId?: string): boolean;
|
|
92
|
+
noteCertifiedLeafSetUnavailable(agentName: string, sessionId: string, state: "not_carried_absent_party" | "not_carried_present_party", detail: string): void;
|
|
93
|
+
getCertifiedLeafSet(agentName: string, sessionId: string): string[] | null;
|
|
94
|
+
getCertifiedLeafSetState(agentName: string, sessionId: string): {
|
|
95
|
+
state: string;
|
|
96
|
+
detail: string | null;
|
|
97
|
+
} | null;
|
|
98
|
+
/** ─── DELEGATORS — the held-content seams other files call ──────────────────────────── */
|
|
99
|
+
holdOwnLeafForTest(agentName: string, sessionId: string, canonicalSeq: number, contentHashHex: string): void;
|
|
100
|
+
/** ─── DELEGATORS — the witness-alert API other files call ────────────────────────────── */
|
|
101
|
+
recordRelayWitnessAlert(agentName: string, alert: RelayWitnessAlert): void;
|
|
102
|
+
getWitnessAlerts(agentName: string): ReadonlyArray<WitnessAlertNotice>;
|
|
103
|
+
witnessAlertsTruncated(agentName: string): boolean;
|
|
104
|
+
/** ─── DELEGATORS — the liveness API other files call, unchanged by the split ───────────── */
|
|
105
|
+
getSessionLiveness(agentName: string, sessionId: string): "alive" | "impaired" | "gone" | "unknown";
|
|
106
|
+
getSessionImpairment(agentName: string, sessionId: string): SessionImpairment | null;
|
|
107
|
+
markSessionLivenessForTest(agentName: string, sessionId: string, state: "alive" | "impaired" | "gone"): void;
|
|
108
|
+
/** ─── DELEGATORS — the test seams other files call, unchanged by the split ─────────────── */
|
|
109
|
+
mintSessionEphemeralForTest(agentName: string, sessionId: string): void;
|
|
110
|
+
sessionEphemeralPublicForTest(agentName: string, sessionId: string): Uint8Array | null;
|
|
111
|
+
setSessionEphemeralForTest(agentName: string, sessionId: string, ephemeral: SessionEphemeral): void;
|
|
112
|
+
setSessionContentKeyForTest(agentName: string, sessionId: string, key: Uint8Array): void;
|
|
113
|
+
forgetSessionContentKeyForTest(agentName: string, sessionId: string): void;
|
|
114
|
+
signOwnEphemeralForTest(agentName: string, sessionId: string): Promise<{
|
|
115
|
+
ephemeralPublic: Uint8Array;
|
|
116
|
+
signature: Uint8Array;
|
|
117
|
+
} | null>;
|
|
118
|
+
handleEphemeralFrameForTest(agentName: string, sessionId: string, frame: {
|
|
119
|
+
ephemeralPublic?: Uint8Array;
|
|
120
|
+
signature?: Uint8Array;
|
|
121
|
+
}, correlationId?: string): Promise<void>;
|
|
122
|
+
/**
|
|
123
|
+
* ─── DELEGATORS — the refusal-notice API other files call, unchanged by the split ──────────
|
|
124
|
+
*
|
|
125
|
+
* ⚠️ **REFUSALS LOGGED AND FILED NOTHING, AND THAT IS WHY THIS API EXISTS.** The encryption gate's
|
|
126
|
+
* three causes each carried a good `impact` and `guidance` at ERROR and none of them called
|
|
127
|
+
* `noteContentRefusal`, so the sentences an operator needed were in a file they have no reason to
|
|
128
|
+
* open. From their chair a message never arrived and the conversation went quiet — the exact defect
|
|
129
|
+
* `DOD-M15-NO-SILENT-REFUSAL-1` was built to end, three checks above the one that respected it.
|
|
130
|
+
*
|
|
131
|
+
* Both surfaces, always: the ERROR is the durable forensic record an investigation reads days
|
|
132
|
+
* later, and the notice is the control — the thing that actually reaches the person.
|
|
133
|
+
*/
|
|
134
|
+
noteContentRefusal(agentName: string, sessionId: string, reason: string, detail: {
|
|
135
|
+
kind: RefusalKind;
|
|
136
|
+
impact: string;
|
|
137
|
+
guidance: string;
|
|
138
|
+
}): void;
|
|
139
|
+
takeContentRefusals(agentName: string, sessionId: string, consumerId: string): Array<Omit<RefusalNotice, "sessionId">>;
|
|
140
|
+
dismissContentRefusals(agentName: string, sessionId: string): number;
|
|
141
|
+
takeAgentContentRefusals(agentName: string, consumerId: string): {
|
|
142
|
+
notices: RefusalNotice[];
|
|
143
|
+
truncated: boolean;
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* ─── DELEGATORS — the query API other files call, unchanged by the split ────────────────────
|
|
147
|
+
*/
|
|
148
|
+
listExpiredUnrevivableSessions(nowMs: number, windowMs: number): Array<{
|
|
149
|
+
agentName: string;
|
|
150
|
+
sessionId: string;
|
|
151
|
+
cause: string | null;
|
|
152
|
+
}>;
|
|
153
|
+
listRestartOrphanedSessions(): Array<{
|
|
154
|
+
agentName: string;
|
|
155
|
+
sessionId: string;
|
|
156
|
+
messageCount: number;
|
|
157
|
+
status: "interrupted" | "seal_interrupted_pending";
|
|
158
|
+
}>;
|
|
159
|
+
readQuarantined(agentName: string, sessionId: string, sequence?: number): QuarantinedRecord[];
|
|
160
|
+
getPinnedCounterpartyPrimary(agentName: string, counterpartyPubkeyHex: string): string | null;
|
|
161
|
+
recordSealedAnnex(agentName: string, sessionId: string, contentHashHex: string, content: Uint8Array, senderPubkeyHex: string | null): boolean;
|
|
162
|
+
findNextReceivedAfter(agentName: string, sessionId: string, afterSeq: number): {
|
|
163
|
+
sequence: number;
|
|
164
|
+
text: string;
|
|
165
|
+
} | null;
|
|
166
|
+
getSealInterruptedArtifacts(agentName: string, sessionId: string): {
|
|
167
|
+
role: string;
|
|
168
|
+
ownLeaf: unknown;
|
|
169
|
+
counterpartyLeaf: unknown;
|
|
170
|
+
merkleRoot: string;
|
|
171
|
+
nonce: string;
|
|
172
|
+
} | null;
|
|
173
|
+
getSessionsByStatus(status: "active" | "sealed" | "interrupted"): SessionRecord[];
|
|
174
|
+
recordRefusedSession(agentName: string, sessionId: string, reason: string): void;
|
|
175
|
+
getAgentRelayEndpoints(agentName: string): Array<{
|
|
176
|
+
relayPeerId: string;
|
|
177
|
+
relayAddrs: string[];
|
|
178
|
+
}>;
|
|
179
|
+
countActiveSessionsFromUnknownSenders(agentName: string): number;
|
|
180
|
+
getSealCertificate(agentName: string, sessionId: string): {
|
|
181
|
+
sealed_root: string;
|
|
182
|
+
legibility: unknown;
|
|
183
|
+
} | null;
|
|
184
|
+
setSessionName(agentName: string, sessionId: string, sessionName: string | null): boolean;
|
|
185
|
+
getPersistedRelayEndpoint(agentName: string, sessionId: string): {
|
|
186
|
+
relayPeerId: string;
|
|
187
|
+
relayAddrs: string[];
|
|
188
|
+
} | null;
|
|
189
|
+
markRestartSealGaveUp(agentName: string, sessionId: string, reason: string): void;
|
|
190
|
+
dismissSession(agentName: string, sessionId: string): {
|
|
191
|
+
ok: true;
|
|
192
|
+
} | {
|
|
193
|
+
ok: false;
|
|
194
|
+
reason: string;
|
|
195
|
+
};
|
|
196
|
+
agentNameForId(agentId: string): string | null;
|
|
197
|
+
getRenameNotices(agentName: string): Array<{
|
|
198
|
+
pubkey: string;
|
|
199
|
+
offered_name: string;
|
|
200
|
+
noticed_at: number;
|
|
201
|
+
moniker: string | null;
|
|
202
|
+
}>;
|
|
203
|
+
sessionsConsumingCap(agentName: string, counterpartyPubkey: string, limit?: number): string[];
|
|
204
|
+
advanceLastDeliveredSeq(agentName: string, sessionId: string, seq: number): void;
|
|
205
|
+
countActiveSessionsForCounterparty(agentName: string, counterpartyPubkey: string): number;
|
|
206
|
+
getSessionRecord(agentName: string, sessionId: string): SessionRecord | null;
|
|
207
|
+
hasDatabase(): boolean;
|
|
208
|
+
readSealedAnnex(agentName: string, sessionId?: string): Array<{
|
|
209
|
+
session_id: string;
|
|
210
|
+
content_hash: string;
|
|
211
|
+
sender_pubkey: string | null;
|
|
212
|
+
text: string;
|
|
213
|
+
arrived_at: number;
|
|
214
|
+
}>;
|
|
215
|
+
counterpartyAbandonedAt(agentName: string, sessionId: string): number | null;
|
|
216
|
+
getSealedRootHex(agentName: string, sessionId: string): string | null;
|
|
217
|
+
getLastDeliveredSeq(agentName: string, sessionId: string): number;
|
|
218
|
+
markSessionsInterruptedByLocalShutdownForTest(): void;
|
|
219
|
+
wasSessionRefused(agentName: string, sessionId: string): boolean;
|
|
220
|
+
countReceivedMessages(agentName: string, sessionId: string): number;
|
|
221
|
+
markInterruptedByCounterpartyForTest(agentName: string, sessionId: string): void;
|
|
222
|
+
/**
|
|
223
|
+
* M7-SESSION-004 (AC-005): persist the seal certificate's legibility object with the
|
|
224
|
+
* sealed record. Stored as a JSON string (hex-encoded pubkeys) so it round-trips a
|
|
225
|
+
* daemon restart and is returned intact on the cert-read surface. The caller normalises
|
|
226
|
+
* the raw wire legibility (Uint8Array pubkeys) into a JSON-safe shape before storing.
|
|
227
|
+
* Best-effort: a session row may not yet exist (the seal arrived before the row was
|
|
228
|
+
* persisted); in that case we no-op rather than throw — the cert still flows through the
|
|
229
|
+
* live return path. The legibility content is identical regardless of delivery timing.
|
|
230
|
+
*
|
|
231
|
+
* ⚠️ THIS BLOCK WAS STRANDED WHEN THE METHOD BECAME A DELEGATOR. It stayed behind and ended up
|
|
232
|
+
* stacked on top of `markSealed`'s own doc block, so that method showed two descriptions and the
|
|
233
|
+
* first one described a different method entirely — and the seal split then carried it into
|
|
234
|
+
* `session-seal.ts`, where `recordSealCertificate` does not appear at all. Returned to the call
|
|
235
|
+
* it describes. The row-writing itself lives in `session-queries.ts`.
|
|
236
|
+
*/
|
|
237
|
+
recordSealCertificate(agentName: string, sessionId: string, sealedRootHex: string, legibilityJson: string): void;
|
|
238
|
+
recordCounterpartyPrimary(agentName: string, sessionId: string, primaryPubkeyHex: string): void;
|
|
239
|
+
/**
|
|
240
|
+
* ─── DELEGATORS — the salt API other files call, unchanged by the split ─────────────────────
|
|
241
|
+
*
|
|
242
|
+
* `daemon.ts` and `session-content-handlers.ts` still say `manager.contentHashForSession(...)`.
|
|
243
|
+
* Keeping the surface identical is what lets the suite stand as evidence that this was a
|
|
244
|
+
* restructure and not a rewrite.
|
|
245
|
+
*/
|
|
246
|
+
setSaltContributionForTest(agentName: string, sessionId: string, contribution: Uint8Array): void;
|
|
247
|
+
forgetSaltContributionForTest(agentName: string, sessionId: string): void;
|
|
248
|
+
contentHashForSession(agentName: string, sessionId: string, content: Uint8Array): Promise<{
|
|
249
|
+
hash: Uint8Array;
|
|
250
|
+
alg: ContentHashAlg;
|
|
251
|
+
}>;
|
|
252
|
+
abandonUnsaltedHash(agentName: string, sessionId: string): void;
|
|
253
|
+
isContentSaltActive(agentName: string, sessionId: string): boolean;
|
|
254
|
+
expectSaltAgreement(agentName: string, sessionId: string): void;
|
|
255
|
+
saltForHashingForTest(agentName: string, sessionId: string): Promise<{
|
|
256
|
+
salt: Uint8Array | null;
|
|
257
|
+
reason?: string;
|
|
258
|
+
}>;
|
|
259
|
+
/**
|
|
260
|
+
* ─── DELEGATORS — the mailbox API other files call, unchanged by the split ───────────────────
|
|
261
|
+
*
|
|
262
|
+
* `content-park.ts` and `daemon.ts` still say `manager.recoverParkedEntry(...)` and
|
|
263
|
+
* `manager.setContentParkHook(...)`. Keeping the surface identical is what lets the full suite
|
|
264
|
+
* stand as evidence that this was a move: a caller that had to change would mean the contract
|
|
265
|
+
* moved with it.
|
|
266
|
+
*/
|
|
267
|
+
injectParkFault(count: number, cause?: string): number;
|
|
268
|
+
getParkFaultRemaining(): number;
|
|
269
|
+
setContentParkHook(fn: (args: {
|
|
270
|
+
agentName: string;
|
|
271
|
+
sessionId: string;
|
|
272
|
+
recipientPubkeyHex: string;
|
|
273
|
+
relayPeerId: string;
|
|
274
|
+
relayAddrs: readonly string[];
|
|
275
|
+
contentHashHex: string;
|
|
276
|
+
content: Uint8Array;
|
|
277
|
+
structure1Cbor?: Uint8Array;
|
|
278
|
+
structure2Cbor?: Uint8Array;
|
|
279
|
+
structure1Signature?: Uint8Array;
|
|
280
|
+
leafKind?: number;
|
|
281
|
+
contentHashAlg: string | undefined;
|
|
282
|
+
}) => Promise<{
|
|
283
|
+
ok: true;
|
|
284
|
+
} | {
|
|
285
|
+
ok: false;
|
|
286
|
+
reason: string;
|
|
287
|
+
cause?: string;
|
|
288
|
+
retryAfterMs?: number;
|
|
289
|
+
}>): void;
|
|
290
|
+
setParkedDrainHook(fn: (agentName: string, reason: ParkedDrainReason) => void): void;
|
|
291
|
+
recoverOwnSealCtrlLeafForTest(agentName: string, sessionId: string): {
|
|
292
|
+
reportedRootHex: string;
|
|
293
|
+
sequenceNumber: number;
|
|
294
|
+
} | "none" | "unknown";
|
|
295
|
+
recoverParkedEntry(agentName: string, sessionId: string, recipientPubkey: Uint8Array, unsealed: Uint8Array, contentHash: Uint8Array, correlationId?: string): ReturnType<ParkRecovery["recoverParkedEntry"]>;
|
|
296
|
+
/**
|
|
297
|
+
* ─── DELEGATORS — the class API is unchanged by the split, deliberately ──────────────────────
|
|
298
|
+
*
|
|
299
|
+
* Every method below moved into `session-records.ts` with its implementation and its comments.
|
|
300
|
+
* These one-liners exist so that no CALLER had to change: `contact-handlers.ts`, the IPC surface
|
|
301
|
+
* and the tests all still say `manager.getTier(...)`. That is what lets the full suite stand as
|
|
302
|
+
* the evidence that this was a move and not a rewrite — a test that had to change would have
|
|
303
|
+
* meant behaviour moved (Rule B).
|
|
304
|
+
*
|
|
305
|
+
* They are the price of the split and they are the cheap half: one line each, no logic, and the
|
|
306
|
+
* prose that explains each rule lives beside the code that enforces it.
|
|
307
|
+
*/
|
|
308
|
+
isContact(agentName: string, pubkey: string): boolean;
|
|
309
|
+
getTier(agentName: string, pubkey: string): number;
|
|
310
|
+
resolveTierBound(agentName: string, tier: number, field: "max_sessions" | "max_bytes"): number;
|
|
311
|
+
addContact(agentName: string, pubkey: string, moniker?: string | null, provenance?: string | null, tier?: number): void;
|
|
312
|
+
setContactMoniker(agentName: string, pubkey: string, moniker: string | null): boolean;
|
|
313
|
+
setContactSignalPref(agentName: string, pubkey: string, signalHash: string, present: boolean | null): void;
|
|
314
|
+
getContactSignalPrefs(agentName: string, pubkey: string): Map<string, boolean>;
|
|
315
|
+
setContactAwayMessage(agentName: string, pubkey: string, message: string | null): boolean;
|
|
316
|
+
setContactTier(agentName: string, pubkey: string, tier: number): boolean;
|
|
317
|
+
recordOfferedMoniker(agentName: string, pubkey: string, offered: string): void;
|
|
318
|
+
removeContact(agentName: string, pubkey: string): boolean;
|
|
319
|
+
getContactMoniker(agentName: string, pubkey: string): string | null;
|
|
320
|
+
listContacts(agentName: string): Array<{
|
|
321
|
+
pubkey: string;
|
|
322
|
+
added_at: number;
|
|
323
|
+
moniker: string | null;
|
|
324
|
+
tier: number | null;
|
|
325
|
+
provenance: string | null;
|
|
326
|
+
sealed_count: number;
|
|
327
|
+
last_spoke: number | null;
|
|
328
|
+
}>;
|
|
329
|
+
clearRenameNotice(agentName: string, pubkey: string): void;
|
|
330
|
+
clearPinnedCounterpartyPrimary(agentName: string, counterpartyPubkeyHex: string): number;
|
|
331
|
+
getTelegramSettings(): {
|
|
332
|
+
botToken: string;
|
|
333
|
+
allowlistedChatId: string;
|
|
334
|
+
} | null;
|
|
335
|
+
setTelegramSettings(botToken: string, allowlistedChatId: string): void;
|
|
336
|
+
getSetting(agentName: string, key: string): string | null;
|
|
337
|
+
deleteSetting(agentName: string, key: string): boolean;
|
|
338
|
+
setSetting(agentName: string, key: string, value: string): void;
|
|
339
|
+
getAllSettings(agentName: string): Array<{
|
|
340
|
+
key: string;
|
|
341
|
+
value: string;
|
|
342
|
+
}>;
|
|
343
|
+
recordRelayWitnessUnreadable(agentName: string, relayPeerId: string, why: string): void;
|
|
344
|
+
getWitnessUnreadable(agentName: string): ReadonlyArray<{
|
|
345
|
+
relayPeerId: string;
|
|
346
|
+
why: string;
|
|
347
|
+
count: number;
|
|
348
|
+
}>;
|
|
349
|
+
recordTranscriptMessage(agentName: string, sessionId: string, sequence: number, direction: "sent" | "received" | "quarantined", plaintext: Uint8Array, correlationId?: string, authorship?: {
|
|
350
|
+
senderPubkey: Uint8Array;
|
|
351
|
+
senderSig: Uint8Array;
|
|
352
|
+
}, quarantineReason?: string, senderPubkeyHexOverride?: string | null): boolean;
|
|
353
|
+
readTranscript(agentName: string, sessionId: string): {
|
|
354
|
+
messages: TranscriptEntry[];
|
|
355
|
+
undecryptable: number;
|
|
356
|
+
};
|
|
357
|
+
getUnreadSummary(agentName: string): Array<{
|
|
358
|
+
session_id: string;
|
|
359
|
+
unread_count: number;
|
|
360
|
+
last_seq: number;
|
|
361
|
+
}>;
|
|
362
|
+
getEndedUnread(agentName: string): Array<{
|
|
363
|
+
session_id: string;
|
|
364
|
+
unread_count: number;
|
|
365
|
+
last_seq: number;
|
|
366
|
+
status: string;
|
|
367
|
+
}>;
|
|
368
|
+
getUnreadReceivedCount(agentName: string, sessionId: string): number;
|
|
369
|
+
markSessionDiverged(agentName: string, sessionId: string): void;
|
|
370
|
+
/**
|
|
371
|
+
* DOD-M15-CLOSEDSESSION-1 — has THIS side committed its half of the seal? The state a status row
|
|
372
|
+
* cannot show; the reasoning is in `session-closed.ts`.
|
|
373
|
+
*
|
|
374
|
+
* ⚠️ THE MARK IS MEMORY-ONLY, so the durable evidence is the second half of the answer (review
|
|
375
|
+
* F7). `#responderSealSubmitted` is cleared on teardown, so a daemon that stopped between the
|
|
376
|
+
* ctrl-leaf submit and the ceremony's status write comes back with an `active` row and no mark —
|
|
377
|
+
* and the original defect reproduces on the first send. Our own SEAL ctrl leaf is in
|
|
378
|
+
* `session_seal_leaves`, which is what the seal path itself consults before submitting a second.
|
|
379
|
+
*
|
|
380
|
+
* `"unknown"` — the read FAILED — is deliberately not treated as closed. It is the answer a
|
|
381
|
+
* broken database gives, and wedging every live session shut on it would be a far worse failure
|
|
382
|
+
* than the window it would close.
|
|
383
|
+
*/
|
|
384
|
+
hasCommittedSealLeaf(agentName: string, sessionId: string): boolean;
|
|
385
|
+
/** DOD-M15-CLOSEDSESSION-1 test seam: commit this side's half with no relay, by marking the REAL map production reads. */
|
|
386
|
+
markSealLeafCommittedForTest(agentName: string, sessionId: string): void;
|
|
387
|
+
isSessionDiverged(agentName: string, sessionId: string): boolean;
|
|
388
|
+
/** Arm the direct-send fault — makes the next N sends take the dial-failure path. */
|
|
389
|
+
injectSendFault(count: number): number;
|
|
390
|
+
/** DOD-M12B-ACK-1: arm the delivery-ACK write fault — the sibling of injectSendFault for the
|
|
391
|
+
* path that fails on a LISTENING agent. Without it the ACK failure branch (which impairs the
|
|
392
|
+
* session and, until this milestone, could never clear it again) is unreachable from a test:
|
|
393
|
+
* a listener sends no content, so the direct-send fault never fires for it. */
|
|
394
|
+
injectAckFault(count: number): number;
|
|
395
|
+
/** DOD-M12B-REDIAL-1: arm the connection-loss fault — the next N direct sends find no open
|
|
396
|
+
* connection, exactly as they do after any blip. See #connectionLossRemaining. */
|
|
397
|
+
injectConnectionLoss(count: number): number;
|
|
398
|
+
constructor(opts: {
|
|
399
|
+
factory: ISessionNodeFactory;
|
|
400
|
+
logger: Logger;
|
|
401
|
+
dbPath: string;
|
|
402
|
+
contentTtfMs?: number;
|
|
403
|
+
/**
|
|
404
|
+
* CELLO-M7-TRANSPORT-001: provider for the AutoNAT directory-node prober set
|
|
405
|
+
* (SI-002). Defaults to () => [] (reconnecting — no probers), which makes
|
|
406
|
+
* dialability the conservative default and fires transport.autonat.unavailable.
|
|
407
|
+
*/
|
|
408
|
+
autoNatProbers?: () => string[];
|
|
409
|
+
/**
|
|
410
|
+
* M8B F14: backoff schedule for standing-receiver create retries. Attempt 1 runs
|
|
411
|
+
* immediately; each entry is the delay before the next attempt. Default covers the
|
|
412
|
+
* fixed-port race where a teardown and a re-arm interleave (EADDRINUSE clears once
|
|
413
|
+
* the old node's port is released). Tests inject short delays or [] (no retries).
|
|
414
|
+
*/
|
|
415
|
+
standingReceiverRetryDelaysMs?: number[];
|
|
416
|
+
/**
|
|
417
|
+
* DOD-NAT-REACHABILITY-1: how long a standing receiver may wait for its
|
|
418
|
+
* circuit-relay reservations before coming up WITHOUT them. libp2p's circuit
|
|
419
|
+
* listener has no timeout of its own — an unreachable relay would park start()
|
|
420
|
+
* forever and leave the agent with no receiver at all. See #startReceiverNode.
|
|
421
|
+
*/
|
|
422
|
+
standingReceiverReservationTimeoutMs?: number;
|
|
423
|
+
/**
|
|
424
|
+
* DOD-NAT-REACHABILITY-1: how often to check that a standing receiver still HOLDS
|
|
425
|
+
* the reservation it came up with. A dead relay makes the /p2p-circuit address
|
|
426
|
+
* vanish silently — the agent looks healthy and is unreachable to every NAT'd peer.
|
|
427
|
+
*/
|
|
428
|
+
standingReceiverWatchdogIntervalMs?: number;
|
|
429
|
+
/**
|
|
430
|
+
* DOD-M12B-RESERVATION-RETRY-1: base delay before re-attempting a circuit reservation the relay
|
|
431
|
+
* refused. Doubles per attempt. Default 5 minutes — deliberately NOT the watchdog's grid, because
|
|
432
|
+
* a reservation is a scarce resource the relay holds for its full TTL and churning attempts is
|
|
433
|
+
* how a fleet exhausts one.
|
|
434
|
+
*/
|
|
435
|
+
standingReceiverReservationRetryMs?: number;
|
|
436
|
+
/**
|
|
437
|
+
* DOD-PARK-DRAIN-1: how often the parked-mailbox BACKSTOP drain runs for an agent with a
|
|
438
|
+
* healthy standing receiver. Rides the reservation watchdog's grid, so the effective period is
|
|
439
|
+
* this value rounded up to a watchdog interval. Default 5 minutes: the trigger-driven drains do
|
|
440
|
+
* the real work, and this only exists so a future missed trigger degrades to "late", never to
|
|
441
|
+
* "stranded until a human restarts the daemon".
|
|
442
|
+
*/
|
|
443
|
+
parkedDrainBackstopMs?: number;
|
|
444
|
+
/**
|
|
445
|
+
* M9-CORE-001: the inbound security-screening seam. When absent, a
|
|
446
|
+
* REQUIRED — there is no always-allow default (INV-9). A caller that does not screen must
|
|
447
|
+
* say so by passing PassthroughGatewayClient from `@cello-protocol/gateway/testing`.
|
|
448
|
+
*/
|
|
449
|
+
securityGateway: SecurityGatewayClient;
|
|
450
|
+
});
|
|
451
|
+
/**
|
|
452
|
+
* CELLO-M7-MSG-001: wire the durable-backstop side effects of the awaiting-ACK
|
|
453
|
+
* lifecycle. `onPersisted` clears the durable retry_queue entry when a persisted ACK
|
|
454
|
+
* arrives; `onTtf` records/parks the un-acked content when the TTF timer fires.
|
|
455
|
+
* Injected by the composition root (daemon.ts) after the RetryQueue exists.
|
|
456
|
+
*/
|
|
457
|
+
setAwaitingAckHooks(hooks: {
|
|
458
|
+
onPersisted?: (agentName: string, sessionId: string, contentHashHex: string) => void;
|
|
459
|
+
onTtf?: (agentName: string, sessionId: string, contentHashHex: string, content: Uint8Array, structure1Cbor?: Uint8Array, structure2Cbor?: Uint8Array, contentHashAlg?: string, structure1Signature?: Uint8Array, leafKind?: number) => void;
|
|
460
|
+
onParkFailed?: (agentName: string, sessionId: string, contentHashHex: string, content: Uint8Array, structure1Cbor?: Uint8Array, structure2Cbor?: Uint8Array, contentHashAlg?: string, structure1Signature?: Uint8Array, leafKind?: number) => boolean;
|
|
461
|
+
}): void;
|
|
462
|
+
/**
|
|
463
|
+
* DOD-RETRYQ-STRAND-1: wire the disposition of durable state a session can no longer drain.
|
|
464
|
+
* Fires once per transition INTO a status from which no resend can succeed. Injected by the
|
|
465
|
+
* composition root (daemon.ts) after the RetryQueue exists.
|
|
466
|
+
*/
|
|
467
|
+
setSessionTerminalHook(hook: (sessionId: string, terminalStatus: "sealed" | "abandoned") => void): void;
|
|
468
|
+
initialize(): Promise<void>;
|
|
469
|
+
/**
|
|
470
|
+
* Get the underlying DatabaseSync handle.
|
|
471
|
+
* Used by the composition root (daemon.ts) to pass to RetryQueue and
|
|
472
|
+
* NonceDedupStore — they share the same SQLCipher DB file (DAEMON-003 AC-008).
|
|
473
|
+
*/
|
|
474
|
+
/**
|
|
475
|
+
* Get the underlying DaemonDatabase handle (the SQLCipher-backed adapter). Used by the
|
|
476
|
+
* composition root (daemon.ts) to pass to RetryQueue and NonceDedupStore — they share the same
|
|
477
|
+
* encrypted DB file.
|
|
478
|
+
*/
|
|
479
|
+
getDb(): DaemonDatabase;
|
|
480
|
+
/** DOD-TIER-4: the DISPLAY/relationship check — is this counterparty a genuine contact (KNOWN or
|
|
481
|
+
* above)? Replaces the old binary `isContact` for behaviour that keyed on "we have a relationship"
|
|
482
|
+
* (e.g. the away-response wording). An UNKNOWN-tier contact (a mere row) is NOT known. */
|
|
483
|
+
isKnown(agentName: string, pubkey: string): boolean;
|
|
484
|
+
/** DOD-TIER-4: the POLICY gate — may an inbound session from this counterparty be auto-accepted
|
|
485
|
+
* when the operator is unattended (WHITELISTED or VIP)? The behavioural consumer is the offline
|
|
486
|
+
* relay mailbox (LEAVEMSG-1), out of scope for this unit; defined here as the seam. Being merely
|
|
487
|
+
* KNOWN is NOT enough to auto-accept — whitelisting is the deliberate `cello_contact_set_tier` act. */
|
|
488
|
+
isAutoAccept(agentName: string, pubkey: string): boolean;
|
|
489
|
+
/** DOD-AWAY-TIER-1: resolve the most-specific CUSTOM away text for a counterparty, most-specific
|
|
490
|
+
* first: per-contact `away_message` → per-tier away setting → agent default away setting. Returns
|
|
491
|
+
* null when none is configured, so the CALLER applies the system default (code) — making the full
|
|
492
|
+
* four-level resolution TOTAL. A pure read; the resolved text is screened on the outbound path by
|
|
493
|
+
* the caller like any content (SI — it does not bypass the gateway). */
|
|
494
|
+
resolveAwayMessage(agentName: string, pubkey: string): string | null;
|
|
495
|
+
/** M8C-ABUSE-1 + DOD-TIER-2/3: is a NEW inbound session from this counterparty within the
|
|
496
|
+
* acceptance bounds? The per-sender cap is now the sender's TIER cap (DEFAULT_TIER_BOUNDS), not a
|
|
497
|
+
* flat "3 for strangers, unbounded for contacts". This is where DOD-TIER-3 falls out for free: a
|
|
498
|
+
* BLOCKED sender's cap is 0, so `perSender (>= 0) >= 0` refuses it through the SAME reason and the
|
|
499
|
+
* SAME path an over-cap UNKNOWN takes — no separate blocked branch, no distinguishing oracle. The
|
|
500
|
+
* global anti-swarm cap then applies ONLY to UNKNOWN-tier senders (KNOWN+ are trusted, not part of
|
|
501
|
+
* the stranger pool; BLOCKED never reaches it). Checked BEFORE accepting a fresh inbound session
|
|
502
|
+
* (counts reflect sessions already active, not yet counting this one). */
|
|
503
|
+
checkUnknownSenderAcceptanceBound(agentName: string, counterpartyPubkey: string): {
|
|
504
|
+
ok: true;
|
|
505
|
+
} | {
|
|
506
|
+
ok: false;
|
|
507
|
+
reason: CapacityReason;
|
|
508
|
+
};
|
|
509
|
+
/**
|
|
510
|
+
* M7-SESSION-001 (M-1 PUSH): register the session-state-change callback.
|
|
511
|
+
* Called by the composition root (daemon.ts) after the NotificationDispatcher
|
|
512
|
+
* exists. Setter injection avoids a construction-order/circular dependency.
|
|
513
|
+
*/
|
|
514
|
+
setOnSessionStateChanged(cb: (agentName: string, sessionId: string, state: string, counterpartyPubkey: string | null) => void): void;
|
|
515
|
+
/**
|
|
516
|
+
* M8C-MSGWAKE-1: inject the content-arrival callback (daemon.ts → NotificationDispatcher.
|
|
517
|
+
* dispatchCelloMessage). Setter injection, same construction-order reason as above.
|
|
518
|
+
*/
|
|
519
|
+
setOnContentArrived(cb: (agentName: string, sessionId: string, senderPubkey: string) => void): void;
|
|
520
|
+
/** M14 / DOD-DOC-INBOUND-2: inject the document-frame interception. See the field's note. */
|
|
521
|
+
setOnDocumentFrame(cb: (agentName: string, sessionId: string, content: Uint8Array, senderPubkey: string, correlationId?: string) => {
|
|
522
|
+
consumed: boolean;
|
|
523
|
+
kind?: string;
|
|
524
|
+
ok?: boolean;
|
|
525
|
+
reason?: string;
|
|
526
|
+
}, classifyOnly?: (content: Uint8Array) => boolean): void;
|
|
527
|
+
/**
|
|
528
|
+
* DOD-AGENT-ID-JOINKEY-1: the public form of the name→stable-id resolver, for components that own
|
|
529
|
+
* agent-scoped tables of their own (RetryQueue) and must be handed the STABLE key, never a name.
|
|
530
|
+
* The daemon resolves ONCE, at its own boundary, exactly as this class does internally. Throws on
|
|
531
|
+
* an unresolvable name — see #requireAgentId for why null is not an option.
|
|
532
|
+
*/
|
|
533
|
+
resolveAgentId(agentName: string): string;
|
|
534
|
+
/**
|
|
535
|
+
* DOD-M12B-ACK-1 — live `/cello/content/1.0.0` stream counts on a session's direct path, or null
|
|
536
|
+
* when the session has no active node.
|
|
537
|
+
*
|
|
538
|
+
* Answerable at runtime on purpose, in the same spirit as getConnectionMonitorPolicy: the count
|
|
539
|
+
* is what decides whether the next send survives, and until this existed it could only be
|
|
540
|
+
* recovered by measuring a log after the fact. It is also what lets the regression assert that a
|
|
541
|
+
* slot was RELEASED, rather than that some particular number of messages happened to fit.
|
|
542
|
+
*/
|
|
543
|
+
countSessionContentStreams(agentName: string, sessionId: string): {
|
|
544
|
+
inbound: number;
|
|
545
|
+
outbound: number;
|
|
546
|
+
} | null;
|
|
547
|
+
gracefulShutdown(): Promise<void>;
|
|
548
|
+
/**
|
|
549
|
+
* DOD-M12B-REVIVAL-BOUND-1 — close every session the revival window has expired.
|
|
550
|
+
*
|
|
551
|
+
* `abandonSession` is the right instrument and already exists: it flips the status FIRST and
|
|
552
|
+
* synchronously, annexes held content so the operator does not lose mail that has nowhere to go,
|
|
553
|
+
* and retires the node. It notarizes nothing, which is the point — we are closing a door, not
|
|
554
|
+
* asserting how it came to be open.
|
|
555
|
+
*
|
|
556
|
+
* One session's failure must not strand the rest, so each is caught and logged; the sweep runs at
|
|
557
|
+
* boot beside the restart-seal resolver and a throw there would take the daemon with it.
|
|
558
|
+
*
|
|
559
|
+
* @returns how many sessions actually flipped — not how many were attempted.
|
|
560
|
+
*/
|
|
561
|
+
closeExpiredUnrevivableSessions(nowMs: number, windowMs: number): Promise<number>;
|
|
562
|
+
getSessionsForAgent(agentName: string): SessionRecord[];
|
|
563
|
+
/**
|
|
564
|
+
* Every persisted session across ALL agents, most-recently-updated first. Backs the daemon-wide
|
|
565
|
+
* `cello sessions` CLI surface (which has no per-connection current agent, unlike the MCP
|
|
566
|
+
* cello_list_sessions). Classification + filtering + the count limit are applied by the caller.
|
|
567
|
+
*/
|
|
568
|
+
getAllSessions(): SessionRecord[];
|
|
569
|
+
createSessionNode(...args: Parameters<SessionLifecycle["createSessionNode"]>): ReturnType<SessionLifecycle["createSessionNode"]>;
|
|
570
|
+
acceptSession(...args: Parameters<SessionLifecycle["acceptSession"]>): ReturnType<SessionLifecycle["acceptSession"]>;
|
|
571
|
+
destroySessionNode(...args: Parameters<SessionLifecycle["destroySessionNode"]>): ReturnType<SessionLifecycle["destroySessionNode"]>;
|
|
572
|
+
retireSessionNode(...args: Parameters<SessionLifecycle["retireSessionNode"]>): ReturnType<SessionLifecycle["retireSessionNode"]>;
|
|
573
|
+
markInterruptedWithDetails(...args: Parameters<SessionLifecycle["markInterruptedWithDetails"]>): ReturnType<SessionLifecycle["markInterruptedWithDetails"]>;
|
|
574
|
+
connectToCounterparty(...args: Parameters<SessionLifecycle["connectToCounterparty"]>): ReturnType<SessionLifecycle["connectToCounterparty"]>;
|
|
575
|
+
notifyCounterpartyAbandon(...args: Parameters<SessionLifecycle["notifyCounterpartyAbandon"]>): ReturnType<SessionLifecycle["notifyCounterpartyAbandon"]>;
|
|
576
|
+
retireOnCounterpartyAbandon(...args: Parameters<SessionLifecycle["retireOnCounterpartyAbandon"]>): ReturnType<SessionLifecycle["retireOnCounterpartyAbandon"]>;
|
|
577
|
+
reviveSessionNode(...args: Parameters<SessionLifecycle["reviveSessionNode"]>): ReturnType<SessionLifecycle["reviveSessionNode"]>;
|
|
578
|
+
reviveIfNeededForSend(...args: Parameters<SessionLifecycle["reviveIfNeededForSend"]>): ReturnType<SessionLifecycle["reviveIfNeededForSend"]>;
|
|
579
|
+
reviveIfNeededForRead(...args: Parameters<SessionLifecycle["reviveIfNeededForRead"]>): ReturnType<SessionLifecycle["reviveIfNeededForRead"]>;
|
|
580
|
+
abandonSession(...args: Parameters<SessionLifecycle["abandonSession"]>): ReturnType<SessionLifecycle["abandonSession"]>;
|
|
581
|
+
getSessionNodePeerId(...args: Parameters<SessionLifecycle["getSessionNodePeerId"]>): ReturnType<SessionLifecycle["getSessionNodePeerId"]>;
|
|
582
|
+
/**
|
|
583
|
+
* ⚠️ EVERY TRIVIAL DELEGATOR IN THIS FILE IS ONE LINE, and that is a ratchet decision rather than
|
|
584
|
+
* a formatting preference. Thirty-seven of them were five lines each: a signature line, a
|
|
585
|
+
* `Parameters<>` line, a `ReturnType<>` line, a forward and a brace. That is ~150 lines of the
|
|
586
|
+
* budget spent on punctuation, in the file the `max-lines` pin exists to shrink — and it is
|
|
587
|
+
* budget that cannot then be spent on the comments this file's prose is actually for.
|
|
588
|
+
*
|
|
589
|
+
* The signatures stay DERIVED, which is the property that matters: a change to the moved method
|
|
590
|
+
* changes this one, so a copy can never drift from its original.
|
|
591
|
+
*/
|
|
592
|
+
setDirectoryRelayEndpoints(...args: Parameters<SessionRelay["setDirectoryRelayEndpoints"]>): ReturnType<SessionRelay["setDirectoryRelayEndpoints"]>;
|
|
593
|
+
registerRelayStream(...args: Parameters<SessionRelay["registerRelayStream"]>): ReturnType<SessionRelay["registerRelayStream"]>;
|
|
594
|
+
isRelayCarvedOutInbound(...args: Parameters<SessionRelay["isRelayCarvedOutInbound"]>): ReturnType<SessionRelay["isRelayCarvedOutInbound"]>;
|
|
595
|
+
isRelayQuarantined(...args: Parameters<SessionRelay["isRelayQuarantined"]>): ReturnType<SessionRelay["isRelayQuarantined"]>;
|
|
596
|
+
quarantineRefusedInbound(...args: Parameters<SessionRelay["quarantineRefusedInbound"]>): ReturnType<SessionRelay["quarantineRefusedInbound"]>;
|
|
597
|
+
quarantineFrameMeta(...args: Parameters<SessionRelay["quarantineFrameMeta"]>): ReturnType<SessionRelay["quarantineFrameMeta"]>;
|
|
598
|
+
getRelayReceipts(...args: Parameters<SessionRelay["getRelayReceipts"]>): ReturnType<SessionRelay["getRelayReceipts"]>;
|
|
599
|
+
patchRelayClientForTest(...args: Parameters<SessionRelay["patchRelayClientForTest"]>): ReturnType<SessionRelay["patchRelayClientForTest"]>;
|
|
600
|
+
getSessionRelayForTest(...args: Parameters<SessionRelay["getSessionRelayForTest"]>): ReturnType<SessionRelay["getSessionRelayForTest"]>;
|
|
601
|
+
submitSealLeaf(...args: Parameters<SessionSeal["submitSealLeaf"]>): ReturnType<SessionSeal["submitSealLeaf"]>;
|
|
602
|
+
setCurrentAttendanceSource(fn: (agentName: string) => "attended" | "unattended" | "offline"): void;
|
|
603
|
+
announceAttendance(agentName: string, attendance: "attended" | "unattended" | "offline"): void;
|
|
604
|
+
/**
|
|
605
|
+
* DOD-M15-AWAYSCOPE-1 — ask the relay what it knows about the counterparty of ONE session.
|
|
606
|
+
*
|
|
607
|
+
* ⚠️ NOT `getSessionLiveness`, which is a different question with a different answer. That one is
|
|
608
|
+
* daemon-local: does THIS process hold a libp2p connection for the session, and it has a fourth
|
|
609
|
+
* value (`impaired`) the wire type does not. This one asks the RELAY, which sees the counterparty's
|
|
610
|
+
* standing connection even when this daemon has no direct link to them, and it is the only path
|
|
611
|
+
* that can carry attendance — because attendance is the far daemon's own assertion, relayed.
|
|
612
|
+
*
|
|
613
|
+
* Returns null when there is nothing to ask: no session, or a session with no relay behind it.
|
|
614
|
+
* That is distinct from an answer of 'unknown', which means the relay was asked and did not know.
|
|
615
|
+
*/
|
|
616
|
+
queryRelayLiveness(agentName: string, sessionId: string): Promise<LivenessAnswer | null>;
|
|
617
|
+
sealReadiness(...args: Parameters<SessionSeal["sealReadiness"]>): ReturnType<SessionSeal["sealReadiness"]>;
|
|
618
|
+
sealReadinessView(...args: Parameters<SessionSeal["sealReadinessView"]>): ReturnType<SessionSeal["sealReadinessView"]>;
|
|
619
|
+
verifyCertifiedRoot(...args: Parameters<SessionSeal["verifyCertifiedRoot"]>): ReturnType<SessionSeal["verifyCertifiedRoot"]>;
|
|
620
|
+
getSealCarry(...args: Parameters<SessionSeal["getSealCarry"]>): ReturnType<SessionSeal["getSealCarry"]>;
|
|
621
|
+
markSealed(...args: Parameters<SessionSeal["markSealed"]>): ReturnType<SessionSeal["markSealed"]>;
|
|
622
|
+
recordSealCertificateEnsuringRow(...args: Parameters<SessionSeal["recordSealCertificateEnsuringRow"]>): ReturnType<SessionSeal["recordSealCertificateEnsuringRow"]>;
|
|
623
|
+
persistSealInterruptedCommitment(...args: Parameters<SessionSeal["persistSealInterruptedCommitment"]>): ReturnType<SessionSeal["persistSealInterruptedCommitment"]>;
|
|
624
|
+
getSealUpgradeReadiness(...args: Parameters<SessionSeal["getSealUpgradeReadiness"]>): ReturnType<SessionSeal["getSealUpgradeReadiness"]>;
|
|
625
|
+
countersignedThroughSeqFromCarry(...args: Parameters<SessionSeal["countersignedThroughSeqFromCarry"]>): ReturnType<SessionSeal["countersignedThroughSeqFromCarry"]>;
|
|
626
|
+
setEnsureSealBroker(...args: Parameters<SessionSeal["setEnsureSealBroker"]>): ReturnType<SessionSeal["setEnsureSealBroker"]>;
|
|
627
|
+
ingestReceivedContent(...args: Parameters<SessionContentIngest["ingestReceivedContent"]>): ReturnType<SessionContentIngest["ingestReceivedContent"]>;
|
|
628
|
+
/**
|
|
629
|
+
* ⚠️ **THE CHOKE POINT, AND THE GATE BELONGS HERE RATHER THAN ON `cello_send` ALONE — review F2.**
|
|
630
|
+
*
|
|
631
|
+
* `DOD-M15-CLOSEDSESSION-1` put a closed-session refusal on the `cello_send` handler, which is
|
|
632
|
+
* where the operator's sentence is shaped. Three other production callers place content leaves
|
|
633
|
+
* without passing through it — the document delivery transport, and both away-reply sends in the
|
|
634
|
+
* attendance wiring — and each reuses a session whose row says `active`, which is exactly the
|
|
635
|
+
* row the seal ceremony leaves standing while it finishes. So a document push could still land a
|
|
636
|
+
* leaf in a conversation this side had already sealed.
|
|
637
|
+
*
|
|
638
|
+
* This is the argument the inbound path already makes for its own shared gate: placing the check
|
|
639
|
+
* above the dispatch makes it the DEFAULT, so a fourth caller added later is covered by
|
|
640
|
+
* construction rather than by whoever adds it reading this comment.
|
|
641
|
+
*
|
|
642
|
+
* `durable: false` is the load-bearing field: it tells the caller nothing was witnessed and
|
|
643
|
+
* nothing was queued, so no leaf may be committed for this.
|
|
644
|
+
*/
|
|
645
|
+
sendContent(...args: Parameters<SessionContentSender["sendContent"]>): ReturnType<SessionContentSender["sendContent"]>;
|
|
646
|
+
/** DOD-M15-SEALPRECOND-1 — see SessionContentSender.noteOwnLeafOrdered. */
|
|
647
|
+
noteOwnLeafOrdered(...args: Parameters<SessionContentSender["noteOwnLeafOrdered"]>): ReturnType<SessionContentSender["noteOwnLeafOrdered"]>;
|
|
648
|
+
placeOwnLeaf(...args: Parameters<SessionContentSender["placeOwnLeaf"]>): ReturnType<SessionContentSender["placeOwnLeaf"]>;
|
|
649
|
+
recordWitnessedSequence(...args: Parameters<SessionContentIngest["recordWitnessedSequence"]>): ReturnType<SessionContentIngest["recordWitnessedSequence"]>;
|
|
650
|
+
getUndeliverableSeqs(...args: Parameters<SessionContentIngest["getUndeliverableSeqs"]>): ReturnType<SessionContentIngest["getUndeliverableSeqs"]>;
|
|
651
|
+
handleContentFrameForTest(...args: Parameters<SessionContentIngest["handleContentFrameForTest"]>): ReturnType<SessionContentIngest["handleContentFrameForTest"]>;
|
|
652
|
+
/** Loaded from SQLite on first access so it survives a restart (AC-007). NEVER null: an unknown session yields an EMPTY tree. */
|
|
653
|
+
getSessionTree(agentName: string, sessionId: string): SessionTree;
|
|
654
|
+
/** Current daemon-owned tree root for a session, as hex. */
|
|
655
|
+
getSessionTreeRootHex(agentName: string, sessionId: string): string;
|
|
656
|
+
/**
|
|
657
|
+
* Append a leaf (by its 32-byte leaf-hash hex) to the daemon-owned tree,
|
|
658
|
+
* persist it, advance the root, and fire session.tree.appended.
|
|
659
|
+
*
|
|
660
|
+
* @returns the new leaf index and the recomputed root hex.
|
|
661
|
+
*/
|
|
662
|
+
appendSessionLeaf(agentName: string, sessionId: string, kind: WritableSessionTreeLeafKind, leafHashHex: string, correlationId?: string): {
|
|
663
|
+
leafIndex: number;
|
|
664
|
+
newRootHex: string;
|
|
665
|
+
};
|
|
666
|
+
/** DOD-M12B-LEAF-TRIGGERS-FETCH-1 test seams. */
|
|
667
|
+
setLeafFetchGraceMsForTest(ms: number): void;
|
|
668
|
+
markContentPresentForTest(agentName: string, sessionId: string, contentHashHex: string): void;
|
|
669
|
+
/**
|
|
670
|
+
* DOD-CAP-SELF-HEAL-1 — the numbers behind a cap refusal, for the OPERATOR'S alarm only.
|
|
671
|
+
*
|
|
672
|
+
* Kept off `checkUnknownSenderAcceptanceBound`'s return on purpose. That refusal is byte-identical
|
|
673
|
+
* across tiers by design (DOD-TIER-3) so a blocked party cannot tell blocking from throttling;
|
|
674
|
+
* attaching the counts to it would put the oracle straight into the value the refusal path
|
|
675
|
+
* carries. This is a separate, purely local read, and nothing it returns crosses the wire.
|
|
676
|
+
*/
|
|
677
|
+
capDiagnostics(agentName: string, counterpartyPubkey: string): {
|
|
678
|
+
tier: number;
|
|
679
|
+
cap: number;
|
|
680
|
+
counted: number;
|
|
681
|
+
mustClear: number;
|
|
682
|
+
blocked: boolean;
|
|
683
|
+
};
|
|
684
|
+
/**
|
|
685
|
+
* THE IN-MEMORY ARRIVAL BUFFER WAS HERE, with `takeReceivedContent`, `pushReceivedContentForTest`
|
|
686
|
+
* and `peekLatestReceivedContentHex`. All three are gone, and so is the buffer.
|
|
687
|
+
*
|
|
688
|
+
* It kept the plaintext of the last 32 messages of every live session in daemon memory for the
|
|
689
|
+
* life of the process. `cello_receive` stopped draining it at DOD-COATTEND-1, when delivery moved
|
|
690
|
+
* onto the durable transcript; the away responder's peek at its tail was the last reader, and
|
|
691
|
+
* DOD-M15-AWAYSCOPE-1 deleted that with the branch that answered an accepted session. What
|
|
692
|
+
* remained was every conversation this agent had, held in memory, for nobody.
|
|
693
|
+
*
|
|
694
|
+
* Tests that asked it "did this message reach the agent" now ask the transcript, which is what
|
|
695
|
+
* production serves — see `__tests__/helpers/received-rows.ts` for why the answer is the same.
|
|
696
|
+
*/
|
|
697
|
+
/**
|
|
698
|
+
* F1-b: the terminal answer for a session that sealed while a blocking receive was (or could be)
|
|
699
|
+
* waiting. Idempotent — a sealed session always answers "sealed" to a receive. Null while active.
|
|
700
|
+
*
|
|
701
|
+
* DOD-TERMINAL-WAKE-1: the in-memory marker is written only by `destroySessionNode`, so it does
|
|
702
|
+
* NOT survive a restart — while the `sealed` row on disk does. Reading the absent marker as "not
|
|
703
|
+
* terminal" is what let a sealed session's unread message come back as live work hours later, and
|
|
704
|
+
* an agent obey a `[[STANDBY]]` directive out of a conversation that had already ended. Absent is
|
|
705
|
+
* not fine: fall through to the durable record, which is the authority the marker only caches.
|
|
706
|
+
*/
|
|
707
|
+
peekTerminalMarker(agentName: string, sessionId: string): {
|
|
708
|
+
type: "sealed";
|
|
709
|
+
unreadCount: number;
|
|
710
|
+
} | null;
|
|
711
|
+
/**
|
|
712
|
+
* DOD-MSG-4 (self-ordering content frame): verify the relay's signed ordering record carried IN the
|
|
713
|
+
* content frame and record the canonical sequence for the strict-in-order gate — so ordering does
|
|
714
|
+
* not depend on the separate leaf_deliver witness arriving first. Best-effort: any failure (malformed,
|
|
715
|
+
* hash mismatch, bad signature, wrong signer) is logged and ignored — the content still ingests and
|
|
716
|
+
* orders via the witness stream / arrival, so a bad record cannot block delivery.
|
|
717
|
+
*
|
|
718
|
+
* structure1_cbor = [1, content_hash(32), sender_pubkey(32), session_id(16), last_seen_seq, ts] —
|
|
719
|
+
* the EXACT bytes the sender signed (needed to verify; Structure2 omits session_id/last_seen/ts).
|
|
720
|
+
* structure2_cbor = [seq, sender_pubkey, content_hash, sender_signature, scan_result, prev_root].
|
|
721
|
+
*/
|
|
722
|
+
/**
|
|
723
|
+
* DOD-MSG-4 (2b) / SEC-1: decode a park envelope. Legacy/unsigned shapes still DECODE so that
|
|
724
|
+
* `recoverParkedEntry` can refuse them BY NAME (`unsigned_envelope`) — decoding is not accepting.
|
|
725
|
+
* Encoding lives in park-envelope.ts and REQUIRES a sender signature (see SEC-1); it is not
|
|
726
|
+
* exposed here, so no caller can seal an unsigned envelope through this class.
|
|
727
|
+
*/
|
|
728
|
+
decodeParkEnvelope(plaintext: Uint8Array): ParkEnvelope;
|
|
729
|
+
/**
|
|
730
|
+
* DOD-MSG-4 (2b): public entry for the recover path to verify + record a parked entry's ordering
|
|
731
|
+
* record (the recover handler lives in daemon.ts, which has no access to the private method).
|
|
732
|
+
*/
|
|
733
|
+
recordOrderingRecord(agentName: string, sessionId: string, structure1Cbor: Uint8Array, structure2Cbor: Uint8Array, contentHash: Uint8Array, correlationId?: string): number | null;
|
|
734
|
+
/**
|
|
735
|
+
* Test seam: see every decoded inbound content frame, as it arrived.
|
|
736
|
+
*
|
|
737
|
+
* Review F4. The "bytes on the wire are ciphertext" claim needs the ACTUAL frame; asserting on a
|
|
738
|
+
* freshly sealed stand-in tests the crypto primitive and stays green when the send path is
|
|
739
|
+
* reverted to putting plaintext on the wire. There is no other way to reach the decoded frame from
|
|
740
|
+
* outside — the handler consumes it and hands ingest the plaintext.
|
|
741
|
+
*
|
|
742
|
+
* Read-only by construction: the callback receives the frame and cannot influence routing.
|
|
743
|
+
*/
|
|
744
|
+
observeInboundContentFramesForTest(cb: (frame: Record<string, unknown>) => void): void;
|
|
745
|
+
/** Injected by the daemon once its per-agent key providers exist. See `#keyProviderResolver`. */
|
|
746
|
+
setKeyProviderResolver(resolver: (agentName: string) => KeyProvider | undefined): void;
|
|
747
|
+
/**
|
|
748
|
+
* Test seam: run the auto-acknowledge gate, exactly as the counterparty's SEAL ctrl leaf does.
|
|
749
|
+
*
|
|
750
|
+
* `DOD-M15-SEALWIRE-1` part B1, review F-B. The gate has ONE production call site — inside the
|
|
751
|
+
* relay leaf handler, behind `leaf_kind === CTRL && !authored_by_us` — so reaching it from a test
|
|
752
|
+
* needs a live relay client delivering a real ctrl leaf. The consequence was measured: my
|
|
753
|
+
* "tampered never downgrades" test wrapped its decisive assertion in
|
|
754
|
+
* `if (skipped.length > 0)`, which was ALWAYS FALSE, so the whole `content_tamper` vs
|
|
755
|
+
* `content_verification_unavailable` branch had no coverage anywhere in the repo and two mutants
|
|
756
|
+
* on it survived the full gate.
|
|
757
|
+
*
|
|
758
|
+
* It calls the REAL method (public on `SessionSeal` since the split, private before it) rather than reproducing its logic, so a test cannot pass
|
|
759
|
+
* against a decision production does not make.
|
|
760
|
+
*/
|
|
761
|
+
runAutoAcknowledgeGateForTest(agentName: string, sessionId: string, correlationId?: string): void;
|
|
762
|
+
/**
|
|
763
|
+
* Test seam: deliver an inbound salt frame, exactly as the content-stream decoder does.
|
|
764
|
+
*
|
|
765
|
+
* 006-CRYPTO finding 2. WHICH of the four reasons the peer gave decides what the operator is told,
|
|
766
|
+
* and reaching that decision from a test otherwise needs a second live daemon that has closed
|
|
767
|
+
* adoption for a specific reason — which is not something a counterparty can be asked to do on
|
|
768
|
+
* demand. The four labels are the whole point of the finding, so they need to be reachable.
|
|
769
|
+
*
|
|
770
|
+
* It calls the REAL private handler rather than reproducing its routing, so a test cannot pass
|
|
771
|
+
* against a decision production does not make. It takes the DECODED frame, so it deliberately
|
|
772
|
+
* does NOT stand in for the decoder above it — the length and vocabulary checks there have their
|
|
773
|
+
* own tests driving `handleContentFrameForTest`.
|
|
774
|
+
*/
|
|
775
|
+
handleSaltFrameForTest(agentName: string, sessionId: string, frame: SaltAgreementFrame, correlationId?: string): Promise<void>;
|
|
776
|
+
/**
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
/**
|
|
780
|
+
/**
|
|
781
|
+
* TEST SEAM — put a session into the state a real one is in between announcing and being answered.
|
|
782
|
+
*
|
|
783
|
+
* Reaching that state for real needs a live counterparty connection, which the daemon-level fixtures
|
|
784
|
+
* do not have. It calls the same private registration the announce path calls, so it cannot drift.
|
|
785
|
+
*/
|
|
786
|
+
markSaltAgreementPendingForTest(agentName: string, sessionId: string, boundMs?: number): void;
|
|
787
|
+
getSessionContentSalt(agentName: string, sessionId: string): Uint8Array | null;
|
|
788
|
+
/**
|
|
789
|
+
* THE SALT, OR WHY THERE ISN'T ONE — `DOD-M15-INCLUSION-1`, fallback-finder finding 2.
|
|
790
|
+
*
|
|
791
|
+
* `getSessionContentSalt` above answers `null` for THREE different situations, and a caller that
|
|
792
|
+
* turns that null into a sentence for an operator gets two of them wrong:
|
|
793
|
+
*
|
|
794
|
+
* `none` — no salt was ever agreed. The session really is unsalted.
|
|
795
|
+
* `unreadable` — a salt row EXISTS and could not be used: the wrong width (corruption on this
|
|
796
|
+
* operator's own disk), or the read threw.
|
|
797
|
+
*
|
|
798
|
+
* The distinction is not cosmetic. `unreadable` means the session's leaves WERE hashed under a
|
|
799
|
+
* salt, so telling its operator *"this session's content hashes are UNSALTED … start a session
|
|
800
|
+
* while you are both connected"* is an affirmatively false statement about a security property
|
|
801
|
+
* their session has, and it points them at their counterparty over damage to their own database.
|
|
802
|
+
* That is the same defect `#getSessionSalt`'s own F8 note was written to end, re-committed one
|
|
803
|
+
* surface out.
|
|
804
|
+
*
|
|
805
|
+
* ⚠️ IT DELEGATES — there is no second read here. Calling `#getSessionSalt` first means the salt
|
|
806
|
+
* this reports is the salt the hashing path uses, including its cache and its wrong-width refusal.
|
|
807
|
+
* A parallel query would be free to disagree with it, which is the whole failure this returns a
|
|
808
|
+
* reason to prevent.
|
|
809
|
+
*/
|
|
810
|
+
getSessionContentSaltState(agentName: string, sessionId: string): {
|
|
811
|
+
salt: Uint8Array;
|
|
812
|
+
} | {
|
|
813
|
+
salt: null;
|
|
814
|
+
reason: "none" | "unreadable";
|
|
815
|
+
};
|
|
816
|
+
/**
|
|
817
|
+
* DOD-M15-RELAYSLOTS-1: accept the directory's online token for an agent. Called on every
|
|
818
|
+
* signaling connect and reconnect, which is what keeps it fresh.
|
|
819
|
+
*/
|
|
820
|
+
setDirectoryOnlineToken(agentName: string, token: Uint8Array): void;
|
|
821
|
+
setDirectoryOnlineTokenAbsent(agentName: string, reason: "not_registered_here" | "issue_failed" | undefined): void;
|
|
822
|
+
/**
|
|
823
|
+
* The current token, or `undefined` when the directory has not issued one — either no directory
|
|
824
|
+
* connection yet, or this key has no agent profile there. Undefined is a real answer, not a
|
|
825
|
+
* missing one: the relay refuses without a token, which is the intended outcome for a key the
|
|
826
|
+
* directory does not recognise.
|
|
827
|
+
*/
|
|
828
|
+
getDirectoryOnlineToken(agentName: string): Uint8Array | undefined;
|
|
829
|
+
/** DOD-M12B-SESSION-SEED-1 test seams: the counterparty addresses a re-dial depends on. Not
|
|
830
|
+
* otherwise observable — they are set from a signed relay assignment that a fixture cannot mint. */
|
|
831
|
+
setCounterpartyAddrsForTest(agentName: string, sessionId: string, addrs: string[]): void;
|
|
832
|
+
getCounterpartyAddrsForTest(agentName: string, sessionId: string): string[];
|
|
833
|
+
/** DOD-M12B-SESSION-SEED-1 test seam: drop a seed WITHOUT zeroing or a status change — what a
|
|
834
|
+
* process restart does to it. The refusal that follows is the one an operator most needs named. */
|
|
835
|
+
forgetSessionSeedForTest(agentName: string, sessionId: string): void;
|
|
836
|
+
/**
|
|
837
|
+
* DOD-M12B-SESSION-SEED-1 — drain the direct-resend queue when a session comes back.
|
|
838
|
+
*
|
|
839
|
+
* `retryQueue.drainSession` had NO production caller. The send path enqueues into it on a failed
|
|
840
|
+
* delivery and tells the operator the message will be "retried on reconnect", and nothing ever
|
|
841
|
+
* reconnected it — the row sat there until the session went terminal and was reaped. Measured
|
|
842
|
+
* live 2026-08-18: two of the operator's messages went in, and the response told them both were
|
|
843
|
+
* lost and to send again, which is how a transcript gets duplicates.
|
|
844
|
+
*
|
|
845
|
+
* A revival IS the reconnect that sentence promised. This is the hook that makes it true.
|
|
846
|
+
*/
|
|
847
|
+
setRetryDrainHook(fn: (agentName: string, sessionId: string) => void): void;
|
|
848
|
+
/** DOD-M12B-SESSION-SEED-1 test seam: does this session still hold a revivable identity? */
|
|
849
|
+
hasSessionSeedForTest(agentName: string, sessionId: string): boolean;
|
|
850
|
+
getStandingReceiverSeedForTest(agentName: string): Uint8Array | undefined;
|
|
851
|
+
ensureStandingReceiverForAgent(agentName: string): Promise<void>;
|
|
852
|
+
removeStandingReceiverForAgent(agentName: string): Promise<void>;
|
|
853
|
+
/** CC-5/F21: count of RECEIVED messages on a session — the "did the counterparty ever speak"
|
|
854
|
+
* signal the dead-half-open reaper uses (message_count also counts our own auto-"Dispatched." ack,
|
|
855
|
+
* so it is NOT a reliable half-open discriminator). Mirrors #getReceivedBytesTotal. */
|
|
856
|
+
/**
|
|
857
|
+
* DOD-M12B-REAP-HELD-1 — did the counterparty EVER establish? Counted from every place their
|
|
858
|
+
* messages can be, not just the one.
|
|
859
|
+
*
|
|
860
|
+
* OBSERVED LIVE 2026-08-18: the half-open reaper abandoned session `d28db475…` — twenty leaves in
|
|
861
|
+
* the chain and sixteen more frames verified and held, ten of them from the counterparty — while
|
|
862
|
+
* the restart-seal resolver was actively trying to notarize it. The receipt was forfeited.
|
|
863
|
+
*
|
|
864
|
+
* `countReceivedMessages` asks the TRANSCRIPT, and **held content never reaches the transcript**;
|
|
865
|
+
* it sits in `held_content` until it can join the chain. So the very condition that holds content
|
|
866
|
+
* — an interrupted session — is the condition that makes the counterparty's messages invisible,
|
|
867
|
+
* and a fully-established conversation reads identically to an offer nobody ever answered.
|
|
868
|
+
*
|
|
869
|
+
* `origin = 'received'` is load-bearing. Our OWN held frames prove nothing about them, and
|
|
870
|
+
* counting those would make every session we ever spoke into un-reapable — which is exactly the
|
|
871
|
+
* clutter the reaper exists to clear. D18 also depends on the zero case staying zero: reaping only
|
|
872
|
+
* genuinely 0-received ghosts is what stops a stranger whose first handshakes died from being
|
|
873
|
+
* locked out by the acceptance bound forever.
|
|
874
|
+
*/
|
|
875
|
+
countEstablishedReceived(agentName: string, sessionId: string): number;
|
|
876
|
+
}
|
|
877
|
+
//# sourceMappingURL=session-node-manager.d.ts.map
|