@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,502 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DB-backed identity store (the `agents` table).
|
|
3
|
-
*
|
|
4
|
-
* Every piece of an agent's persisted identity — the K_local Ed25519 seed, the ML-DSA keypair, the
|
|
5
|
-
* FROST signing share, the registration record, and the agent↔user link — lives as ONE row of the
|
|
6
|
-
* `agents` table in the SQLCipher-encrypted daemon DB. There is no flat-file home for any of it.
|
|
7
|
-
*
|
|
8
|
-
* `DbRegistrationPersistence` implements the `DaemonRegistrationPersistence` interface the daemon's
|
|
9
|
-
* RegistrationManager and the ceremony/seal signer-reconstruction consume. Writes are AWAITED
|
|
10
|
-
* single-row UPSERTs — never fire-and-forget — so a register-success implies a durably committed row.
|
|
11
|
-
*
|
|
12
|
-
* The K_local seed and FROST/ML-DSA secrets are stored as BLOB columns inside the encrypted DB; they
|
|
13
|
-
* are NEVER written to a flat file and NEVER logged. The row is the only home.
|
|
14
|
-
*/
|
|
15
|
-
import { randomUUID } from "node:crypto";
|
|
16
|
-
import { MONIKER_RE, validateMoniker } from "@cello-protocol/protocol-types";
|
|
17
|
-
import { checkChannelFacts } from "./registration-persistence.js";
|
|
18
|
-
const ML_DSA_ALGORITHM = "ML-DSA-44";
|
|
19
|
-
/**
|
|
20
|
-
* The `agents` schema. The store is keyed by a STABLE `agent_id`, never by `agent_name` — durable
|
|
21
|
-
* identity hangs off agent_id; the human name and the pubkey are mutable ATTRIBUTES. A partial unique
|
|
22
|
-
* index makes `agent_name` unique only among NON-retired rows, so removal (state='retired') frees the
|
|
23
|
-
* name for reuse while the retired identity survives for accountability.
|
|
24
|
-
* `state`: 'created' | 'registered' | 'retired'.
|
|
25
|
-
*/
|
|
26
|
-
const CREATE_AGENTS_SQL = `
|
|
27
|
-
CREATE TABLE IF NOT EXISTS agents (
|
|
28
|
-
agent_id TEXT PRIMARY KEY,
|
|
29
|
-
agent_name TEXT NOT NULL,
|
|
30
|
-
-- K_local Ed25519 identity: the seed lives ONLY in this BLOB, never on the filesystem.
|
|
31
|
-
k_local_seed BLOB NOT NULL,
|
|
32
|
-
k_local_pubkey TEXT NOT NULL,
|
|
33
|
-
-- lifecycle: 'created' (K_local exists, not yet registered) | 'registered' | 'retired'.
|
|
34
|
-
state TEXT NOT NULL DEFAULT 'created',
|
|
35
|
-
-- ML-DSA keypair.
|
|
36
|
-
ml_dsa_pubkey TEXT,
|
|
37
|
-
ml_dsa_secret BLOB,
|
|
38
|
-
ml_dsa_algorithm TEXT,
|
|
39
|
-
-- FROST signing share.
|
|
40
|
-
frost_epoch_id TEXT,
|
|
41
|
-
frost_primary_pubkey TEXT,
|
|
42
|
-
frost_identifier TEXT,
|
|
43
|
-
frost_signing_share BLOB,
|
|
44
|
-
frost_threshold INTEGER,
|
|
45
|
-
frost_participants INTEGER,
|
|
46
|
-
frost_commitments BLOB,
|
|
47
|
-
frost_verifying_shares BLOB,
|
|
48
|
-
frost_dkg_method TEXT,
|
|
49
|
-
-- JSON array of the directory nodeIds (Q) the DKG ran among, so a restored signer targets the
|
|
50
|
-
-- actual share-holders, not the full live roster. NULL for agents registered before quorum DKG.
|
|
51
|
-
frost_directory_node_ids TEXT,
|
|
52
|
-
-- Optional outbound-name override. The outbound name defaults to agent_name; this column only
|
|
53
|
-
-- holds an explicit override. Local-only — never sent to the directory.
|
|
54
|
-
moniker TEXT,
|
|
55
|
-
-- registration record.
|
|
56
|
-
reg_agent_id TEXT,
|
|
57
|
-
reg_primary_pubkey TEXT,
|
|
58
|
-
reg_ml_dsa_pubkey TEXT,
|
|
59
|
-
reg_registered_at INTEGER,
|
|
60
|
-
reg_status TEXT,
|
|
61
|
-
-- 038-KEYBIND: hex 64-byte Ed25519 signature by k_local_seed's public half over
|
|
62
|
-
-- (k_local_pubkey, reg_primary_pubkey). Minted once at the tail of registration — the only
|
|
63
|
-
-- moment both keys are on this machine together — and never re-derived by a second DKG.
|
|
64
|
-
reg_key_binding TEXT,
|
|
65
|
-
-- M16: 1 when this identity is a broadcast channel (publish-only, never converses), with the
|
|
66
|
-
-- hex pubkey of the agent that administers it. Written once, from the directory's echo at
|
|
67
|
-
-- registration; nothing updates either column afterwards.
|
|
68
|
-
channel INTEGER NOT NULL DEFAULT 0,
|
|
69
|
-
admin_pubkey TEXT NOT NULL DEFAULT '',
|
|
70
|
-
-- agent↔user link captured at registration.
|
|
71
|
-
link_agent_id TEXT,
|
|
72
|
-
link_pre_auth_token TEXT,
|
|
73
|
-
link_linked_at INTEGER,
|
|
74
|
-
created_at INTEGER NOT NULL,
|
|
75
|
-
updated_at INTEGER NOT NULL
|
|
76
|
-
)
|
|
77
|
-
`;
|
|
78
|
-
// A name is unique only among NON-retired agents — the DB-level backstop for "free the name on removal".
|
|
79
|
-
const CREATE_ACTIVE_NAME_INDEX_SQL = "CREATE UNIQUE INDEX IF NOT EXISTS agents_active_name ON agents(agent_name) WHERE state != 'retired'";
|
|
80
|
-
// The columns of the legacy `agents` table (agent_name PK, no agent_id), in order. Used to copy rows
|
|
81
|
-
// verbatim during the one-time re-key rebuild.
|
|
82
|
-
const PRE_REKEY_COLUMNS = [
|
|
83
|
-
"agent_name",
|
|
84
|
-
"k_local_seed",
|
|
85
|
-
"k_local_pubkey",
|
|
86
|
-
"state",
|
|
87
|
-
"ml_dsa_pubkey",
|
|
88
|
-
"ml_dsa_secret",
|
|
89
|
-
"ml_dsa_algorithm",
|
|
90
|
-
"frost_epoch_id",
|
|
91
|
-
"frost_primary_pubkey",
|
|
92
|
-
"frost_identifier",
|
|
93
|
-
"frost_signing_share",
|
|
94
|
-
"frost_threshold",
|
|
95
|
-
"frost_participants",
|
|
96
|
-
"frost_commitments",
|
|
97
|
-
"frost_verifying_shares",
|
|
98
|
-
"frost_dkg_method",
|
|
99
|
-
"reg_agent_id",
|
|
100
|
-
"reg_primary_pubkey",
|
|
101
|
-
"reg_ml_dsa_pubkey",
|
|
102
|
-
"reg_registered_at",
|
|
103
|
-
"reg_status",
|
|
104
|
-
"link_agent_id",
|
|
105
|
-
"link_pre_auth_token",
|
|
106
|
-
"link_linked_at",
|
|
107
|
-
"created_at",
|
|
108
|
-
"updated_at",
|
|
109
|
-
];
|
|
110
|
-
/**
|
|
111
|
-
* One-time re-key of a legacy `agents` table (PRIMARY KEY agent_name, no agent_id) to the stable
|
|
112
|
-
* agent_id shape. Rebuilds the table, backfilling a fresh agent_id per existing row. Runs at most once
|
|
113
|
-
* — `ensureIdentitySchema` guards it behind a column-presence check — and is wrapped in a transaction
|
|
114
|
-
* so a crash mid-rebuild leaves the original table intact. Works on node:sqlite (in-memory test
|
|
115
|
-
* handles) and SQLCipher alike.
|
|
116
|
-
*/
|
|
117
|
-
function rebuildAgentsToAgentIdPk(db) {
|
|
118
|
-
const cols = PRE_REKEY_COLUMNS.join(", ");
|
|
119
|
-
db.exec("BEGIN");
|
|
120
|
-
try {
|
|
121
|
-
db.exec("ALTER TABLE agents RENAME TO agents_pre_rekey");
|
|
122
|
-
db.exec(CREATE_AGENTS_SQL);
|
|
123
|
-
db.exec(`INSERT INTO agents (agent_id, ${cols})
|
|
124
|
-
SELECT lower(hex(randomblob(16))), ${cols} FROM agents_pre_rekey`);
|
|
125
|
-
db.exec("DROP TABLE agents_pre_rekey");
|
|
126
|
-
db.exec("COMMIT");
|
|
127
|
-
}
|
|
128
|
-
catch (err) {
|
|
129
|
-
try {
|
|
130
|
-
db.exec("ROLLBACK");
|
|
131
|
-
}
|
|
132
|
-
catch { /* the failing statement may have already aborted the txn */ }
|
|
133
|
-
throw err;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Idempotent schema for the identity store. Called once at daemon init AND defensively by each
|
|
138
|
-
* DbRegistrationPersistence constructor, so the store works whether or not the composition root has
|
|
139
|
-
* run its own ensure. Creates the table on a fresh DB, re-keys a legacy table to the stable agent_id
|
|
140
|
-
* shape once, and (always) ensures the active-name partial unique index.
|
|
141
|
-
*/
|
|
142
|
-
export function ensureIdentitySchema(db) {
|
|
143
|
-
const cols = db.prepare("PRAGMA table_info(agents)").all();
|
|
144
|
-
if (cols.length === 0) {
|
|
145
|
-
db.exec(CREATE_AGENTS_SQL);
|
|
146
|
-
}
|
|
147
|
-
else if (!cols.some((c) => c.name === "agent_id")) {
|
|
148
|
-
// A legacy table exists (agent_name PK). Re-key it once to the stable agent_id shape.
|
|
149
|
-
rebuildAgentsToAgentIdPk(db);
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
// Additive columns on an existing agent_id table (fresh/rebuilt tables already have them via
|
|
153
|
-
// CREATE_AGENTS_SQL). SQLite has no ADD COLUMN IF NOT EXISTS, so each is PRAGMA-guarded — and
|
|
154
|
-
// each guard is an INDEPENDENT `if`: a table missing several must receive every ALTER.
|
|
155
|
-
if (!cols.some((c) => c.name === "frost_directory_node_ids")) {
|
|
156
|
-
// Nullable → agents predating quorum DKG keep the full-roster fallback; no data touched.
|
|
157
|
-
db.exec("ALTER TABLE agents ADD COLUMN frost_directory_node_ids TEXT");
|
|
158
|
-
}
|
|
159
|
-
if (!cols.some((c) => c.name === "moniker")) {
|
|
160
|
-
// Outbound-name override. Nullable → existing agents keep the agent-name default.
|
|
161
|
-
db.exec("ALTER TABLE agents ADD COLUMN moniker TEXT");
|
|
162
|
-
}
|
|
163
|
-
if (!cols.some((c) => c.name === "reg_key_binding")) {
|
|
164
|
-
// 038-KEYBIND. Nullable, because an operator's existing row cannot grow a signature by a
|
|
165
|
-
// migration — the value is minted by the daemon holding the seed, on the next registration.
|
|
166
|
-
//
|
|
167
|
-
// A null here has no local consequence and nothing detects it: this column is written and
|
|
168
|
-
// read by nothing yet (see `RegistrationStateRecord.keyBinding`). What makes a pre-038 agent
|
|
169
|
-
// unusable is the DIRECTORY-side profile having no binding, which both clients refuse an
|
|
170
|
-
// assignment over — and the remedy for that is the same re-registration that fills this in.
|
|
171
|
-
db.exec("ALTER TABLE agents ADD COLUMN reg_key_binding TEXT");
|
|
172
|
-
}
|
|
173
|
-
if (!cols.some((c) => c.name === "channel")) {
|
|
174
|
-
// M16: every existing row is an ordinary agent — channels did not exist before this column.
|
|
175
|
-
db.exec("ALTER TABLE agents ADD COLUMN channel INTEGER NOT NULL DEFAULT 0");
|
|
176
|
-
}
|
|
177
|
-
if (!cols.some((c) => c.name === "admin_pubkey")) {
|
|
178
|
-
db.exec("ALTER TABLE agents ADD COLUMN admin_pubkey TEXT NOT NULL DEFAULT ''");
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
db.exec(CREATE_ACTIVE_NAME_INDEX_SQL);
|
|
182
|
-
// M10-D18: DROP the M8 `trust_signals` scaffold. It held canonical-JSON records keyed by a RAW hash;
|
|
183
|
-
// M10 wallet signals are canonical CBOR envelopes in `wallet_trust_signals` (TrustSignalStore),
|
|
184
|
-
// re-derived via deliverWalletSignal. The M8 shape can't migrate (different hash + format) and is
|
|
185
|
-
// re-mintable (D1), so the scaffold is dropped, not converted. IF EXISTS + no FK children → safe and
|
|
186
|
-
// idempotent on both fresh and existing operator DBs. This is the forcing-function drop that MINT-
|
|
187
|
-
// INTERNAL-1 owes; a test asserts the table is GONE.
|
|
188
|
-
db.exec("DROP TABLE IF EXISTS trust_signals");
|
|
189
|
-
}
|
|
190
|
-
const toBuf = (b) => Buffer.from(b);
|
|
191
|
-
const toBytes = (v) => v instanceof Uint8Array ? new Uint8Array(v) : Buffer.isBuffer(v) ? new Uint8Array(v) : new Uint8Array(0);
|
|
192
|
-
export class DbIdentityStore {
|
|
193
|
-
#db;
|
|
194
|
-
#logger;
|
|
195
|
-
constructor(db, logger) {
|
|
196
|
-
this.#db = db;
|
|
197
|
-
this.#logger = logger;
|
|
198
|
-
ensureIdentitySchema(db);
|
|
199
|
-
}
|
|
200
|
-
// M10-D18: `storeTrustSignal` / `getTrustSignal` (the M8 `trust_signals` writer + reader) are RETIRED.
|
|
201
|
-
// A received wallet signal is now a canonical CBOR envelope, re-verified and stored in
|
|
202
|
-
// `wallet_trust_signals` by `TrustSignalStore.deliverWalletSignal` (inbound-sessions). The M8 table is
|
|
203
|
-
// dropped in `ensureIdentitySchema` above.
|
|
204
|
-
/** True if an ACTIVE (non-retired) agent row with this name exists — the create-collision check. */
|
|
205
|
-
hasActiveAgent(agentName) {
|
|
206
|
-
const row = this.#db
|
|
207
|
-
.prepare("SELECT 1 AS one FROM agents WHERE agent_name = ? AND state != 'retired'")
|
|
208
|
-
.get(agentName);
|
|
209
|
-
return row !== undefined;
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Create a new agent row holding a fresh K_local seed, keyed by a freshly-minted stable agent_id.
|
|
213
|
-
* Explicit only — callers generate the seed (crypto) and pass it in. Throws if an ACTIVE agent
|
|
214
|
-
* already holds the name (no silent overwrite); a RETIRED row with the same name does NOT block —
|
|
215
|
-
* the name has been freed. Returns the new agent_id.
|
|
216
|
-
*/
|
|
217
|
-
createAgent(agentName, kLocalSeed, kLocalPubkeyHex) {
|
|
218
|
-
if (this.hasActiveAgent(agentName)) {
|
|
219
|
-
throw new Error(`agent '${agentName}' already exists`);
|
|
220
|
-
}
|
|
221
|
-
const agentId = randomUUID();
|
|
222
|
-
const now = Date.now();
|
|
223
|
-
this.#db
|
|
224
|
-
.prepare(`INSERT INTO agents (agent_id, agent_name, k_local_seed, k_local_pubkey, state, created_at, updated_at)
|
|
225
|
-
VALUES (?, ?, ?, ?, 'created', ?, ?)`)
|
|
226
|
-
.run(agentId, agentName, toBuf(kLocalSeed), kLocalPubkeyHex, now, now);
|
|
227
|
-
// The seed is NEVER logged — only the agent name, the agent_id, and the PUBLIC key.
|
|
228
|
-
this.#logger.info("persist.identity.created", { agentName, agentId, agentPubkey: kLocalPubkeyHex });
|
|
229
|
-
return agentId;
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Retire: flip the ACTIVE row for `agentName` to state='retired' WITHOUT deleting the row, its keys,
|
|
233
|
-
* or its history — accountability must survive a removal. One-way. The name is freed (the partial
|
|
234
|
-
* unique index excludes retired rows). Returns the retired agent_id, or null if there was no active
|
|
235
|
-
* agent with that name (fail-loud at the caller).
|
|
236
|
-
*/
|
|
237
|
-
retireAgent(agentName) {
|
|
238
|
-
const active = this.#db
|
|
239
|
-
.prepare("SELECT agent_id FROM agents WHERE agent_name = ? AND state != 'retired'")
|
|
240
|
-
.get(agentName);
|
|
241
|
-
if (!active)
|
|
242
|
-
return null;
|
|
243
|
-
const res = this.#db
|
|
244
|
-
.prepare("UPDATE agents SET state = 'retired', updated_at = ? WHERE agent_id = ?")
|
|
245
|
-
.run(Date.now(), active.agent_id);
|
|
246
|
-
if (Number(res.changes) === 0)
|
|
247
|
-
return null;
|
|
248
|
-
return active.agent_id;
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Read the row to act on for a removal / directory-revocation re-push: the ACTIVE row for the name if
|
|
252
|
-
* one exists (a fresh removal), else the MOST-RECENTLY-retired row (a re-push of an already-retired
|
|
253
|
-
* agent whose directory revocation did not land). Includes the
|
|
254
|
-
* K_local seed (to re-sign the revocation) and the DIRECTORY-known reg_agent_id (what the directory is
|
|
255
|
-
* asked to revoke; null if the agent was never registered). Returns null if no row with this name
|
|
256
|
-
* exists at all.
|
|
257
|
-
*/
|
|
258
|
-
getAgentForRevocation(agentName) {
|
|
259
|
-
const r = this.#db
|
|
260
|
-
.prepare(`SELECT agent_id, reg_agent_id, k_local_seed, state FROM agents WHERE agent_name = ?
|
|
261
|
-
ORDER BY (state != 'retired') DESC, updated_at DESC LIMIT 1`)
|
|
262
|
-
.get(agentName);
|
|
263
|
-
if (!r)
|
|
264
|
-
return null;
|
|
265
|
-
return {
|
|
266
|
-
localAgentId: r.agent_id,
|
|
267
|
-
regAgentId: r.reg_agent_id ?? null,
|
|
268
|
-
kLocalSeed: toBytes(r.k_local_seed),
|
|
269
|
-
state: r.state,
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Enumerate ACTIVE agents (agent_id + name + seed + pubkey + state) for the daemon's startup loader.
|
|
274
|
-
* Retired rows are EXCLUDED — they must never be resurrected into the runtime — but remain in the DB
|
|
275
|
-
* and are readable directly for accountability.
|
|
276
|
-
*/
|
|
277
|
-
listAgents() {
|
|
278
|
-
const rows = this.#db
|
|
279
|
-
.prepare("SELECT agent_id, agent_name, k_local_seed, k_local_pubkey, state, channel, admin_pubkey FROM agents WHERE state != 'retired' ORDER BY agent_name ASC")
|
|
280
|
-
.all();
|
|
281
|
-
return rows.map((r) => ({
|
|
282
|
-
agentId: r.agent_id,
|
|
283
|
-
agentName: r.agent_name,
|
|
284
|
-
kLocalSeed: toBytes(r.k_local_seed),
|
|
285
|
-
kLocalPubkey: r.k_local_pubkey,
|
|
286
|
-
state: r.state,
|
|
287
|
-
channel: Number(r.channel) === 1,
|
|
288
|
-
adminPubkey: r.admin_pubkey,
|
|
289
|
-
}));
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* M16: is the ACTIVE agent with this name a broadcast channel? False for an unknown agent: an
|
|
293
|
-
* unknown agent is not a channel, and it is refused by the gates that require an agent at all.
|
|
294
|
-
*/
|
|
295
|
-
isChannelAgent(agentName) {
|
|
296
|
-
const row = this.#db
|
|
297
|
-
.prepare("SELECT channel FROM agents WHERE agent_name = ? AND state != 'retired'")
|
|
298
|
-
.get(agentName);
|
|
299
|
-
return row !== undefined && Number(row.channel) === 1;
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* Set (or clear, via null) the outbound-name override on the ACTIVE row.
|
|
303
|
-
* Returns false when no active agent holds the name (fail-loud at the caller — never a silent
|
|
304
|
-
* no-op success). THROWS on an invalid moniker: callers validate first for a friendly error;
|
|
305
|
-
* this is the backstop that makes "an invalid value can never be stored" true at the lowest layer.
|
|
306
|
-
*/
|
|
307
|
-
setMoniker(agentName, moniker) {
|
|
308
|
-
if (moniker !== null && validateMoniker(moniker) === null) {
|
|
309
|
-
throw new Error(`invalid moniker for agent '${agentName}': must match ${MONIKER_RE.source}`);
|
|
310
|
-
}
|
|
311
|
-
const res = this.#db
|
|
312
|
-
.prepare("UPDATE agents SET moniker = ?, updated_at = ? WHERE agent_name = ? AND state != 'retired'")
|
|
313
|
-
.run(moniker, Date.now(), agentName);
|
|
314
|
-
return Number(res.changes) > 0;
|
|
315
|
-
}
|
|
316
|
-
/** The stored override for the ACTIVE agent, or null (no override / no such agent). */
|
|
317
|
-
getMoniker(agentName) {
|
|
318
|
-
const row = this.#db
|
|
319
|
-
.prepare("SELECT moniker FROM agents WHERE agent_name = ? AND state != 'retired'")
|
|
320
|
-
.get(agentName);
|
|
321
|
-
return row?.moniker ?? null;
|
|
322
|
-
}
|
|
323
|
-
/**
|
|
324
|
-
* The agent's outbound name — the override when set, else the agent name itself.
|
|
325
|
-
* There is no separate "self-moniker" concept; the default is valid by construction (the agent
|
|
326
|
-
* name already satisfies MONIKER_RE at creation). Null only when no active agent holds the name.
|
|
327
|
-
*/
|
|
328
|
-
getOutboundName(agentName) {
|
|
329
|
-
const row = this.#db
|
|
330
|
-
.prepare("SELECT agent_name, moniker FROM agents WHERE agent_name = ? AND state != 'retired'")
|
|
331
|
-
.get(agentName);
|
|
332
|
-
if (!row)
|
|
333
|
-
return null;
|
|
334
|
-
return row.moniker ?? row.agent_name;
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* M16: the "is this local agent a broadcast channel?" accessor, bound to the daemon's DB, for the
|
|
339
|
-
* session openers and the inbound-assignment path. Each call reads the agent's row, so a channel
|
|
340
|
-
* registered after startup is covered without a restart. Lives here rather than in the composition
|
|
341
|
-
* root so `daemon.ts` does not grow.
|
|
342
|
-
*/
|
|
343
|
-
export function channelAgentLookup(sessionNodeManager, logger) {
|
|
344
|
-
return (agentName) => new DbIdentityStore(sessionNodeManager.getDb(), logger).isChannelAgent(agentName);
|
|
345
|
-
}
|
|
346
|
-
/**
|
|
347
|
-
* DB-backed `DaemonRegistrationPersistence`. Scoped to a single agent's row. All persist operations
|
|
348
|
-
* are single-row UPSERTs that update the named agent's row; a register-success therefore implies the
|
|
349
|
-
* material is durably committed. A persist against a non-existent agent throws — the row is created by
|
|
350
|
-
* the agent-creation path before registration runs.
|
|
351
|
-
*/
|
|
352
|
-
export class DbRegistrationPersistence {
|
|
353
|
-
#db;
|
|
354
|
-
#agentName;
|
|
355
|
-
#logger;
|
|
356
|
-
constructor(opts) {
|
|
357
|
-
this.#db = opts.db;
|
|
358
|
-
this.#agentName = opts.agentName;
|
|
359
|
-
this.#logger = opts.logger;
|
|
360
|
-
ensureIdentitySchema(opts.db);
|
|
361
|
-
}
|
|
362
|
-
#updateRow(setClause, params) {
|
|
363
|
-
const now = Date.now();
|
|
364
|
-
// Target the ACTIVE row for this name. After name reuse a retired row and a new active
|
|
365
|
-
// row can share a name; the partial unique index guarantees at most one active row, so this is
|
|
366
|
-
// unambiguous. A retired identity's registration material is never mutated.
|
|
367
|
-
const res = this.#db
|
|
368
|
-
.prepare(`UPDATE agents SET ${setClause}, updated_at = ? WHERE agent_name = ? AND state != 'retired'`)
|
|
369
|
-
.run(...params, now, this.#agentName);
|
|
370
|
-
if (Number(res.changes) === 0) {
|
|
371
|
-
// The agent row must exist (created by the agent-creation path before registration). A missing
|
|
372
|
-
// row is a real fault, not something to paper over — FAIL LOUD so registration fails.
|
|
373
|
-
throw new Error(`identity_persist_failed: no agent row for '${this.#agentName}'`);
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
async persistMlDsaKeypair(opts) {
|
|
377
|
-
// secretKeyBlob is written to the encrypted DB only — never logged.
|
|
378
|
-
this.#updateRow("ml_dsa_pubkey = ?, ml_dsa_secret = ?, ml_dsa_algorithm = ?", [
|
|
379
|
-
opts.mlDsaPubkey,
|
|
380
|
-
toBuf(opts.secretKeyBlob),
|
|
381
|
-
ML_DSA_ALGORITHM,
|
|
382
|
-
]);
|
|
383
|
-
this.#logger.info("registration.mldsa.persisted", { mlDsaPubkey: opts.mlDsaPubkey });
|
|
384
|
-
}
|
|
385
|
-
async persistRegistrationState(opts) {
|
|
386
|
-
const { channel, adminPubkey } = checkChannelFacts(opts, await this.loadRegistrationState());
|
|
387
|
-
this.#updateRow("reg_agent_id = ?, reg_primary_pubkey = ?, reg_ml_dsa_pubkey = ?, reg_registered_at = ?, reg_key_binding = ?, channel = ?, admin_pubkey = ?, reg_status = 'active', state = 'registered'", [
|
|
388
|
-
opts.agentId, opts.primaryPubkey, opts.mlDsaPubkey, opts.registeredAt, opts.keyBinding,
|
|
389
|
-
channel ? 1 : 0, adminPubkey,
|
|
390
|
-
]);
|
|
391
|
-
this.#logger.info("registration.state.persisted", {
|
|
392
|
-
agentId: opts.agentId,
|
|
393
|
-
primaryPubkey: opts.primaryPubkey,
|
|
394
|
-
});
|
|
395
|
-
}
|
|
396
|
-
async persistFrostKeyShare(opts) {
|
|
397
|
-
// signingShare is written to the encrypted DB only — never logged.
|
|
398
|
-
this.#updateRow(`frost_epoch_id = ?, frost_primary_pubkey = ?, frost_identifier = ?, frost_signing_share = ?,
|
|
399
|
-
frost_threshold = ?, frost_participants = ?, frost_commitments = ?, frost_verifying_shares = ?,
|
|
400
|
-
frost_dkg_method = ?, frost_directory_node_ids = ?`, [
|
|
401
|
-
opts.epochId,
|
|
402
|
-
opts.primaryPubkey,
|
|
403
|
-
opts.identifier,
|
|
404
|
-
toBuf(opts.signingShare),
|
|
405
|
-
opts.threshold,
|
|
406
|
-
opts.participants,
|
|
407
|
-
toBuf(opts.commitmentsCbor),
|
|
408
|
-
toBuf(opts.verifyingSharesCbor),
|
|
409
|
-
opts.dkgMethod,
|
|
410
|
-
opts.directoryNodeIds ? JSON.stringify(opts.directoryNodeIds) : null,
|
|
411
|
-
]);
|
|
412
|
-
this.#logger.info("registration.frost.share.persisted", {
|
|
413
|
-
epochId: opts.epochId,
|
|
414
|
-
threshold: opts.threshold,
|
|
415
|
-
participants: opts.participants,
|
|
416
|
-
dkgMethod: opts.dkgMethod,
|
|
417
|
-
});
|
|
418
|
-
}
|
|
419
|
-
async persistAgentUserLink(opts) {
|
|
420
|
-
// The preAuthToken is a bearer ticket — written to the encrypted DB only, never logged.
|
|
421
|
-
this.#updateRow("link_agent_id = ?, link_pre_auth_token = ?, link_linked_at = ?", [
|
|
422
|
-
opts.agentId,
|
|
423
|
-
opts.preAuthToken,
|
|
424
|
-
opts.linkedAt,
|
|
425
|
-
]);
|
|
426
|
-
this.#logger.info("registration.user_link.persisted", { agentId: opts.agentId });
|
|
427
|
-
}
|
|
428
|
-
// ─── Load (restart rehydration) ──────────────────────────────────────────────
|
|
429
|
-
#row() {
|
|
430
|
-
// Load the ACTIVE row for this name (never a retired tombstone).
|
|
431
|
-
return this.#db.prepare("SELECT * FROM agents WHERE agent_name = ? AND state != 'retired'").get(this.#agentName);
|
|
432
|
-
}
|
|
433
|
-
async loadRegistrationState() {
|
|
434
|
-
const r = this.#row();
|
|
435
|
-
if (!r || r["reg_agent_id"] == null)
|
|
436
|
-
return null;
|
|
437
|
-
return {
|
|
438
|
-
agentId: String(r["reg_agent_id"]),
|
|
439
|
-
primaryPubkey: String(r["reg_primary_pubkey"]),
|
|
440
|
-
mlDsaPubkey: String(r["reg_ml_dsa_pubkey"]),
|
|
441
|
-
registeredAt: Number(r["reg_registered_at"]),
|
|
442
|
-
status: String(r["reg_status"]),
|
|
443
|
-
// 038-KEYBIND: null for a row written before this column existed. `String(null)` would hand
|
|
444
|
-
// callers the four characters "null" as if they were a signature, which is why this is a
|
|
445
|
-
// typeof check and not the String() every field above uses.
|
|
446
|
-
keyBinding: typeof r["reg_key_binding"] === "string" ? r["reg_key_binding"] : null,
|
|
447
|
-
channel: Number(r["channel"]) === 1,
|
|
448
|
-
adminPubkey: typeof r["admin_pubkey"] === "string" ? r["admin_pubkey"] : "",
|
|
449
|
-
};
|
|
450
|
-
}
|
|
451
|
-
async loadMlDsaKeypair() {
|
|
452
|
-
const r = this.#row();
|
|
453
|
-
if (!r || r["ml_dsa_secret"] == null)
|
|
454
|
-
return null;
|
|
455
|
-
return {
|
|
456
|
-
mlDsaPubkey: String(r["ml_dsa_pubkey"]),
|
|
457
|
-
secretKeyBlob: toBytes(r["ml_dsa_secret"]),
|
|
458
|
-
algorithm: String(r["ml_dsa_algorithm"]),
|
|
459
|
-
};
|
|
460
|
-
}
|
|
461
|
-
async loadActiveFrostKeyShare() {
|
|
462
|
-
const r = this.#row();
|
|
463
|
-
if (!r || r["frost_signing_share"] == null)
|
|
464
|
-
return null;
|
|
465
|
-
// The DKG's quorum Q (nodeIds). NULL → undefined → the seal falls back to the full roster.
|
|
466
|
-
// Defensive parse: malformed data must not break share loading.
|
|
467
|
-
let directoryNodeIds;
|
|
468
|
-
const rawIds = r["frost_directory_node_ids"];
|
|
469
|
-
if (rawIds != null) {
|
|
470
|
-
try {
|
|
471
|
-
const parsed = JSON.parse(String(rawIds));
|
|
472
|
-
if (Array.isArray(parsed) && parsed.every((x) => typeof x === "string")) {
|
|
473
|
-
directoryNodeIds = parsed;
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
catch { /* malformed → full-roster fallback */ }
|
|
477
|
-
}
|
|
478
|
-
return {
|
|
479
|
-
epochId: String(r["frost_epoch_id"]),
|
|
480
|
-
primaryPubkey: String(r["frost_primary_pubkey"]),
|
|
481
|
-
identifier: String(r["frost_identifier"]),
|
|
482
|
-
signingShare: toBytes(r["frost_signing_share"]),
|
|
483
|
-
threshold: Number(r["frost_threshold"]),
|
|
484
|
-
participants: Number(r["frost_participants"]),
|
|
485
|
-
commitmentsCbor: toBytes(r["frost_commitments"]),
|
|
486
|
-
verifyingSharesCbor: toBytes(r["frost_verifying_shares"]),
|
|
487
|
-
dkgMethod: String(r["frost_dkg_method"]),
|
|
488
|
-
directoryNodeIds,
|
|
489
|
-
};
|
|
490
|
-
}
|
|
491
|
-
async loadAgentUserLink() {
|
|
492
|
-
const r = this.#row();
|
|
493
|
-
if (!r || r["link_agent_id"] == null)
|
|
494
|
-
return null;
|
|
495
|
-
return {
|
|
496
|
-
agentId: String(r["link_agent_id"]),
|
|
497
|
-
preAuthToken: String(r["link_pre_auth_token"]),
|
|
498
|
-
linkedAt: Number(r["link_linked_at"]),
|
|
499
|
-
};
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
//# sourceMappingURL=db-identity-store.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"db-identity-store.js","sourceRoot":"","sources":["../src/db-identity-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AASlE,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDzB,CAAC;AAEF,yGAAyG;AACzG,MAAM,4BAA4B,GAChC,qGAAqG,CAAC;AAExG,qGAAqG;AACrG,+CAA+C;AAC/C,MAAM,iBAAiB,GAAG;IACxB,YAAY;IACZ,cAAc;IACd,gBAAgB;IAChB,OAAO;IACP,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,sBAAsB;IACtB,kBAAkB;IAClB,qBAAqB;IACrB,iBAAiB;IACjB,oBAAoB;IACpB,mBAAmB;IACnB,wBAAwB;IACxB,kBAAkB;IAClB,cAAc;IACd,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,YAAY;IACZ,eAAe;IACf,qBAAqB;IACrB,gBAAgB;IAChB,YAAY;IACZ,YAAY;CACJ,CAAC;AAEX;;;;;;GAMG;AACH,SAAS,wBAAwB,CAAC,EAAkB;IAClD,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QACzD,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3B,EAAE,CAAC,IAAI,CACL,iCAAiC,IAAI;4CACC,IAAI,wBAAwB,CACnE,CAAC;QACF,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACvC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,4DAA4D,CAAC,CAAC;QACnG,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAkB;IACrD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,GAAG,EAA6B,CAAC;IACtF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QACpD,sFAAsF;QACtF,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,6FAA6F;QAC7F,8FAA8F;QAC9F,uFAAuF;QACvF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,0BAA0B,CAAC,EAAE,CAAC;YAC7D,yFAAyF;YACzF,EAAE,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;YAC5C,kFAAkF;YAClF,EAAE,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,EAAE,CAAC;YACpD,yFAAyF;YACzF,4FAA4F;YAC5F,EAAE;YACF,0FAA0F;YAC1F,6FAA6F;YAC7F,yFAAyF;YACzF,4FAA4F;YAC5F,EAAE,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;YAC5C,4FAA4F;YAC5F,EAAE,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,CAAC;YACjD,EAAE,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IACD,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtC,qGAAqG;IACrG,gGAAgG;IAChG,kGAAkG;IAClG,qGAAqG;IACrG,mGAAmG;IACnG,qDAAqD;IACrD,EAAE,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,CAAa,EAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxD,MAAM,OAAO,GAAG,CAAC,CAAU,EAAc,EAAE,CACzC,CAAC,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAmB3G,MAAM,OAAO,eAAe;IACjB,GAAG,CAAiB;IACpB,OAAO,CAAS;IAEzB,YAAY,EAAkB,EAAE,MAAc;QAC5C,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,uGAAuG;IACvG,uFAAuF;IACvF,uGAAuG;IACvG,2CAA2C;IAE3C,oGAAoG;IACpG,cAAc,CAAC,SAAiB;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;aACjB,OAAO,CAAC,yEAAyE,CAAC;aAClF,GAAG,CAAC,SAAS,CAAgC,CAAC;QACjD,OAAO,GAAG,KAAK,SAAS,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,SAAiB,EAAE,UAAsB,EAAE,eAAuB;QAC5E,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,kBAAkB,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG;aACL,OAAO,CACN;8CACsC,CACvC;aACA,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACzE,oFAAoF;QACpF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;QACpG,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,SAAiB;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG;aACpB,OAAO,CAAC,yEAAyE,CAAC;aAClF,GAAG,CAAC,SAAS,CAAqC,CAAC;QACtD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;aACjB,OAAO,CAAC,wEAAwE,CAAC;aACjF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;;;;OAOG;IACH,qBAAqB,CACnB,SAAiB;QAEjB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG;aACf,OAAO,CACN;qEAC6D,CAC9D;aACA,GAAG,CAAC,SAAS,CAAwG,CAAC;QACzH,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpB,OAAO;YACL,YAAY,EAAE,CAAC,CAAC,QAAQ;YACxB,UAAU,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;YAClC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;YACnC,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG;aAClB,OAAO,CACN,sJAAsJ,CACvJ;aACA,GAAG,EAGF,CAAC;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtB,OAAO,EAAE,CAAC,CAAC,QAAQ;YACnB,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;YACnC,YAAY,EAAE,CAAC,CAAC,cAAc;YAC9B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;YAChC,WAAW,EAAE,CAAC,CAAC,YAAY;SAC5B,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,SAAiB;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;aACjB,OAAO,CAAC,wEAAwE,CAAC;aACjF,GAAG,CAAC,SAAS,CAA6C,CAAC;QAC9D,OAAO,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,SAAiB,EAAE,OAAsB;QAClD,IAAI,OAAO,KAAK,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,iBAAiB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;aACjB,OAAO,CAAC,2FAA2F,CAAC;aACpG,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;QACvC,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,uFAAuF;IACvF,UAAU,CAAC,SAAiB;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;aACjB,OAAO,CAAC,wEAAwE,CAAC;aACjF,GAAG,CAAC,SAAS,CAA2C,CAAC;QAC5D,OAAO,GAAG,EAAE,OAAO,IAAI,IAAI,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,SAAiB;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;aACjB,OAAO,CAAC,oFAAoF,CAAC;aAC7F,GAAG,CAAC,SAAS,CAA+D,CAAC;QAChF,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC;IACvC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,kBAA+C,EAC/C,MAAc;IAEd,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC1G,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,yBAAyB;IAC3B,GAAG,CAAiB;IACpB,UAAU,CAAS;IACnB,OAAO,CAAS;IAEzB,YAAY,IAA+D;QACzE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,SAAiB,EAAE,MAAiB;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,uFAAuF;QACvF,+FAA+F;QAC/F,4EAA4E;QAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;aACjB,OAAO,CAAC,qBAAqB,SAAS,8DAA8D,CAAC;aACrG,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,+FAA+F;YAC/F,sFAAsF;YACtF,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAwD;QAChF,oEAAoE;QACpE,IAAI,CAAC,UAAU,CAAC,4DAA4D,EAAE;YAC5E,IAAI,CAAC,WAAW;YAChB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;YACzB,gBAAgB;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,IAQ9B;QACC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC7F,IAAI,CAAC,UAAU,CACb,yLAAyL,EACzL;YACE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU;YACtF,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW;SAC7B,CACF,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE;YAChD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAY1B;QACC,mEAAmE;QACnE,IAAI,CAAC,UAAU,CACb;;0DAEoD,EACpD;YACE,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,UAAU;YACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;YACxB,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,YAAY;YACjB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC/B,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI;SACrE,CACF,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE;YACtD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAiE;QAC1F,wFAAwF;QACxF,IAAI,CAAC,UAAU,CAAC,gEAAgE,EAAE;YAChF,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,QAAQ;SACd,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,gFAAgF;IAEhF,IAAI;QACF,iEAAiE;QACjE,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,kEAAkE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAElG,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACjD,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAClC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;YAC9C,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;YAC3C,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;YAC5C,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YAC/B,4FAA4F;YAC5F,yFAAyF;YACzF,4DAA4D;YAC5D,UAAU,EAAE,OAAO,CAAC,CAAC,iBAAiB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI;YAClF,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;YACnC,WAAW,EAAE,OAAO,CAAC,CAAC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE;SAC5E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAClD,OAAO;YACL,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YACvC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YAC1C,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;SACzC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACxD,2FAA2F;QAC3F,gEAAgE;QAChE,IAAI,gBAAsC,CAAC;QAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,0BAA0B,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAY,CAAC;gBACrD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;oBACxE,gBAAgB,GAAG,MAAkB,CAAC;gBACxC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,sCAAsC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;YACpC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;YAChD,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;YACzC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;YAC/C,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;YACvC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;YAC7C,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;YAChD,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;YACzD,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;YACxC,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAClD,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YACnC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;YAC9C,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;SACtC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DOD-M12B-DELIVERY-QUIET-1 — which sessions this daemon's DOCUMENT DELIVERY worker is opening.
|
|
3
|
-
*
|
|
4
|
-
* ── THE LOOP THIS EXISTS TO BREAK ────────────────────────────────────────────────────────────────
|
|
5
|
-
*
|
|
6
|
-
* Two reachability triggers fire when a session comes up, and both are correct when a PEER caused
|
|
7
|
-
* the session:
|
|
8
|
-
*
|
|
9
|
-
* 1. The initiator half — `onSessionOpened` in `initiate-session-handler.ts`, fired by the side
|
|
10
|
-
* that dialled.
|
|
11
|
-
* 2. The inbound half — `dispatchSessionStateChangedWithTelegram` on `state === "created"`,
|
|
12
|
-
* fired by the side that accepted, which ALSO rings the conversation doorbell and pushes a
|
|
13
|
-
* Telegram notification.
|
|
14
|
-
*
|
|
15
|
-
* Either one calls `ReconcileScheduler.onReachable`, and that is not a nudge: it sets
|
|
16
|
-
* `failures = 0` and `nextAttemptMs = 0` and sweeps every shared document immediately. The stated
|
|
17
|
-
* rationale is sound — "the backoff modeled 'they do not answer', and here they demonstrably just
|
|
18
|
-
* did" (SYNC-P5 R39 trigger 2) — but it is only sound when the peer caused the session.
|
|
19
|
-
*
|
|
20
|
-
* When the DELIVERY WORKER opened it, the "signal" is our own outbound act reflected back at us. We
|
|
21
|
-
* learn nothing about the peer, and we wipe a backoff that a refusal — possibly that same peer's
|
|
22
|
-
* refusal, seconds earlier — had just set. Then:
|
|
23
|
-
*
|
|
24
|
-
* the sweep needs a session → it opens one → creation fires the trigger → the trigger zeroes the
|
|
25
|
-
* backoff and sweeps every document → the sweep needs sessions → …
|
|
26
|
-
*
|
|
27
|
-
* Measured 2026-08-17: 321 reconcile attempts in 85 minutes driving 53 sessions and 63 standing-
|
|
28
|
-
* receiver rebuilds. After `DOD-SYNC-REFUSAL-BACKOFF-1` removed the refusal storm, still 55
|
|
29
|
-
* attempts in 20 minutes with 0 refusals — the volume that fix did not reach is this trigger.
|
|
30
|
-
*
|
|
31
|
-
* ── WHY AN INTENT, KEYED ON THE PEER, AND NOT A SESSION ID ───────────────────────────────────────
|
|
32
|
-
*
|
|
33
|
-
* The obvious design is to record the session id the delivery worker opened. It does not work: the
|
|
34
|
-
* id is minted by the DIRECTORY and only reaches the opener at the end of negotiation, whereas the
|
|
35
|
-
* directory has already pushed the assignment to the counterparty — which, when both agents live on
|
|
36
|
-
* one daemon (the measured configuration), is this same process. The inbound doorbell therefore
|
|
37
|
-
* fires BEFORE the opener ever learns the id, so a session-id registry is always too late.
|
|
38
|
-
*
|
|
39
|
-
* So what is registered is the INTENT — "this local agent's delivery worker is opening a session
|
|
40
|
-
* with this peer right now" — before negotiation starts, and released when the open returns.
|
|
41
|
-
*
|
|
42
|
-
* ── THE KNOWN IMPRECISION, STATED RATHER THAN HIDDEN ─────────────────────────────────────────────
|
|
43
|
-
*
|
|
44
|
-
* If a delivery open to peer P is in flight for agent A at the same instant A's OPERATOR opens a
|
|
45
|
-
* session to the same P, the inbound half cannot tell the two assignments apart and will suppress
|
|
46
|
-
* the operator's doorbell too. It is narrow (same local agent, same peer, overlapping windows) and
|
|
47
|
-
* it costs one missed notification for a session the operator started themselves and is therefore
|
|
48
|
-
* already watching. The alternative — suppressing nothing — is the storm. This is the same class of
|
|
49
|
-
* accepted, journaled imprecision as the away-ack coalescing guard in `attendance-wiring.ts`.
|
|
50
|
-
*
|
|
51
|
-
* Counting, not a boolean: two documents can be delivering to the same peer concurrently, and a
|
|
52
|
-
* boolean cleared by whichever finishes first would re-open the loop for the other.
|
|
53
|
-
*/
|
|
54
|
-
/** Who caused a session to exist. Decides whether its creation is a signal about the peer. */
|
|
55
|
-
export type SessionOpenedBy = "operator" | "document_delivery";
|
|
56
|
-
export interface DeliveryOpenRegistry {
|
|
57
|
-
/**
|
|
58
|
-
* Register that `openerPubkey`'s delivery worker is opening a session with `targetPubkey`.
|
|
59
|
-
* Returns the release function.
|
|
60
|
-
*/
|
|
61
|
-
begin(openerPubkey: string, targetPubkey: string): () => void;
|
|
62
|
-
/**
|
|
63
|
-
* True while a delivery open from `openerPubkey` toward `targetPubkey` is in flight.
|
|
64
|
-
*
|
|
65
|
-
* ORDER IS THE WHOLE THING. The two halves that ask this question stand at opposite ends of the
|
|
66
|
-
* same dial, so one of them must reverse its own arguments:
|
|
67
|
-
*
|
|
68
|
-
* initiator half — WE opened it: isDeliveryOpening(us, them)
|
|
69
|
-
* inbound half — THEY opened it: isDeliveryOpening(them, us)
|
|
70
|
-
*
|
|
71
|
-
* The first version of this registry keyed on (agent NAME, peer PUBKEY) and both halves passed
|
|
72
|
-
* their own local agent first. The initiator half matched; the inbound half asked
|
|
73
|
-
* `(receiver-name, initiator-pubkey)` against a registry holding `(initiator-name, target-pubkey)`
|
|
74
|
-
* — two tuples that can never be equal — so the doorbell guard read as protection and was
|
|
75
|
-
* unreachable in production, and the log line meant to prove it worked never fired either.
|
|
76
|
-
* Pubkeys on BOTH ends is what lets the two halves name the same pair at all.
|
|
77
|
-
*/
|
|
78
|
-
isDeliveryOpening(openerPubkey: string, targetPubkey: string): boolean;
|
|
79
|
-
/** In-flight count. Exposed for assertions and for the leak check a test can make. */
|
|
80
|
-
inFlight(): number;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* How long an entry may claim to be "in flight" before it is ignored.
|
|
84
|
-
*
|
|
85
|
-
* `openSessionAs` carries no deadline of its own, so a dial that never settles would leave the
|
|
86
|
-
* intent registered and silence that peer's doorbell for the life of the process — a worse outage
|
|
87
|
-
* than the storm this exists to stop. A dial that has been in flight for two minutes is not in
|
|
88
|
-
* flight; it is stuck, and a stuck dial must not be able to mute anything.
|
|
89
|
-
*/
|
|
90
|
-
export declare const DELIVERY_OPEN_STALE_MS = 120000;
|
|
91
|
-
export declare function createDeliveryOpenRegistry(now?: () => number): DeliveryOpenRegistry;
|
|
92
|
-
//# sourceMappingURL=delivery-open-registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-open-registry.d.ts","sourceRoot":"","sources":["../src/delivery-open-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH,8FAA8F;AAC9F,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,mBAAmB,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IAC9D;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IACvE,sFAAsF;IACtF,QAAQ,IAAI,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAE9C,wBAAgB,0BAA0B,CAAC,GAAG,GAAE,MAAM,MAAiB,GAAG,oBAAoB,CAoD7F"}
|