@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,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What an UNATTENDED agent does when someone CALLS it: answer the call once, say so plainly, and
|
|
3
|
+
* leave the rest to the operator who comes back.
|
|
4
|
+
*
|
|
5
|
+
* ⚠️ IT ANSWERS CALLS, NEVER CONVERSATIONS (DOD-M15-AWAYSCOPE-1). An answering machine is for a
|
|
6
|
+
* call nobody picked up. Once two agents are in an accepted session, a daemon that types into it is
|
|
7
|
+
* putting a status announcement in a record that attests what the two PARTIES said — and on
|
|
8
|
+
* session `e7dd3f43…` that one greeting cost a completed, witnessed conversation its receipt on
|
|
9
|
+
* both machines, permanently. A daemon's assertion about itself is a fact ABOUT the session and
|
|
10
|
+
* rides the out-of-band liveness frame; it never takes a chain leaf. The only trigger left here is
|
|
11
|
+
* an inbound session REQUEST.
|
|
12
|
+
*
|
|
13
|
+
* "Attended" means a live client has claimed the agent with `cello_use_agent`. Several sessions
|
|
14
|
+
* attending one agent at once is legitimate and permanent — co-attendance, not exclusivity — which
|
|
15
|
+
* is why the COUNT is kept separate from the boolean and both read the same `currentAgent` map the
|
|
16
|
+
* doorbell routes on. They cannot disagree about who is present.
|
|
17
|
+
*
|
|
18
|
+
* ⚠️ IT PLACES ITS OWN LEAVES. The greeting is content: it is sent, it takes a leaf and it records
|
|
19
|
+
* a transcript row, exactly as a voicemail outgoing message belongs on the tape. So this file stays
|
|
20
|
+
* in the seal call-site enforcer's CALLERS list — that guard stops SCANNING a file that leaves the
|
|
21
|
+
* list rather than going red.
|
|
22
|
+
*/
|
|
23
|
+
import { randomUUID } from "node:crypto";
|
|
24
|
+
import { countAttendance } from "./co-attendance.js";
|
|
25
|
+
import { markAsAutoReply, systemAwayText } from "./away-detection.js";
|
|
26
|
+
import { LEAF_KIND_MSG } from "./session-relay-client.js";
|
|
27
|
+
import { sentAuthorship } from "./session-content-handlers.js";
|
|
28
|
+
import { extractErrorMessage } from "./error-message.js";
|
|
29
|
+
export function createAttendanceWiring(deps) {
|
|
30
|
+
const { logger, sessionNodeManager, perConnectionState, securityGateway } = deps;
|
|
31
|
+
// M8C-AWAY-1: away response — an unattended Primary auto-answers session requests
|
|
32
|
+
// with the default transparent away text and queues them (the DoD's own mandated default).
|
|
33
|
+
// CORE ships now; the operator-configurable custom-text / opaque-privacy-mode SWITCH is PARKED
|
|
34
|
+
// on M9-CFG-001, journaled as D15 (M8C-DECISIONS.md, mirrors D14) — a genuine per-agent operator
|
|
35
|
+
// preference that needs the deferred config store, whereas transparent is already the correct,
|
|
36
|
+
// non-fake default this unit must ship regardless.
|
|
37
|
+
// "Attended" per the design doc (2026-07-01 command-surface discussion, Agent State Model):
|
|
38
|
+
// Primary + a live client session has claimed the agent via use_agent. Scanning
|
|
39
|
+
// perConnectionState is cheap (a handful of connections) and needs no separate tracked state.
|
|
40
|
+
function isAttended(agentName) {
|
|
41
|
+
for (const s of perConnectionState.values())
|
|
42
|
+
if (s.currentAgent === agentName)
|
|
43
|
+
return true;
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
// DOD-COATTEND-VISIBLE-1: the COUNT, deliberately kept separate from the boolean above. Several
|
|
47
|
+
// sessions attending one agent is legitimate and permanent (co-attendance, not exclusivity — spec
|
|
48
|
+
// §3); what was missing is that nobody was ever TOLD. `isAttended` is left byte-identical because
|
|
49
|
+
// M8C-AWAY-1's auto-ack suppression hangs off its early return, and both read the same
|
|
50
|
+
// `currentAgent` map the doorbell routes on, so the count can never disagree with who gets woken.
|
|
51
|
+
function attendanceCount(agentName) {
|
|
52
|
+
return countAttendance(perConnectionState, agentName);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* In-flight background seal ceremonies — `DOD-M15-CLOSEWAIT-1` review MEDIUM-6.
|
|
56
|
+
*
|
|
57
|
+
* The close now answers at commitment and finishes the ceremony detached. Without this the tail
|
|
58
|
+
* was the ONE background task `stop()` could cut at an arbitrary point, while it cancels or awaits
|
|
59
|
+
* every other one.
|
|
60
|
+
*/
|
|
61
|
+
const backgroundSeals = new Set();
|
|
62
|
+
// Coalescing: one away ack per (agent, session, kind) per away period — cleared when the agent
|
|
63
|
+
// becomes attended again (cello_use_agent) so the NEXT away period gets a fresh ack rather than
|
|
64
|
+
// staying silent forever. Known imprecision (journaled, not silent): clearing fires on ANY
|
|
65
|
+
// use_agent selecting this name, even if another connection kept it attended throughout — an
|
|
66
|
+
// edge case, not a correctness gap in the core "queue + one calm ack while genuinely away" promise.
|
|
67
|
+
const awayAckSent = new Set();
|
|
68
|
+
/**
|
|
69
|
+
* DOD-M15-AWAYSCOPE-1 — THIS ANSWERS A CALL. It does not answer a conversation.
|
|
70
|
+
*
|
|
71
|
+
* There is one caller left, the inbound session-REQUEST path, and the `kind` parameter is gone
|
|
72
|
+
* rather than defaulted: a second value is what let this function be reached from an existing
|
|
73
|
+
* session, and a default would leave that call compiling.
|
|
74
|
+
*/
|
|
75
|
+
/**
|
|
76
|
+
* "WE GREETED THEM" — DOD-INBOX-ONESHOT-1, NOT the same fact as `dedupKey`, which is set before the
|
|
77
|
+
* send and stays set on the screened-out branch where nothing reached the caller. The one-shot
|
|
78
|
+
* closes a visit for having told the caller the rule, so it keys off a greeting that went out; a
|
|
79
|
+
* queued one counts — witnessed, leafed, on its way.
|
|
80
|
+
*/
|
|
81
|
+
const markGreeted = (agentName, sessionId) => void awayAckSent.add(`${agentName}:${sessionId}:greeted`);
|
|
82
|
+
async function sendAwayResponse(agentName, sessionId) {
|
|
83
|
+
if (isAttended(agentName))
|
|
84
|
+
return;
|
|
85
|
+
/**
|
|
86
|
+
* The log keeps saying which kind it was, and that is deliberate now that there is only one.
|
|
87
|
+
* The live failure this order closes is READ OFF a daemon log line — `kind: "message"` at
|
|
88
|
+
* 16:13:28.804 is the whole tell — so a log that still names the kind is what makes the absence
|
|
89
|
+
* of the deleted one provable from a production log rather than only from the source.
|
|
90
|
+
*/
|
|
91
|
+
const kind = "request";
|
|
92
|
+
const dedupKey = `${agentName}:${sessionId}:${kind}`;
|
|
93
|
+
if (awayAckSent.has(dedupKey))
|
|
94
|
+
return;
|
|
95
|
+
const record = sessionNodeManager.getSessionRecord(agentName, sessionId);
|
|
96
|
+
if (!record || record.status !== "active")
|
|
97
|
+
return;
|
|
98
|
+
// The inbound accept path does NOT auto-add the sender: an unattended stranger STAYS unknown
|
|
99
|
+
// across every inbound interaction. Promotion requires operator engagement — an outbound
|
|
100
|
+
// initiate, a cello_send reply, or an explicit contact add. Nothing depends on its ordering.
|
|
101
|
+
const isKnown = sessionNodeManager.isKnown(agentName, record.counterparty_pubkey);
|
|
102
|
+
awayAckSent.add(dedupKey); // guard BEFORE the async send — concurrent arrivals must not double-ack
|
|
103
|
+
try {
|
|
104
|
+
// DOD-AWAY-TIER-1: resolve most-specific-first — per-contact away_message → per-tier away
|
|
105
|
+
// (settings) → agent default (settings) → the system default (code, per kind). Total.
|
|
106
|
+
// DOD-M12B-AWAY-MARK-1: THE choke point. Every away reply this daemon sends passes through
|
|
107
|
+
// this one expression — the per-contact message, the per-tier message, the agent default, the
|
|
108
|
+
// system default and the stranger ack — so marking here is what makes "an operator's
|
|
109
|
+
// CONFIGURED away message is indistinguishable from a person" go away, which is the half
|
|
110
|
+
// exact-text matching could not reach by construction. markAsAutoReply is idempotent, so the
|
|
111
|
+
// system defaults (already marked at their source) do not pick up a second token.
|
|
112
|
+
const awayText = sessionNodeManager.resolveAwayMessage(agentName, record.counterparty_pubkey)
|
|
113
|
+
?? systemAwayText(agentName, isKnown);
|
|
114
|
+
// AWAYSALT-1 review MEDIUM-3: the salt wait widens the window in which BOTH acks are computed
|
|
115
|
+
// before either is a leaf, so the tree check below would pass both through. Claim the TEXT first.
|
|
116
|
+
const txtKey = `${agentName}:${sessionId}:txt:${awayText}`;
|
|
117
|
+
if (awayAckSent.has(txtKey)) {
|
|
118
|
+
logger.info("session.away.response.suppressed_duplicate", { agentName, sessionId, kind, reason: "identical_ack_already_in_flight" });
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
awayAckSent.add(txtKey);
|
|
122
|
+
const draftBytes = new TextEncoder().encode(awayText);
|
|
123
|
+
// SI (AWAY-TIER-1): an away message is now operator-configurable, i.e. an outbound DISCLOSURE.
|
|
124
|
+
// Screen it on the outbound path like any content — it does NOT bypass the gateway. A block/warn
|
|
125
|
+
// verdict means it is not sent (the dedup guard stays set — one screen per away period, no spam);
|
|
126
|
+
// a redact verdict sends the ALTERED bytes.
|
|
127
|
+
const awayVerdict = await securityGateway.screenOutbound(draftBytes, {
|
|
128
|
+
direction: "outbound", agentName, sessionId, correlationId: randomUUID(),
|
|
129
|
+
});
|
|
130
|
+
if (awayVerdict.disposition === "block" || awayVerdict.disposition === "warn") {
|
|
131
|
+
logger.info("session.away.response.screened_out", { agentName, sessionId, kind, disposition: awayVerdict.disposition });
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (awayVerdict.disposition === "redact" && awayVerdict.content === undefined) {
|
|
135
|
+
logger.error("session.away.response.redact_without_content", { agentName, sessionId, kind });
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
// DOD-M12B-AWAY-MARK-1: mark AFTER screening, never before. A redact verdict REPLACES the
|
|
139
|
+
// bytes, and marking the draft would let that replacement silently strip the marker — an away
|
|
140
|
+
// reply back on the wire indistinguishable from a person, with no log line saying so. Marking
|
|
141
|
+
// here also means the gateway screens the OPERATOR-CONFIGURED message — the only unmarked
|
|
142
|
+
// input — rather than a daemon token bolted to its front. Every system default, the stranger
|
|
143
|
+
// ack included since AWAYLEAF-1, is marked at source; markAsAutoReply is idempotent.
|
|
144
|
+
const screenedBytes = awayVerdict.disposition === "redact" && awayVerdict.content !== undefined
|
|
145
|
+
? new Uint8Array(awayVerdict.content)
|
|
146
|
+
: draftBytes;
|
|
147
|
+
const contentBytes = new TextEncoder().encode(markAsAutoReply(new TextDecoder().decode(screenedBytes)));
|
|
148
|
+
// AWAYSALT-1 — BEFORE hashing: unsalted here closes salt adoption for the whole session, and every later message from the peer is refused. See `markSaltPending`.
|
|
149
|
+
sessionNodeManager.expectSaltAgreement(agentName, sessionId);
|
|
150
|
+
// B2b: one decision point for the hash AND its algorithm — see `contentHashForSession`.
|
|
151
|
+
const away = await sessionNodeManager.contentHashForSession(agentName, sessionId, contentBytes);
|
|
152
|
+
// DOD-M15-AWAYLEAF-1 — the DURABLE half of the no-duplicate-leaf rule; `txtKey` is the in-flight
|
|
153
|
+
// half. Both acks carry the same bytes whenever the away text does not vary by kind, and a leaf
|
|
154
|
+
// only one side holds is never co-signed: measured on 9b4d89f9, 4 against 3, `leaf_count_mismatch`.
|
|
155
|
+
const awayHashHex = Buffer.from(away.hash).toString("hex");
|
|
156
|
+
if (sessionNodeManager.getSessionTree(agentName, sessionId).indexOfHash(awayHashHex) >= 0) {
|
|
157
|
+
logger.info("session.away.response.suppressed_duplicate", {
|
|
158
|
+
agentName, sessionId, kind, contentHashHex: awayHashHex, reason: "identical_leaf_already_in_this_session",
|
|
159
|
+
impact: "no second ack is sent; two leaves with one content hash leave this session unable to seal",
|
|
160
|
+
});
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const sendResult = await sessionNodeManager.sendContent(agentName, sessionId, contentBytes, new Uint8Array(away.hash), randomUUID(), LEAF_KIND_MSG, away.alg);
|
|
164
|
+
if (!sendResult.ok && !sendResult.durable) {
|
|
165
|
+
// ⚠️ NO TRIGGER REACHES THIS RETRY TODAY, and the comment used to promise one.
|
|
166
|
+
//
|
|
167
|
+
// It cleared the guard so "the next inbound arrival retries the ack". The next inbound
|
|
168
|
+
// arrival was a MESSAGE, and DOD-M15-AWAYSCOPE-1 deleted that trigger. A session request
|
|
169
|
+
// arrives once per session, so nothing re-enters `sendAwayResponse` for this session and the
|
|
170
|
+
// greeting is simply lost — the consequence that order accepted, said here in the code
|
|
171
|
+
// rather than only in its commit message.
|
|
172
|
+
//
|
|
173
|
+
// The clears stay because they are correct and free the moment a re-trigger exists (a
|
|
174
|
+
// reconnect sweep, or the attendance work in units 2-4). Both guards, because AWAYLEAF-1's
|
|
175
|
+
// in-flight claim would otherwise suppress that retry as its own duplicate.
|
|
176
|
+
awayAckSent.delete(dedupKey);
|
|
177
|
+
awayAckSent.delete(txtKey);
|
|
178
|
+
// M12-P13: this branch now means the reply is GONE, not merely late (the queued case is
|
|
179
|
+
// handled below), so it is an error and it says what the consequence is. It was a bare warn
|
|
180
|
+
// when it fired live on 2026-08-05 and read as routine churn.
|
|
181
|
+
logger.error("session.away.response.failed", {
|
|
182
|
+
agentName, sessionId, kind, reason: sendResult.reason, cause: sendResult.cause,
|
|
183
|
+
impact: "the away reply is lost and was NOT queued — the counterparty gets no acknowledgement",
|
|
184
|
+
});
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
const contentHashHex = Buffer.from(away.hash).toString("hex");
|
|
188
|
+
if (!sendResult.ok) {
|
|
189
|
+
// M12-P13 (found live 2026-08-05, M12 Entry 89): the reply is durably queued and already
|
|
190
|
+
// owns the sequence the relay witnessed for it, so its leaf MUST be committed here. Without
|
|
191
|
+
// it this side's tree stays one short of that sequence, and since `nextExpected` is the tree
|
|
192
|
+
// size, every message the counterparty sends afterwards is held behind a gap nothing can
|
|
193
|
+
// fill. That is exactly how the receiver stranded its own session at sequence 0.
|
|
194
|
+
//
|
|
195
|
+
// The dedup guard deliberately STAYS SET: a queued reply is coming, and re-sending on the
|
|
196
|
+
// next arrival would mint a second greeting at a second sequence.
|
|
197
|
+
// DOD-M12B-INDEX-1: the queued reply owns the position the relay witnessed for it, and
|
|
198
|
+
// that is where its leaf goes.
|
|
199
|
+
// Witnessed and SIGNED — only the direct hand-off failed — so the proof exists and must
|
|
200
|
+
// reach the leaf. This is the site `sentAuthorship`'s own comment calls dead-by-construction
|
|
201
|
+
// under an `ok`-gated read; the same reasoning applies to the leaf, not just the row.
|
|
202
|
+
const placedQueued = sessionNodeManager.placeOwnLeaf(agentName, sessionId, contentHashHex, contentBytes, sendResult.sequenceNumber, randomUUID(), "msg", sentAuthorship(sendResult));
|
|
203
|
+
if (placedQueued.placed) {
|
|
204
|
+
sessionNodeManager.recordTranscriptMessage(agentName, sessionId, placedQueued.leafIndex, "sent", contentBytes, randomUUID(), sentAuthorship(sendResult));
|
|
205
|
+
}
|
|
206
|
+
logger.info("session.away.response.deferred", {
|
|
207
|
+
agentName, sessionId, kind, isKnown,
|
|
208
|
+
sequenceNumber: placedQueued.placed ? placedQueued.leafIndex : placedQueued.heldAt,
|
|
209
|
+
committed: placedQueued.placed,
|
|
210
|
+
reason: sendResult.reason, cause: sendResult.cause,
|
|
211
|
+
});
|
|
212
|
+
markGreeted(agentName, sessionId);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
// DOD-M12B-INDEX-1: the away responder fires while inbound is still arriving, so it is the
|
|
216
|
+
// path most likely to have a gap open under it — exactly where a tail append does damage.
|
|
217
|
+
const placedReply = sessionNodeManager.placeOwnLeaf(agentName, sessionId, contentHashHex, contentBytes, sendResult.sequenceNumber, randomUUID(), "msg", sentAuthorship(sendResult));
|
|
218
|
+
if (placedReply.placed) {
|
|
219
|
+
sessionNodeManager.recordTranscriptMessage(agentName, sessionId, placedReply.leafIndex, "sent", contentBytes, randomUUID(), sentAuthorship(sendResult));
|
|
220
|
+
}
|
|
221
|
+
logger.info("session.away.response.sent", {
|
|
222
|
+
agentName, sessionId, kind, isKnown,
|
|
223
|
+
sequenceNumber: placedReply.placed ? placedReply.leafIndex : placedReply.heldAt,
|
|
224
|
+
committed: placedReply.placed,
|
|
225
|
+
});
|
|
226
|
+
markGreeted(agentName, sessionId);
|
|
227
|
+
}
|
|
228
|
+
catch (err) {
|
|
229
|
+
// Same as above: the clear is correct and currently unreachable — nothing re-enters this
|
|
230
|
+
// function for a session whose request has already been answered. `txtKey` is deliberately
|
|
231
|
+
// not cleared here and was not before; moot while nothing retries, and noted so the asymmetry
|
|
232
|
+
// is not read as intent by whoever restores a trigger.
|
|
233
|
+
awayAckSent.delete(dedupKey);
|
|
234
|
+
// A DISTINCT NAME, and a distinct LEVEL. This threw somewhere unexpected; the branch above is
|
|
235
|
+
// a send that reported failure. Two different causes with two different remedies were sharing
|
|
236
|
+
// one event name at two levels, so a log reader matching on the name got whichever fired.
|
|
237
|
+
logger.error("session.away.response.threw", {
|
|
238
|
+
agentName, sessionId, kind, error: extractErrorMessage(err),
|
|
239
|
+
impact: "the away greeting was never sent and this caller gets no acknowledgement at all",
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// `isAttended` is NOT returned: its only caller in the repo is `sendAwayResponse`, which moved
|
|
244
|
+
// with it. Returning it would make a private local reachable through an exported factory for no
|
|
245
|
+
// consumer — new surface, which Rule D forbids.
|
|
246
|
+
return { attendanceCount, sendAwayResponse, backgroundSeals, awayAckSent };
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=attendance-wiring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attendance-wiring.js","sourceRoot":"","sources":["../src/attendance-wiring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAczD,MAAM,UAAU,sBAAsB,CAAC,IAA0B;IAC/D,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAEjF,kFAAkF;IAClF,2FAA2F;IAC3F,+FAA+F;IAC/F,iGAAiG;IACjG,+FAA+F;IAC/F,mDAAmD;IACnD,4FAA4F;IAC5F,gFAAgF;IAChF,8FAA8F;IAC9F,SAAS,UAAU,CAAC,SAAiB;QACnC,KAAK,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;QAC3F,OAAO,KAAK,CAAC;IACf,CAAC;IACD,gGAAgG;IAChG,kGAAkG;IAClG,kGAAkG;IAClG,uFAAuF;IACvF,kGAAkG;IAClG,SAAS,eAAe,CAAC,SAAiB;QACxC,OAAO,eAAe,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IACD;;;;;;OAMG;IACH,MAAM,eAAe,GAAG,IAAI,GAAG,EAAoB,CAAC;IACpD,+FAA+F;IAC/F,gGAAgG;IAChG,2FAA2F;IAC3F,6FAA6F;IAC7F,oGAAoG;IACpG,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC;;;;;;OAMG;IACH;;;;;OAKG;IACH,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAQ,EAAE,CAAC,KAAK,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,SAAS,UAAU,CAAC,CAAC;IAE9H,KAAK,UAAU,gBAAgB,CAAC,SAAiB,EAAE,SAAiB;QAClE,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO;QAClC;;;;;WAKG;QACH,MAAM,IAAI,GAAG,SAAkB,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,SAAS,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACrD,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;QACtC,MAAM,MAAM,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;QAClD,6FAA6F;QAC7F,yFAAyF;QACzF,6FAA6F;QAC7F,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAClF,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,wEAAwE;QACnG,IAAI,CAAC;YACH,0FAA0F;YAC1F,sFAAsF;YACtF,2FAA2F;YAC3F,8FAA8F;YAC9F,qFAAqF;YACrF,yFAAyF;YACzF,6FAA6F;YAC7F,kFAAkF;YAClF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC;mBACxF,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACxC,8FAA8F;YAC9F,kGAAkG;YAClG,MAAM,MAAM,GAAG,GAAG,SAAS,IAAI,SAAS,QAAQ,QAAQ,EAAE,CAAC;YAC3D,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC9K,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxB,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtD,+FAA+F;YAC/F,iGAAiG;YACjG,kGAAkG;YAClG,4CAA4C;YAC5C,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,UAAU,EAAE;gBACnE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE;aACzE,CAAC,CAAC;YACH,IAAI,WAAW,CAAC,WAAW,KAAK,OAAO,IAAI,WAAW,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;gBAC9E,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;gBACxH,OAAO;YACT,CAAC;YACD,IAAI,WAAW,CAAC,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC9E,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7F,OAAO;YACT,CAAC;YACD,0FAA0F;YAC1F,8FAA8F;YAC9F,8FAA8F;YAC9F,0FAA0F;YAC1F,6FAA6F;YAC7F,qFAAqF;YACrF,MAAM,aAAa,GAAG,WAAW,CAAC,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,OAAO,KAAK,SAAS;gBAC7F,CAAC,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC;gBACrC,CAAC,CAAC,UAAU,CAAC;YACf,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAC3C,eAAe,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CACzD,CAAC;YACF,kKAAkK;YAClK,kBAAkB,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC7D,wFAAwF;YACxF,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YAChG,iGAAiG;YACjG,gGAAgG;YAChG,oGAAoG;YACpG,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3D,IAAI,kBAAkB,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1F,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE;oBACxD,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,wCAAwC;oBACzG,MAAM,EAAE,2FAA2F;iBACpG,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9J,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC1C,+EAA+E;gBAC/E,EAAE;gBACF,uFAAuF;gBACvF,yFAAyF;gBACzF,6FAA6F;gBAC7F,uFAAuF;gBACvF,0CAA0C;gBAC1C,EAAE;gBACF,sFAAsF;gBACtF,2FAA2F;gBAC3F,4EAA4E;gBAC5E,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACzD,wFAAwF;gBACxF,4FAA4F;gBAC5F,8DAA8D;gBAC9D,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;oBAC3C,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK;oBAC9E,MAAM,EAAE,sFAAsF;iBAC/F,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACnB,yFAAyF;gBACzF,4FAA4F;gBAC5F,6FAA6F;gBAC7F,yFAAyF;gBACzF,iFAAiF;gBACjF,EAAE;gBACF,0FAA0F;gBAC1F,kEAAkE;gBAClE,uFAAuF;gBACvF,+BAA+B;gBAC/B,wFAAwF;gBACxF,6FAA6F;gBAC7F,sFAAsF;gBACtF,MAAM,YAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,CAAC,cAAc,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrL,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;oBACxB,kBAAkB,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC3J,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE;oBAC5C,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO;oBACnC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM;oBAClF,SAAS,EAAE,YAAY,CAAC,MAAM;oBAC9B,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK;iBACnD,CAAC,CAAC;gBACL,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,2FAA2F;YAC3F,0FAA0F;YAC1F,MAAM,WAAW,GAAG,kBAAkB,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,CAAC,cAAc,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;YACpL,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBACvB,kBAAkB,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;YAC1J,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;gBACxC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO;gBACnC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM;gBAC/E,SAAS,EAAE,WAAW,CAAC,MAAM;aAC9B,CAAC,CAAC;YACH,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEpC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,yFAAyF;YACzF,2FAA2F;YAC3F,8FAA8F;YAC9F,uDAAuD;YACvD,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,8FAA8F;YAC9F,8FAA8F;YAC9F,0FAA0F;YAC1F,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;gBAC1C,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC;gBAC3D,MAAM,EAAE,iFAAiF;aAC1F,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,+FAA+F;IAC/F,gGAAgG;IAChG,gDAAgD;IAChD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What an endorsement body may contain — checked HERE, before it is signed and sent.
|
|
3
|
+
*
|
|
4
|
+
* ─── WHY THIS EXISTS ON THE CLIENT AT ALL ─────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* The portal is the authority and stays the authority: a client can be edited, so anything only the
|
|
7
|
+
* client enforces is not enforced. This is not enforcement. It is the difference between learning
|
|
8
|
+
* the rule now and learning it after a round trip that answers `scanner_charset` with no message.
|
|
9
|
+
*
|
|
10
|
+
* That round trip really happened (047-ENDORSETEXT): a 926-character endorsement was rejected for
|
|
11
|
+
* its two paragraph breaks, the refusal named a category rather than a character, and the blame
|
|
12
|
+
* landed on the punctuation for an hour.
|
|
13
|
+
*
|
|
14
|
+
* ─── THE RULE IS DEFINED IN TWO REPOSITORIES AND THAT IS A HAZARD ─────────────────────────────
|
|
15
|
+
*
|
|
16
|
+
* The portal's copy is `DISALLOWED_CHARSET` / `INTAKE_LENGTH_CAP` in
|
|
17
|
+
* `cello-portal/src/server/trust/submission-scan.ts`. They must agree, and nothing at build time
|
|
18
|
+
* can check that across a repo boundary — the same skew shape as `trust_signal_drain_complete`.
|
|
19
|
+
*
|
|
20
|
+
* **So each side pins the other in a test.** `attestation-body.test.ts` asserts these exact values
|
|
21
|
+
* and names its twin; the portal's `m10b-scan-1-submission-scan.test.ts` does the same. Change one
|
|
22
|
+
* without the other and a test fails rather than an operator discovering it.
|
|
23
|
+
*/
|
|
24
|
+
/** Characters below U+0080 that may not appear. Everything above passes — non-English bodies are
|
|
25
|
+
* legal and this rule must never become an ASCII gate. `\n` is allowed; a tab is not. */
|
|
26
|
+
export declare const ATTESTATION_DISALLOWED_CHARSET: RegExp;
|
|
27
|
+
/** CHARACTERS, not bytes: a byte cap gives a Chinese endorsement a third of the room. */
|
|
28
|
+
export declare const ATTESTATION_LENGTH_CAP = 500;
|
|
29
|
+
/**
|
|
30
|
+
* Normalise line endings BEFORE signing, because this is the only place the text can change and
|
|
31
|
+
* still be the text that was signed. The portal cannot do it — the body arrives inside a signed
|
|
32
|
+
* submission, so rewriting it there would invalidate the signature that makes it attributable.
|
|
33
|
+
*/
|
|
34
|
+
export declare function normalizeAttestationBody(body: string): string;
|
|
35
|
+
export interface BodyRefusal {
|
|
36
|
+
reason: "body_too_long" | "body_disallowed_character";
|
|
37
|
+
guidance: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Returns a refusal, or null when the body is acceptable.
|
|
41
|
+
*
|
|
42
|
+
* Every guidance string says three things, in this order: that it was NOT sent, what exactly is
|
|
43
|
+
* wrong, and what to do. The first matters most — an operator who cannot tell whether a copy is in
|
|
44
|
+
* flight will either resend a duplicate or wait for something that never left.
|
|
45
|
+
*/
|
|
46
|
+
export declare function checkAttestationBody(body: string): BodyRefusal | null;
|
|
47
|
+
//# sourceMappingURL=attestation-body.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attestation-body.d.ts","sourceRoot":"","sources":["../src/attestation-body.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;0FAC0F;AAC1F,eAAO,MAAM,8BAA8B,QAA+B,CAAC;AAE3E,yFAAyF;AACzF,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,eAAe,GAAG,2BAA2B,CAAC;IACtD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA6BrE"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What an endorsement body may contain — checked HERE, before it is signed and sent.
|
|
3
|
+
*
|
|
4
|
+
* ─── WHY THIS EXISTS ON THE CLIENT AT ALL ─────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* The portal is the authority and stays the authority: a client can be edited, so anything only the
|
|
7
|
+
* client enforces is not enforced. This is not enforcement. It is the difference between learning
|
|
8
|
+
* the rule now and learning it after a round trip that answers `scanner_charset` with no message.
|
|
9
|
+
*
|
|
10
|
+
* That round trip really happened (047-ENDORSETEXT): a 926-character endorsement was rejected for
|
|
11
|
+
* its two paragraph breaks, the refusal named a category rather than a character, and the blame
|
|
12
|
+
* landed on the punctuation for an hour.
|
|
13
|
+
*
|
|
14
|
+
* ─── THE RULE IS DEFINED IN TWO REPOSITORIES AND THAT IS A HAZARD ─────────────────────────────
|
|
15
|
+
*
|
|
16
|
+
* The portal's copy is `DISALLOWED_CHARSET` / `INTAKE_LENGTH_CAP` in
|
|
17
|
+
* `cello-portal/src/server/trust/submission-scan.ts`. They must agree, and nothing at build time
|
|
18
|
+
* can check that across a repo boundary — the same skew shape as `trust_signal_drain_complete`.
|
|
19
|
+
*
|
|
20
|
+
* **So each side pins the other in a test.** `attestation-body.test.ts` asserts these exact values
|
|
21
|
+
* and names its twin; the portal's `m10b-scan-1-submission-scan.test.ts` does the same. Change one
|
|
22
|
+
* without the other and a test fails rather than an operator discovering it.
|
|
23
|
+
*/
|
|
24
|
+
/** Characters below U+0080 that may not appear. Everything above passes — non-English bodies are
|
|
25
|
+
* legal and this rule must never become an ASCII gate. `\n` is allowed; a tab is not. */
|
|
26
|
+
export const ATTESTATION_DISALLOWED_CHARSET = /[\x00-\x09\x0b-\x1f\x7f<>]/;
|
|
27
|
+
/** CHARACTERS, not bytes: a byte cap gives a Chinese endorsement a third of the room. */
|
|
28
|
+
export const ATTESTATION_LENGTH_CAP = 500;
|
|
29
|
+
/**
|
|
30
|
+
* Normalise line endings BEFORE signing, because this is the only place the text can change and
|
|
31
|
+
* still be the text that was signed. The portal cannot do it — the body arrives inside a signed
|
|
32
|
+
* submission, so rewriting it there would invalidate the signature that makes it attributable.
|
|
33
|
+
*/
|
|
34
|
+
export function normalizeAttestationBody(body) {
|
|
35
|
+
return body.replace(/\r\n?/g, "\n").trim();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Returns a refusal, or null when the body is acceptable.
|
|
39
|
+
*
|
|
40
|
+
* Every guidance string says three things, in this order: that it was NOT sent, what exactly is
|
|
41
|
+
* wrong, and what to do. The first matters most — an operator who cannot tell whether a copy is in
|
|
42
|
+
* flight will either resend a duplicate or wait for something that never left.
|
|
43
|
+
*/
|
|
44
|
+
export function checkAttestationBody(body) {
|
|
45
|
+
if (body.length > ATTESTATION_LENGTH_CAP) {
|
|
46
|
+
return {
|
|
47
|
+
reason: "body_too_long",
|
|
48
|
+
guidance: `Not sent — nothing left this machine. The body is ${body.length} characters and the limit ` +
|
|
49
|
+
`is ${ATTESTATION_LENGTH_CAP}. An endorsement is a testimonial, not a document: say the one ` +
|
|
50
|
+
`thing you would want a stranger to know, and run cello_attestations_issue again.`,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const index = body.search(ATTESTATION_DISALLOWED_CHARSET);
|
|
54
|
+
if (index >= 0) {
|
|
55
|
+
const code = body.charCodeAt(index);
|
|
56
|
+
const named = code === 0x09 ? "a tab" :
|
|
57
|
+
code === 0x0d ? "a carriage return" :
|
|
58
|
+
code === 0x3c ? "a '<'" :
|
|
59
|
+
code === 0x3e ? "a '>'" :
|
|
60
|
+
`U+${code.toString(16).toUpperCase().padStart(4, "0")}`;
|
|
61
|
+
return {
|
|
62
|
+
reason: "body_disallowed_character",
|
|
63
|
+
guidance: `Not sent — nothing left this machine. The body contains ${named} at position ${index}. ` +
|
|
64
|
+
`Line breaks are fine; other control characters and angle brackets are not, because they ` +
|
|
65
|
+
`hide content from a reader while a parser still sees it. Remove it and run ` +
|
|
66
|
+
`cello_attestations_issue again.`,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=attestation-body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attestation-body.js","sourceRoot":"","sources":["../src/attestation-body.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;0FAC0F;AAC1F,MAAM,CAAC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAE3E,yFAAyF;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACnD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC;AAOD;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,IAAI,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;QACzC,OAAO;YACL,MAAM,EAAE,eAAe;YACvB,QAAQ,EACN,qDAAqD,IAAI,CAAC,MAAM,4BAA4B;gBAC5F,MAAM,sBAAsB,iEAAiE;gBAC7F,kFAAkF;SACrF,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;IAC1D,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,GACT,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACzB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;gBACrC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBACzB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;wBACzB,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO;YACL,MAAM,EAAE,2BAA2B;YACnC,QAAQ,EACN,2DAA2D,KAAK,gBAAgB,KAAK,IAAI;gBACzF,0FAA0F;gBAC1F,6EAA6E;gBAC7E,iCAAiC;SACpC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CELLO Daemon — WHO SENT THIS, AND DID THEY SEE WHAT THEY CLAIM
|
|
3
|
+
*
|
|
4
|
+
* Split out of `session-node-manager.ts` by 036-GODFILE, Part 1. Two questions about one signed
|
|
5
|
+
* blob: did this really come from this conversation's counterparty, and is what they say they saw
|
|
6
|
+
* actually what we sent. Everything is moved verbatim — the comments are the asset and several of
|
|
7
|
+
* them record a defect that came back once already.
|
|
8
|
+
*
|
|
9
|
+
* ⚠️ THE ORDER OF THE CHECKS IS ITSELF A SECURITY PROPERTY — decode → signature → signer → what the
|
|
10
|
+
* proof is about. Everything after the signer answers `unusable`, which refuses the message and
|
|
11
|
+
* leaves the session alive; signature and signer answer `refuted`, which FREEZES it. A check that
|
|
12
|
+
* can answer before the signature is verified hands a peer a switch for choosing the softer
|
|
13
|
+
* outcome. Do not reorder these, and do not add a cheap early check above the signature.
|
|
14
|
+
*
|
|
15
|
+
* ⚠️ THIS CLASS OWNS ITS OWN STATE, which is what made it a seam rather than a split.
|
|
16
|
+
* `#receivedFromCounterparty` and `#lastFromCounterparty` are read and written nowhere else in the
|
|
17
|
+
* daemon, so they moved with the code that maintains them. Everything else it needs arrives through
|
|
18
|
+
* `AuthorshipContext` — a narrow, explicit list. No field of the manager was widened to make this
|
|
19
|
+
* possible, and the manager is not passed in as a whole.
|
|
20
|
+
*/
|
|
21
|
+
import type { Logger, SessionRecord } from "./types.js";
|
|
22
|
+
import type { SessionTree } from "./session-tree.js";
|
|
23
|
+
import { type AuthorshipVerdict } from "./session-node-types.js";
|
|
24
|
+
/**
|
|
25
|
+
* Everything the verifier needs from the manager, stated explicitly rather than handed the manager
|
|
26
|
+
* itself. If this list ever grows long, that is the signal the seam has moved — not a reason to
|
|
27
|
+
* widen it.
|
|
28
|
+
*/
|
|
29
|
+
export interface AuthorshipContext {
|
|
30
|
+
readonly logger: Logger;
|
|
31
|
+
sessionKey(agentName: string, sessionId: string): string;
|
|
32
|
+
getSessionRecord(agentName: string, sessionId: string): SessionRecord | null;
|
|
33
|
+
getSessionTree(agentName: string, sessionId: string): SessionTree;
|
|
34
|
+
isSessionDiverged(agentName: string, sessionId: string): boolean;
|
|
35
|
+
sessionGenesisPrevRoot(agentName: string, sessionId: string): Uint8Array | undefined;
|
|
36
|
+
/** The relay's session id for this session, when a live node holds one. */
|
|
37
|
+
relaySessionIdBytes(agentName: string, sessionId: string): Uint8Array | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Content received and verified but not yet appended, because it sits behind an ordering gap.
|
|
40
|
+
*
|
|
41
|
+
* ⚠️ RETURNS THE MAP, not a flattened list, and that is deliberate: the call site's expression
|
|
42
|
+
* (`[...heldHere.values()].some(...)`) moves across unchanged. Handing back a pre-computed array
|
|
43
|
+
* of hashes would read as a tidy-up and would be a behaviour change wearing a refactor's clothes.
|
|
44
|
+
*/
|
|
45
|
+
heldContentFor(agentName: string, sessionId: string): ReadonlyMap<number, {
|
|
46
|
+
contentHashHex: string;
|
|
47
|
+
}> | undefined;
|
|
48
|
+
}
|
|
49
|
+
export declare class AuthorshipVerifier {
|
|
50
|
+
#private;
|
|
51
|
+
constructor(ctx: AuthorshipContext);
|
|
52
|
+
/**
|
|
53
|
+
* `DOD-M15-AUTHORSHIP-ABSENT-1` — DID THIS SENDER PROVE THEY WROTE THIS MESSAGE?
|
|
54
|
+
*
|
|
55
|
+
* The one place that answers it, for both callers, so "checked" cannot mean two different things
|
|
56
|
+
* in two places. It takes the signature as an ARGUMENT rather than digging it out of a structure,
|
|
57
|
+
* which is the whole of the fix: the signature used to be read only from `structure2_cbor` — the
|
|
58
|
+
* RELAY's record — so a receiver could not check authorship without a relay record, and refusing
|
|
59
|
+
* on its absence would have made the relay a precondition for reading mail. The content frame now
|
|
60
|
+
* carries the signature beside the bytes it signs, exactly as `hash_submit` always has, and this
|
|
61
|
+
* method does not care which of the two handed it over.
|
|
62
|
+
*
|
|
63
|
+
* It VERIFIES and it does not LOG. The severity of each verdict differs by caller — the content
|
|
64
|
+
* frame refuses an `unusable`, the park path shrugs at one — and a method that logged its own
|
|
65
|
+
* conclusion would either report a refusal that did not happen or stay silent on one that did.
|
|
66
|
+
*/
|
|
67
|
+
verifyAuthorshipClaim(agentName: string, sessionId: string, structure1Cbor: Uint8Array, senderSignature: Uint8Array, contentHash: Uint8Array): AuthorshipVerdict;
|
|
68
|
+
/**
|
|
69
|
+
* DOD-M15-SELFCHAIN-GAP-1 — has this session's self-chain gap been open longer than the grace?
|
|
70
|
+
*
|
|
71
|
+
* `false` also when there is no gap at all, which is the ordinary answer. The caller freezes on
|
|
72
|
+
* `true` and defers on `false`; the frame is refused either way.
|
|
73
|
+
*/
|
|
74
|
+
selfChainGapExpired(agentName: string, sessionId: string, graceMs: number, now?: number): boolean;
|
|
75
|
+
/** Age of this session's open self-chain gap, for the log line. `null` when there is no gap. */
|
|
76
|
+
selfChainGapAgeMs(agentName: string, sessionId: string, now?: number): number | null;
|
|
77
|
+
/**
|
|
78
|
+
* DOD-M15-SELFCHAIN-GAP-1 — **THE ESCALATION DECISION, kept beside the state it reads.**
|
|
79
|
+
*
|
|
80
|
+
* `true` freezes the session, `false` defers. Called only after a `self_chain_mismatch`, so the
|
|
81
|
+
* gap this reads was opened by the verify call that produced that verdict.
|
|
82
|
+
*
|
|
83
|
+
* ⚠️ THE DEFERRAL IS LOGGED, and that is not decoration. A silent wait is indistinguishable from
|
|
84
|
+
* the self-chain check not running at all, which is exactly the state this milestone spent a day
|
|
85
|
+
* failing to tell apart. The frame is REFUSED either way — the caller has already done that — so
|
|
86
|
+
* nothing enters the transcript on evidence this side cannot check.
|
|
87
|
+
*/
|
|
88
|
+
noteSelfChainGapAndShouldFreeze(agentName: string, sessionId: string, correlationId?: string): boolean;
|
|
89
|
+
noteReceivedFromCounterparty(agentName: string, sessionId: string, contentHash: Uint8Array): void;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=authorship-verification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorship-verification.d.ts","sourceRoot":"","sources":["../src/authorship-verification.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,OAAO,EACL,KAAK,iBAAiB,EASvB,MAAM,yBAAyB,CAAC;AAEjC;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACzD,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC;IAC7E,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC;IAClE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACjE,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACrF,2EAA2E;IAC3E,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAClF;;;;;;OAMG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;CACnH;AAED,qBAAa,kBAAkB;;gBAGjB,GAAG,EAAE,iBAAiB;IA2BpC;;;;;;;;;;;;;;SAcK;IACH,qBAAqB,CACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,UAAU,EAC1B,eAAe,EAAE,UAAU,EAC3B,WAAW,EAAE,UAAU,GACtB,iBAAiB;IAkRpB;;;;;OAKG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO;IAK7G,gGAAgG;IAChG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,MAAM,GAAG,IAAI;IAKhG;;;;;;;;;;OAUG;IACH,+BAA+B,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO;IAoCxG,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,GAAG,IAAI;CA0JhG"}
|