@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,565 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `cello_get_inclusion_proof` and `cello_verify_inclusion_proof` — the two halves of proving that
|
|
3
|
+
* ONE sentence is in a sealed conversation.
|
|
4
|
+
*
|
|
5
|
+
* Until `DOD-M15-INCLUSION-1` the first of these was a registered tool that returned
|
|
6
|
+
* `not_implemented`. That was honest, and it cost the product its central claim: an operator could
|
|
7
|
+
* say *"this conversation was notarized"* and could not say *"and here is the proof the sentence you
|
|
8
|
+
* are disputing is in it, unaltered."*
|
|
9
|
+
*
|
|
10
|
+
* ─── THE TWO THINGS THAT MAKE THIS A PROOF ────────────────────────────────────────────────────
|
|
11
|
+
*
|
|
12
|
+
* **The path is built over the CERTIFIED leaf set, not the local tree.** They are different trees.
|
|
13
|
+
* `SessionTree` holds content leaves; the certified root covers the seal's CONTROL leaves too. A
|
|
14
|
+
* path built from the local tree lands on a root no certificate names — proving only that this
|
|
15
|
+
* machine agrees with itself, which is worth nothing to the third party the proof is for. The
|
|
16
|
+
* certified set is stored at seal time only after it reproduces the FROST-signed root
|
|
17
|
+
* (`sealed-leaf-set.ts`), so it is the consortium's leaf set and not the directory's word for it.
|
|
18
|
+
*
|
|
19
|
+
* **The leaf is recomputed from the operator's message.** The daemon's own `contentHashFor` derives
|
|
20
|
+
* it; the proof carries the algorithm name and the session salt so a stranger can repeat the
|
|
21
|
+
* derivation. Change one byte of the message and the leaf changes and the proof fails, which is the
|
|
22
|
+
* assertion this feature exists to make.
|
|
23
|
+
*
|
|
24
|
+
* ─── WHY THE VERIFY HALF IS A TOOL AND NOT A DOCUMENT ─────────────────────────────────────────
|
|
25
|
+
*
|
|
26
|
+
* A proof nobody can check is a data structure. `cello_verify_inclusion_proof` reads no session, no
|
|
27
|
+
* certificate store and no tree — proof, message, root, and nothing else — so it answers for a
|
|
28
|
+
* session this daemon has never seen, on a machine that has never spoken to the counterparty.
|
|
29
|
+
*/
|
|
30
|
+
import { CONTENT_HASH_ALGS, contentHashFor } from "./wire-content-hash.js";
|
|
31
|
+
import { proofPathFor, rootOverLeafHashes, verifyInclusionProof, } from "./inclusion-proof.js";
|
|
32
|
+
/** How a caller checks a proof — named in every success response, because a proof nobody runs is inert. */
|
|
33
|
+
const VERIFY_AFFORDANCE = "To check this, call cello_verify_inclusion_proof with { proof, message, certified_root }, where " +
|
|
34
|
+
"certified_root is the sealed_root from cello_sealed_receipt — NOT the root inside the proof. It " +
|
|
35
|
+
"needs no access to this daemon, so a third party can run it against the certificate you give them.";
|
|
36
|
+
export function registerInclusionProofHandlers(deps) {
|
|
37
|
+
const { handlers, logger, sessionNodeManager, getConnState, resolveCurrentAgent, NO_CURRENT_AGENT_RESPONSE } = deps;
|
|
38
|
+
handlers.set("cello_get_inclusion_proof", async (params, connectionId) => {
|
|
39
|
+
const sessionId = params?.["session_id"];
|
|
40
|
+
if (!sessionId || typeof sessionId !== "string") {
|
|
41
|
+
return {
|
|
42
|
+
ok: false,
|
|
43
|
+
reason: "missing_session_id",
|
|
44
|
+
guidance: "Provide the session_id (hex) of the sealed session. cello_sessions lists the full ids.",
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const message = params?.["message"];
|
|
48
|
+
if (typeof message !== "string" || message.length === 0) {
|
|
49
|
+
return {
|
|
50
|
+
ok: false,
|
|
51
|
+
reason: "missing_message",
|
|
52
|
+
guidance: "Provide { message } — the EXACT text of the message you want to prove, copied from " +
|
|
53
|
+
`cello_transcript ${sessionId}. The proof is over the message's bytes, so a paraphrase, a ` +
|
|
54
|
+
"trimmed quote, or added whitespace produces a different message and will not be found.",
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const connState = getConnState(connectionId);
|
|
58
|
+
const agentName = resolveCurrentAgent(connState, params?.["agent"]);
|
|
59
|
+
if (!agentName)
|
|
60
|
+
return NO_CURRENT_AGENT_RESPONSE;
|
|
61
|
+
// ─── Is there a certificate at all? "not sealed" and "unknown" are different situations ─────
|
|
62
|
+
const cert = sessionNodeManager.getSealCertificate(agentName, sessionId);
|
|
63
|
+
if (!cert) {
|
|
64
|
+
if (!sessionNodeManager.getSessionRecord(agentName, sessionId)) {
|
|
65
|
+
return {
|
|
66
|
+
ok: false,
|
|
67
|
+
reason: "unknown_session",
|
|
68
|
+
guidance: "No session with this id belongs to the current agent. Run cello_sessions to see the full ids.",
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
ok: false,
|
|
73
|
+
reason: "not_sealed_yet",
|
|
74
|
+
guidance: "There is no certificate for this session yet, so there is no notarized root for a proof to " +
|
|
75
|
+
`land on. Close it with cello_close_session ${sessionId} and retry once cello_sealed_receipt ` +
|
|
76
|
+
"reports a sealed_root. A proof against this machine's own record would prove only that this " +
|
|
77
|
+
"machine agrees with itself, so none is issued.",
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// ─── The certified leaf set: the tree the signature actually covers ─────────────────────────
|
|
81
|
+
const certifiedLeaves = sessionNodeManager.getCertifiedLeafSet(agentName, sessionId);
|
|
82
|
+
if (!certifiedLeaves) {
|
|
83
|
+
return missingLeafSetRefusal(logger, sessionNodeManager.getCertifiedLeafSetState(agentName, sessionId), agentName, sessionId, cert.sealed_root);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* RE-PROVE THE STORED SET AGAINST THE CERTIFICATE ON EVERY READ.
|
|
87
|
+
*
|
|
88
|
+
* It was already proved at seal time, and that check ran against the seal frame. This one runs
|
|
89
|
+
* against the DATABASE — the two are not the same claim. The local store is a SQLCipher file on
|
|
90
|
+
* the operator's own disk, which is the thing a sceptic is entitled to doubt, and re-deriving
|
|
91
|
+
* costs one Merkle build over an already-sealed session.
|
|
92
|
+
*/
|
|
93
|
+
const storedRoot = rootOverLeafHashes(certifiedLeaves);
|
|
94
|
+
if (storedRoot !== cert.sealed_root.toLowerCase()) {
|
|
95
|
+
logger.error("inclusion.certified_leaves.root_mismatch", {
|
|
96
|
+
agentName,
|
|
97
|
+
sessionId,
|
|
98
|
+
storedRoot,
|
|
99
|
+
certifiedRoot: cert.sealed_root,
|
|
100
|
+
impact: "the leaf set held for this session no longer hashes to the certified root, so no proof " +
|
|
101
|
+
"can be issued from it — the local copy has changed since the seal",
|
|
102
|
+
});
|
|
103
|
+
return {
|
|
104
|
+
ok: false,
|
|
105
|
+
reason: "certified_leaves_root_mismatch",
|
|
106
|
+
sealed_root: cert.sealed_root,
|
|
107
|
+
guidance: "The leaf set stored on this machine no longer reproduces the root in the certificate, so " +
|
|
108
|
+
"nothing here can be proved against it. The certificate itself is untouched and still valid " +
|
|
109
|
+
"— take it and the counterparty's copy of the conversation to establish what was said. Do " +
|
|
110
|
+
"not treat any proof from this machine as reliable until that is resolved.",
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* DOES THIS AGENT'S OWN RECORD AGREE WITH WHAT WAS CERTIFIED? — and a disagreement REFUSES.
|
|
115
|
+
*
|
|
116
|
+
* The certified set opens with the content leaves in canonical order and ends with the seal's
|
|
117
|
+
* control leaves, so this side's tree should be a prefix of it. When it is not, the operator's
|
|
118
|
+
* transcript and the notarized record are two different conversations. Emitting a proof anyway
|
|
119
|
+
* would be true about the certified leaf and misleading about the message the operator is
|
|
120
|
+
* reading, which is worse than refusing.
|
|
121
|
+
*/
|
|
122
|
+
const tree = sessionNodeManager.getSessionTree(agentName, sessionId);
|
|
123
|
+
const localSize = tree.size();
|
|
124
|
+
if (localSize > certifiedLeaves.length) {
|
|
125
|
+
return divergenceRefusal(logger, agentName, sessionId, cert.sealed_root, {
|
|
126
|
+
detail: `this side holds ${localSize} content leaves and the certificate covers only ${certifiedLeaves.length} leaves in total`,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
for (let i = 0; i < localSize; i++) {
|
|
130
|
+
const local = tree.hashAt(i);
|
|
131
|
+
if (local !== certifiedLeaves[i]) {
|
|
132
|
+
return divergenceRefusal(logger, agentName, sessionId, cert.sealed_root, {
|
|
133
|
+
detail: `leaf ${i} of this side's record is ${local ?? "absent"} and the certified leaf at that position is ${certifiedLeaves[i]}`,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* ─── The salt, without which a proof is about a number rather than a sentence ───────────────
|
|
139
|
+
*
|
|
140
|
+
* `getSessionContentSaltState`, NOT `getSessionContentSalt` — fallback-finder finding 2. The
|
|
141
|
+
* plain accessor answers `null` for a session that never agreed a salt AND for one whose salt
|
|
142
|
+
* row is corrupt or unreadable, and those need opposite sentences: the first is a fact about the
|
|
143
|
+
* conversation, the second is damage to this operator's own database, and telling them the
|
|
144
|
+
* second is the first sends them to their counterparty over a local disk problem.
|
|
145
|
+
*/
|
|
146
|
+
const saltState = sessionNodeManager.getSessionContentSaltState(agentName, sessionId);
|
|
147
|
+
if (saltState.salt === null && saltState.reason === "unreadable") {
|
|
148
|
+
logger.error("inclusion.salt.unreadable", {
|
|
149
|
+
agentName,
|
|
150
|
+
sessionId,
|
|
151
|
+
impact: "this session HOLDS a salt that could not be read, so its messages cannot be re-hashed and " +
|
|
152
|
+
"no inclusion proof can be issued — the conversation and its receipt are unaffected",
|
|
153
|
+
});
|
|
154
|
+
return {
|
|
155
|
+
ok: false,
|
|
156
|
+
reason: "session_salt_unreadable",
|
|
157
|
+
sealed_root: cert.sealed_root,
|
|
158
|
+
guidance: "This session DOES have a salt and this machine could not read it, so the message cannot be " +
|
|
159
|
+
"re-hashed and no proof can be issued. THIS IS A PROBLEM WITH THIS MACHINE'S DATABASE, not " +
|
|
160
|
+
"with the session, the counterparty or their build — do not ask them to upgrade and do not " +
|
|
161
|
+
"start a new session to fix it. Look for session.salt.read.failed in the daemon log; it " +
|
|
162
|
+
"names the row. The receipt itself is unaffected and still proves the conversation sealed.",
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
if (saltState.salt === null) {
|
|
166
|
+
return {
|
|
167
|
+
ok: false,
|
|
168
|
+
reason: "session_unsalted",
|
|
169
|
+
sealed_root: cert.sealed_root,
|
|
170
|
+
guidance: "This session's content hashes are UNSALTED, and no proof is issued over one. An unsalted " +
|
|
171
|
+
"leaf is sha256 of the message, which anyone holding a copy of the text can recompute — so " +
|
|
172
|
+
"it links this message to every other record carrying the same words, which is what the " +
|
|
173
|
+
"session salt exists to prevent. cello_sealed_receipt reports a session's salt state; a " +
|
|
174
|
+
"session opened while both agents are connected agrees one at open.",
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
const salt = saltState.salt;
|
|
178
|
+
const messageBytes = new TextEncoder().encode(message);
|
|
179
|
+
const leafHash = Buffer.from(contentHashFor(messageBytes, { alg: CONTENT_HASH_ALGS.HMAC_SALT_V1, salt })).toString("hex");
|
|
180
|
+
/**
|
|
181
|
+
* WHICH LEAF — and identical text twice is two messages, not one.
|
|
182
|
+
*
|
|
183
|
+
* `SessionTree.indexOfHash` answers "is this content anywhere", and `DOD-FRONTIER-STRAND-1`
|
|
184
|
+
* already paid for treating that as "is this content at THIS position": a session stranded
|
|
185
|
+
* because a genuine second send of the same words was dropped as a redelivery. So a repeated
|
|
186
|
+
* message is not resolved by picking the first — it is refused with the candidate positions, and
|
|
187
|
+
* the caller says which one they mean.
|
|
188
|
+
*/
|
|
189
|
+
const matches = [];
|
|
190
|
+
for (let i = 0; i < certifiedLeaves.length; i++)
|
|
191
|
+
if (certifiedLeaves[i] === leafHash)
|
|
192
|
+
matches.push(i);
|
|
193
|
+
const requestedIndex = params?.["leaf_index"];
|
|
194
|
+
let leafIndex;
|
|
195
|
+
if (requestedIndex !== undefined && requestedIndex !== null) {
|
|
196
|
+
if (typeof requestedIndex !== "number" || !Number.isInteger(requestedIndex) || requestedIndex < 0) {
|
|
197
|
+
return {
|
|
198
|
+
ok: false,
|
|
199
|
+
reason: "invalid_leaf_index",
|
|
200
|
+
guidance: `leaf_index must be a whole number 0 or greater. Omit it unless a previous call reported this message at more than one position.`,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
if (certifiedLeaves[requestedIndex] !== leafHash) {
|
|
204
|
+
return {
|
|
205
|
+
ok: false,
|
|
206
|
+
reason: "leaf_index_mismatch",
|
|
207
|
+
leaf_index: requestedIndex,
|
|
208
|
+
candidate_leaf_indices: matches,
|
|
209
|
+
guidance: matches.length > 0
|
|
210
|
+
? `The certified leaf at position ${requestedIndex} is not this message. This message is at ${matches.join(", ")} — retry with one of those.`
|
|
211
|
+
: `The certified leaf at position ${requestedIndex} is not this message, and this message is not at any position in this session. Copy the text exactly from cello_transcript ${sessionId}.`,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
leafIndex = requestedIndex;
|
|
215
|
+
}
|
|
216
|
+
else if (matches.length === 0) {
|
|
217
|
+
/**
|
|
218
|
+
* BEFORE ASSERTING ABSENCE, CHECK THE OTHER ALGORITHM — review F5, error substitution.
|
|
219
|
+
*
|
|
220
|
+
* This handler picks the hash algorithm from salt POSSESSION, and possession is not the same
|
|
221
|
+
* as use: `#suspendSalt` deliberately keeps the salt bytes on disk while the session hashes
|
|
222
|
+
* `sha256`, so a session can hold salted leaves next to unsalted ones. For any leaf on the
|
|
223
|
+
* other side of that split, "no match" is this daemon having guessed the algorithm — and the
|
|
224
|
+
* guidance said *"this message is genuinely not in this sealed conversation"*, which is an
|
|
225
|
+
* affirmatively false statement about the product's central claim wearing an exit-point label.
|
|
226
|
+
*
|
|
227
|
+
* One extra hash buys the distinction. Finding the message under the other algorithm does NOT
|
|
228
|
+
* produce a proof: this build issues salted proofs only (DoD 8), and an unsalted leaf is a
|
|
229
|
+
* value anyone holding the plaintext can recompute. It produces a REFUSAL that names what
|
|
230
|
+
* actually happened.
|
|
231
|
+
*/
|
|
232
|
+
const unsaltedHash = Buffer.from(contentHashFor(messageBytes, { alg: CONTENT_HASH_ALGS.SHA256, salt: null })).toString("hex");
|
|
233
|
+
const unsaltedAt = certifiedLeaves.indexOf(unsaltedHash);
|
|
234
|
+
if (unsaltedAt !== -1) {
|
|
235
|
+
logger.error("inclusion.alg.split", {
|
|
236
|
+
agentName,
|
|
237
|
+
sessionId,
|
|
238
|
+
leafIndex: unsaltedAt,
|
|
239
|
+
impact: "this message is in the notarized record but was hashed UNSALTED while the session holds " +
|
|
240
|
+
"a salt, so the two halves of this conversation are verifiable under different rules and " +
|
|
241
|
+
"no salted proof can be issued for this one",
|
|
242
|
+
});
|
|
243
|
+
return {
|
|
244
|
+
ok: false,
|
|
245
|
+
reason: "message_hashed_under_other_alg",
|
|
246
|
+
sealed_root: cert.sealed_root,
|
|
247
|
+
leaf_index: unsaltedAt,
|
|
248
|
+
leaf_count: certifiedLeaves.length,
|
|
249
|
+
guidance: `THIS MESSAGE IS IN THE SEALED RECORD — at position ${unsaltedAt} — and it was hashed ` +
|
|
250
|
+
"WITHOUT this session's salt, while the session holds one. That happens when a session " +
|
|
251
|
+
"stopped using its salt partway through, so half the conversation is verifiable under one " +
|
|
252
|
+
"rule and half under another. No proof is issued for this message because an unsalted one " +
|
|
253
|
+
"carries weaker protection than this build will put its name to. Do NOT conclude the " +
|
|
254
|
+
"message is absent — it is not. Report the session id and this reason; messages hashed " +
|
|
255
|
+
"under the salt can still be proved normally.",
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
return {
|
|
259
|
+
ok: false,
|
|
260
|
+
reason: "message_not_in_session",
|
|
261
|
+
sealed_root: cert.sealed_root,
|
|
262
|
+
leaf_count: certifiedLeaves.length,
|
|
263
|
+
guidance: `No leaf in this session's notarized record is this message, under either the salted or the ` +
|
|
264
|
+
`unsalted hash. Copy the text exactly from cello_transcript ${sessionId} — the proof is over ` +
|
|
265
|
+
"the bytes, so a changed character, a trimmed quote or a trailing newline is a different " +
|
|
266
|
+
"message. If the text IS exact, this message is genuinely not in this sealed conversation.",
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
else if (matches.length > 1) {
|
|
270
|
+
return {
|
|
271
|
+
ok: false,
|
|
272
|
+
reason: "message_ambiguous",
|
|
273
|
+
candidate_leaf_indices: matches,
|
|
274
|
+
guidance: `This exact text was sent ${matches.length} times in this session, at positions ` +
|
|
275
|
+
`${matches.join(", ")} — they are different messages that happen to read the same, and a ` +
|
|
276
|
+
"proof names one of them. Retry with { leaf_index } set to the one you mean.",
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
leafIndex = matches[0];
|
|
281
|
+
}
|
|
282
|
+
const proof = {
|
|
283
|
+
version: 1,
|
|
284
|
+
session_id: sessionId,
|
|
285
|
+
certified_root: cert.sealed_root.toLowerCase(),
|
|
286
|
+
leaf_index: leafIndex,
|
|
287
|
+
leaf_count: certifiedLeaves.length,
|
|
288
|
+
leaf_hash: leafHash,
|
|
289
|
+
proof_path: proofPathFor(certifiedLeaves, leafIndex),
|
|
290
|
+
content_hash_alg: CONTENT_HASH_ALGS.HMAC_SALT_V1,
|
|
291
|
+
content_salt: Buffer.from(salt).toString("hex"),
|
|
292
|
+
};
|
|
293
|
+
/**
|
|
294
|
+
* RUN THE VERIFIER BEFORE HANDING THE PROOF OVER.
|
|
295
|
+
*
|
|
296
|
+
* ⚠️ UNREACHABLE BY CONSTRUCTION, AND THAT IS STATED RATHER THAN IMPLIED — review F8. The
|
|
297
|
+
* previous wording ("a proof that does not verify is worse than no proof") implied a live
|
|
298
|
+
* failure mode and would send a reader hunting for the path that reaches it. There is none:
|
|
299
|
+
* every field is built from values already checked above, `storedRoot === cert.sealed_root` was
|
|
300
|
+
* asserted twenty lines up, and the leaf came from `certifiedLeaves` by equality.
|
|
301
|
+
*
|
|
302
|
+
* WHAT IT CAN ACTUALLY FIRE ON: a drift between `inclusionProof` and `verifyInclusion` inside
|
|
303
|
+
* `@cello-protocol/crypto` — the two halves of one RFC 6962 implementation disagreeing. That is
|
|
304
|
+
* the failure this whole unit is written to avoid causing by hand, and it is worth one Merkle
|
|
305
|
+
* verification per issued proof to turn it into a named refusal rather than evidence that fails
|
|
306
|
+
* in front of the person it was shown to. `proof_self_check_failed` therefore has NO test: it
|
|
307
|
+
* has no reachable input, and a test that reached it would have to break the crypto package.
|
|
308
|
+
*/
|
|
309
|
+
const selfCheck = verifyInclusionProof(proof, messageBytes, cert.sealed_root);
|
|
310
|
+
if (!selfCheck.ok) {
|
|
311
|
+
logger.error("inclusion.proof.self_check_failed", {
|
|
312
|
+
agentName,
|
|
313
|
+
sessionId,
|
|
314
|
+
leafIndex,
|
|
315
|
+
reason: selfCheck.reason,
|
|
316
|
+
detail: selfCheck.detail,
|
|
317
|
+
impact: "a proof was constructed for this message and did not verify against the certified root, so it was NOT returned",
|
|
318
|
+
});
|
|
319
|
+
return {
|
|
320
|
+
ok: false,
|
|
321
|
+
reason: "proof_self_check_failed",
|
|
322
|
+
detail: selfCheck.detail,
|
|
323
|
+
guidance: "This daemon built a proof for that message and it failed its own check against the " +
|
|
324
|
+
"certified root, so nothing was returned rather than handing you evidence that would fail " +
|
|
325
|
+
"in front of whoever you showed it to. Report the session id and this reason; the receipt " +
|
|
326
|
+
"itself is unaffected and still valid.",
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
logger.info("inclusion.proof.issued", {
|
|
330
|
+
agentName,
|
|
331
|
+
sessionId,
|
|
332
|
+
leafIndex,
|
|
333
|
+
leafCount: certifiedLeaves.length,
|
|
334
|
+
contentHashAlg: proof.content_hash_alg,
|
|
335
|
+
});
|
|
336
|
+
return {
|
|
337
|
+
ok: true,
|
|
338
|
+
session_id: sessionId,
|
|
339
|
+
proof,
|
|
340
|
+
// Repeated outside the proof so a caller reading the response does not have to open it.
|
|
341
|
+
certified_root: proof.certified_root,
|
|
342
|
+
leaf_index: leafIndex,
|
|
343
|
+
leaf_count: certifiedLeaves.length,
|
|
344
|
+
guidance: VERIFY_AFFORDANCE,
|
|
345
|
+
/**
|
|
346
|
+
* THE PROOF CARRIES THE SESSION SALT, AND THAT IS A DISCLOSURE — review F2.
|
|
347
|
+
*
|
|
348
|
+
* The salt has to travel or the proof is about a number rather than a sentence. But it is
|
|
349
|
+
* per-SESSION, so handing over one proof hands over the ability to test guessed text against
|
|
350
|
+
* every leaf hash in that session — which is the exact capability `unsalted_proof_refused`
|
|
351
|
+
* spends four lines refusing to grant. Saying nothing here would leave this surface arguing
|
|
352
|
+
* for a privacy property while quietly trading it away.
|
|
353
|
+
*/
|
|
354
|
+
discloses: "This proof CONTAINS this session's content salt, which it must in order to be checkable. " +
|
|
355
|
+
"With it, whoever holds the proof can test guessed wording against any leaf hash from this " +
|
|
356
|
+
"session — so share a proof with the same care you would share the transcript. It does not " +
|
|
357
|
+
"let them forge a message into the record, or read anything they were not given.",
|
|
358
|
+
};
|
|
359
|
+
});
|
|
360
|
+
/**
|
|
361
|
+
* THE THIRD-PARTY VERIFIER. Touches no session, no certificate store, no tree.
|
|
362
|
+
*
|
|
363
|
+
* Registered on the daemon because that is where the tool surface lives, not because it needs
|
|
364
|
+
* anything the daemon holds — which is exactly the property that lets someone who has never spoken
|
|
365
|
+
* to either party check the proof on their own machine.
|
|
366
|
+
*/
|
|
367
|
+
handlers.set("cello_verify_inclusion_proof", async (params) => {
|
|
368
|
+
const rawProof = params?.["proof"];
|
|
369
|
+
if (rawProof === undefined || rawProof === null) {
|
|
370
|
+
return {
|
|
371
|
+
ok: false,
|
|
372
|
+
reason: "missing_proof",
|
|
373
|
+
guidance: "Provide { proof } — the object cello_get_inclusion_proof returned, verbatim.",
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
// Accepted as an object OR as the JSON text of one: a proof travels between people by paste, and
|
|
377
|
+
// refusing a pasted string would send the reader to reformat evidence by hand, which is the one
|
|
378
|
+
// step most likely to alter it.
|
|
379
|
+
let proof = rawProof;
|
|
380
|
+
if (typeof rawProof === "string") {
|
|
381
|
+
try {
|
|
382
|
+
proof = JSON.parse(rawProof);
|
|
383
|
+
}
|
|
384
|
+
catch {
|
|
385
|
+
return {
|
|
386
|
+
ok: false,
|
|
387
|
+
reason: "proof_malformed",
|
|
388
|
+
guidance: "The proof was supplied as text and is not valid JSON. Paste the whole object " +
|
|
389
|
+
"cello_get_inclusion_proof returned, braces included, with nothing trimmed.",
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
const message = params?.["message"];
|
|
394
|
+
if (typeof message !== "string" || message.length === 0) {
|
|
395
|
+
return {
|
|
396
|
+
ok: false,
|
|
397
|
+
reason: "missing_message",
|
|
398
|
+
guidance: "Provide { message } — the exact text being proved. Verification recomputes the message's " +
|
|
399
|
+
"hash, so this is what makes the answer about a sentence rather than about a number.",
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
const certifiedRoot = params?.["certified_root"];
|
|
403
|
+
if (typeof certifiedRoot !== "string" || certifiedRoot.length === 0) {
|
|
404
|
+
return {
|
|
405
|
+
ok: false,
|
|
406
|
+
reason: "missing_certified_root",
|
|
407
|
+
guidance: "Provide { certified_root } — the sealed_root from the certificate (cello_sealed_receipt " +
|
|
408
|
+
"reports it). It is REQUIRED and it must come from the certificate, never from the proof: a " +
|
|
409
|
+
"proof checked against its own root proves only that whoever wrote it was consistent.",
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
const result = verifyInclusionProof(proof, new TextEncoder().encode(message), certifiedRoot);
|
|
413
|
+
if (!result.ok) {
|
|
414
|
+
logger.info("inclusion.proof.verify.refused", { reason: result.reason, detail: result.detail });
|
|
415
|
+
return { ok: false, reason: result.reason, detail: result.detail, guidance: result.guidance };
|
|
416
|
+
}
|
|
417
|
+
logger.info("inclusion.proof.verify.ok", {
|
|
418
|
+
sessionId: result.session_id,
|
|
419
|
+
leafIndex: result.leaf_index,
|
|
420
|
+
leafCount: result.leaf_count,
|
|
421
|
+
});
|
|
422
|
+
return {
|
|
423
|
+
ok: true,
|
|
424
|
+
verified: true,
|
|
425
|
+
session_id: result.session_id,
|
|
426
|
+
leaf_index: result.leaf_index,
|
|
427
|
+
leaf_count: result.leaf_count,
|
|
428
|
+
certified_root: result.certified_root,
|
|
429
|
+
content_hash_alg: result.content_hash_alg,
|
|
430
|
+
// Carried through so a caller cannot read `session_id` above as something that was checked.
|
|
431
|
+
// The anchor is the ROOT; nothing here binds a session id (fallback-finder finding 6).
|
|
432
|
+
session_id_verified: result.session_id_verified,
|
|
433
|
+
// WHAT THIS DOES AND DOES NOT ESTABLISH. The proof binds a message to a root; it says nothing
|
|
434
|
+
// about whether that root is the one a directory signed. Claiming more here would be the
|
|
435
|
+
// "partially true is false" failure the claims ledger exists to catch.
|
|
436
|
+
means: "This exact message is at position " + result.leaf_index + " of the " + result.leaf_count +
|
|
437
|
+
" leaves under root " + result.certified_root + " (that count includes the seal's own control " +
|
|
438
|
+
"leaves, so it is larger than the number of messages in the conversation). It has not been " +
|
|
439
|
+
"altered by a single byte. " +
|
|
440
|
+
"This does NOT by itself establish that the root is genuine — verify the certificate's own " +
|
|
441
|
+
"signature (cello_sealed_receipt) to establish that, then this proof binds the message to it. " +
|
|
442
|
+
"The session_id above is copied from the proof and was NOT checked: nothing here binds a " +
|
|
443
|
+
"session id, so treat it as a label rather than as a finding.",
|
|
444
|
+
};
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* WHY there is no certified leaf set — one reason string per cause, never one for all four.
|
|
449
|
+
*
|
|
450
|
+
* ⚠️ THIS USED TO BE A SINGLE `certified_leaves_unavailable` WHOSE GUIDANCE ASSERTED THE MOST BENIGN
|
|
451
|
+
* OF FOUR CAUSES — fallback-finder finding 1, and it is the defect this milestone is named for.
|
|
452
|
+
*
|
|
453
|
+
* `getCertifiedLeafSet` answers null when: no seal frame carried the leaves, the DIRECTORY shipped a
|
|
454
|
+
* set that does not reproduce the root its own FROST signature covers, a leaf was malformed, or the
|
|
455
|
+
* write failed. The text said *"the normal state for the party that was ABSENT at seal time … ask
|
|
456
|
+
* your counterparty."* So an operator who was present throughout, whose directory had just
|
|
457
|
+
* contradicted its own signature — the strongest misbehaviour signal this client can produce — was
|
|
458
|
+
* told they had been absent, and sent to a counterparty who has nothing to give them. The detection
|
|
459
|
+
* was correct and its only consumer was a log line.
|
|
460
|
+
*
|
|
461
|
+
* `session_certified_leaves_state` is written at every one of those four points, so the cause
|
|
462
|
+
* survives to here. A state this build does not recognise is named as such rather than folded into
|
|
463
|
+
* the nearest familiar one.
|
|
464
|
+
*/
|
|
465
|
+
function missingLeafSetRefusal(logger, recorded, agentName, sessionId, sealedRoot) {
|
|
466
|
+
const base = { ok: false, sealed_root: sealedRoot, ...(recorded?.detail ? { detail: recorded.detail } : {}) };
|
|
467
|
+
switch (recorded?.state) {
|
|
468
|
+
case "sealed_leaves_root_disagrees":
|
|
469
|
+
// THE LOUD ONE. Not a degradation — a party that signed one thing and shipped another.
|
|
470
|
+
logger.error("inclusion.certified_leaves.directory_disagreed", {
|
|
471
|
+
agentName, sessionId, detail: recorded.detail,
|
|
472
|
+
impact: "the leaf set delivered with this seal does not reproduce the root the consortium signed, " +
|
|
473
|
+
"so it was refused and no message in this session can be proved from this side",
|
|
474
|
+
});
|
|
475
|
+
return {
|
|
476
|
+
...base,
|
|
477
|
+
reason: "certified_leaves_root_disagrees",
|
|
478
|
+
guidance: "THIS IS NOT THE ORDINARY 'no leaves' CASE. The leaf set delivered with this seal does not " +
|
|
479
|
+
"hash to the root the directory consortium signed — the same party gave two answers that " +
|
|
480
|
+
"cannot both be true, so it was refused rather than stored. Your receipt is unaffected and " +
|
|
481
|
+
"still proves this conversation was sealed; what is unavailable is proof about an " +
|
|
482
|
+
"individual message. Keep the receipt, note the session id, and raise this with the " +
|
|
483
|
+
"operator — a directory contradicting its own signature is worth investigating, not " +
|
|
484
|
+
"retrying.",
|
|
485
|
+
};
|
|
486
|
+
case "sealed_leaves_malformed":
|
|
487
|
+
return {
|
|
488
|
+
...base,
|
|
489
|
+
reason: "certified_leaves_malformed",
|
|
490
|
+
guidance: "The signed leaves delivered with this seal could not be read, so none were stored and no " +
|
|
491
|
+
"message in this session can be proved from this side. The receipt is unaffected. This is " +
|
|
492
|
+
"a version or transport problem rather than a dispute — nothing local repairs it, and " +
|
|
493
|
+
"re-closing the session will not re-deliver them.",
|
|
494
|
+
};
|
|
495
|
+
case "persist_failed":
|
|
496
|
+
return {
|
|
497
|
+
...base,
|
|
498
|
+
reason: "certified_leaves_persist_failed",
|
|
499
|
+
guidance: "The leaf set for this session arrived and verified, and this machine failed to write it. " +
|
|
500
|
+
"THE FAULT IS LOCAL — do not ask your counterparty for anything. Look for " +
|
|
501
|
+
"seal.certified_leaves.persist.failed in the daemon log; it names the write. Your " +
|
|
502
|
+
"counterparty's copy can still issue a proof for the same messages in the meantime.",
|
|
503
|
+
};
|
|
504
|
+
case "not_carried_present_party":
|
|
505
|
+
// The false-remedy case: on this path the counterparty is the ABSENT one, who has less.
|
|
506
|
+
return {
|
|
507
|
+
...base,
|
|
508
|
+
reason: "certified_leaves_not_carried",
|
|
509
|
+
guidance: "This seal completed with your counterparty absent, and the directory sent no signed leaves " +
|
|
510
|
+
"with it — so NEITHER side can prove an individual message in this session. Do not ask them " +
|
|
511
|
+
"for a proof; they were not there and hold even less than you do. Your receipt is complete " +
|
|
512
|
+
"and still proves the conversation was sealed. Nothing local repairs this.",
|
|
513
|
+
};
|
|
514
|
+
case "not_carried_absent_party":
|
|
515
|
+
return {
|
|
516
|
+
...base,
|
|
517
|
+
reason: "certified_leaves_unavailable",
|
|
518
|
+
guidance: "You were the ABSENT party when this session sealed, and the signed leaves only ever reach " +
|
|
519
|
+
"the party that was present — so this side can never prove an individual message here, and " +
|
|
520
|
+
"re-closing will not change that. Ask your counterparty to issue the proof; their copy can. " +
|
|
521
|
+
"Your receipt is unaffected and still proves the conversation was sealed.",
|
|
522
|
+
};
|
|
523
|
+
default:
|
|
524
|
+
// Includes `recorded === null`: no seal has been processed on this side at all, which is a
|
|
525
|
+
// different sentence again — and an unrecognised state, which is named rather than guessed.
|
|
526
|
+
return {
|
|
527
|
+
...base,
|
|
528
|
+
reason: "certified_leaves_unavailable",
|
|
529
|
+
...(recorded ? { recorded_state: recorded.state } : {}),
|
|
530
|
+
guidance: "This side holds the receipt for this session but not the leaf set it is signed over, and " +
|
|
531
|
+
"no cause was recorded for that — most often because the seal was processed by a build " +
|
|
532
|
+
"older than this one. No message-level proof can be built here. Ask your counterparty to " +
|
|
533
|
+
"issue the proof; their copy may still be able to. The receipt itself is unaffected.",
|
|
534
|
+
};
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
* The refusal for a local record that does not match what was certified.
|
|
539
|
+
*
|
|
540
|
+
* One function because both callers must produce the SAME reason string: the operator's next step is
|
|
541
|
+
* identical either way, and two spellings of one situation is how a reason code stops being usable
|
|
542
|
+
* as a signal.
|
|
543
|
+
*/
|
|
544
|
+
function divergenceRefusal(logger, agentName, sessionId, sealedRoot, args) {
|
|
545
|
+
logger.error("inclusion.local_tree.diverged", {
|
|
546
|
+
agentName,
|
|
547
|
+
sessionId,
|
|
548
|
+
sealedRoot,
|
|
549
|
+
detail: args.detail,
|
|
550
|
+
impact: "this side's own record of the conversation is not the record that was notarized, so no " +
|
|
551
|
+
"message-level proof is issued from it",
|
|
552
|
+
});
|
|
553
|
+
return {
|
|
554
|
+
ok: false,
|
|
555
|
+
reason: "local_tree_diverged",
|
|
556
|
+
detail: args.detail,
|
|
557
|
+
sealed_root: sealedRoot,
|
|
558
|
+
guidance: "This machine's record of the conversation does not match the one the certificate covers, so " +
|
|
559
|
+
"any proof built here could be true about the certified record and wrong about the messages " +
|
|
560
|
+
"you are reading. Read cello_transcript " + sessionId + " and compare it with your " +
|
|
561
|
+
"counterparty's copy out of band. The certificate is unaffected and still proves the " +
|
|
562
|
+
"conversation was sealed; what is in doubt is this side's copy of it.",
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
//# sourceMappingURL=inclusion-proof-handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inclusion-proof-handlers.js","sourceRoot":"","sources":["../src/inclusion-proof-handlers.ts"],"names":[],"mappings":"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"}
|