@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
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Daemon registration persistence — CELLO-M7-REGISTRATION.
|
|
3
|
-
*
|
|
4
|
-
* The daemon owns each agent's registration material (ML-DSA keypair, FROST key
|
|
5
|
-
* share, registration state) as per-agent files under ~/.cello/agents/<name>/.
|
|
6
|
-
* This mirrors the daemon's existing `key`-file model (see agent-loader.ts) and
|
|
7
|
-
* deliberately does NOT drag the client's SQLCipher ClientStatePersistence into
|
|
8
|
-
* the daemon — that layer is keyed by agent_pubkey in one shared DB, whereas the
|
|
9
|
-
* daemon isolates each agent in its own directory (cleaner for multi-agent).
|
|
10
|
-
*
|
|
11
|
-
* Security posture: the FROST signing share and ML-DSA secret key are written
|
|
12
|
-
* with 0o600 permissions, atomically (write-to-tmp + rename), consistent with the
|
|
13
|
-
* daemon's existing plaintext K_local `key` file. Encryption-at-rest for the
|
|
14
|
-
* daemon is a separate future concern and is intentionally NOT introduced
|
|
15
|
-
* piecemeal here. The signing share (SI-001) and secret key blob (SI-002) must
|
|
16
|
-
* never appear in a log event — only the files hold them.
|
|
17
|
-
*/
|
|
18
|
-
import type { Logger } from "./types.js";
|
|
19
|
-
export interface RegistrationStateRecord {
|
|
20
|
-
agentId: string;
|
|
21
|
-
primaryPubkey: string;
|
|
22
|
-
mlDsaPubkey: string;
|
|
23
|
-
registeredAt: number;
|
|
24
|
-
status: string;
|
|
25
|
-
/**
|
|
26
|
-
* 038-KEYBIND. Hex 64-byte Ed25519 signature by this agent's K_local over
|
|
27
|
-
* (k_local_pubkey, primaryPubkey). Null for an agent whose row predates the column.
|
|
28
|
-
*
|
|
29
|
-
* ⚠️ **WRITTEN, AND READ BY NOTHING YET** — said plainly rather than implied, because the careful
|
|
30
|
-
* null-handling around it otherwise reads as a decision some caller acts on, and no caller
|
|
31
|
-
* exists. The live copy is the one on the DIRECTORY's profile, which is what rides on every
|
|
32
|
-
* session assignment; this is the agent's own record of what it signed, kept so a future
|
|
33
|
-
* re-upload does not have to re-derive it from a value a directory supplied.
|
|
34
|
-
*/
|
|
35
|
-
keyBinding: string | null;
|
|
36
|
-
/**
|
|
37
|
-
* M16: true when this identity is a broadcast channel. Recorded at registration from what the
|
|
38
|
-
* directory ECHOED, never changed. False for an ordinary agent and for a record written without it.
|
|
39
|
-
*/
|
|
40
|
-
channel: boolean;
|
|
41
|
-
/** M16: hex pubkey of the agent that administers this channel; "" when `channel` is false. */
|
|
42
|
-
adminPubkey: string;
|
|
43
|
-
}
|
|
44
|
-
export interface MlDsaKeypairRecord {
|
|
45
|
-
mlDsaPubkey: string;
|
|
46
|
-
secretKeyBlob: Uint8Array;
|
|
47
|
-
algorithm: string;
|
|
48
|
-
}
|
|
49
|
-
export interface FrostKeyShareRecord {
|
|
50
|
-
epochId: string;
|
|
51
|
-
primaryPubkey: string;
|
|
52
|
-
identifier: string;
|
|
53
|
-
signingShare: Uint8Array;
|
|
54
|
-
threshold: number;
|
|
55
|
-
participants: number;
|
|
56
|
-
commitmentsCbor: Uint8Array;
|
|
57
|
-
verifyingSharesCbor: Uint8Array;
|
|
58
|
-
dkgMethod: string;
|
|
59
|
-
/** M8B quorum: the directory nodeIds (Q) the DKG ran among; a restored signer targets these. */
|
|
60
|
-
directoryNodeIds?: string[];
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* The agent→user linkage captured at registration. The pre-authorization ticket
|
|
64
|
-
* (issued by the CELLO Operations Agent) binds this agent to a user; recording it
|
|
65
|
-
* here is the M7 "capture-now-or-lose-it" requirement — *using* the link (trust
|
|
66
|
-
* signals that attach to the user) is future trust-layer work.
|
|
67
|
-
*/
|
|
68
|
-
export interface AgentUserLinkRecord {
|
|
69
|
-
agentId: string;
|
|
70
|
-
preAuthToken: string;
|
|
71
|
-
linkedAt: number;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Narrow persistence seam consumed by the daemon's RegistrationManager. Exactly
|
|
75
|
-
* the three persist operations the registration flow performs, plus the matching
|
|
76
|
-
* load operations needed to rehydrate an already-registered agent on restart.
|
|
77
|
-
*/
|
|
78
|
-
export interface DaemonRegistrationPersistence {
|
|
79
|
-
persistMlDsaKeypair(opts: {
|
|
80
|
-
mlDsaPubkey: string;
|
|
81
|
-
secretKeyBlob: Uint8Array;
|
|
82
|
-
}): Promise<void>;
|
|
83
|
-
persistRegistrationState(opts: {
|
|
84
|
-
agentId: string;
|
|
85
|
-
primaryPubkey: string;
|
|
86
|
-
mlDsaPubkey: string;
|
|
87
|
-
registeredAt: number;
|
|
88
|
-
/**
|
|
89
|
-
* 038-KEYBIND. The binding minted at the tail of registration, hex. Persisted BESIDE the share
|
|
90
|
-
* because it is the same kind of artifact: produced once, for the life of the agent, from key
|
|
91
|
-
* material that is only ever together on this machine.
|
|
92
|
-
*/
|
|
93
|
-
keyBinding: string;
|
|
94
|
-
/** M16: set only for a channel the directory echoed as one. Absent means an ordinary agent. */
|
|
95
|
-
channel?: boolean;
|
|
96
|
-
adminPubkey?: string;
|
|
97
|
-
}): Promise<void>;
|
|
98
|
-
persistFrostKeyShare(opts: {
|
|
99
|
-
epochId: string;
|
|
100
|
-
primaryPubkey: string;
|
|
101
|
-
identifier: string;
|
|
102
|
-
signingShare: Uint8Array;
|
|
103
|
-
threshold: number;
|
|
104
|
-
participants: number;
|
|
105
|
-
commitmentsCbor: Uint8Array;
|
|
106
|
-
verifyingSharesCbor: Uint8Array;
|
|
107
|
-
dkgMethod: "trusted_dealer" | "network_dkg";
|
|
108
|
-
/** M8B quorum: the directory nodeIds (Q) the DKG ran among; a restored signer targets these. */
|
|
109
|
-
directoryNodeIds?: string[];
|
|
110
|
-
}): Promise<void>;
|
|
111
|
-
loadRegistrationState(): Promise<RegistrationStateRecord | null>;
|
|
112
|
-
loadMlDsaKeypair(): Promise<MlDsaKeypairRecord | null>;
|
|
113
|
-
loadActiveFrostKeyShare(): Promise<FrostKeyShareRecord | null>;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* M16: the channel facts of a registration write, checked. A channel without an admin is refused,
|
|
117
|
-
* and so is any write that would CHANGE the facts already recorded for a registered identity:
|
|
118
|
-
* `channel` and `adminPubkey` are fixed at registration. Writing the same facts again is allowed.
|
|
119
|
-
* Shared by both stores so they cannot disagree.
|
|
120
|
-
*/
|
|
121
|
-
export declare function checkChannelFacts(incoming: {
|
|
122
|
-
channel?: boolean;
|
|
123
|
-
adminPubkey?: string;
|
|
124
|
-
}, existing: {
|
|
125
|
-
channel: boolean;
|
|
126
|
-
adminPubkey: string;
|
|
127
|
-
} | null): {
|
|
128
|
-
channel: boolean;
|
|
129
|
-
adminPubkey: string;
|
|
130
|
-
};
|
|
131
|
-
/**
|
|
132
|
-
* File-backed implementation. One instance is scoped to a single agent's
|
|
133
|
-
* directory (e.g. ~/.cello/agents/alice/). The directory is created on first
|
|
134
|
-
* write; load methods on a fresh agent return null (ENOENT is not an error).
|
|
135
|
-
*/
|
|
136
|
-
export declare class FileRegistrationPersistence implements DaemonRegistrationPersistence {
|
|
137
|
-
#private;
|
|
138
|
-
constructor(opts: {
|
|
139
|
-
agentDir: string;
|
|
140
|
-
logger: Logger;
|
|
141
|
-
});
|
|
142
|
-
persistMlDsaKeypair(opts: {
|
|
143
|
-
mlDsaPubkey: string;
|
|
144
|
-
secretKeyBlob: Uint8Array;
|
|
145
|
-
}): Promise<void>;
|
|
146
|
-
persistRegistrationState(opts: {
|
|
147
|
-
agentId: string;
|
|
148
|
-
primaryPubkey: string;
|
|
149
|
-
mlDsaPubkey: string;
|
|
150
|
-
registeredAt: number;
|
|
151
|
-
keyBinding: string;
|
|
152
|
-
channel?: boolean;
|
|
153
|
-
adminPubkey?: string;
|
|
154
|
-
}): Promise<void>;
|
|
155
|
-
persistFrostKeyShare(opts: {
|
|
156
|
-
epochId: string;
|
|
157
|
-
primaryPubkey: string;
|
|
158
|
-
identifier: string;
|
|
159
|
-
signingShare: Uint8Array;
|
|
160
|
-
threshold: number;
|
|
161
|
-
participants: number;
|
|
162
|
-
commitmentsCbor: Uint8Array;
|
|
163
|
-
verifyingSharesCbor: Uint8Array;
|
|
164
|
-
dkgMethod: "trusted_dealer" | "network_dkg";
|
|
165
|
-
/** M8B quorum: the directory nodeIds (Q) the DKG ran among; a restored signer targets these. */
|
|
166
|
-
directoryNodeIds?: string[];
|
|
167
|
-
}): Promise<void>;
|
|
168
|
-
/**
|
|
169
|
-
* Capture the agent→user link at registration (M7 capture-now-or-lose-it). Not
|
|
170
|
-
* part of the RegistrationManager seam — called by the cello_register handler
|
|
171
|
-
* after a successful register(), since only the handler holds the pre-auth ticket.
|
|
172
|
-
*/
|
|
173
|
-
persistAgentUserLink(opts: {
|
|
174
|
-
agentId: string;
|
|
175
|
-
preAuthToken: string;
|
|
176
|
-
linkedAt: number;
|
|
177
|
-
}): Promise<void>;
|
|
178
|
-
loadRegistrationState(): Promise<RegistrationStateRecord | null>;
|
|
179
|
-
loadMlDsaKeypair(): Promise<MlDsaKeypairRecord | null>;
|
|
180
|
-
loadActiveFrostKeyShare(): Promise<FrostKeyShareRecord | null>;
|
|
181
|
-
loadAgentUserLink(): Promise<AgentUserLinkRecord | null>;
|
|
182
|
-
}
|
|
183
|
-
//# sourceMappingURL=registration-persistence.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registration-persistence.d.ts","sourceRoot":"","sources":["../src/registration-persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Daemon registration persistence — CELLO-M7-REGISTRATION.
|
|
3
|
-
*
|
|
4
|
-
* The daemon owns each agent's registration material (ML-DSA keypair, FROST key
|
|
5
|
-
* share, registration state) as per-agent files under ~/.cello/agents/<name>/.
|
|
6
|
-
* This mirrors the daemon's existing `key`-file model (see agent-loader.ts) and
|
|
7
|
-
* deliberately does NOT drag the client's SQLCipher ClientStatePersistence into
|
|
8
|
-
* the daemon — that layer is keyed by agent_pubkey in one shared DB, whereas the
|
|
9
|
-
* daemon isolates each agent in its own directory (cleaner for multi-agent).
|
|
10
|
-
*
|
|
11
|
-
* Security posture: the FROST signing share and ML-DSA secret key are written
|
|
12
|
-
* with 0o600 permissions, atomically (write-to-tmp + rename), consistent with the
|
|
13
|
-
* daemon's existing plaintext K_local `key` file. Encryption-at-rest for the
|
|
14
|
-
* daemon is a separate future concern and is intentionally NOT introduced
|
|
15
|
-
* piecemeal here. The signing share (SI-001) and secret key blob (SI-002) must
|
|
16
|
-
* never appear in a log event — only the files hold them.
|
|
17
|
-
*/
|
|
18
|
-
import { mkdir, readFile, rename, chmod, unlink, open as fsOpen } from "node:fs/promises";
|
|
19
|
-
import { randomBytes } from "node:crypto";
|
|
20
|
-
import { join, dirname } from "node:path";
|
|
21
|
-
// ─── On-disk file names (relative to the agent directory) ────────────────────
|
|
22
|
-
const FILE_REGISTRATION_STATE = "registration-state.json";
|
|
23
|
-
const FILE_MLDSA_KEYPAIR = "ml-dsa-keypair.json";
|
|
24
|
-
const FILE_FROST_SHARE = "frost-share.json";
|
|
25
|
-
const FILE_AGENT_USER_LINK = "agent-user-link.json";
|
|
26
|
-
const SECRET_FILE_MODE = 0o600;
|
|
27
|
-
/**
|
|
28
|
-
* M16: the channel facts of a registration write, checked. A channel without an admin is refused,
|
|
29
|
-
* and so is any write that would CHANGE the facts already recorded for a registered identity:
|
|
30
|
-
* `channel` and `adminPubkey` are fixed at registration. Writing the same facts again is allowed.
|
|
31
|
-
* Shared by both stores so they cannot disagree.
|
|
32
|
-
*/
|
|
33
|
-
export function checkChannelFacts(incoming, existing) {
|
|
34
|
-
const channel = incoming.channel === true;
|
|
35
|
-
const adminPubkey = channel ? (incoming.adminPubkey ?? "") : "";
|
|
36
|
-
if (channel && adminPubkey === "") {
|
|
37
|
-
throw new Error("invalid_channel_registration: a channel must name its admin pubkey");
|
|
38
|
-
}
|
|
39
|
-
if (existing && (existing.channel !== channel || existing.adminPubkey !== adminPubkey)) {
|
|
40
|
-
throw new Error(`channel_fields_immutable: this identity is registered with channel=${existing.channel}` +
|
|
41
|
-
`${existing.channel ? ` and admin ${existing.adminPubkey}` : ""}; a registration write cannot change that`);
|
|
42
|
-
}
|
|
43
|
-
return { channel, adminPubkey };
|
|
44
|
-
}
|
|
45
|
-
const hex = (b) => Buffer.from(b).toString("hex");
|
|
46
|
-
const unhex = (s) => new Uint8Array(Buffer.from(s, "hex"));
|
|
47
|
-
/**
|
|
48
|
-
* Required-field accessors. A registration file that exists but is missing or
|
|
49
|
-
* mistypes a field is corrupt — surface it loudly rather than silently coercing
|
|
50
|
-
* to NaN / an empty buffer (which would read as "unregistered" or hand crypto a
|
|
51
|
-
* zero-length key). Atomic writes make this unreachable in normal operation.
|
|
52
|
-
*/
|
|
53
|
-
function reqStr(obj, key, file) {
|
|
54
|
-
const v = obj[key];
|
|
55
|
-
if (typeof v !== "string") {
|
|
56
|
-
throw new Error(`registration file '${file}' is corrupt: missing or non-string field '${key}'`);
|
|
57
|
-
}
|
|
58
|
-
return v;
|
|
59
|
-
}
|
|
60
|
-
function reqNum(obj, key, file) {
|
|
61
|
-
const v = obj[key];
|
|
62
|
-
if (typeof v !== "number" || !Number.isFinite(v)) {
|
|
63
|
-
throw new Error(`registration file '${file}' is corrupt: missing or non-numeric field '${key}'`);
|
|
64
|
-
}
|
|
65
|
-
return v;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* File-backed implementation. One instance is scoped to a single agent's
|
|
69
|
-
* directory (e.g. ~/.cello/agents/alice/). The directory is created on first
|
|
70
|
-
* write; load methods on a fresh agent return null (ENOENT is not an error).
|
|
71
|
-
*/
|
|
72
|
-
export class FileRegistrationPersistence {
|
|
73
|
-
#agentDir;
|
|
74
|
-
#logger;
|
|
75
|
-
#tmpCounter = 0;
|
|
76
|
-
constructor(opts) {
|
|
77
|
-
this.#agentDir = opts.agentDir;
|
|
78
|
-
this.#logger = opts.logger;
|
|
79
|
-
}
|
|
80
|
-
// ─── Persist ───────────────────────────────────────────────────────────────
|
|
81
|
-
async persistMlDsaKeypair(opts) {
|
|
82
|
-
// SI-002: secretKeyBlob is written to disk only — never logged.
|
|
83
|
-
await this.#writeJsonAtomic(FILE_MLDSA_KEYPAIR, {
|
|
84
|
-
mlDsaPubkey: opts.mlDsaPubkey,
|
|
85
|
-
secretKeyBlob: hex(opts.secretKeyBlob),
|
|
86
|
-
algorithm: "ML-DSA-44",
|
|
87
|
-
});
|
|
88
|
-
this.#logger.info("registration.mldsa.persisted", { mlDsaPubkey: opts.mlDsaPubkey });
|
|
89
|
-
}
|
|
90
|
-
async persistRegistrationState(opts) {
|
|
91
|
-
const facts = checkChannelFacts(opts, await this.loadRegistrationState());
|
|
92
|
-
await this.#writeJsonAtomic(FILE_REGISTRATION_STATE, {
|
|
93
|
-
agentId: opts.agentId,
|
|
94
|
-
primaryPubkey: opts.primaryPubkey,
|
|
95
|
-
mlDsaPubkey: opts.mlDsaPubkey,
|
|
96
|
-
registeredAt: opts.registeredAt,
|
|
97
|
-
// 038-KEYBIND: a public signature, not a secret — but it lives with the rest of the
|
|
98
|
-
// registration record because it is meaningless apart from the two keys it names.
|
|
99
|
-
keyBinding: opts.keyBinding,
|
|
100
|
-
channel: facts.channel,
|
|
101
|
-
adminPubkey: facts.adminPubkey,
|
|
102
|
-
status: "active",
|
|
103
|
-
});
|
|
104
|
-
this.#logger.info("registration.state.persisted", {
|
|
105
|
-
agentId: opts.agentId,
|
|
106
|
-
primaryPubkey: opts.primaryPubkey,
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
async persistFrostKeyShare(opts) {
|
|
110
|
-
// A daemon agent holds exactly one active FROST share; a new DKG replaces it.
|
|
111
|
-
await this.#writeJsonAtomic(FILE_FROST_SHARE, {
|
|
112
|
-
epochId: opts.epochId,
|
|
113
|
-
primaryPubkey: opts.primaryPubkey,
|
|
114
|
-
identifier: opts.identifier,
|
|
115
|
-
signingShare: hex(opts.signingShare), // SI-001: on disk only, never logged
|
|
116
|
-
threshold: opts.threshold,
|
|
117
|
-
participants: opts.participants,
|
|
118
|
-
commitmentsCbor: hex(opts.commitmentsCbor),
|
|
119
|
-
verifyingSharesCbor: hex(opts.verifyingSharesCbor),
|
|
120
|
-
dkgMethod: opts.dkgMethod,
|
|
121
|
-
directoryNodeIds: opts.directoryNodeIds,
|
|
122
|
-
});
|
|
123
|
-
// SI-001: signingShare MUST NOT appear in this event.
|
|
124
|
-
this.#logger.info("registration.frost.share.persisted", {
|
|
125
|
-
epochId: opts.epochId,
|
|
126
|
-
threshold: opts.threshold,
|
|
127
|
-
participants: opts.participants,
|
|
128
|
-
dkgMethod: opts.dkgMethod,
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Capture the agent→user link at registration (M7 capture-now-or-lose-it). Not
|
|
133
|
-
* part of the RegistrationManager seam — called by the cello_register handler
|
|
134
|
-
* after a successful register(), since only the handler holds the pre-auth ticket.
|
|
135
|
-
*/
|
|
136
|
-
async persistAgentUserLink(opts) {
|
|
137
|
-
// SI: the preAuthToken is a bearer ticket — written to disk only, never logged.
|
|
138
|
-
await this.#writeJsonAtomic(FILE_AGENT_USER_LINK, {
|
|
139
|
-
agentId: opts.agentId,
|
|
140
|
-
preAuthToken: opts.preAuthToken,
|
|
141
|
-
linkedAt: opts.linkedAt,
|
|
142
|
-
});
|
|
143
|
-
this.#logger.info("registration.user_link.persisted", { agentId: opts.agentId });
|
|
144
|
-
}
|
|
145
|
-
// ─── Load (restart rehydration) ──────────────────────────────────────────────
|
|
146
|
-
async loadRegistrationState() {
|
|
147
|
-
const obj = await this.#readJson(FILE_REGISTRATION_STATE);
|
|
148
|
-
if (!obj)
|
|
149
|
-
return null;
|
|
150
|
-
return {
|
|
151
|
-
agentId: reqStr(obj, "agentId", FILE_REGISTRATION_STATE),
|
|
152
|
-
primaryPubkey: reqStr(obj, "primaryPubkey", FILE_REGISTRATION_STATE),
|
|
153
|
-
mlDsaPubkey: reqStr(obj, "mlDsaPubkey", FILE_REGISTRATION_STATE),
|
|
154
|
-
registeredAt: reqNum(obj, "registeredAt", FILE_REGISTRATION_STATE),
|
|
155
|
-
status: reqStr(obj, "status", FILE_REGISTRATION_STATE),
|
|
156
|
-
// NOT `reqStr`: a file written before 038-KEYBIND has no such field, and that is a value to
|
|
157
|
-
// report (null), not a corrupt-file throw that would make the agent unloadable.
|
|
158
|
-
keyBinding: typeof obj["keyBinding"] === "string" ? obj["keyBinding"] : null,
|
|
159
|
-
channel: obj["channel"] === true,
|
|
160
|
-
adminPubkey: obj["channel"] === true && typeof obj["adminPubkey"] === "string" ? obj["adminPubkey"] : "",
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
async loadMlDsaKeypair() {
|
|
164
|
-
const obj = await this.#readJson(FILE_MLDSA_KEYPAIR);
|
|
165
|
-
if (!obj)
|
|
166
|
-
return null;
|
|
167
|
-
return {
|
|
168
|
-
mlDsaPubkey: reqStr(obj, "mlDsaPubkey", FILE_MLDSA_KEYPAIR),
|
|
169
|
-
secretKeyBlob: unhex(reqStr(obj, "secretKeyBlob", FILE_MLDSA_KEYPAIR)),
|
|
170
|
-
algorithm: reqStr(obj, "algorithm", FILE_MLDSA_KEYPAIR),
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
async loadActiveFrostKeyShare() {
|
|
174
|
-
const obj = await this.#readJson(FILE_FROST_SHARE);
|
|
175
|
-
if (!obj)
|
|
176
|
-
return null;
|
|
177
|
-
return {
|
|
178
|
-
epochId: reqStr(obj, "epochId", FILE_FROST_SHARE),
|
|
179
|
-
primaryPubkey: reqStr(obj, "primaryPubkey", FILE_FROST_SHARE),
|
|
180
|
-
identifier: reqStr(obj, "identifier", FILE_FROST_SHARE),
|
|
181
|
-
signingShare: unhex(reqStr(obj, "signingShare", FILE_FROST_SHARE)),
|
|
182
|
-
threshold: reqNum(obj, "threshold", FILE_FROST_SHARE),
|
|
183
|
-
participants: reqNum(obj, "participants", FILE_FROST_SHARE),
|
|
184
|
-
commitmentsCbor: unhex(reqStr(obj, "commitmentsCbor", FILE_FROST_SHARE)),
|
|
185
|
-
verifyingSharesCbor: unhex(reqStr(obj, "verifyingSharesCbor", FILE_FROST_SHARE)),
|
|
186
|
-
dkgMethod: reqStr(obj, "dkgMethod", FILE_FROST_SHARE),
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
async loadAgentUserLink() {
|
|
190
|
-
const obj = await this.#readJson(FILE_AGENT_USER_LINK);
|
|
191
|
-
if (!obj)
|
|
192
|
-
return null;
|
|
193
|
-
return {
|
|
194
|
-
agentId: reqStr(obj, "agentId", FILE_AGENT_USER_LINK),
|
|
195
|
-
preAuthToken: reqStr(obj, "preAuthToken", FILE_AGENT_USER_LINK),
|
|
196
|
-
linkedAt: reqNum(obj, "linkedAt", FILE_AGENT_USER_LINK),
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
// ─── Internals ───────────────────────────────────────────────────────────────
|
|
200
|
-
async #readJson(name) {
|
|
201
|
-
let raw;
|
|
202
|
-
try {
|
|
203
|
-
raw = await readFile(join(this.#agentDir, name));
|
|
204
|
-
}
|
|
205
|
-
catch (err) {
|
|
206
|
-
if (err.code === "ENOENT")
|
|
207
|
-
return null;
|
|
208
|
-
throw err;
|
|
209
|
-
}
|
|
210
|
-
return JSON.parse(raw.toString("utf8"));
|
|
211
|
-
}
|
|
212
|
-
/** Write JSON atomically (tmp + rename) with 0o600 so partial writes never surface. */
|
|
213
|
-
async #writeJsonAtomic(name, value) {
|
|
214
|
-
await mkdir(this.#agentDir, { recursive: true });
|
|
215
|
-
const finalPath = join(this.#agentDir, name);
|
|
216
|
-
// Random suffix (not just pid+counter) so two FileRegistrationPersistence
|
|
217
|
-
// instances sharing an agentDir in one process can never collide on the tmp
|
|
218
|
-
// path and truncate each other's write.
|
|
219
|
-
const tmpPath = join(dirname(finalPath), `.cello-reg-tmp-${process.pid}-${++this.#tmpCounter}-${randomBytes(6).toString("hex")}-${name}`);
|
|
220
|
-
const body = Buffer.from(JSON.stringify(value), "utf8");
|
|
221
|
-
try {
|
|
222
|
-
const fd = await fsOpen(tmpPath, "w", SECRET_FILE_MODE);
|
|
223
|
-
try {
|
|
224
|
-
await fd.write(body);
|
|
225
|
-
await fd.chmod(SECRET_FILE_MODE);
|
|
226
|
-
// fsync the data before rename so a crash between write and rename can't
|
|
227
|
-
// surface an empty/partial key file on recovery.
|
|
228
|
-
await fd.sync();
|
|
229
|
-
}
|
|
230
|
-
finally {
|
|
231
|
-
await fd.close();
|
|
232
|
-
}
|
|
233
|
-
await rename(tmpPath, finalPath);
|
|
234
|
-
// rename preserves the tmp file's mode; chmod the final path defensively in
|
|
235
|
-
// case it pre-existed with looser permissions.
|
|
236
|
-
await chmod(finalPath, SECRET_FILE_MODE);
|
|
237
|
-
// Best-effort durability of the rename itself (parent-dir fsync). Not all
|
|
238
|
-
// platforms/filesystems support directory fsync — ignore failures.
|
|
239
|
-
await this.#fsyncDir(this.#agentDir);
|
|
240
|
-
}
|
|
241
|
-
catch (err) {
|
|
242
|
-
// Never leave plaintext secret material (ML-DSA secret / FROST share) as
|
|
243
|
-
// orphaned tmp litter if the write or rename failed partway.
|
|
244
|
-
await unlink(tmpPath).catch(() => { });
|
|
245
|
-
throw err;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
async #fsyncDir(dir) {
|
|
249
|
-
try {
|
|
250
|
-
const dh = await fsOpen(dir, "r");
|
|
251
|
-
try {
|
|
252
|
-
await dh.sync();
|
|
253
|
-
}
|
|
254
|
-
finally {
|
|
255
|
-
await dh.close();
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
catch {
|
|
259
|
-
// Directory fsync is best-effort; some platforms reject opening a dir for sync.
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
//# sourceMappingURL=registration-persistence.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registration-persistence.js","sourceRoot":"","sources":["../src/registration-persistence.ts"],"names":[],"mappings":"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"}
|
package/dist/registry-poll.d.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DOD-REGISTRY-1 (client half) — HTTP registry poll.
|
|
3
|
-
*
|
|
4
|
-
* Mirrors http-manifest-poll.ts: fetches the signed registry document from the directory,
|
|
5
|
-
* verifies its Ed25519 signature against a BUILD-TIME-PINNED registry pubkey, enforces
|
|
6
|
-
* anti-rollback (version must be strictly greater than last seen), and updates the
|
|
7
|
-
* in-memory TypeRegistry on success. Never throws — a failure returns a distinct reason
|
|
8
|
-
* and leaves the last-good cache untouched (a bad registry never blanks classification).
|
|
9
|
-
*
|
|
10
|
-
* INV-DIR-DUMB: the directory serves the registry as opaque bytes; the CLIENT is the
|
|
11
|
-
* authoritative verifier.
|
|
12
|
-
* INV-TYPE-CARRY: absent type → unclassified, never an error.
|
|
13
|
-
* INV-ZERO-BUMP: a registry update requires NO release anywhere.
|
|
14
|
-
*
|
|
15
|
-
* Crypto reference: RFC 8032 (Ed25519 single-key verification of the inner document).
|
|
16
|
-
*/
|
|
17
|
-
import type { TypeRegistry } from "./type-registry.js";
|
|
18
|
-
import type { IRegistryVersionStore } from "./registry-version-store-db.js";
|
|
19
|
-
import type { IManifestPollScheduler } from "@cello-protocol/transport";
|
|
20
|
-
export interface RegistryPollLogger {
|
|
21
|
-
info(event: string, ctx?: Record<string, unknown>): void;
|
|
22
|
-
warn(event: string, ctx?: Record<string, unknown>): void;
|
|
23
|
-
error(event: string, ctx?: Record<string, unknown>): void;
|
|
24
|
-
}
|
|
25
|
-
export type RegistryPollFailureReason = "registry_http_unreachable" | "registry_not_published" | "registry_malformed" | "registry_signature_invalid" | "registry_version_rollback" | "registry_store_error";
|
|
26
|
-
export type RegistryPollOutcome = {
|
|
27
|
-
ok: true;
|
|
28
|
-
adopted: boolean;
|
|
29
|
-
oldVersion: number | null;
|
|
30
|
-
newVersion: number;
|
|
31
|
-
} | {
|
|
32
|
-
ok: false;
|
|
33
|
-
reason: RegistryPollFailureReason;
|
|
34
|
-
};
|
|
35
|
-
export interface RegistryPollDeps {
|
|
36
|
-
typeRegistry: TypeRegistry;
|
|
37
|
-
registryVersionStore: IRegistryVersionStore;
|
|
38
|
-
registryPubkey: string;
|
|
39
|
-
logger: RegistryPollLogger;
|
|
40
|
-
}
|
|
41
|
-
export declare function pollRegistryOverHttp(opts: {
|
|
42
|
-
directoryUrl: string;
|
|
43
|
-
fetchFn?: typeof fetch;
|
|
44
|
-
correlationId?: string;
|
|
45
|
-
} & RegistryPollDeps): Promise<RegistryPollOutcome>;
|
|
46
|
-
export declare function startRegistryPoll(opts: {
|
|
47
|
-
scheduler: IManifestPollScheduler;
|
|
48
|
-
directoryUrl: string;
|
|
49
|
-
fetchFn?: typeof fetch;
|
|
50
|
-
mintCorrelationId?: () => string;
|
|
51
|
-
} & RegistryPollDeps): () => void;
|
|
52
|
-
//# sourceMappingURL=registry-poll.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry-poll.d.ts","sourceRoot":"","sources":["../src/registry-poll.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGxE,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3D;AAED,MAAM,MAAM,yBAAyB,GACjC,2BAA2B,GAC3B,wBAAwB,GACxB,oBAAoB,GACpB,4BAA4B,GAC5B,2BAA2B,GAC3B,sBAAsB,CAAC;AAE3B,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,yBAAyB,CAAA;CAAE,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,oBAAoB,EAAE,qBAAqB,CAAC;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AA0BD,wBAAsB,oBAAoB,CACxC,IAAI,EAAE;IACJ,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,gBAAgB,GACnB,OAAO,CAAC,mBAAmB,CAAC,CAsF9B;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE;IACJ,SAAS,EAAE,sBAAsB,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC;CAClC,GAAG,gBAAgB,GACnB,MAAM,IAAI,CAyBZ"}
|
package/dist/registry-poll.js
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DOD-REGISTRY-1 (client half) — HTTP registry poll.
|
|
3
|
-
*
|
|
4
|
-
* Mirrors http-manifest-poll.ts: fetches the signed registry document from the directory,
|
|
5
|
-
* verifies its Ed25519 signature against a BUILD-TIME-PINNED registry pubkey, enforces
|
|
6
|
-
* anti-rollback (version must be strictly greater than last seen), and updates the
|
|
7
|
-
* in-memory TypeRegistry on success. Never throws — a failure returns a distinct reason
|
|
8
|
-
* and leaves the last-good cache untouched (a bad registry never blanks classification).
|
|
9
|
-
*
|
|
10
|
-
* INV-DIR-DUMB: the directory serves the registry as opaque bytes; the CLIENT is the
|
|
11
|
-
* authoritative verifier.
|
|
12
|
-
* INV-TYPE-CARRY: absent type → unclassified, never an error.
|
|
13
|
-
* INV-ZERO-BUMP: a registry update requires NO release anywhere.
|
|
14
|
-
*
|
|
15
|
-
* Crypto reference: RFC 8032 (Ed25519 single-key verification of the inner document).
|
|
16
|
-
*/
|
|
17
|
-
import { verify } from "@cello-protocol/crypto";
|
|
18
|
-
import { extractErrorMessage } from "./error-message.js";
|
|
19
|
-
const FETCH_TIMEOUT_MS = 10_000;
|
|
20
|
-
function canonicalRegistryBody(doc) {
|
|
21
|
-
const body = {};
|
|
22
|
-
for (const key of Object.keys(doc)) {
|
|
23
|
-
if (key !== "signature") {
|
|
24
|
-
body[key] = doc[key];
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
const json = JSON.stringify(body, sortedReplacer);
|
|
28
|
-
return new TextEncoder().encode(json);
|
|
29
|
-
}
|
|
30
|
-
function sortedReplacer(_key, value) {
|
|
31
|
-
if (value !== null && typeof value === "object" && !Array.isArray(value)) {
|
|
32
|
-
const sorted = {};
|
|
33
|
-
for (const k of Object.keys(value).sort()) {
|
|
34
|
-
sorted[k] = value[k];
|
|
35
|
-
}
|
|
36
|
-
return sorted;
|
|
37
|
-
}
|
|
38
|
-
return value;
|
|
39
|
-
}
|
|
40
|
-
export async function pollRegistryOverHttp(opts) {
|
|
41
|
-
const { directoryUrl, fetchFn = fetch, correlationId, typeRegistry, registryVersionStore, registryPubkey, logger, } = opts;
|
|
42
|
-
const registryUrl = `${directoryUrl.replace(/\/$/, "")}/registry`;
|
|
43
|
-
logger.info("registry.poll.dispatched", { directoryUrl, correlationId });
|
|
44
|
-
let rawBytes;
|
|
45
|
-
try {
|
|
46
|
-
const ac = new AbortController();
|
|
47
|
-
const timer = setTimeout(() => ac.abort(), FETCH_TIMEOUT_MS);
|
|
48
|
-
let resp;
|
|
49
|
-
try {
|
|
50
|
-
resp = await fetchFn(registryUrl, { signal: ac.signal });
|
|
51
|
-
}
|
|
52
|
-
finally {
|
|
53
|
-
clearTimeout(timer);
|
|
54
|
-
}
|
|
55
|
-
if (resp.status === 404) {
|
|
56
|
-
logger.info("registry.poll.not_published", { directoryUrl, correlationId });
|
|
57
|
-
return { ok: false, reason: "registry_not_published" };
|
|
58
|
-
}
|
|
59
|
-
if (!resp.ok) {
|
|
60
|
-
logger.warn("registry.poll.failed", { reason: "registry_http_unreachable", status: resp.status, directoryUrl, correlationId });
|
|
61
|
-
return { ok: false, reason: "registry_http_unreachable" };
|
|
62
|
-
}
|
|
63
|
-
rawBytes = await resp.arrayBuffer();
|
|
64
|
-
}
|
|
65
|
-
catch (err) {
|
|
66
|
-
logger.warn("registry.poll.failed", { reason: "registry_http_unreachable", directoryUrl, correlationId, error: extractErrorMessage(err) });
|
|
67
|
-
return { ok: false, reason: "registry_http_unreachable" };
|
|
68
|
-
}
|
|
69
|
-
let doc;
|
|
70
|
-
try {
|
|
71
|
-
const text = new TextDecoder().decode(rawBytes);
|
|
72
|
-
doc = JSON.parse(text);
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
logger.warn("registry.poll.failed", { reason: "registry_malformed", directoryUrl, correlationId });
|
|
76
|
-
return { ok: false, reason: "registry_malformed" };
|
|
77
|
-
}
|
|
78
|
-
if (typeof doc.version !== "number" || typeof doc.signature !== "string" || typeof doc.types !== "object" || doc.types === null) {
|
|
79
|
-
logger.warn("registry.poll.failed", { reason: "registry_malformed", directoryUrl, correlationId });
|
|
80
|
-
return { ok: false, reason: "registry_malformed" };
|
|
81
|
-
}
|
|
82
|
-
const version = doc.version;
|
|
83
|
-
const signature = doc.signature;
|
|
84
|
-
// Verify Ed25519 signature against pinned pubkey
|
|
85
|
-
const bodyBytes = canonicalRegistryBody(doc);
|
|
86
|
-
const sigBytes = new Uint8Array(Buffer.from(signature, "hex"));
|
|
87
|
-
const pubBytes = new Uint8Array(Buffer.from(registryPubkey, "hex"));
|
|
88
|
-
if (!verify(pubBytes, bodyBytes, sigBytes)) {
|
|
89
|
-
logger.warn("registry.signature.invalid", { version, directoryUrl, correlationId });
|
|
90
|
-
return { ok: false, reason: "registry_signature_invalid" };
|
|
91
|
-
}
|
|
92
|
-
// Anti-rollback + adopt
|
|
93
|
-
try {
|
|
94
|
-
const lastSeen = registryVersionStore.getLastSeenVersion();
|
|
95
|
-
if (lastSeen !== null && version <= lastSeen) {
|
|
96
|
-
if (version < lastSeen) {
|
|
97
|
-
logger.warn("registry.poll.failed", { reason: "registry_version_rollback", version, lastSeenVersion: lastSeen, correlationId });
|
|
98
|
-
return { ok: false, reason: "registry_version_rollback" };
|
|
99
|
-
}
|
|
100
|
-
// Equal — already current
|
|
101
|
-
return { ok: true, adopted: false, oldVersion: lastSeen, newVersion: version };
|
|
102
|
-
}
|
|
103
|
-
const oldVersion = typeRegistry.currentVersion;
|
|
104
|
-
typeRegistry.update(doc);
|
|
105
|
-
registryVersionStore.persistVersion(version);
|
|
106
|
-
logger.info("registry.poll.success", { oldVersion, newVersion: version, directoryUrl, correlationId });
|
|
107
|
-
return { ok: true, adopted: true, oldVersion, newVersion: version };
|
|
108
|
-
}
|
|
109
|
-
catch (err) {
|
|
110
|
-
logger.error("registry.poll.failed", { reason: "registry_store_error", version, directoryUrl, correlationId, error: extractErrorMessage(err) });
|
|
111
|
-
return { ok: false, reason: "registry_store_error" };
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
export function startRegistryPoll(opts) {
|
|
115
|
-
const { scheduler, directoryUrl, fetchFn, mintCorrelationId, typeRegistry, registryVersionStore, registryPubkey, logger } = opts;
|
|
116
|
-
let stopped = false;
|
|
117
|
-
const tick = async () => {
|
|
118
|
-
if (stopped)
|
|
119
|
-
return;
|
|
120
|
-
await pollRegistryOverHttp({
|
|
121
|
-
directoryUrl,
|
|
122
|
-
fetchFn,
|
|
123
|
-
correlationId: mintCorrelationId?.(),
|
|
124
|
-
typeRegistry,
|
|
125
|
-
registryVersionStore,
|
|
126
|
-
registryPubkey,
|
|
127
|
-
logger,
|
|
128
|
-
}).catch((err) => {
|
|
129
|
-
logger.error("registry.poll.failed", { reason: "registry_poll_unexpected_error", directoryUrl, error: extractErrorMessage(err) });
|
|
130
|
-
});
|
|
131
|
-
if (!stopped)
|
|
132
|
-
scheduler.scheduleNext(tick);
|
|
133
|
-
};
|
|
134
|
-
scheduler.scheduleNext(tick);
|
|
135
|
-
return () => {
|
|
136
|
-
stopped = true;
|
|
137
|
-
scheduler.cancel();
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
//# sourceMappingURL=registry-poll.js.map
|