@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,303 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SYNC-P5 (R39–R43) — WHEN reconciling is attempted. The exchange itself (P3) is stateless and
|
|
3
|
-
* idempotent; this module only decides moments, and every piece of state it holds is VOLATILE
|
|
4
|
-
* scheduling state in the R41 sense: it may delay an exchange, it must never forbid one, gate
|
|
5
|
-
* admissibility, or survive a restart as authority. Losing all of it costs at most one sweep
|
|
6
|
-
* interval of latency.
|
|
7
|
-
*
|
|
8
|
-
* The three triggers (R39):
|
|
9
|
-
* 1. committing an entry / publishing — the layer nudges directly (P4's `nudgeSeats` and the
|
|
10
|
-
* entry fan-out); not this module's job.
|
|
11
|
-
* 2. a party becoming reachable — `onReachable`, wired to session establishment. An explicit
|
|
12
|
-
* reachability signal RESETS backoff: the backoff modeled "they do not answer", and here
|
|
13
|
-
* they demonstrably just did.
|
|
14
|
-
* 3. the periodic sweep — `sweep`, wired to a timer. Bounded per R43: batched per party (R16's
|
|
15
|
-
* cap is the exchange's own), and — DOD-DOC-PUSH-NOT-POLL-1 — it speaks only for a party we
|
|
16
|
-
* HOLD something for. A timer is not a reason to speak.
|
|
17
|
-
*
|
|
18
|
-
* R42: the in-flight mark is TIME-BOUNDED and released LOUDLY on expiry. An unbounded in-flight
|
|
19
|
-
* mark is the stall this milestone already paid for twice.
|
|
20
|
-
*
|
|
21
|
-
* DOD-DOC-PUSH-NOT-POLL-1 (Andre, 2026-08-18) — WHAT THE TIMER MAY NO LONGER DO, and what it cost.
|
|
22
|
-
* The suppressor used to be a BELIEF with an expiry: a party was skipped only while every shared
|
|
23
|
-
* document read in_sync AND had been exchanged within ten minutes. Past the window it asked again
|
|
24
|
-
* whether or not anything had changed. Measured live: three agents, thirty documents, the freshest
|
|
25
|
-
* exchange days old, and one stale timestamp kept a whole party — fourteen documents — sweeping
|
|
26
|
-
* every 120 seconds forever. Each of those frames takes a position in the CONVERSATION's hash
|
|
27
|
-
* chain, so a quiet document spends a real conversation's sequence numbers: 34 positions on one
|
|
28
|
-
* live session, 2 of them actual messages, and the seal refused `session_incomplete`.
|
|
29
|
-
*
|
|
30
|
-
* The rule now: WE SPEAK WHEN WE HOLD SOMETHING THE PARTY HAS NOT CONFIRMED RECEIVING, and an
|
|
31
|
-
* unchanged holding is offered once, not on every tick. Nothing pending, no frame, no position.
|
|
32
|
-
*
|
|
33
|
-
* THE GATE IS ON THE DECISION, NOT ON THE FRAME'S CONTENTS (review F2). Once one document has
|
|
34
|
-
* justified speaking to a party, the frame carries every document shared with them: a block is
|
|
35
|
-
* POSITIONS ONLY, and the responder replies solely for a document where one side is actually
|
|
36
|
-
* ahead — so a quiet document rides along for bytes, never for a frame or a position. Narrowing
|
|
37
|
-
* the list would have dropped the pull for those documents and saved nothing.
|
|
38
|
-
*
|
|
39
|
-
* THE TRADE, STATED RATHER THAN HIDDEN: `pendingFor` can only see what we hold that they lack —
|
|
40
|
-
* never what they hold that we lack — so removing the expiry removes the timer-driven PULL. The
|
|
41
|
-
* pull moves onto the two triggers that are events rather than clocks: their publish nudges us
|
|
42
|
-
* (R39 trigger 1), and a session with them coming up sweeps everything (`onReachable`, which
|
|
43
|
-
* deliberately does NOT inherit the pending gate).
|
|
44
|
-
*
|
|
45
|
-
* THE THIRD TRADE, WHICH IS A REMOVAL CASE (review F4). A removed holder is in neither the
|
|
46
|
-
* participants nor the invited set of the remover's derived state, so the REMOVER never sweeps to
|
|
47
|
-
* them — there is no push and no nudge in that direction. Their primary notice is the parked frame
|
|
48
|
-
* the relay holds; when that is gone, the backstop was their own belief expiring and asking, which
|
|
49
|
-
* earned the terminal `document_reconcile_removed` answer. That backstop now waits for them to
|
|
50
|
-
* hold something pending — their next write, or their next session. This WIDENS a gap the M14B
|
|
51
|
-
* board already names (DOD-SYNC-P6, "R32's terminal-refusal delivery is not exercised by the
|
|
52
|
-
* enforcers"); it does not open a new one, and nothing here forbids the exchange.
|
|
53
|
-
*/
|
|
54
|
-
import { extractErrorMessage } from "./error-message.js";
|
|
55
|
-
/** How long one attempt may hold the in-flight mark before the sweep stops honoring it. */
|
|
56
|
-
export const RECONCILE_INFLIGHT_BOUND_MS = 60_000;
|
|
57
|
-
/** First back-off step for a party that did not answer; doubles per consecutive failure. */
|
|
58
|
-
export const RECONCILE_BACKOFF_BASE_MS = 30_000;
|
|
59
|
-
export const RECONCILE_BACKOFF_CAP_MS = 15 * 60_000;
|
|
60
|
-
/** R16's per-frame batching ceiling, honored by chunking a party's documents. */
|
|
61
|
-
export const RECONCILE_BATCH_CAP = 32;
|
|
62
|
-
export class ReconcileScheduler {
|
|
63
|
-
#d;
|
|
64
|
-
/** Volatile by design (R41): keyed per (owner, party); dies with the process. */
|
|
65
|
-
#state = new Map();
|
|
66
|
-
/** DOD-M12B-SHUTDOWN-1: set by stop(); every entry point refuses once it is true. */
|
|
67
|
-
#stopped = false;
|
|
68
|
-
constructor(deps) {
|
|
69
|
-
this.#d = deps;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* DOD-M12B-SHUTDOWN-1 — refuse all further work. Idempotent, and one-way on purpose.
|
|
73
|
-
*
|
|
74
|
-
* Clearing the sweep timer stops the NEXT tick and nothing else: the pass already running walks
|
|
75
|
-
* every agent, and each step dials a peer and opens a session. Measured 2026-08-17 — `cello
|
|
76
|
-
* logout` reported the daemon down, the socket was already gone, and the process ran on for 30+
|
|
77
|
-
* seconds still logging `document.reconcile.sweep`, dialling on its way out. It took a signal to
|
|
78
|
-
* exit. A shutdown that keeps starting new outbound work is not draining.
|
|
79
|
-
*
|
|
80
|
-
* Guarded at the top of the two entry points that START work — `sweep` and `onReachable` — so
|
|
81
|
-
* `sweepTargets`, a database read, is not run either, AND inside the sweep's own party loop so a
|
|
82
|
-
* pass already running stops at the next party rather than finishing its round. `noteRefusal`
|
|
83
|
-
* deliberately still runs: it records an outcome and starts nothing.
|
|
84
|
-
*
|
|
85
|
-
* Never un-set: a reachability trigger firing from a session tearing down during shutdown must
|
|
86
|
-
* not be able to restart the sweeper on the way out.
|
|
87
|
-
*/
|
|
88
|
-
stop() {
|
|
89
|
-
if (this.#stopped)
|
|
90
|
-
return;
|
|
91
|
-
this.#stopped = true;
|
|
92
|
-
this.#d.logger.info("document.reconcile.stopped", {
|
|
93
|
-
reason: "shutdown",
|
|
94
|
-
impact: "no further reconcile attempts will be started",
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
#key(ownerAgentId, peerAgentId) {
|
|
98
|
-
return `${ownerAgentId}\u0000${peerAgentId}`;
|
|
99
|
-
}
|
|
100
|
-
#stateFor(key) {
|
|
101
|
-
let s = this.#state.get(key);
|
|
102
|
-
if (!s) {
|
|
103
|
-
s = {
|
|
104
|
-
nextAttemptMs: 0,
|
|
105
|
-
failures: 0,
|
|
106
|
-
inFlightUntilMs: null,
|
|
107
|
-
lastPendingSignature: null,
|
|
108
|
-
repeats: 0,
|
|
109
|
-
quietUntilMs: 0,
|
|
110
|
-
};
|
|
111
|
-
this.#state.set(key, s);
|
|
112
|
-
}
|
|
113
|
-
return s;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* What we hold for this party that they have not confirmed, across the documents we share:
|
|
117
|
-
* `null` when there is nothing anywhere. One computation for both triggers, so an offer made by
|
|
118
|
-
* one is recognised as already-made by the other.
|
|
119
|
-
*/
|
|
120
|
-
#holdingFor(ownerAgentId, peerAgentId, docs) {
|
|
121
|
-
const parts = [];
|
|
122
|
-
for (const documentId of docs) {
|
|
123
|
-
const pending = this.#d.pendingFor(ownerAgentId, documentId, peerAgentId);
|
|
124
|
-
if (pending !== null)
|
|
125
|
-
parts.push(`${documentId}=${pending}`);
|
|
126
|
-
}
|
|
127
|
-
return parts.length === 0 ? null : parts.join("\n");
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* R39's second trigger: this party is demonstrably reachable RIGHT NOW — a session with them
|
|
131
|
-
* just came up. Backoff is reset (it modeled silence; they answered) and the attempt fires
|
|
132
|
-
* for every shared document, in R16-capped batches.
|
|
133
|
-
*
|
|
134
|
-
* DELIBERATELY EXEMPT FROM THE PENDING GATE (DOD-DOC-PUSH-NOT-POLL-1). The gate can only see
|
|
135
|
-
* what we hold that they lack; the exchange is the only thing that sees the other direction.
|
|
136
|
-
* Take the gate off the timer and this becomes where the PULL lives, so gating it here too
|
|
137
|
-
* would leave nothing that ever asks.
|
|
138
|
-
*
|
|
139
|
-
* It DOES record what it just offered (review F3). Nulling that instead cost one guaranteed
|
|
140
|
-
* duplicate frame per session establishment — the sweep tick minutes later would find no
|
|
141
|
-
* record of the offer, treat an unchanged holding as new, and spend another position in the
|
|
142
|
-
* conversation's hash chain. That is the exact currency this unit defends.
|
|
143
|
-
*/
|
|
144
|
-
async onReachable(ownerAgentId, peerAgentId) {
|
|
145
|
-
if (this.#stopped)
|
|
146
|
-
return;
|
|
147
|
-
const docs = this.#d.sweepTargets(ownerAgentId).get(peerAgentId);
|
|
148
|
-
if (!docs || docs.length === 0)
|
|
149
|
-
return;
|
|
150
|
-
const s = this.#stateFor(this.#key(ownerAgentId, peerAgentId));
|
|
151
|
-
// They answered: silence is no longer the model, so both ladders start over.
|
|
152
|
-
s.failures = 0;
|
|
153
|
-
s.repeats = 0;
|
|
154
|
-
s.nextAttemptMs = 0;
|
|
155
|
-
s.quietUntilMs = 0;
|
|
156
|
-
await this.#attempt(ownerAgentId, peerAgentId, docs, s, this.#holdingFor(ownerAgentId, peerAgentId, docs));
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* A PEER ANSWERED "NO". That is an answer, and it must slow the asking down.
|
|
160
|
-
*
|
|
161
|
-
* `#attempt` can only see whether the FRAME WAS SENT — the refusal arrives later, on its own
|
|
162
|
-
* inbound frame, and until now it was logged and dropped. So a peer refusing every exchange was
|
|
163
|
-
* indistinguishable from a peer answering fine: `failures` reset to 0, `nextAttemptMs` to now,
|
|
164
|
-
* and the sweep asked again immediately. Measured 321 attempts against two documents in 85
|
|
165
|
-
* minutes, refused every time, zero successes.
|
|
166
|
-
*
|
|
167
|
-
* R41 IS PRESERVED: this DELAYS an exchange, it never forbids one. A terminal refusal jumps
|
|
168
|
-
* straight to the cap rather than retiring the party, because "terminal" is one holder's current
|
|
169
|
-
* derivation — a later entry can make the same exchange admissible again, and scheduling state
|
|
170
|
-
* must never be the thing that forbids it. `onReachable` still clears it outright.
|
|
171
|
-
*/
|
|
172
|
-
noteRefusal(ownerAgentId, peerAgentId, terminal) {
|
|
173
|
-
const s = this.#stateFor(this.#key(ownerAgentId, peerAgentId));
|
|
174
|
-
const now = this.#d.now();
|
|
175
|
-
const base = this.#d.backoffBaseMs ?? RECONCILE_BACKOFF_BASE_MS;
|
|
176
|
-
if (terminal) {
|
|
177
|
-
s.nextAttemptMs = now + RECONCILE_BACKOFF_CAP_MS;
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
s.failures += 1;
|
|
181
|
-
s.nextAttemptMs = now + Math.min(base * 2 ** (s.failures - 1), RECONCILE_BACKOFF_CAP_MS);
|
|
182
|
-
}
|
|
183
|
-
this.#d.logger.info("document.reconcile.refusal_backoff", {
|
|
184
|
-
peerAgentId, terminal, failures: s.failures, nextAttemptInMs: s.nextAttemptMs - now,
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
/** R39's third trigger — one bounded pass for one owner. */
|
|
188
|
-
async sweep(ownerAgentId) {
|
|
189
|
-
const result = {
|
|
190
|
-
attempted: 0, skippedBackoff: 0, skippedInFlight: 0,
|
|
191
|
-
skippedQuiet: 0, skippedNothingPending: 0, failed: 0,
|
|
192
|
-
};
|
|
193
|
-
// DOD-M12B-SHUTDOWN-1: the in-flight pass stops HERE, not at the next timer tick.
|
|
194
|
-
if (this.#stopped)
|
|
195
|
-
return result;
|
|
196
|
-
const now = this.#d.now();
|
|
197
|
-
for (const [peerAgentId, docs] of this.#d.sweepTargets(ownerAgentId)) {
|
|
198
|
-
// DOD-M12B-SHUTDOWN-1: INSIDE the loop, not only at the entry. A guard on entry alone stops
|
|
199
|
-
// the NEXT agent while the one being swept goes on dialling every remaining party — which on
|
|
200
|
-
// a single-agent daemon, the measured case, buys nothing at all. Each of those dials can
|
|
201
|
-
// create a session node AFTER gracefulShutdown has already flipped active rows to interrupted
|
|
202
|
-
// and snapshotted the node list, leaving a row nothing will clear and a node nobody stops.
|
|
203
|
-
if (this.#stopped)
|
|
204
|
-
break;
|
|
205
|
-
if (docs.length === 0)
|
|
206
|
-
continue;
|
|
207
|
-
const s = this.#stateFor(this.#key(ownerAgentId, peerAgentId));
|
|
208
|
-
if (s.inFlightUntilMs !== null) {
|
|
209
|
-
if (now < s.inFlightUntilMs) {
|
|
210
|
-
result.skippedInFlight += 1;
|
|
211
|
-
continue;
|
|
212
|
-
}
|
|
213
|
-
// RELEASED LOUDLY (R42): an attempt held its mark past the bound. The mark is dropped
|
|
214
|
-
// so the sweep proceeds — an unbounded in-flight mark is the stall this milestone
|
|
215
|
-
// already paid for twice.
|
|
216
|
-
this.#d.logger.warn("document.reconcile.inflight_expired", {
|
|
217
|
-
peerAgentId, heldMs: now - (s.inFlightUntilMs - RECONCILE_INFLIGHT_BOUND_MS),
|
|
218
|
-
});
|
|
219
|
-
s.inFlightUntilMs = null;
|
|
220
|
-
}
|
|
221
|
-
if (now < s.nextAttemptMs) {
|
|
222
|
-
result.skippedBackoff += 1;
|
|
223
|
-
continue;
|
|
224
|
-
}
|
|
225
|
-
// DOD-DOC-PUSH-NOT-POLL-1 — the only reason to speak: we hold something they have not
|
|
226
|
-
// confirmed receiving. No holding, no frame and no sequence position, however long ago
|
|
227
|
-
// this party last exchanged.
|
|
228
|
-
const signature = this.#holdingFor(ownerAgentId, peerAgentId, docs);
|
|
229
|
-
if (signature === null) {
|
|
230
|
-
result.skippedNothingPending += 1;
|
|
231
|
-
continue;
|
|
232
|
-
}
|
|
233
|
-
// Offered already, and nothing has changed since. A real change steps over this — it is a
|
|
234
|
-
// trigger (R39), not noise — but the refusal/failure backoff checked ABOVE is never stepped
|
|
235
|
-
// over, which is what keeps DOD-SYNC-REFUSAL-BACKOFF-1 intact. The order of these two
|
|
236
|
-
// blocks is the guarantee; a test pins it.
|
|
237
|
-
if (signature === s.lastPendingSignature && now < s.quietUntilMs) {
|
|
238
|
-
result.skippedQuiet += 1;
|
|
239
|
-
continue;
|
|
240
|
-
}
|
|
241
|
-
result.attempted += 1;
|
|
242
|
-
// EVERY shared document rides the frame, not just the ones that justified it (review F2):
|
|
243
|
-
// a block carries positions only, and the responder answers solely where a side is ahead,
|
|
244
|
-
// so the quiet documents cost bytes rather than a frame — and keep their pull.
|
|
245
|
-
const ok = await this.#attempt(ownerAgentId, peerAgentId, docs, s, signature);
|
|
246
|
-
if (!ok)
|
|
247
|
-
result.failed += 1;
|
|
248
|
-
}
|
|
249
|
-
return result;
|
|
250
|
-
}
|
|
251
|
-
async #attempt(ownerAgentId, peerAgentId, docs, s, signature) {
|
|
252
|
-
// Read BEFORE the send: whether this round is a re-offer decides the cadence below.
|
|
253
|
-
const repeat = signature !== null && signature === s.lastPendingSignature;
|
|
254
|
-
const started = this.#d.now();
|
|
255
|
-
s.inFlightUntilMs = started + RECONCILE_INFLIGHT_BOUND_MS;
|
|
256
|
-
let allOk = true;
|
|
257
|
-
try {
|
|
258
|
-
for (let i = 0; i < docs.length; i += RECONCILE_BATCH_CAP) {
|
|
259
|
-
// DOD-M12B-SHUTDOWN-1: between batches too — one party can carry many documents, and each
|
|
260
|
-
// batch is another dial.
|
|
261
|
-
if (this.#stopped)
|
|
262
|
-
break;
|
|
263
|
-
const batch = docs.slice(i, i + RECONCILE_BATCH_CAP);
|
|
264
|
-
const sent = await this.#d.initiateReconcile(ownerAgentId, peerAgentId, batch);
|
|
265
|
-
if (!sent.ok) {
|
|
266
|
-
allOk = false;
|
|
267
|
-
this.#d.logger.warn("document.reconcile.sweep_attempt_failed", {
|
|
268
|
-
peerAgentId, documents: batch.length, reason: sent.reason ?? "send_failed",
|
|
269
|
-
});
|
|
270
|
-
break; // one dead transport answers for the whole party this round
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
catch (err) {
|
|
275
|
-
allOk = false;
|
|
276
|
-
this.#d.logger.warn("document.reconcile.sweep_attempt_failed", {
|
|
277
|
-
peerAgentId, reason: extractErrorMessage(err),
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
finally {
|
|
281
|
-
s.inFlightUntilMs = null;
|
|
282
|
-
}
|
|
283
|
-
const now = this.#d.now();
|
|
284
|
-
const base = this.#d.backoffBaseMs ?? RECONCILE_BACKOFF_BASE_MS;
|
|
285
|
-
if (allOk) {
|
|
286
|
-
s.failures = 0;
|
|
287
|
-
s.nextAttemptMs = now;
|
|
288
|
-
// THE SEND SUCCEEDING MEANS THE FRAME WENT OUT, NEVER THAT THE PARTY ACTED ON IT. An
|
|
289
|
-
// invitation nobody accepts stays pending forever, so without this the sweep re-offered the
|
|
290
|
-
// identical holding on every tick — one frame each, each one spending a position in the
|
|
291
|
-
// conversation's hash chain. Every re-offer doubles the silence, up to the same cap.
|
|
292
|
-
s.repeats = repeat ? s.repeats + 1 : 1;
|
|
293
|
-
s.lastPendingSignature = signature;
|
|
294
|
-
s.quietUntilMs = now + Math.min(base * 2 ** (s.repeats - 1), RECONCILE_BACKOFF_CAP_MS);
|
|
295
|
-
}
|
|
296
|
-
else {
|
|
297
|
-
s.failures += 1;
|
|
298
|
-
s.nextAttemptMs = now + Math.min(base * 2 ** (s.failures - 1), RECONCILE_BACKOFF_CAP_MS);
|
|
299
|
-
}
|
|
300
|
-
return allOk;
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
//# sourceMappingURL=document-reconcile-scheduler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"document-reconcile-scheduler.js","sourceRoot":"","sources":["../src/document-reconcile-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DOD-DOC-REJECT-1 — rejection and supersession (§3.2, §16.7-2).
|
|
3
|
-
*
|
|
4
|
-
* ── WHY SUPERSESSION, AND NOT "BOTH SIDES ROLL BACK" ──────────────────────────────────────────
|
|
5
|
-
*
|
|
6
|
-
* The naive protocol is: the receiver discards, the sender undoes locally, and both return to the
|
|
7
|
-
* pre-update state. It does not work, and the reason is a property of CRDTs rather than a bug.
|
|
8
|
-
*
|
|
9
|
-
* **Yjs undo adds INVERSES; it does not erase.** The rejected operations stay in the sender's
|
|
10
|
-
* document. So every later update the sender computes against the receiver's state vector
|
|
11
|
-
* re-transmits them, and the receiver — which refuses to hold them — can never integrate the
|
|
12
|
-
* legitimate work stacked causally on top, because Yjs will not apply operations whose
|
|
13
|
-
* predecessors are missing. A permanent causal gap, from a protocol that looked symmetric.
|
|
14
|
-
*
|
|
15
|
-
* The protocol that works (§3.2):
|
|
16
|
-
* 1. The receiver rejects with a REASON — a protocol message and its own `0x05` leaf, never a
|
|
17
|
-
* silent drop. The update goes to quarantine, held rather than discarded.
|
|
18
|
-
* 2. The sender rolls back locally, which emits inverses into its own log and leaves an
|
|
19
|
-
* auditable "wrote X, was rejected, undid X" trail.
|
|
20
|
-
* 3. The sender publishes a SUPERSEDING update against the receiver's state vector, which
|
|
21
|
-
* necessarily carries the rejected operations PLUS their inverses plus any new work.
|
|
22
|
-
* 4. The receiver validates the now-clean projected diff — the rejected content nets to zero —
|
|
23
|
-
* admits it, and clears the quarantine. Causality intact, both parties converge, and the
|
|
24
|
-
* rejected content survives only as inert tombstones.
|
|
25
|
-
*
|
|
26
|
-
* ── SCOPE ─────────────────────────────────────────────────────────────────────────────────────
|
|
27
|
-
*
|
|
28
|
-
* This proves the protocol against STORE-1's local envelope log. The CBOR wire encoding is
|
|
29
|
-
* DOD-DOC-ENVELOPE-1's job and the cross-daemon proof is DOD-DOC-E2E-REJECT-1's.
|
|
30
|
-
*/
|
|
31
|
-
import * as Y from "yjs";
|
|
32
|
-
import type { DocumentStore } from "./document-store.js";
|
|
33
|
-
import type { Logger } from "./types.js";
|
|
34
|
-
/**
|
|
35
|
-
* The document stalls on the THIRD rejected round: the original refusal, one superseding attempt,
|
|
36
|
-
* and no more (§16.7-2 "one retry, then freeze").
|
|
37
|
-
*
|
|
38
|
-
* Counted in rounds rather than retries because the previous spelling — a `REJECTION_RETRY_LIMIT`
|
|
39
|
-
* of 1 compared as `round > LIMIT + 1` — permitted two retries under a name that said one, which
|
|
40
|
-
* is the kind of thing the next edit gets wrong.
|
|
41
|
-
*
|
|
42
|
-
* Bounded at all because an unbounded retry loop between two daemons that disagree is not
|
|
43
|
-
* convergence, it is a hot loop neither operator can see. Stalling is the visible failure.
|
|
44
|
-
*/
|
|
45
|
-
export declare const MAX_REJECTED_ROUNDS = 3;
|
|
46
|
-
export interface RejectionInput {
|
|
47
|
-
/** The envelope being rejected — the `0x05` leaf references this hash (§9). */
|
|
48
|
-
rejectedEnvelopeHash: string;
|
|
49
|
-
/** The bytes, held rather than discarded (§3.2). Supplied by the gate's quarantine verdict. */
|
|
50
|
-
quarantined: Uint8Array;
|
|
51
|
-
/**
|
|
52
|
-
* The refused envelope's OWN chain link — `null` only when the refused envelope was genuinely
|
|
53
|
-
* that sender's first. REQUIRED rather than optional: the refused envelope is deliberately never
|
|
54
|
-
* written to the log, so this is the only thing keeping the peer's next link resolvable, and an
|
|
55
|
-
* omitted value would default every refused envelope to a genesis stub — manufacturing exactly
|
|
56
|
-
* the fork the bridge exists to prevent. The caller decoded the envelope; it knows.
|
|
57
|
-
*/
|
|
58
|
-
rejectedDocPrevHash: string | null;
|
|
59
|
-
reason: string;
|
|
60
|
-
detail?: string;
|
|
61
|
-
senderAgentId: string;
|
|
62
|
-
/** Which pluggable rule refused, when one did (from the gate's verdict). */
|
|
63
|
-
rule?: string;
|
|
64
|
-
/** The limit breached, when one was (from the gate's verdict). */
|
|
65
|
-
limit?: {
|
|
66
|
-
name: string;
|
|
67
|
-
limit: number;
|
|
68
|
-
actual: number;
|
|
69
|
-
};
|
|
70
|
-
/**
|
|
71
|
-
* Sign the rejection's canonical preimage (DOD-DOC-REJECT-2).
|
|
72
|
-
*
|
|
73
|
-
* The caller supplies the SIGNER, not the signature: a signature with no defined preimage is a
|
|
74
|
-
* field that can only be filled dishonestly, which is exactly what this used to be. An all-zero
|
|
75
|
-
* placeholder written into an immutable log is indistinguishable from a real signature that
|
|
76
|
-
* fails to verify, so a later verifier would send an operator to the crypto layer for a value
|
|
77
|
-
* nobody ever signed.
|
|
78
|
-
*/
|
|
79
|
-
sign(tbs: Uint8Array): Promise<Uint8Array>;
|
|
80
|
-
/**
|
|
81
|
-
* The clock, passed in rather than read here. The rejection's timestamp is SIGNED, so it must be
|
|
82
|
-
* the same value in the preimage and in the row — reading `Date.now()` twice would sign one
|
|
83
|
-
* moment and store another.
|
|
84
|
-
*/
|
|
85
|
-
nowMs: number;
|
|
86
|
-
}
|
|
87
|
-
export interface RejectionOutcome {
|
|
88
|
-
/** The document has exhausted its retries and stopped accepting updates. */
|
|
89
|
-
stalled: boolean;
|
|
90
|
-
/** How many rejections this document has seen, including this one. */
|
|
91
|
-
round: number;
|
|
92
|
-
/**
|
|
93
|
-
* The signed rejection, encoded, for the caller to put on the wire — or absent when this was a
|
|
94
|
-
* duplicate and nothing new was authored.
|
|
95
|
-
*
|
|
96
|
-
* RETURNED, because it was not, and the consequence was that the entire retry protocol was
|
|
97
|
-
* unreachable. The envelope was built here, signed here, leafed here, and then discarded: nothing
|
|
98
|
-
* in production ever called `encodeDocumentRejection`. So the refusing side kept a perfect local
|
|
99
|
-
* record of a decision it never communicated, and the sender — whose round counter is advanced by
|
|
100
|
-
* RECEIVING this frame — never advanced past round zero. A peer whose every update is refused
|
|
101
|
-
* republished forever, and its own surface said `active` the whole time. Measured live.
|
|
102
|
-
*/
|
|
103
|
-
wire?: Uint8Array;
|
|
104
|
-
}
|
|
105
|
-
export interface QuarantineEntry {
|
|
106
|
-
rejectedEnvelopeHash: string;
|
|
107
|
-
quarantined: Uint8Array;
|
|
108
|
-
reason: string;
|
|
109
|
-
detail?: string;
|
|
110
|
-
/** Which rule refused, and the number it refused on. Surfaced, not just stored. */
|
|
111
|
-
rule?: string;
|
|
112
|
-
limitName?: string;
|
|
113
|
-
limitValue?: number;
|
|
114
|
-
limitActual?: number;
|
|
115
|
-
/** SYNC-R35: the exact signed refusal frame, when this row was written after the column shipped. */
|
|
116
|
-
rejectionWire?: Uint8Array;
|
|
117
|
-
}
|
|
118
|
-
/** A handle over the sender's local edits, so a rejection can be rolled back as inverses. */
|
|
119
|
-
export interface TrackedEdits {
|
|
120
|
-
readonly doc: Y.Doc;
|
|
121
|
-
readonly undoManager: Y.UndoManager;
|
|
122
|
-
/**
|
|
123
|
-
* Release the tracker. Required, not optional hygiene: the depth guard in `rollback` admits
|
|
124
|
-
* exactly one stacked edit, so the only workable pattern is a FRESH tracker per publish — which
|
|
125
|
-
* means one live UndoManager per publish on a long-lived Y.Doc, each holding `afterTransaction`
|
|
126
|
-
* observers and accumulating undo items that retain deleted structs. Call it once the rejection
|
|
127
|
-
* is resolved, either way.
|
|
128
|
-
*/
|
|
129
|
-
dispose(): void;
|
|
130
|
-
/** Stack depth when tracking began, so `rollback` can prove it is undoing the right item. */
|
|
131
|
-
readonly depthAtTracking: number;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* The placeholder `state_vector` a rejection row carries.
|
|
135
|
-
*
|
|
136
|
-
* ONE ZERO BYTE, not an empty array. See the call site for why: SQLCipher binds a zero-length blob
|
|
137
|
-
* as NULL and the column is NOT NULL, so an empty vector throws on the driver production uses and
|
|
138
|
-
* on no driver the tests use. The value is meaningless by design — a rejection has no state vector —
|
|
139
|
-
* and it is named rather than inlined so nobody "tidies" it back to `new Uint8Array(0)`.
|
|
140
|
-
*/
|
|
141
|
-
export declare const REJECTION_STATE_VECTOR: Uint8Array<ArrayBuffer>;
|
|
142
|
-
export declare class DocumentRejections {
|
|
143
|
-
#private;
|
|
144
|
-
constructor(store: DocumentStore, logger: Logger);
|
|
145
|
-
/**
|
|
146
|
-
* Record a rejection: a `0x05` row referencing the rejected envelope, the quarantined bytes
|
|
147
|
-
* held, and a policy record carrying the reason.
|
|
148
|
-
*
|
|
149
|
-
* The envelope log is append-only, so this is a NEW ROW — nothing is edited or removed.
|
|
150
|
-
*
|
|
151
|
-
* ── HOW A REFUSAL IS ACTUALLY REALIZED, AND WHY NOT THE WAY §9 SAYS ─────────────────────────
|
|
152
|
-
*
|
|
153
|
-
* §9 phrases effectiveness as a replay-time set property: "an update leaf is effective iff no
|
|
154
|
-
* rejection leaf references it". Implemented literally that is unsound, and it was measured
|
|
155
|
-
* rather than argued. Sender publishes a base, then a refused update, then rolls back and
|
|
156
|
-
* supersedes. Replaying the log while SKIPPING the refused leaf gives:
|
|
157
|
-
*
|
|
158
|
-
* text "agreed base. " pendingStructs PRESENT pendingDs PRESENT
|
|
159
|
-
*
|
|
160
|
-
* The supersession is causally stacked on the refused operations — the rollback is a DELETION of
|
|
161
|
-
* those structs and the new work is positioned after them — so dropping them leaves everything
|
|
162
|
-
* later permanently pending. The document reads as complete and is silently missing the
|
|
163
|
-
* legitimate work. §16.7-5 already retired §9's "document-log order" phrasing; this retires its
|
|
164
|
-
* effectiveness phrasing on the same grounds.
|
|
165
|
-
*
|
|
166
|
-
* What is sound: the receiver NEVER WRITES the refused payload to its log. There is nothing to
|
|
167
|
-
* subtract at replay because it was never added, and the peer's supersession — computed against
|
|
168
|
-
* the RECEIVER's state vector per §3.2 step 3 — is self-contained. Measured on the same fixture:
|
|
169
|
-
*
|
|
170
|
-
* text "agreed base. clean text. " pendingStructs null pendingDs null converged true
|
|
171
|
-
*
|
|
172
|
-
* The refused bytes do travel again inside that supersession, carrying their own inverses, which
|
|
173
|
-
* is precisely "inverses, not erasure" (§3.2) — the content nets to zero and survives only as
|
|
174
|
-
* tombstones. The bytes we refused live in `document_quarantine`, and the chain bridges across
|
|
175
|
-
* the refused envelope so the peer's next link still resolves (see `verifyChainLinkage`).
|
|
176
|
-
*/
|
|
177
|
-
reject(agentId: string, documentId: string, input: RejectionInput): Promise<RejectionOutcome>;
|
|
178
|
-
/**
|
|
179
|
-
* Record a rejection ARRIVING from the peer — the receiving half of §3.2's "both sides".
|
|
180
|
-
*
|
|
181
|
-
* ── THE ROUTING DECISION (the DoD requires it resolved in-unit) ─────────────────────────────
|
|
182
|
-
*
|
|
183
|
-
* A document rejection is written **daemon-side**, into this document's own log and quarantine,
|
|
184
|
-
* NOT through the gateway record store's `source` discriminator.
|
|
185
|
-
*
|
|
186
|
-
* The gateway's record store exists for SCREENING verdicts, and most V1 rejection reasons are
|
|
187
|
-
* not screening at all — `append_only`, the receiver-local limits, malformed updates, unresolved
|
|
188
|
-
* dependencies. Routing every document rejection through a screening store would file structural
|
|
189
|
-
* protocol events as policy verdicts, and it would couple this unit to a schema owned by a
|
|
190
|
-
* component that is not involved. DOD-DOC-SCREEN-1 is parked, so that coupling would also have
|
|
191
|
-
* to be built speculatively and unwound if screening lands differently.
|
|
192
|
-
*
|
|
193
|
-
* When SCREEN-1 does land, a rejection whose reason came from the screening rule can ADDITIONALLY
|
|
194
|
-
* write a gateway record — the discriminator exists for exactly that, and adding it later costs
|
|
195
|
-
* nothing, whereas removing a premature coupling costs a migration.
|
|
196
|
-
*/
|
|
197
|
-
recordIncomingRejection(agentId: string, documentId: string, input: {
|
|
198
|
-
/** The peer's 0x05 leaf hash — the row's identity, so a redelivery does not advance a round. */
|
|
199
|
-
rejectionEnvelopeHash: string;
|
|
200
|
-
rejectedEnvelopeHash: string;
|
|
201
|
-
reason: string;
|
|
202
|
-
detail?: string;
|
|
203
|
-
fromAgentId: string;
|
|
204
|
-
}): {
|
|
205
|
-
stalled: boolean;
|
|
206
|
-
round: number;
|
|
207
|
-
};
|
|
208
|
-
/** Entries held for this document — never admitted, never discarded (§3.2). From the store. */
|
|
209
|
-
quarantined(agentId: string, documentId: string): QuarantineEntry[];
|
|
210
|
-
/** Clear one entry once its superseding update has been admitted (§3.2 step 4). */
|
|
211
|
-
clearQuarantine(agentId: string, documentId: string, rejectedEnvelopeHash: string): void;
|
|
212
|
-
/**
|
|
213
|
-
* Whether this document still accepts updates.
|
|
214
|
-
*
|
|
215
|
-
* A stalled document REFUSES, naming the reason it stalled — both operators need to see why,
|
|
216
|
-
* because a document that silently stops converging is the failure this exists to prevent.
|
|
217
|
-
*/
|
|
218
|
-
acceptsUpdates(agentId: string, documentId: string): {
|
|
219
|
-
ok: true;
|
|
220
|
-
} | {
|
|
221
|
-
ok: false;
|
|
222
|
-
reason: string;
|
|
223
|
-
detail: string;
|
|
224
|
-
};
|
|
225
|
-
/**
|
|
226
|
-
* Start tracking local edits so a rejection can be rolled back.
|
|
227
|
-
*
|
|
228
|
-
* Yjs's own UndoManager, deliberately: rolling back by hand would mean computing inverses, and
|
|
229
|
-
* the inverse of a CRDT operation is not something to hand-roll — the whole reason supersession
|
|
230
|
-
* works is that Yjs's undo produces operations that compose correctly with everything stacked
|
|
231
|
-
* on top of them.
|
|
232
|
-
*/
|
|
233
|
-
trackLocalEdits(doc: Y.Doc): TrackedEdits;
|
|
234
|
-
/**
|
|
235
|
-
* Roll back the last tracked edit, as INVERSES.
|
|
236
|
-
*
|
|
237
|
-
* The sender's history grows rather than shrinking. That is not a limitation to work around: it
|
|
238
|
-
* is what leaves an auditable "wrote X, was rejected, undid X" trail, and what lets the
|
|
239
|
-
* superseding update carry the rejected operations plus their inverses so causality survives.
|
|
240
|
-
*
|
|
241
|
-
* **PRECONDITION: roll back before making further local edits.** Yjs's UndoManager undoes the
|
|
242
|
-
* most recent stack item, and it cannot undo one out of order — so a sender that keeps editing
|
|
243
|
-
* after a rejection arrives and then rolls back would undo the WRONG transaction. §3.2's
|
|
244
|
-
* ordering is steps 2 then 3 for exactly this reason: roll back, THEN do new work, THEN
|
|
245
|
-
* publish the supersession that carries all three. A caller that needs to interleave has a
|
|
246
|
-
* genuine design question, not a call-order detail, and it belongs in the unit that wires
|
|
247
|
-
* publish to the receive path.
|
|
248
|
-
*/
|
|
249
|
-
rollback(tracked: TrackedEdits): void;
|
|
250
|
-
}
|
|
251
|
-
//# sourceMappingURL=document-rejection.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"document-rejection.d.ts","sourceRoot":"","sources":["../src/document-rejection.ts"],"names":[],"mappings":"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"}
|