@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,532 @@
|
|
|
1
|
+
import { decodeStructure1 } from "@cello-protocol/protocol-types";
|
|
2
|
+
import { verify } from "@cello-protocol/crypto";
|
|
3
|
+
import { pubkeyMatchesHex } from "./park-envelope.js";
|
|
4
|
+
import { AUTHORSHIP_CONTENT_HASH_MISMATCH, AUTHORSHIP_SESSION_MISMATCH, AUTHORSHIP_SELF_CHAIN_MISMATCH, AUTHORSHIP_ACK_HASH_MISMATCH, AUTHORSHIP_ACK_HASH_UNKNOWN, SELF_CHAIN_MEMORY, SELF_CHAIN_GAP_GRACE_MS, bytesEqual, } from "./session-node-types.js";
|
|
5
|
+
export class AuthorshipVerifier {
|
|
6
|
+
#ctx;
|
|
7
|
+
constructor(ctx) {
|
|
8
|
+
this.#ctx = ctx;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Every content hash accepted from the counterparty on a session, so a link to one of THEIR
|
|
12
|
+
* earlier messages can be told apart from a link to something they never sent.
|
|
13
|
+
*
|
|
14
|
+
* ⚠️ BOUNDED, because it is fed by a peer. A conversation must not cost unbounded memory because
|
|
15
|
+
* the other side kept talking: the oldest entries are dropped past the cap, and a link older than
|
|
16
|
+
* that is refused. That is the right way round — the cap makes the check STRICTER as it bites,
|
|
17
|
+
* never looser.
|
|
18
|
+
*/
|
|
19
|
+
#receivedFromCounterparty = new Map();
|
|
20
|
+
/** The MOST RECENT of those, which is what an honest next message links to. */
|
|
21
|
+
#lastFromCounterparty = new Map();
|
|
22
|
+
/**
|
|
23
|
+
* DOD-M15-SELFCHAIN-GAP-1 — when this session first saw a predecessor it does not hold.
|
|
24
|
+
*
|
|
25
|
+
* ⚠️ NOT DURABLE, AND THAT IS THE SAFE DIRECTION. A restart forgets the clock, so the next
|
|
26
|
+
* mismatch starts a fresh grace rather than freezing immediately on a session that has been
|
|
27
|
+
* quiet for hours. The failure mode of losing it is one more grace period of refusals; the
|
|
28
|
+
* failure mode of persisting it wrongly is freezing a healthy conversation on boot.
|
|
29
|
+
*/
|
|
30
|
+
#selfChainGap = new Map();
|
|
31
|
+
/**
|
|
32
|
+
* `DOD-M15-AUTHORSHIP-ABSENT-1` — DID THIS SENDER PROVE THEY WROTE THIS MESSAGE?
|
|
33
|
+
*
|
|
34
|
+
* The one place that answers it, for both callers, so "checked" cannot mean two different things
|
|
35
|
+
* in two places. It takes the signature as an ARGUMENT rather than digging it out of a structure,
|
|
36
|
+
* which is the whole of the fix: the signature used to be read only from `structure2_cbor` — the
|
|
37
|
+
* RELAY's record — so a receiver could not check authorship without a relay record, and refusing
|
|
38
|
+
* on its absence would have made the relay a precondition for reading mail. The content frame now
|
|
39
|
+
* carries the signature beside the bytes it signs, exactly as `hash_submit` always has, and this
|
|
40
|
+
* method does not care which of the two handed it over.
|
|
41
|
+
*
|
|
42
|
+
* It VERIFIES and it does not LOG. The severity of each verdict differs by caller — the content
|
|
43
|
+
* frame refuses an `unusable`, the park path shrugs at one — and a method that logged its own
|
|
44
|
+
* conclusion would either report a refusal that did not happen or stay silent on one that did.
|
|
45
|
+
*/
|
|
46
|
+
verifyAuthorshipClaim(agentName, sessionId, structure1Cbor, senderSignature, contentHash) {
|
|
47
|
+
// Structure 1 content_hash is index 1 and sender_pubkey index 2 in BOTH layouts — 020-ACKHASH
|
|
48
|
+
// appended last_seen_hash at 6 rather than inserting it, so neither read moved. A v2 claim
|
|
49
|
+
// decodes here exactly as a v1 one does; its hash is not consulted, because this unit ships
|
|
50
|
+
// reading and not enforcing.
|
|
51
|
+
const s1 = decodeStructure1(structure1Cbor);
|
|
52
|
+
// A layout this build cannot name yields no pubkey and no hash, so there is nothing to check the
|
|
53
|
+
// signature against. Its reason is carried out so an unreadable CLAIM and a wrong SIGNATURE stay
|
|
54
|
+
// distinguishable — they take the same outcome by different routes.
|
|
55
|
+
if (!s1.ok)
|
|
56
|
+
return { verdict: "unusable", reason: s1.reason };
|
|
57
|
+
const s1Hash = s1.fields.contentHash;
|
|
58
|
+
const s1Pubkey = s1.fields.senderPubkey;
|
|
59
|
+
// The SENDER's Ed25519 signature over the exact signed bytes — the same check the relay
|
|
60
|
+
// performs. `verify` never throws, so a wrong-width or garbage signature lands here as `false`:
|
|
61
|
+
// supplied and refuted, which is a different fact from not supplied at all.
|
|
62
|
+
if (!verify(s1Pubkey, structure1Cbor, senderSignature)) {
|
|
63
|
+
return { verdict: "refuted", reason: "bad_signature" };
|
|
64
|
+
}
|
|
65
|
+
// Sovereign-node cross-check: the signer MUST be THIS session's counterparty, not an unrelated
|
|
66
|
+
// key. Review M1: compare BYTES, not hex strings — `counterparty_pubkey` is stored verbatim from
|
|
67
|
+
// the IPC param and is never case-normalized, so a string compare would fail for a mixed-case
|
|
68
|
+
// pubkey and silently strip the canonical ordering from every message in that session.
|
|
69
|
+
const counterparty = this.#ctx.getSessionRecord(agentName, sessionId)?.counterparty_pubkey;
|
|
70
|
+
if (!pubkeyMatchesHex(s1Pubkey, counterparty)) {
|
|
71
|
+
/**
|
|
72
|
+
* REFUTED when the counterparty is KNOWN and the signer is someone else.
|
|
73
|
+
*
|
|
74
|
+
* This is the session-open MITM detection from the 2026-08-21 T-of-N investigation, which
|
|
75
|
+
* found this check *"fires correctly, and its answer is thrown away."* A rogue quorum of the
|
|
76
|
+
* directories holding shares for agent B can sign a false SessionAssignment naming M's key as
|
|
77
|
+
* B's, and everything downstream is genuinely real — M signs with M's own valid key. Nothing
|
|
78
|
+
* is missing for A to notice. This comparison is where the substitution shows, because
|
|
79
|
+
* `counterparty_pubkey` comes from A's own request and is untouched by anything the directory
|
|
80
|
+
* returns.
|
|
81
|
+
*
|
|
82
|
+
* ⚠️ AN EARLIER VERSION OF THIS COMMENT ADDED "it shows only when the record is present" —
|
|
83
|
+
* true when the proof was optional, and no longer the shape of the code: a content frame with
|
|
84
|
+
* no checkable proof is refused before it reaches ingest, so M cannot decline to supply one
|
|
85
|
+
* and be admitted anyway. Rewritten rather than deleted, because that sentence is the evidence
|
|
86
|
+
* of what the gap was. The park envelope is the remaining path where the ordering record is
|
|
87
|
+
* genuinely optional, and there the sender's authorship is proven by the envelope's own
|
|
88
|
+
* signature instead.
|
|
89
|
+
*
|
|
90
|
+
* `verified_unmatched` stays soft deliberately: with no counterparty on record we cannot prove
|
|
91
|
+
* the signer either way, and refusing there would strand a session whose row we failed to read
|
|
92
|
+
* rather than one that is under attack. It is also the only signal the orphan branch has.
|
|
93
|
+
*/
|
|
94
|
+
return counterparty
|
|
95
|
+
? { verdict: "refuted", reason: "signer_not_counterparty" }
|
|
96
|
+
: { verdict: "verified_unmatched", senderPubkey: s1Pubkey };
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* ─── THE BINDING CHECKS RUN LAST, AND THE ORDER IS A SECURITY PROPERTY ───────────────────────
|
|
100
|
+
*
|
|
101
|
+
* ⚠️ **THEY USED TO RUN FIRST, AND THAT HANDED THE ATTACKER A FREEZE-SUPPRESSION SWITCH** —
|
|
102
|
+
* review of `029b`, and it is the finding that mattered most.
|
|
103
|
+
*
|
|
104
|
+
* Everything below this line is `unusable`: the message is REFUSED and the session lives.
|
|
105
|
+
* Everything above it is `refuted`: the session FREEZES. So a check that can answer `unusable`
|
|
106
|
+
* before the signature has been verified lets a peer choose the softer outcome — flip one
|
|
107
|
+
* unauthenticated byte of `session_id` inside your own claim and a garbage signature, or a
|
|
108
|
+
* signature by a MITM's own key, stops being an identity incident and becomes a quiet refusal.
|
|
109
|
+
* The session-open MITM detection this function exists to serve was bypassable by exactly the
|
|
110
|
+
* party it detects.
|
|
111
|
+
*
|
|
112
|
+
* So the order is: decode → SIGNATURE → SIGNER → then what the proof is about. By the time
|
|
113
|
+
* either check below runs, the claim provably came from this session's counterparty, and the
|
|
114
|
+
* only question left is which message and which conversation they made it for.
|
|
115
|
+
*
|
|
116
|
+
* `seal-frontier-verify` already does it in this order (verify at :55, session id at :77). This
|
|
117
|
+
* code had it inverted.
|
|
118
|
+
*/
|
|
119
|
+
// The claim must bind to THIS content. A signature over somebody else's bytes verifies perfectly
|
|
120
|
+
// and proves nothing about this message — without this, one signed claim could be replayed onto
|
|
121
|
+
// every frame that follows it.
|
|
122
|
+
if (!bytesEqual(s1Hash, contentHash)) {
|
|
123
|
+
return { verdict: "unusable", reason: AUTHORSHIP_CONTENT_HASH_MISMATCH };
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* ⚠️ **AND IT MUST BIND TO THIS CONVERSATION** — review M4, ruled in by Andre 2026-09-04.
|
|
127
|
+
*
|
|
128
|
+
* Binding the content and the signer is not enough on its own: a claim the counterparty
|
|
129
|
+
* genuinely signed in another session verifies unchanged here for the same bytes. Not a
|
|
130
|
+
* stranger and not forged content — a real line of theirs, landing in a transcript it was never
|
|
131
|
+
* written for, with a signature that checks out. That is worse than an unsigned message,
|
|
132
|
+
* because the receipt then PROVES something that did not happen.
|
|
133
|
+
*
|
|
134
|
+
* `session_id` has been in Structure 1 since v1 and this path never read it.
|
|
135
|
+
* `seal-frontier-verify` already compares it; the live receive path simply did not.
|
|
136
|
+
*
|
|
137
|
+
* **THE TWO VALUES CANNOT DIVERGE, and that is what makes this safe to enforce.** Both are
|
|
138
|
+
* derived from ONE session id on each side, by construction:
|
|
139
|
+
* initiator — `sessionId = hex(assignment.session_id)` (`initiate-session-handler`) and
|
|
140
|
+
* `relayParams.sessionIdBytes = assignment.session_id` (`daemon.ts`);
|
|
141
|
+
* responder — `acceptSession(parsed.sessionIdHex)` and
|
|
142
|
+
* `sessionIdBytes = Buffer.from(parsed.sessionIdHex, "hex")` (`inbound-sessions`);
|
|
143
|
+
* direct/persisted — `relaySessionIdBytes = Buffer.from(sessionId, "hex")`.
|
|
144
|
+
* The two names exist because one keys the in-memory maps and one goes on the wire, not because
|
|
145
|
+
* they can hold different values. Getting this wrong would refuse EVERY message on EVERY live
|
|
146
|
+
* session, so it is stated rather than assumed.
|
|
147
|
+
*
|
|
148
|
+
* REFUSED, not frozen — and the sentence is TRUE where it now stands. The signature has
|
|
149
|
+
* verified and the signer has been matched to this session's counterparty three lines above;
|
|
150
|
+
* what is wrong is only the conversation the claim was made for, which is a replay rather than
|
|
151
|
+
* an identity fault. Said because an earlier version of this comment made the same claim from
|
|
152
|
+
* ABOVE the verification, where none of it had happened yet.
|
|
153
|
+
*/
|
|
154
|
+
const expectedSessionId = this.#ctx.relaySessionIdBytes(agentName, sessionId)
|
|
155
|
+
?? Uint8Array.from(Buffer.from(sessionId, "hex"));
|
|
156
|
+
if (!bytesEqual(s1.fields.sessionId, expectedSessionId)) {
|
|
157
|
+
return { verdict: "unusable", reason: AUTHORSHIP_SESSION_MISMATCH };
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* ─── AND IT MUST ACKNOWLEDGE SOMETHING THAT WAS ACTUALLY SAID — 033-ACKEMIT ──────────────────
|
|
161
|
+
*
|
|
162
|
+
* **THIS IS THE HALF THAT NEEDS NO RELAY, and it is the reason the unit exists.** Everything the
|
|
163
|
+
* check consumes is on this machine: the counterparty's own signed bytes, and our own tree. We
|
|
164
|
+
* do not ask the relay what position 7 held — we already know, because we placed the leaf there.
|
|
165
|
+
*
|
|
166
|
+
* Until now a signed acknowledgement was a NUMBER. "I saw position 7" attests to a position and
|
|
167
|
+
* never to content, so the only thing binding the acknowledgement to a message was the relay's
|
|
168
|
+
* separate receipt over `content_hash ‖ seq ‖ timestamp`. Withhold the relay's half and the
|
|
169
|
+
* signed claim is an unbacked number — which is how a counterparty seals one message short.
|
|
170
|
+
* With the hash signed, the claim stands on its own and the relay is no longer load-bearing for
|
|
171
|
+
* it.
|
|
172
|
+
*
|
|
173
|
+
* It runs LAST for the reason the two checks above run last: everything from here down answers
|
|
174
|
+
* `unusable`, which refuses the message and leaves the session alive, while a `refuted` FREEZES
|
|
175
|
+
* it. A check that could answer before the signature and the signer were established would hand
|
|
176
|
+
* a peer a switch for choosing the softer outcome. By this line the claim provably came from
|
|
177
|
+
* this session's counterparty, about this content, in this conversation — the only question
|
|
178
|
+
* left is whether what they say they saw is what we sent.
|
|
179
|
+
*/
|
|
180
|
+
const ackVerdict = this.#verifyAcknowledgedContent(agentName, sessionId, s1.fields);
|
|
181
|
+
if (ackVerdict)
|
|
182
|
+
return ackVerdict;
|
|
183
|
+
/**
|
|
184
|
+
* ─── AND IT MUST LINK TO THEIR OWN PREVIOUS MESSAGE — `DOD-M15-SELFCHAIN-1` ──────────────────
|
|
185
|
+
*
|
|
186
|
+
* The check above asks whether they are right about what WE said. This one asks whether they
|
|
187
|
+
* are right about what THEY said, and it is the check that makes the ORDER of the conversation
|
|
188
|
+
* provable rather than merely its contents.
|
|
189
|
+
*
|
|
190
|
+
* **THIS IS THE HALF THAT NEEDS NO RELAY**, in the strongest sense: the expected value is the
|
|
191
|
+
* last message we received from them, which is a fact about our own inbox. A relay that is
|
|
192
|
+
* absent, slow, colluding or lying cannot change it, and cannot wave a broken chain past us.
|
|
193
|
+
*/
|
|
194
|
+
const chainVerdict = this.#verifySenderSelfChain(agentName, sessionId, s1.fields);
|
|
195
|
+
if (chainVerdict)
|
|
196
|
+
return chainVerdict;
|
|
197
|
+
return { verdict: "verified", senderPubkey: s1Pubkey, senderSig: senderSignature };
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Does this claim's `last_seen_hash` name content this side actually put at that position?
|
|
201
|
+
*
|
|
202
|
+
* Returns `undefined` when the acknowledgement holds, or the `unusable` verdict to refuse with.
|
|
203
|
+
* Split out of `#verifyAuthorshipClaim` so the three refusal causes can be named separately —
|
|
204
|
+
* a claim that carries NO hash, one that names a position we never reached, and one that names
|
|
205
|
+
* the wrong content — rather than collapsing into a single "the proof was bad".
|
|
206
|
+
*
|
|
207
|
+
* ⚠️ MISSING, MALFORMED AND MISMATCHED TAKE ONE PATH (§5). Treating an unverifiable claim as
|
|
208
|
+
* "fine, skip the check" would recreate the fail-open this unit closes one layer down: an
|
|
209
|
+
* attacker who wants to evade a mismatch check simply never supplies a checkable proof.
|
|
210
|
+
* `decodeStructure1` refuses any claim whose hash is absent or the wrong width, so every claim
|
|
211
|
+
* reaching this method carries one and the only questions left are position and content.
|
|
212
|
+
*/
|
|
213
|
+
/**
|
|
214
|
+
* Does this claim link to the last message we actually received from this sender?
|
|
215
|
+
*
|
|
216
|
+
* ─── Why the expected value is our INBOX and not our tree ──────────────────────────────────────
|
|
217
|
+
*
|
|
218
|
+
* The tree holds every leaf in canonical order and records no authorship, so it cannot say which
|
|
219
|
+
* of them this sender wrote. What can is the acknowledgement state this daemon already keeps: the
|
|
220
|
+
* last content hash received from the counterparty, updated on every message as it is ingested.
|
|
221
|
+
* That IS their previous message, by definition.
|
|
222
|
+
*
|
|
223
|
+
* It is seeded at session registration with the session GENESIS, so a sender's first message has
|
|
224
|
+
* a real expected value rather than a special case — "they have not spoken here yet" is a value,
|
|
225
|
+
* derived per session, and not an absence.
|
|
226
|
+
*
|
|
227
|
+
* ⚠️ RUNS BEFORE THIS MESSAGE IS INGESTED, which is what makes the comparison meaningful: the
|
|
228
|
+
* state still holds their PREVIOUS message. Moving this after ingest would compare a message to
|
|
229
|
+
* itself and pass every time.
|
|
230
|
+
*/
|
|
231
|
+
#verifySenderSelfChain(agentName, sessionId, fields) {
|
|
232
|
+
const key = this.#ctx.sessionKey(agentName, sessionId);
|
|
233
|
+
const genesis = this.#ctx.sessionGenesisPrevRoot(agentName, sessionId);
|
|
234
|
+
/**
|
|
235
|
+
* ⚠️ THE EXPECTED VALUE IS OUR INBOX — `#lastAck` — AND NOT THE SESSION GENESIS.
|
|
236
|
+
*
|
|
237
|
+
* `#lastFromCounterparty` is the last content hash we accepted FROM THIS COUNTERPARTY, written
|
|
238
|
+
* on every successful ingest. That IS their previous message, by definition. The genesis is only
|
|
239
|
+
* the answer before they have said anything.
|
|
240
|
+
*
|
|
241
|
+
* It used to read the relay client's acknowledgement with the genesis as a fallback, which is
|
|
242
|
+
* the same conflation the emitter had: on a session with no relay client the fallback never
|
|
243
|
+
* moved, so the counterparty's SECOND message was refused as a broken chain for the rest of the
|
|
244
|
+
* conversation. Four live-transport fixtures caught it the moment the emitter started producing
|
|
245
|
+
* a real chain.
|
|
246
|
+
*/
|
|
247
|
+
const expected = this.#lastFromCounterparty.get(key) ?? genesis;
|
|
248
|
+
/**
|
|
249
|
+
* ⚠️ NO EXPECTED VALUE MEANS NO COMPARISON, AND THIS IS THE ONE PLACE THAT IS NOT A FAIL-OPEN —
|
|
250
|
+
* because of WHO CONTROLS THE ABSENCE. Whether this side holds a starting point for the session
|
|
251
|
+
* depends on our own assignment and our own database. Nothing the sender puts on the wire can
|
|
252
|
+
* cause it, so it is not a switch they can reach for. A session restored from a row written
|
|
253
|
+
* before this existed is the real case, and refusing there would refuse every message on it for
|
|
254
|
+
* something the counterparty did not do.
|
|
255
|
+
*/
|
|
256
|
+
if (!expected) {
|
|
257
|
+
this.#ctx.logger.info("session.content.self_chain.unverifiable", {
|
|
258
|
+
agentName, sessionId,
|
|
259
|
+
impact: "this side holds no record of this sender's previous message in this session, so the " +
|
|
260
|
+
"link inside their signed bytes was not compared. The message is accepted; it is already " +
|
|
261
|
+
"bound to this conversation and to its author by the checks above.",
|
|
262
|
+
});
|
|
263
|
+
return undefined;
|
|
264
|
+
}
|
|
265
|
+
// A satisfied chain closes any gap this session was carrying — see `#selfChainGap`. It is
|
|
266
|
+
// cleared HERE and not on receipt of the specific missing hash, because the question the gap
|
|
267
|
+
// asks is "is this sender's chain still broken from our side?", and a passing check answers no
|
|
268
|
+
// however the gap closed: the predecessor arrived, or they resumed from something we hold.
|
|
269
|
+
if (bytesEqual(fields.prevOwnHash, expected)) {
|
|
270
|
+
this.#selfChainGap.delete(key);
|
|
271
|
+
return undefined;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* ─── OUR OWN GAP IS NOT THEIR TAMPERING, AND THE DIFFERENCE IS DECIDABLE ─────────────────────
|
|
275
|
+
*
|
|
276
|
+
* `expected` is the last message from them we ACCEPTED. Our record can legitimately be behind
|
|
277
|
+
* theirs: a message of theirs can arrive out of order and be HELD, be refused by the inbound
|
|
278
|
+
* screen, or be lost in flight. In every one of those cases their next message links to
|
|
279
|
+
* something real that we simply do not have at the front of our record — and refusing it would
|
|
280
|
+
* be a fabricated tamper report caused by our own gap, against a party that did nothing.
|
|
281
|
+
*
|
|
282
|
+
* So a link naming ANY message we have accepted from them is accepted, and the gap is reported
|
|
283
|
+
* as OUR problem. A link naming something we have never held from them is the actual accusation:
|
|
284
|
+
* it is either invented or it belongs to a conversation this is not.
|
|
285
|
+
*
|
|
286
|
+
* ⚠️ THIS IS DELIBERATELY WEAKER THAN THE RELAY'S CHECK, AND SAYING SO IS THE POINT. The relay
|
|
287
|
+
* holds the whole ordered log and refuses anything but the immediate predecessor; the directory
|
|
288
|
+
* does the same at seal time. This side holds only what reached it, so the strongest honest
|
|
289
|
+
* question it can ask is "did you name something you actually said to me?". Two strict checkers
|
|
290
|
+
* plus one honest one beats three checkers where the weakest one fabricates accusations.
|
|
291
|
+
*/
|
|
292
|
+
const seen = this.#receivedFromCounterparty.get(key);
|
|
293
|
+
if (seen?.has(Buffer.from(fields.prevOwnHash).toString("hex"))) {
|
|
294
|
+
this.#selfChainGap.delete(key);
|
|
295
|
+
this.#ctx.logger.info("session.content.self_chain.behind", {
|
|
296
|
+
agentName, sessionId,
|
|
297
|
+
impact: "this message links to an earlier message from your counterparty than the last one this " +
|
|
298
|
+
"side accepted, so this side's copy of the conversation has a gap in it. The message is " +
|
|
299
|
+
"accepted — the link names something they really did send you. The gap is on this side.",
|
|
300
|
+
});
|
|
301
|
+
return undefined;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* ⚠️ THE CLOCK IS NOT STARTED HERE, and review F1 is why. This method has TWO callers: the live
|
|
305
|
+
* ingest path, which refuses on this verdict, and PARK RECOVERY (`inbound-refusals.ts` →
|
|
306
|
+
* `park-recovery.ts`), where `unusable` is SOFT and the message is ingested anyway on the park
|
|
307
|
+
* envelope's own signature. Starting the clock here therefore armed a freeze from a message
|
|
308
|
+
* that was accepted — the chain then went healthy, the clock stayed open with a stale
|
|
309
|
+
* `firstSeenAt`, and an ordinary out-of-order frame hours later froze on its FIRST occurrence.
|
|
310
|
+
* That is the exact defect this unit exists to remove, re-entering through the park door.
|
|
311
|
+
*
|
|
312
|
+
* It is started in `noteSelfChainGapAndShouldFreeze` instead, which only the refusing caller
|
|
313
|
+
* reaches — so the age is measured from the first REFUSED LIVE frame, which is what the DoD
|
|
314
|
+
* line describes. This method stays a pure verifier.
|
|
315
|
+
*/
|
|
316
|
+
return { verdict: "unusable", reason: AUTHORSHIP_SELF_CHAIN_MISMATCH };
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* DOD-M15-SELFCHAIN-GAP-1 — has this session's self-chain gap been open longer than the grace?
|
|
320
|
+
*
|
|
321
|
+
* `false` also when there is no gap at all, which is the ordinary answer. The caller freezes on
|
|
322
|
+
* `true` and defers on `false`; the frame is refused either way.
|
|
323
|
+
*/
|
|
324
|
+
selfChainGapExpired(agentName, sessionId, graceMs, now = Date.now()) {
|
|
325
|
+
const gap = this.#selfChainGap.get(this.#ctx.sessionKey(agentName, sessionId));
|
|
326
|
+
return gap !== undefined && now - gap.firstSeenAt >= graceMs;
|
|
327
|
+
}
|
|
328
|
+
/** Age of this session's open self-chain gap, for the log line. `null` when there is no gap. */
|
|
329
|
+
selfChainGapAgeMs(agentName, sessionId, now = Date.now()) {
|
|
330
|
+
const gap = this.#selfChainGap.get(this.#ctx.sessionKey(agentName, sessionId));
|
|
331
|
+
return gap === undefined ? null : now - gap.firstSeenAt;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* DOD-M15-SELFCHAIN-GAP-1 — **THE ESCALATION DECISION, kept beside the state it reads.**
|
|
335
|
+
*
|
|
336
|
+
* `true` freezes the session, `false` defers. Called only after a `self_chain_mismatch`, so the
|
|
337
|
+
* gap this reads was opened by the verify call that produced that verdict.
|
|
338
|
+
*
|
|
339
|
+
* ⚠️ THE DEFERRAL IS LOGGED, and that is not decoration. A silent wait is indistinguishable from
|
|
340
|
+
* the self-chain check not running at all, which is exactly the state this milestone spent a day
|
|
341
|
+
* failing to tell apart. The frame is REFUSED either way — the caller has already done that — so
|
|
342
|
+
* nothing enters the transcript on evidence this side cannot check.
|
|
343
|
+
*/
|
|
344
|
+
noteSelfChainGapAndShouldFreeze(agentName, sessionId, correlationId) {
|
|
345
|
+
const key = this.#ctx.sessionKey(agentName, sessionId);
|
|
346
|
+
/**
|
|
347
|
+
* ⚠️ FIRST-WINS. Re-stamping on every mismatch would let a peer naming a fresh invented
|
|
348
|
+
* predecessor each time hold the escalation off for as long as it kept talking — the grace
|
|
349
|
+
* would never expire and the freeze would be unreachable.
|
|
350
|
+
*
|
|
351
|
+
* ⚠️ AND THE BOUND ON THAT, STATED BECAUSE IT IS NOT CLOSED (review F3): first-wins shuts the
|
|
352
|
+
* re-stamp lever, not the CLEAR lever. A peer that interleaves one correctly-chained message
|
|
353
|
+
* per grace window resets the clock and can emit mismatched frames indefinitely without ever
|
|
354
|
+
* freezing. That costs it one honest message every six minutes and buys it nothing but a
|
|
355
|
+
* longer sequence of refusals — every mismatched frame is still refused and nothing is
|
|
356
|
+
* ingested — so the bound is documented rather than closed. Closing it would mean counting
|
|
357
|
+
* consecutive mismatches beside the clock.
|
|
358
|
+
*/
|
|
359
|
+
if (!this.#selfChainGap.has(key))
|
|
360
|
+
this.#selfChainGap.set(key, { firstSeenAt: Date.now() });
|
|
361
|
+
if (this.selfChainGapExpired(agentName, sessionId, SELF_CHAIN_GAP_GRACE_MS))
|
|
362
|
+
return true;
|
|
363
|
+
const ageMs = this.selfChainGapAgeMs(agentName, sessionId) ?? 0;
|
|
364
|
+
// Review F6: out-of-order relay delivery is the PREMISE of this change, so the ordinary case
|
|
365
|
+
// must not warn — a signal that fires on the normal case is not a signal. It escalates to warn
|
|
366
|
+
// once the gap has been open for half the grace, which is the point it stops being ordinary.
|
|
367
|
+
const say = ageMs * 2 >= SELF_CHAIN_GAP_GRACE_MS ? this.#ctx.logger.warn : this.#ctx.logger.info;
|
|
368
|
+
say.call(this.#ctx.logger, "session.content.self_chain.gap_open", {
|
|
369
|
+
agentName, sessionId, correlationId,
|
|
370
|
+
gapAgeMs: this.selfChainGapAgeMs(agentName, sessionId),
|
|
371
|
+
graceMs: SELF_CHAIN_GAP_GRACE_MS,
|
|
372
|
+
impact: "this message names a predecessor of the counterparty's that this side does not hold. It " +
|
|
373
|
+
"is REFUSED and nothing was ingested — but the session is NOT frozen, because the " +
|
|
374
|
+
"predecessor is most often still in the relay mailbox. A refused message is re-delivered " +
|
|
375
|
+
"by the sender, so this usually resolves itself; if the gap is still open after the grace, " +
|
|
376
|
+
"the next such message freezes the session.",
|
|
377
|
+
});
|
|
378
|
+
return false;
|
|
379
|
+
}
|
|
380
|
+
noteReceivedFromCounterparty(agentName, sessionId, contentHash) {
|
|
381
|
+
const key = this.#ctx.sessionKey(agentName, sessionId);
|
|
382
|
+
this.#lastFromCounterparty.set(key, Uint8Array.from(contentHash));
|
|
383
|
+
let seen = this.#receivedFromCounterparty.get(key);
|
|
384
|
+
if (!seen) {
|
|
385
|
+
seen = new Set();
|
|
386
|
+
this.#receivedFromCounterparty.set(key, seen);
|
|
387
|
+
}
|
|
388
|
+
seen.add(Buffer.from(contentHash).toString("hex"));
|
|
389
|
+
while (seen.size > SELF_CHAIN_MEMORY) {
|
|
390
|
+
// Sets iterate in insertion order, so the first entry is the oldest.
|
|
391
|
+
const oldest = seen.values().next().value;
|
|
392
|
+
if (oldest === undefined)
|
|
393
|
+
break;
|
|
394
|
+
seen.delete(oldest);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
#verifyAcknowledgedContent(agentName, sessionId, fields) {
|
|
398
|
+
/**
|
|
399
|
+
* ⚠️ **A v1 CLAIM IS REFUSED THE MOMENT IT NAMES A POSITION — and accepted when it names none.
|
|
400
|
+
* The split is the whole rule, so it is stated rather than left to the reader.**
|
|
401
|
+
*
|
|
402
|
+
* `last_seen_seq >= 1` with no hash IS the defect: "I saw position 7" attests to a position and
|
|
403
|
+
* never to content, which is the unbacked number this unit exists to stop accepting. Treating
|
|
404
|
+
* that as "fine, skip the check" would recreate `DOD-M15-AUTHORSHIP-ABSENT-1` one layer down —
|
|
405
|
+
* an attacker evading a mismatch check simply never supplies a checkable proof.
|
|
406
|
+
*
|
|
407
|
+
* `last_seen_seq === 0` with no hash claims nothing about our messages, so there is no check to
|
|
408
|
+
* skip and nothing to bind. A sender genuinely in that state — a session brokered without a
|
|
409
|
+
* relay assignment, which the directory does not always return — has nothing to acknowledge,
|
|
410
|
+
* and refusing them would stop the product's own advertised journey to close a hole they are
|
|
411
|
+
* not in.
|
|
412
|
+
*
|
|
413
|
+
* **THE BOUND, SAID PLAINLY:** a peer can decline to bind by never acknowledging anything.
|
|
414
|
+
* That costs them their own ratification of our history rather than falsifying it, and it is
|
|
415
|
+
* the same under-claiming the relay has always allowed (it refuses a `last_seen_seq` that runs
|
|
416
|
+
* AHEAD of its counter, never one that lags). This unit does not change that either way, and
|
|
417
|
+
* the follow-on that does is the receiver submitting a hash for what it received.
|
|
418
|
+
*/
|
|
419
|
+
/**
|
|
420
|
+
* ⚠️ THERE IS NO "NO ACKNOWLEDGEMENT AT ALL" BRANCH, and its absence is the point.
|
|
421
|
+
*
|
|
422
|
+
* A claim carrying no `last_seen_hash` cannot exist: there is one Structure 1 layout and both
|
|
423
|
+
* chain links are required, so such a claim does not decode and never reaches this method.
|
|
424
|
+
* Nothing here may treat a missing acknowledgement as "fine, skip the check" — that is the
|
|
425
|
+
* fail-open where an attacker evades a mismatch check by supplying nothing checkable.
|
|
426
|
+
*/
|
|
427
|
+
/**
|
|
428
|
+
* THE GENESIS IS A VALUE, NEVER AN ABSENCE. The first message of a session has seen nothing, and
|
|
429
|
+
* that case is a defined 32 bytes — the agreed starting point of this two-party chain, derived
|
|
430
|
+
* from both keys, the session id and the session timestamp. Not 32 zero bytes: a constant
|
|
431
|
+
* identical across every session is one an attacker can present for any session, so the one
|
|
432
|
+
* position most exposed to a forged acknowledgement would be the only one nobody could check.
|
|
433
|
+
*/
|
|
434
|
+
if (fields.lastSeenSeq <= 0) {
|
|
435
|
+
const genesis = this.#ctx.sessionGenesisPrevRoot(agentName, sessionId);
|
|
436
|
+
/**
|
|
437
|
+
* ⚠️ **SOFT HERE, AND THIS IS THE ONE BRANCH WHERE THAT IS NOT A FAIL-OPEN — the reasoning is
|
|
438
|
+
* the load-bearing part, so it is written down rather than assumed.**
|
|
439
|
+
*
|
|
440
|
+
* `last_seen_seq` 0 means "I have received nothing from you", and the hash that goes with it
|
|
441
|
+
* is the session's agreed starting point. It is a genuine value and this daemon always emits
|
|
442
|
+
* it — but as a CHECK it is close to redundant, because the thing it establishes (that this
|
|
443
|
+
* claim was made for THIS session) has already been established three lines above by the
|
|
444
|
+
* session-id binding, against a value derived from the same session id.
|
|
445
|
+
*
|
|
446
|
+
* **What an attacker gains by reaching this branch: nothing.** They cannot skip the real
|
|
447
|
+
* comparison by claiming 0, because claiming 0 is claiming to have acknowledged NOTHING of
|
|
448
|
+
* ours — it removes their own ratification of our history rather than falsifying it, and the
|
|
449
|
+
* positional check below is what a claim about our messages has to survive. And they cannot
|
|
450
|
+
* cause the absence either: whether we hold a genesis depends on our own assignment and our
|
|
451
|
+
* own database, never on anything they send.
|
|
452
|
+
*
|
|
453
|
+
* The alternative was refusing, and it would have been the wrong kind of strict: a session
|
|
454
|
+
* restored from a row written before this column existed holds no genesis, and every first
|
|
455
|
+
* message on it would be refused for something the counterparty did not do.
|
|
456
|
+
*/
|
|
457
|
+
if (!genesis) {
|
|
458
|
+
this.#ctx.logger.info("session.content.ack_hash.genesis_unavailable", {
|
|
459
|
+
agentName, sessionId,
|
|
460
|
+
impact: "this message acknowledges nothing yet, and this side holds no recorded starting point " +
|
|
461
|
+
"for the session, so the acknowledgement was not compared. The message is accepted: it " +
|
|
462
|
+
"is already bound to this conversation by the session id inside the signed bytes.",
|
|
463
|
+
});
|
|
464
|
+
return undefined;
|
|
465
|
+
}
|
|
466
|
+
return bytesEqual(fields.lastSeenHash, genesis)
|
|
467
|
+
? undefined
|
|
468
|
+
: { verdict: "unusable", reason: AUTHORSHIP_ACK_HASH_MISMATCH };
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* ─── THE ACKNOWLEDGED CONTENT MUST BE SOMETHING THIS SIDE ACTUALLY HOLDS ─────────────────────
|
|
472
|
+
*
|
|
473
|
+
* ⚠️ **AN EARLIER VERSION OF THIS CHECK WAS POSITION-ONLY AND HAD A HOLE THE ATTACKER COULD
|
|
474
|
+
* OPEN THEMSELVES. It is kept described, not deleted, because the false reasoning is the part
|
|
475
|
+
* worth not repeating.**
|
|
476
|
+
*
|
|
477
|
+
* It compared `hashAt(last_seen_seq - 1)` and WAIVED the whole comparison on a session marked
|
|
478
|
+
* diverged, on this stated ground: *"Who controls this absence? Not the peer: divergence is
|
|
479
|
+
* caused by OUR submit failing, and nothing the counterparty sends can produce it."*
|
|
480
|
+
*
|
|
481
|
+
* **That was false, and the party who could falsify it is the exact attacker this line names.**
|
|
482
|
+
* Send a message direct-only and never submit its hash: we have no ordering record, so it is
|
|
483
|
+
* appended at the tail and our tree runs one ahead of the relay's counter. Our very next send
|
|
484
|
+
* then gets an assigned position BEHIND our frontier, `placeOwnLeaf` takes its
|
|
485
|
+
* `position_behind_frontier` branch and calls `markSessionDiverged` — and from that moment every
|
|
486
|
+
* inbound acknowledgement skipped the check entirely. **One withheld message plus one reply from
|
|
487
|
+
* us disabled the guard, using the behaviour the guard exists to catch.**
|
|
488
|
+
*
|
|
489
|
+
* A second defect sat beside it: a claim naming a position our tree has not reached was refused
|
|
490
|
+
* outright, and a HELD own leaf is exactly that — `placeOwnLeaf` returns `{placed: false}` when
|
|
491
|
+
* the relay hands us a position ahead of our tail, so the leaf is not in the tree while the
|
|
492
|
+
* counterparty has already received it and is acknowledging it. We refused their reply for a
|
|
493
|
+
* transient gap on our own machine.
|
|
494
|
+
*
|
|
495
|
+
* **So the question asked is now about CONTENT, not about an index.** Is the hash they name
|
|
496
|
+
* something this side has — placed in the tree, or held pending a gap? That cannot be switched
|
|
497
|
+
* off by divergence (it consults no positions), it cannot false-refuse a held leaf, and it still
|
|
498
|
+
* refuses a hash we have never held, which is the falsehood the check exists to catch.
|
|
499
|
+
*
|
|
500
|
+
* The POSITION is then used only to make the check STRONGER where it is safe to: on a session
|
|
501
|
+
* whose indices still mean relay positions, the hash must sit exactly where they say it does.
|
|
502
|
+
* Divergence loses that strengthening and keeps the membership test, rather than losing both.
|
|
503
|
+
*/
|
|
504
|
+
const tree = this.#ctx.getSessionTree(agentName, sessionId);
|
|
505
|
+
const ackHex = Buffer.from(fields.lastSeenHash).toString("hex");
|
|
506
|
+
const heldHere = this.#ctx.heldContentFor(agentName, sessionId);
|
|
507
|
+
const held = heldHere ? [...heldHere.values()].some((e) => e.contentHashHex === ackHex) : false;
|
|
508
|
+
if (tree.indexOfHash(ackHex) === -1 && !held) {
|
|
509
|
+
return { verdict: "unusable", reason: AUTHORSHIP_ACK_HASH_UNKNOWN };
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* THE POSITIONAL STRENGTHENING. Skipped — with a WARN, never silently — when this side's indices
|
|
513
|
+
* no longer mean relay positions, or when the leaf at that position is still held. Neither is
|
|
514
|
+
* a pass: the membership test above has already run and refused anything we do not hold.
|
|
515
|
+
*/
|
|
516
|
+
const atPosition = tree.hashAt(fields.lastSeenSeq - 1);
|
|
517
|
+
if (this.#ctx.isSessionDiverged(agentName, sessionId) || atPosition === null) {
|
|
518
|
+
this.#ctx.logger.warn("session.content.ack_hash.position_unverifiable", {
|
|
519
|
+
agentName, sessionId, lastSeenSeq: fields.lastSeenSeq,
|
|
520
|
+
diverged: this.#ctx.isSessionDiverged(agentName, sessionId),
|
|
521
|
+
impact: "the acknowledged content IS in this side's record, so the claim was accepted — but its " +
|
|
522
|
+
"POSITION was not checked, because this session's local positions no longer line up with " +
|
|
523
|
+
"the relay's, or the leaf at that position has not been placed yet.",
|
|
524
|
+
});
|
|
525
|
+
return undefined;
|
|
526
|
+
}
|
|
527
|
+
return ackHex === atPosition
|
|
528
|
+
? undefined
|
|
529
|
+
: { verdict: "unusable", reason: AUTHORSHIP_ACK_HASH_MISMATCH };
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
//# sourceMappingURL=authorship-verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorship-verification.js","sourceRoot":"","sources":["../src/authorship-verification.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAEL,gCAAgC,EAChC,2BAA2B,EAC3B,8BAA8B,EAC9B,4BAA4B,EAC5B,2BAA2B,EAC3B,iBAAiB,EACjB,uBAAuB,EACvB,UAAU,GACX,MAAM,yBAAyB,CAAC;AA0BjC,MAAM,OAAO,kBAAkB;IACpB,IAAI,CAAoB;IAEjC,YAAY,GAAsB;QAChC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAEH;;;;;;;;SAQK;IACM,yBAAyB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEtE,+EAA+E;IACpE,qBAAqB,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC/D;;;;;;;OAOG;IACM,aAAa,GAAG,IAAI,GAAG,EAAmC,CAAC;IAEtE;;;;;;;;;;;;;;SAcK;IACH,qBAAqB,CACnB,SAAiB,EACjB,SAAiB,EACjB,cAA0B,EAC1B,eAA2B,EAC3B,WAAuB;QAEvB,8FAA8F;QAC9F,2FAA2F;QAC3F,4FAA4F;QAC5F,6BAA6B;QAC7B,MAAM,EAAE,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAC5C,iGAAiG;QACjG,iGAAiG;QACjG,oEAAoE;QACpE,IAAI,CAAC,EAAE,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;QACrC,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;QACxC,wFAAwF;QACxF,gGAAgG;QAChG,4EAA4E;QAC5E,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,CAAC;YACvD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QACzD,CAAC;QACD,+FAA+F;QAC/F,iGAAiG;QACjG,8FAA8F;QAC9F,uFAAuF;QACvF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,mBAAmB,CAAC;QAC3F,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC;YAC9C;;;;;;;;;;;;;;;;;;;;;;eAsBG;YACH,OAAO,YAAY;gBACjB,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,yBAAyB,EAAE;gBAC3D,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;QAChE,CAAC;QACD;;;;;;;;;;;;;;;;;;;;WAoBG;QACH,iGAAiG;QACjG,gGAAgG;QAChG,+BAA+B;QAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;QAC3E,CAAC;QACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA4BG;QACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;eACxE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACxD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;QACtE,CAAC;QACD;;;;;;;;;;;;;;;;;;;;WAoBG;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QACpF,IAAI,UAAU;YAAE,OAAO,UAAU,CAAC;QAClC;;;;;;;;;;WAUG;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QAClF,IAAI,YAAY;YAAE,OAAO,YAAY,CAAC;QACtC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;IACrF,CAAC;IAEH;;;;;;;;;;;;;SAaK;IACH;;;;;;;;;;;;;;;;;OAiBG;IACH,sBAAsB,CACpB,SAAiB,EACjB,SAAiB,EACjB,MAAmC;QAEnC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvE;;;;;;;;;;;;WAYG;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC;QAChE;;;;;;;WAOG;QACH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE;gBAC/D,SAAS,EAAE,SAAS;gBACpB,MAAM,EACJ,sFAAsF;oBACtF,0FAA0F;oBAC1F,mEAAmE;aACtE,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,0FAA0F;QAC1F,6FAA6F;QAC7F,+FAA+F;QAC/F,2FAA2F;QAC3F,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;QACnG;;;;;;;;;;;;;;;;;;WAkBG;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE;gBACzD,SAAS,EAAE,SAAS;gBACpB,MAAM,EACJ,yFAAyF;oBACzF,yFAAyF;oBACzF,wFAAwF;aAC3F,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;QACD;;;;;;;;;;;;WAYG;QACH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;IACzE,CAAC;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,SAAiB,EAAE,SAAiB,EAAE,OAAe,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;QACjG,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/E,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC;IAC/D,CAAC;IAED,gGAAgG;IAChG,iBAAiB,CAAC,SAAiB,EAAE,SAAiB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;QAC9E,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/E,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC;IAC1D,CAAC;IAED;;;;;;;;;;OAUG;IACH,+BAA+B,CAAC,SAAiB,EAAE,SAAiB,EAAE,aAAsB;QAC1F,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvD;;;;;;;;;;;;WAYG;QACH,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3F,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,uBAAuB,CAAC;YAAE,OAAO,IAAI,CAAC;QACzF,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAChE,6FAA6F;QAC7F,+FAA+F;QAC/F,6FAA6F;QAC7F,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACjG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,qCAAqC,EAAE;YAChE,SAAS,EAAE,SAAS,EAAE,aAAa;YACnC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC;YACtD,OAAO,EAAE,uBAAuB;YAChC,MAAM,EACJ,0FAA0F;gBAC1F,mFAAmF;gBACnF,0FAA0F;gBAC1F,4FAA4F;gBAC5F,4CAA4C;SAC/C,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAEH,4BAA4B,CAAC,SAAiB,EAAE,SAAiB,EAAE,WAAuB;QACtF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAClE,IAAI,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAAC,CAAC;QACvF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC;YACrC,qEAAqE;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAA2B,CAAC;YAChE,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM;YAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAEH,0BAA0B,CACtB,SAAiB,EACjB,SAAiB,EACjB,MAAyD;QAEzD;;;;;;;;;;;;;;;;;;;;WAoBG;QACH;;;;;;;WAOG;QACH;;;;;;WAMG;QACH,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACvE;;;;;;;;;;;;;;;;;;;;eAoBG;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,EAAE;oBACpE,SAAS,EAAE,SAAS;oBACpB,MAAM,EACJ,wFAAwF;wBACxF,wFAAwF;wBACxF,kFAAkF;iBACrF,CAAC,CAAC;gBACH,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC;gBAC7C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;QACpE,CAAC;QACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAiCG;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAChG,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;QACtE,CAAC;QACD;;;;WAIG;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gDAAgD,EAAE;gBACtE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW;gBACrD,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC;gBAC3D,MAAM,EACJ,yFAAyF;oBACzF,0FAA0F;oBAC1F,oEAAoE;aACvE,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,KAAK,UAAU;YAC1B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;IACpE,CAAC;CACF"}
|