@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,557 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Directory endpoint bootstrap for the daemon.
|
|
3
|
-
*
|
|
4
|
-
* The logic lives here, not in the adapter: the daemon must not depend on the
|
|
5
|
-
* adapter, which sits ABOVE it as a thin IPC proxy.
|
|
6
|
-
*
|
|
7
|
-
* Mechanism:
|
|
8
|
-
* 1. resolveDirectoryUrl(env): CELLO_DIRECTORY_URL or a random bundled endpoint.
|
|
9
|
-
* 2. GET ${url}/bootstrap → { multiaddr } containing "/p2p/<peerId>".
|
|
10
|
-
* 3. The peer ID is the segment after the final "/p2p/" in the multiaddr.
|
|
11
|
-
*
|
|
12
|
-
* The resolver caches the first successful resolution and re-attempts on each
|
|
13
|
-
* connect until it succeeds, so a daemon that starts before the directory is
|
|
14
|
-
* reachable will connect once the bootstrap endpoint comes up (the transport
|
|
15
|
-
* SignalingManager retries connect()).
|
|
16
|
-
*/
|
|
17
|
-
import { BUNDLED_CONSORTIUM_MANIFEST } from "./bundled-consortium-manifest.js";
|
|
18
|
-
import { extractErrorMessage } from "./error-message.js";
|
|
19
|
-
/**
|
|
20
|
-
* Production directory HTTP endpoint — the cold-boot fallback when CELLO_DIRECTORY_URL is unset.
|
|
21
|
-
*
|
|
22
|
-
* THIS MUST BE ONE OF THE `endpoint` VALUES IN THE BUNDLED MANIFEST, byte for byte. `buildManifestDeps`
|
|
23
|
-
* loads the bundled roster only when the resolved directory URL matches a node in it, and otherwise
|
|
24
|
-
* falls through to the pre-roster path with NO step-6 directory authentication — so a value that
|
|
25
|
-
* merely reaches the same machine, such as a DNS name for the same host, silently disables the
|
|
26
|
-
* defense against a MITM redirecting /bootstrap to a rogue directory. It fails open and quietly,
|
|
27
|
-
* which is why the requirement is stated here rather than left to be rediscovered. That the match
|
|
28
|
-
* is byte-exact and the miss is silent is `DOD-M15-STEP6-REPLAY-1` — tracked, not overlooked; the
|
|
29
|
-
* TLS half that made a single bundled name possible at all is `DOD-M15-BOOTSTRAP-TLS-1`.
|
|
30
|
-
*
|
|
31
|
-
* A NAME as of 2026-09-10, and the condition the previous comment set is exactly what changed: it
|
|
32
|
-
* said this "cannot be this constant until the manifest carries names", and the manifest now carries
|
|
33
|
-
* names. Every node sits behind its own regional load balancer terminating TLS, and the bundled
|
|
34
|
-
* roster moved to `https://directory-<region>.cello.mygentic.ai` in the same change. The two are
|
|
35
|
-
* only ever correct together.
|
|
36
|
-
*
|
|
37
|
-
* No port: 443, and the balancer's URL map routes /bootstrap, /manifest, /health, /agent-lookup and
|
|
38
|
-
* /registry to the node's HTTP listener while everything else — the libp2p WebSocket upgrade — goes
|
|
39
|
-
* to the protocol listener. One port now serves what needed two.
|
|
40
|
-
*/
|
|
41
|
-
export const PRODUCTION_DIRECTORY_URL = "https://directory-use1.cello.mygentic.ai";
|
|
42
|
-
/**
|
|
43
|
-
* The bundled manifest's endpoint list, used by resolveDirectoryUrl to distribute cold-boot
|
|
44
|
-
* clients across the consortium instead of always landing on the same node.
|
|
45
|
-
*
|
|
46
|
-
* Import is lazy (inside the function) to avoid a circular dependency with bundled-consortium-manifest.
|
|
47
|
-
* Extracted as a separate export for testing.
|
|
48
|
-
*/
|
|
49
|
-
export function pickRandomBundledEndpoint(nodes) {
|
|
50
|
-
const endpoint = nodes[Math.floor(Math.random() * nodes.length)]["endpoint"];
|
|
51
|
-
return typeof endpoint === "string" ? endpoint : PRODUCTION_DIRECTORY_URL;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Resolve the directory URL from the environment, falling back to a RANDOMLY SELECTED
|
|
55
|
-
* bundled manifest endpoint when CELLO_DIRECTORY_URL is not set.
|
|
56
|
-
*
|
|
57
|
-
* Random, not fixed: every fresh daemon picks a different consortium node. Without this
|
|
58
|
-
* all clients land on the same node (whichever `PRODUCTION_DIRECTORY_URL` names), and the
|
|
59
|
-
* other nodes only ever appear as failover. That was fine with one user; it does not scale.
|
|
60
|
-
*
|
|
61
|
-
* The random pick changes on every process start. Daemons that are already running and have
|
|
62
|
-
* established a directory connection are unaffected — they stay connected to their current node
|
|
63
|
-
* and only re-pick on the next login/restart.
|
|
64
|
-
*/
|
|
65
|
-
export function resolveDirectoryUrl(env = process.env) {
|
|
66
|
-
if (env["CELLO_DIRECTORY_URL"])
|
|
67
|
-
return env["CELLO_DIRECTORY_URL"];
|
|
68
|
-
return pickRandomBundledEndpoint(BUNDLED_CONSORTIUM_MANIFEST.nodes);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* DOD-M15-BOOTSTRAP-1 — retry budget for the bootstrap probe.
|
|
72
|
-
*
|
|
73
|
-
* Three attempts at 8 s, capped at 20 s in total. The numbers come from a measurement, not a guess:
|
|
74
|
-
* over a mobile link one probe returned at **16.2 s** and another returned nothing in 30 s, while
|
|
75
|
-
* the old code gave each node ONE attempt with a 5-second deadline. A packet lost during the TCP
|
|
76
|
-
* handshake is abandoned inside the retransmit backoff, and the node is dropped from the roster —
|
|
77
|
-
* for a normal user, on a normal lossy link, with nothing wrong anywhere in the system.
|
|
78
|
-
*
|
|
79
|
-
* A LONGER DEADLINE ALONE DOES NOT FIX IT, which is the counter-intuitive part and the reason this
|
|
80
|
-
* is a retry rather than a bigger number: the win comes from a FRESH CONNECTION. Waiting 20 s on
|
|
81
|
-
* the original socket keeps waiting on the same lost handshake; a new `fetch` starts a new one.
|
|
82
|
-
*
|
|
83
|
-
* The total cap exists so a genuinely dead node cannot hold startup for a minute — the roster has
|
|
84
|
-
* other nodes to try, and spending 3 × 8 s on the first one delays reaching them.
|
|
85
|
-
*/
|
|
86
|
-
const PROBE_ATTEMPTS = 3;
|
|
87
|
-
const PROBE_TIMEOUT_MS = 8_000;
|
|
88
|
-
const PROBE_TOTAL_BUDGET_MS = 20_000;
|
|
89
|
-
/**
|
|
90
|
-
* Failure classes worth a second look. A lost packet, a DNS server that blinked, a connection
|
|
91
|
-
* refused during a node restart — all of these can succeed on a fresh connection moments later.
|
|
92
|
-
*
|
|
93
|
-
* `http_error` and `bad_response` are NOT here, deliberately: a 404, a 500, or a payload without a
|
|
94
|
-
* `/p2p/` is a deterministic answer from a server that IS reachable. Retrying it spends the whole
|
|
95
|
-
* budget to receive the same reply three times and delays every other node in the roster.
|
|
96
|
-
*/
|
|
97
|
-
const RETRYABLE = new Set(["timeout", "connect_error", "dns_error"]);
|
|
98
|
-
/** DNS-level getaddrinfo failures vs transport-level connection failures. */
|
|
99
|
-
const DNS_CODES = new Set(["ENOTFOUND", "EAI_AGAIN"]);
|
|
100
|
-
/** Walk an error's `cause` chain for the first Node `code` (undici nests the coded error). */
|
|
101
|
-
function findErrorCode(err) {
|
|
102
|
-
let cur = err;
|
|
103
|
-
for (let depth = 0; depth < 5 && cur instanceof Error; depth++) {
|
|
104
|
-
const code = cur.code;
|
|
105
|
-
if (typeof code === "string")
|
|
106
|
-
return code;
|
|
107
|
-
cur = cur.cause;
|
|
108
|
-
}
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
111
|
-
function classifyFetchError(err) {
|
|
112
|
-
if (err instanceof Error && err.name === "AbortError")
|
|
113
|
-
return { reason: "timeout", detail: "AbortError" };
|
|
114
|
-
const code = findErrorCode(err);
|
|
115
|
-
if (code !== null) {
|
|
116
|
-
if (DNS_CODES.has(code))
|
|
117
|
-
return { reason: "dns_error", detail: code };
|
|
118
|
-
return { reason: "connect_error", detail: code };
|
|
119
|
-
}
|
|
120
|
-
return { reason: "connect_error", detail: extractErrorMessage(err) };
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* The default: persistent. Used where nothing is waiting on the answer — the roster sweep, which
|
|
124
|
-
* runs its nodes in parallel and would rather spend 16 s than drop a healthy node.
|
|
125
|
-
*/
|
|
126
|
-
export const PERSISTENT_PROBE = {
|
|
127
|
-
attempts: PROBE_ATTEMPTS,
|
|
128
|
-
timeoutMs: PROBE_TIMEOUT_MS,
|
|
129
|
-
totalMs: PROBE_TOTAL_BUDGET_MS,
|
|
130
|
-
};
|
|
131
|
-
/**
|
|
132
|
-
* FAIL-FAST, for the reconnect path — review F1, a regression the retry introduced.
|
|
133
|
-
*
|
|
134
|
-
* `createDirectoryEndpointResolver` runs on EVERY connect attempt, and the signaling stream turns
|
|
135
|
-
* over roughly every 70 seconds. Giving that path the persistent budget meant a lossy link could
|
|
136
|
-
* spend 16 s resolving before falling back to the last-known-good endpoint it already had — and
|
|
137
|
-
* `outbound-sessions` waits only 10 s for signaling before giving up, so `cello_initiate_session`
|
|
138
|
-
* would start returning `directory_signaling_timeout` where it used to get a usable endpoint in
|
|
139
|
-
* time. A resilience fix that breaks the thing it was protecting.
|
|
140
|
-
*
|
|
141
|
-
* TWO PROBES AT 2 s, AND THE ARITHMETIC IS THE POINT. The blocked resolver has TWO legs inside that
|
|
142
|
-
* one 10 s wait — the primary, and then the roster sweep, whose `Promise.all` waits for the slowest
|
|
143
|
-
* node. So the budget has to fit TWICE: 2 × 2 s × 2 legs = 8 s, with headroom. A first attempt at
|
|
144
|
-
* 4 s looked generous and was wrong for exactly this reason, and the test that now asserts it
|
|
145
|
-
* against `SIGNALING_CONNECT_WAIT_MS` is what caught it.
|
|
146
|
-
*
|
|
147
|
-
* ISN'T 2 s TOO SHORT for a link where a probe was measured at 16.2 s? Yes — and that is the honest
|
|
148
|
-
* answer rather than a problem. Inside a 10 s deadline you cannot afford a 16 s probe from either
|
|
149
|
-
* leg, so pretending to try is how the deadline gets blown and the caller gets NOTHING. Failing fast
|
|
150
|
-
* here preserves the thing that actually helps on a bad link: the last-known-good endpoint, and a
|
|
151
|
-
* background sweep on the persistent budget that keeps the roster current without anyone waiting.
|
|
152
|
-
*
|
|
153
|
-
* The retry is still the mechanism — two probes means a second, FRESH connection, which is what
|
|
154
|
-
* recovers a lost handshake. One would be the original defect.
|
|
155
|
-
*/
|
|
156
|
-
export const FAST_PROBE = { attempts: 2, timeoutMs: 2_000, totalMs: 5_000 };
|
|
157
|
-
export async function fetchBootstrapResult(directoryUrl, fetchFn = fetch, nowMs = Date.now, budget = PERSISTENT_PROBE) {
|
|
158
|
-
const started = nowMs();
|
|
159
|
-
let last = { ok: false, reason: "connect_error", detail: "no attempt was made" };
|
|
160
|
-
for (let attempt = 1; attempt <= budget.attempts; attempt++) {
|
|
161
|
-
last = await probeOnce(directoryUrl, fetchFn, budget.timeoutMs);
|
|
162
|
-
if (last.ok)
|
|
163
|
-
return { ...last, attempts: attempt };
|
|
164
|
-
if (!RETRYABLE.has(last.reason))
|
|
165
|
-
return { ...last, attempts: attempt };
|
|
166
|
-
// Stop if another full attempt cannot finish inside the budget — better to let the caller move
|
|
167
|
-
// on to the next node than to spend the remainder proving this one is still unreachable.
|
|
168
|
-
const spent = nowMs() - started;
|
|
169
|
-
if (attempt === budget.attempts || spent + budget.timeoutMs > budget.totalMs) {
|
|
170
|
-
return { ...last, attempts: attempt };
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
return { ...last, attempts: budget.attempts };
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* ONE probe, on its OWN connection. Separated from the retry loop above precisely because the fresh
|
|
177
|
-
* connection is the mechanism — each call is a new `fetch`, so a handshake lost in TCP backoff is
|
|
178
|
-
* abandoned rather than waited out.
|
|
179
|
-
*/
|
|
180
|
-
async function probeOnce(directoryUrl, fetchFn, timeoutMs) {
|
|
181
|
-
const bootstrapUrl = `${directoryUrl.replace(/\/$/, "")}/bootstrap`;
|
|
182
|
-
const ac = new AbortController();
|
|
183
|
-
const timeout = setTimeout(() => ac.abort(), timeoutMs);
|
|
184
|
-
try {
|
|
185
|
-
let resp;
|
|
186
|
-
try {
|
|
187
|
-
resp = await fetchFn(bootstrapUrl, { signal: ac.signal });
|
|
188
|
-
}
|
|
189
|
-
catch (err) {
|
|
190
|
-
return { ok: false, ...classifyFetchError(err) };
|
|
191
|
-
}
|
|
192
|
-
if (!resp.ok)
|
|
193
|
-
return { ok: false, reason: "http_error", detail: String(resp.status) };
|
|
194
|
-
let json;
|
|
195
|
-
try {
|
|
196
|
-
json = (await resp.json());
|
|
197
|
-
}
|
|
198
|
-
catch (err) {
|
|
199
|
-
/**
|
|
200
|
-
* AN ABORTED BODY READ IS A TIMEOUT, NOT A MALFORMED PAYLOAD — review F3.
|
|
201
|
-
*
|
|
202
|
-
* The deadline covers the body as well as the request, so a server that sends headers and
|
|
203
|
-
* then stalls — the ordinary shape of a lossy mobile link, which is this unit's entire
|
|
204
|
-
* subject — aborts inside `resp.json()`. Reporting that as `bad_response` was wrong twice:
|
|
205
|
-
* it sent the operator to inspect a payload that was never received, and `bad_response` is
|
|
206
|
-
* deliberately NOT retryable, so the node got one probe and was dropped. Precisely the
|
|
207
|
-
* outcome the retry exists to prevent, reached through the retry's own policy.
|
|
208
|
-
*/
|
|
209
|
-
const classified = classifyFetchError(err);
|
|
210
|
-
if (classified.reason === "timeout" || ac.signal.aborted) {
|
|
211
|
-
// Both conditions, deliberately. The signal alone is what production sees when the deadline
|
|
212
|
-
// fires, but keying ONLY on it makes the behaviour depend on controller state rather than on
|
|
213
|
-
// what was actually thrown — untestable, and wrong the moment a body read aborts for any
|
|
214
|
-
// other reason. `classifyFetchError` already knows an AbortError is a timeout; reuse it
|
|
215
|
-
// rather than growing a second opinion about the same error.
|
|
216
|
-
return { ok: false, reason: "timeout", detail: classified.detail ?? "aborted reading the response body" };
|
|
217
|
-
}
|
|
218
|
-
return { ok: false, reason: "bad_response", detail: extractErrorMessage(err) };
|
|
219
|
-
}
|
|
220
|
-
if (typeof json.multiaddr === "string" && json.multiaddr.includes("/p2p/")) {
|
|
221
|
-
return { ok: true, multiaddr: json.multiaddr };
|
|
222
|
-
}
|
|
223
|
-
return { ok: false, reason: "bad_response", detail: "multiaddr missing or lacks /p2p/" };
|
|
224
|
-
}
|
|
225
|
-
finally {
|
|
226
|
-
clearTimeout(timeout);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Auto-discover the directory multiaddr via GET /bootstrap on the directory HTTP
|
|
231
|
-
* endpoint. Returns the multiaddr (which embeds the peer ID after "/p2p/"), or null.
|
|
232
|
-
* Thin compatibility wrapper over fetchBootstrapResult (which carries the failure class).
|
|
233
|
-
*/
|
|
234
|
-
export async function fetchBootstrapMultiaddr(directoryUrl, fetchFn = fetch) {
|
|
235
|
-
const result = await fetchBootstrapResult(directoryUrl, fetchFn);
|
|
236
|
-
return result.ok ? result.multiaddr : null;
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Extract the libp2p peer ID from a multiaddr — the segment after the final
|
|
240
|
-
* "/p2p/". Returns null if absent.
|
|
241
|
-
*/
|
|
242
|
-
export function parsePeerIdFromMultiaddr(multiaddr) {
|
|
243
|
-
const idx = multiaddr.lastIndexOf("/p2p/");
|
|
244
|
-
if (idx === -1)
|
|
245
|
-
return null;
|
|
246
|
-
const peerId = multiaddr.slice(idx + "/p2p/".length).split("/")[0];
|
|
247
|
-
return peerId && peerId.length > 0 ? peerId : null;
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Validate + normalise a manifest node `endpoint` to the HTTP(S) base used for its
|
|
251
|
-
* `/bootstrap` probe, or return `null` if it is not a usable bootstrap base.
|
|
252
|
-
*
|
|
253
|
-
* CONTRACT: a manifest `endpoint` is the node's HTTP(S) `/bootstrap` base — production
|
|
254
|
-
* directories serve `/bootstrap` over plaintext HTTP on port 9090, directly (there is no load
|
|
255
|
-
* balancer in front of them), matching PRODUCTION_DIRECTORY_URL. 8080 on the same host speaks the
|
|
256
|
-
* libp2p WebSocket upgrade and answers plain HTTP with 400, so pointing this at 8080 resolves as
|
|
257
|
-
* zero reachable nodes from a perfectly valid manifest. The wss libp2p DIAL address is
|
|
258
|
-
* returned BY `/bootstrap`; it is NOT the endpoint. Do NOT accept (or port-guess) a
|
|
259
|
-
* `wss://host:443` value — mapping that to `http://host:443` speaks plaintext to the
|
|
260
|
-
* TLS port and silently fails. Anything
|
|
261
|
-
* that is not `http(s)://` (a bare multiaddr, a wss dial address, a typo) is a config
|
|
262
|
-
* error in officer-SIGNED data: return null so the caller logs it DISTINCTLY from a
|
|
263
|
-
* transient outage and never dials a wrong port. A single trailing slash is stripped
|
|
264
|
-
* (fetchBootstrapMultiaddr appends `/bootstrap`).
|
|
265
|
-
*/
|
|
266
|
-
export function mapEndpointToBootstrapBase(endpoint) {
|
|
267
|
-
const noSlash = endpoint.replace(/\/$/, "");
|
|
268
|
-
if (noSlash.startsWith("http://") || noSlash.startsWith("https://"))
|
|
269
|
-
return noSlash;
|
|
270
|
-
return null;
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Resolve every consortium node in the manifest's node set to a live directory
|
|
274
|
-
* endpoint by probing each node's `/bootstrap` (in parallel, order preserved).
|
|
275
|
-
*
|
|
276
|
-
* AVAILABILITY-AWARE (the sovereign-node redundancy invariant): a node whose bootstrap is
|
|
277
|
-
* unreachable is SKIPPED with a warning — one node down must never strand the others,
|
|
278
|
-
* because a T-of-N ceremony only needs T of the N. Returns the resolved subset
|
|
279
|
-
* (possibly empty). The CALLER decides whether the resolved count meets the threshold;
|
|
280
|
-
* this function NEVER silently substitutes the single hardcoded endpoint for a missing
|
|
281
|
-
* node — that would defeat sovereignty by masking a down/forged node as healthy.
|
|
282
|
-
*/
|
|
283
|
-
export async function manifestNodesToEndpoints(nodes, opts) {
|
|
284
|
-
const fetchFn = opts.fetchFn ?? fetch;
|
|
285
|
-
const resolved = await Promise.all(nodes.map(async (node) => {
|
|
286
|
-
const base = mapEndpointToBootstrapBase(node.endpoint);
|
|
287
|
-
if (base === null) {
|
|
288
|
-
// PERMANENT config error in SIGNED manifest data — logged distinctly from a
|
|
289
|
-
// transient `unresolved` so a bad endpoint is never mistaken for a node that's
|
|
290
|
-
// merely down (fail loud, don't silently skip-as-if-outage).
|
|
291
|
-
opts.logger.error("directory.consortium.node.endpoint_invalid", {
|
|
292
|
-
nodeId: node.nodeId,
|
|
293
|
-
endpoint: node.endpoint,
|
|
294
|
-
});
|
|
295
|
-
return null;
|
|
296
|
-
}
|
|
297
|
-
const probe = await fetchBootstrapResult(base, fetchFn, Date.now, opts.probeBudget ?? PERSISTENT_PROBE);
|
|
298
|
-
if (!probe.ok) {
|
|
299
|
-
opts.logger.warn("directory.consortium.node.unresolved", {
|
|
300
|
-
nodeId: node.nodeId,
|
|
301
|
-
endpoint: node.endpoint,
|
|
302
|
-
reason: probe.reason,
|
|
303
|
-
detail: probe.detail,
|
|
304
|
-
// DOD-M15-BOOTSTRAP-1: how many probes were spent before giving up. Without it, a node
|
|
305
|
-
// dropped after one deterministic 404 and a node dropped after three timed-out probes on
|
|
306
|
-
// a lossy link read identically — and they call for opposite responses.
|
|
307
|
-
attempts: probe.attempts,
|
|
308
|
-
});
|
|
309
|
-
opts.onNodeUnresolved?.({
|
|
310
|
-
nodeId: node.nodeId,
|
|
311
|
-
endpoint: node.endpoint,
|
|
312
|
-
reason: probe.reason,
|
|
313
|
-
detail: probe.detail,
|
|
314
|
-
// Review F2: this is the OPERATOR SURFACE (it feeds cello_status), and it was left
|
|
315
|
-
// without the count while the log got it. This file's own comment says it: "a `warn` in
|
|
316
|
-
// the log is not a surface." One 404 and three timed-out probes are different problems.
|
|
317
|
-
attempts: probe.attempts,
|
|
318
|
-
});
|
|
319
|
-
return null;
|
|
320
|
-
}
|
|
321
|
-
/**
|
|
322
|
-
* DOD-M15-BOOTSTRAP-1 — a node that only answered on a RETRY is not the same as one that
|
|
323
|
-
* answered first time, and a silent success hides that difference.
|
|
324
|
-
*
|
|
325
|
-
* This is the operator's early warning: the link to that node is losing packets. Before the
|
|
326
|
-
* retry existed, the same conditions dropped it from the roster outright, and the log said
|
|
327
|
-
* only "unresolved". Reported at INFO, not WARN — nothing is wrong yet, and a warning that
|
|
328
|
-
* fires on a recovered probe would be noise.
|
|
329
|
-
*/
|
|
330
|
-
if ((probe.attempts ?? 1) > 1) {
|
|
331
|
-
opts.logger.info("directory.consortium.node.resolved_after_retry", {
|
|
332
|
-
nodeId: node.nodeId,
|
|
333
|
-
endpoint: node.endpoint,
|
|
334
|
-
attempts: probe.attempts,
|
|
335
|
-
impact: "this node answered only after a repeated probe, which means the path to it is dropping packets; before the retry existed this node would have been skipped entirely",
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
const multiaddr = probe.multiaddr;
|
|
339
|
-
const peerId = parsePeerIdFromMultiaddr(multiaddr);
|
|
340
|
-
if (!peerId) {
|
|
341
|
-
opts.logger.error("directory.consortium.node.no_peer_id", { nodeId: node.nodeId, multiaddr });
|
|
342
|
-
return null;
|
|
343
|
-
}
|
|
344
|
-
// The manifest DECLARES this node's peer id, and it is inside the signed body — so when the
|
|
345
|
-
// plaintext /bootstrap probe answers with a different one, the signed roster and the live
|
|
346
|
-
// response disagree about who this node is. Refuse rather than dial.
|
|
347
|
-
//
|
|
348
|
-
// Without this the declared value was decorative: the client dialled whatever the probe
|
|
349
|
-
// returned and the signature covered a field nobody read. Step-6 still authenticates the
|
|
350
|
-
// directory by challenge, so this is defence in depth at the DIAL layer — it declines to open a
|
|
351
|
-
// connection to the wrong peer at all, instead of opening one and rejecting it a round later.
|
|
352
|
-
//
|
|
353
|
-
// Absent `peerId` is tolerated: manifests written before the field existed carry none, and
|
|
354
|
-
// treating "not declared" as "mismatch" would strand every node in them.
|
|
355
|
-
const declaredPeerId = node.peerId;
|
|
356
|
-
if (declaredPeerId && declaredPeerId !== peerId) {
|
|
357
|
-
opts.logger.error("directory.consortium.node.peer_id_mismatch", {
|
|
358
|
-
nodeId: node.nodeId,
|
|
359
|
-
declaredPeerId,
|
|
360
|
-
probePeerId: peerId,
|
|
361
|
-
});
|
|
362
|
-
return null;
|
|
363
|
-
}
|
|
364
|
-
return { nodeId: node.nodeId, pubkey: node.pubkey, peerId, multiaddr };
|
|
365
|
-
}));
|
|
366
|
-
return resolved.filter((e) => e !== null);
|
|
367
|
-
}
|
|
368
|
-
/**
|
|
369
|
-
* Build an async `getDirectoryEndpoint` for createSignalingConnect.
|
|
370
|
-
*
|
|
371
|
-
* Re-resolves the bootstrap on EVERY call (i.e. every connect attempt) so a
|
|
372
|
-
* directory address change — failover, DNS/port change, or peer-ID rotation — is
|
|
373
|
-
* picked up on the next reconnect. The last successfully-resolved endpoint is kept
|
|
374
|
-
* only as a fallback: if a fresh fetch fails, the resolver returns the last
|
|
375
|
-
* known-good endpoint so a transient /bootstrap blip doesn't strand a working daemon.
|
|
376
|
-
*/
|
|
377
|
-
export function createDirectoryEndpointResolver(opts) {
|
|
378
|
-
const directoryUrl = opts.directoryUrl ?? resolveDirectoryUrl();
|
|
379
|
-
const fetchFn = opts.fetchFn ?? fetch;
|
|
380
|
-
const staleFallback = opts.staleFallback ?? true;
|
|
381
|
-
let lastGood = null;
|
|
382
|
-
return async function getDirectoryEndpoint() {
|
|
383
|
-
// FAST_PROBE, not the persistent one: a caller is blocked on this. See its definition.
|
|
384
|
-
const probe = await fetchBootstrapResult(directoryUrl, fetchFn, Date.now, FAST_PROBE);
|
|
385
|
-
if (probe.ok) {
|
|
386
|
-
const multiaddr = probe.multiaddr;
|
|
387
|
-
const peerId = parsePeerIdFromMultiaddr(multiaddr);
|
|
388
|
-
if (peerId) {
|
|
389
|
-
// Log only when the resolved endpoint actually changes (avoids per-connect noise).
|
|
390
|
-
if (!lastGood || lastGood.multiaddr !== multiaddr) {
|
|
391
|
-
opts.logger.info("directory.bootstrap.resolved", { directoryUrl, peerId });
|
|
392
|
-
}
|
|
393
|
-
lastGood = { peerId, multiaddr };
|
|
394
|
-
return lastGood;
|
|
395
|
-
}
|
|
396
|
-
opts.logger.error("directory.bootstrap.no_peer_id", { directoryUrl, multiaddr });
|
|
397
|
-
}
|
|
398
|
-
else {
|
|
399
|
-
opts.logger.warn("directory.bootstrap.unavailable", {
|
|
400
|
-
directoryUrl,
|
|
401
|
-
reason: probe.reason,
|
|
402
|
-
detail: probe.detail,
|
|
403
|
-
});
|
|
404
|
-
}
|
|
405
|
-
// Fresh resolution failed — reuse the last known-good endpoint if we have one AND stale fallback
|
|
406
|
-
// is enabled. When disabled (the failover-wrapper's primary probe), a fresh failure is reported
|
|
407
|
-
// as null so the roster can take over instead of the caller looping on a dead endpoint.
|
|
408
|
-
if (staleFallback && lastGood) {
|
|
409
|
-
opts.logger.warn("directory.bootstrap.using_last_known", { directoryUrl, peerId: lastGood.peerId });
|
|
410
|
-
return lastGood;
|
|
411
|
-
}
|
|
412
|
-
return null;
|
|
413
|
-
};
|
|
414
|
-
}
|
|
415
|
-
/** In-place-safe Fisher-Yates shuffle returning a NEW array (never mutates the input). */
|
|
416
|
-
function fisherYatesShuffle(items) {
|
|
417
|
-
const out = items.slice();
|
|
418
|
-
for (let i = out.length - 1; i > 0; i--) {
|
|
419
|
-
const j = Math.floor(Math.random() * (i + 1));
|
|
420
|
-
[out[i], out[j]] = [out[j], out[i]];
|
|
421
|
-
}
|
|
422
|
-
return out;
|
|
423
|
-
}
|
|
424
|
-
/**
|
|
425
|
-
* Wrap a single-node primary resolver with the consortium roster so the signaling
|
|
426
|
-
* dialer (and the ceremony endpoint that shares this instance) route AROUND a down
|
|
427
|
-
* primary directory node instead of retrying the single primary URL forever — the
|
|
428
|
-
* sovereign-node REDUNDANCY invariant.
|
|
429
|
-
*
|
|
430
|
-
* Selection policy, per getDirectoryEndpoint() call:
|
|
431
|
-
* 1. Sticky-until-fail — while riding a non-primary fallback, KEEP it as long as it's
|
|
432
|
-
* still in the reachable roster. Do NOT churn back to the primary when it recovers
|
|
433
|
-
* (no flapping / reconnect storm). The fallback's multiaddr is refreshed from the
|
|
434
|
-
* fresh roster match each call.
|
|
435
|
-
* 2. Primary-first — otherwise try the configured node. This is also the healthy
|
|
436
|
-
* steady state: when the primary resolves, we return WITHOUT probing the roster
|
|
437
|
-
* (no per-connect roster cost while everything is nominal).
|
|
438
|
-
* 3. Fallback — if the primary is down, fail over to a reachable roster member. The
|
|
439
|
-
* order is randomized (across the members other than the dead primary) so clients
|
|
440
|
-
* spread across the survivors. Emits directory.bootstrap.failover on a change so an
|
|
441
|
-
* operator sees the client is now running on a non-home node.
|
|
442
|
-
* 4. Return null only when NOTHING resolves (primary down AND roster empty/absent) —
|
|
443
|
-
* the unchanged all-nodes-down failure mode, no crash.
|
|
444
|
-
*
|
|
445
|
-
* ONE instance is shared across the daemon's signaling connect and its ceremony
|
|
446
|
-
* getDirectoryEndpoint so signaling + ceremonies stay on the SAME directory node and
|
|
447
|
-
* fail over together (a coherent per-daemon directory selection).
|
|
448
|
-
*
|
|
449
|
-
* Scope note: stickiness here is by ROSTER REACHABILITY, not by observed connect success
|
|
450
|
-
* — the resolver is not told whether a dial/auth against the returned endpoint actually
|
|
451
|
-
* succeeded. A node whose /bootstrap resolves is served by that same node, so resolvable ≈
|
|
452
|
-
* connectable in practice; only a live kill-primary failover test proves that presence
|
|
453
|
-
* resolution, relay assignment, and the FROST ceremony all work against a non-home directory.
|
|
454
|
-
*/
|
|
455
|
-
export function createRosterAwareEndpointResolver(opts) {
|
|
456
|
-
const shuffle = opts.shuffle ?? fisherYatesShuffle;
|
|
457
|
-
// The endpoint we last returned, and whether it is a non-primary fallback we're riding.
|
|
458
|
-
let current = null;
|
|
459
|
-
let stuckToFallback = false;
|
|
460
|
-
// The primary's own identity, learned whenever the primary last resolved. Used to EXCLUDE the
|
|
461
|
-
// primary from the fallback set even when `current` no longer points at it — a flapping primary
|
|
462
|
-
// whose independent roster probe still lists it must never be re-picked as its own fallback.
|
|
463
|
-
let primaryPeerId = null;
|
|
464
|
-
/** Pick a reachable roster member that is neither the current pointer nor the primary. */
|
|
465
|
-
function selectFallback(roster) {
|
|
466
|
-
const excluded = new Set([current?.peerId, primaryPeerId].filter((p) => !!p));
|
|
467
|
-
const others = roster.filter((e) => !excluded.has(e.peerId));
|
|
468
|
-
const ordered = shuffle(others.length > 0 ? others : roster);
|
|
469
|
-
const chosen = ordered[0];
|
|
470
|
-
const next = { peerId: chosen.peerId, multiaddr: chosen.multiaddr };
|
|
471
|
-
if (!current || current.peerId !== chosen.peerId) {
|
|
472
|
-
opts.logger.warn("directory.bootstrap.failover", {
|
|
473
|
-
from: current?.peerId ?? null,
|
|
474
|
-
to: chosen.peerId,
|
|
475
|
-
nodeId: chosen.nodeId,
|
|
476
|
-
});
|
|
477
|
-
}
|
|
478
|
-
current = next;
|
|
479
|
-
stuckToFallback = true;
|
|
480
|
-
return next;
|
|
481
|
-
}
|
|
482
|
-
return async function getDirectoryEndpoint() {
|
|
483
|
-
// 1. Sticky-until-fail: keep the current fallback while it is still reachable.
|
|
484
|
-
if (stuckToFallback && current) {
|
|
485
|
-
const roster = await opts.getConsortiumRoster();
|
|
486
|
-
const match = roster?.find((e) => e.peerId === current.peerId);
|
|
487
|
-
if (match) {
|
|
488
|
-
// Refresh the multiaddr from the fresh roster resolution; identity is unchanged.
|
|
489
|
-
current = { peerId: match.peerId, multiaddr: match.multiaddr };
|
|
490
|
-
return current;
|
|
491
|
-
}
|
|
492
|
-
// The fallback fell out of the reachable roster → re-select below.
|
|
493
|
-
opts.logger.warn("directory.bootstrap.failover.lost", { peerId: current.peerId });
|
|
494
|
-
}
|
|
495
|
-
// 2. Primary-first (and the healthy steady state — no roster probe once the primary is known
|
|
496
|
-
// to be a consortium member).
|
|
497
|
-
const primary = await opts.primaryResolver();
|
|
498
|
-
if (primary) {
|
|
499
|
-
// A primary that RESOLVES but is not a MEMBER of this consortium is a black hole, and used to
|
|
500
|
-
// be a permanent one: failover triggered only on UNREACHABILITY, so the compiled-in default
|
|
501
|
-
// URL after a consortium move resolved forever while every connection died at step-6 identity
|
|
502
|
-
// auth with `key_not_in_manifest`. Reachability was never the right test.
|
|
503
|
-
//
|
|
504
|
-
// Checked against DECLARED manifest membership, never against the reachable roster. The
|
|
505
|
-
// roster is the set that answered /bootstrap just now; a genuine member that is momentarily
|
|
506
|
-
// down is absent from it, and disqualifying on that would route around a node that is merely
|
|
507
|
-
// restarting — turning a blip into a failover. Membership is also LOCAL, so this costs no
|
|
508
|
-
// probe at all and the healthy path is unchanged.
|
|
509
|
-
const members = opts.getManifestPeerIds?.() ?? null;
|
|
510
|
-
if (members && members.size > 0 && !members.has(primary.peerId)) {
|
|
511
|
-
opts.logger.warn("directory.bootstrap.primary.not_in_consortium", {
|
|
512
|
-
peerId: primary.peerId,
|
|
513
|
-
memberCount: members.size,
|
|
514
|
-
});
|
|
515
|
-
primaryPeerId = primary.peerId; // exclude it from the fallback pick below
|
|
516
|
-
const roster = await opts.getConsortiumRoster();
|
|
517
|
-
if (roster && roster.length > 0)
|
|
518
|
-
return selectFallback(roster);
|
|
519
|
-
// No reachable member either — return null so the caller retries rather than hand back a
|
|
520
|
-
// directory we KNOW will reject us.
|
|
521
|
-
return null;
|
|
522
|
-
}
|
|
523
|
-
if (stuckToFallback) {
|
|
524
|
-
opts.logger.info("directory.bootstrap.failover", { to: primary.peerId, restored: true });
|
|
525
|
-
}
|
|
526
|
-
current = primary;
|
|
527
|
-
primaryPeerId = primary.peerId;
|
|
528
|
-
stuckToFallback = false;
|
|
529
|
-
return primary;
|
|
530
|
-
}
|
|
531
|
-
// 3. Primary is down → fail over to a reachable roster member (randomized order).
|
|
532
|
-
const roster = await opts.getConsortiumRoster();
|
|
533
|
-
if (roster && roster.length > 0) {
|
|
534
|
-
// Exclude the (now-dead/flapping) primary and the current pointer; any OTHER reachable member
|
|
535
|
-
// is valid. Falls back to the full roster only if excluding leaves nothing (all members are
|
|
536
|
-
// the excluded ones — e.g. the roster is just the primary itself).
|
|
537
|
-
const excluded = new Set([current?.peerId, primaryPeerId].filter((p) => !!p));
|
|
538
|
-
const others = roster.filter((e) => !excluded.has(e.peerId));
|
|
539
|
-
const ordered = shuffle(others.length > 0 ? others : roster);
|
|
540
|
-
const chosen = ordered[0];
|
|
541
|
-
const next = { peerId: chosen.peerId, multiaddr: chosen.multiaddr };
|
|
542
|
-
if (!current || current.peerId !== chosen.peerId) {
|
|
543
|
-
opts.logger.warn("directory.bootstrap.failover", {
|
|
544
|
-
from: current?.peerId ?? null,
|
|
545
|
-
to: chosen.peerId,
|
|
546
|
-
nodeId: chosen.nodeId,
|
|
547
|
-
});
|
|
548
|
-
}
|
|
549
|
-
current = next;
|
|
550
|
-
stuckToFallback = true;
|
|
551
|
-
return next;
|
|
552
|
-
}
|
|
553
|
-
// 4. Nothing resolves.
|
|
554
|
-
return null;
|
|
555
|
-
};
|
|
556
|
-
}
|
|
557
|
-
//# sourceMappingURL=directory-bootstrap.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"directory-bootstrap.js","sourceRoot":"","sources":["../src/directory-bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* How this daemon reaches a directory, and what it tells a relay about itself when it gets there.
|
|
3
|
-
*
|
|
4
|
-
* The relay-witness connect parameters — who is asking, over which circuit, with which online token
|
|
5
|
-
* — and the default signaling connect that carries them. Also the single shared signaling manager,
|
|
6
|
-
* which exists ONLY on the in-process test path: in production every agent dials its own, because
|
|
7
|
-
* the directory routes by the pubkey that authenticated the stream.
|
|
8
|
-
*/
|
|
9
|
-
import { SignalingManager, type CelloNode } from "@cello-protocol/transport";
|
|
10
|
-
import type { KeyProvider } from "@cello-protocol/crypto";
|
|
11
|
-
import type { Logger } from "./types.js";
|
|
12
|
-
import type { DirectoryEndpoint } from "./signaling-connect.js";
|
|
13
|
-
import type { RelayConnectParams } from "./session-node-manager.js";
|
|
14
|
-
import { parseSessionAssignment } from "./session-assignment-parser.js";
|
|
15
|
-
export interface DirectoryConnectDeps {
|
|
16
|
-
logger: Logger;
|
|
17
|
-
keyProviders: Map<string, KeyProvider>;
|
|
18
|
-
/** Test seam. Its ABSENCE is what puts the daemon on the production per-agent path. */
|
|
19
|
-
signalingConnect: ConstructorParameters<typeof SignalingManager>[0]["connect"] | undefined;
|
|
20
|
-
directoryEndpointResolver: (() => Promise<DirectoryEndpoint | null>) | undefined;
|
|
21
|
-
}
|
|
22
|
-
export declare function createDirectoryConnect(deps: DirectoryConnectDeps): {
|
|
23
|
-
buildRelayConnectParams: (agentName: string, assignment: NonNullable<ReturnType<typeof parseSessionAssignment>>) => Promise<RelayConnectParams | undefined>;
|
|
24
|
-
noSharedDirectoryNode: () => CelloNode | null;
|
|
25
|
-
sharedSignaling: SignalingManager | undefined;
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=directory-connect.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"directory-connect.d.ts","sourceRoot":"","sources":["../src/directory-connect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAsB,MAAM,2BAA2B,CAAC;AACjG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,uFAAuF;IACvF,gBAAgB,EAAE,qBAAqB,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAC3F,yBAAyB,EAAE,CAAC,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CAClF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB;yCASlD,MAAM,cACL,WAAW,CAAC,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,KACjE,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;iCA6ER,SAAS,GAAG,IAAI;;EAgBnD"}
|