@cello-protocol/daemon 0.0.227 → 0.0.229
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-admin-handlers.d.ts +56 -0
- package/dist/agent-admin-handlers.d.ts.map +1 -0
- package/dist/agent-admin-handlers.js +73 -0
- package/dist/agent-admin-handlers.js.map +1 -0
- package/dist/agent-handlers.d.ts +72 -0
- package/dist/agent-handlers.d.ts.map +1 -0
- package/dist/agent-handlers.js +604 -0
- package/dist/agent-handlers.js.map +1 -0
- package/dist/agent-id-migration.d.ts +70 -0
- package/dist/agent-id-migration.d.ts.map +1 -0
- package/dist/agent-id-migration.js +468 -0
- package/dist/agent-id-migration.js.map +1 -0
- package/dist/agent-loader.d.ts +37 -0
- package/dist/agent-loader.d.ts.map +1 -0
- package/dist/agent-loader.js +37 -0
- package/dist/agent-loader.js.map +1 -0
- package/dist/agent-selection-root.d.ts +29 -0
- package/dist/agent-selection-root.d.ts.map +1 -0
- package/dist/agent-selection-root.js +126 -0
- package/dist/agent-selection-root.js.map +1 -0
- package/dist/agent-selection.d.ts +73 -0
- package/dist/agent-selection.d.ts.map +1 -0
- package/dist/agent-selection.js +80 -0
- package/dist/agent-selection.js.map +1 -0
- package/dist/agent-settings-keys.d.ts +52 -0
- package/dist/agent-settings-keys.d.ts.map +1 -0
- package/dist/agent-settings-keys.js +114 -0
- package/dist/agent-settings-keys.js.map +1 -0
- package/dist/agent-state.d.ts +67 -0
- package/dist/agent-state.d.ts.map +1 -0
- package/dist/agent-state.js +66 -0
- package/dist/agent-state.js.map +1 -0
- package/dist/assignment-verify.d.ts +90 -0
- package/dist/assignment-verify.d.ts.map +1 -0
- package/dist/assignment-verify.js +301 -0
- package/dist/assignment-verify.js.map +1 -0
- package/dist/attendance-wiring.d.ts +23 -0
- package/dist/attendance-wiring.d.ts.map +1 -0
- package/dist/attendance-wiring.js +248 -0
- package/dist/attendance-wiring.js.map +1 -0
- package/dist/attestation-body.d.ts +47 -0
- package/dist/attestation-body.d.ts.map +1 -0
- package/dist/attestation-body.js +71 -0
- package/dist/attestation-body.js.map +1 -0
- package/dist/authorship-verification.d.ts +91 -0
- package/dist/authorship-verification.d.ts.map +1 -0
- package/dist/authorship-verification.js +532 -0
- package/dist/authorship-verification.js.map +1 -0
- package/dist/away-detection.d.ts +139 -0
- package/dist/away-detection.d.ts.map +1 -0
- package/dist/away-detection.js +186 -0
- package/dist/away-detection.js.map +1 -0
- package/dist/away-inbox-oneshot.d.ts +40 -0
- package/dist/away-inbox-oneshot.d.ts.map +1 -0
- package/dist/away-inbox-oneshot.js +311 -0
- package/dist/away-inbox-oneshot.js.map +1 -0
- package/dist/backup-restore-handlers.d.ts +10 -0
- package/dist/backup-restore-handlers.d.ts.map +1 -0
- package/dist/backup-restore-handlers.js +82 -0
- package/dist/backup-restore-handlers.js.map +1 -0
- package/dist/backup-restore.d.ts +102 -0
- package/dist/backup-restore.d.ts.map +1 -0
- package/dist/backup-restore.js +341 -0
- package/dist/backup-restore.js.map +1 -0
- package/dist/bin/cello-daemon.d.ts +13 -0
- package/dist/bin/cello-daemon.d.ts.map +1 -0
- package/dist/bin/cello-daemon.js.map +1 -0
- package/dist/boot-agents.d.ts +64 -0
- package/dist/boot-agents.d.ts.map +1 -0
- package/dist/boot-agents.js +241 -0
- package/dist/boot-agents.js.map +1 -0
- package/dist/boot-connection-state.d.ts +38 -0
- package/dist/boot-connection-state.d.ts.map +1 -0
- package/dist/boot-connection-state.js +95 -0
- package/dist/boot-connection-state.js.map +1 -0
- package/dist/boot-core.d.ts +36 -0
- package/dist/boot-core.d.ts.map +1 -0
- package/dist/boot-core.js +293 -0
- package/dist/boot-core.js.map +1 -0
- package/dist/boot-parked-content.d.ts +34 -0
- package/dist/boot-parked-content.d.ts.map +1 -0
- package/dist/boot-parked-content.js +528 -0
- package/dist/boot-parked-content.js.map +1 -0
- package/dist/boot-sweeps.d.ts +22 -0
- package/dist/boot-sweeps.d.ts.map +1 -0
- package/dist/boot-sweeps.js +51 -0
- package/dist/boot-sweeps.js.map +1 -0
- package/dist/bundled-consortium-manifest.d.ts +47 -0
- package/dist/bundled-consortium-manifest.d.ts.map +1 -0
- package/dist/bundled-consortium-manifest.js +116 -0
- package/dist/bundled-consortium-manifest.js.map +1 -0
- package/dist/cbor-blob-migration.d.ts +8 -0
- package/dist/cbor-blob-migration.d.ts.map +1 -0
- package/dist/cbor-blob-migration.js +116 -0
- package/dist/cbor-blob-migration.js.map +1 -0
- package/dist/challenge-verifier.d.ts +12 -0
- package/dist/challenge-verifier.d.ts.map +1 -0
- package/dist/challenge-verifier.js +11 -0
- package/dist/challenge-verifier.js.map +1 -0
- package/dist/channel-log-store.d.ts +80 -0
- package/dist/channel-log-store.d.ts.map +1 -0
- package/dist/channel-log-store.js +290 -0
- package/dist/channel-log-store.js.map +1 -0
- package/dist/close-commitment.d.ts +67 -0
- package/dist/close-commitment.d.ts.map +1 -0
- package/dist/close-commitment.js +78 -0
- package/dist/close-commitment.js.map +1 -0
- package/dist/close-session-handler.d.ts +94 -0
- package/dist/close-session-handler.d.ts.map +1 -0
- package/dist/close-session-handler.js +1418 -0
- package/dist/close-session-handler.js.map +1 -0
- package/dist/co-attendance.d.ts +29 -0
- package/dist/co-attendance.d.ts.map +1 -0
- package/dist/co-attendance.js +32 -0
- package/dist/co-attendance.js.map +1 -0
- package/dist/column-birth.d.ts +40 -0
- package/dist/column-birth.d.ts.map +1 -0
- package/dist/column-birth.js +61 -0
- package/dist/column-birth.js.map +1 -0
- package/dist/connect-or-start.d.ts +25 -0
- package/dist/connect-or-start.d.ts.map +1 -0
- package/dist/connect-or-start.js +175 -0
- package/dist/connect-or-start.js.map +1 -0
- package/dist/connection-agents.d.ts +16 -0
- package/dist/connection-agents.d.ts.map +1 -0
- package/dist/connection-agents.js +68 -0
- package/dist/connection-agents.js.map +1 -0
- package/dist/consent-migration.d.ts +49 -0
- package/dist/consent-migration.d.ts.map +1 -0
- package/dist/consent-migration.js +128 -0
- package/dist/consent-migration.js.map +1 -0
- package/dist/consortium-bootstrap.d.ts +138 -0
- package/dist/consortium-bootstrap.d.ts.map +1 -0
- package/dist/consortium-bootstrap.js +339 -0
- package/dist/consortium-bootstrap.js.map +1 -0
- package/dist/consortium-fingerprint.d.ts +115 -0
- package/dist/consortium-fingerprint.d.ts.map +1 -0
- package/dist/consortium-fingerprint.js +175 -0
- package/dist/consortium-fingerprint.js.map +1 -0
- package/dist/contact-handlers.d.ts +59 -0
- package/dist/contact-handlers.d.ts.map +1 -0
- package/dist/contact-handlers.js +343 -0
- package/dist/contact-handlers.js.map +1 -0
- package/dist/contact-pubkey-case.d.ts +65 -0
- package/dist/contact-pubkey-case.d.ts.map +1 -0
- package/dist/contact-pubkey-case.js +136 -0
- package/dist/contact-pubkey-case.js.map +1 -0
- package/dist/contacts-tier-migration.d.ts +90 -0
- package/dist/contacts-tier-migration.d.ts.map +1 -0
- package/dist/contacts-tier-migration.js +150 -0
- package/dist/contacts-tier-migration.js.map +1 -0
- package/dist/content-encryption-status.d.ts +111 -0
- package/dist/content-encryption-status.d.ts.map +1 -0
- package/dist/content-encryption-status.js +158 -0
- package/dist/content-encryption-status.js.map +1 -0
- package/dist/content-park-client.d.ts +90 -0
- package/dist/content-park-client.d.ts.map +1 -0
- package/dist/content-park-client.js +362 -0
- package/dist/content-park-client.js.map +1 -0
- package/dist/content-park.d.ts +52 -0
- package/dist/content-park.d.ts.map +1 -0
- package/dist/content-park.js +1309 -0
- package/dist/content-park.js.map +1 -0
- package/dist/cross-node-negotiation.d.ts +44 -0
- package/dist/cross-node-negotiation.d.ts.map +1 -0
- package/dist/cross-node-negotiation.js +34 -0
- package/dist/cross-node-negotiation.js.map +1 -0
- package/dist/daemon-handle.d.ts +57 -0
- package/dist/daemon-handle.d.ts.map +1 -0
- package/dist/daemon-handle.js +2 -0
- package/dist/daemon-handle.js.map +1 -0
- package/dist/daemon-status-report.d.ts +50 -0
- package/dist/daemon-status-report.d.ts.map +1 -0
- package/dist/daemon-status-report.js +81 -0
- package/dist/daemon-status-report.js.map +1 -0
- package/dist/daemon.d.ts +45 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +1177 -0
- package/dist/daemon.js.map +1 -0
- package/dist/db-identity-store.d.ts +159 -0
- package/dist/db-identity-store.d.ts.map +1 -0
- package/dist/db-identity-store.js +502 -0
- package/dist/db-identity-store.js.map +1 -0
- package/dist/delivery-open-registry.d.ts +92 -0
- package/dist/delivery-open-registry.d.ts.map +1 -0
- package/dist/delivery-open-registry.js +121 -0
- package/dist/delivery-open-registry.js.map +1 -0
- package/dist/delivery-session-suspects.d.ts +56 -0
- package/dist/delivery-session-suspects.d.ts.map +1 -0
- package/dist/delivery-session-suspects.js +94 -0
- package/dist/delivery-session-suspects.js.map +1 -0
- package/dist/directory-auth-posture.d.ts +87 -0
- package/dist/directory-auth-posture.d.ts.map +1 -0
- package/dist/directory-auth-posture.js +134 -0
- package/dist/directory-auth-posture.js.map +1 -0
- package/dist/directory-bootstrap.d.ts +310 -0
- package/dist/directory-bootstrap.d.ts.map +1 -0
- package/dist/directory-bootstrap.js +557 -0
- package/dist/directory-bootstrap.js.map +1 -0
- package/dist/directory-connect.d.ts +27 -0
- package/dist/directory-connect.d.ts.map +1 -0
- package/dist/directory-connect.js +106 -0
- package/dist/directory-connect.js.map +1 -0
- package/dist/disconnect-cleanup.d.ts +51 -0
- package/dist/disconnect-cleanup.d.ts.map +1 -0
- package/dist/disconnect-cleanup.js +72 -0
- package/dist/disconnect-cleanup.js.map +1 -0
- package/dist/document-amendment-store.d.ts +120 -0
- package/dist/document-amendment-store.d.ts.map +1 -0
- package/dist/document-amendment-store.js +266 -0
- package/dist/document-amendment-store.js.map +1 -0
- package/dist/document-delivery-transport.d.ts +168 -0
- package/dist/document-delivery-transport.d.ts.map +1 -0
- package/dist/document-delivery-transport.js +206 -0
- package/dist/document-delivery-transport.js.map +1 -0
- package/dist/document-engine.d.ts +134 -0
- package/dist/document-engine.d.ts.map +1 -0
- package/dist/document-engine.js +282 -0
- package/dist/document-engine.js.map +1 -0
- package/dist/document-flag.d.ts +58 -0
- package/dist/document-flag.d.ts.map +1 -0
- package/dist/document-flag.js +70 -0
- package/dist/document-flag.js.map +1 -0
- package/dist/document-frame-router.d.ts +245 -0
- package/dist/document-frame-router.d.ts.map +1 -0
- package/dist/document-frame-router.js +397 -0
- package/dist/document-frame-router.js.map +1 -0
- package/dist/document-gate-wiring.d.ts +61 -0
- package/dist/document-gate-wiring.d.ts.map +1 -0
- package/dist/document-gate-wiring.js +125 -0
- package/dist/document-gate-wiring.js.map +1 -0
- package/dist/document-gate.d.ts +149 -0
- package/dist/document-gate.d.ts.map +1 -0
- package/dist/document-gate.js +509 -0
- package/dist/document-gate.js.map +1 -0
- package/dist/document-handlers.d.ts +47 -0
- package/dist/document-handlers.d.ts.map +1 -0
- package/dist/document-handlers.js +2203 -0
- package/dist/document-handlers.js.map +1 -0
- package/dist/document-handshake.d.ts +176 -0
- package/dist/document-handshake.d.ts.map +1 -0
- package/dist/document-handshake.js +452 -0
- package/dist/document-handshake.js.map +1 -0
- package/dist/document-inbound.d.ts +162 -0
- package/dist/document-inbound.d.ts.map +1 -0
- package/dist/document-inbound.js +530 -0
- package/dist/document-inbound.js.map +1 -0
- package/dist/document-json.d.ts +120 -0
- package/dist/document-json.d.ts.map +1 -0
- package/dist/document-json.js +191 -0
- package/dist/document-json.js.map +1 -0
- package/dist/document-layer.d.ts +215 -0
- package/dist/document-layer.d.ts.map +1 -0
- package/dist/document-layer.js +1025 -0
- package/dist/document-layer.js.map +1 -0
- package/dist/document-lifecycle.d.ts +52 -0
- package/dist/document-lifecycle.d.ts.map +1 -0
- package/dist/document-lifecycle.js +134 -0
- package/dist/document-lifecycle.js.map +1 -0
- package/dist/document-live-docs.d.ts +58 -0
- package/dist/document-live-docs.d.ts.map +1 -0
- package/dist/document-live-docs.js +126 -0
- package/dist/document-live-docs.js.map +1 -0
- package/dist/document-notify.d.ts +228 -0
- package/dist/document-notify.d.ts.map +1 -0
- package/dist/document-notify.js +580 -0
- package/dist/document-notify.js.map +1 -0
- package/dist/document-profile.d.ts +61 -0
- package/dist/document-profile.d.ts.map +1 -0
- package/dist/document-profile.js +112 -0
- package/dist/document-profile.js.map +1 -0
- package/dist/document-publish.d.ts +87 -0
- package/dist/document-publish.d.ts.map +1 -0
- package/dist/document-publish.js +173 -0
- package/dist/document-publish.js.map +1 -0
- package/dist/document-reachability.d.ts +42 -0
- package/dist/document-reachability.d.ts.map +1 -0
- package/dist/document-reachability.js +80 -0
- package/dist/document-reachability.js.map +1 -0
- package/dist/document-reconcile-engine.d.ts +66 -0
- package/dist/document-reconcile-engine.d.ts.map +1 -0
- package/dist/document-reconcile-engine.js +225 -0
- package/dist/document-reconcile-engine.js.map +1 -0
- package/dist/document-reconcile-scheduler.d.ts +163 -0
- package/dist/document-reconcile-scheduler.d.ts.map +1 -0
- package/dist/document-reconcile-scheduler.js +303 -0
- package/dist/document-reconcile-scheduler.js.map +1 -0
- package/dist/document-rejection.d.ts +251 -0
- package/dist/document-rejection.d.ts.map +1 -0
- package/dist/document-rejection.js +435 -0
- package/dist/document-rejection.js.map +1 -0
- package/dist/document-screen.d.ts +114 -0
- package/dist/document-screen.d.ts.map +1 -0
- package/dist/document-screen.js +223 -0
- package/dist/document-screen.js.map +1 -0
- package/dist/document-store.d.ts +372 -0
- package/dist/document-store.d.ts.map +1 -0
- package/dist/document-store.js +931 -0
- package/dist/document-store.js.map +1 -0
- package/dist/document-surface.d.ts +32 -0
- package/dist/document-surface.d.ts.map +1 -0
- package/dist/document-surface.js +151 -0
- package/dist/document-surface.js.map +1 -0
- package/dist/document-types.d.ts +94 -0
- package/dist/document-types.d.ts.map +1 -0
- package/dist/document-types.js +90 -0
- package/dist/document-types.js.map +1 -0
- package/dist/document-watch.d.ts +69 -0
- package/dist/document-watch.d.ts.map +1 -0
- package/dist/document-watch.js +108 -0
- package/dist/document-watch.js.map +1 -0
- package/dist/document-wiring.d.ts +53 -0
- package/dist/document-wiring.d.ts.map +1 -0
- package/dist/document-wiring.js +323 -0
- package/dist/document-wiring.js.map +1 -0
- package/dist/document-write-guard.d.ts +66 -0
- package/dist/document-write-guard.d.ts.map +1 -0
- package/dist/document-write-guard.js +98 -0
- package/dist/document-write-guard.js.map +1 -0
- package/dist/document-write-path.d.ts +94 -0
- package/dist/document-write-path.d.ts.map +1 -0
- package/dist/document-write-path.js +530 -0
- package/dist/document-write-path.js.map +1 -0
- package/dist/error-message.d.ts +7 -0
- package/dist/error-message.d.ts.map +1 -0
- package/dist/error-message.js +19 -0
- package/dist/error-message.js.map +1 -0
- package/dist/file-manifest-provider.d.ts +37 -0
- package/dist/file-manifest-provider.d.ts.map +1 -0
- package/dist/file-manifest-provider.js +105 -0
- package/dist/file-manifest-provider.js.map +1 -0
- package/dist/frame-values.d.ts +3 -0
- package/dist/frame-values.d.ts.map +1 -0
- package/dist/frame-values.js +84 -0
- package/dist/frame-values.js.map +1 -0
- package/dist/frontier-mismatch.d.ts +73 -0
- package/dist/frontier-mismatch.d.ts.map +1 -0
- package/dist/frontier-mismatch.js +89 -0
- package/dist/frontier-mismatch.js.map +1 -0
- package/dist/gateway-config-handlers.d.ts +26 -0
- package/dist/gateway-config-handlers.d.ts.map +1 -0
- package/dist/gateway-config-handlers.js +454 -0
- package/dist/gateway-config-handlers.js.map +1 -0
- package/dist/held-content.d.ts +145 -0
- package/dist/held-content.d.ts.map +1 -0
- package/dist/held-content.js +389 -0
- package/dist/held-content.js.map +1 -0
- package/dist/http-manifest-poll.d.ts +67 -0
- package/dist/http-manifest-poll.d.ts.map +1 -0
- package/dist/http-manifest-poll.js +150 -0
- package/dist/http-manifest-poll.js.map +1 -0
- package/dist/identity-migration.d.ts +40 -0
- package/dist/identity-migration.d.ts.map +1 -0
- package/dist/identity-migration.js +461 -0
- package/dist/identity-migration.js.map +1 -0
- package/dist/inbound-refusals.d.ts +283 -0
- package/dist/inbound-refusals.d.ts.map +1 -0
- package/dist/inbound-refusals.js +919 -0
- package/dist/inbound-refusals.js.map +1 -0
- package/dist/inbound-seal-request.d.ts +32 -0
- package/dist/inbound-seal-request.d.ts.map +1 -0
- package/dist/inbound-seal-request.js +228 -0
- package/dist/inbound-seal-request.js.map +1 -0
- package/dist/inbound-sessions.d.ts +291 -0
- package/dist/inbound-sessions.d.ts.map +1 -0
- package/dist/inbound-sessions.js +1609 -0
- package/dist/inbound-sessions.js.map +1 -0
- package/dist/inclusion-proof-handlers.d.ts +43 -0
- package/dist/inclusion-proof-handlers.d.ts.map +1 -0
- package/dist/inclusion-proof-handlers.js +565 -0
- package/dist/inclusion-proof-handlers.js.map +1 -0
- package/dist/inclusion-proof.d.ts +151 -0
- package/dist/inclusion-proof.d.ts.map +1 -0
- package/dist/inclusion-proof.js +228 -0
- package/dist/inclusion-proof.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/initiate-session-handler.d.ts +55 -0
- package/dist/initiate-session-handler.d.ts.map +1 -0
- package/dist/initiate-session-handler.js +310 -0
- package/dist/initiate-session-handler.js.map +1 -0
- package/dist/ipc-client.d.ts +31 -0
- package/dist/ipc-client.d.ts.map +1 -0
- package/dist/ipc-client.js +113 -0
- package/dist/ipc-client.js.map +1 -0
- package/dist/ipc-server.d.ts +63 -0
- package/dist/ipc-server.d.ts.map +1 -0
- package/dist/ipc-server.js +429 -0
- package/dist/ipc-server.js.map +1 -0
- package/dist/ipc-surface.d.ts +44 -0
- package/dist/ipc-surface.d.ts.map +1 -0
- package/dist/ipc-surface.js +107 -0
- package/dist/ipc-surface.js.map +1 -0
- package/dist/line-lcs.d.ts +51 -0
- package/dist/line-lcs.d.ts.map +1 -0
- package/dist/line-lcs.js +71 -0
- package/dist/line-lcs.js.map +1 -0
- package/dist/lock-file.d.ts +39 -0
- package/dist/lock-file.d.ts.map +1 -0
- package/dist/lock-file.js +120 -0
- package/dist/lock-file.js.map +1 -0
- package/dist/log-collapse.d.ts +66 -0
- package/dist/log-collapse.d.ts.map +1 -0
- package/dist/log-collapse.js +244 -0
- package/dist/log-collapse.js.map +1 -0
- package/dist/log-rotate.d.ts +67 -0
- package/dist/log-rotate.d.ts.map +1 -0
- package/dist/log-rotate.js +134 -0
- package/dist/log-rotate.js.map +1 -0
- package/dist/manifest-deps.d.ts +25 -0
- package/dist/manifest-deps.d.ts.map +1 -0
- package/dist/manifest-deps.js +151 -0
- package/dist/manifest-deps.js.map +1 -0
- package/dist/manifest-poll-scheduler.d.ts +31 -0
- package/dist/manifest-poll-scheduler.d.ts.map +1 -0
- package/dist/manifest-poll-scheduler.js +59 -0
- package/dist/manifest-poll-scheduler.js.map +1 -0
- package/dist/manifest-validity.d.ts +153 -0
- package/dist/manifest-validity.d.ts.map +1 -0
- package/dist/manifest-validity.js +268 -0
- package/dist/manifest-validity.js.map +1 -0
- package/dist/manifest-version-store-db.d.ts +24 -0
- package/dist/manifest-version-store-db.d.ts.map +1 -0
- package/dist/manifest-version-store-db.js +58 -0
- package/dist/manifest-version-store-db.js.map +1 -0
- package/dist/manifest-version-store.d.ts +16 -0
- package/dist/manifest-version-store.d.ts.map +1 -0
- package/dist/manifest-version-store.js +15 -0
- package/dist/manifest-version-store.js.map +1 -0
- package/dist/network-directory-node.d.ts +136 -0
- package/dist/network-directory-node.d.ts.map +1 -0
- package/dist/network-directory-node.js +810 -0
- package/dist/network-directory-node.js.map +1 -0
- package/dist/nonce-dedup.d.ts +68 -0
- package/dist/nonce-dedup.d.ts.map +1 -0
- package/dist/nonce-dedup.js +205 -0
- package/dist/nonce-dedup.js.map +1 -0
- package/dist/notification-dispatcher.d.ts +92 -0
- package/dist/notification-dispatcher.d.ts.map +1 -0
- package/dist/notification-dispatcher.js +210 -0
- package/dist/notification-dispatcher.js.map +1 -0
- package/dist/notification-handlers.d.ts +53 -0
- package/dist/notification-handlers.d.ts.map +1 -0
- package/dist/notification-handlers.js +461 -0
- package/dist/notification-handlers.js.map +1 -0
- package/dist/onboarding-guidance.d.ts +79 -0
- package/dist/onboarding-guidance.d.ts.map +1 -0
- package/dist/onboarding-guidance.js +95 -0
- package/dist/onboarding-guidance.js.map +1 -0
- package/dist/operator-guidance.d.ts +25 -0
- package/dist/operator-guidance.d.ts.map +1 -0
- package/dist/operator-guidance.js +50 -0
- package/dist/operator-guidance.js.map +1 -0
- package/dist/orphan-triage.d.ts +130 -0
- package/dist/orphan-triage.d.ts.map +1 -0
- package/dist/orphan-triage.js +207 -0
- package/dist/orphan-triage.js.map +1 -0
- package/dist/outbound-sessions.d.ts +126 -0
- package/dist/outbound-sessions.d.ts.map +1 -0
- package/dist/outbound-sessions.js +1052 -0
- package/dist/outbound-sessions.js.map +1 -0
- package/dist/park-envelope.d.ts +329 -0
- package/dist/park-envelope.d.ts.map +1 -0
- package/dist/park-envelope.js +509 -0
- package/dist/park-envelope.js.map +1 -0
- package/dist/park-recovery.d.ts +273 -0
- package/dist/park-recovery.d.ts.map +1 -0
- package/dist/park-recovery.js +717 -0
- package/dist/park-recovery.js.map +1 -0
- package/dist/park-refusals.d.ts +147 -0
- package/dist/park-refusals.d.ts.map +1 -0
- package/dist/park-refusals.js +331 -0
- package/dist/park-refusals.js.map +1 -0
- package/dist/quarantine-framing.d.ts +92 -0
- package/dist/quarantine-framing.d.ts.map +1 -0
- package/dist/quarantine-framing.js +111 -0
- package/dist/quarantine-framing.js.map +1 -0
- package/dist/reconnect-drain.d.ts +22 -0
- package/dist/reconnect-drain.d.ts.map +1 -0
- package/dist/reconnect-drain.js +65 -0
- package/dist/reconnect-drain.js.map +1 -0
- package/dist/recovered-position.d.ts +14 -0
- package/dist/recovered-position.d.ts.map +1 -0
- package/dist/recovered-position.js +59 -0
- package/dist/recovered-position.js.map +1 -0
- package/dist/refusal-notices.d.ts +196 -0
- package/dist/refusal-notices.d.ts.map +1 -0
- package/dist/refusal-notices.js +516 -0
- package/dist/refusal-notices.js.map +1 -0
- package/dist/refusal-reasons.d.ts +245 -0
- package/dist/refusal-reasons.d.ts.map +1 -0
- package/dist/refusal-reasons.js +363 -0
- package/dist/refusal-reasons.js.map +1 -0
- package/dist/register-handler.d.ts +36 -0
- package/dist/register-handler.d.ts.map +1 -0
- package/dist/register-handler.js +285 -0
- package/dist/register-handler.js.map +1 -0
- package/dist/registration-context.d.ts +72 -0
- package/dist/registration-context.d.ts.map +1 -0
- package/dist/registration-context.js +126 -0
- package/dist/registration-context.js.map +1 -0
- package/dist/registration-manager.d.ts +94 -0
- package/dist/registration-manager.d.ts.map +1 -0
- package/dist/registration-manager.js +585 -0
- package/dist/registration-manager.js.map +1 -0
- package/dist/registration-persistence.d.ts +183 -0
- package/dist/registration-persistence.d.ts.map +1 -0
- package/dist/registration-persistence.js +263 -0
- package/dist/registration-persistence.js.map +1 -0
- package/dist/registry-poll.d.ts +52 -0
- package/dist/registry-poll.d.ts.map +1 -0
- package/dist/registry-poll.js +140 -0
- package/dist/registry-poll.js.map +1 -0
- package/dist/registry-version-store-db.d.ts +22 -0
- package/dist/registry-version-store-db.d.ts.map +1 -0
- package/dist/registry-version-store-db.js +50 -0
- package/dist/registry-version-store-db.js.map +1 -0
- package/dist/relay-endpoints.d.ts +18 -0
- package/dist/relay-endpoints.d.ts.map +1 -0
- package/dist/relay-endpoints.js +9 -0
- package/dist/relay-endpoints.js.map +1 -0
- package/dist/relay-only.d.ts +140 -0
- package/dist/relay-only.d.ts.map +1 -0
- package/dist/relay-only.js +193 -0
- package/dist/relay-only.js.map +1 -0
- package/dist/relay-receipt-store.d.ts +155 -0
- package/dist/relay-receipt-store.d.ts.map +1 -0
- package/dist/relay-receipt-store.js +284 -0
- package/dist/relay-receipt-store.js.map +1 -0
- package/dist/relay-reconnect.d.ts +32 -0
- package/dist/relay-reconnect.d.ts.map +1 -0
- package/dist/relay-reconnect.js +29 -0
- package/dist/relay-reconnect.js.map +1 -0
- package/dist/reply-lag.d.ts +11 -0
- package/dist/reply-lag.d.ts.map +1 -0
- package/dist/reply-lag.js +46 -0
- package/dist/reply-lag.js.map +1 -0
- package/dist/resolve-named-agent.d.ts +49 -0
- package/dist/resolve-named-agent.d.ts.map +1 -0
- package/dist/resolve-named-agent.js +77 -0
- package/dist/resolve-named-agent.js.map +1 -0
- package/dist/restart-seal-resolver.d.ts +110 -0
- package/dist/restart-seal-resolver.d.ts.map +1 -0
- package/dist/restart-seal-resolver.js +353 -0
- package/dist/restart-seal-resolver.js.map +1 -0
- package/dist/resume-last-seen.d.ts +15 -0
- package/dist/resume-last-seen.d.ts.map +1 -0
- package/dist/resume-last-seen.js +44 -0
- package/dist/resume-last-seen.js.map +1 -0
- package/dist/retry-queue.d.ts +203 -0
- package/dist/retry-queue.d.ts.map +1 -0
- package/dist/retry-queue.js +701 -0
- package/dist/retry-queue.js.map +1 -0
- package/dist/roster-freshness.d.ts +160 -0
- package/dist/roster-freshness.d.ts.map +1 -0
- package/dist/roster-freshness.js +250 -0
- package/dist/roster-freshness.js.map +1 -0
- package/dist/screening-status.d.ts +15 -0
- package/dist/screening-status.d.ts.map +1 -0
- package/dist/screening-status.js +65 -0
- package/dist/screening-status.js.map +1 -0
- package/dist/seal-carried-close.d.ts +37 -0
- package/dist/seal-carried-close.d.ts.map +1 -0
- package/dist/seal-carried-close.js +179 -0
- package/dist/seal-carried-close.js.map +1 -0
- package/dist/seal-certificate-pull.d.ts +79 -0
- package/dist/seal-certificate-pull.d.ts.map +1 -0
- package/dist/seal-certificate-pull.js +186 -0
- package/dist/seal-certificate-pull.js.map +1 -0
- package/dist/seal-certified-root-check.d.ts +37 -0
- package/dist/seal-certified-root-check.d.ts.map +1 -0
- package/dist/seal-certified-root-check.js +127 -0
- package/dist/seal-certified-root-check.js.map +1 -0
- package/dist/seal-coordinator.d.ts +118 -0
- package/dist/seal-coordinator.d.ts.map +1 -0
- package/dist/seal-coordinator.js +927 -0
- package/dist/seal-coordinator.js.map +1 -0
- package/dist/seal-escalation.d.ts +80 -0
- package/dist/seal-escalation.d.ts.map +1 -0
- package/dist/seal-escalation.js +283 -0
- package/dist/seal-escalation.js.map +1 -0
- package/dist/seal-evidence-root-check.d.ts +70 -0
- package/dist/seal-evidence-root-check.d.ts.map +1 -0
- package/dist/seal-evidence-root-check.js +199 -0
- package/dist/seal-evidence-root-check.js.map +1 -0
- package/dist/seal-failure-store.d.ts +139 -0
- package/dist/seal-failure-store.d.ts.map +1 -0
- package/dist/seal-failure-store.js +207 -0
- package/dist/seal-failure-store.js.map +1 -0
- package/dist/seal-flows.d.ts +107 -0
- package/dist/seal-flows.d.ts.map +1 -0
- package/dist/seal-flows.js +638 -0
- package/dist/seal-flows.js.map +1 -0
- package/dist/seal-frontier-verify.d.ts +103 -0
- package/dist/seal-frontier-verify.d.ts.map +1 -0
- package/dist/seal-frontier-verify.js +143 -0
- package/dist/seal-frontier-verify.js.map +1 -0
- package/dist/seal-leaf.d.ts +58 -0
- package/dist/seal-leaf.d.ts.map +1 -0
- package/dist/seal-leaf.js +112 -0
- package/dist/seal-leaf.js.map +1 -0
- package/dist/seal-legibility-tbs.d.ts +25 -0
- package/dist/seal-legibility-tbs.d.ts.map +1 -0
- package/dist/seal-legibility-tbs.js +77 -0
- package/dist/seal-legibility-tbs.js.map +1 -0
- package/dist/seal-local-terminus.d.ts +41 -0
- package/dist/seal-local-terminus.d.ts.map +1 -0
- package/dist/seal-local-terminus.js +170 -0
- package/dist/seal-local-terminus.js.map +1 -0
- package/dist/seal-receipt-upgrade.d.ts +30 -0
- package/dist/seal-receipt-upgrade.d.ts.map +1 -0
- package/dist/seal-receipt-upgrade.js +49 -0
- package/dist/seal-receipt-upgrade.js.map +1 -0
- package/dist/seal-relay-silence.d.ts +51 -0
- package/dist/seal-relay-silence.d.ts.map +1 -0
- package/dist/seal-relay-silence.js +76 -0
- package/dist/seal-relay-silence.js.map +1 -0
- package/dist/seal-settle.d.ts +38 -0
- package/dist/seal-settle.d.ts.map +1 -0
- package/dist/seal-settle.js +33 -0
- package/dist/seal-settle.js.map +1 -0
- package/dist/seal-upgrade.d.ts +107 -0
- package/dist/seal-upgrade.d.ts.map +1 -0
- package/dist/seal-upgrade.js +200 -0
- package/dist/seal-upgrade.js.map +1 -0
- package/dist/sealed-conversation.d.ts +36 -0
- package/dist/sealed-conversation.d.ts.map +1 -0
- package/dist/sealed-conversation.js +171 -0
- package/dist/sealed-conversation.js.map +1 -0
- package/dist/sealed-leaf-set.d.ts +92 -0
- package/dist/sealed-leaf-set.d.ts.map +1 -0
- package/dist/sealed-leaf-set.js +122 -0
- package/dist/sealed-leaf-set.js.map +1 -0
- package/dist/send-claims.d.ts +56 -0
- package/dist/send-claims.d.ts.map +1 -0
- package/dist/send-claims.js +50 -0
- package/dist/send-claims.js.map +1 -0
- package/dist/session-assignment-parser.d.ts +104 -0
- package/dist/session-assignment-parser.d.ts.map +1 -0
- package/dist/session-assignment-parser.js +345 -0
- package/dist/session-assignment-parser.js.map +1 -0
- package/dist/session-category.d.ts +19 -0
- package/dist/session-category.d.ts.map +1 -0
- package/dist/session-category.js +14 -0
- package/dist/session-category.js.map +1 -0
- package/dist/session-ceremony.d.ts +297 -0
- package/dist/session-ceremony.d.ts.map +1 -0
- package/dist/session-ceremony.js +964 -0
- package/dist/session-ceremony.js.map +1 -0
- package/dist/session-closed.d.ts +79 -0
- package/dist/session-closed.d.ts.map +1 -0
- package/dist/session-closed.js +189 -0
- package/dist/session-closed.js.map +1 -0
- package/dist/session-connection-gater.d.ts +148 -0
- package/dist/session-connection-gater.d.ts.map +1 -0
- package/dist/session-connection-gater.js +332 -0
- package/dist/session-connection-gater.js.map +1 -0
- package/dist/session-content-context.d.ts +162 -0
- package/dist/session-content-context.d.ts.map +1 -0
- package/dist/session-content-context.js +2 -0
- package/dist/session-content-context.js.map +1 -0
- package/dist/session-content-handlers.d.ts +82 -0
- package/dist/session-content-handlers.d.ts.map +1 -0
- package/dist/session-content-handlers.js +1382 -0
- package/dist/session-content-handlers.js.map +1 -0
- package/dist/session-content-ingest.d.ts +206 -0
- package/dist/session-content-ingest.d.ts.map +1 -0
- package/dist/session-content-ingest.js +2167 -0
- package/dist/session-content-ingest.js.map +1 -0
- package/dist/session-content-send.d.ts +191 -0
- package/dist/session-content-send.d.ts.map +1 -0
- package/dist/session-content-send.js +1360 -0
- package/dist/session-content-send.js.map +1 -0
- package/dist/session-delivery-acks.d.ts +169 -0
- package/dist/session-delivery-acks.d.ts.map +1 -0
- package/dist/session-delivery-acks.js +569 -0
- package/dist/session-delivery-acks.js.map +1 -0
- package/dist/session-ephemerals.d.ts +279 -0
- package/dist/session-ephemerals.d.ts.map +1 -0
- package/dist/session-ephemerals.js +591 -0
- package/dist/session-ephemerals.js.map +1 -0
- package/dist/session-leaf-records.d.ts +159 -0
- package/dist/session-leaf-records.d.ts.map +1 -0
- package/dist/session-leaf-records.js +408 -0
- package/dist/session-leaf-records.js.map +1 -0
- package/dist/session-lifecycle.d.ts +303 -0
- package/dist/session-lifecycle.d.ts.map +1 -0
- package/dist/session-lifecycle.js +1679 -0
- package/dist/session-lifecycle.js.map +1 -0
- package/dist/session-liveness.d.ts +135 -0
- package/dist/session-liveness.d.ts.map +1 -0
- package/dist/session-liveness.js +347 -0
- package/dist/session-liveness.js.map +1 -0
- package/dist/session-name.d.ts +35 -0
- package/dist/session-name.d.ts.map +1 -0
- package/dist/session-name.js +60 -0
- package/dist/session-name.js.map +1 -0
- package/dist/session-node-factory.d.ts +18 -0
- package/dist/session-node-factory.d.ts.map +1 -0
- package/dist/session-node-factory.js +182 -0
- package/dist/session-node-factory.js.map +1 -0
- package/dist/session-node-manager.d.ts +877 -0
- package/dist/session-node-manager.d.ts.map +1 -0
- package/dist/session-node-manager.js +2998 -0
- package/dist/session-node-manager.js.map +1 -0
- package/dist/session-node-types.d.ts +1057 -0
- package/dist/session-node-types.d.ts.map +1 -0
- package/dist/session-node-types.js +657 -0
- package/dist/session-node-types.js.map +1 -0
- package/dist/session-notify.d.ts +46 -0
- package/dist/session-notify.d.ts.map +1 -0
- package/dist/session-notify.js +116 -0
- package/dist/session-notify.js.map +1 -0
- package/dist/session-own-chain-store.d.ts +65 -0
- package/dist/session-own-chain-store.d.ts.map +1 -0
- package/dist/session-own-chain-store.js +75 -0
- package/dist/session-own-chain-store.js.map +1 -0
- package/dist/session-queries.d.ts +476 -0
- package/dist/session-queries.d.ts.map +1 -0
- package/dist/session-queries.js +1007 -0
- package/dist/session-queries.js.map +1 -0
- package/dist/session-read-handlers.d.ts +87 -0
- package/dist/session-read-handlers.d.ts.map +1 -0
- package/dist/session-read-handlers.js +689 -0
- package/dist/session-read-handlers.js.map +1 -0
- package/dist/session-records.d.ts +341 -0
- package/dist/session-records.d.ts.map +1 -0
- package/dist/session-records.js +858 -0
- package/dist/session-records.js.map +1 -0
- package/dist/session-relay-client.d.ts +659 -0
- package/dist/session-relay-client.d.ts.map +1 -0
- package/dist/session-relay-client.js +2876 -0
- package/dist/session-relay-client.js.map +1 -0
- package/dist/session-relay.d.ts +397 -0
- package/dist/session-relay.d.ts.map +1 -0
- package/dist/session-relay.js +1636 -0
- package/dist/session-relay.js.map +1 -0
- package/dist/session-salt-agreement.d.ts +331 -0
- package/dist/session-salt-agreement.d.ts.map +1 -0
- package/dist/session-salt-agreement.js +472 -0
- package/dist/session-salt-agreement.js.map +1 -0
- package/dist/session-salts.d.ts +432 -0
- package/dist/session-salts.d.ts.map +1 -0
- package/dist/session-salts.js +1540 -0
- package/dist/session-salts.js.map +1 -0
- package/dist/session-schema.d.ts +30 -0
- package/dist/session-schema.d.ts.map +1 -0
- package/dist/session-schema.js +877 -0
- package/dist/session-schema.js.map +1 -0
- package/dist/session-seal-leaf-store.d.ts +70 -0
- package/dist/session-seal-leaf-store.d.ts.map +1 -0
- package/dist/session-seal-leaf-store.js +105 -0
- package/dist/session-seal-leaf-store.js.map +1 -0
- package/dist/session-seal.d.ts +334 -0
- package/dist/session-seal.d.ts.map +1 -0
- package/dist/session-seal.js +1017 -0
- package/dist/session-seal.js.map +1 -0
- package/dist/session-terminal-refusal.d.ts +65 -0
- package/dist/session-terminal-refusal.d.ts.map +1 -0
- package/dist/session-terminal-refusal.js +87 -0
- package/dist/session-terminal-refusal.js.map +1 -0
- package/dist/session-tree.d.ts +110 -0
- package/dist/session-tree.d.ts.map +1 -0
- package/dist/session-tree.js +144 -0
- package/dist/session-tree.js.map +1 -0
- package/dist/session-views.d.ts +47 -0
- package/dist/session-views.d.ts.map +1 -0
- package/dist/session-views.js +278 -0
- package/dist/session-views.js.map +1 -0
- package/dist/signal-handlers.d.ts +63 -0
- package/dist/signal-handlers.d.ts.map +1 -0
- package/dist/signal-handlers.js +980 -0
- package/dist/signal-handlers.js.map +1 -0
- package/dist/signal-requirement-policy.d.ts +51 -0
- package/dist/signal-requirement-policy.d.ts.map +1 -0
- package/dist/signal-requirement-policy.js +89 -0
- package/dist/signal-requirement-policy.js.map +1 -0
- package/dist/signal-revocability.d.ts +49 -0
- package/dist/signal-revocability.d.ts.map +1 -0
- package/dist/signal-revocability.js +93 -0
- package/dist/signal-revocability.js.map +1 -0
- package/dist/signal-submission.d.ts +181 -0
- package/dist/signal-submission.d.ts.map +1 -0
- package/dist/signal-submission.js +368 -0
- package/dist/signal-submission.js.map +1 -0
- package/dist/signaling-connect.d.ts +118 -0
- package/dist/signaling-connect.d.ts.map +1 -0
- package/dist/signaling-connect.js +538 -0
- package/dist/signaling-connect.js.map +1 -0
- package/dist/signaling-wiring.d.ts +105 -0
- package/dist/signaling-wiring.d.ts.map +1 -0
- package/dist/signaling-wiring.js +393 -0
- package/dist/signaling-wiring.js.map +1 -0
- package/dist/singleton-lock.d.ts +85 -0
- package/dist/singleton-lock.d.ts.map +1 -0
- package/dist/singleton-lock.js +219 -0
- package/dist/singleton-lock.js.map +1 -0
- package/dist/sqlcipher-db.d.ts +139 -0
- package/dist/sqlcipher-db.d.ts.map +1 -0
- package/dist/sqlcipher-db.js +357 -0
- package/dist/sqlcipher-db.js.map +1 -0
- package/dist/standing-receivers.d.ts +319 -0
- package/dist/standing-receivers.d.ts.map +1 -0
- package/dist/standing-receivers.js +1295 -0
- package/dist/standing-receivers.js.map +1 -0
- package/dist/start-agent.d.ts +64 -0
- package/dist/start-agent.d.ts.map +1 -0
- package/dist/start-agent.js +136 -0
- package/dist/start-agent.js.map +1 -0
- package/dist/status-handler.d.ts +54 -0
- package/dist/status-handler.d.ts.map +1 -0
- package/dist/status-handler.js +61 -0
- package/dist/status-handler.js.map +1 -0
- package/dist/submission-retry.d.ts +208 -0
- package/dist/submission-retry.d.ts.map +1 -0
- package/dist/submission-retry.js +506 -0
- package/dist/submission-retry.js.map +1 -0
- package/dist/telegram-bot-client.d.ts +34 -0
- package/dist/telegram-bot-client.d.ts.map +1 -0
- package/dist/telegram-bot-client.js +36 -0
- package/dist/telegram-bot-client.js.map +1 -0
- package/dist/telegram-doorbell.d.ts +38 -0
- package/dist/telegram-doorbell.d.ts.map +1 -0
- package/dist/telegram-doorbell.js +140 -0
- package/dist/telegram-doorbell.js.map +1 -0
- package/dist/test-handlers.d.ts +62 -0
- package/dist/test-handlers.d.ts.map +1 -0
- package/dist/test-handlers.js +240 -0
- package/dist/test-handlers.js.map +1 -0
- package/dist/testing.d.ts +10 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +10 -0
- package/dist/testing.js.map +1 -0
- package/dist/transport-composition.d.ts +31 -0
- package/dist/transport-composition.d.ts.map +1 -0
- package/dist/transport-composition.js +55 -0
- package/dist/transport-composition.js.map +1 -0
- package/dist/transport-selector.d.ts +202 -0
- package/dist/transport-selector.d.ts.map +1 -0
- package/dist/transport-selector.js +196 -0
- package/dist/transport-selector.js.map +1 -0
- package/dist/trust-signal-pickup-listener.d.ts +43 -0
- package/dist/trust-signal-pickup-listener.d.ts.map +1 -0
- package/dist/trust-signal-pickup-listener.js +48 -0
- package/dist/trust-signal-pickup-listener.js.map +1 -0
- package/dist/trust-signal-store.d.ts +406 -0
- package/dist/trust-signal-store.d.ts.map +1 -0
- package/dist/trust-signal-store.js +939 -0
- package/dist/trust-signal-store.js.map +1 -0
- package/dist/trust-signal-sweep-tick.d.ts +60 -0
- package/dist/trust-signal-sweep-tick.d.ts.map +1 -0
- package/dist/trust-signal-sweep-tick.js +101 -0
- package/dist/trust-signal-sweep-tick.js.map +1 -0
- package/dist/trust-signal-sweep.d.ts +94 -0
- package/dist/trust-signal-sweep.d.ts.map +1 -0
- package/dist/trust-signal-sweep.js +147 -0
- package/dist/trust-signal-sweep.js.map +1 -0
- package/dist/type-registry.d.ts +42 -0
- package/dist/type-registry.d.ts.map +1 -0
- package/dist/type-registry.js +37 -0
- package/dist/type-registry.js.map +1 -0
- package/dist/types.d.ts +746 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +20 -0
- package/dist/types.js.map +1 -0
- package/dist/unresolved-nodes-report.d.ts +14 -0
- package/dist/unresolved-nodes-report.d.ts.map +1 -0
- package/dist/unresolved-nodes-report.js +96 -0
- package/dist/unresolved-nodes-report.js.map +1 -0
- package/dist/vocabulary.d.ts +150 -0
- package/dist/vocabulary.d.ts.map +1 -0
- package/dist/vocabulary.js +386 -0
- package/dist/vocabulary.js.map +1 -0
- package/dist/who-label.d.ts +28 -0
- package/dist/who-label.d.ts.map +1 -0
- package/dist/who-label.js +31 -0
- package/dist/who-label.js.map +1 -0
- package/dist/who-resolver.d.ts +15 -0
- package/dist/who-resolver.d.ts.map +1 -0
- package/dist/who-resolver.js +47 -0
- package/dist/who-resolver.js.map +1 -0
- package/dist/wire-content-hash.d.ts +93 -0
- package/dist/wire-content-hash.d.ts.map +1 -0
- package/dist/wire-content-hash.js +116 -0
- package/dist/wire-content-hash.js.map +1 -0
- package/dist/withheld-content.d.ts +13 -0
- package/dist/withheld-content.d.ts.map +1 -0
- package/dist/withheld-content.js +46 -0
- package/dist/withheld-content.js.map +1 -0
- package/dist/witness-alerts.d.ts +40 -0
- package/dist/witness-alerts.d.ts.map +1 -0
- package/dist/witness-alerts.js +102 -0
- package/dist/witness-alerts.js.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOD-M9B-SURFACE-1 — the security layer's control surface (policy D-4).
|
|
3
|
+
*
|
|
4
|
+
* The gateway's config store has enforced tighten-free / loosen-confirmed since June 2026, and
|
|
5
|
+
* NOTHING in the product could ever satisfy the confirmation — there was no CLI, no MCP tool, no
|
|
6
|
+
* portal page. A `confirmed` flag that only tests set is a gate nobody can pass and nobody can
|
|
7
|
+
* open. These three verbs are the surface, and the confirmation is a human at a terminal.
|
|
8
|
+
*
|
|
9
|
+
* INV-10 — WHAT THIS GATE ACTUALLY GUARANTEES, stated honestly (audit finding, 2026-07-29).
|
|
10
|
+
*
|
|
11
|
+
* Every loosening flows through the versioned store, and `confirmed` is honored only from a
|
|
12
|
+
* connection whose declared `clientType` is exactly `cli` — an MCP caller, or one that never
|
|
13
|
+
* handshook at all, is refused with the command a human must run.
|
|
14
|
+
*
|
|
15
|
+
* **That is not an authentication boundary, and it must not be described as one.** `clientType` is
|
|
16
|
+
* SELF-DECLARED: the daemon records whatever string arrives in `ipc.connect`. Any process running
|
|
17
|
+
* as the operator can open `~/.cello/daemon.sock` (mode 0600), announce `clientType: "cli"`, and
|
|
18
|
+
* pass `confirmed: true`. That includes an agent with a shell tool. The TTY check that represents
|
|
19
|
+
* the human lives in the CLI process (`confirmAtTty`), and the daemon has no way to verify it —
|
|
20
|
+
* a same-uid process is indistinguishable from the operator by any local mechanism, so no amount
|
|
21
|
+
* of daemon-side checking closes this.
|
|
22
|
+
*
|
|
23
|
+
* What it therefore DOES do, which is worth having: it removes every path an agent reaches by
|
|
24
|
+
* ORDINARY means — the MCP tools it is given, and the CLI it can invoke (which refuses on a
|
|
25
|
+
* non-TTY stdin). An agent must go out of its way, speaking raw IPC and misrepresenting itself,
|
|
26
|
+
* and that is a different and much louder act than calling a tool it was handed.
|
|
27
|
+
*
|
|
28
|
+
* The real boundary is the one D-4 already names as the destination: the portal passkey. A
|
|
29
|
+
* confirmation the operator performs on a surface the local machine cannot forge is the only thing
|
|
30
|
+
* that makes "and nothing else produces this flag" true. Until then, this is a friction gate with
|
|
31
|
+
* a versioned, hash-chained audit trail — not a lock.
|
|
32
|
+
*
|
|
33
|
+
* STORE HANDLES ARE HELD OPEN FOR THE PROCESS LIFETIME. They were originally opened per call, on
|
|
34
|
+
* the reasoning that config commands are rare and a second long-lived handle buys only lock
|
|
35
|
+
* contention. That was wrong, and it cost the entire audit trail — proven against the shipped
|
|
36
|
+
* daemon on 2026-07-29:
|
|
37
|
+
*
|
|
38
|
+
* 1. sidecar screens a message -> record written, visible, `-wal` present
|
|
39
|
+
* 2. a reader opens and CLOSES -> `-wal`/`-shm` unlinked out from under the sidecar
|
|
40
|
+
* 3. sidecar screens again -> the write lands in the now-orphaned WAL
|
|
41
|
+
* 4. a fresh reader sees -> only the FIRST record. Everything after step 2 is lost.
|
|
42
|
+
*
|
|
43
|
+
* PRECISION ADDED 2026-07-30 (review M1): step 2 only unlinks when that reader is the LAST
|
|
44
|
+
* connection open — a non-last close is harmless, which is measurable in one script. The reason the
|
|
45
|
+
* live sequence hit it anyway is `cello config set`, which SIGTERMs the sidecar to apply the change:
|
|
46
|
+
* during the restart the per-call handle IS the last one. Do not soften the rule below on the
|
|
47
|
+
* strength of the correction — "only sometimes destroys the audit trail" is not a design.
|
|
48
|
+
*
|
|
49
|
+
* So `cello policy log` and `cello config list` — the surfaces that exist to show what the layer
|
|
50
|
+
* did — were silently destroying the record of what it did next. Holding the handle open means no
|
|
51
|
+
* connection ever performs the last-connection close while the sidecar is alive, which is the
|
|
52
|
+
* event that removes the WAL. The handles are deliberately not closed per call; process exit
|
|
53
|
+
* releases them, and the sidecar is torn down before the daemon exits (INV-9 shutdown ordering).
|
|
54
|
+
*/
|
|
55
|
+
import { join } from "node:path";
|
|
56
|
+
import { randomUUID } from "node:crypto";
|
|
57
|
+
import { GatewayConfigStore, GatewayRecordStore } from "@cello-protocol/gateway";
|
|
58
|
+
import { SCRIPTS, isScript } from "@cello-protocol/gateway";
|
|
59
|
+
import { dbKeyPathFor } from "./sqlcipher-db.js";
|
|
60
|
+
import { extractErrorMessage } from "./error-message.js";
|
|
61
|
+
/** The keys the gateway reads. Kept here so the surface can list them without a store open. */
|
|
62
|
+
export const GATEWAY_CONFIG_KEYS = [
|
|
63
|
+
"autonomous_override",
|
|
64
|
+
"pii_whitelist",
|
|
65
|
+
"language_allow",
|
|
66
|
+
"language_enforce",
|
|
67
|
+
"rate_max_per_window",
|
|
68
|
+
"rate_window_ms",
|
|
69
|
+
];
|
|
70
|
+
/** What each key controls, in the words an operator needs to decide whether to change it. */
|
|
71
|
+
const KEY_HELP = {
|
|
72
|
+
autonomous_override: "whether the agent may send a flagged value with no human present",
|
|
73
|
+
pii_whitelist: "values (e.g. your own email) that pass outbound without a warning",
|
|
74
|
+
language_allow: "which scripts count as your languages (latin, cyrillic, greek, arabic, hebrew, han, kana, hangul, devanagari, thai) — only used when language_enforce is on",
|
|
75
|
+
language_enforce: "refuse mail outside your languages instead of delivering it with a note (default: off)",
|
|
76
|
+
rate_max_per_window: "how many outbound messages are allowed per window (0 = no cap)",
|
|
77
|
+
rate_window_ms: "the window the outbound cap applies to, in milliseconds",
|
|
78
|
+
};
|
|
79
|
+
/** Parse a wire value into the type the store's validator expects for that key. */
|
|
80
|
+
function coerce(key, raw) {
|
|
81
|
+
if (key === "autonomous_override" || key === "language_enforce") {
|
|
82
|
+
if (typeof raw === "boolean")
|
|
83
|
+
return { ok: true, value: raw };
|
|
84
|
+
if (raw === "true" || raw === "false")
|
|
85
|
+
return { ok: true, value: raw === "true" };
|
|
86
|
+
return { ok: false, reason: `${key} is a boolean — pass true or false.` };
|
|
87
|
+
}
|
|
88
|
+
if (key === "pii_whitelist" || key === "language_allow") {
|
|
89
|
+
const asList = Array.isArray(raw) && raw.every((v) => typeof v === "string")
|
|
90
|
+
? raw
|
|
91
|
+
// A comma-separated string is what a CLI argument looks like. An EMPTY string means the empty
|
|
92
|
+
// list (the tightest value), not [""] — a stray empty member would whitelist nothing but would
|
|
93
|
+
// read as a loosening in the version history.
|
|
94
|
+
: typeof raw === "string" ? raw.split(",").map((v) => v.trim()).filter(Boolean) : null;
|
|
95
|
+
if (asList === null) {
|
|
96
|
+
return { ok: false, reason: `${key} is a list — pass comma-separated values, or an empty string to clear it.` };
|
|
97
|
+
}
|
|
98
|
+
// This branch must mirror the STORE's validator (review F6). It stopped doing so when
|
|
99
|
+
// language_allow gained real validation, and the operator got the store's raw JSON dump
|
|
100
|
+
// instead of a sentence naming the valid scripts.
|
|
101
|
+
if (key === "language_allow") {
|
|
102
|
+
if (asList.length === 0) {
|
|
103
|
+
return {
|
|
104
|
+
ok: false,
|
|
105
|
+
reason: "language_allow cannot be empty. An empty list is not 'accept nothing suspicious' — with " +
|
|
106
|
+
"language_enforce on it refuses every language including your own, which silently stops " +
|
|
107
|
+
`all mail. Pass the scripts you read, e.g. "latin,greek". Valid: ${SCRIPTS.join(", ")}.`,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
const unknown = asList.filter((v) => !isScript(v));
|
|
111
|
+
if (unknown.length > 0) {
|
|
112
|
+
return {
|
|
113
|
+
ok: false,
|
|
114
|
+
reason: `not a script: ${unknown.join(", ")}. language_allow takes SCRIPTS, not language names — ` +
|
|
115
|
+
`Greek is "greek", Japanese is "kana", Chinese is "han". Valid: ${SCRIPTS.join(", ")}.`,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return { ok: true, value: asList };
|
|
120
|
+
}
|
|
121
|
+
const n = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw) : NaN;
|
|
122
|
+
if (!Number.isFinite(n))
|
|
123
|
+
return { ok: false, reason: `${key} is a number.` };
|
|
124
|
+
// Mirror the store's own range rules HERE (review F6). Without this, `rate_window_ms 0` reached
|
|
125
|
+
// the store's validator, which THROWS — and an uncaught throw becomes `internal_error: an
|
|
126
|
+
// unexpected error occurred, check daemon logs`. The operator asked for something out of range
|
|
127
|
+
// and was told the daemon broke.
|
|
128
|
+
if (key === "rate_max_per_window" && n < 0) {
|
|
129
|
+
return { ok: false, reason: "rate_max_per_window cannot be negative (0 means no cap)." };
|
|
130
|
+
}
|
|
131
|
+
if (key === "rate_window_ms" && n <= 0) {
|
|
132
|
+
return { ok: false, reason: "rate_window_ms must be greater than 0 milliseconds." };
|
|
133
|
+
}
|
|
134
|
+
return { ok: true, value: n };
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Map a store-layer throw onto a named cause. An exit-point label on a corrupt security store is
|
|
138
|
+
* the error-substitution defect this project keeps finding (review F7).
|
|
139
|
+
*/
|
|
140
|
+
function storeFault(message) {
|
|
141
|
+
if (/SQLITE_CORRUPT|malformed|SQLITE_IOERR/i.test(message)) {
|
|
142
|
+
return {
|
|
143
|
+
ok: false,
|
|
144
|
+
reason: "store_corrupt",
|
|
145
|
+
guidance: "The security layer's store could not be read — the file is damaged. Screening still runs " +
|
|
146
|
+
"and still fails closed, but the config history and the audit trail are unreadable. Stop " +
|
|
147
|
+
`the daemon, move ~/.cello/gateway.db aside, and restart to begin a fresh store. (${message})`,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
if (/SQLITE_BUSY|locked/i.test(message)) {
|
|
151
|
+
return {
|
|
152
|
+
ok: false,
|
|
153
|
+
reason: "store_locked",
|
|
154
|
+
guidance: "The security layer's store is locked by another process — usually an orphaned gateway " +
|
|
155
|
+
`from a previous daemon. Stop it and retry. (${message})`,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
ok: false,
|
|
160
|
+
reason: "store_read_failed",
|
|
161
|
+
guidance: `The security layer's store could not be read. (${message})`,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
export function registerGatewayConfigHandlers(deps) {
|
|
165
|
+
const { handlers, celloDir, logger, getClientType, restartSecurityGateway } = deps;
|
|
166
|
+
// ONE handle, opened lazily, never closed per call — see the header. Never closing means this
|
|
167
|
+
// handle can never be the last-closer that unlinks the WAL while the sidecar is mid-restart.
|
|
168
|
+
let configStore;
|
|
169
|
+
const openStore = () => {
|
|
170
|
+
if (!configStore) {
|
|
171
|
+
configStore = new GatewayConfigStore(join(celloDir, "gateway.db"), dbKeyPathFor(join(celloDir, "sessions.db")),
|
|
172
|
+
// INV-7: the daemon logs through its injected logger and nowhere else. Without this sink the
|
|
173
|
+
// store would write raw lines to the daemon's stderr.
|
|
174
|
+
(event, context) => logger.info(event, context));
|
|
175
|
+
}
|
|
176
|
+
return configStore;
|
|
177
|
+
};
|
|
178
|
+
let recordStore;
|
|
179
|
+
const openRecordStore = () => {
|
|
180
|
+
if (!recordStore) {
|
|
181
|
+
recordStore = new GatewayRecordStore(join(celloDir, "gateway.db"), dbKeyPathFor(join(celloDir, "sessions.db")), (event, context) => logger.info(event, context));
|
|
182
|
+
}
|
|
183
|
+
return recordStore;
|
|
184
|
+
};
|
|
185
|
+
/** Every store open can fail closed (missing key, locked file). Report the CAUSE, not a label. */
|
|
186
|
+
const withStore = (fn) => {
|
|
187
|
+
let store;
|
|
188
|
+
try {
|
|
189
|
+
store = openStore();
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
const code = err?.code ?? "config_store_unavailable";
|
|
193
|
+
const guidance = err?.guidance
|
|
194
|
+
?? "The security layer's config store could not be opened. Check the daemon log.";
|
|
195
|
+
// Review M4: LOG IT. This is the worst failure this surface has — the governance store
|
|
196
|
+
// unopenable, locked, or plaintext — and it used to exist ONLY in a CLI response the operator
|
|
197
|
+
// may never have run. "Check the daemon log" while writing nothing to the daemon log is a
|
|
198
|
+
// dead end, and the project's error-path-coverage rule exists for exactly this.
|
|
199
|
+
logger.error("gateway.config.store_unavailable", {
|
|
200
|
+
reason: code, error: extractErrorMessage(err), store: "config",
|
|
201
|
+
});
|
|
202
|
+
return { ok: false, reason: code, guidance };
|
|
203
|
+
}
|
|
204
|
+
try {
|
|
205
|
+
return fn(store);
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
// The store validates too, and it THROWS. A validation fault is the caller's input being
|
|
209
|
+
// wrong, not the daemon being broken — surfacing it as `internal_error` sends the operator
|
|
210
|
+
// to the logs for a problem they can fix in the command they just typed.
|
|
211
|
+
const message = extractErrorMessage(err);
|
|
212
|
+
if (/invalid value for config key|unknown config key/i.test(message)) {
|
|
213
|
+
return { ok: false, reason: "invalid_value", guidance: message };
|
|
214
|
+
}
|
|
215
|
+
// Review F7: a READ that throws used to escape as `internal_error: an unexpected error
|
|
216
|
+
// occurred, check daemon logs` — sending the operator to the logs for a corrupted security
|
|
217
|
+
// store, with no remedy named, while the OPEN path carefully produces store_plaintext_file /
|
|
218
|
+
// store_locked / store_key_mismatch. The read path deserves the same.
|
|
219
|
+
return storeFault(message);
|
|
220
|
+
}
|
|
221
|
+
// NO `finally { store.close() }`. The close is the defect: closed as the last connection during
|
|
222
|
+
// a sidecar restart, it unlinks the WAL and every record written afterwards is lost.
|
|
223
|
+
};
|
|
224
|
+
// Read the whole surface. Shows the GOVERNANCE, not just the value (M9B-D18): after an incident
|
|
225
|
+
// the question is not "what is this set to" but "who weakened it, and did a human agree".
|
|
226
|
+
handlers.set("cello_config_list", async () => withStore((store) => ({
|
|
227
|
+
ok: true,
|
|
228
|
+
config: GATEWAY_CONFIG_KEYS.map((key) => {
|
|
229
|
+
const history = store.history(key);
|
|
230
|
+
const latest = history[history.length - 1];
|
|
231
|
+
return {
|
|
232
|
+
key,
|
|
233
|
+
describes: KEY_HELP[key],
|
|
234
|
+
// `null`, never a fabricated default: the gateway applies its own tightest default for an
|
|
235
|
+
// unset key, and echoing that value here would make "never configured" indistinguishable
|
|
236
|
+
// from "deliberately set to the same value".
|
|
237
|
+
value: latest ? latest.value : null,
|
|
238
|
+
version: latest?.version ?? 0,
|
|
239
|
+
lastChange: latest?.direction ?? null,
|
|
240
|
+
confirmed: latest?.confirmed ?? false,
|
|
241
|
+
// WHEN, and whether the version chain still verifies. `list` is the command someone runs
|
|
242
|
+
// AFTER an incident, and until now it showed neither — so it could not answer "who
|
|
243
|
+
// weakened this, when, and did a human agree" (review F9 of the earlier pass).
|
|
244
|
+
changedAt: latest?.changedAt ?? null,
|
|
245
|
+
// `null` for a key with NO rows, not `true` (review L5). An empty chain verifies
|
|
246
|
+
// vacuously, and "nothing to verify" must not read the same as "verified intact" on the
|
|
247
|
+
// one field whose whole job is tamper detection.
|
|
248
|
+
chainValid: latest ? store.verifyChain(key) : null,
|
|
249
|
+
};
|
|
250
|
+
}),
|
|
251
|
+
})));
|
|
252
|
+
handlers.set("cello_config_get", async (params) => {
|
|
253
|
+
const key = typeof params?.key === "string" ? params.key : undefined;
|
|
254
|
+
if (!key || !GATEWAY_CONFIG_KEYS.includes(key)) {
|
|
255
|
+
return {
|
|
256
|
+
ok: false,
|
|
257
|
+
reason: "unknown_key",
|
|
258
|
+
guidance: `Provide one of: ${GATEWAY_CONFIG_KEYS.join(", ")}.`,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
return withStore((store) => {
|
|
262
|
+
const history = store.history(key);
|
|
263
|
+
const latest = history[history.length - 1];
|
|
264
|
+
return {
|
|
265
|
+
ok: true,
|
|
266
|
+
key,
|
|
267
|
+
describes: KEY_HELP[key],
|
|
268
|
+
value: latest ? latest.value : null,
|
|
269
|
+
version: latest?.version ?? 0,
|
|
270
|
+
lastChange: latest?.direction ?? null,
|
|
271
|
+
confirmed: latest?.confirmed ?? false,
|
|
272
|
+
// Review L4: `get` is the NARROWER, more natural command ("what is autonomous_override
|
|
273
|
+
// set to?"), and it was the one that could not answer WHEN. Same two fields as `list`.
|
|
274
|
+
changedAt: latest?.changedAt ?? null,
|
|
275
|
+
chainValid: latest ? store.verifyChain(key) : null,
|
|
276
|
+
};
|
|
277
|
+
});
|
|
278
|
+
});
|
|
279
|
+
// DOD-M9B-AUDIT-1 (policy D-11) — "what did my policy do?"
|
|
280
|
+
//
|
|
281
|
+
// This ships WITH the enforcement flip, by decision, and not later: it is the concrete answer to
|
|
282
|
+
// the question D-2 raised — *"I have ongoing development everywhere, and if a new error appears
|
|
283
|
+
// I won't know whether it came from the flip or from my own work."* Attribution should be a
|
|
284
|
+
// lookup, not a guess, so every screened message is already recorded with its disposition and
|
|
285
|
+
// the rule that fired. This reads that record. Deliberately a list, not a dashboard.
|
|
286
|
+
//
|
|
287
|
+
// Newest first, because the question is almost always "what just happened".
|
|
288
|
+
handlers.set("cello_policy_log", async (params) => {
|
|
289
|
+
const rawLimit = params?.limit;
|
|
290
|
+
const limit = typeof rawLimit === "number" && Number.isFinite(rawLimit) && rawLimit > 0
|
|
291
|
+
? Math.min(Math.floor(rawLimit), 500)
|
|
292
|
+
: 50;
|
|
293
|
+
const since = typeof params?.since_ms === "number" && Number.isFinite(params.since_ms)
|
|
294
|
+
? params.since_ms
|
|
295
|
+
: undefined;
|
|
296
|
+
let store;
|
|
297
|
+
try {
|
|
298
|
+
store = openRecordStore();
|
|
299
|
+
}
|
|
300
|
+
catch (err) {
|
|
301
|
+
const code = err?.code ?? "record_store_unavailable";
|
|
302
|
+
const guidance = err?.guidance
|
|
303
|
+
?? "The security layer's record store could not be opened. Check the daemon log.";
|
|
304
|
+
// Review M4, and worse here than for config: an unopenable RECORD store means the audit trail
|
|
305
|
+
// itself is unreadable, which is the one failure that must never be quiet.
|
|
306
|
+
logger.error("gateway.config.store_unavailable", {
|
|
307
|
+
reason: code, error: extractErrorMessage(err), store: "records",
|
|
308
|
+
});
|
|
309
|
+
return { ok: false, reason: code, guidance };
|
|
310
|
+
}
|
|
311
|
+
try {
|
|
312
|
+
const all = store.all();
|
|
313
|
+
const filtered = since === undefined ? all : all.filter((r) => r.recordedAt >= since);
|
|
314
|
+
const page = filtered.slice(-limit).reverse();
|
|
315
|
+
return {
|
|
316
|
+
ok: true,
|
|
317
|
+
// `source` is here from day one so the reachability half (refusals, tier gates, away
|
|
318
|
+
// responses — policy audit §15 items 5-8) can join this list later without changing its
|
|
319
|
+
// shape. A consumer that learns to read one source reads both.
|
|
320
|
+
entries: page.map((r) => ({
|
|
321
|
+
source: "security",
|
|
322
|
+
at: r.recordedAt,
|
|
323
|
+
direction: r.direction,
|
|
324
|
+
disposition: r.disposition,
|
|
325
|
+
reason: r.reason ?? null,
|
|
326
|
+
correlationId: r.correlationId ?? null,
|
|
327
|
+
contentHash: r.contentHash,
|
|
328
|
+
})),
|
|
329
|
+
total: filtered.length,
|
|
330
|
+
returned: page.length,
|
|
331
|
+
// A broken chain means the log itself was tampered with, which the operator must be told
|
|
332
|
+
// BEFORE they reason from its contents.
|
|
333
|
+
chainValid: store.verifyChain(),
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
catch (err) {
|
|
337
|
+
return storeFault(extractErrorMessage(err));
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
handlers.set("cello_config_set", async (params, connectionId) => {
|
|
341
|
+
// One id for the whole fan-out: changed -> applied | restart_failed, AND the restarted sidecar's
|
|
342
|
+
// own boot lines — the last of those was claimed before it was true (review M2), so the id is now
|
|
343
|
+
// actually passed to the restart and into the child's environment. This is the multi-event async
|
|
344
|
+
// flow the project's correlationId rule exists for, and the config path had none because it has
|
|
345
|
+
// no inbound id to inherit — so mint one (review F12).
|
|
346
|
+
const correlationId = randomUUID();
|
|
347
|
+
const key = typeof params?.key === "string" ? params.key : undefined;
|
|
348
|
+
if (!key || !GATEWAY_CONFIG_KEYS.includes(key)) {
|
|
349
|
+
return { ok: false, reason: "unknown_key", guidance: `Provide one of: ${GATEWAY_CONFIG_KEYS.join(", ")}.` };
|
|
350
|
+
}
|
|
351
|
+
if (!params || !("value" in params)) {
|
|
352
|
+
return { ok: false, reason: "missing_params", guidance: `Provide 'value' — ${KEY_HELP[key]}.` };
|
|
353
|
+
}
|
|
354
|
+
const parsed = coerce(key, params.value);
|
|
355
|
+
if (!parsed.ok)
|
|
356
|
+
return { ok: false, reason: "invalid_value", guidance: parsed.reason };
|
|
357
|
+
// F1 (review, BLOCKING): the permissive side must not be the DEFAULT. `getClientType` returns
|
|
358
|
+
// undefined for a connection that never sent `ipc.connect`, and the daemon itself defaults a
|
|
359
|
+
// handshake with no clientType to "cli" — so `!== "mcp"` meant a raw socket write could carry
|
|
360
|
+
// `confirmed: true` and land a human-confirmed loosening with no human anywhere near it. Ten
|
|
361
|
+
// lines of node against ~/.cello/daemon.sock was the whole attack.
|
|
362
|
+
//
|
|
363
|
+
// And the justification for the original shape was FALSE in the direction that mattered: an
|
|
364
|
+
// agent running `cello config set …` from a Bash tool gets a NON-TTY stdin and is refused, so
|
|
365
|
+
// the raw socket was not "the same as just running the CLI" — it was the only route that worked
|
|
366
|
+
// for a non-human. Now only an EXPLICIT `cli` handshake may confirm; everything else is an
|
|
367
|
+
// untrusted surface.
|
|
368
|
+
const clientType = getClientType(connectionId);
|
|
369
|
+
const surface = clientType === "cli" ? "cli" : clientType === "mcp" ? "mcp" : "unknown";
|
|
370
|
+
const confirmed = params.confirmed === true;
|
|
371
|
+
return withStore((store) => {
|
|
372
|
+
// Ask the store to classify WITHOUT confirmation first. Its classifier is the authority on
|
|
373
|
+
// what counts as a loosening — re-deriving that here would be a second opinion that drifts.
|
|
374
|
+
const attempt = store.set(key, parsed.value);
|
|
375
|
+
if (attempt.ok) {
|
|
376
|
+
logger.info("gateway.config.changed", {
|
|
377
|
+
key, direction: attempt.direction, version: attempt.version, confirmed: false, surface, correlationId,
|
|
378
|
+
});
|
|
379
|
+
return applied(key, attempt.direction, attempt.version, false);
|
|
380
|
+
}
|
|
381
|
+
// It is a loosening. Three ways to be refused, and they are different failures.
|
|
382
|
+
if (surface !== "cli") {
|
|
383
|
+
logger.warn("gateway.config.loosen_refused", { key, surface, reason: "loosen_requires_cli", correlationId });
|
|
384
|
+
return {
|
|
385
|
+
ok: false,
|
|
386
|
+
reason: "loosen_requires_cli",
|
|
387
|
+
guidance: `Changing '${key}' this way makes the security layer LESS protective, so it needs a ` +
|
|
388
|
+
`human at a terminal — an agent cannot weaken its own guards. Ask the operator to run: ` +
|
|
389
|
+
`cello config set ${key} ${String(params.value)}`,
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
if (!confirmed) {
|
|
393
|
+
logger.warn("gateway.config.loosen_refused", { key, surface, reason: "needs_confirmation", correlationId });
|
|
394
|
+
const history = store.history(key);
|
|
395
|
+
const latest = history[history.length - 1];
|
|
396
|
+
return {
|
|
397
|
+
ok: false,
|
|
398
|
+
reason: "needs_confirmation",
|
|
399
|
+
direction: "loosen",
|
|
400
|
+
// The CURRENT value travels with the refusal (review F7). `set` REPLACES a list, so
|
|
401
|
+
// `cello config set pii_whitelist new@x.example` against a five-entry whitelist drops
|
|
402
|
+
// four of them — and a prompt that shows only the new value hides that entirely.
|
|
403
|
+
// `null` means never configured, i.e. the built-in tightest default applies.
|
|
404
|
+
from: latest ? latest.value : null,
|
|
405
|
+
guidance: `This makes ${KEY_HELP[key]} LESS restrictive.`,
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
const result = store.set(key, parsed.value, { confirmed: true });
|
|
409
|
+
if (!result.ok) {
|
|
410
|
+
// The store refused a confirmed loosening — it should not, so do not paper over it.
|
|
411
|
+
return { ok: false, reason: result.reason, guidance: "The config store rejected a confirmed change. Check the daemon log." };
|
|
412
|
+
}
|
|
413
|
+
logger.info("gateway.config.changed", {
|
|
414
|
+
key, direction: result.direction, version: result.version, confirmed: true, surface, correlationId,
|
|
415
|
+
});
|
|
416
|
+
return applied(key, result.direction, result.version, true);
|
|
417
|
+
});
|
|
418
|
+
/** Store the change, then make it REAL — the gateway reads config only at boot (M9B-D17). */
|
|
419
|
+
function applied(k, direction, version, wasConfirmed) {
|
|
420
|
+
const base = { ok: true, key: k, direction, version, confirmed: wasConfirmed };
|
|
421
|
+
if (!restartSecurityGateway)
|
|
422
|
+
return { ...base, applied: false };
|
|
423
|
+
return restartSecurityGateway(correlationId).then(() => {
|
|
424
|
+
logger.info("gateway.config.applied", { key: k, restarted: true, correlationId });
|
|
425
|
+
return { ...base, applied: true };
|
|
426
|
+
}, (err) => {
|
|
427
|
+
// STORED BUT NOT APPLIED. Never a bare ok: the operator would believe a guard changed
|
|
428
|
+
// when the running gateway still holds the old value.
|
|
429
|
+
const error = extractErrorMessage(err);
|
|
430
|
+
logger.error("gateway.config.restart_failed", { key: k, error, correlationId });
|
|
431
|
+
return {
|
|
432
|
+
...base,
|
|
433
|
+
applied: false,
|
|
434
|
+
warning: "stored_but_not_applied",
|
|
435
|
+
guidance: "The change is recorded but the screening process did not restart, so it is NOT yet " +
|
|
436
|
+
`in effect. Restart the daemon to apply it. Cause: ${error}`,
|
|
437
|
+
};
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
});
|
|
441
|
+
return () => {
|
|
442
|
+
try {
|
|
443
|
+
configStore?.close();
|
|
444
|
+
}
|
|
445
|
+
catch { /* best-effort */ }
|
|
446
|
+
try {
|
|
447
|
+
recordStore?.close();
|
|
448
|
+
}
|
|
449
|
+
catch { /* best-effort */ }
|
|
450
|
+
configStore = undefined;
|
|
451
|
+
recordStore = undefined;
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
//# sourceMappingURL=gateway-config-handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-config-handlers.js","sourceRoot":"","sources":["../src/gateway-config-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CELLO Daemon — CONTENT WE HAVE BUT CANNOT SHOW YET
|
|
3
|
+
*
|
|
4
|
+
* Split out of `session-node-manager.ts` by 037-SESSIONCORE. A message that arrives out of order is
|
|
5
|
+
* verified and kept, not delivered: showing it would put the conversation in the wrong sequence, and
|
|
6
|
+
* dropping it would lose a message the sender believes landed. It is HELD until the gap ahead of it
|
|
7
|
+
* closes, then released down the path it came from.
|
|
8
|
+
*
|
|
9
|
+
* Moved verbatim, comments included.
|
|
10
|
+
*
|
|
11
|
+
* ⚠️ `origin` DECIDES THE RELEASE PATH, AND GETTING IT WRONG IS NOT COSMETIC. A held frame of OUR OWN
|
|
12
|
+
* must be released down the SENT path — appended and transcribed as sent. Releasing it down the
|
|
13
|
+
* received path would put our own words in the counterparty's mouth in the sealed record, and hand
|
|
14
|
+
* them back to our own agent through `cello_receive` as though they had just arrived.
|
|
15
|
+
*/
|
|
16
|
+
import type { Logger } from "./types.js";
|
|
17
|
+
import type { DaemonDatabase } from "./sqlcipher-db.js";
|
|
18
|
+
import type { SessionQueries } from "./session-queries.js";
|
|
19
|
+
import type { SessionRecords } from "./session-records.js";
|
|
20
|
+
import type { SessionTree, WritableSessionTreeLeafKind } from "./session-tree.js";
|
|
21
|
+
import type { SentAuthorship } from "./session-node-types.js";
|
|
22
|
+
/**
|
|
23
|
+
* One piece of content held behind an ordering gap.
|
|
24
|
+
*
|
|
25
|
+
* Exported because the content pipeline shares the very same map — see the note on `heldContent`
|
|
26
|
+
* below. Two files spelling one shape out separately is how they stop agreeing.
|
|
27
|
+
*/
|
|
28
|
+
export type HeldEntry = {
|
|
29
|
+
content: Uint8Array;
|
|
30
|
+
originalContent?: Uint8Array;
|
|
31
|
+
contentHashHex: string;
|
|
32
|
+
correlationId?: string;
|
|
33
|
+
screenedOut?: boolean;
|
|
34
|
+
origin?: "sent";
|
|
35
|
+
kind?: WritableSessionTreeLeafKind;
|
|
36
|
+
authorship?: SentAuthorship;
|
|
37
|
+
restoredAcrossRestart?: boolean;
|
|
38
|
+
};
|
|
39
|
+
/** What held content needs from the manager. */
|
|
40
|
+
export interface HeldContentContext {
|
|
41
|
+
readonly logger: Logger;
|
|
42
|
+
readonly queries: SessionQueries;
|
|
43
|
+
readonly records: SessionRecords;
|
|
44
|
+
/** A function: the manager opens its database after construction. Re-exposed below as `#db`. */
|
|
45
|
+
db(): DaemonDatabase | null;
|
|
46
|
+
sessionKey(agentName: string, sessionId: string): string;
|
|
47
|
+
requireAgentId(agentName: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* ⚠️ THE HELD MAP ITSELF, shared by reference rather than owned here — `ingestReceivedContent`,
|
|
50
|
+
* `placeOwnLeaf`, `sealReadiness` and `getUndeliverableSeqs` all read it and all stayed behind.
|
|
51
|
+
* Splitting the map would have meant two sources of truth for "what are we holding", which is
|
|
52
|
+
* worse than sharing one. It is only ever ASSIGNED once, at construction, so there is one Map
|
|
53
|
+
* object and no two-writer divergence.
|
|
54
|
+
*/
|
|
55
|
+
readonly heldContent: Map<string, Map<number, HeldEntry>>;
|
|
56
|
+
readonly witnessedSeq: Map<string, Map<string, number>>;
|
|
57
|
+
getSessionTree(agentName: string, sessionId: string): SessionTree;
|
|
58
|
+
appendSessionLeaf(agentName: string, sessionId: string, kind: WritableSessionTreeLeafKind, leafHashHex: string, correlationId?: string): {
|
|
59
|
+
leafIndex: number;
|
|
60
|
+
newRootHex: string;
|
|
61
|
+
};
|
|
62
|
+
appendVerifiedContent(agentName: string, sessionId: string, content: Uint8Array, contentHashHex: string, senderPubkey: string, correlationId?: string, originalContent?: Uint8Array, verifiedAuthorship?: {
|
|
63
|
+
senderPubkey: Uint8Array;
|
|
64
|
+
senderSig: Uint8Array;
|
|
65
|
+
}): {
|
|
66
|
+
leafIndex: number;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export declare class HeldContent {
|
|
70
|
+
#private;
|
|
71
|
+
constructor(ctx: HeldContentContext);
|
|
72
|
+
/** M8C-ABUSE-1 (reviewer HIGH fix, D18): bytes currently sitting in the out-of-order hold
|
|
73
|
+
* buffer for this session — NOT yet committed leaves, but real bytes in memory that would
|
|
74
|
+
* otherwise let multiple held chunks each individually pass the size gate while cumulatively
|
|
75
|
+
* exceeding it once #releaseHeld drains them. */
|
|
76
|
+
getHeldBytesTotal(agentName: string, sessionId: string): number;
|
|
77
|
+
/**
|
|
78
|
+
* DOD-M12B-STRAND-1 — restore this session's held frames into memory.
|
|
79
|
+
*
|
|
80
|
+
* Called when a session node is (re)created, which is the moment the session becomes able to
|
|
81
|
+
* append again. Loading at daemon boot instead would be wrong for the same reason the old code
|
|
82
|
+
* was wrong: a frame is only releasable against a tree, and the tree is loaded per session.
|
|
83
|
+
*
|
|
84
|
+
* A frame whose content the tree ALREADY HOLDS at that position is dropped — re-appending it
|
|
85
|
+
* would change the root a seal signs over. That test is `hashAt`, not `canonical_seq < frontier`:
|
|
86
|
+
* the two counters are different spaces and this file documents them drifting, so the index
|
|
87
|
+
* comparison alone would destroy a frame the tree never held. See the drift branch below.
|
|
88
|
+
*/
|
|
89
|
+
ensureHeldRestored(agentName: string, sessionId: string, opts?: {
|
|
90
|
+
release?: boolean;
|
|
91
|
+
}): void;
|
|
92
|
+
restoreHeldContent(agentName: string, sessionId: string): void;
|
|
93
|
+
/**
|
|
94
|
+
* DOD-MSG-4: drain held out-of-order content in canonical order. After a leaf is appended, any
|
|
95
|
+
* held entry whose canonical sequence equals the new next-expected index is now in order — append
|
|
96
|
+
* it, then check again (a single fill can release a run of consecutive held messages).
|
|
97
|
+
*/
|
|
98
|
+
releaseHeld(agentName: string, sessionId: string, senderPubkey: string): number;
|
|
99
|
+
/**
|
|
100
|
+
* Test seam: put an own leaf in the HELD state instead of the tree — 033-ACKEMIT.
|
|
101
|
+
*
|
|
102
|
+
* The state `placeOwnLeaf` produces when the relay assigns a position ahead of our tail: the leaf
|
|
103
|
+
* exists on this side and is not in the tree, while the counterparty already has it from the relay
|
|
104
|
+
* and can acknowledge it. Reproducing it through the real hold map rather than by asserting the
|
|
105
|
+
* tree is short is what makes the acknowledgement test measure the case instead of a neighbour of
|
|
106
|
+
* it.
|
|
107
|
+
*/
|
|
108
|
+
holdOwnLeafForTest(agentName: string, sessionId: string, canonicalSeq: number, contentHashHex: string): void;
|
|
109
|
+
/**
|
|
110
|
+
* ⚠️ **ORPHANED COMMENT, OWNER UNKNOWN — do not attach it to the method below.** It reads
|
|
111
|
+
* *"@returns true iff the UPDATE was executed without error (a failed write is logged, never
|
|
112
|
+
* thrown)"*, and `annexHeldContentOnTerminal` returns `void` and runs no such UPDATE. It was
|
|
113
|
+
* already stranded in `session-node-manager.ts` before 037 moved this code, and Rule C carried it
|
|
114
|
+
* verbatim rather than dropping a sentence that is true of SOMETHING.
|
|
115
|
+
*
|
|
116
|
+
* Kept, marked, and NOT reattached: the nearest candidate by behaviour is
|
|
117
|
+
* `SessionQueries.markCounterpartyAbandoned`, which already has its own doc — so attaching it
|
|
118
|
+
* there on a guess is the same defect this marker exists to stop. Delete it only once its owner is
|
|
119
|
+
* identified, or reattach it then.
|
|
120
|
+
*/
|
|
121
|
+
/**
|
|
122
|
+
* DOD-M12B-STRAND-1 — move a terminal session's held frames to the annex.
|
|
123
|
+
*
|
|
124
|
+
* A held frame is content this agent RECEIVED and VERIFIED. When its session ends it can never
|
|
125
|
+
* join that chain (appending behind a committed root is not an option, and ingest refuses a
|
|
126
|
+
* terminal session outright), but it is still the operator's mail and no other copy exists —
|
|
127
|
+
* the sender was never acknowledged for it. `sealed_session_annex` is where M12-P17 already puts
|
|
128
|
+
* content that arrives for an ended session; this is the same content arriving slightly earlier.
|
|
129
|
+
*
|
|
130
|
+
* ANNEX FIRST, DELETE SECOND, per row. A crash between them costs a duplicate the annex's
|
|
131
|
+
* INSERT OR IGNORE absorbs; the other order costs the message. A row whose annex write fails is
|
|
132
|
+
* KEPT — the retention sweep will find it again, and a leftover row is cheaper than a lost one.
|
|
133
|
+
*/
|
|
134
|
+
annexHeldContentOnTerminal(agentName: string, sessionId: string, status: "sealed" | "abandoned"): void;
|
|
135
|
+
/**
|
|
136
|
+
* Forget the restore/release bookkeeping for a torn-down session.
|
|
137
|
+
*
|
|
138
|
+
* The held CONTENT itself is not dropped here — the map is shared and the manager's eviction still
|
|
139
|
+
* owns that line. What goes is this module's memory of whether a session was already hydrated from
|
|
140
|
+
* disk and already released, which must not survive a teardown: a revived session has to re-read
|
|
141
|
+
* from durable state rather than trust a flag about a process that is gone.
|
|
142
|
+
*/
|
|
143
|
+
evictSession(agentName: string, sessionId: string): void;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=held-content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"held-content.d.ts","sourceRoot":"","sources":["../src/held-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG9D;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,UAAU,CAAC;IAAC,eAAe,CAAC,EAAE,UAAU,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAClG,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,2BAA2B,CAAC;IAAC,UAAU,CAAC,EAAE,cAAc,CAAC;IACxG,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,gDAAgD;AAChD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,gGAAgG;IAChG,EAAE,IAAI,cAAc,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACzD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1C;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC;IAClE,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,2BAA2B,EACjC,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACrB;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,qBAAqB,CACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,UAAU,EAC5B,kBAAkB,CAAC,EAAE;QAAE,YAAY,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,UAAU,CAAA;KAAE,GACvE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1B;AAED,qBAAa,WAAW;;gBAGV,GAAG,EAAE,kBAAkB;IAWnC;;;sDAGkD;IAClD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAW/D;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IA8B5F,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAsG9D;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAuF/E;;;;;;;;OAQG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAM5G;;;;;;;;;;;OAWG;IACH;;;;;;;;;;;;OAYG;IACH,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI;IAkDtG;;;;;;;OAOG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;CAKzD"}
|