@cello-protocol/daemon 0.0.225 → 0.0.227
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/package.json +5 -5
- package/dist/agent-admin-handlers.d.ts +0 -56
- package/dist/agent-admin-handlers.d.ts.map +0 -1
- package/dist/agent-admin-handlers.js +0 -73
- package/dist/agent-admin-handlers.js.map +0 -1
- package/dist/agent-handlers.d.ts +0 -72
- package/dist/agent-handlers.d.ts.map +0 -1
- package/dist/agent-handlers.js +0 -604
- package/dist/agent-handlers.js.map +0 -1
- package/dist/agent-id-migration.d.ts +0 -70
- package/dist/agent-id-migration.d.ts.map +0 -1
- package/dist/agent-id-migration.js +0 -468
- package/dist/agent-id-migration.js.map +0 -1
- package/dist/agent-loader.d.ts +0 -37
- package/dist/agent-loader.d.ts.map +0 -1
- package/dist/agent-loader.js +0 -37
- package/dist/agent-loader.js.map +0 -1
- package/dist/agent-selection-root.d.ts +0 -29
- package/dist/agent-selection-root.d.ts.map +0 -1
- package/dist/agent-selection-root.js +0 -126
- package/dist/agent-selection-root.js.map +0 -1
- package/dist/agent-selection.d.ts +0 -73
- package/dist/agent-selection.d.ts.map +0 -1
- package/dist/agent-selection.js +0 -80
- package/dist/agent-selection.js.map +0 -1
- package/dist/agent-settings-keys.d.ts +0 -52
- package/dist/agent-settings-keys.d.ts.map +0 -1
- package/dist/agent-settings-keys.js +0 -114
- package/dist/agent-settings-keys.js.map +0 -1
- package/dist/agent-state.d.ts +0 -67
- package/dist/agent-state.d.ts.map +0 -1
- package/dist/agent-state.js +0 -66
- package/dist/agent-state.js.map +0 -1
- package/dist/assignment-verify.d.ts +0 -90
- package/dist/assignment-verify.d.ts.map +0 -1
- package/dist/assignment-verify.js +0 -301
- package/dist/assignment-verify.js.map +0 -1
- package/dist/attendance-wiring.d.ts +0 -23
- package/dist/attendance-wiring.d.ts.map +0 -1
- package/dist/attendance-wiring.js +0 -248
- package/dist/attendance-wiring.js.map +0 -1
- package/dist/attestation-body.d.ts +0 -47
- package/dist/attestation-body.d.ts.map +0 -1
- package/dist/attestation-body.js +0 -71
- package/dist/attestation-body.js.map +0 -1
- package/dist/authorship-verification.d.ts +0 -91
- package/dist/authorship-verification.d.ts.map +0 -1
- package/dist/authorship-verification.js +0 -532
- package/dist/authorship-verification.js.map +0 -1
- package/dist/away-detection.d.ts +0 -139
- package/dist/away-detection.d.ts.map +0 -1
- package/dist/away-detection.js +0 -186
- package/dist/away-detection.js.map +0 -1
- package/dist/away-inbox-oneshot.d.ts +0 -40
- package/dist/away-inbox-oneshot.d.ts.map +0 -1
- package/dist/away-inbox-oneshot.js +0 -311
- package/dist/away-inbox-oneshot.js.map +0 -1
- package/dist/backup-restore-handlers.d.ts +0 -10
- package/dist/backup-restore-handlers.d.ts.map +0 -1
- package/dist/backup-restore-handlers.js +0 -82
- package/dist/backup-restore-handlers.js.map +0 -1
- package/dist/backup-restore.d.ts +0 -102
- package/dist/backup-restore.d.ts.map +0 -1
- package/dist/backup-restore.js +0 -341
- package/dist/backup-restore.js.map +0 -1
- package/dist/bin/cello-daemon.d.ts +0 -13
- package/dist/bin/cello-daemon.d.ts.map +0 -1
- package/dist/bin/cello-daemon.js.map +0 -1
- package/dist/boot-agents.d.ts +0 -64
- package/dist/boot-agents.d.ts.map +0 -1
- package/dist/boot-agents.js +0 -241
- package/dist/boot-agents.js.map +0 -1
- package/dist/boot-connection-state.d.ts +0 -38
- package/dist/boot-connection-state.d.ts.map +0 -1
- package/dist/boot-connection-state.js +0 -95
- package/dist/boot-connection-state.js.map +0 -1
- package/dist/boot-core.d.ts +0 -36
- package/dist/boot-core.d.ts.map +0 -1
- package/dist/boot-core.js +0 -293
- package/dist/boot-core.js.map +0 -1
- package/dist/boot-parked-content.d.ts +0 -34
- package/dist/boot-parked-content.d.ts.map +0 -1
- package/dist/boot-parked-content.js +0 -528
- package/dist/boot-parked-content.js.map +0 -1
- package/dist/boot-sweeps.d.ts +0 -22
- package/dist/boot-sweeps.d.ts.map +0 -1
- package/dist/boot-sweeps.js +0 -51
- package/dist/boot-sweeps.js.map +0 -1
- package/dist/bundled-consortium-manifest.d.ts +0 -47
- package/dist/bundled-consortium-manifest.d.ts.map +0 -1
- package/dist/bundled-consortium-manifest.js +0 -116
- package/dist/bundled-consortium-manifest.js.map +0 -1
- package/dist/cbor-blob-migration.d.ts +0 -8
- package/dist/cbor-blob-migration.d.ts.map +0 -1
- package/dist/cbor-blob-migration.js +0 -116
- package/dist/cbor-blob-migration.js.map +0 -1
- package/dist/challenge-verifier.d.ts +0 -12
- package/dist/challenge-verifier.d.ts.map +0 -1
- package/dist/challenge-verifier.js +0 -11
- package/dist/challenge-verifier.js.map +0 -1
- package/dist/close-commitment.d.ts +0 -67
- package/dist/close-commitment.d.ts.map +0 -1
- package/dist/close-commitment.js +0 -78
- package/dist/close-commitment.js.map +0 -1
- package/dist/close-session-handler.d.ts +0 -94
- package/dist/close-session-handler.d.ts.map +0 -1
- package/dist/close-session-handler.js +0 -1418
- package/dist/close-session-handler.js.map +0 -1
- package/dist/co-attendance.d.ts +0 -29
- package/dist/co-attendance.d.ts.map +0 -1
- package/dist/co-attendance.js +0 -32
- package/dist/co-attendance.js.map +0 -1
- package/dist/column-birth.d.ts +0 -40
- package/dist/column-birth.d.ts.map +0 -1
- package/dist/column-birth.js +0 -61
- package/dist/column-birth.js.map +0 -1
- package/dist/connect-or-start.d.ts +0 -25
- package/dist/connect-or-start.d.ts.map +0 -1
- package/dist/connect-or-start.js +0 -175
- package/dist/connect-or-start.js.map +0 -1
- package/dist/connection-agents.d.ts +0 -16
- package/dist/connection-agents.d.ts.map +0 -1
- package/dist/connection-agents.js +0 -68
- package/dist/connection-agents.js.map +0 -1
- package/dist/consent-migration.d.ts +0 -49
- package/dist/consent-migration.d.ts.map +0 -1
- package/dist/consent-migration.js +0 -128
- package/dist/consent-migration.js.map +0 -1
- package/dist/consortium-bootstrap.d.ts +0 -138
- package/dist/consortium-bootstrap.d.ts.map +0 -1
- package/dist/consortium-bootstrap.js +0 -339
- package/dist/consortium-bootstrap.js.map +0 -1
- package/dist/consortium-fingerprint.d.ts +0 -115
- package/dist/consortium-fingerprint.d.ts.map +0 -1
- package/dist/consortium-fingerprint.js +0 -175
- package/dist/consortium-fingerprint.js.map +0 -1
- package/dist/contact-handlers.d.ts +0 -59
- package/dist/contact-handlers.d.ts.map +0 -1
- package/dist/contact-handlers.js +0 -343
- package/dist/contact-handlers.js.map +0 -1
- package/dist/contact-pubkey-case.d.ts +0 -65
- package/dist/contact-pubkey-case.d.ts.map +0 -1
- package/dist/contact-pubkey-case.js +0 -136
- package/dist/contact-pubkey-case.js.map +0 -1
- package/dist/contacts-tier-migration.d.ts +0 -90
- package/dist/contacts-tier-migration.d.ts.map +0 -1
- package/dist/contacts-tier-migration.js +0 -150
- package/dist/contacts-tier-migration.js.map +0 -1
- package/dist/content-encryption-status.d.ts +0 -111
- package/dist/content-encryption-status.d.ts.map +0 -1
- package/dist/content-encryption-status.js +0 -158
- package/dist/content-encryption-status.js.map +0 -1
- package/dist/content-park-client.d.ts +0 -90
- package/dist/content-park-client.d.ts.map +0 -1
- package/dist/content-park-client.js +0 -362
- package/dist/content-park-client.js.map +0 -1
- package/dist/content-park.d.ts +0 -52
- package/dist/content-park.d.ts.map +0 -1
- package/dist/content-park.js +0 -1309
- package/dist/content-park.js.map +0 -1
- package/dist/cross-node-negotiation.d.ts +0 -44
- package/dist/cross-node-negotiation.d.ts.map +0 -1
- package/dist/cross-node-negotiation.js +0 -34
- package/dist/cross-node-negotiation.js.map +0 -1
- package/dist/daemon-handle.d.ts +0 -57
- package/dist/daemon-handle.d.ts.map +0 -1
- package/dist/daemon-handle.js +0 -2
- package/dist/daemon-handle.js.map +0 -1
- package/dist/daemon-status-report.d.ts +0 -50
- package/dist/daemon-status-report.d.ts.map +0 -1
- package/dist/daemon-status-report.js +0 -81
- package/dist/daemon-status-report.js.map +0 -1
- package/dist/daemon.d.ts +0 -45
- package/dist/daemon.d.ts.map +0 -1
- package/dist/daemon.js +0 -1177
- package/dist/daemon.js.map +0 -1
- package/dist/db-identity-store.d.ts +0 -159
- package/dist/db-identity-store.d.ts.map +0 -1
- package/dist/db-identity-store.js +0 -502
- package/dist/db-identity-store.js.map +0 -1
- package/dist/delivery-open-registry.d.ts +0 -92
- package/dist/delivery-open-registry.d.ts.map +0 -1
- package/dist/delivery-open-registry.js +0 -121
- package/dist/delivery-open-registry.js.map +0 -1
- package/dist/delivery-session-suspects.d.ts +0 -56
- package/dist/delivery-session-suspects.d.ts.map +0 -1
- package/dist/delivery-session-suspects.js +0 -94
- package/dist/delivery-session-suspects.js.map +0 -1
- package/dist/directory-auth-posture.d.ts +0 -87
- package/dist/directory-auth-posture.d.ts.map +0 -1
- package/dist/directory-auth-posture.js +0 -134
- package/dist/directory-auth-posture.js.map +0 -1
- package/dist/directory-bootstrap.d.ts +0 -310
- package/dist/directory-bootstrap.d.ts.map +0 -1
- package/dist/directory-bootstrap.js +0 -557
- package/dist/directory-bootstrap.js.map +0 -1
- package/dist/directory-connect.d.ts +0 -27
- package/dist/directory-connect.d.ts.map +0 -1
- package/dist/directory-connect.js +0 -106
- package/dist/directory-connect.js.map +0 -1
- package/dist/disconnect-cleanup.d.ts +0 -51
- package/dist/disconnect-cleanup.d.ts.map +0 -1
- package/dist/disconnect-cleanup.js +0 -72
- package/dist/disconnect-cleanup.js.map +0 -1
- package/dist/document-amendment-store.d.ts +0 -120
- package/dist/document-amendment-store.d.ts.map +0 -1
- package/dist/document-amendment-store.js +0 -266
- package/dist/document-amendment-store.js.map +0 -1
- package/dist/document-delivery-transport.d.ts +0 -168
- package/dist/document-delivery-transport.d.ts.map +0 -1
- package/dist/document-delivery-transport.js +0 -206
- package/dist/document-delivery-transport.js.map +0 -1
- package/dist/document-engine.d.ts +0 -134
- package/dist/document-engine.d.ts.map +0 -1
- package/dist/document-engine.js +0 -282
- package/dist/document-engine.js.map +0 -1
- package/dist/document-flag.d.ts +0 -58
- package/dist/document-flag.d.ts.map +0 -1
- package/dist/document-flag.js +0 -70
- package/dist/document-flag.js.map +0 -1
- package/dist/document-frame-router.d.ts +0 -245
- package/dist/document-frame-router.d.ts.map +0 -1
- package/dist/document-frame-router.js +0 -397
- package/dist/document-frame-router.js.map +0 -1
- package/dist/document-gate-wiring.d.ts +0 -61
- package/dist/document-gate-wiring.d.ts.map +0 -1
- package/dist/document-gate-wiring.js +0 -125
- package/dist/document-gate-wiring.js.map +0 -1
- package/dist/document-gate.d.ts +0 -149
- package/dist/document-gate.d.ts.map +0 -1
- package/dist/document-gate.js +0 -509
- package/dist/document-gate.js.map +0 -1
- package/dist/document-handlers.d.ts +0 -47
- package/dist/document-handlers.d.ts.map +0 -1
- package/dist/document-handlers.js +0 -2203
- package/dist/document-handlers.js.map +0 -1
- package/dist/document-handshake.d.ts +0 -176
- package/dist/document-handshake.d.ts.map +0 -1
- package/dist/document-handshake.js +0 -452
- package/dist/document-handshake.js.map +0 -1
- package/dist/document-inbound.d.ts +0 -162
- package/dist/document-inbound.d.ts.map +0 -1
- package/dist/document-inbound.js +0 -530
- package/dist/document-inbound.js.map +0 -1
- package/dist/document-json.d.ts +0 -120
- package/dist/document-json.d.ts.map +0 -1
- package/dist/document-json.js +0 -191
- package/dist/document-json.js.map +0 -1
- package/dist/document-layer.d.ts +0 -215
- package/dist/document-layer.d.ts.map +0 -1
- package/dist/document-layer.js +0 -1025
- package/dist/document-layer.js.map +0 -1
- package/dist/document-lifecycle.d.ts +0 -52
- package/dist/document-lifecycle.d.ts.map +0 -1
- package/dist/document-lifecycle.js +0 -134
- package/dist/document-lifecycle.js.map +0 -1
- package/dist/document-live-docs.d.ts +0 -58
- package/dist/document-live-docs.d.ts.map +0 -1
- package/dist/document-live-docs.js +0 -126
- package/dist/document-live-docs.js.map +0 -1
- package/dist/document-notify.d.ts +0 -228
- package/dist/document-notify.d.ts.map +0 -1
- package/dist/document-notify.js +0 -580
- package/dist/document-notify.js.map +0 -1
- package/dist/document-profile.d.ts +0 -61
- package/dist/document-profile.d.ts.map +0 -1
- package/dist/document-profile.js +0 -112
- package/dist/document-profile.js.map +0 -1
- package/dist/document-publish.d.ts +0 -87
- package/dist/document-publish.d.ts.map +0 -1
- package/dist/document-publish.js +0 -173
- package/dist/document-publish.js.map +0 -1
- package/dist/document-reachability.d.ts +0 -42
- package/dist/document-reachability.d.ts.map +0 -1
- package/dist/document-reachability.js +0 -80
- package/dist/document-reachability.js.map +0 -1
- package/dist/document-reconcile-engine.d.ts +0 -66
- package/dist/document-reconcile-engine.d.ts.map +0 -1
- package/dist/document-reconcile-engine.js +0 -225
- package/dist/document-reconcile-engine.js.map +0 -1
- package/dist/document-reconcile-scheduler.d.ts +0 -163
- package/dist/document-reconcile-scheduler.d.ts.map +0 -1
- package/dist/document-reconcile-scheduler.js +0 -303
- package/dist/document-reconcile-scheduler.js.map +0 -1
- package/dist/document-rejection.d.ts +0 -251
- package/dist/document-rejection.d.ts.map +0 -1
- package/dist/document-rejection.js +0 -435
- package/dist/document-rejection.js.map +0 -1
- package/dist/document-screen.d.ts +0 -114
- package/dist/document-screen.d.ts.map +0 -1
- package/dist/document-screen.js +0 -223
- package/dist/document-screen.js.map +0 -1
- package/dist/document-store.d.ts +0 -372
- package/dist/document-store.d.ts.map +0 -1
- package/dist/document-store.js +0 -931
- package/dist/document-store.js.map +0 -1
- package/dist/document-surface.d.ts +0 -32
- package/dist/document-surface.d.ts.map +0 -1
- package/dist/document-surface.js +0 -151
- package/dist/document-surface.js.map +0 -1
- package/dist/document-types.d.ts +0 -94
- package/dist/document-types.d.ts.map +0 -1
- package/dist/document-types.js +0 -90
- package/dist/document-types.js.map +0 -1
- package/dist/document-watch.d.ts +0 -69
- package/dist/document-watch.d.ts.map +0 -1
- package/dist/document-watch.js +0 -108
- package/dist/document-watch.js.map +0 -1
- package/dist/document-wiring.d.ts +0 -53
- package/dist/document-wiring.d.ts.map +0 -1
- package/dist/document-wiring.js +0 -323
- package/dist/document-wiring.js.map +0 -1
- package/dist/document-write-guard.d.ts +0 -66
- package/dist/document-write-guard.d.ts.map +0 -1
- package/dist/document-write-guard.js +0 -98
- package/dist/document-write-guard.js.map +0 -1
- package/dist/document-write-path.d.ts +0 -94
- package/dist/document-write-path.d.ts.map +0 -1
- package/dist/document-write-path.js +0 -530
- package/dist/document-write-path.js.map +0 -1
- package/dist/error-message.d.ts +0 -7
- package/dist/error-message.d.ts.map +0 -1
- package/dist/error-message.js +0 -19
- package/dist/error-message.js.map +0 -1
- package/dist/file-manifest-provider.d.ts +0 -37
- package/dist/file-manifest-provider.d.ts.map +0 -1
- package/dist/file-manifest-provider.js +0 -105
- package/dist/file-manifest-provider.js.map +0 -1
- package/dist/frame-values.d.ts +0 -3
- package/dist/frame-values.d.ts.map +0 -1
- package/dist/frame-values.js +0 -84
- package/dist/frame-values.js.map +0 -1
- package/dist/frontier-mismatch.d.ts +0 -73
- package/dist/frontier-mismatch.d.ts.map +0 -1
- package/dist/frontier-mismatch.js +0 -89
- package/dist/frontier-mismatch.js.map +0 -1
- package/dist/gateway-config-handlers.d.ts +0 -26
- package/dist/gateway-config-handlers.d.ts.map +0 -1
- package/dist/gateway-config-handlers.js +0 -429
- package/dist/gateway-config-handlers.js.map +0 -1
- package/dist/held-content.d.ts +0 -145
- package/dist/held-content.d.ts.map +0 -1
- package/dist/held-content.js +0 -389
- package/dist/held-content.js.map +0 -1
- package/dist/http-manifest-poll.d.ts +0 -67
- package/dist/http-manifest-poll.d.ts.map +0 -1
- package/dist/http-manifest-poll.js +0 -150
- package/dist/http-manifest-poll.js.map +0 -1
- package/dist/identity-migration.d.ts +0 -40
- package/dist/identity-migration.d.ts.map +0 -1
- package/dist/identity-migration.js +0 -461
- package/dist/identity-migration.js.map +0 -1
- package/dist/inbound-refusals.d.ts +0 -283
- package/dist/inbound-refusals.d.ts.map +0 -1
- package/dist/inbound-refusals.js +0 -919
- package/dist/inbound-refusals.js.map +0 -1
- package/dist/inbound-seal-request.d.ts +0 -32
- package/dist/inbound-seal-request.d.ts.map +0 -1
- package/dist/inbound-seal-request.js +0 -228
- package/dist/inbound-seal-request.js.map +0 -1
- package/dist/inbound-sessions.d.ts +0 -291
- package/dist/inbound-sessions.d.ts.map +0 -1
- package/dist/inbound-sessions.js +0 -1609
- package/dist/inbound-sessions.js.map +0 -1
- package/dist/inclusion-proof-handlers.d.ts +0 -43
- package/dist/inclusion-proof-handlers.d.ts.map +0 -1
- package/dist/inclusion-proof-handlers.js +0 -565
- package/dist/inclusion-proof-handlers.js.map +0 -1
- package/dist/inclusion-proof.d.ts +0 -151
- package/dist/inclusion-proof.d.ts.map +0 -1
- package/dist/inclusion-proof.js +0 -228
- package/dist/inclusion-proof.js.map +0 -1
- package/dist/index.d.ts +0 -32
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/initiate-session-handler.d.ts +0 -55
- package/dist/initiate-session-handler.d.ts.map +0 -1
- package/dist/initiate-session-handler.js +0 -310
- package/dist/initiate-session-handler.js.map +0 -1
- package/dist/ipc-client.d.ts +0 -31
- package/dist/ipc-client.d.ts.map +0 -1
- package/dist/ipc-client.js +0 -113
- package/dist/ipc-client.js.map +0 -1
- package/dist/ipc-server.d.ts +0 -63
- package/dist/ipc-server.d.ts.map +0 -1
- package/dist/ipc-server.js +0 -429
- package/dist/ipc-server.js.map +0 -1
- package/dist/ipc-surface.d.ts +0 -44
- package/dist/ipc-surface.d.ts.map +0 -1
- package/dist/ipc-surface.js +0 -107
- package/dist/ipc-surface.js.map +0 -1
- package/dist/line-lcs.d.ts +0 -51
- package/dist/line-lcs.d.ts.map +0 -1
- package/dist/line-lcs.js +0 -71
- package/dist/line-lcs.js.map +0 -1
- package/dist/lock-file.d.ts +0 -39
- package/dist/lock-file.d.ts.map +0 -1
- package/dist/lock-file.js +0 -120
- package/dist/lock-file.js.map +0 -1
- package/dist/log-collapse.d.ts +0 -66
- package/dist/log-collapse.d.ts.map +0 -1
- package/dist/log-collapse.js +0 -244
- package/dist/log-collapse.js.map +0 -1
- package/dist/log-rotate.d.ts +0 -67
- package/dist/log-rotate.d.ts.map +0 -1
- package/dist/log-rotate.js +0 -134
- package/dist/log-rotate.js.map +0 -1
- package/dist/manifest-deps.d.ts +0 -25
- package/dist/manifest-deps.d.ts.map +0 -1
- package/dist/manifest-deps.js +0 -151
- package/dist/manifest-deps.js.map +0 -1
- package/dist/manifest-poll-scheduler.d.ts +0 -31
- package/dist/manifest-poll-scheduler.d.ts.map +0 -1
- package/dist/manifest-poll-scheduler.js +0 -59
- package/dist/manifest-poll-scheduler.js.map +0 -1
- package/dist/manifest-validity.d.ts +0 -153
- package/dist/manifest-validity.d.ts.map +0 -1
- package/dist/manifest-validity.js +0 -268
- package/dist/manifest-validity.js.map +0 -1
- package/dist/manifest-version-store-db.d.ts +0 -24
- package/dist/manifest-version-store-db.d.ts.map +0 -1
- package/dist/manifest-version-store-db.js +0 -58
- package/dist/manifest-version-store-db.js.map +0 -1
- package/dist/manifest-version-store.d.ts +0 -16
- package/dist/manifest-version-store.d.ts.map +0 -1
- package/dist/manifest-version-store.js +0 -15
- package/dist/manifest-version-store.js.map +0 -1
- package/dist/network-directory-node.d.ts +0 -136
- package/dist/network-directory-node.d.ts.map +0 -1
- package/dist/network-directory-node.js +0 -810
- package/dist/network-directory-node.js.map +0 -1
- package/dist/nonce-dedup.d.ts +0 -68
- package/dist/nonce-dedup.d.ts.map +0 -1
- package/dist/nonce-dedup.js +0 -205
- package/dist/nonce-dedup.js.map +0 -1
- package/dist/notification-dispatcher.d.ts +0 -92
- package/dist/notification-dispatcher.d.ts.map +0 -1
- package/dist/notification-dispatcher.js +0 -210
- package/dist/notification-dispatcher.js.map +0 -1
- package/dist/notification-handlers.d.ts +0 -53
- package/dist/notification-handlers.d.ts.map +0 -1
- package/dist/notification-handlers.js +0 -461
- package/dist/notification-handlers.js.map +0 -1
- package/dist/onboarding-guidance.d.ts +0 -79
- package/dist/onboarding-guidance.d.ts.map +0 -1
- package/dist/onboarding-guidance.js +0 -95
- package/dist/onboarding-guidance.js.map +0 -1
- package/dist/operator-guidance.d.ts +0 -25
- package/dist/operator-guidance.d.ts.map +0 -1
- package/dist/operator-guidance.js +0 -50
- package/dist/operator-guidance.js.map +0 -1
- package/dist/orphan-triage.d.ts +0 -130
- package/dist/orphan-triage.d.ts.map +0 -1
- package/dist/orphan-triage.js +0 -207
- package/dist/orphan-triage.js.map +0 -1
- package/dist/outbound-sessions.d.ts +0 -126
- package/dist/outbound-sessions.d.ts.map +0 -1
- package/dist/outbound-sessions.js +0 -1052
- package/dist/outbound-sessions.js.map +0 -1
- package/dist/park-envelope.d.ts +0 -329
- package/dist/park-envelope.d.ts.map +0 -1
- package/dist/park-envelope.js +0 -509
- package/dist/park-envelope.js.map +0 -1
- package/dist/park-recovery.d.ts +0 -273
- package/dist/park-recovery.d.ts.map +0 -1
- package/dist/park-recovery.js +0 -717
- package/dist/park-recovery.js.map +0 -1
- package/dist/park-refusals.d.ts +0 -147
- package/dist/park-refusals.d.ts.map +0 -1
- package/dist/park-refusals.js +0 -331
- package/dist/park-refusals.js.map +0 -1
- package/dist/quarantine-framing.d.ts +0 -92
- package/dist/quarantine-framing.d.ts.map +0 -1
- package/dist/quarantine-framing.js +0 -111
- package/dist/quarantine-framing.js.map +0 -1
- package/dist/reconnect-drain.d.ts +0 -22
- package/dist/reconnect-drain.d.ts.map +0 -1
- package/dist/reconnect-drain.js +0 -65
- package/dist/reconnect-drain.js.map +0 -1
- package/dist/recovered-position.d.ts +0 -14
- package/dist/recovered-position.d.ts.map +0 -1
- package/dist/recovered-position.js +0 -59
- package/dist/recovered-position.js.map +0 -1
- package/dist/refusal-notices.d.ts +0 -196
- package/dist/refusal-notices.d.ts.map +0 -1
- package/dist/refusal-notices.js +0 -516
- package/dist/refusal-notices.js.map +0 -1
- package/dist/refusal-reasons.d.ts +0 -245
- package/dist/refusal-reasons.d.ts.map +0 -1
- package/dist/refusal-reasons.js +0 -363
- package/dist/refusal-reasons.js.map +0 -1
- package/dist/register-handler.d.ts +0 -36
- package/dist/register-handler.d.ts.map +0 -1
- package/dist/register-handler.js +0 -285
- package/dist/register-handler.js.map +0 -1
- package/dist/registration-context.d.ts +0 -72
- package/dist/registration-context.d.ts.map +0 -1
- package/dist/registration-context.js +0 -126
- package/dist/registration-context.js.map +0 -1
- package/dist/registration-manager.d.ts +0 -94
- package/dist/registration-manager.d.ts.map +0 -1
- package/dist/registration-manager.js +0 -585
- package/dist/registration-manager.js.map +0 -1
- package/dist/registration-persistence.d.ts +0 -183
- package/dist/registration-persistence.d.ts.map +0 -1
- package/dist/registration-persistence.js +0 -263
- package/dist/registration-persistence.js.map +0 -1
- package/dist/registry-poll.d.ts +0 -52
- package/dist/registry-poll.d.ts.map +0 -1
- package/dist/registry-poll.js +0 -140
- package/dist/registry-poll.js.map +0 -1
- package/dist/registry-version-store-db.d.ts +0 -22
- package/dist/registry-version-store-db.d.ts.map +0 -1
- package/dist/registry-version-store-db.js +0 -50
- package/dist/registry-version-store-db.js.map +0 -1
- package/dist/relay-endpoints.d.ts +0 -18
- package/dist/relay-endpoints.d.ts.map +0 -1
- package/dist/relay-endpoints.js +0 -9
- package/dist/relay-endpoints.js.map +0 -1
- package/dist/relay-only.d.ts +0 -140
- package/dist/relay-only.d.ts.map +0 -1
- package/dist/relay-only.js +0 -193
- package/dist/relay-only.js.map +0 -1
- package/dist/relay-receipt-store.d.ts +0 -155
- package/dist/relay-receipt-store.d.ts.map +0 -1
- package/dist/relay-receipt-store.js +0 -284
- package/dist/relay-receipt-store.js.map +0 -1
- package/dist/relay-reconnect.d.ts +0 -32
- package/dist/relay-reconnect.d.ts.map +0 -1
- package/dist/relay-reconnect.js +0 -29
- package/dist/relay-reconnect.js.map +0 -1
- package/dist/reply-lag.d.ts +0 -11
- package/dist/reply-lag.d.ts.map +0 -1
- package/dist/reply-lag.js +0 -46
- package/dist/reply-lag.js.map +0 -1
- package/dist/resolve-named-agent.d.ts +0 -49
- package/dist/resolve-named-agent.d.ts.map +0 -1
- package/dist/resolve-named-agent.js +0 -77
- package/dist/resolve-named-agent.js.map +0 -1
- package/dist/restart-seal-resolver.d.ts +0 -110
- package/dist/restart-seal-resolver.d.ts.map +0 -1
- package/dist/restart-seal-resolver.js +0 -353
- package/dist/restart-seal-resolver.js.map +0 -1
- package/dist/resume-last-seen.d.ts +0 -15
- package/dist/resume-last-seen.d.ts.map +0 -1
- package/dist/resume-last-seen.js +0 -44
- package/dist/resume-last-seen.js.map +0 -1
- package/dist/retry-queue.d.ts +0 -203
- package/dist/retry-queue.d.ts.map +0 -1
- package/dist/retry-queue.js +0 -701
- package/dist/retry-queue.js.map +0 -1
- package/dist/roster-freshness.d.ts +0 -160
- package/dist/roster-freshness.d.ts.map +0 -1
- package/dist/roster-freshness.js +0 -250
- package/dist/roster-freshness.js.map +0 -1
- package/dist/screening-status.d.ts +0 -15
- package/dist/screening-status.d.ts.map +0 -1
- package/dist/screening-status.js +0 -65
- package/dist/screening-status.js.map +0 -1
- package/dist/seal-carried-close.d.ts +0 -37
- package/dist/seal-carried-close.d.ts.map +0 -1
- package/dist/seal-carried-close.js +0 -179
- package/dist/seal-carried-close.js.map +0 -1
- package/dist/seal-certificate-pull.d.ts +0 -79
- package/dist/seal-certificate-pull.d.ts.map +0 -1
- package/dist/seal-certificate-pull.js +0 -186
- package/dist/seal-certificate-pull.js.map +0 -1
- package/dist/seal-certified-root-check.d.ts +0 -37
- package/dist/seal-certified-root-check.d.ts.map +0 -1
- package/dist/seal-certified-root-check.js +0 -127
- package/dist/seal-certified-root-check.js.map +0 -1
- package/dist/seal-coordinator.d.ts +0 -118
- package/dist/seal-coordinator.d.ts.map +0 -1
- package/dist/seal-coordinator.js +0 -927
- package/dist/seal-coordinator.js.map +0 -1
- package/dist/seal-escalation.d.ts +0 -80
- package/dist/seal-escalation.d.ts.map +0 -1
- package/dist/seal-escalation.js +0 -283
- package/dist/seal-escalation.js.map +0 -1
- package/dist/seal-evidence-root-check.d.ts +0 -70
- package/dist/seal-evidence-root-check.d.ts.map +0 -1
- package/dist/seal-evidence-root-check.js +0 -199
- package/dist/seal-evidence-root-check.js.map +0 -1
- package/dist/seal-failure-store.d.ts +0 -129
- package/dist/seal-failure-store.d.ts.map +0 -1
- package/dist/seal-failure-store.js +0 -173
- package/dist/seal-failure-store.js.map +0 -1
- package/dist/seal-flows.d.ts +0 -107
- package/dist/seal-flows.d.ts.map +0 -1
- package/dist/seal-flows.js +0 -638
- package/dist/seal-flows.js.map +0 -1
- package/dist/seal-frontier-verify.d.ts +0 -103
- package/dist/seal-frontier-verify.d.ts.map +0 -1
- package/dist/seal-frontier-verify.js +0 -143
- package/dist/seal-frontier-verify.js.map +0 -1
- package/dist/seal-leaf.d.ts +0 -58
- package/dist/seal-leaf.d.ts.map +0 -1
- package/dist/seal-leaf.js +0 -112
- package/dist/seal-leaf.js.map +0 -1
- package/dist/seal-legibility-tbs.d.ts +0 -25
- package/dist/seal-legibility-tbs.d.ts.map +0 -1
- package/dist/seal-legibility-tbs.js +0 -77
- package/dist/seal-legibility-tbs.js.map +0 -1
- package/dist/seal-local-terminus.d.ts +0 -41
- package/dist/seal-local-terminus.d.ts.map +0 -1
- package/dist/seal-local-terminus.js +0 -170
- package/dist/seal-local-terminus.js.map +0 -1
- package/dist/seal-receipt-upgrade.d.ts +0 -30
- package/dist/seal-receipt-upgrade.d.ts.map +0 -1
- package/dist/seal-receipt-upgrade.js +0 -49
- package/dist/seal-receipt-upgrade.js.map +0 -1
- package/dist/seal-relay-silence.d.ts +0 -51
- package/dist/seal-relay-silence.d.ts.map +0 -1
- package/dist/seal-relay-silence.js +0 -76
- package/dist/seal-relay-silence.js.map +0 -1
- package/dist/seal-settle.d.ts +0 -38
- package/dist/seal-settle.d.ts.map +0 -1
- package/dist/seal-settle.js +0 -33
- package/dist/seal-settle.js.map +0 -1
- package/dist/seal-upgrade.d.ts +0 -107
- package/dist/seal-upgrade.d.ts.map +0 -1
- package/dist/seal-upgrade.js +0 -200
- package/dist/seal-upgrade.js.map +0 -1
- package/dist/sealed-conversation.d.ts +0 -36
- package/dist/sealed-conversation.d.ts.map +0 -1
- package/dist/sealed-conversation.js +0 -171
- package/dist/sealed-conversation.js.map +0 -1
- package/dist/sealed-leaf-set.d.ts +0 -92
- package/dist/sealed-leaf-set.d.ts.map +0 -1
- package/dist/sealed-leaf-set.js +0 -122
- package/dist/sealed-leaf-set.js.map +0 -1
- package/dist/send-claims.d.ts +0 -56
- package/dist/send-claims.d.ts.map +0 -1
- package/dist/send-claims.js +0 -50
- package/dist/send-claims.js.map +0 -1
- package/dist/session-assignment-parser.d.ts +0 -98
- package/dist/session-assignment-parser.d.ts.map +0 -1
- package/dist/session-assignment-parser.js +0 -325
- package/dist/session-assignment-parser.js.map +0 -1
- package/dist/session-category.d.ts +0 -19
- package/dist/session-category.d.ts.map +0 -1
- package/dist/session-category.js +0 -14
- package/dist/session-category.js.map +0 -1
- package/dist/session-ceremony.d.ts +0 -297
- package/dist/session-ceremony.d.ts.map +0 -1
- package/dist/session-ceremony.js +0 -964
- package/dist/session-ceremony.js.map +0 -1
- package/dist/session-closed.d.ts +0 -79
- package/dist/session-closed.d.ts.map +0 -1
- package/dist/session-closed.js +0 -189
- package/dist/session-closed.js.map +0 -1
- package/dist/session-connection-gater.d.ts +0 -148
- package/dist/session-connection-gater.d.ts.map +0 -1
- package/dist/session-connection-gater.js +0 -332
- package/dist/session-connection-gater.js.map +0 -1
- package/dist/session-content-context.d.ts +0 -162
- package/dist/session-content-context.d.ts.map +0 -1
- package/dist/session-content-context.js +0 -2
- package/dist/session-content-context.js.map +0 -1
- package/dist/session-content-handlers.d.ts +0 -82
- package/dist/session-content-handlers.d.ts.map +0 -1
- package/dist/session-content-handlers.js +0 -1382
- package/dist/session-content-handlers.js.map +0 -1
- package/dist/session-content-ingest.d.ts +0 -206
- package/dist/session-content-ingest.d.ts.map +0 -1
- package/dist/session-content-ingest.js +0 -2167
- package/dist/session-content-ingest.js.map +0 -1
- package/dist/session-content-send.d.ts +0 -191
- package/dist/session-content-send.d.ts.map +0 -1
- package/dist/session-content-send.js +0 -1360
- package/dist/session-content-send.js.map +0 -1
- package/dist/session-delivery-acks.d.ts +0 -169
- package/dist/session-delivery-acks.d.ts.map +0 -1
- package/dist/session-delivery-acks.js +0 -569
- package/dist/session-delivery-acks.js.map +0 -1
- package/dist/session-ephemerals.d.ts +0 -279
- package/dist/session-ephemerals.d.ts.map +0 -1
- package/dist/session-ephemerals.js +0 -591
- package/dist/session-ephemerals.js.map +0 -1
- package/dist/session-leaf-records.d.ts +0 -159
- package/dist/session-leaf-records.d.ts.map +0 -1
- package/dist/session-leaf-records.js +0 -408
- package/dist/session-leaf-records.js.map +0 -1
- package/dist/session-lifecycle.d.ts +0 -303
- package/dist/session-lifecycle.d.ts.map +0 -1
- package/dist/session-lifecycle.js +0 -1679
- package/dist/session-lifecycle.js.map +0 -1
- package/dist/session-liveness.d.ts +0 -135
- package/dist/session-liveness.d.ts.map +0 -1
- package/dist/session-liveness.js +0 -347
- package/dist/session-liveness.js.map +0 -1
- package/dist/session-name.d.ts +0 -35
- package/dist/session-name.d.ts.map +0 -1
- package/dist/session-name.js +0 -60
- package/dist/session-name.js.map +0 -1
- package/dist/session-node-factory.d.ts +0 -18
- package/dist/session-node-factory.d.ts.map +0 -1
- package/dist/session-node-factory.js +0 -182
- package/dist/session-node-factory.js.map +0 -1
- package/dist/session-node-manager.d.ts +0 -875
- package/dist/session-node-manager.d.ts.map +0 -1
- package/dist/session-node-manager.js +0 -2995
- package/dist/session-node-manager.js.map +0 -1
- package/dist/session-node-types.d.ts +0 -1057
- package/dist/session-node-types.d.ts.map +0 -1
- package/dist/session-node-types.js +0 -657
- package/dist/session-node-types.js.map +0 -1
- package/dist/session-notify.d.ts +0 -46
- package/dist/session-notify.d.ts.map +0 -1
- package/dist/session-notify.js +0 -116
- package/dist/session-notify.js.map +0 -1
- package/dist/session-own-chain-store.d.ts +0 -65
- package/dist/session-own-chain-store.d.ts.map +0 -1
- package/dist/session-own-chain-store.js +0 -75
- package/dist/session-own-chain-store.js.map +0 -1
- package/dist/session-queries.d.ts +0 -476
- package/dist/session-queries.d.ts.map +0 -1
- package/dist/session-queries.js +0 -1007
- package/dist/session-queries.js.map +0 -1
- package/dist/session-read-handlers.d.ts +0 -87
- package/dist/session-read-handlers.d.ts.map +0 -1
- package/dist/session-read-handlers.js +0 -682
- package/dist/session-read-handlers.js.map +0 -1
- package/dist/session-records.d.ts +0 -341
- package/dist/session-records.d.ts.map +0 -1
- package/dist/session-records.js +0 -858
- package/dist/session-records.js.map +0 -1
- package/dist/session-relay-client.d.ts +0 -659
- package/dist/session-relay-client.d.ts.map +0 -1
- package/dist/session-relay-client.js +0 -2876
- package/dist/session-relay-client.js.map +0 -1
- package/dist/session-relay.d.ts +0 -397
- package/dist/session-relay.d.ts.map +0 -1
- package/dist/session-relay.js +0 -1636
- package/dist/session-relay.js.map +0 -1
- package/dist/session-salt-agreement.d.ts +0 -331
- package/dist/session-salt-agreement.d.ts.map +0 -1
- package/dist/session-salt-agreement.js +0 -472
- package/dist/session-salt-agreement.js.map +0 -1
- package/dist/session-salts.d.ts +0 -432
- package/dist/session-salts.d.ts.map +0 -1
- package/dist/session-salts.js +0 -1540
- package/dist/session-salts.js.map +0 -1
- package/dist/session-schema.d.ts +0 -30
- package/dist/session-schema.d.ts.map +0 -1
- package/dist/session-schema.js +0 -877
- package/dist/session-schema.js.map +0 -1
- package/dist/session-seal-leaf-store.d.ts +0 -70
- package/dist/session-seal-leaf-store.d.ts.map +0 -1
- package/dist/session-seal-leaf-store.js +0 -105
- package/dist/session-seal-leaf-store.js.map +0 -1
- package/dist/session-seal.d.ts +0 -334
- package/dist/session-seal.d.ts.map +0 -1
- package/dist/session-seal.js +0 -1017
- package/dist/session-seal.js.map +0 -1
- package/dist/session-terminal-refusal.d.ts +0 -65
- package/dist/session-terminal-refusal.d.ts.map +0 -1
- package/dist/session-terminal-refusal.js +0 -87
- package/dist/session-terminal-refusal.js.map +0 -1
- package/dist/session-tree.d.ts +0 -110
- package/dist/session-tree.d.ts.map +0 -1
- package/dist/session-tree.js +0 -144
- package/dist/session-tree.js.map +0 -1
- package/dist/session-views.d.ts +0 -47
- package/dist/session-views.d.ts.map +0 -1
- package/dist/session-views.js +0 -278
- package/dist/session-views.js.map +0 -1
- package/dist/signal-handlers.d.ts +0 -63
- package/dist/signal-handlers.d.ts.map +0 -1
- package/dist/signal-handlers.js +0 -980
- package/dist/signal-handlers.js.map +0 -1
- package/dist/signal-requirement-policy.d.ts +0 -51
- package/dist/signal-requirement-policy.d.ts.map +0 -1
- package/dist/signal-requirement-policy.js +0 -89
- package/dist/signal-requirement-policy.js.map +0 -1
- package/dist/signal-revocability.d.ts +0 -49
- package/dist/signal-revocability.d.ts.map +0 -1
- package/dist/signal-revocability.js +0 -93
- package/dist/signal-revocability.js.map +0 -1
- package/dist/signal-submission.d.ts +0 -181
- package/dist/signal-submission.d.ts.map +0 -1
- package/dist/signal-submission.js +0 -368
- package/dist/signal-submission.js.map +0 -1
- package/dist/signaling-connect.d.ts +0 -118
- package/dist/signaling-connect.d.ts.map +0 -1
- package/dist/signaling-connect.js +0 -538
- package/dist/signaling-connect.js.map +0 -1
- package/dist/signaling-wiring.d.ts +0 -105
- package/dist/signaling-wiring.d.ts.map +0 -1
- package/dist/signaling-wiring.js +0 -393
- package/dist/signaling-wiring.js.map +0 -1
- package/dist/singleton-lock.d.ts +0 -85
- package/dist/singleton-lock.d.ts.map +0 -1
- package/dist/singleton-lock.js +0 -219
- package/dist/singleton-lock.js.map +0 -1
- package/dist/sqlcipher-db.d.ts +0 -139
- package/dist/sqlcipher-db.d.ts.map +0 -1
- package/dist/sqlcipher-db.js +0 -357
- package/dist/sqlcipher-db.js.map +0 -1
- package/dist/standing-receivers.d.ts +0 -319
- package/dist/standing-receivers.d.ts.map +0 -1
- package/dist/standing-receivers.js +0 -1295
- package/dist/standing-receivers.js.map +0 -1
- package/dist/start-agent.d.ts +0 -64
- package/dist/start-agent.d.ts.map +0 -1
- package/dist/start-agent.js +0 -136
- package/dist/start-agent.js.map +0 -1
- package/dist/status-handler.d.ts +0 -54
- package/dist/status-handler.d.ts.map +0 -1
- package/dist/status-handler.js +0 -61
- package/dist/status-handler.js.map +0 -1
- package/dist/submission-retry.d.ts +0 -208
- package/dist/submission-retry.d.ts.map +0 -1
- package/dist/submission-retry.js +0 -506
- package/dist/submission-retry.js.map +0 -1
- package/dist/telegram-bot-client.d.ts +0 -34
- package/dist/telegram-bot-client.d.ts.map +0 -1
- package/dist/telegram-bot-client.js +0 -36
- package/dist/telegram-bot-client.js.map +0 -1
- package/dist/telegram-doorbell.d.ts +0 -38
- package/dist/telegram-doorbell.d.ts.map +0 -1
- package/dist/telegram-doorbell.js +0 -140
- package/dist/telegram-doorbell.js.map +0 -1
- package/dist/test-handlers.d.ts +0 -62
- package/dist/test-handlers.d.ts.map +0 -1
- package/dist/test-handlers.js +0 -240
- package/dist/test-handlers.js.map +0 -1
- package/dist/testing.d.ts +0 -10
- package/dist/testing.d.ts.map +0 -1
- package/dist/testing.js +0 -10
- package/dist/testing.js.map +0 -1
- package/dist/transport-composition.d.ts +0 -31
- package/dist/transport-composition.d.ts.map +0 -1
- package/dist/transport-composition.js +0 -55
- package/dist/transport-composition.js.map +0 -1
- package/dist/transport-selector.d.ts +0 -202
- package/dist/transport-selector.d.ts.map +0 -1
- package/dist/transport-selector.js +0 -196
- package/dist/transport-selector.js.map +0 -1
- package/dist/trust-signal-pickup-listener.d.ts +0 -43
- package/dist/trust-signal-pickup-listener.d.ts.map +0 -1
- package/dist/trust-signal-pickup-listener.js +0 -48
- package/dist/trust-signal-pickup-listener.js.map +0 -1
- package/dist/trust-signal-store.d.ts +0 -406
- package/dist/trust-signal-store.d.ts.map +0 -1
- package/dist/trust-signal-store.js +0 -939
- package/dist/trust-signal-store.js.map +0 -1
- package/dist/trust-signal-sweep-tick.d.ts +0 -60
- package/dist/trust-signal-sweep-tick.d.ts.map +0 -1
- package/dist/trust-signal-sweep-tick.js +0 -101
- package/dist/trust-signal-sweep-tick.js.map +0 -1
- package/dist/trust-signal-sweep.d.ts +0 -94
- package/dist/trust-signal-sweep.d.ts.map +0 -1
- package/dist/trust-signal-sweep.js +0 -147
- package/dist/trust-signal-sweep.js.map +0 -1
- package/dist/type-registry.d.ts +0 -42
- package/dist/type-registry.d.ts.map +0 -1
- package/dist/type-registry.js +0 -37
- package/dist/type-registry.js.map +0 -1
- package/dist/types.d.ts +0 -746
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -20
- package/dist/types.js.map +0 -1
- package/dist/unresolved-nodes-report.d.ts +0 -14
- package/dist/unresolved-nodes-report.d.ts.map +0 -1
- package/dist/unresolved-nodes-report.js +0 -96
- package/dist/unresolved-nodes-report.js.map +0 -1
- package/dist/vocabulary.d.ts +0 -150
- package/dist/vocabulary.d.ts.map +0 -1
- package/dist/vocabulary.js +0 -386
- package/dist/vocabulary.js.map +0 -1
- package/dist/who-label.d.ts +0 -28
- package/dist/who-label.d.ts.map +0 -1
- package/dist/who-label.js +0 -31
- package/dist/who-label.js.map +0 -1
- package/dist/who-resolver.d.ts +0 -15
- package/dist/who-resolver.d.ts.map +0 -1
- package/dist/who-resolver.js +0 -47
- package/dist/who-resolver.js.map +0 -1
- package/dist/wire-content-hash.d.ts +0 -93
- package/dist/wire-content-hash.d.ts.map +0 -1
- package/dist/wire-content-hash.js +0 -116
- package/dist/wire-content-hash.js.map +0 -1
- package/dist/withheld-content.d.ts +0 -13
- package/dist/withheld-content.d.ts.map +0 -1
- package/dist/withheld-content.js +0 -46
- package/dist/withheld-content.js.map +0 -1
- package/dist/witness-alerts.d.ts +0 -40
- package/dist/witness-alerts.d.ts.map +0 -1
- package/dist/witness-alerts.js +0 -102
- package/dist/witness-alerts.js.map +0 -1
package/dist/park-envelope.js
DELETED
|
@@ -1,509 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SEC-1 — the relay-park content envelope, and its authentication.
|
|
3
|
-
*
|
|
4
|
-
* WHY THIS EXISTS. Relay deposit is unauthenticated by design (the blob is E2E-encrypted, so an open
|
|
5
|
-
* deposit cannot LEAK anything) and `sealToRecipient` is an ANONYMOUS public-key seal. Those two
|
|
6
|
-
* facts together mean anyone holding the recipient's PUBLIC key can mint a well-formed sealed entry
|
|
7
|
-
* for their mailbox. Before SEC-1 the recovery path took the sender identity from the SESSION ROW,
|
|
8
|
-
* never from the envelope — so injected content was attributed to the honest counterparty, appended
|
|
9
|
-
* as a Merkle leaf, and then NOTARIZED by the bilateral seal. The party best placed to exploit that
|
|
10
|
-
* is the RELAY ITSELF: the protocol hands it the session_id in plaintext on every deposit and the
|
|
11
|
-
* recipient pubkey is its mailbox key.
|
|
12
|
-
*
|
|
13
|
-
* Confidentiality was mistaken for the whole job. A relay that cannot READ your messages could still
|
|
14
|
-
* WRITE them for you.
|
|
15
|
-
*
|
|
16
|
-
* THE FIX. Every envelope carries a per-message SENDER SIGNATURE over a domain-separated statement
|
|
17
|
-
* bound to (session_id, recipient_pubkey, content_hash) — see `buildParkContentTbs`. It rides INSIDE
|
|
18
|
-
* the seal, so the relay can neither read, strip, nor forge it. Recovery FAILS CLOSED.
|
|
19
|
-
*
|
|
20
|
-
* Note the signature is bound to the sender's own K_local and NOT to the relay's ordering record
|
|
21
|
-
* (Structure1/2). That is deliberate: the ordering record embeds a RELAY-ASSIGNED sequence, so
|
|
22
|
-
* making authenticity depend on it would make the adversary a precondition for trusting content.
|
|
23
|
-
* It also keeps the CELLO-M7-MSG-001 crash backstop working — that path legitimately parks content
|
|
24
|
-
* with no ordering record (the durable awaiting queue does not persist one), and it can still sign.
|
|
25
|
-
*
|
|
26
|
-
* Crypto: Ed25519 (RFC 8032), SHA-256 (FIPS 180-4).
|
|
27
|
-
*/
|
|
28
|
-
import { timingSafeEqual, createHash } from "node:crypto";
|
|
29
|
-
import { decode as cborDecode } from "cbor-x";
|
|
30
|
-
import { encodeCbor } from "@cello-protocol/protocol-types";
|
|
31
|
-
import { verify, sealToRecipient } from "@cello-protocol/crypto";
|
|
32
|
-
import { buildParkContentTbs } from "@cello-protocol/protocol-types";
|
|
33
|
-
import { CONTENT_HASH_ALGS, isKnownContentHashAlg } from "./wire-content-hash.js";
|
|
34
|
-
/**
|
|
35
|
-
* Compare an identity key (raw bytes) against a stored hex pubkey — on BYTES, never on the hex
|
|
36
|
-
* strings.
|
|
37
|
-
*
|
|
38
|
-
* Review M1: `sessions.counterparty_pubkey` is persisted VERBATIM from the IPC `target_pubkey`
|
|
39
|
-
* string with no normalization, so an uppercase or mixed-case pubkey is a perfectly functional
|
|
40
|
-
* session (Buffer.from(hex) is case-insensitive, so dialing, sealing and the direct content path all
|
|
41
|
-
* work) — but a `toString("hex") !== stored` comparison would then refuse EVERY parked recovery for
|
|
42
|
-
* that session as `signer_not_counterparty`, i.e. permanent store-and-forward mail loss reported as
|
|
43
|
-
* an attack. Comparing bytes makes the check independent of how the hex was cased on the way in.
|
|
44
|
-
*
|
|
45
|
-
* Length-guarded because timingSafeEqual throws on a length mismatch, and the input is
|
|
46
|
-
* attacker-controlled (a forged envelope can carry a short/long pubkey).
|
|
47
|
-
*/
|
|
48
|
-
export function pubkeyMatchesHex(pubkey, storedHex) {
|
|
49
|
-
if (!storedHex)
|
|
50
|
-
return false;
|
|
51
|
-
let stored;
|
|
52
|
-
try {
|
|
53
|
-
stored = Buffer.from(storedHex, "hex");
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
return false;
|
|
57
|
-
}
|
|
58
|
-
// Buffer.from ignores trailing garbage rather than throwing, so a length check is the real guard.
|
|
59
|
-
if (stored.length === 0 || stored.length !== pubkey.length)
|
|
60
|
-
return false;
|
|
61
|
-
return timingSafeEqual(Buffer.from(pubkey), stored);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* DOD-M15-DELIVERYACK-1 unit 1 — WHAT A PARKED ENTRY IS, SAID WHERE THE RELAY CANNOT READ IT.
|
|
65
|
-
*
|
|
66
|
-
* The relay's mailbox holds opaque ciphertext and has no idea what is inside. An acknowledgement
|
|
67
|
-
* parked there would arrive at the recipient's content-recovery path and be ingested as a MESSAGE —
|
|
68
|
-
* which is why the acknowledgement could not use that path at all, and why an acknowledgement sent
|
|
69
|
-
* while the sender's daemon was down was simply lost.
|
|
70
|
-
*
|
|
71
|
-
* So the discriminator rides INSIDE the seal. Consequences, and all three are the point:
|
|
72
|
-
* - the relay needs NO change and learns nothing new — it stays a blind custodian (INV-3);
|
|
73
|
-
* - the relay cannot strip the tag to make an acknowledgement be ingested as content, nor add one
|
|
74
|
-
* to make a message disappear into the evidence store;
|
|
75
|
-
* - the envelope's existing SEC-1 gate still runs first, so a parked acknowledgement is
|
|
76
|
-
* authenticated as coming from this session's counterparty BEFORE anything looks at what it says.
|
|
77
|
-
*
|
|
78
|
-
* ⚠️ THE TAG IS A WIRE VALUE. The string is the contract; renaming the constant is free, changing
|
|
79
|
-
* its value breaks every parked acknowledgement already sitting in a mailbox.
|
|
80
|
-
*/
|
|
81
|
-
export const PARKED_DELIVERY_ACK_TAG = "cello/park/delivery-ack/v1";
|
|
82
|
-
/** Domain separator for the mailbox slot an acknowledgement is filed under. */
|
|
83
|
-
const PARKED_DELIVERY_ACK_SLOT_DOMAIN = "CELLO-PARK-DELIVERY-ACK-SLOT-v1";
|
|
84
|
-
/**
|
|
85
|
-
* The relay mailbox slot a parked acknowledgement occupies.
|
|
86
|
-
*
|
|
87
|
-
* ⚠️ NOT the hash it acknowledges, and that is a correctness requirement rather than tidiness. The
|
|
88
|
-
* relay files entries by `(recipient_pubkey, content_hash)`. Filing an acknowledgement under the
|
|
89
|
-
* hash it is about would put it in the same slot a parked copy of that very message occupies, so
|
|
90
|
-
* one could evict or be mistaken for the other. A labelled derivation puts it somewhere no
|
|
91
|
-
* message's content hash can land, by accident or by construction.
|
|
92
|
-
*
|
|
93
|
-
* DETERMINISTIC on purpose: re-parking the same acknowledgement lands on the same slot, so the
|
|
94
|
-
* relay's own `INSERT OR IGNORE`-shaped dedup absorbs a repeat instead of growing the mailbox.
|
|
95
|
-
*
|
|
96
|
-
* SHA-256 — FIPS 180-4.
|
|
97
|
-
*/
|
|
98
|
-
export function parkedDeliveryAckMailboxHash(sessionIdHex, contentHash) {
|
|
99
|
-
return new Uint8Array(createHash("sha256")
|
|
100
|
-
.update(Buffer.from(PARKED_DELIVERY_ACK_SLOT_DOMAIN, "utf8"))
|
|
101
|
-
.update(Buffer.from(sessionIdHex, "hex"))
|
|
102
|
-
.update(Buffer.from(contentHash))
|
|
103
|
-
.digest());
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Encode a parked acknowledgement. This becomes the park envelope's `content`, so the envelope's
|
|
107
|
-
* signature covers it and the seal hides it.
|
|
108
|
-
*/
|
|
109
|
-
export function encodeParkedDeliveryAck(ack) {
|
|
110
|
-
return encodeCbor([
|
|
111
|
-
PARKED_DELIVERY_ACK_TAG,
|
|
112
|
-
ack.sessionIdHex,
|
|
113
|
-
ack.contentHash,
|
|
114
|
-
ack.ackSig,
|
|
115
|
-
]);
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Is this park envelope's content a delivery acknowledgement? `null` means no — which is the answer
|
|
119
|
-
* for every ordinary message, and must stay the answer for every ordinary message.
|
|
120
|
-
*
|
|
121
|
-
* 🚨 STRICT ON PURPOSE, AND IT REFUSES RATHER THAN REPAIRS. A malformed acknowledgement answers
|
|
122
|
-
* `null`, which routes it to the content path where the envelope gate has already vouched for the
|
|
123
|
-
* depositor and ingest will judge it on its own terms. There is no half-accepted acknowledgement:
|
|
124
|
-
* the widths are exact, the tag is in the first slot only, and a hex session id that is not hex is
|
|
125
|
-
* refused. A tolerant decode here would let a crafted message be filed as proof of its own delivery.
|
|
126
|
-
*/
|
|
127
|
-
export function decodeParkedDeliveryAck(content) {
|
|
128
|
-
let arr;
|
|
129
|
-
try {
|
|
130
|
-
arr = cborDecode(content);
|
|
131
|
-
}
|
|
132
|
-
catch {
|
|
133
|
-
return null;
|
|
134
|
-
}
|
|
135
|
-
if (!Array.isArray(arr) || arr.length !== 4)
|
|
136
|
-
return null;
|
|
137
|
-
const [tag, sessionIdHex, contentHash, ackSig] = arr;
|
|
138
|
-
if (tag !== PARKED_DELIVERY_ACK_TAG)
|
|
139
|
-
return null;
|
|
140
|
-
if (typeof sessionIdHex !== "string" || !/^[0-9a-fA-F]+$/.test(sessionIdHex) || sessionIdHex.length % 2 !== 0)
|
|
141
|
-
return null;
|
|
142
|
-
if (!(contentHash instanceof Uint8Array) || contentHash.length !== 32)
|
|
143
|
-
return null;
|
|
144
|
-
if (!(ackSig instanceof Uint8Array) || ackSig.length !== 64)
|
|
145
|
-
return null;
|
|
146
|
-
return { sessionIdHex, contentHash, ackSig };
|
|
147
|
-
}
|
|
148
|
-
/** Current envelope version. v1 (unsigned) is decodable but NEVER acceptable — see authenticate(). */
|
|
149
|
-
export const PARK_ENVELOPE_VERSION = 2;
|
|
150
|
-
/**
|
|
151
|
-
* v3 — a v2 envelope plus the CONTENT-HASH ALGORITHM (`DOD-M15-SEALWIRE-1` part B2a).
|
|
152
|
-
*
|
|
153
|
-
* ⚠️ EMITTED ONLY WHEN THE ALGORITHM IS NOT THE DEFAULT, and that is the whole compatibility story.
|
|
154
|
-
* Every envelope this build produces today is still v2, because nothing salts — so no current peer
|
|
155
|
-
* sees a version it cannot read.
|
|
156
|
-
*
|
|
157
|
-
* 🚨 AND THE GATE IS A PUBLISHING FACT, NOT A STRUCTURAL ONE — review B2a F6 corrected this. The
|
|
158
|
-
* header used to claim *"a salted envelope can only be addressed to a peer that completed the salt
|
|
159
|
-
* agreement, and a build able to do that necessarily contains this decoder."* **False as stated:**
|
|
160
|
-
* the salt agreement landed several commits before this decoder, so any build cut from that interval
|
|
161
|
-
* has the agreement and not the decoder. On such a peer a v3 envelope matches no decode branch,
|
|
162
|
-
* falls through to the bare-content v1 shape, and `authenticateParkedEntry` refuses it as
|
|
163
|
-
* `unsigned_envelope` — the ATTACKER shape — the entry is never confirm-deleted, and it re-pulls
|
|
164
|
-
* forever. Exactly the failure this unit exists to prevent.
|
|
165
|
-
*
|
|
166
|
-
* What is true, and checkable: **no published build has the salt agreement without this decoder** —
|
|
167
|
-
* nothing in that interval is tagged. Part B2b must therefore gate salting on a real peer-capability
|
|
168
|
-
* signal rather than inferring capability from "they completed the salt agreement".
|
|
169
|
-
*
|
|
170
|
-
* Why the algorithm is NOT in the signed statement: `parkSig` covers `(session_id, recipient_pubkey,
|
|
171
|
-
* content_hash)` — the HASH, not the name of the function that produced it. Adding the name would
|
|
172
|
-
* change `buildParkContentTbs`, a cross-repo type, for no security gain. An attacker who flips the
|
|
173
|
-
* name cannot make altered content verify, because the recomputed hash must still equal the SIGNED
|
|
174
|
-
* one; a flip can only turn an acceptance into a REFUSAL. `dod-m15-park-envelope-alg.test.ts` pins
|
|
175
|
-
* that, because "only a refusal" is a claim rather than a hope.
|
|
176
|
-
*/
|
|
177
|
-
export const PARK_ENVELOPE_VERSION_ALG = 3;
|
|
178
|
-
/**
|
|
179
|
-
* v4 — a v3 envelope plus THE SENDER'S SIGNATURE OVER `structure1Cbor` (034-CARRYLEAF review F1).
|
|
180
|
-
*
|
|
181
|
-
* ⚠️ **WITHOUT IT, A WITHHELD MESSAGE THAT ARRIVES BY MAILBOX CANNOT BE WITNESSED, and the
|
|
182
|
-
* withholding attack stays open on that route.**
|
|
183
|
-
*
|
|
184
|
-
* The direct path closed it: a message arriving with no relay ordering record is witnessed by its
|
|
185
|
-
* RECIPIENT, using the author's own signature carried beside the bytes it signs. The mailbox route
|
|
186
|
-
* had no such field — this envelope carried `structure1Cbor` and no signature over it, because
|
|
187
|
-
* `parkSig` covers `(session_id, recipient_pubkey, content_hash)`, a different statement. So the
|
|
188
|
-
* recipient held the author's words and nothing the relay would accept as proof of them, and a
|
|
189
|
-
* counterparty who parked instead of hand-delivering still truncated the record.
|
|
190
|
-
*
|
|
191
|
-
* The algorithm rides at index 6 exactly as on v3 and is ALWAYS present here, so the shape is a
|
|
192
|
-
* clean superset rather than a second optional tail nobody can parse positionally.
|
|
193
|
-
*
|
|
194
|
-
* **This is the emit half only.** A v2 or v3 envelope is still accepted — refusing one would destroy
|
|
195
|
-
* store-and-forward mail already sitting in every relay mailbox, which is the failure
|
|
196
|
-
* `SIGNED_ENVELOPE_VERSIONS` exists to prevent. Requiring v4 is a later step, once nothing in the
|
|
197
|
-
* field emits the older shapes; until then this route is closed against a stock client and open to
|
|
198
|
-
* one that deliberately strips the field.
|
|
199
|
-
*/
|
|
200
|
-
export const PARK_ENVELOPE_VERSION_S1SIG = 4;
|
|
201
|
-
/** The message leaf domain — the default a v4 envelope names when its caller does not. */
|
|
202
|
-
const LEAF_KIND_MSG_DOMAIN = 0x00;
|
|
203
|
-
/**
|
|
204
|
-
* The versions that carry a sender signature and may therefore be authenticated.
|
|
205
|
-
*
|
|
206
|
-
* A SET, not a single constant, and the difference is mail loss. `authenticateParkedEntry` refused
|
|
207
|
-
* anything whose version was not the one `PARK_ENVELOPE_VERSION` names — so bumping that constant to
|
|
208
|
-
* 3 would have turned every v2 envelope sitting in every relay mailbox into `unsigned_envelope`:
|
|
209
|
-
* store-and-forward mail destroyed, and reported as an attack.
|
|
210
|
-
*/
|
|
211
|
-
const SIGNED_ENVELOPE_VERSIONS = new Set([
|
|
212
|
-
PARK_ENVELOPE_VERSION,
|
|
213
|
-
PARK_ENVELOPE_VERSION_ALG,
|
|
214
|
-
PARK_ENVELOPE_VERSION_S1SIG,
|
|
215
|
-
]);
|
|
216
|
-
/**
|
|
217
|
-
* Why this build refused to SEAL an entry — the producer side, distinct from `ParkAuthFailure`,
|
|
218
|
-
* which is why it refused to ACCEPT one.
|
|
219
|
-
*/
|
|
220
|
-
export const PARK_ENVELOPE_REASONS = {
|
|
221
|
-
/** The entry names a content-hash algorithm this build cannot itself reproduce. */
|
|
222
|
-
ALG_UNREADABLE: "park_envelope_alg_unreadable",
|
|
223
|
-
};
|
|
224
|
-
/**
|
|
225
|
-
* The relay's park-refusal codes.
|
|
226
|
-
*
|
|
227
|
-
* ⚠️ RE-EXPORTED FROM `@cello-protocol/protocol-types`, NOT declared here. They used to be a private
|
|
228
|
-
* copy that happened to agree with the relay's strings — verified by hand once, which is not a
|
|
229
|
-
* guard. A rename on the relay side would have left this copy silently unmatched, falling through to
|
|
230
|
-
* the generic "the relay link is down" wording: the exact defect this family of work removed,
|
|
231
|
-
* reintroduced by a change nobody would think of as a protocol change.
|
|
232
|
-
*/
|
|
233
|
-
import { RELAY_PARK_REFUSALS } from "@cello-protocol/protocol-types";
|
|
234
|
-
export { RELAY_PARK_REFUSALS };
|
|
235
|
-
/**
|
|
236
|
-
* A REFUSAL TO SEAL, carrying a code the caller can branch on — `DOD-M15-SEALWIRE-1` B2b-2
|
|
237
|
-
* constraint 6, inherited from B2a's review.
|
|
238
|
-
*
|
|
239
|
-
* ⚠️ THE PROSE WAS NEVER THE PROBLEM; WHERE IT LANDED WAS. This threw a bare `Error` with a clear
|
|
240
|
-
* paragraph, and `#parkContent`'s catch put `err.message` into `cause` — a field its own callers
|
|
241
|
-
* document as the MACHINE-READABLE half, added (M12-P13) so that nobody would have to substring-match
|
|
242
|
-
* English to decide what to do. A paragraph there is unbranchable, so this fault fell into the
|
|
243
|
-
* generic relay branch and inherited its guidance: *"the relay refused the hand-off, so the message
|
|
244
|
-
* is queued and will be re-sent automatically when the relay link is back."*
|
|
245
|
-
*
|
|
246
|
-
* Both halves of that are false here. The relay was never asked, and every re-park throws in exactly
|
|
247
|
-
* the same place, so the message sits in the queue while its sender waits for a recovery that cannot
|
|
248
|
-
* happen. Splitting the code from the prose is what lets the caller say something true instead.
|
|
249
|
-
*/
|
|
250
|
-
export class ParkEnvelopeError extends Error {
|
|
251
|
-
reason;
|
|
252
|
-
/** The offending value alone, so a caller can log it without re-parsing the sentence. */
|
|
253
|
-
detail;
|
|
254
|
-
constructor(reason, detail, message) {
|
|
255
|
-
super(message);
|
|
256
|
-
this.name = "ParkEnvelopeError";
|
|
257
|
-
this.reason = reason;
|
|
258
|
-
this.detail = detail;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* SEC-1: encode a SIGNED park envelope. `senderPubkey` and `parkSig` are REQUIRED — the type system
|
|
263
|
-
* is the enforcement point, so no call site can construct an unsigned envelope by omission (the
|
|
264
|
-
* exact drift that made this a downgrade attack: verification existed, but was opt-in).
|
|
265
|
-
*/
|
|
266
|
-
export function encodeParkEnvelope(args) {
|
|
267
|
-
const base = [
|
|
268
|
-
args.content,
|
|
269
|
-
args.structure1Cbor ?? null,
|
|
270
|
-
args.structure2Cbor ?? null,
|
|
271
|
-
args.senderPubkey,
|
|
272
|
-
args.parkSig,
|
|
273
|
-
];
|
|
274
|
-
/**
|
|
275
|
-
* The DEFAULT algorithm stays on v2 even when named explicitly. A caller that starts passing the
|
|
276
|
-
* algorithm through would otherwise push every envelope to a version older peers cannot read,
|
|
277
|
-
* without anyone having decided to.
|
|
278
|
-
*
|
|
279
|
-
* ABSENT is `undefined`/`null` ONLY, never "falsy" — review B2a F4. `!args.contentHashAlg` also
|
|
280
|
-
* caught the EMPTY STRING, which is the collapse `resolveContentHashAlg` documents as forbidden
|
|
281
|
-
* and which this file's own `contentHashAlg` doc cites B1 for. A caller whose variable is `""`
|
|
282
|
-
* would have emitted a v2 envelope labelled sha256-by-absence, and the recipient would report a
|
|
283
|
-
* tamper on a message nobody touched.
|
|
284
|
-
*/
|
|
285
|
-
const alg = args.contentHashAlg;
|
|
286
|
-
/**
|
|
287
|
-
* v4 WHEN THE ORDERING CLAIM IS SIGNED — 034-CARRYLEAF. Checked before the algorithm branches,
|
|
288
|
-
* because v4 always carries the algorithm slot and a v2/v3 decision would drop the signature.
|
|
289
|
-
* Both fields must be present: a signature with no claim to check it against is not evidence.
|
|
290
|
-
*/
|
|
291
|
-
if (args.structure1Signature && args.structure1Cbor) {
|
|
292
|
-
const named = alg === undefined || alg === null ? CONTENT_HASH_ALGS.SHA256 : alg;
|
|
293
|
-
if (!isKnownContentHashAlg(named)) {
|
|
294
|
-
throw new ParkEnvelopeError(PARK_ENVELOPE_REASONS.ALG_UNREADABLE, named, `PARK ENVELOPE: refusing to seal an entry naming content-hash algorithm "${named}", which ` +
|
|
295
|
-
"this build cannot itself reproduce.");
|
|
296
|
-
}
|
|
297
|
-
return encodeCbor([
|
|
298
|
-
PARK_ENVELOPE_VERSION_S1SIG, ...base, named, args.structure1Signature, args.leafKind ?? LEAF_KIND_MSG_DOMAIN,
|
|
299
|
-
]);
|
|
300
|
-
}
|
|
301
|
-
if (alg === undefined || alg === null || alg === CONTENT_HASH_ALGS.SHA256) {
|
|
302
|
-
return encodeCbor([PARK_ENVELOPE_VERSION, ...base]);
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* REFUSE TO EMIT A NAME WE CANNOT READ OURSELVES — the producer-side mirror of what
|
|
306
|
-
* `contentHashFor` already does, and it costs nothing to have.
|
|
307
|
-
*
|
|
308
|
-
* Without it a caller can seal an envelope every peer refuses — including this build — with no
|
|
309
|
-
* signal at the sender at all: the message parks, is pulled, is refused, is kept, and repeats.
|
|
310
|
-
* A throw here is a developer error at the moment it is made, rather than a silent mail loop.
|
|
311
|
-
*/
|
|
312
|
-
if (!isKnownContentHashAlg(alg)) {
|
|
313
|
-
throw new ParkEnvelopeError(PARK_ENVELOPE_REASONS.ALG_UNREADABLE, alg, `PARK ENVELOPE: refusing to seal an entry naming content-hash algorithm "${alg}", which this ` +
|
|
314
|
-
"build cannot itself reproduce. The recipient would refuse it and keep re-pulling it forever, " +
|
|
315
|
-
"and nothing at the sender would say why.");
|
|
316
|
-
}
|
|
317
|
-
return encodeCbor([PARK_ENVELOPE_VERSION_ALG, ...base, alg]);
|
|
318
|
-
}
|
|
319
|
-
/**
|
|
320
|
-
* SEC-1 — THE ONLY PRODUCER. Sign the entry as the sending agent, wrap it in a v2 envelope, and seal
|
|
321
|
-
* it to the recipient. Both park sites (the live hook and the crash backstop) call THIS, so the
|
|
322
|
-
* to-be-signed arguments are constructed in exactly one place.
|
|
323
|
-
*
|
|
324
|
-
* Review (hollow-test finding): while the two call sites each built their own signature, a producer
|
|
325
|
-
* that signed the WRONG TBS arguments — e.g. its own pubkey where the recipient's belongs — would
|
|
326
|
-
* emit envelopes no recipient could ever accept, and every consumer-side test would still pass. The
|
|
327
|
-
* bug would only surface as mail that silently never arrives. One producer + a round-trip test
|
|
328
|
-
* against the real consumer removes that whole class: if this function signs the wrong statement,
|
|
329
|
-
* `authenticateParkedEntry` rejects its output and the test goes red.
|
|
330
|
-
*/
|
|
331
|
-
export async function sealParkEnvelope(args) {
|
|
332
|
-
const senderPubkey = await args.signer.getPublicKey();
|
|
333
|
-
const parkSig = await args.signer.sign(buildParkContentTbs(args.sessionIdHex, args.recipientPubkey, args.contentHash));
|
|
334
|
-
const envelope = encodeParkEnvelope({
|
|
335
|
-
content: args.content,
|
|
336
|
-
structure1Cbor: args.structure1Cbor,
|
|
337
|
-
structure2Cbor: args.structure2Cbor,
|
|
338
|
-
structure1Signature: args.structure1Signature,
|
|
339
|
-
leafKind: args.leafKind,
|
|
340
|
-
senderPubkey,
|
|
341
|
-
parkSig,
|
|
342
|
-
contentHashAlg: args.contentHashAlg,
|
|
343
|
-
});
|
|
344
|
-
// The signature rides INSIDE the seal — the relay (the adversary) never sees it, so it can neither
|
|
345
|
-
// strip nor forge it. INV-3 is untouched: the relay still holds only ciphertext.
|
|
346
|
-
return sealToRecipient(args.recipientPubkey, envelope);
|
|
347
|
-
}
|
|
348
|
-
/**
|
|
349
|
-
* Decode a park envelope. Legacy shapes (the pre-SEC-1 4-element v1 array, and raw non-CBOR bare
|
|
350
|
-
* content) still DECODE — deliberately, so `authenticate` can reject them with a precise reason
|
|
351
|
-
* rather than the caller seeing an opaque parse failure. Decoding is not accepting.
|
|
352
|
-
*/
|
|
353
|
-
export function decodeParkEnvelope(plaintext) {
|
|
354
|
-
try {
|
|
355
|
-
const arr = cborDecode(plaintext);
|
|
356
|
-
// v3 first: a v2 envelope plus the content-hash algorithm as a 7th element.
|
|
357
|
-
// v4 FIRST — longest shape first, so a v4 array can never be read as a shorter one.
|
|
358
|
-
if (Array.isArray(arr) && arr.length === 9 && arr[0] === PARK_ENVELOPE_VERSION_S1SIG && arr[1] instanceof Uint8Array) {
|
|
359
|
-
return {
|
|
360
|
-
version: PARK_ENVELOPE_VERSION_S1SIG,
|
|
361
|
-
content: arr[1],
|
|
362
|
-
structure1Cbor: arr[2] instanceof Uint8Array ? arr[2] : undefined,
|
|
363
|
-
structure2Cbor: arr[3] instanceof Uint8Array ? arr[3] : undefined,
|
|
364
|
-
senderPubkey: arr[4] instanceof Uint8Array ? arr[4] : undefined,
|
|
365
|
-
parkSig: arr[5] instanceof Uint8Array ? arr[5] : undefined,
|
|
366
|
-
contentHashAlg: typeof arr[6] === "string" ? arr[6] : undefined,
|
|
367
|
-
structure1Signature: arr[7] instanceof Uint8Array ? arr[7] : undefined,
|
|
368
|
-
leafKind: typeof arr[8] === "number" ? arr[8] : undefined,
|
|
369
|
-
};
|
|
370
|
-
}
|
|
371
|
-
if (Array.isArray(arr) && arr.length === 7 && arr[0] === PARK_ENVELOPE_VERSION_ALG && arr[1] instanceof Uint8Array) {
|
|
372
|
-
return {
|
|
373
|
-
version: PARK_ENVELOPE_VERSION_ALG,
|
|
374
|
-
content: arr[1],
|
|
375
|
-
structure1Cbor: arr[2] instanceof Uint8Array ? arr[2] : undefined,
|
|
376
|
-
structure2Cbor: arr[3] instanceof Uint8Array ? arr[3] : undefined,
|
|
377
|
-
senderPubkey: arr[4] instanceof Uint8Array ? arr[4] : undefined,
|
|
378
|
-
parkSig: arr[5] instanceof Uint8Array ? arr[5] : undefined,
|
|
379
|
-
// A non-string here stays ABSENT rather than being coerced. `resolveContentHashAlg` refuses
|
|
380
|
-
// a name it cannot read; it must never be handed a `"42"` that looks like one.
|
|
381
|
-
contentHashAlg: typeof arr[6] === "string" ? arr[6] : undefined,
|
|
382
|
-
};
|
|
383
|
-
}
|
|
384
|
-
if (Array.isArray(arr) && arr.length === 6 && arr[0] === PARK_ENVELOPE_VERSION && arr[1] instanceof Uint8Array) {
|
|
385
|
-
return {
|
|
386
|
-
version: PARK_ENVELOPE_VERSION,
|
|
387
|
-
content: arr[1],
|
|
388
|
-
structure1Cbor: arr[2] instanceof Uint8Array ? arr[2] : undefined,
|
|
389
|
-
structure2Cbor: arr[3] instanceof Uint8Array ? arr[3] : undefined,
|
|
390
|
-
senderPubkey: arr[4] instanceof Uint8Array ? arr[4] : undefined,
|
|
391
|
-
parkSig: arr[5] instanceof Uint8Array ? arr[5] : undefined,
|
|
392
|
-
};
|
|
393
|
-
}
|
|
394
|
-
// Pre-SEC-1 v1 envelope: [1, content, s1|null, s2|null]. Decoded so it can be REFUSED by name.
|
|
395
|
-
if (Array.isArray(arr) && arr.length === 4 && arr[0] === 1 && arr[1] instanceof Uint8Array) {
|
|
396
|
-
return {
|
|
397
|
-
version: 1,
|
|
398
|
-
content: arr[1],
|
|
399
|
-
structure1Cbor: arr[2] instanceof Uint8Array ? arr[2] : undefined,
|
|
400
|
-
structure2Cbor: arr[3] instanceof Uint8Array ? arr[3] : undefined,
|
|
401
|
-
};
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
catch {
|
|
405
|
-
/* not an envelope — fall through to raw bare content */
|
|
406
|
-
}
|
|
407
|
-
return { version: 1, content: plaintext };
|
|
408
|
-
}
|
|
409
|
-
/**
|
|
410
|
-
* SEC-1: the authentication decision for a recovered parked entry. FAIL CLOSED — every path that is
|
|
411
|
-
* not a proven-good signature from THIS session's counterparty returns a failure.
|
|
412
|
-
*
|
|
413
|
-
* `counterpartyPubkeyHex` is the session's counterparty (the only principal allowed to have parked
|
|
414
|
-
* content into this session). Pass undefined when the session/counterparty is unknown: that is
|
|
415
|
-
* `counterparty_unknown` and is a REFUSAL, never a bypass — we cannot prove the signer, so we do not
|
|
416
|
-
* trust the content. (Same fail-closed stance the ordering-record check already takes.)
|
|
417
|
-
*/
|
|
418
|
-
export function authenticateParkedEntry(args) {
|
|
419
|
-
const { env, sessionIdHex, recipientPubkey, contentHash, counterpartyPubkeyHex } = args;
|
|
420
|
-
// 1. Unsigned (v1 envelope, or raw bare content) — the shape an attacker sends, and the shape the
|
|
421
|
-
// pre-SEC-1 daemon ingested without a single check. Refused outright.
|
|
422
|
-
if (!SIGNED_ENVELOPE_VERSIONS.has(env.version) || !env.senderPubkey || !env.parkSig) {
|
|
423
|
-
return { ok: false, reason: "unsigned_envelope" };
|
|
424
|
-
}
|
|
425
|
-
// 2. Fail closed when there is no counterparty to bind the signer to.
|
|
426
|
-
if (!counterpartyPubkeyHex) {
|
|
427
|
-
return { ok: false, reason: "counterparty_unknown" };
|
|
428
|
-
}
|
|
429
|
-
// 3. The signature must cover THESE bytes, for THIS session, into THIS mailbox. Verified BEFORE
|
|
430
|
-
// the signer check so a forged signature is never mistaken for a wrong-principal one.
|
|
431
|
-
const tbs = buildParkContentTbs(sessionIdHex, recipientPubkey, contentHash);
|
|
432
|
-
if (!verify(env.senderPubkey, tbs, env.parkSig)) {
|
|
433
|
-
return { ok: false, reason: "bad_signature" };
|
|
434
|
-
}
|
|
435
|
-
// 4. The signer MUST be this session's counterparty. A cryptographically valid signature by any
|
|
436
|
-
// other key is still a forgery of THIS conversation. Compared on BYTES (review M1) — the stored
|
|
437
|
-
// hex is un-normalized, so a string compare would turn a mixed-case pubkey into permanent
|
|
438
|
-
// mail loss that looks exactly like an attack in the log.
|
|
439
|
-
if (!pubkeyMatchesHex(env.senderPubkey, counterpartyPubkeyHex)) {
|
|
440
|
-
return { ok: false, reason: "signer_not_counterparty" };
|
|
441
|
-
}
|
|
442
|
-
return { ok: true };
|
|
443
|
-
}
|
|
444
|
-
/**
|
|
445
|
-
* The operator-facing guidance for a refused park hand-off — **a pure function, deliberately.**
|
|
446
|
-
*
|
|
447
|
-
* ⚠️ It was an inline ternary inside `sendContent`, which meant the only way to assert any branch of
|
|
448
|
-
* it was to stand up a two-connection fixture and drive a real send. That is why the branch that was
|
|
449
|
-
* WRONG for a throttling relay survived: nothing cheap could reach it. A guidance string is a
|
|
450
|
-
* decision about what a person does next, and it deserves to be testable on its own.
|
|
451
|
-
*
|
|
452
|
-
* `durable` distinguishes "queued and will retry" from "not queued — it is lost", which is the one
|
|
453
|
-
* distinction that changes whether the reader must act right now.
|
|
454
|
-
*/
|
|
455
|
-
export function parkRefusalGuidance(cause, durable, retryAfterMs) {
|
|
456
|
-
if (cause === PARK_ENVELOPE_REASONS.ALG_UNREADABLE) {
|
|
457
|
-
return ("This message names a content-hash algorithm your build cannot produce, so it could not be " +
|
|
458
|
-
"sealed for hand-off. The relay is NOT involved and this will not clear on its own — the " +
|
|
459
|
-
"message is safely stored but every retry fails the same way. Upgrade to a build that knows " +
|
|
460
|
-
"the algorithm, or start a new session with this counterparty. Re-sending on this build " +
|
|
461
|
-
"changes nothing.");
|
|
462
|
-
}
|
|
463
|
-
/**
|
|
464
|
-
* ⚠️ DIAGNOSIS AND ACTION ARE COMPOSED, NOT WRITTEN TOGETHER — and this shape is the fix for a
|
|
465
|
-
* defect review found in the first version.
|
|
466
|
-
*
|
|
467
|
-
* That version returned a complete paragraph per cause and **never consulted `durable`**, so all
|
|
468
|
-
* three new branches ended "The message is queued and re-sent automatically. Do not re-send it."
|
|
469
|
-
* `durable` is OBSERVED, not assumed: it is false when the durable enqueue was refused as a
|
|
470
|
-
* duplicate, or when the retry hook is unwired. In that case the daemon logs at ERROR that the
|
|
471
|
-
* content is *not* separately retained while the operator was simultaneously told it was queued
|
|
472
|
-
* and instructed not to re-send. **Nothing held the message.** That is precisely the lie this
|
|
473
|
-
* family of work exists to kill, reintroduced one layer up.
|
|
474
|
-
*
|
|
475
|
-
* Splitting them makes the mistake unavailable: the action half is produced in exactly one place
|
|
476
|
-
* and cannot be reached without reading the flag.
|
|
477
|
-
*/
|
|
478
|
-
const diagnosis = cause === RELAY_PARK_REFUSALS.RATE_LIMITED
|
|
479
|
-
? `The relay is healthy and deliberately rate-limiting this agent's hand-offs, so it refused this one. NOTHING IS WRONG with the link or the counterparty, and the limit clears on its own${describeRetryWindow(retryAfterMs)}.`
|
|
480
|
-
: cause === RELAY_PARK_REFUSALS.RECIPIENT_FULL
|
|
481
|
-
? "The relay is holding as much undelivered content for THIS counterparty as it will, so it refused the hand-off. That is about their mailbox, not your connection, and another relay would refuse it too. It clears when they come online and collect it, or when older entries expire."
|
|
482
|
-
: cause === RELAY_PARK_REFUSALS.STORE_FULL
|
|
483
|
-
? "The relay's parked-content store is full, so it refused the hand-off. The link is fine. If this persists the relay operator needs to know — it means the store is under sustained pressure."
|
|
484
|
-
: null;
|
|
485
|
-
if (diagnosis !== null) {
|
|
486
|
-
return durable
|
|
487
|
-
? `${diagnosis} The message is queued and re-sent automatically. Do not re-send it: an identical re-send is not separately queued.`
|
|
488
|
-
: `${diagnosis} ⚠️ BUT THIS MESSAGE WAS NOT QUEUED — it is lost. Send it again.`;
|
|
489
|
-
}
|
|
490
|
-
return durable
|
|
491
|
-
? "Direct delivery failed and the relay refused the hand-off, so the message is queued and will be re-sent automatically when the relay link is back. Do not re-send it: an identical re-send is not separately queued."
|
|
492
|
-
: "Direct delivery failed and the message could NOT be queued for retry — it is lost. Send it again.";
|
|
493
|
-
}
|
|
494
|
-
/**
|
|
495
|
-
* Render the relay's own retry delay, or say nothing at all.
|
|
496
|
-
*
|
|
497
|
-
* ⚠️ SAYS NOTHING WHEN THE RELAY DID NOT SAY — review MEDIUM-6. The first version of the guidance
|
|
498
|
-
* asserted the limit clears *"in about a minute"*, which is a hardcoded guess about the relay's
|
|
499
|
-
* CONFIGURABLE window: a relay run at ten minutes makes that a wrong promise, and a wrong number is
|
|
500
|
-
* worse than no number because the reader plans around it. When the relay tells us, we quote it;
|
|
501
|
-
* when it does not, the sentence simply ends.
|
|
502
|
-
*/
|
|
503
|
-
function describeRetryWindow(retryAfterMs) {
|
|
504
|
-
if (retryAfterMs === undefined || !Number.isFinite(retryAfterMs) || retryAfterMs <= 0)
|
|
505
|
-
return "";
|
|
506
|
-
const seconds = Math.ceil(retryAfterMs / 1000);
|
|
507
|
-
return seconds < 90 ? ` in about ${String(seconds)} seconds` : ` in about ${String(Math.ceil(seconds / 60))} minutes`;
|
|
508
|
-
}
|
|
509
|
-
//# sourceMappingURL=park-envelope.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"park-envelope.js","sourceRoot":"","sources":["../src/park-envelope.ts"],"names":[],"mappings":"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"}
|