@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 @@
|
|
|
1
|
+
{"version":3,"file":"seal-local-terminus.d.ts","sourceRoot":"","sources":["../src/seal-local-terminus.ts"],"names":[],"mappings":"AA6CA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AA2BlE,MAAM,WAAW,sBAAsB;IACrC,sFAAsF;IACtF,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,SAAS,EAAE,UAAU,CAAC;IACtB,kEAAkE;IAClE,cAAc,EAAE,UAAU,CAAC;IAC3B,mGAAmG;IACnG,OAAO,EAAE,UAAU,CAAC;IACpB,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAClD;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,UAAU,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAC9E;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CA6FlC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `DOD-M15-CARRIEDSEAL-1` — THE CLOSING LEAF THIS SIDE WRITES WHEN THERE IS NO RELAY LEFT TO ASK.
|
|
3
|
+
*
|
|
4
|
+
* ─── What this exists to fix ───────────────────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* A seal needed the relay alive, and for exactly one reason. Every message in a conversation is
|
|
7
|
+
* countersigned by the relay when it is ordered and held by BOTH parties from that moment
|
|
8
|
+
* (`069-ORDERPROOF`), so the record itself survives the relay being restarted, rolled or deleted.
|
|
9
|
+
* What did not survive was the last line: the SEAL control leaf that ends the record was handed to
|
|
10
|
+
* the relay for a sequence number like any other leaf, so a relay that was gone at close time cost
|
|
11
|
+
* the conversation its receipt — a record that was fully witnessed, fully held, and unusable.
|
|
12
|
+
*
|
|
13
|
+
* This writes that one leaf here instead.
|
|
14
|
+
*
|
|
15
|
+
* ─── Why nothing is being taken on trust ───────────────────────────────────────────────────────
|
|
16
|
+
*
|
|
17
|
+
* The leaf invents no facts. **Every field is read out of the carry it closes over**, which is the
|
|
18
|
+
* relay's own ordered log as both parties received it:
|
|
19
|
+
*
|
|
20
|
+
* - **position** — one past the last carried leaf. Contiguity from 1 is checked first, so there is
|
|
21
|
+
* no position to choose.
|
|
22
|
+
* - **`prev_root`** — the RFC 6962 fold over the carried leaves in the Structure 2 domain. This is
|
|
23
|
+
* the value the directory's own chain walk arrives at when it reaches this leaf, so naming any
|
|
24
|
+
* other one breaks the walk rather than fooling it.
|
|
25
|
+
* - **`last_seen`** — the counterparty's newest carried leaf, sequence and content hash.
|
|
26
|
+
* - **`prev_own`** — this side's newest carried leaf.
|
|
27
|
+
* - **`final_root`** — the content-only root, which is what each party signs and what the
|
|
28
|
+
* counterparty's copy must agree with.
|
|
29
|
+
*
|
|
30
|
+
* So the only thing this side supplies that is genuinely its own is the CHOICE TO STOP HERE. That is
|
|
31
|
+
* truncation, it is bounded by design, the counterparty refutes it from their own copy, and the work
|
|
32
|
+
* order says in terms not to chase it.
|
|
33
|
+
*
|
|
34
|
+
* ⚠️ **THE RECEIPT FIELDS ARE ABSENT, AND ABSENT IS NOT THE SAME AS EMPTY.** A leaf carrying a blank
|
|
35
|
+
* relay id would be CLAIMING a witness it cannot produce, and the directory judges that as a
|
|
36
|
+
* malformed receipt — correctly, because missing and malformed must not be told apart. The
|
|
37
|
+
* directory's exemption is for a terminal control leaf with no receipt AT ALL, so this writes none.
|
|
38
|
+
*
|
|
39
|
+
* Crypto refs: RFC 8032 (Ed25519, the sender signature), RFC 6962 §2.1 (the Merkle fold).
|
|
40
|
+
*/
|
|
41
|
+
import { createHash } from "node:crypto";
|
|
42
|
+
import { buildMerkleTree, merkleRoot } from "@cello-protocol/crypto";
|
|
43
|
+
import { encodeSealPayload, encodeStructure1, encodeStructure2, decodeStructure1, SCAN_RESULT_SENTINEL, } from "@cello-protocol/protocol-types";
|
|
44
|
+
/** The SEAL control leaf's kind byte — the same 0x02 the relay path hashes under. */
|
|
45
|
+
const LEAF_KIND_CTRL = 0x02;
|
|
46
|
+
/**
|
|
47
|
+
* ⚠️ FOUR DOMAINS, NOT TWO — review HIGH-2, and the collapsed form is a trust-boundary bug the
|
|
48
|
+
* directory's own `LEAF_KINDS` table already carries a comment about having removed.
|
|
49
|
+
*
|
|
50
|
+
* `prev_root` is a fold over `leafHashFor(kind, structure2)`, and that function prefixes each leaf
|
|
51
|
+
* with its own domain byte. Writing "anything but 0x02 is a message" here makes every session that
|
|
52
|
+
* ever exchanged a DOCUMENT (0x04) or carried a refusal leaf (0x05) compute a prefix root the
|
|
53
|
+
* directory cannot reproduce. It fails as a broken chain and reaches the operator as
|
|
54
|
+
* `unilateral_root_unverifiable`, whose guidance tells them their transcript ORDER is in dispute
|
|
55
|
+
* with their counterparty and to compare copies out of band — a hash-domain bug on this machine,
|
|
56
|
+
* reported as the other person's fault, on exactly the sessions where the receipt matters most.
|
|
57
|
+
*
|
|
58
|
+
* `undefined` for a byte this build cannot name. Guessing a domain for it produces a root nobody
|
|
59
|
+
* else computes, which is the same failure reached by coercion instead of by a refusal.
|
|
60
|
+
*/
|
|
61
|
+
const LEAF_DOMAINS = {
|
|
62
|
+
0x00: "msg",
|
|
63
|
+
0x02: "ctrl",
|
|
64
|
+
0x04: "doc",
|
|
65
|
+
0x05: "reject",
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Refusals, and each one is a case where writing a leaf anyway would make things worse:
|
|
69
|
+
*
|
|
70
|
+
* `seal_carry_empty` nothing was ever witnessed, so there is no record to close.
|
|
71
|
+
* `seal_carry_noncontiguous` a witnessed leaf never reached us; a terminus over a record with a
|
|
72
|
+
* hole in it would be signing a history we know is not the history.
|
|
73
|
+
* `seal_carry_own_ctrl_present` we already closed. A SECOND control leaf from one party makes the
|
|
74
|
+
* session unsealable by any directory, permanently — the caller must
|
|
75
|
+
* reuse the one that is there, never add to it.
|
|
76
|
+
* `seal_carry_unreadable` a leaf this daemon cannot decode is one it cannot chain onto.
|
|
77
|
+
* `seal_carry_leaf_kind_unknown` a leaf kind this build cannot name has no domain to hash in, and
|
|
78
|
+
* a guessed one yields a root nobody else computes.
|
|
79
|
+
*/
|
|
80
|
+
export async function buildLocalSealTerminus(input) {
|
|
81
|
+
const { carry, ownPubkeyHex, sessionIdBytes, genesis, finalRootHex, closeTimestamp, sign } = input;
|
|
82
|
+
if (carry.length === 0)
|
|
83
|
+
return { ok: false, reason: "seal_carry_empty" };
|
|
84
|
+
// Ascending and exactly 1..N. Sorted rather than assumed: the store returns rows ordered, and a
|
|
85
|
+
// terminus that trusted that ordering would be depending on a detail of a query it does not own.
|
|
86
|
+
const ordered = [...carry].sort((a, b) => a.sequenceNumber - b.sequenceNumber);
|
|
87
|
+
for (let i = 0; i < ordered.length; i++) {
|
|
88
|
+
if (ordered[i].sequenceNumber !== i + 1)
|
|
89
|
+
return { ok: false, reason: "seal_carry_noncontiguous" };
|
|
90
|
+
}
|
|
91
|
+
if (ordered.some((l) => l.leafKind === LEAF_KIND_CTRL && l.senderPubkeyHex === ownPubkeyHex)) {
|
|
92
|
+
return { ok: false, reason: "seal_carry_own_ctrl_present" };
|
|
93
|
+
}
|
|
94
|
+
// ── The links, read out of the leaves each party actually authored ──
|
|
95
|
+
// `ordered` is ascending, so the LAST match in each direction is that party's newest leaf. A
|
|
96
|
+
// decode failure anywhere refuses: this side cannot honestly say what it has seen if it cannot
|
|
97
|
+
// read what it holds.
|
|
98
|
+
let lastSeenSeq = 0;
|
|
99
|
+
let lastSeenHash = genesis;
|
|
100
|
+
let prevOwnHash = genesis;
|
|
101
|
+
for (const leaf of ordered) {
|
|
102
|
+
const s1 = decodeStructure1(leaf.structure1Cbor);
|
|
103
|
+
if (!s1.ok)
|
|
104
|
+
return { ok: false, reason: "seal_carry_unreadable" };
|
|
105
|
+
if (leaf.senderPubkeyHex === ownPubkeyHex) {
|
|
106
|
+
prevOwnHash = s1.fields.contentHash;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
lastSeenSeq = leaf.sequenceNumber;
|
|
110
|
+
lastSeenHash = s1.fields.contentHash;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The prefix root, in the STRUCTURE 2 domain — which is not the domain the certified root lives
|
|
115
|
+
* in, and conflating the two is the easiest mistake available here. `prev_root` is checked by the
|
|
116
|
+
* directory's incremental walk over `leafHashFor(kind, encodeStructure2(s2))`; the certified root
|
|
117
|
+
* is the fold over raw content hashes. Same leaves, different pre-images, different values.
|
|
118
|
+
*/
|
|
119
|
+
const prefixInputs = [];
|
|
120
|
+
for (const l of ordered) {
|
|
121
|
+
const domain = LEAF_DOMAINS[l.leafKind];
|
|
122
|
+
if (!domain)
|
|
123
|
+
return { ok: false, reason: "seal_carry_leaf_kind_unknown" };
|
|
124
|
+
prefixInputs.push({ kind: domain, data: l.structure2Cbor });
|
|
125
|
+
}
|
|
126
|
+
const prevRoot = merkleRoot(buildMerkleTree(prefixInputs));
|
|
127
|
+
// The payload and its hash come from ONE derivation, deliberately. When they diverge the directory
|
|
128
|
+
// answers `seal_payload_unbound`, whose guidance accuses the relay of altering bytes — a correct
|
|
129
|
+
// relay named as an attacker for a mismatch made on this machine.
|
|
130
|
+
const payload = encodeSealPayload({
|
|
131
|
+
session_id: sessionIdBytes,
|
|
132
|
+
final_root: new Uint8Array(Buffer.from(finalRootHex, "hex")),
|
|
133
|
+
close_timestamp: closeTimestamp,
|
|
134
|
+
attestation: "PENDING",
|
|
135
|
+
});
|
|
136
|
+
const contentHash = new Uint8Array(createHash("sha256").update(new Uint8Array([LEAF_KIND_CTRL])).update(payload).digest());
|
|
137
|
+
const structure1Cbor = encodeStructure1({
|
|
138
|
+
contentHash,
|
|
139
|
+
senderPubkey: input.ownPubkey,
|
|
140
|
+
sessionId: sessionIdBytes,
|
|
141
|
+
lastSeenSeq,
|
|
142
|
+
timestamp: closeTimestamp,
|
|
143
|
+
lastSeenHash,
|
|
144
|
+
prevOwnHash,
|
|
145
|
+
});
|
|
146
|
+
const senderSignature = await sign(structure1Cbor);
|
|
147
|
+
const sequenceNumber = ordered.length + 1;
|
|
148
|
+
const structure2Cbor = encodeStructure2({
|
|
149
|
+
sequence_number: sequenceNumber,
|
|
150
|
+
sender_pubkey: input.ownPubkey,
|
|
151
|
+
content_hash: contentHash,
|
|
152
|
+
sender_signature: senderSignature,
|
|
153
|
+
scan_result: SCAN_RESULT_SENTINEL,
|
|
154
|
+
prev_root: prevRoot,
|
|
155
|
+
});
|
|
156
|
+
return {
|
|
157
|
+
ok: true,
|
|
158
|
+
payload,
|
|
159
|
+
contentHashHex: Buffer.from(contentHash).toString("hex"),
|
|
160
|
+
// No relay fields. See the header — absent, never blank.
|
|
161
|
+
leaf: {
|
|
162
|
+
sequenceNumber,
|
|
163
|
+
leafKind: LEAF_KIND_CTRL,
|
|
164
|
+
senderPubkeyHex: ownPubkeyHex,
|
|
165
|
+
structure2Cbor,
|
|
166
|
+
structure1Cbor,
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=seal-local-terminus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-local-terminus.js","sourceRoot":"","sources":["../src/seal-local-terminus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAkB,MAAM,wBAAwB,CAAC;AACrF,OAAO,EACL,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,GAC9F,MAAM,gCAAgC,CAAC;AAGxC,qFAAqF;AACrF,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B;;;;;;;;;;;;;;GAcG;AACH,MAAM,YAAY,GAAgE;IAChF,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,QAAQ;CACf,CAAC;AAuBF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAA6B;IAE7B,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAEnG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IACzE,gGAAgG;IAChG,iGAAiG;IACjG,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;IAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,CAAC,CAAE,CAAC,cAAc,KAAK,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACrG,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,IAAI,CAAC,CAAC,eAAe,KAAK,YAAY,CAAC,EAAE,CAAC;QAC7F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;IAC9D,CAAC;IAED,uEAAuE;IACvE,6FAA6F;IAC7F,+FAA+F;IAC/F,sBAAsB;IACtB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,OAAO,CAAC;IAC3B,IAAI,WAAW,GAAG,OAAO,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;QAClE,IAAI,IAAI,CAAC,eAAe,KAAK,YAAY,EAAE,CAAC;YAC1C,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;YAClC,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,MAAM,YAAY,GAAgB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;QAC1E,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;IAE3D,mGAAmG;IACnG,iGAAiG;IACjG,kEAAkE;IAClE,MAAM,OAAO,GAAG,iBAAiB,CAAC;QAChC,UAAU,EAAE,cAAc;QAC1B,UAAU,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC5D,eAAe,EAAE,cAAc;QAC/B,WAAW,EAAE,SAAS;KACvB,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,IAAI,UAAU,CAChC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CACvF,CAAC;IAEF,MAAM,cAAc,GAAG,gBAAgB,CAAC;QACtC,WAAW;QACX,YAAY,EAAE,KAAK,CAAC,SAAS;QAC7B,SAAS,EAAE,cAAc;QACzB,WAAW;QACX,SAAS,EAAE,cAAc;QACzB,YAAY;QACZ,WAAW;KACZ,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC;IAEnD,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C,MAAM,cAAc,GAAG,gBAAgB,CAAC;QACtC,eAAe,EAAE,cAAc;QAC/B,aAAa,EAAE,KAAK,CAAC,SAAS;QAC9B,YAAY,EAAE,WAAW;QACzB,gBAAgB,EAAE,eAAe;QACjC,WAAW,EAAE,oBAAoB;QACjC,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAC;IAEH,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO;QACP,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACxD,yDAAyD;QACzD,IAAI,EAAE;YACJ,cAAc;YACd,QAAQ,EAAE,cAAc;YACxB,eAAe,EAAE,YAAY;YAC7B,cAAc;YACd,cAAc;SACf;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side bilateral upgrade of a stored seal receipt.
|
|
3
|
+
*
|
|
4
|
+
* When the previously-absent party (B) ratifies a unilateral seal and the directory confirms the
|
|
5
|
+
* upgrade to bilateral (seal_upgrade_confirmed, cryptographically verified via verifyUpgradeConfirmedCert),
|
|
6
|
+
* BOTH parties upgrade their OWN already-persisted unilateral receipt: the counterparty that was
|
|
7
|
+
* recorded 'absent' becomes 'recovered' (it has now ratified + proved content possession via the
|
|
8
|
+
* KERNEL gate). This is done CLIENT-SIDE — the directory does not persist the seal leaves/legibility
|
|
9
|
+
* anywhere reachable at upgrade time, so there is nothing new to ship; the bilateral receipt is built
|
|
10
|
+
* from the cert each party already holds. The seal signatures do NOT bind the legibility, so mutating
|
|
11
|
+
* the stored (unsigned) legibility invalidates nothing.
|
|
12
|
+
*
|
|
13
|
+
* Never overstates: only the attestation_mode flips (absent → recovered); frontiers are unchanged
|
|
14
|
+
* (the honest floor). Attestation modes: 'live' | 'recovered' | 'absent' (seal-legibility-tbs.ts).
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Return the legibility with every participant marked 'absent' re-marked 'recovered'. Mutates in place
|
|
18
|
+
* and returns the same reference. Tolerant: a null/undefined/malformed legibility is returned unchanged
|
|
19
|
+
* rather than throwing (the caller persists whatever it had).
|
|
20
|
+
*/
|
|
21
|
+
export declare function upgradeAbsentToRecovered(legibility: unknown): unknown;
|
|
22
|
+
/**
|
|
23
|
+
* True if the legibility still has any 'absent' participant — i.e. it has NOT yet been upgraded to
|
|
24
|
+
* bilateral (upgradeAbsentToRecovered flips the sole absent party to 'recovered'). The absent-party
|
|
25
|
+
* 3b persist uses this as a ONE-WAY RATCHET: a re-delivered seal_unilateral_notification (reconnect
|
|
26
|
+
* burst) must not overwrite an already-'recovered' stored receipt back to the stale 'absent' snapshot.
|
|
27
|
+
* A malformed/missing legibility returns false (nothing to protect; let the caller persist).
|
|
28
|
+
*/
|
|
29
|
+
export declare function hasAbsentParticipant(legibility: unknown): boolean;
|
|
30
|
+
//# sourceMappingURL=seal-receipt-upgrade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-receipt-upgrade.d.ts","sourceRoot":"","sources":["../src/seal-receipt-upgrade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAUrE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAOjE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side bilateral upgrade of a stored seal receipt.
|
|
3
|
+
*
|
|
4
|
+
* When the previously-absent party (B) ratifies a unilateral seal and the directory confirms the
|
|
5
|
+
* upgrade to bilateral (seal_upgrade_confirmed, cryptographically verified via verifyUpgradeConfirmedCert),
|
|
6
|
+
* BOTH parties upgrade their OWN already-persisted unilateral receipt: the counterparty that was
|
|
7
|
+
* recorded 'absent' becomes 'recovered' (it has now ratified + proved content possession via the
|
|
8
|
+
* KERNEL gate). This is done CLIENT-SIDE — the directory does not persist the seal leaves/legibility
|
|
9
|
+
* anywhere reachable at upgrade time, so there is nothing new to ship; the bilateral receipt is built
|
|
10
|
+
* from the cert each party already holds. The seal signatures do NOT bind the legibility, so mutating
|
|
11
|
+
* the stored (unsigned) legibility invalidates nothing.
|
|
12
|
+
*
|
|
13
|
+
* Never overstates: only the attestation_mode flips (absent → recovered); frontiers are unchanged
|
|
14
|
+
* (the honest floor). Attestation modes: 'live' | 'recovered' | 'absent' (seal-legibility-tbs.ts).
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Return the legibility with every participant marked 'absent' re-marked 'recovered'. Mutates in place
|
|
18
|
+
* and returns the same reference. Tolerant: a null/undefined/malformed legibility is returned unchanged
|
|
19
|
+
* rather than throwing (the caller persists whatever it had).
|
|
20
|
+
*/
|
|
21
|
+
export function upgradeAbsentToRecovered(legibility) {
|
|
22
|
+
if (!legibility || typeof legibility !== "object")
|
|
23
|
+
return legibility;
|
|
24
|
+
const participants = legibility.participants;
|
|
25
|
+
if (!Array.isArray(participants))
|
|
26
|
+
return legibility;
|
|
27
|
+
for (const p of participants) {
|
|
28
|
+
if (p && typeof p === "object" && p.attestation_mode === "absent") {
|
|
29
|
+
p.attestation_mode = "recovered";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return legibility;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* True if the legibility still has any 'absent' participant — i.e. it has NOT yet been upgraded to
|
|
36
|
+
* bilateral (upgradeAbsentToRecovered flips the sole absent party to 'recovered'). The absent-party
|
|
37
|
+
* 3b persist uses this as a ONE-WAY RATCHET: a re-delivered seal_unilateral_notification (reconnect
|
|
38
|
+
* burst) must not overwrite an already-'recovered' stored receipt back to the stale 'absent' snapshot.
|
|
39
|
+
* A malformed/missing legibility returns false (nothing to protect; let the caller persist).
|
|
40
|
+
*/
|
|
41
|
+
export function hasAbsentParticipant(legibility) {
|
|
42
|
+
if (!legibility || typeof legibility !== "object")
|
|
43
|
+
return false;
|
|
44
|
+
const participants = legibility.participants;
|
|
45
|
+
if (!Array.isArray(participants))
|
|
46
|
+
return false;
|
|
47
|
+
return participants.some((p) => p && typeof p === "object" && p.attestation_mode === "absent");
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=seal-receipt-upgrade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-receipt-upgrade.js","sourceRoot":"","sources":["../src/seal-receipt-upgrade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAAmB;IAC1D,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC;IACrE,MAAM,YAAY,GAAI,UAAyC,CAAC,YAAY,CAAC;IAC7E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;QAAE,OAAO,UAAU,CAAC;IACpD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAK,CAAoC,CAAC,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YACrG,CAAkC,CAAC,gBAAgB,GAAG,WAAW,CAAC;QACrE,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAmB;IACtD,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAChE,MAAM,YAAY,GAAI,UAAyC,CAAC,YAAY,CAAC;IAC7E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,YAAY,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAK,CAAoC,CAAC,gBAAgB,KAAK,QAAQ,CACzG,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `DOD-M15-CARRIEDSEAL-1` — WHEN THE RELAY GAVE NO ANSWER, as opposed to giving a bad one.
|
|
3
|
+
*
|
|
4
|
+
* The seal writes its own closing leaf only when there was nobody to ask. That is a narrower
|
|
5
|
+
* condition than "the submit failed", and the difference is load-bearing: a relay that REFUSED a
|
|
6
|
+
* leaf has ruled on it, and routing around a ruling is exactly the behaviour a trust layer must not
|
|
7
|
+
* have. A relay that never answered has ruled on nothing.
|
|
8
|
+
*
|
|
9
|
+
* ⚠️ **THE LIST IS AN ALLOW-SET, AND THE DEFAULT IS THE OLD BEHAVIOUR.** A reason that is not here
|
|
10
|
+
* does not unlock the local terminus — the close fails as it does today. That asymmetry is the whole
|
|
11
|
+
* design: a new relay refusal reason added next year cannot silently widen this, because widening
|
|
12
|
+
* requires someone to come here and add it. The reverse default — "fall back unless the reason is
|
|
13
|
+
* one of these known refusals" — would have let every future refusal become a bypass.
|
|
14
|
+
*
|
|
15
|
+
* Every reason below is produced by THIS daemon, in `session-relay-client.ts` or
|
|
16
|
+
* `session-seal.ts`'s transport resolution, at a point where no `hash_submit_ack` came back.
|
|
17
|
+
*
|
|
18
|
+
* Three that are deliberately NOT here, and why each one is an answer rather than a silence:
|
|
19
|
+
* - `relay_assignment_rejected` — the relay considered the session and declined it.
|
|
20
|
+
* - `relay_ack_unverified` / `relay_ack_malformed` — the relay ANSWERED and the answer did not
|
|
21
|
+
* check out. That is a relay to distrust, and letting distrust promote us onto a path with
|
|
22
|
+
* weaker evidence is the wrong direction entirely.
|
|
23
|
+
* - `standing_receiver_unavailable` — this agent is not started. Local, fixable, and the existing
|
|
24
|
+
* guidance ("start the agent and retry") is the correct thing to tell someone.
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* ⚠️ THE ALLOW-SET IS NOT SUFFICIENT ON ITS OWN, AND THIS IS THE HALF THAT MAKES IT SOUND.
|
|
28
|
+
*
|
|
29
|
+
* The submit boundary COLLAPSES almost every relay refusal into `relay_unavailable`. Only three
|
|
30
|
+
* token faults survive under their own names (`DOD-M15-TOKENSTALE-1` split those out); everything
|
|
31
|
+
* else the relay actually said — rate limited, over its slot cap, this agent's token rejected as
|
|
32
|
+
* invalid, and by that code's own documented default every future relay-side reason — arrives at
|
|
33
|
+
* this file wearing the label for an outage.
|
|
34
|
+
*
|
|
35
|
+
* So the reason string alone cannot tell "nobody was there" from "they authenticated me and said
|
|
36
|
+
* no". A relay exercising judgement about this agent would have been read as silence and sealed
|
|
37
|
+
* around, which is the one thing this whole design says must never happen.
|
|
38
|
+
*
|
|
39
|
+
* The standing refusal is the signal the boundary drops, and the client still holds it. Ask for it
|
|
40
|
+
* directly rather than trying to infer it from a label that was never going to carry it.
|
|
41
|
+
*
|
|
42
|
+
* **A ruling is anything the relay answered with.** Not a list of known-bad reasons: a set like that
|
|
43
|
+
* defaults to "silence" for anything unfamiliar, which is the wrong direction here — a reason added
|
|
44
|
+
* next year would quietly become a bypass. Present means refused.
|
|
45
|
+
*/
|
|
46
|
+
export declare function relayRefusedUs(refusal: {
|
|
47
|
+
reason: string;
|
|
48
|
+
} | null | undefined): boolean;
|
|
49
|
+
/** The relay never ruled. See the header — this is an allow-set and the default is to fail as before. */
|
|
50
|
+
export declare const RELAY_GAVE_NO_ANSWER: ReadonlySet<string>;
|
|
51
|
+
//# sourceMappingURL=seal-relay-silence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-relay-silence.d.ts","sourceRoot":"","sources":["../src/seal-relay-silence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEtF;AAED,yGAAyG;AACzG,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAyBnD,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `DOD-M15-CARRIEDSEAL-1` — WHEN THE RELAY GAVE NO ANSWER, as opposed to giving a bad one.
|
|
3
|
+
*
|
|
4
|
+
* The seal writes its own closing leaf only when there was nobody to ask. That is a narrower
|
|
5
|
+
* condition than "the submit failed", and the difference is load-bearing: a relay that REFUSED a
|
|
6
|
+
* leaf has ruled on it, and routing around a ruling is exactly the behaviour a trust layer must not
|
|
7
|
+
* have. A relay that never answered has ruled on nothing.
|
|
8
|
+
*
|
|
9
|
+
* ⚠️ **THE LIST IS AN ALLOW-SET, AND THE DEFAULT IS THE OLD BEHAVIOUR.** A reason that is not here
|
|
10
|
+
* does not unlock the local terminus — the close fails as it does today. That asymmetry is the whole
|
|
11
|
+
* design: a new relay refusal reason added next year cannot silently widen this, because widening
|
|
12
|
+
* requires someone to come here and add it. The reverse default — "fall back unless the reason is
|
|
13
|
+
* one of these known refusals" — would have let every future refusal become a bypass.
|
|
14
|
+
*
|
|
15
|
+
* Every reason below is produced by THIS daemon, in `session-relay-client.ts` or
|
|
16
|
+
* `session-seal.ts`'s transport resolution, at a point where no `hash_submit_ack` came back.
|
|
17
|
+
*
|
|
18
|
+
* Three that are deliberately NOT here, and why each one is an answer rather than a silence:
|
|
19
|
+
* - `relay_assignment_rejected` — the relay considered the session and declined it.
|
|
20
|
+
* - `relay_ack_unverified` / `relay_ack_malformed` — the relay ANSWERED and the answer did not
|
|
21
|
+
* check out. That is a relay to distrust, and letting distrust promote us onto a path with
|
|
22
|
+
* weaker evidence is the wrong direction entirely.
|
|
23
|
+
* - `standing_receiver_unavailable` — this agent is not started. Local, fixable, and the existing
|
|
24
|
+
* guidance ("start the agent and retry") is the correct thing to tell someone.
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* ⚠️ THE ALLOW-SET IS NOT SUFFICIENT ON ITS OWN, AND THIS IS THE HALF THAT MAKES IT SOUND.
|
|
28
|
+
*
|
|
29
|
+
* The submit boundary COLLAPSES almost every relay refusal into `relay_unavailable`. Only three
|
|
30
|
+
* token faults survive under their own names (`DOD-M15-TOKENSTALE-1` split those out); everything
|
|
31
|
+
* else the relay actually said — rate limited, over its slot cap, this agent's token rejected as
|
|
32
|
+
* invalid, and by that code's own documented default every future relay-side reason — arrives at
|
|
33
|
+
* this file wearing the label for an outage.
|
|
34
|
+
*
|
|
35
|
+
* So the reason string alone cannot tell "nobody was there" from "they authenticated me and said
|
|
36
|
+
* no". A relay exercising judgement about this agent would have been read as silence and sealed
|
|
37
|
+
* around, which is the one thing this whole design says must never happen.
|
|
38
|
+
*
|
|
39
|
+
* The standing refusal is the signal the boundary drops, and the client still holds it. Ask for it
|
|
40
|
+
* directly rather than trying to infer it from a label that was never going to carry it.
|
|
41
|
+
*
|
|
42
|
+
* **A ruling is anything the relay answered with.** Not a list of known-bad reasons: a set like that
|
|
43
|
+
* defaults to "silence" for anything unfamiliar, which is the wrong direction here — a reason added
|
|
44
|
+
* next year would quietly become a bypass. Present means refused.
|
|
45
|
+
*/
|
|
46
|
+
export function relayRefusedUs(refusal) {
|
|
47
|
+
return refusal != null;
|
|
48
|
+
}
|
|
49
|
+
/** The relay never ruled. See the header — this is an allow-set and the default is to fail as before. */
|
|
50
|
+
export const RELAY_GAVE_NO_ANSWER = new Set([
|
|
51
|
+
// No relay client, no stream, or the session is gone from the relay's side.
|
|
52
|
+
"relay_unavailable",
|
|
53
|
+
"relay_client_unavailable",
|
|
54
|
+
"relay_client_closed",
|
|
55
|
+
"relay_stream_closed",
|
|
56
|
+
/**
|
|
57
|
+
* ⚠️ KEPT DELIBERATELY, against a review finding that called it "a relay answer". It is one, and
|
|
58
|
+
* it is still the right side of this line.
|
|
59
|
+
*
|
|
60
|
+
* The relay answers `session_not_found` for a session it no longer holds — and a relay that has
|
|
61
|
+
* RESTARTED holds nothing, because its leaf log is a map in process memory. That is precisely the
|
|
62
|
+
* scenario this order exists for: the witness is gone even though the process is up and talking.
|
|
63
|
+
* Excluding it would mean a restarted relay still costs a conversation its receipt, which is the
|
|
64
|
+
* defect, not the fix.
|
|
65
|
+
*
|
|
66
|
+
* The refusals that must NOT unlock this path are the relay exercising judgement about this agent,
|
|
67
|
+
* and those are caught by `relayRefusedUs` above rather than by this list.
|
|
68
|
+
*/
|
|
69
|
+
"relay_session_gone",
|
|
70
|
+
// The frame never left, or left and was never answered.
|
|
71
|
+
"relay_submit_send_failed",
|
|
72
|
+
"relay_submit_timeout",
|
|
73
|
+
// This daemon has no endpoint to dial any more — the relay is gone as far as it can tell.
|
|
74
|
+
"no_persisted_relay_endpoint",
|
|
75
|
+
]);
|
|
76
|
+
//# sourceMappingURL=seal-relay-silence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-relay-silence.js","sourceRoot":"","sources":["../src/seal-relay-silence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAAC,OAA8C;IAC3E,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC;AAED,yGAAyG;AACzG,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC;IAC/D,4EAA4E;IAC5E,mBAAmB;IACnB,0BAA0B;IAC1B,qBAAqB;IACrB,qBAAqB;IACrB;;;;;;;;;;;;OAYG;IACH,oBAAoB;IACpB,wDAAwD;IACxD,0BAA0B;IAC1B,sBAAsB;IACtB,0FAA0F;IAC1F,6BAA6B;CAC9B,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOD-M15-SEALPRECOND-1 — wait for this side's own record to stop moving before signing it.
|
|
3
|
+
*
|
|
4
|
+
* ⚠️ THIS IS NOT A DELAY, AND THE DISTINCTION IS THE WHOLE UNIT. On 2026-09-11 the daemon held the
|
|
5
|
+
* relay's ordering confirmation for 352 milliseconds and signed without it; a 14-millisecond gap
|
|
6
|
+
* and a 14-second gap fail identically, so nothing here may be tuned to a window. What is waited
|
|
7
|
+
* ON is a condition of state — `sealReadiness().ownLeavesOrdered`, the leaves of ours the relay has
|
|
8
|
+
* already ordered and this tree has not placed. The bound exists only so a send that never
|
|
9
|
+
* resolves cannot hold the operator's close forever; it is the escape, not the mechanism.
|
|
10
|
+
*
|
|
11
|
+
* The condition is re-read every poll and the wait returns the instant it clears, which is what a
|
|
12
|
+
* fixed sleep cannot do and what the tests assert.
|
|
13
|
+
*/
|
|
14
|
+
import type { SessionNodeManager } from "./session-node-manager.js";
|
|
15
|
+
/**
|
|
16
|
+
* How long a close may wait for its own in-flight send to take its place in the record.
|
|
17
|
+
*
|
|
18
|
+
* Two seconds against a condition that resolved in 14ms when it was measured. Generous on purpose:
|
|
19
|
+
* the cost of waiting too long is an operator's close taking a moment, and the cost of not waiting
|
|
20
|
+
* is a signature no directory can verify and a receipt that is gone for both parties permanently.
|
|
21
|
+
*/
|
|
22
|
+
export declare const SEAL_SETTLE_DEADLINE_MS = 2000;
|
|
23
|
+
export type SealSettleOutcome = {
|
|
24
|
+
settled: true;
|
|
25
|
+
waitedMs: number;
|
|
26
|
+
} | {
|
|
27
|
+
settled: false;
|
|
28
|
+
waitedMs: number;
|
|
29
|
+
ownLeavesOrdered: number;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Block until this session has no own leaf the relay has ordered and the tree has not placed.
|
|
33
|
+
*
|
|
34
|
+
* Returns immediately — no timer, no microtask hop beyond the read — when the record is already
|
|
35
|
+
* level, which is every ordinary close.
|
|
36
|
+
*/
|
|
37
|
+
export declare function awaitOwnRecordSettled(sessionNodeManager: Pick<SessionNodeManager, "sealReadiness">, agentName: string, sessionId: string, deadlineMs?: number): Promise<SealSettleOutcome>;
|
|
38
|
+
//# sourceMappingURL=seal-settle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-settle.d.ts","sourceRoot":"","sources":["../src/seal-settle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAK7C,MAAM,MAAM,iBAAiB,GACzB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,eAAe,CAAC,EAC7D,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,MAAgC,GAC3C,OAAO,CAAC,iBAAiB,CAAC,CAe5B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How long a close may wait for its own in-flight send to take its place in the record.
|
|
3
|
+
*
|
|
4
|
+
* Two seconds against a condition that resolved in 14ms when it was measured. Generous on purpose:
|
|
5
|
+
* the cost of waiting too long is an operator's close taking a moment, and the cost of not waiting
|
|
6
|
+
* is a signature no directory can verify and a receipt that is gone for both parties permanently.
|
|
7
|
+
*/
|
|
8
|
+
export const SEAL_SETTLE_DEADLINE_MS = 2_000;
|
|
9
|
+
/** How often the condition is re-read. Short enough that a settled record is not made to wait. */
|
|
10
|
+
const SEAL_SETTLE_POLL_MS = 20;
|
|
11
|
+
/**
|
|
12
|
+
* Block until this session has no own leaf the relay has ordered and the tree has not placed.
|
|
13
|
+
*
|
|
14
|
+
* Returns immediately — no timer, no microtask hop beyond the read — when the record is already
|
|
15
|
+
* level, which is every ordinary close.
|
|
16
|
+
*/
|
|
17
|
+
export async function awaitOwnRecordSettled(sessionNodeManager, agentName, sessionId, deadlineMs = SEAL_SETTLE_DEADLINE_MS) {
|
|
18
|
+
const started = Date.now();
|
|
19
|
+
let readiness = sessionNodeManager.sealReadiness(agentName, sessionId);
|
|
20
|
+
while (readiness.ownLeavesOrdered > 0 && Date.now() - started < deadlineMs) {
|
|
21
|
+
await new Promise((resolve) => {
|
|
22
|
+
const t = setTimeout(resolve, SEAL_SETTLE_POLL_MS);
|
|
23
|
+
// Never hold the process — or a test runner — open on a session that is going nowhere.
|
|
24
|
+
t.unref?.();
|
|
25
|
+
});
|
|
26
|
+
readiness = sessionNodeManager.sealReadiness(agentName, sessionId);
|
|
27
|
+
}
|
|
28
|
+
const waitedMs = Date.now() - started;
|
|
29
|
+
return readiness.ownLeavesOrdered > 0
|
|
30
|
+
? { settled: false, waitedMs, ownLeavesOrdered: readiness.ownLeavesOrdered }
|
|
31
|
+
: { settled: true, waitedMs };
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=seal-settle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-settle.js","sourceRoot":"","sources":["../src/seal-settle.ts"],"names":[],"mappings":"AAeA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAE7C,kGAAkG;AAClG,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAM/B;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,kBAA6D,EAC7D,SAAiB,EACjB,SAAiB,EACjB,aAAqB,uBAAuB;IAE5C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,SAAS,GAAG,kBAAkB,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACvE,OAAO,SAAS,CAAC,gBAAgB,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,UAAU,EAAE,CAAC;QAC3E,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YACnD,uFAAuF;YACvF,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QACH,SAAS,GAAG,kBAAkB,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IACtC,OAAO,SAAS,CAAC,gBAAgB,GAAG,CAAC;QACnC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,EAAE;QAC5E,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type { KeyProvider } from "@cello-protocol/crypto";
|
|
2
|
+
import type { Logger } from "./types.js";
|
|
3
|
+
import type { DaemonRegistrationPersistence } from "./registration-persistence.js";
|
|
4
|
+
/**
|
|
5
|
+
* Domain separator for the upgrade-ack TBS. B's daemon and the directory MUST build byte-identical
|
|
6
|
+
* bytes — same domain string, same cbor-x encoder options (tagUint8Array:false); the directory side
|
|
7
|
+
* must be kept byte-identical. Domain separation prevents replay as any other CELLO signature.
|
|
8
|
+
*/
|
|
9
|
+
export declare const SEAL_UPGRADE_ACK_DOMAIN = "cello-seal-upgrade-ack-v1";
|
|
10
|
+
/** The exact upgrade-ack TBS B signs / the directory + present party verify. */
|
|
11
|
+
export declare function buildSealUpgradeAckTbs(sessionId: Uint8Array, sealedRoot: Uint8Array): Uint8Array;
|
|
12
|
+
/**
|
|
13
|
+
* Verifiability of a session for B to ratify a unilateral seal — the SAME bar as the auto-ack.
|
|
14
|
+
*
|
|
15
|
+
* `unverifiable` carries WHY, not just whether — `DOD-M15-SEALWIRE-1` part B1, review F-A.
|
|
16
|
+
*
|
|
17
|
+
* It was `tampered: boolean`, which was true while a hash mismatch was the only way to fail the
|
|
18
|
+
* cross-check. B1 added two more, and BOTH ARE ORDINARY: a peer on a newer build naming an
|
|
19
|
+
* algorithm this daemon cannot reproduce, and a salted frame arriving before the salt agreement
|
|
20
|
+
* landed. A boolean forces this file to call all three a tamper.
|
|
21
|
+
*/
|
|
22
|
+
export interface SealUpgradeReadiness {
|
|
23
|
+
known: boolean;
|
|
24
|
+
/** `null` when the content verified. Otherwise WHY it could not be verified. */
|
|
25
|
+
unverifiable: "tampered" | "unverifiable" | null;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* THE KERNEL DECISION. B may sign its ratification ONLY when it genuinely possesses + integrity-
|
|
29
|
+
* verified the content behind R1. A session B has no record of (content_unrecoverable) or whose
|
|
30
|
+
* content it could not verify is REFUSED. Verified-but-disliked content is NOT a refusal —
|
|
31
|
+
* disagreement ≠ unverifiable.
|
|
32
|
+
*
|
|
33
|
+
* ⚠️ THE REFUSAL IS THE SAME FOR BOTH CAUSES; ONLY THE NAME DIFFERS. Never ratify content you could
|
|
34
|
+
* not verify — that is binary and it is the kernel. But `content_tamper` is a SECURITY claim, and
|
|
35
|
+
* emitting it for an honest peer on a newer build is the defect this split exists to remove: an
|
|
36
|
+
* alarm that fires on the benign case teaches an operator to dismiss the one that matters.
|
|
37
|
+
*/
|
|
38
|
+
export declare function evaluateSealUpgrade(readiness: SealUpgradeReadiness): {
|
|
39
|
+
proceed: true;
|
|
40
|
+
} | {
|
|
41
|
+
proceed: false;
|
|
42
|
+
refuseReason: "content_unrecoverable" | "content_tamper" | "content_verification_unavailable";
|
|
43
|
+
};
|
|
44
|
+
export interface AttemptSealUpgradeDeps {
|
|
45
|
+
logger: Logger;
|
|
46
|
+
agentName: string;
|
|
47
|
+
agentPubkeyHex: string;
|
|
48
|
+
/** B's session verifiability for this session (SessionNodeManager.getSealUpgradeReadiness). */
|
|
49
|
+
getReadiness: (agentName: string, sessionIdHex: string) => SealUpgradeReadiness;
|
|
50
|
+
/**
|
|
51
|
+
* The number of content leaves B holds for this session (SessionNodeManager.getSessionTree
|
|
52
|
+
* (...).size()). R1 has leaf_count leaves = content leaves + A's single SEAL ctrl leaf, so B's
|
|
53
|
+
* content tree must hold at least leaf_count-1 leaves or B is missing content it would over-attest.
|
|
54
|
+
*/
|
|
55
|
+
getContentLeafCount: (agentName: string, sessionIdHex: string) => number;
|
|
56
|
+
/** Recover parked content so B holds everything behind R1 before the gate (autoRecoverForAgent). */
|
|
57
|
+
recoverContent: (agentName: string) => Promise<void>;
|
|
58
|
+
/** B's K_local signer for this agent (keyProviders.get). */
|
|
59
|
+
getKeyProvider: (agentName: string) => KeyProvider | undefined;
|
|
60
|
+
/** Send a signaling frame to the directory (signaling.sendRaw). */
|
|
61
|
+
sendRaw: (frame: Record<string, unknown>) => Promise<{
|
|
62
|
+
ok: boolean;
|
|
63
|
+
}>;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* THE KERNEL, wired. Recover content → consult the gate → REFUSE (no signature, no request) on
|
|
67
|
+
* content_unrecoverable / content_tamper → else sign the ack over R1 with B's OWN K_local and send
|
|
68
|
+
* seal_upgrade_request. Returns whether a request was sent (and the refuse reason if not) so a unit
|
|
69
|
+
* test asserts the gate is genuinely consulted, not bypassed. Never throws.
|
|
70
|
+
*/
|
|
71
|
+
export declare function attemptSealUpgrade(deps: AttemptSealUpgradeDeps, sessionIdHex: string, frame: Record<string, unknown>): Promise<{
|
|
72
|
+
sent: boolean;
|
|
73
|
+
reason?: string;
|
|
74
|
+
}>;
|
|
75
|
+
export interface VerifyUpgradeConfirmedDeps {
|
|
76
|
+
logger: Logger;
|
|
77
|
+
agentName: string;
|
|
78
|
+
agentPubkeyHex: string;
|
|
79
|
+
/** DB-backed identity persistence (the FROST share for cert verification). */
|
|
80
|
+
persistence: DaemonRegistrationPersistence;
|
|
81
|
+
/**
|
|
82
|
+
* The counterparty pubkey (hex) of the LOCAL session record for sessionIdHex, or null if this
|
|
83
|
+
* agent has no such session. Binds the cert's present/returning pubkeys to the REAL participants so
|
|
84
|
+
* a malicious directory cannot sign the ack with a throwaway key and force a state transition on a
|
|
85
|
+
* session we are in (or push a confirmed frame for a session we never had).
|
|
86
|
+
*/
|
|
87
|
+
getCounterpartyHex: (agentName: string, sessionIdHex: string) => string | null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Dual-attestation verify. NEVER trust the directory's "bilateral" claim.
|
|
91
|
+
*
|
|
92
|
+
* - ALWAYS verify the RETURNING attestation (B's ack) over R1 — proves B genuinely ratified, catches
|
|
93
|
+
* a directory that fabricated or swapped B's signature. The load-bearing check (anyone can do it).
|
|
94
|
+
* - If THIS agent is the PRESENT party (A, holds its primary key), ALSO verify the present attestation
|
|
95
|
+
* over the rebuilt seal TBS (leaf_count-bound). The responder (B) cannot (no initiator key).
|
|
96
|
+
*
|
|
97
|
+
* Returns { ok:false, reason } on any malformed/forged cert — the caller must NOT mark the session
|
|
98
|
+
* bilateral in that case. Returns the party so the caller can log accurately.
|
|
99
|
+
*/
|
|
100
|
+
export declare function verifyUpgradeConfirmedCert(deps: VerifyUpgradeConfirmedDeps, sessionIdHex: string, frame: Record<string, unknown>): Promise<{
|
|
101
|
+
ok: true;
|
|
102
|
+
party: "present" | "returning";
|
|
103
|
+
} | {
|
|
104
|
+
ok: false;
|
|
105
|
+
reason: string;
|
|
106
|
+
}>;
|
|
107
|
+
//# sourceMappingURL=seal-upgrade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seal-upgrade.d.ts","sourceRoot":"","sources":["../src/seal-upgrade.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAGnF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AAEnE,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAEhG;AAMD;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,gFAAgF;IAChF,YAAY,EAAE,UAAU,GAAG,cAAc,GAAG,IAAI,CAAC;CAClD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,oBAAoB,GAC9B;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GAAG;IACrB,OAAO,EAAE,KAAK,CAAC;IACf,YAAY,EAAE,uBAAuB,GAAG,gBAAgB,GAAG,kCAAkC,CAAC;CAC/F,CAKA;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,+FAA+F;IAC/F,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,oBAAoB,CAAC;IAChF;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IACzE,oGAAoG;IACpG,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,4DAA4D;IAC5D,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAC/D,mEAAmE;IACnE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACvE;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,sBAAsB,EAC5B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqF7C;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,WAAW,EAAE,6BAA6B,CAAC;IAC3C;;;;;OAKG;IACH,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAChF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,0BAA0B,EAChC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,WAAW,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA0DvF"}
|