@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,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CELLO Daemon — THE TWO DURABLE FACTS ABOUT A SESSION'S LEAVES
|
|
3
|
+
*
|
|
4
|
+
* Split out of `session-node-manager.ts` by 037-SESSIONCORE. Both are DURABLE PER-SESSION LEAF
|
|
5
|
+
* FACTS that outlive the process, which is why they are here together rather than with the
|
|
6
|
+
* in-memory tree:
|
|
7
|
+
*
|
|
8
|
+
* ⚠️ NOT "both are read at seal time" — that was the first wording and it is false of both halves.
|
|
9
|
+
* The genesis is read at session OPEN and at SEND (`#signOwnContentClaim`), never at seal; the
|
|
10
|
+
* certified leaf set is written at seal and read at PROOF time. The distinction matters because
|
|
11
|
+
* this header is the rule the next extraction obeys when deciding what belongs here.
|
|
12
|
+
*
|
|
13
|
+
* - the GENESIS prev-root — where this two-party chain starts. It is a defined 32 bytes derived
|
|
14
|
+
* from both keys, the session id and the session timestamp, NOT 32 zeros: a constant identical
|
|
15
|
+
* across every session is one an attacker could present for any session, which would make the
|
|
16
|
+
* one position most exposed to a forged acknowledgement the only one nobody could check.
|
|
17
|
+
* - the CERTIFIED LEAF SET — which leaves the directory actually attested, and the state of that
|
|
18
|
+
* answer when it could not be obtained.
|
|
19
|
+
*
|
|
20
|
+
* Moved verbatim, comments included.
|
|
21
|
+
*/
|
|
22
|
+
import type { Logger } from "./types.js";
|
|
23
|
+
import type { SessionQueries } from "./session-queries.js";
|
|
24
|
+
import type { ActiveSessionEntry } from "./session-node-types.js";
|
|
25
|
+
import type { DaemonDatabase } from "./sqlcipher-db.js";
|
|
26
|
+
import type { RelayAssignmentCarry } from "./session-relay-client.js";
|
|
27
|
+
import type { SealFrontierLeaf } from "./seal-frontier-verify.js";
|
|
28
|
+
/** What the leaf records need from the manager — six things, none of them session state. */
|
|
29
|
+
export interface SessionLeafRecordContext {
|
|
30
|
+
readonly logger: Logger;
|
|
31
|
+
readonly queries: SessionQueries;
|
|
32
|
+
/** A function: the manager opens its database after construction. Re-exposed below as `#db`. */
|
|
33
|
+
db(): DaemonDatabase | null;
|
|
34
|
+
sessionKey(agentName: string, sessionId: string): string;
|
|
35
|
+
requireAgentId(agentName: string): string;
|
|
36
|
+
activeEntry(key: string): ActiveSessionEntry | undefined;
|
|
37
|
+
}
|
|
38
|
+
export declare class SessionLeafRecords {
|
|
39
|
+
#private;
|
|
40
|
+
constructor(ctx: SessionLeafRecordContext);
|
|
41
|
+
/**
|
|
42
|
+
* The session's genesis prev_root — what its FIRST message acknowledges, before anything has been
|
|
43
|
+
* received (033-ACKEMIT).
|
|
44
|
+
*
|
|
45
|
+
* DERIVED FIRST, STORED SECOND — and this docblock used to say "derived, never stored", which
|
|
46
|
+
* stopped being true inside this same unit. Rewritten rather than deleted: a reader who believed
|
|
47
|
+
* the first sentence would delete the column read below as redundant, and take the restart case
|
|
48
|
+
* with it.
|
|
49
|
+
*
|
|
50
|
+
* The live assignment is authoritative, because it is the thing the value is defined by. The
|
|
51
|
+
* stored column covers the one case the derivation cannot: a session restored after a restart
|
|
52
|
+
* re-registers with no assignment, and the session TIMESTAMP the genesis needs lives nowhere
|
|
53
|
+
* else.
|
|
54
|
+
*
|
|
55
|
+
* `undefined` when neither is available. The callers do not paper over that — they say, in the
|
|
56
|
+
* log and in the claim itself, that this session acknowledges nothing yet.
|
|
57
|
+
*/
|
|
58
|
+
sessionGenesisPrevRoot(agentName: string, sessionId: string): Uint8Array | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* 069-ORDERPROOF — the relay key this session's ordering attestations are checked against.
|
|
61
|
+
*
|
|
62
|
+
* Read in the SAME ORDER as the genesis next door, and for the same reasons: the live assignment
|
|
63
|
+
* first because it is authoritative, then the in-memory record (written before the session ROW
|
|
64
|
+
* exists), then the row (the restart case, where nothing else holds it).
|
|
65
|
+
*
|
|
66
|
+
* `undefined` means this session has no anchor — a direct session, or one opened before this
|
|
67
|
+
* order. The caller does not paper over that: an attestation arriving on such a session is
|
|
68
|
+
* refused by name rather than verified against whatever key it supplies.
|
|
69
|
+
*/
|
|
70
|
+
sessionRelayAnchor(agentName: string, sessionId: string): string | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Record the relay anchor, in memory first and durably second — the same split, and the same
|
|
73
|
+
* reason, as `persistGenesisPrevRoot`: the value is read when the session registers, which is
|
|
74
|
+
* before the session row exists.
|
|
75
|
+
*/
|
|
76
|
+
persistRelayAnchor(agentName: string, sessionId: string, relayAnchorHex: string | undefined): void;
|
|
77
|
+
persistGenesisPrevRoot(agentName: string, sessionId: string, assignment: RelayAssignmentCarry): void;
|
|
78
|
+
/**
|
|
79
|
+
* Persist the session's genesis prev_root, once, at the moment the assignment arrives.
|
|
80
|
+
*
|
|
81
|
+
* `WHERE genesis_prev_root IS NULL` rather than a plain update: the value cannot legitimately
|
|
82
|
+
* change for the life of a session, so the second writer is either redundant or wrong, and the
|
|
83
|
+
* first write is the one derived closest to the assignment that opened the session.
|
|
84
|
+
*/
|
|
85
|
+
/**
|
|
86
|
+
* Record the session's starting point from the ASSIGNMENT — `DOD-M15-SELFCHAIN-1`.
|
|
87
|
+
*
|
|
88
|
+
* ⚠️ **CALL THIS BEFORE `createSessionNode` / `acceptSession`, NOT AFTER.** Registering the
|
|
89
|
+
* session is what seeds the relay client's acknowledgement state, so the value has to exist by
|
|
90
|
+
* then; recorded afterwards, the first message of the session has nothing to chain to and is
|
|
91
|
+
* refused. Both the initiator and the responder derive this from the same FROST-signed assignment
|
|
92
|
+
* before they build anything.
|
|
93
|
+
*
|
|
94
|
+
* ⚠️ THE ANCHOR BELONGS TO THE SESSION, NOT TO THE RELAY, and treating it as the relay's was a
|
|
95
|
+
* real gap. It was derived only when a relay assignment CARRY was present — and that carry is
|
|
96
|
+
* built only for a relay-mode assignment that also carries a per-node relay signature. So a
|
|
97
|
+
* direct-mode session, brokered and FROST-signed exactly like any other, recorded no starting
|
|
98
|
+
* point at all, and every message on it had nothing to chain to.
|
|
99
|
+
*
|
|
100
|
+
* Both transport modes get their assignment from the same ceremony and derive the same value from
|
|
101
|
+
* it. The relay is how the conversation travels; it is not what makes the conversation provable.
|
|
102
|
+
*/
|
|
103
|
+
recordSessionGenesis(agentName: string, sessionId: string, participantA: Uint8Array, participantB: Uint8Array, sessionTimestamp: number, sessionSignature: Uint8Array | undefined, relayAnchorHex?: string): void;
|
|
104
|
+
/**
|
|
105
|
+
* Test seam: put the session's genesis prev_root where a completed session open leaves it —
|
|
106
|
+
* 033-ACKEMIT.
|
|
107
|
+
*
|
|
108
|
+
* ⚠️ THE STATE IS THE PRODUCTION ONE; ONLY HOW IT GOT THERE IS SHORT-CIRCUITED, exactly as
|
|
109
|
+
* `setSessionContentKeyForTest` short-circuits the key exchange next door.
|
|
110
|
+
*
|
|
111
|
+
* In production this value is derived from the directory-signed relay assignment and written to
|
|
112
|
+
* the session row the moment the session learns it, so every real session has one. A fixture that
|
|
113
|
+
* builds a session node directly never sees an assignment — so without this seam every content
|
|
114
|
+
* test built on the fixture would be exercising the "no starting point" REFUSAL path instead of
|
|
115
|
+
* the thing it was written for, and would report that as a pass or a mysterious failure depending
|
|
116
|
+
* on which side of the send it sat on.
|
|
117
|
+
*/
|
|
118
|
+
setSessionGenesisForTest(agentName: string, sessionId: string, genesis: Uint8Array): void;
|
|
119
|
+
/**
|
|
120
|
+
* DOD-M15-INCLUSION-1: keep the leaf set the certificate is signed over, so one message can later
|
|
121
|
+
* be proved to sit under it.
|
|
122
|
+
*
|
|
123
|
+
* REFUSES unless the hashes reproduce `sealedRootHex` — `certifiedLeafSetFrom` does that check and
|
|
124
|
+
* this method never bypasses it. That is what separates "the leaves the directory sent" from "the
|
|
125
|
+
* leaves the consortium signed", and only the second is worth storing: a proof built on the first
|
|
126
|
+
* would inherit whatever the directory chose to say.
|
|
127
|
+
*
|
|
128
|
+
* Idempotent (INSERT OR REPLACE keyed on leaf_index) so a re-delivered seal frame, or a unilateral
|
|
129
|
+
* seal later upgraded to bilateral, rewrites the same rows instead of failing or doubling them.
|
|
130
|
+
*
|
|
131
|
+
* @returns whether the set was accepted and stored.
|
|
132
|
+
*/
|
|
133
|
+
recordCertifiedLeafSet(agentName: string, sessionId: string, signedLeaves: readonly SealFrontierLeaf[], sealedRootHex: string, correlationId?: string): boolean;
|
|
134
|
+
/**
|
|
135
|
+
* Record WHY this session does or does not have a certified leaf set.
|
|
136
|
+
*
|
|
137
|
+
* Public for the one case the manager cannot see: a seal frame that carried no signed leaves at
|
|
138
|
+
* all never reaches `recordCertifiedLeafSet`, and that absence is a permanent fact about the
|
|
139
|
+
* session for the party that observed it.
|
|
140
|
+
*/
|
|
141
|
+
noteCertifiedLeafSetUnavailable(agentName: string, sessionId: string, state: "not_carried_absent_party" | "not_carried_present_party", detail: string): void;
|
|
142
|
+
getCertifiedLeafSet(agentName: string, sessionId: string): string[] | null;
|
|
143
|
+
getCertifiedLeafSetState(agentName: string, sessionId: string): {
|
|
144
|
+
state: string;
|
|
145
|
+
detail: string | null;
|
|
146
|
+
} | null;
|
|
147
|
+
/** The in-memory genesis prev-root for a session, when one has been recorded. */
|
|
148
|
+
genesisFor(agentName: string, sessionId: string): Uint8Array | undefined;
|
|
149
|
+
/**
|
|
150
|
+
* The in-memory relay anchor for a session — the counterpart of `genesisFor`, and read at the
|
|
151
|
+
* same moment for the same reason: the session ROW is inserted after the anchor is recorded, so
|
|
152
|
+
* the INSERT carries the value rather than an UPDATE trying to find a row that is not there yet.
|
|
153
|
+
*
|
|
154
|
+
* Deliberately NOT `sessionRelayAnchor`: that one reads the row as its last resort, which at
|
|
155
|
+
* insert time is the row being written. This is the memory copy only.
|
|
156
|
+
*/
|
|
157
|
+
relayAnchorFor(agentName: string, sessionId: string): string | undefined;
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=session-leaf-records.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-leaf-records.d.ts","sourceRoot":"","sources":["../src/session-leaf-records.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
import { computeGenesisPrevRoot, computeChainAnchor } from "@cello-protocol/protocol-types";
|
|
2
|
+
import { extractErrorMessage } from "./error-message.js";
|
|
3
|
+
import { certifiedLeafSetFrom } from "./sealed-leaf-set.js";
|
|
4
|
+
export class SessionLeafRecords {
|
|
5
|
+
#ctx;
|
|
6
|
+
constructor(ctx) {
|
|
7
|
+
this.#ctx = ctx;
|
|
8
|
+
}
|
|
9
|
+
/** A getter so the moved queries still read `this.#db` and narrow exactly as they did. */
|
|
10
|
+
get #db() {
|
|
11
|
+
return this.#ctx.db();
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The starting point of each live session's chain, in memory.
|
|
15
|
+
*
|
|
16
|
+
* ⚠️ NOT A CACHE OF THE DATABASE — it is the only copy that exists at the moment the value is
|
|
17
|
+
* first needed. It is recorded before the session node is built, and the session ROW does not
|
|
18
|
+
* exist until that build inserts it (`#insertSessionRow` writes the column from here). The row is
|
|
19
|
+
* what survives a restart; this is what the session open itself reads.
|
|
20
|
+
*
|
|
21
|
+
* ⚠️ **DELIBERATELY NOT EVICTED, and this module ships no `evictSession` because of it.** Every
|
|
22
|
+
* other collaborator has one, so the absence reads as an oversight — it is not. Dropping this on
|
|
23
|
+
* teardown would lose the in-memory genesis for any session whose `UPDATE sessions SET
|
|
24
|
+
* genesis_prev_root` FAILED, which is exactly the case `persistGenesisPrevRoot`'s error log says
|
|
25
|
+
* survives until a restart. Adding an `evictSession` here for symmetry would delete the only copy.
|
|
26
|
+
*
|
|
27
|
+
* ⚠️ IT THEREFORE GROWS FOR THE LIFE OF THE PROCESS — pre-existing, and stated rather than fixed.
|
|
28
|
+
* "each live session's chain" above is what it is FOR, not what it holds: entries are set and read
|
|
29
|
+
* and never removed, so it is roughly 200 bytes per session ever opened. Bounding it is not
|
|
30
|
+
* obviously safe for the reason directly above, so it wants a decision rather than a tidy-up.
|
|
31
|
+
*/
|
|
32
|
+
#sessionGenesis = new Map();
|
|
33
|
+
/**
|
|
34
|
+
* 069-ORDERPROOF — session key → the assigned relay's ack-signing pubkey, hex. The in-memory half
|
|
35
|
+
* of the anchor, written before the session row exists for exactly the reason the genesis map
|
|
36
|
+
* above is.
|
|
37
|
+
*/
|
|
38
|
+
#sessionRelayAnchor = new Map();
|
|
39
|
+
/**
|
|
40
|
+
* The session's genesis prev_root — what its FIRST message acknowledges, before anything has been
|
|
41
|
+
* received (033-ACKEMIT).
|
|
42
|
+
*
|
|
43
|
+
* DERIVED FIRST, STORED SECOND — and this docblock used to say "derived, never stored", which
|
|
44
|
+
* stopped being true inside this same unit. Rewritten rather than deleted: a reader who believed
|
|
45
|
+
* the first sentence would delete the column read below as redundant, and take the restart case
|
|
46
|
+
* with it.
|
|
47
|
+
*
|
|
48
|
+
* The live assignment is authoritative, because it is the thing the value is defined by. The
|
|
49
|
+
* stored column covers the one case the derivation cannot: a session restored after a restart
|
|
50
|
+
* re-registers with no assignment, and the session TIMESTAMP the genesis needs lives nowhere
|
|
51
|
+
* else.
|
|
52
|
+
*
|
|
53
|
+
* `undefined` when neither is available. The callers do not paper over that — they say, in the
|
|
54
|
+
* log and in the claim itself, that this session acknowledges nothing yet.
|
|
55
|
+
*/
|
|
56
|
+
sessionGenesisPrevRoot(agentName, sessionId) {
|
|
57
|
+
const assignment = this.#ctx.activeEntry(this.#ctx.sessionKey(agentName, sessionId))?.relayAssignment;
|
|
58
|
+
if (assignment?.sessionSignature) {
|
|
59
|
+
return computeChainAnchor(computeGenesisPrevRoot(assignment.participantA, assignment.participantB, Uint8Array.from(Buffer.from(sessionId, "hex")), assignment.sessionTimestamp), assignment.sessionSignature);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* ⚠️ THE IN-MEMORY RECORD, READ BEFORE THE DATABASE — and this ordering is the fix, not a
|
|
63
|
+
* cache.
|
|
64
|
+
*
|
|
65
|
+
* `recordSessionGenesis` is called BEFORE the session node exists, because registering the
|
|
66
|
+
* session is what seeds the relay client's acknowledgement state and the seed has to be
|
|
67
|
+
* available by then. At that moment there is no session ROW to write to — `createSessionNode`
|
|
68
|
+
* inserts it — so a database-only record would still be empty at the one moment it is read.
|
|
69
|
+
* The row is written from this map when the insert happens, and read back after a restart.
|
|
70
|
+
*/
|
|
71
|
+
const recorded = this.#sessionGenesis.get(this.#ctx.sessionKey(agentName, sessionId));
|
|
72
|
+
if (recorded)
|
|
73
|
+
return recorded;
|
|
74
|
+
/**
|
|
75
|
+
* THE RESTART CASE. A session restored from the database re-registers with no assignment, so
|
|
76
|
+
* the derivation above has nothing to work from and the stored copy is the only answer. Read
|
|
77
|
+
* second, never first: the live assignment is authoritative, and a stored value that ever
|
|
78
|
+
* disagreed with it would be the more dangerous of the two to prefer.
|
|
79
|
+
*/
|
|
80
|
+
const row = this.#db
|
|
81
|
+
?.prepare("SELECT genesis_prev_root FROM sessions WHERE agent_id = ? AND session_id = ?")
|
|
82
|
+
.get(this.#ctx.requireAgentId(agentName), sessionId);
|
|
83
|
+
const stored = row?.genesis_prev_root;
|
|
84
|
+
const bytes = stored instanceof Uint8Array ? stored : Buffer.isBuffer(stored) ? new Uint8Array(stored) : null;
|
|
85
|
+
// A stored value of the wrong width is not a genesis. Refusing it here sends the caller down its
|
|
86
|
+
// own named refusal, which is a better outcome than signing an acknowledgement of 17 bytes.
|
|
87
|
+
if (bytes && bytes.length === 32)
|
|
88
|
+
return bytes;
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 069-ORDERPROOF — the relay key this session's ordering attestations are checked against.
|
|
93
|
+
*
|
|
94
|
+
* Read in the SAME ORDER as the genesis next door, and for the same reasons: the live assignment
|
|
95
|
+
* first because it is authoritative, then the in-memory record (written before the session ROW
|
|
96
|
+
* exists), then the row (the restart case, where nothing else holds it).
|
|
97
|
+
*
|
|
98
|
+
* `undefined` means this session has no anchor — a direct session, or one opened before this
|
|
99
|
+
* order. The caller does not paper over that: an attestation arriving on such a session is
|
|
100
|
+
* refused by name rather than verified against whatever key it supplies.
|
|
101
|
+
*/
|
|
102
|
+
sessionRelayAnchor(agentName, sessionId) {
|
|
103
|
+
const live = this.#ctx.activeEntry(this.#ctx.sessionKey(agentName, sessionId))?.relayAssignment?.relayPubkeyHex;
|
|
104
|
+
if (live)
|
|
105
|
+
return live;
|
|
106
|
+
const recorded = this.#sessionRelayAnchor.get(this.#ctx.sessionKey(agentName, sessionId));
|
|
107
|
+
if (recorded)
|
|
108
|
+
return recorded;
|
|
109
|
+
const row = this.#db
|
|
110
|
+
?.prepare("SELECT relay_anchor_hex FROM sessions WHERE agent_id = ? AND session_id = ?")
|
|
111
|
+
.get(this.#ctx.requireAgentId(agentName), sessionId);
|
|
112
|
+
const stored = row?.relay_anchor_hex;
|
|
113
|
+
// A stored value of the wrong shape is not a key. Refusing it here sends the caller down its
|
|
114
|
+
// own named refusal rather than verifying signatures against 17 bytes.
|
|
115
|
+
return typeof stored === "string" && /^[0-9a-f]{64}$/i.test(stored) ? stored : undefined;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Record the relay anchor, in memory first and durably second — the same split, and the same
|
|
119
|
+
* reason, as `persistGenesisPrevRoot`: the value is read when the session registers, which is
|
|
120
|
+
* before the session row exists.
|
|
121
|
+
*/
|
|
122
|
+
persistRelayAnchor(agentName, sessionId, relayAnchorHex) {
|
|
123
|
+
if (!relayAnchorHex || !/^[0-9a-f]{64}$/i.test(relayAnchorHex))
|
|
124
|
+
return;
|
|
125
|
+
this.#sessionRelayAnchor.set(this.#ctx.sessionKey(agentName, sessionId), relayAnchorHex);
|
|
126
|
+
if (!this.#db)
|
|
127
|
+
return;
|
|
128
|
+
/**
|
|
129
|
+
* WRITE-ONCE ON DISK, overwritable in memory — an asymmetry worth naming rather than leaving to
|
|
130
|
+
* be discovered. If a session is ever handed to a SECOND relay (resume/handover, which nothing
|
|
131
|
+
* requests today), the row keeps the FIRST relay's key. Read order prefers the live assignment,
|
|
132
|
+
* so this only shows after a restart, and it shows as a named refusal — attestations checked
|
|
133
|
+
* against the old key fail loud — never as evidence accepted against the wrong witness. Whoever
|
|
134
|
+
* ships handover owns making this follow the handover.
|
|
135
|
+
*/
|
|
136
|
+
try {
|
|
137
|
+
this.#db
|
|
138
|
+
.prepare("UPDATE sessions SET relay_anchor_hex = ? WHERE agent_id = ? AND session_id = ? AND relay_anchor_hex IS NULL")
|
|
139
|
+
.run(relayAnchorHex, this.#ctx.requireAgentId(agentName), sessionId);
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
/**
|
|
143
|
+
* LOUD, AND IT DOES NOT BLOCK. Losing this row costs the session its ordering evidence after
|
|
144
|
+
* a restart — every send is then refused for want of an anchor — and that is a smaller harm
|
|
145
|
+
* than failing the session open in progress. ERROR because it is invisible until a restart.
|
|
146
|
+
*/
|
|
147
|
+
this.#ctx.logger.error("session.relay_anchor.persist.failed", {
|
|
148
|
+
agentName, sessionId,
|
|
149
|
+
error: extractErrorMessage(err),
|
|
150
|
+
impact: "the relay this session is witnessed by was not written to the database. Everything works " +
|
|
151
|
+
"until this daemon restarts; after that every message on this session is refused because " +
|
|
152
|
+
"the daemon cannot say which relay's ordering signature to trust.",
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
persistGenesisPrevRoot(agentName, sessionId, assignment) {
|
|
157
|
+
let genesis;
|
|
158
|
+
try {
|
|
159
|
+
// The chain starts from the genesis bound to the opening FROST signature (computeChainAnchor).
|
|
160
|
+
if (!assignment.sessionSignature)
|
|
161
|
+
throw new Error("the assignment carries no session FROST signature to anchor the chain");
|
|
162
|
+
genesis = computeChainAnchor(computeGenesisPrevRoot(assignment.participantA, assignment.participantB, Uint8Array.from(Buffer.from(sessionId, "hex")), assignment.sessionTimestamp), assignment.sessionSignature);
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
/**
|
|
166
|
+
* The DERIVATION failed, which is a different failure from the write below and must not be
|
|
167
|
+
* reported as one. It means the assignment's own fields are not what this function needs, and
|
|
168
|
+
* no amount of database health would help.
|
|
169
|
+
*/
|
|
170
|
+
this.#ctx.logger.error("session.genesis.derive.failed", {
|
|
171
|
+
agentName, sessionId,
|
|
172
|
+
error: extractErrorMessage(err),
|
|
173
|
+
impact: "this session's starting point could not be computed from its assignment, so nothing " +
|
|
174
|
+
"sent on it can be chained and every send will be refused by name. The session open " +
|
|
175
|
+
"continues; the conversation cannot.",
|
|
176
|
+
});
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
// The in-memory record FIRST, and unconditionally: it is what the session open reads, and it
|
|
180
|
+
// must not depend on a database write that may not have anywhere to land yet.
|
|
181
|
+
this.#sessionGenesis.set(this.#ctx.sessionKey(agentName, sessionId), genesis);
|
|
182
|
+
if (!this.#db)
|
|
183
|
+
return;
|
|
184
|
+
try {
|
|
185
|
+
this.#db
|
|
186
|
+
.prepare("UPDATE sessions SET genesis_prev_root = ? WHERE agent_id = ? AND session_id = ? AND genesis_prev_root IS NULL")
|
|
187
|
+
.run(Buffer.from(genesis), this.#ctx.requireAgentId(agentName), sessionId);
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
/**
|
|
191
|
+
* LOUD, AND IT DOES NOT BLOCK. Losing this row costs the session its acknowledgements after a
|
|
192
|
+
* restart — sends are then refused by name until the counterparty speaks — and that is a far
|
|
193
|
+
* smaller harm than failing the session open that is in progress. Reported at ERROR because
|
|
194
|
+
* the failure is invisible until a restart that may be days away.
|
|
195
|
+
*/
|
|
196
|
+
this.#ctx.logger.error("session.genesis.persist.failed", {
|
|
197
|
+
agentName, sessionId,
|
|
198
|
+
error: extractErrorMessage(err),
|
|
199
|
+
impact: "this session's starting point was not written to the database. Everything works until " +
|
|
200
|
+
"this daemon restarts; after that, a send on this session is refused until the " +
|
|
201
|
+
"counterparty has sent something, because the daemon cannot say what its first message " +
|
|
202
|
+
"acknowledges.",
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Persist the session's genesis prev_root, once, at the moment the assignment arrives.
|
|
208
|
+
*
|
|
209
|
+
* `WHERE genesis_prev_root IS NULL` rather than a plain update: the value cannot legitimately
|
|
210
|
+
* change for the life of a session, so the second writer is either redundant or wrong, and the
|
|
211
|
+
* first write is the one derived closest to the assignment that opened the session.
|
|
212
|
+
*/
|
|
213
|
+
/**
|
|
214
|
+
* Record the session's starting point from the ASSIGNMENT — `DOD-M15-SELFCHAIN-1`.
|
|
215
|
+
*
|
|
216
|
+
* ⚠️ **CALL THIS BEFORE `createSessionNode` / `acceptSession`, NOT AFTER.** Registering the
|
|
217
|
+
* session is what seeds the relay client's acknowledgement state, so the value has to exist by
|
|
218
|
+
* then; recorded afterwards, the first message of the session has nothing to chain to and is
|
|
219
|
+
* refused. Both the initiator and the responder derive this from the same FROST-signed assignment
|
|
220
|
+
* before they build anything.
|
|
221
|
+
*
|
|
222
|
+
* ⚠️ THE ANCHOR BELONGS TO THE SESSION, NOT TO THE RELAY, and treating it as the relay's was a
|
|
223
|
+
* real gap. It was derived only when a relay assignment CARRY was present — and that carry is
|
|
224
|
+
* built only for a relay-mode assignment that also carries a per-node relay signature. So a
|
|
225
|
+
* direct-mode session, brokered and FROST-signed exactly like any other, recorded no starting
|
|
226
|
+
* point at all, and every message on it had nothing to chain to.
|
|
227
|
+
*
|
|
228
|
+
* Both transport modes get their assignment from the same ceremony and derive the same value from
|
|
229
|
+
* it. The relay is how the conversation travels; it is not what makes the conversation provable.
|
|
230
|
+
*/
|
|
231
|
+
recordSessionGenesis(agentName, sessionId, participantA, participantB, sessionTimestamp, sessionSignature, relayAnchorHex) {
|
|
232
|
+
this.persistGenesisPrevRoot(agentName, sessionId, {
|
|
233
|
+
participantA, participantB, sessionTimestamp, sessionSignature,
|
|
234
|
+
});
|
|
235
|
+
// 069-ORDERPROOF: the anchor is recorded at the same moment and from the same signed
|
|
236
|
+
// assignment, so a session can never hold one without the other.
|
|
237
|
+
this.persistRelayAnchor(agentName, sessionId, relayAnchorHex);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Test seam: put the session's genesis prev_root where a completed session open leaves it —
|
|
241
|
+
* 033-ACKEMIT.
|
|
242
|
+
*
|
|
243
|
+
* ⚠️ THE STATE IS THE PRODUCTION ONE; ONLY HOW IT GOT THERE IS SHORT-CIRCUITED, exactly as
|
|
244
|
+
* `setSessionContentKeyForTest` short-circuits the key exchange next door.
|
|
245
|
+
*
|
|
246
|
+
* In production this value is derived from the directory-signed relay assignment and written to
|
|
247
|
+
* the session row the moment the session learns it, so every real session has one. A fixture that
|
|
248
|
+
* builds a session node directly never sees an assignment — so without this seam every content
|
|
249
|
+
* test built on the fixture would be exercising the "no starting point" REFUSAL path instead of
|
|
250
|
+
* the thing it was written for, and would report that as a pass or a mysterious failure depending
|
|
251
|
+
* on which side of the send it sat on.
|
|
252
|
+
*/
|
|
253
|
+
setSessionGenesisForTest(agentName, sessionId, genesis) {
|
|
254
|
+
/**
|
|
255
|
+
* ⚠️ WRITES THE SAME MAP PRODUCTION WRITES, deliberately — `DOD-M15-SELFCHAIN-1`.
|
|
256
|
+
*
|
|
257
|
+
* This seam exists because a fixture builds a session below the paths that derive a starting
|
|
258
|
+
* point from a directory assignment; it does NOT exist to install a second, quieter source of
|
|
259
|
+
* the value. Sharing the map means a fixture and a real session read through exactly the same
|
|
260
|
+
* lookup, so a change to that lookup cannot pass the tests while breaking production.
|
|
261
|
+
*
|
|
262
|
+
* ⚠️ CALL IT BEFORE `createSessionNode`, the same rule production follows: registering the
|
|
263
|
+
* session is what seeds the relay client's acknowledgement state, and a value recorded after
|
|
264
|
+
* that leaves the first send with nothing to chain to.
|
|
265
|
+
*/
|
|
266
|
+
this.#sessionGenesis.set(this.#ctx.sessionKey(agentName, sessionId), Uint8Array.from(genesis));
|
|
267
|
+
/**
|
|
268
|
+
* The durable half is BEST EFFORT. Some fixtures run against a database whose schema was never
|
|
269
|
+
* created, and a seam that threw there would turn "this fixture has no sessions table" into a
|
|
270
|
+
* failure of whatever it was actually testing. Harmless when the row does not exist yet either:
|
|
271
|
+
* `#insertSessionRow` writes the column from the map above.
|
|
272
|
+
*/
|
|
273
|
+
try {
|
|
274
|
+
this.#db
|
|
275
|
+
?.prepare("UPDATE sessions SET genesis_prev_root = ? WHERE agent_id = ? AND session_id = ?")
|
|
276
|
+
.run(Buffer.from(genesis), this.#ctx.requireAgentId(agentName), sessionId);
|
|
277
|
+
}
|
|
278
|
+
catch { /* see above — the in-memory half is the load-bearing one */ }
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* DOD-M15-INCLUSION-1: keep the leaf set the certificate is signed over, so one message can later
|
|
282
|
+
* be proved to sit under it.
|
|
283
|
+
*
|
|
284
|
+
* REFUSES unless the hashes reproduce `sealedRootHex` — `certifiedLeafSetFrom` does that check and
|
|
285
|
+
* this method never bypasses it. That is what separates "the leaves the directory sent" from "the
|
|
286
|
+
* leaves the consortium signed", and only the second is worth storing: a proof built on the first
|
|
287
|
+
* would inherit whatever the directory chose to say.
|
|
288
|
+
*
|
|
289
|
+
* Idempotent (INSERT OR REPLACE keyed on leaf_index) so a re-delivered seal frame, or a unilateral
|
|
290
|
+
* seal later upgraded to bilateral, rewrites the same rows instead of failing or doubling them.
|
|
291
|
+
*
|
|
292
|
+
* @returns whether the set was accepted and stored.
|
|
293
|
+
*/
|
|
294
|
+
recordCertifiedLeafSet(agentName, sessionId, signedLeaves, sealedRootHex, correlationId) {
|
|
295
|
+
if (!this.#db)
|
|
296
|
+
return false;
|
|
297
|
+
const resolved = certifiedLeafSetFrom(signedLeaves, sealedRootHex);
|
|
298
|
+
if (!resolved.ok) {
|
|
299
|
+
// The CAUSE is written where the proof surface can read it — fallback-finder finding 1. Without
|
|
300
|
+
// this row, `sealed_leaves_root_disagrees` (a directory contradicting its own FROST signature)
|
|
301
|
+
// and "this side was simply absent" are the same `null` downstream, and the operator is told
|
|
302
|
+
// the second.
|
|
303
|
+
this.#ctx.queries.noteCertifiedLeafState(agentName, sessionId, resolved.reason, resolved.detail);
|
|
304
|
+
// LOUD, and it names which of the two it is. `sealed_leaves_root_disagrees` in particular is
|
|
305
|
+
// the directory shipping a leaf set that is not the one it signed — the receipt still stands
|
|
306
|
+
// (its own signature is checked elsewhere), but nothing in this session can be proved at
|
|
307
|
+
// message granularity until a set that reproduces the root arrives.
|
|
308
|
+
this.#ctx.logger.error("seal.certified_leaves.refused", {
|
|
309
|
+
agentName,
|
|
310
|
+
sessionId,
|
|
311
|
+
reason: resolved.reason,
|
|
312
|
+
detail: resolved.detail,
|
|
313
|
+
correlationId,
|
|
314
|
+
impact: "the leaf set shipped with this seal is not the one the certificate is signed over, so no " +
|
|
315
|
+
"inclusion proof can be issued for this session; the sealed receipt itself is unaffected",
|
|
316
|
+
guidance: "cello_get_inclusion_proof will refuse this session by name (certified_leaves_unavailable). " +
|
|
317
|
+
"Nothing local repairs it — the set has to arrive with a seal frame that reproduces the " +
|
|
318
|
+
"signed root.",
|
|
319
|
+
});
|
|
320
|
+
return false;
|
|
321
|
+
}
|
|
322
|
+
const now = Date.now();
|
|
323
|
+
try {
|
|
324
|
+
const agentId = this.#ctx.requireAgentId(agentName);
|
|
325
|
+
/**
|
|
326
|
+
* DELETE THEN INSERT, INSIDE A TRANSACTION — fallback-finder finding 5.
|
|
327
|
+
*
|
|
328
|
+
* `INSERT OR REPLACE` alone is idempotent only for a set of the SAME length: a shorter
|
|
329
|
+
* re-delivery overwrites 0..k-1 and leaves stale rows at k..n-1, and an un-transacted loop that
|
|
330
|
+
* throws halfway leaves a truncated set that `getCertifiedLeafSet` still returns (it tests
|
|
331
|
+
* `rows.length > 0`, not completeness). Both produce a set that no longer hashes to the
|
|
332
|
+
* certified root — caught on read, but reported to the operator as *"the local copy has
|
|
333
|
+
* changed since the seal"*, which points at tampering for a write that never finished.
|
|
334
|
+
*/
|
|
335
|
+
// `BEGIN` / `COMMIT` / `ROLLBACK` via exec — this file's and `db-identity-store.ts`'s idiom.
|
|
336
|
+
// `DaemonDatabase` has no `transaction()` helper (node:sqlite's handle does not provide one),
|
|
337
|
+
// and reaching for better-sqlite3's would compile against the adapter and fail on the other.
|
|
338
|
+
this.#db.exec("BEGIN");
|
|
339
|
+
try {
|
|
340
|
+
this.#db.prepare("DELETE FROM session_certified_leaves WHERE agent_id = ? AND session_id = ?")
|
|
341
|
+
.run(agentId, sessionId);
|
|
342
|
+
const stmt = this.#db.prepare(`INSERT INTO session_certified_leaves
|
|
343
|
+
(agent_id, session_id, leaf_index, content_hash_hex, recorded_at)
|
|
344
|
+
VALUES (?, ?, ?, ?, ?)`);
|
|
345
|
+
for (let i = 0; i < resolved.leafHashes.length; i++) {
|
|
346
|
+
stmt.run(agentId, sessionId, i, resolved.leafHashes[i], now);
|
|
347
|
+
}
|
|
348
|
+
this.#db.exec("COMMIT");
|
|
349
|
+
}
|
|
350
|
+
catch (err) {
|
|
351
|
+
try {
|
|
352
|
+
this.#db.exec("ROLLBACK");
|
|
353
|
+
}
|
|
354
|
+
catch { /* the failing statement may have aborted it already */ }
|
|
355
|
+
throw err;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
catch (err) {
|
|
359
|
+
this.#ctx.queries.noteCertifiedLeafState(agentName, sessionId, "persist_failed", extractErrorMessage(err));
|
|
360
|
+
this.#ctx.logger.error("seal.certified_leaves.persist.failed", {
|
|
361
|
+
agentName,
|
|
362
|
+
sessionId,
|
|
363
|
+
reason: extractErrorMessage(err),
|
|
364
|
+
correlationId,
|
|
365
|
+
impact: "this session's certified leaf set was verified but not written, so cello_get_inclusion_proof " +
|
|
366
|
+
"will refuse it by name until a later seal frame re-delivers the set",
|
|
367
|
+
});
|
|
368
|
+
return false;
|
|
369
|
+
}
|
|
370
|
+
this.#ctx.queries.noteCertifiedLeafState(agentName, sessionId, "stored", null);
|
|
371
|
+
this.#ctx.logger.info("seal.certified_leaves.recorded", {
|
|
372
|
+
agentName,
|
|
373
|
+
sessionId,
|
|
374
|
+
leafCount: resolved.leafHashes.length,
|
|
375
|
+
sealedRoot: sealedRootHex,
|
|
376
|
+
correlationId,
|
|
377
|
+
});
|
|
378
|
+
return true;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Record WHY this session does or does not have a certified leaf set.
|
|
382
|
+
*
|
|
383
|
+
* Public for the one case the manager cannot see: a seal frame that carried no signed leaves at
|
|
384
|
+
* all never reaches `recordCertifiedLeafSet`, and that absence is a permanent fact about the
|
|
385
|
+
* session for the party that observed it.
|
|
386
|
+
*/
|
|
387
|
+
noteCertifiedLeafSetUnavailable(agentName, sessionId, state, detail) {
|
|
388
|
+
this.#ctx.queries.noteCertifiedLeafState(agentName, sessionId, state, detail);
|
|
389
|
+
}
|
|
390
|
+
getCertifiedLeafSet(agentName, sessionId) { return this.#ctx.queries.getCertifiedLeafSet(agentName, sessionId); }
|
|
391
|
+
getCertifiedLeafSetState(agentName, sessionId) { return this.#ctx.queries.getCertifiedLeafSetState(agentName, sessionId); }
|
|
392
|
+
/** The in-memory genesis prev-root for a session, when one has been recorded. */
|
|
393
|
+
genesisFor(agentName, sessionId) {
|
|
394
|
+
return this.#sessionGenesis.get(this.#ctx.sessionKey(agentName, sessionId));
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* The in-memory relay anchor for a session — the counterpart of `genesisFor`, and read at the
|
|
398
|
+
* same moment for the same reason: the session ROW is inserted after the anchor is recorded, so
|
|
399
|
+
* the INSERT carries the value rather than an UPDATE trying to find a row that is not there yet.
|
|
400
|
+
*
|
|
401
|
+
* Deliberately NOT `sessionRelayAnchor`: that one reads the row as its last resort, which at
|
|
402
|
+
* insert time is the row being written. This is the memory copy only.
|
|
403
|
+
*/
|
|
404
|
+
relayAnchorFor(agentName, sessionId) {
|
|
405
|
+
return this.#sessionRelayAnchor.get(this.#ctx.sessionKey(agentName, sessionId));
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
//# sourceMappingURL=session-leaf-records.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-leaf-records.js","sourceRoot":"","sources":["../src/session-leaf-records.ts"],"names":[],"mappings":"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"}
|