@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,332 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CELLO Daemon — SessionConnectionGater
|
|
3
|
+
*
|
|
4
|
+
* Implements the libp2p ConnectionGater interface to enforce per-session
|
|
5
|
+
* peer allowlists on ephemeral session nodes.
|
|
6
|
+
*
|
|
7
|
+
* Two modes:
|
|
8
|
+
* 1. Session node gater: allows exactly one counterparty Peer ID.
|
|
9
|
+
* Created with the counterparty's Peer ID at session node creation.
|
|
10
|
+
* 2. Standing receiver gater: created with no allowed peer, which admits
|
|
11
|
+
* NOBODY inbound (DOD-M15-ASSIGN-1 — it used to admit everyone) while
|
|
12
|
+
* still permitting the outbound errands the receiver doubles as a dialer
|
|
13
|
+
* for. Call setAllowedPeer() before handing the node's multiaddr to the
|
|
14
|
+
* directory (AC-015); that is what opens the door, to exactly one peer.
|
|
15
|
+
* 3. Directory node gater: delegates to DirectoryPeerIdProvider.
|
|
16
|
+
* Allows only known directory Peer IDs (MANIFEST-002 fills the real set).
|
|
17
|
+
*
|
|
18
|
+
* The gater uses denyInboundConnection (before Noise handshake) to reject
|
|
19
|
+
* unexpected peers as early as possible. Since PeerId is not yet known at
|
|
20
|
+
* that point, we use denyInboundEncryptedConnection (after Noise, before muxer)
|
|
21
|
+
* which has the PeerId and still occurs before any streams are opened.
|
|
22
|
+
*
|
|
23
|
+
* Observability: session.node.connection.rejected (WARN) is logged with
|
|
24
|
+
* sessionId, attemptedPeerId, and expectedPeerId.
|
|
25
|
+
*/
|
|
26
|
+
/** Permissive stub: allows all peers. Used for directory node in DAEMON-002. */
|
|
27
|
+
export class PermissiveDirectoryPeerIdProvider {
|
|
28
|
+
isDirectoryPeer(_peerId) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** Restrictive stub: denies all peers. Used in unit tests (AC-016). */
|
|
33
|
+
export class EmptyDirectoryPeerIdProvider {
|
|
34
|
+
isDirectoryPeer(_peerId) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* SessionConnectionGater — enforces a single allowed Peer ID on a session node.
|
|
40
|
+
*
|
|
41
|
+
* Starts CLOSED to inbound (allowedPeerId = null) for the standing receiver;
|
|
42
|
+
* setAllowedPeer(initiatorPeerId) names the one peer that may dial, and is
|
|
43
|
+
* called before the node's multiaddr is returned to the caller (AC-015).
|
|
44
|
+
*/
|
|
45
|
+
export class SessionConnectionGater {
|
|
46
|
+
#allowedPeerId;
|
|
47
|
+
/**
|
|
48
|
+
* M7 DOD-SPINE-6 / DOD-NAT-REACHABILITY-1: additional peers the session node may
|
|
49
|
+
* connect to OUTBOUND only. Originally a single slot for the relay witness
|
|
50
|
+
* (Structure-2 hash submit); now a SET, because the node also dials independent
|
|
51
|
+
* relays — its own reservation relays, and the relay embedded in the
|
|
52
|
+
* counterparty's /p2p-circuit address (which rides the FROST-signed assignment,
|
|
53
|
+
* so it is authorized by the same rail as the assigned witness). Kept
|
|
54
|
+
* OUTBOUND-only so the INBOUND counterparty-only invariant (INV-5 — a session
|
|
55
|
+
* node admits exactly one counterparty) is fully preserved.
|
|
56
|
+
*/
|
|
57
|
+
#allowedOutboundPeerIds = new Set();
|
|
58
|
+
#sessionId;
|
|
59
|
+
#logger;
|
|
60
|
+
/**
|
|
61
|
+
* Is this node still acting as a STANDING RECEIVER, whose outbound dials are unrestricted?
|
|
62
|
+
*
|
|
63
|
+
* DOD-M15-ASSIGN-1 review F2. The outbound carve-out originally keyed off `#allowedPeerId ===
|
|
64
|
+
* null`, which broke the moment `admitInboundPeer` narrowed the inbound gate at offer time: the
|
|
65
|
+
* receiver was still the daemon's general-purpose dialer, but its outbound gate had silently
|
|
66
|
+
* closed to everything except the named dialer and the reservation relays.
|
|
67
|
+
*
|
|
68
|
+
* What that cost, concretely: the content-park deposit/pull and the restart-seal submission both
|
|
69
|
+
* dial relays that are NOT on the reservation list — the second one persisted from an EARLIER
|
|
70
|
+
* session. So an agent that merely RECEIVED one inbound offer would quietly stop being able to
|
|
71
|
+
* submit a seal, and the operator would see `relay_unavailable` — a transport label for what was
|
|
72
|
+
* actually a local gater decision. A seal leaf that does not land is not a papercut.
|
|
73
|
+
*
|
|
74
|
+
* So the two things are now tracked separately: narrowing WHO MAY DIAL IN (INV-5) does not
|
|
75
|
+
* revoke this node's own right to dial out. Only promotion into a session does that.
|
|
76
|
+
*/
|
|
77
|
+
#standingReceiverOutbound;
|
|
78
|
+
/**
|
|
79
|
+
* The relays this receiver currently holds a live circuit reservation with. Empty by default.
|
|
80
|
+
*
|
|
81
|
+
* Review N3. The inbound AutoNAT carve-out below first keyed on `#allowedOutboundPeerIds`, and
|
|
82
|
+
* that set is populated from the relay peer ids **the directory hands out at signaling-auth
|
|
83
|
+
* time** — cumulatively, including relays whose reservation never completed. In a unit whose
|
|
84
|
+
* entire threat model is "one compromised directory", that handed the adversary back a narrow
|
|
85
|
+
* inbound foothold: name a relay, never complete a reservation, and dial in anyway.
|
|
86
|
+
*
|
|
87
|
+
* Entries added ONLY when a reservation actually succeeded is the honest version of the
|
|
88
|
+
* justification the carve-out's comment makes — "a peer this node already dials and holds a
|
|
89
|
+
* reservation with" — rather than a set that merely tends to contain those.
|
|
90
|
+
*
|
|
91
|
+
* 032-RELAYSPREAD widened this from ONE peer to a set, because the receiver now holds a
|
|
92
|
+
* reservation with every relay that will grant one. **The BOUND did not widen with it, and that
|
|
93
|
+
* is the security-sensitive part**: membership is still "this relay's own reservation is
|
|
94
|
+
* confirmed held", never "this relay is in the pool". Widening it to the candidate list would
|
|
95
|
+
* let a directory that merely NAMES a relay dial in behind the gate — the exact failure the
|
|
96
|
+
* single-relay version was written to prevent, multiplied by the size of the pool.
|
|
97
|
+
*/
|
|
98
|
+
#reservedRelayPeerIds = new Set();
|
|
99
|
+
constructor(opts) {
|
|
100
|
+
this.#sessionId = opts.sessionId;
|
|
101
|
+
this.#allowedPeerId = opts.allowedPeerId;
|
|
102
|
+
// A gater built with no named peer is a standing receiver; one built naming its counterparty is
|
|
103
|
+
// a session node, which has never been allowed to dial anywhere but its counterparty and relays.
|
|
104
|
+
this.#standingReceiverOutbound = opts.allowedPeerId === null;
|
|
105
|
+
this.#logger = opts.logger;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* PROMOTION — this node is now a session node serving exactly this counterparty.
|
|
109
|
+
*
|
|
110
|
+
* Narrows inbound AND ends the standing-receiver outbound latitude: from here the node may dial
|
|
111
|
+
* only its counterparty and the relays explicitly added to the outbound allowlist.
|
|
112
|
+
*/
|
|
113
|
+
setAllowedPeer(peerId) {
|
|
114
|
+
this.#allowedPeerId = peerId;
|
|
115
|
+
this.#standingReceiverOutbound = false;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* DOD-M15-ASSIGN-1 — name the one peer that may dial IN, without promoting the node.
|
|
119
|
+
*
|
|
120
|
+
* Used when a `session_offer` names the initiator, before any assignment exists. The node is
|
|
121
|
+
* still the daemon's general-purpose dialer at this point, so its outbound latitude is untouched;
|
|
122
|
+
* see `#standingReceiverOutbound`.
|
|
123
|
+
*/
|
|
124
|
+
admitInboundPeer(peerId) {
|
|
125
|
+
this.#allowedPeerId = peerId;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Return to admitting NOBODY inbound — the resting state of an unclaimed receiver.
|
|
129
|
+
*
|
|
130
|
+
* DOD-M15-OFFER-SIGNED-1 review F4: when an offer is refused after the gate was already narrowed
|
|
131
|
+
* to the peer it named, leaving that peer admitted means the code has declared someone
|
|
132
|
+
* unauthorised and left the door open to exactly them. Outbound latitude is untouched; this node
|
|
133
|
+
* is still the daemon's general-purpose dialer.
|
|
134
|
+
*/
|
|
135
|
+
closeInbound() {
|
|
136
|
+
this.#allowedPeerId = null;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Record the relays this receiver holds LIVE circuit reservations with — the only peers that earn
|
|
140
|
+
* the inbound AutoNAT carve-out.
|
|
141
|
+
*
|
|
142
|
+
* REPLACES the set rather than adding to it. A relay absent from `peerIds` loses its carve-out in
|
|
143
|
+
* the same call that notices the reservation is gone, so the bound stays "holds one now" and
|
|
144
|
+
* cannot drift into "granted one once". Pass `[]` when nothing is held.
|
|
145
|
+
*/
|
|
146
|
+
/**
|
|
147
|
+
* Does this relay hold the inbound carve-out — i.e. would this gater ADMIT an inbound dial from
|
|
148
|
+
* it on the strength of a live reservation?
|
|
149
|
+
*
|
|
150
|
+
* **This IS the carve-out branch**, not a description of it: `denyInboundEncryptedConnection`
|
|
151
|
+
* calls this method rather than re-testing the set. One definition, so nothing observing the gate
|
|
152
|
+
* can be told something different from what the gate does — which matters because the review
|
|
153
|
+
* found that substituting the CANDIDATE list for the held list at the manager's
|
|
154
|
+
* `setReservedRelayPeers` call left every test in this unit green while opening exactly the hole
|
|
155
|
+
* the bound exists to close. Read-only and silent: an observation must not log a refusal.
|
|
156
|
+
*/
|
|
157
|
+
holdsInboundCarveOut(peerId) {
|
|
158
|
+
return this.#standingReceiverOutbound && this.#reservedRelayPeerIds.has(peerId);
|
|
159
|
+
}
|
|
160
|
+
setReservedRelayPeers(peerIds) {
|
|
161
|
+
this.#reservedRelayPeerIds.clear();
|
|
162
|
+
for (const peerId of peerIds)
|
|
163
|
+
this.#reservedRelayPeerIds.add(peerId);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* M7 DOD-SPINE-6: permit an OUTBOUND connection to a relay peer (the assigned
|
|
167
|
+
* witness, a reservation relay, or the relay inside the counterparty's circuit
|
|
168
|
+
* address — all authorized by the signed assignment / directory rail). ADDITIVE:
|
|
169
|
+
* each call widens the outbound set only. Does NOT widen the inbound allowlist.
|
|
170
|
+
*/
|
|
171
|
+
setAllowedOutboundPeer(peerId) {
|
|
172
|
+
this.#allowedOutboundPeerIds.add(peerId);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* DOD-M15-FRAME-1: is this peer on the OUTBOUND allowlist?
|
|
176
|
+
*
|
|
177
|
+
* Read by the promotion-time eviction sweep, which disconnects peers that attached before the
|
|
178
|
+
* gate narrowed — libp2p does not re-run a gater against connections that already exist. Relay
|
|
179
|
+
* peers sit on this list because reservation refreshes ride them, and hanging one up would cost
|
|
180
|
+
* the agent its inbound reachability to remove a peer that cannot speak the content protocol
|
|
181
|
+
* anyway. Exposed as a question rather than by handing out the set, so the sweep cannot widen it.
|
|
182
|
+
*/
|
|
183
|
+
isAllowedOutboundPeer(peerId) {
|
|
184
|
+
return this.#allowedOutboundPeerIds.has(peerId);
|
|
185
|
+
}
|
|
186
|
+
getSessionId() {
|
|
187
|
+
return this.#sessionId;
|
|
188
|
+
}
|
|
189
|
+
getAllowedPeerId() {
|
|
190
|
+
return this.#allowedPeerId;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* denyInboundEncryptedConnection — called after Noise handshake, before muxer.
|
|
194
|
+
* This is the enforcement point for inbound connections: PeerId is known here.
|
|
195
|
+
* Return true to DENY the connection.
|
|
196
|
+
*/
|
|
197
|
+
denyInboundEncryptedConnection(peerId, _maConn) {
|
|
198
|
+
return this.#denyIfNotAllowed(peerId, "inbound");
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* denyOutboundEncryptedConnection — symmetric gate for outbound connections.
|
|
202
|
+
* Session nodes should only connect to the designated counterparty.
|
|
203
|
+
* Return true to DENY the connection.
|
|
204
|
+
*/
|
|
205
|
+
denyOutboundEncryptedConnection(peerId, _maConn) {
|
|
206
|
+
// Relay peers are an OUTBOUND-only allowance (the session node dials them).
|
|
207
|
+
if (this.#allowedOutboundPeerIds.has(peerId.toString())) {
|
|
208
|
+
return false; // allow
|
|
209
|
+
}
|
|
210
|
+
// Review F2: a standing receiver is also the daemon's dialer for errands that belong to no
|
|
211
|
+
// session — content-park deposit/pull, restart-seal submission to a PRIOR session's relay.
|
|
212
|
+
// Those targets are on no allowlist and cannot be, since they are chosen per errand.
|
|
213
|
+
if (this.#standingReceiverOutbound) {
|
|
214
|
+
return false; // allow — this node chose the dial; INV-5 governs who comes IN
|
|
215
|
+
}
|
|
216
|
+
return this.#denyIfNotAllowed(peerId, "outbound");
|
|
217
|
+
}
|
|
218
|
+
#denyIfNotAllowed(peerId, direction) {
|
|
219
|
+
/**
|
|
220
|
+
* DOD-M15-ASSIGN-1 — `null` ADMITS NOBODY INBOUND. It used to admit everyone, both ways.
|
|
221
|
+
*
|
|
222
|
+
* A standing receiver is built with `allowedPeerId: null` because the counterparty is unknown
|
|
223
|
+
* until a session exists. Reading that as "allow all" is what put a real open door on every
|
|
224
|
+
* operator's machine: a stranger could dial the receiver, hold the connection through
|
|
225
|
+
* promotion — libp2p never re-runs a gater against a live connection — and then speak the
|
|
226
|
+
* content protocol the moment it activated.
|
|
227
|
+
*
|
|
228
|
+
* NOBODY LEGITIMATELY DIALS AN UNCLAIMED RECEIVER. An inbound session begins with the directory
|
|
229
|
+
* sending a `session_offer` that NAMES `initiator_session_peer_id`, and the responder narrows
|
|
230
|
+
* the gate to that peer BEFORE it advertises its own address in `session_offer_accept`. So by
|
|
231
|
+
* the time the initiator can know where to dial, the gate already names them. The window this
|
|
232
|
+
* closes is the one where the receiver is up and no offer has arrived — where the only dialer
|
|
233
|
+
* is, by construction, someone who was not invited.
|
|
234
|
+
*
|
|
235
|
+
* OUTBOUND STAYS OPEN WHILE UNCLAIMED, and that asymmetry is deliberate, not an oversight. The
|
|
236
|
+
* standing receiver is also the daemon's general-purpose dialer for errands that belong to no
|
|
237
|
+
* session — the content-park deposit and pull against the relay (MSG-001-3b). Those dials are
|
|
238
|
+
* this agent choosing where to go; INV-5 governs who may come IN. Denying them would have cost
|
|
239
|
+
* message parking to close a door nobody was standing at.
|
|
240
|
+
*/
|
|
241
|
+
/**
|
|
242
|
+
* Review F7: a RESERVATION RELAY dialling back is infrastructure, not a stranger.
|
|
243
|
+
*
|
|
244
|
+
* The standing receiver runs the libp2p AutoNAT *client*: it asks connected peers to dial its
|
|
245
|
+
* observed address so it can learn whether it is publicly reachable. Its connected peers are
|
|
246
|
+
* its own reservation relays. That dial-back arrives INBOUND, and the outbound allowlist was
|
|
247
|
+
* only consulted on the outbound path — so it was refused, and refused repeatedly.
|
|
248
|
+
*
|
|
249
|
+
* Two costs, and the second is the quiet one. It logged `connection.rejected` on every probe
|
|
250
|
+
* cycle, on the one line that is supposed to mean a stranger tried an unclaimed receiver — a
|
|
251
|
+
* signal that fires on the normal case is not a signal. And AutoNAT answers repeated dial
|
|
252
|
+
* failures by REMOVING the observed address, so an agent's own public address never becomes
|
|
253
|
+
* verified and never reaches `listenAddresses()` — the array shipped in `session_offer_accept`.
|
|
254
|
+
* We would have been advertising a shorter address list and blaming the network.
|
|
255
|
+
*
|
|
256
|
+
* These are peers this node already dials and holds reservations with. Admitting their
|
|
257
|
+
* dial-back grants nothing it did not already have.
|
|
258
|
+
*
|
|
259
|
+
* SCOPED TWICE, and each scope closed a hole the previous version had.
|
|
260
|
+
*
|
|
261
|
+
* To the STANDING-RECEIVER ROLE: the first attempt admitted relays inbound on every gater, which
|
|
262
|
+
* breaks INV-5 — a SESSION node admits exactly one counterparty, and the existing tests say so
|
|
263
|
+
* in those words. A promoted node has no AutoNAT probe to answer, so it needs nothing here.
|
|
264
|
+
*
|
|
265
|
+
* To THE RELAYS HOLDING A LIVE RESERVATION (`#reservedRelayPeerIds`), not the outbound
|
|
266
|
+
* allowlist. That allowlist is built from relay peer ids the DIRECTORY supplies, cumulatively,
|
|
267
|
+
* including ones whose reservation never completed — so keying on it let a compromised
|
|
268
|
+
* directory name a relay and dial in without ever holding a reservation. In a unit whose threat
|
|
269
|
+
* model is exactly that adversary, the outbound allowlist was the wrong thing to trust, and it
|
|
270
|
+
* still is: this set holds only relays whose own reservation was confirmed, however many relays
|
|
271
|
+
* the pool names.
|
|
272
|
+
*/
|
|
273
|
+
if (direction === "inbound" && this.holdsInboundCarveOut(peerId.toString())) {
|
|
274
|
+
return false; // allow — a relay we hold a live reservation with, answering a probe we started
|
|
275
|
+
}
|
|
276
|
+
if (this.#allowedPeerId === null) {
|
|
277
|
+
if (direction === "outbound")
|
|
278
|
+
return false; // allow — we chose this dial; INV-5 is inbound-only
|
|
279
|
+
this.#logger.warn("session.node.connection.rejected", {
|
|
280
|
+
sessionId: this.#sessionId,
|
|
281
|
+
attemptedPeerId: peerId.toString(),
|
|
282
|
+
expectedPeerId: "(none — receiver unclaimed)",
|
|
283
|
+
impact: "a peer dialled a standing receiver that no session has claimed; nothing invited it, so it was refused before the muxer and it learned nothing",
|
|
284
|
+
});
|
|
285
|
+
return true; // DENY
|
|
286
|
+
}
|
|
287
|
+
const attemptedPeerId = peerId.toString();
|
|
288
|
+
if (attemptedPeerId === this.#allowedPeerId) {
|
|
289
|
+
return false; // allow
|
|
290
|
+
}
|
|
291
|
+
this.#logger.warn("session.node.connection.rejected", {
|
|
292
|
+
sessionId: this.#sessionId,
|
|
293
|
+
attemptedPeerId,
|
|
294
|
+
expectedPeerId: this.#allowedPeerId,
|
|
295
|
+
});
|
|
296
|
+
return true; // deny
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* DirectoryConnectionGater — enforces directory-only connections on the
|
|
301
|
+
* directory-facing node. Delegates to DirectoryPeerIdProvider.
|
|
302
|
+
*
|
|
303
|
+
* Logs session.node.connection.rejected (using sessionId='directory') when
|
|
304
|
+
* a non-directory peer is denied.
|
|
305
|
+
*/
|
|
306
|
+
export class DirectoryConnectionGater {
|
|
307
|
+
#provider;
|
|
308
|
+
#logger;
|
|
309
|
+
constructor(provider, logger) {
|
|
310
|
+
this.#provider = provider;
|
|
311
|
+
this.#logger = logger;
|
|
312
|
+
}
|
|
313
|
+
denyInboundEncryptedConnection(peerId, _maConn) {
|
|
314
|
+
return this.#denyIfNotDirectory(peerId);
|
|
315
|
+
}
|
|
316
|
+
denyOutboundEncryptedConnection(peerId, _maConn) {
|
|
317
|
+
return this.#denyIfNotDirectory(peerId);
|
|
318
|
+
}
|
|
319
|
+
#denyIfNotDirectory(peerId) {
|
|
320
|
+
const peerIdStr = peerId.toString();
|
|
321
|
+
if (this.#provider.isDirectoryPeer(peerIdStr)) {
|
|
322
|
+
return false; // allow
|
|
323
|
+
}
|
|
324
|
+
this.#logger.warn("session.node.connection.rejected", {
|
|
325
|
+
sessionId: "__directory_facing__",
|
|
326
|
+
attemptedPeerId: peerIdStr,
|
|
327
|
+
expectedPeerId: "known_directory_peer",
|
|
328
|
+
});
|
|
329
|
+
return true; // deny
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=session-connection-gater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-connection-gater.js","sourceRoot":"","sources":["../src/session-connection-gater.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CELLO Daemon — WHAT THE CONTENT PATH NEEDS FROM THE MANAGER
|
|
3
|
+
*
|
|
4
|
+
* One context, shared by both halves of the content path — `session-content-send.ts` and
|
|
5
|
+
* `session-content-ingest.ts`. It lives in its own file because two classes hold it and a shape
|
|
6
|
+
* declared beside one of them reads as belonging to that one.
|
|
7
|
+
*
|
|
8
|
+
* ⚠️ **IT IS WIDE ON PURPOSE, AND THAT IS THE TRADE THIS SPLIT MAKES.** The narrow contexts the
|
|
9
|
+
* earlier collaborators hold (a dozen members each) are not reachable here: inbound ingest reads
|
|
10
|
+
* session state, held content, salts, ephemeral keys, the relay client, the ordering record, the
|
|
11
|
+
* screening gateway and the transcript, and it does so inside ONE method whose forty guards each
|
|
12
|
+
* read locals the guards above them declared. A narrower seam would have to be bought with a
|
|
13
|
+
* rewrite of that method, and a rewrite of the ingest path is a correctness risk on the most
|
|
14
|
+
* load-bearing code in the daemon. Explicit and typed but wide beats implicit and narrow: every
|
|
15
|
+
* member below is named, so what these files can reach is a list a reader can check, not a `this`.
|
|
16
|
+
*
|
|
17
|
+
* **Nothing here is state the content path owns.** The maps are shared BY REFERENCE with the
|
|
18
|
+
* manager and with the other collaborators — one Map object, not a copy — for the same reason
|
|
19
|
+
* `HeldContent` shares `heldContent`: two sources of truth for "what is in flight" is worse than
|
|
20
|
+
* one shared one.
|
|
21
|
+
*/
|
|
22
|
+
import { type KeyProvider } from "@cello-protocol/crypto";
|
|
23
|
+
import { type CelloNode } from "@cello-protocol/transport";
|
|
24
|
+
import { type SecurityGatewayClient } from "@cello-protocol/gateway";
|
|
25
|
+
import type { Logger } from "./types.js";
|
|
26
|
+
import type { SessionTree, WritableSessionTreeLeafKind } from "./session-tree.js";
|
|
27
|
+
import { AgentRelayClient } from "./session-relay-client.js";
|
|
28
|
+
import type { SessionOwnChainStore } from "./session-own-chain-store.js";
|
|
29
|
+
import type { AuthorshipVerifier } from "./authorship-verification.js";
|
|
30
|
+
import type { InboundRefusals } from "./inbound-refusals.js";
|
|
31
|
+
import type { SessionRecords } from "./session-records.js";
|
|
32
|
+
import type { ParkRecovery } from "./park-recovery.js";
|
|
33
|
+
import type { SessionSalts } from "./session-salts.js";
|
|
34
|
+
import type { SessionQueries } from "./session-queries.js";
|
|
35
|
+
import type { RefusalNotices } from "./refusal-notices.js";
|
|
36
|
+
import type { SessionEphemerals } from "./session-ephemerals.js";
|
|
37
|
+
import type { SessionLiveness } from "./session-liveness.js";
|
|
38
|
+
import type { HeldContent, HeldEntry } from "./held-content.js";
|
|
39
|
+
import type { SessionLeafRecords } from "./session-leaf-records.js";
|
|
40
|
+
import { type ActiveSessionEntry, type AwaitingAckEntry } from "./session-node-types.js";
|
|
41
|
+
/**
|
|
42
|
+
* What the content pipeline needs from the manager.
|
|
43
|
+
*
|
|
44
|
+
* Three shapes appear here and the difference between them is load-bearing:
|
|
45
|
+
*
|
|
46
|
+
* - **Plain readonly properties** are things the manager may REPLACE after this object is built —
|
|
47
|
+
* the wired-in hooks, the own-chain store (opened with the database, long after construction).
|
|
48
|
+
* The manager implements each as a getter over its own field, so this file always sees the
|
|
49
|
+
* current value rather than a snapshot taken during construction. A captured VALUE here would
|
|
50
|
+
* have frozen `null` in place for the life of the process; that exact mistake once left signing
|
|
51
|
+
* silently disabled while every test stayed green.
|
|
52
|
+
* - **Mutable properties** are the three fault-injection counters, which this file both reads and
|
|
53
|
+
* decrements. They are accessor pairs on the manager's side.
|
|
54
|
+
* - **Methods** are calls back into the manager, and the shared maps are passed by reference.
|
|
55
|
+
*/
|
|
56
|
+
export interface SessionContentPipelineContext {
|
|
57
|
+
readonly logger: Logger;
|
|
58
|
+
/**
|
|
59
|
+
* M9-CORE-001: the inbound screening seam. Held rather than reached for, because a pipeline that
|
|
60
|
+
* could choose not to screen is one that will eventually be built to skip it (INV-9).
|
|
61
|
+
*/
|
|
62
|
+
readonly securityGateway: SecurityGatewayClient;
|
|
63
|
+
readonly records: SessionRecords;
|
|
64
|
+
readonly authorship: AuthorshipVerifier;
|
|
65
|
+
readonly refusals: InboundRefusals;
|
|
66
|
+
readonly park: ParkRecovery;
|
|
67
|
+
readonly salts: SessionSalts;
|
|
68
|
+
readonly queries: SessionQueries;
|
|
69
|
+
readonly notices: RefusalNotices;
|
|
70
|
+
/**
|
|
71
|
+
* DOD-M15-CLOSEDSESSION-1 — has THIS side committed its half of the seal?
|
|
72
|
+
*
|
|
73
|
+
* A FUNCTION rather than the raw mark map, deliberately: the answer falls back to durable
|
|
74
|
+
* evidence when the in-memory mark is gone (a restart between the ctrl-leaf submit and the
|
|
75
|
+
* status write), and a context holding the map would let a second caller re-derive the answer
|
|
76
|
+
* without that fallback. One definition, on the manager. See `session-closed.ts`.
|
|
77
|
+
*/
|
|
78
|
+
readonly hasCommittedSealLeaf: (agentName: string, sessionId: string) => boolean;
|
|
79
|
+
readonly ephemerals: SessionEphemerals;
|
|
80
|
+
readonly liveness: SessionLiveness;
|
|
81
|
+
readonly held: HeldContent;
|
|
82
|
+
readonly leafRecords: SessionLeafRecords;
|
|
83
|
+
readonly activeNodes: Map<string, ActiveSessionEntry>;
|
|
84
|
+
readonly awaitingAck: Map<string, Map<string, AwaitingAckEntry>>;
|
|
85
|
+
readonly heldContent: Map<string, Map<number, HeldEntry>>;
|
|
86
|
+
readonly witnessedSeq: Map<string, Map<string, number>>;
|
|
87
|
+
/**
|
|
88
|
+
* DOD-M15-SEALPRECOND-1 — content hash -> the sequence the relay assigned OUR OWN leaf, for the
|
|
89
|
+
* span between the relay ordering it and this tree placing it.
|
|
90
|
+
*
|
|
91
|
+
* Distinct from `witnessedSeq`, which gains an entry only for leaves NOT authored by us
|
|
92
|
+
* (`relayLeafHandler`), and that asymmetry is exactly what cost a receipt on 2026-09-11: the
|
|
93
|
+
* relay had ordered our third leaf, the tree still held two, and every counter the seal gate
|
|
94
|
+
* reads was zero. Gained at the assignment site in `sendContent`, lost in `placeOwnLeaf`.
|
|
95
|
+
*/
|
|
96
|
+
readonly ownLeavesOrdered: Map<string, Map<string, number>>;
|
|
97
|
+
readonly leafFetchTimers: Map<string, ReturnType<typeof setTimeout>>;
|
|
98
|
+
readonly lastAck: Map<string, {
|
|
99
|
+
seq: number;
|
|
100
|
+
hash: Uint8Array;
|
|
101
|
+
}>;
|
|
102
|
+
readonly resolvedContent: Map<string, Set<string>>;
|
|
103
|
+
readonly undeliverableSeqs: Map<string, Set<number>>;
|
|
104
|
+
readonly highWaterSeq: Map<string, number>;
|
|
105
|
+
readonly counterpartyAddrs: Map<string, string[]>;
|
|
106
|
+
readonly lingeringStreams: Set<ReturnType<typeof setTimeout>>;
|
|
107
|
+
readonly redialNotBefore: Map<string, number>;
|
|
108
|
+
readonly orderingObserved: Set<string>;
|
|
109
|
+
readonly shuttingDown: boolean;
|
|
110
|
+
readonly contentTtfMs: number;
|
|
111
|
+
readonly leafFetchGraceMs: number;
|
|
112
|
+
/** Opened with the database, which happens long after this object is built — never a snapshot. */
|
|
113
|
+
readonly ownChainStore: SessionOwnChainStore | null;
|
|
114
|
+
/**
|
|
115
|
+
* ⚠️ **`null` AND "returns false" ARE DIFFERENT ANSWERS, everywhere below.** An absent durable
|
|
116
|
+
* queue is not a queue that refused; an absent document classifier is not a frame that is not a
|
|
117
|
+
* document. Each of these stays nullable so the code can keep saying which it was, which is why
|
|
118
|
+
* they are properties rather than pre-bound calls.
|
|
119
|
+
*/
|
|
120
|
+
readonly onParkFailed: ((agentName: string, sessionId: string, contentHashHex: string, content: Uint8Array, structure1Cbor?: Uint8Array, structure2Cbor?: Uint8Array, contentHashAlg?: string) => boolean) | null;
|
|
121
|
+
readonly onContentArrived: ((agentName: string, sessionId: string, senderPubkey: string) => void) | null;
|
|
122
|
+
readonly onDocumentFrame: ((agentName: string, sessionId: string, content: Uint8Array, senderPubkey: string, correlationId?: string) => {
|
|
123
|
+
consumed: boolean;
|
|
124
|
+
kind?: string;
|
|
125
|
+
}) | null;
|
|
126
|
+
readonly isDocumentFrame: ((content: Uint8Array) => boolean) | null;
|
|
127
|
+
readonly onAwaitingPersisted: ((agentName: string, sessionId: string, contentHashHex: string) => void) | null;
|
|
128
|
+
readonly inboundFrameObserver: ((frame: Record<string, unknown>) => void) | null;
|
|
129
|
+
sendFaultRemaining: number;
|
|
130
|
+
ackFaultRemaining: number;
|
|
131
|
+
connectionLossRemaining: number;
|
|
132
|
+
/** DOD-LOOP-1: (agentName, sessionId), never sessionId alone — see the manager's own note. */
|
|
133
|
+
sessionKey(agentName: string, sessionId: string): string;
|
|
134
|
+
keyProvider(agentName: string): KeyProvider | undefined;
|
|
135
|
+
getSessionTree(agentName: string, sessionId: string): SessionTree;
|
|
136
|
+
appendSessionLeaf(agentName: string, sessionId: string, kind: WritableSessionTreeLeafKind, leafHashHex: string, correlationId?: string): {
|
|
137
|
+
leafIndex: number;
|
|
138
|
+
newRootHex: string;
|
|
139
|
+
};
|
|
140
|
+
mailboxRouteAvailable(agentName: string): boolean;
|
|
141
|
+
streamCensus(node: CelloNode, peerId: string): Record<string, number>;
|
|
142
|
+
freezeOnIdentityFailure(agentName: string, sessionId: string, reason: string, correlationId?: string): Promise<void>;
|
|
143
|
+
handleTtfExpiry(agentName: string, sessionId: string, hashHex: string): void;
|
|
144
|
+
markContentUnverifiable(agentName: string, sessionId: string, why: "tampered" | "unverifiable"): void;
|
|
145
|
+
maybeAutoAcknowledgeSeal(agentName: string, sessionId: string, correlationId: string): void;
|
|
146
|
+
ownChainOf(agentName: string, sessionId: string, entry: {
|
|
147
|
+
relayClient?: AgentRelayClient;
|
|
148
|
+
relaySessionIdBytes?: Uint8Array;
|
|
149
|
+
} | undefined, ownPubkey: Uint8Array): Uint8Array | undefined;
|
|
150
|
+
updateSessionStatus(agentName: string, sessionId: string, status: "active" | "sealed" | "interrupted" | "abandoned", interruptedBy?: "local"): boolean;
|
|
151
|
+
abandonSession(agentName: string, sessionId: string): Promise<boolean>;
|
|
152
|
+
connectToCounterparty(agentName: string, sessionId: string, addrs: string[]): Promise<{
|
|
153
|
+
ok: true;
|
|
154
|
+
} | {
|
|
155
|
+
ok: false;
|
|
156
|
+
reason: string;
|
|
157
|
+
error: string;
|
|
158
|
+
}>;
|
|
159
|
+
destroySessionNode(agentName: string, sessionId: string, reason: "sealed" | "interrupted" | "error"): Promise<void>;
|
|
160
|
+
retireOnCounterpartyAbandon(agentName: string, sessionId: string, correlationId?: string): Promise<boolean>;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=session-content-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-content-context.d.ts","sourceRoot":"","sources":["../src/session-content-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACzF;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAGhD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACjF,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAGzC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACtD,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACjE,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD;;;;;;;;OAQG;IACH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;IACjE,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;IAC9D,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAGvC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,kGAAkG;IAClG,QAAQ,CAAC,aAAa,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAGpD;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EACjB,CAAC,CACC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,UAAU,EACnB,cAAc,CAAC,EAAE,UAAU,EAC3B,cAAc,CAAC,EAAE,UAAU,EAC3B,cAAc,CAAC,EAAE,MAAM,KACpB,OAAO,CAAC,GACb,IAAI,CAAC;IACT,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACzG,QAAQ,CAAC,eAAe,EACpB,CAAC,CACC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,MAAM,KACnB;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAC1C,IAAI,CAAC;IACT,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC;IACpE,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9G,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAGjF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAGhC,8FAA8F;IAC9F,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACzD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IACxD,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC;IAClE,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,2BAA2B,EACjC,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACrB;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAClD,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtE,uBAAuB,CACrB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7E,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,cAAc,GAAG,IAAI,CAAC;IACtG,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5F,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;QAAE,WAAW,CAAC,EAAE,gBAAgB,CAAC;QAAC,mBAAmB,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,SAAS,EACvF,SAAS,EAAE,UAAU,GACpB,UAAU,GAAG,SAAS,CAAC;IAC1B,mBAAmB,CACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,EACzD,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC;IACX,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,qBAAqB,CACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxE,kBAAkB,CAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,OAAO,GACzC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7G"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-content-context.js","sourceRoot":"","sources":["../src/session-content-context.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { type SecurityGatewayClient } from "@cello-protocol/gateway";
|
|
2
|
+
import type { IpcHandler } from "./ipc-server.js";
|
|
3
|
+
import type { SessionNodeManager } from "./session-node-manager.js";
|
|
4
|
+
import type { SendClaims } from "./send-claims.js";
|
|
5
|
+
import type { RetryQueue } from "./retry-queue.js";
|
|
6
|
+
import type { Logger } from "./types.js";
|
|
7
|
+
import type { ConnState } from "./contact-handlers.js";
|
|
8
|
+
/**
|
|
9
|
+
* DOD-M15-SEALWIRE-1 bullet 5, SENT half — the proof for a message THIS agent sent.
|
|
10
|
+
*
|
|
11
|
+
* Present only when the relay WITNESSED the leaf: an unwitnessed send never put a Structure-1 on the
|
|
12
|
+
* wire, so there is nothing signed to store, and the row must record `self_authored` with no proof
|
|
13
|
+
* rather than imply one. `sendContent` returns it per-send rather than stashing it by session,
|
|
14
|
+
* because a side map hands a caller the wrong send's signature the moment two are in flight.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Did the RELAY witness this leaf — the single fact every `witnessed` in this file is read from.
|
|
18
|
+
*
|
|
19
|
+
* `016-RELAYLOSS` review HIGH-2. The first version of the fix put `witnessed` on two of `cello_send`'s
|
|
20
|
+
* FIVE return paths, which defeats the reason it was added at all: a field that is present on some
|
|
21
|
+
* outcomes and absent on others cannot be branched on, and its absence reads as an older daemon
|
|
22
|
+
* rather than as an answer. Worse, the two it missed are the two that matter most — the diverged
|
|
23
|
+
* path is reachable ONLY after an unwitnessed leaf, and the durably-queued path is the one
|
|
24
|
+
* production takes when the relay is also the transport (behind NAT, content and witness die
|
|
25
|
+
* together), where it was telling operators "No action needed."
|
|
26
|
+
*
|
|
27
|
+
* Read off the PLACEMENT, not re-derived from the sequence number, so this and the
|
|
28
|
+
* `session.tree.own_leaf_unwitnessed` ERROR beside it can never disagree about the same send.
|
|
29
|
+
*
|
|
30
|
+
* ⚠️ A HELD leaf (`placed: false`) is WITNESSED, and that is not a special case being papered over.
|
|
31
|
+
* A leaf is held precisely BECAUSE the relay assigned it a position beyond this side's tail — being
|
|
32
|
+
* held is itself proof of an assignment. Reporting `witnessed: false` there would tell an operator
|
|
33
|
+
* their record had lost a message when the opposite is true.
|
|
34
|
+
*/
|
|
35
|
+
export declare function wasWitnessed(p: {
|
|
36
|
+
placed: true;
|
|
37
|
+
unwitnessed?: true;
|
|
38
|
+
} | {
|
|
39
|
+
placed: false;
|
|
40
|
+
}): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* The durably-queued path's guidance: the relay's OWN words, plus what a missing witness costs.
|
|
43
|
+
*
|
|
44
|
+
* **Exported so the test can call THIS rather than re-implement it.** The first version of the
|
|
45
|
+
* composition test rebuilt the string inline and asserted on its own copy — which stays green if
|
|
46
|
+
* production stops composing entirely, and is therefore the hollow shape this milestone keeps
|
|
47
|
+
* finding. A rule worth pinning has to be pinned on the code that runs.
|
|
48
|
+
*
|
|
49
|
+
* The rule, and why it is a composition rather than a choice: `upstream` is where the relay's own
|
|
50
|
+
* retry window reaches the operator ("try again in about 45 seconds"), and a rate-limited park is
|
|
51
|
+
* unwitnessed BY CONSTRUCTION — so choosing between the two messages silently drops the more
|
|
52
|
+
* specific one exactly when it is most useful. Both are true at once and the operator needs both.
|
|
53
|
+
*
|
|
54
|
+
* The default splits on `witnessed` for one reason only: "No action needed" is false for a leaf the
|
|
55
|
+
* relay never recorded.
|
|
56
|
+
*/
|
|
57
|
+
export declare function queuedSendGuidance(upstream: string | undefined, witnessed: boolean): string;
|
|
58
|
+
export declare function sentAuthorship(r: Awaited<ReturnType<SessionNodeManager["sendContent"]>>): {
|
|
59
|
+
senderPubkey: Uint8Array;
|
|
60
|
+
senderSig: Uint8Array;
|
|
61
|
+
} | undefined;
|
|
62
|
+
export interface SessionContentDeps {
|
|
63
|
+
handlers: Map<string, IpcHandler>;
|
|
64
|
+
logger: Logger;
|
|
65
|
+
sessionNodeManager: SessionNodeManager;
|
|
66
|
+
securityGateway: SecurityGatewayClient;
|
|
67
|
+
retryQueue: RetryQueue;
|
|
68
|
+
getConnState: (connectionId: string) => ConnState | undefined;
|
|
69
|
+
resolveCurrentAgent: (connState: ConnState | undefined, explicitAgent?: string) => string | null;
|
|
70
|
+
NO_CURRENT_AGENT_RESPONSE: unknown;
|
|
71
|
+
/** M8C-CURSOR-1: the per-connection read cursor (read-before-write gating). */
|
|
72
|
+
getConnectionCursor: (connectionId: string, sessionId: string) => number;
|
|
73
|
+
advanceConnectionCursor: (connectionId: string, sessionId: string, seq: number) => void;
|
|
74
|
+
/** M8C-TGDOOR-1: a read clears the doorbell's ring-once-until-read. */
|
|
75
|
+
clearTelegramRung: (agentName: string, sessionId: string) => void;
|
|
76
|
+
/** DOD-COATTEND-VISIBLE-1: how many connections attend this agent right now (reporting only). */
|
|
77
|
+
attendanceCount: (agentName: string) => number;
|
|
78
|
+
/** Sends on the wire right now — shared with the away one-shot, which must not close under one. */
|
|
79
|
+
sendClaims: SendClaims;
|
|
80
|
+
}
|
|
81
|
+
export declare function registerSessionContentHandlers(deps: SessionContentDeps): void;
|
|
82
|
+
//# sourceMappingURL=session-content-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-content-handlers.d.ts","sourceRoot":"","sources":["../src/session-content-handlers.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA2C,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC9G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AA8HvD;;;;;;;GAOG;AACH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,KAAK,CAAA;CAAE,GAAG,OAAO,CAEjG;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAY3F;AAED,wBAAgB,cAAc,CAC5B,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,GACxD;IAAE,YAAY,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAE,GAAG,SAAS,CAUjE;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,eAAe,EAAE,qBAAqB,CAAC;IACvC,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC;IAC9D,mBAAmB,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjG,yBAAyB,EAAE,OAAO,CAAC;IACnC,+EAA+E;IAC/E,mBAAmB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IACzE,uBAAuB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACxF,uEAAuE;IACvE,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,iGAAiG;IACjG,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,mGAAmG;IACnG,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAgsC7E"}
|