@amalgm/shell 0.1.164-preview.36072132286 → 0.1.164-preview.36809057014
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/PURPOSE.md +642 -128
- package/README.md +10 -8
- package/dist/accepted-tail.d.ts +26 -0
- package/dist/accepted-tail.js +37 -0
- package/dist/accepted-tail.js.map +1 -0
- package/dist/agent-execution.d.ts +16 -1
- package/dist/agent-execution.js +13 -5
- package/dist/agent-execution.js.map +1 -1
- package/dist/apply-cleanup.d.ts +28 -0
- package/dist/apply-cleanup.js +166 -0
- package/dist/apply-cleanup.js.map +1 -0
- package/dist/apply-recovery.d.ts +47 -0
- package/dist/apply-recovery.js +99 -0
- package/dist/apply-recovery.js.map +1 -0
- package/dist/apply-rows.d.ts +72 -0
- package/dist/apply-rows.js +150 -0
- package/dist/apply-rows.js.map +1 -0
- package/dist/apply-saves.d.ts +85 -0
- package/dist/apply-saves.js +238 -0
- package/dist/apply-saves.js.map +1 -0
- package/dist/boot.js +2 -1
- package/dist/boot.js.map +1 -1
- package/dist/capture-work.d.ts +8 -0
- package/dist/capture-work.js +67 -0
- package/dist/capture-work.js.map +1 -0
- package/dist/cargo-group.d.ts +45 -0
- package/dist/cargo-group.js +88 -0
- package/dist/cargo-group.js.map +1 -0
- package/dist/channel-session.d.ts +4 -2
- package/dist/channel-session.js +4 -3
- package/dist/channel-session.js.map +1 -1
- package/dist/chat-composition.d.ts +2 -0
- package/dist/chat-composition.js +1 -0
- package/dist/chat-composition.js.map +1 -1
- package/dist/cli.js +20 -1
- package/dist/cli.js.map +1 -1
- package/dist/construct-apply-host.d.ts +4 -2
- package/dist/construct-apply-host.js +8 -3
- package/dist/construct-apply-host.js.map +1 -1
- package/dist/construct-door.js +1 -1
- package/dist/construct-door.js.map +1 -1
- package/dist/construct-ledger.d.ts +6 -1
- package/dist/construct-ledger.js +21 -33
- package/dist/construct-ledger.js.map +1 -1
- package/dist/content-cache-collection.d.ts +18 -0
- package/dist/content-cache-collection.js +99 -0
- package/dist/content-cache-collection.js.map +1 -0
- package/dist/content-cache-host.d.ts +83 -17
- package/dist/content-cache-host.js +335 -95
- package/dist/content-cache-host.js.map +1 -1
- package/dist/content-cache-namespace.d.ts +59 -0
- package/dist/content-cache-namespace.js +210 -0
- package/dist/content-cache-namespace.js.map +1 -0
- package/dist/content-cache-ownership.d.ts +13 -0
- package/dist/content-cache-ownership.js +75 -0
- package/dist/content-cache-ownership.js.map +1 -0
- package/dist/content-cache-retention.d.ts +23 -0
- package/dist/content-cache-retention.js +195 -0
- package/dist/content-cache-retention.js.map +1 -0
- package/dist/content-capture-pool.d.ts +287 -0
- package/dist/content-capture-pool.js +461 -0
- package/dist/content-capture-pool.js.map +1 -0
- package/dist/content-capture-worker.d.ts +8 -0
- package/dist/content-capture-worker.js +109 -0
- package/dist/content-capture-worker.js.map +1 -0
- package/dist/content-clock.d.ts +42 -0
- package/dist/content-clock.js +166 -0
- package/dist/content-clock.js.map +1 -0
- package/dist/content-direct.d.ts +2 -0
- package/dist/content-direct.js +12 -0
- package/dist/content-direct.js.map +1 -1
- package/dist/content-failure.d.ts +18 -0
- package/dist/content-failure.js +38 -0
- package/dist/content-failure.js.map +1 -0
- package/dist/content-stream-thread.d.ts +60 -0
- package/dist/content-stream-thread.js +95 -0
- package/dist/content-stream-thread.js.map +1 -0
- package/dist/content-stream-worker.d.ts +7 -0
- package/dist/content-stream-worker.js +52 -0
- package/dist/content-stream-worker.js.map +1 -0
- package/dist/declaration-absorption.d.ts +37 -0
- package/dist/declaration-absorption.js +119 -0
- package/dist/declaration-absorption.js.map +1 -0
- package/dist/declaration-chain.d.ts +36 -0
- package/dist/declaration-chain.js +96 -0
- package/dist/declaration-chain.js.map +1 -0
- package/dist/declaration-commit.d.ts +31 -0
- package/dist/declaration-commit.js +49 -0
- package/dist/declaration-commit.js.map +1 -0
- package/dist/declaration-hold.d.ts +22 -0
- package/dist/declaration-hold.js +24 -0
- package/dist/declaration-hold.js.map +1 -0
- package/dist/declaration-journal.d.ts +62 -0
- package/dist/declaration-journal.js +99 -0
- package/dist/declaration-journal.js.map +1 -0
- package/dist/declaration-save.d.ts +31 -0
- package/dist/declaration-save.js +134 -0
- package/dist/declaration-save.js.map +1 -0
- package/dist/detection/accepted-result.d.ts +19 -1
- package/dist/detection/accepted-result.js +36 -5
- package/dist/detection/accepted-result.js.map +1 -1
- package/dist/detection/admission-save.d.ts +55 -0
- package/dist/detection/admission-save.js +48 -0
- package/dist/detection/admission-save.js.map +1 -0
- package/dist/detection/admission-units.d.ts +66 -0
- package/dist/detection/admission-units.js +322 -0
- package/dist/detection/admission-units.js.map +1 -0
- package/dist/detection/alias-discovery.d.ts +12 -0
- package/dist/detection/alias-discovery.js +80 -0
- package/dist/detection/alias-discovery.js.map +1 -0
- package/dist/detection/alias-examination.d.ts +30 -0
- package/dist/detection/alias-examination.js +49 -0
- package/dist/detection/alias-examination.js.map +1 -0
- package/dist/detection/apply-ownership.d.ts +81 -0
- package/dist/detection/apply-ownership.js +232 -0
- package/dist/detection/apply-ownership.js.map +1 -0
- package/dist/detection/basis-advanced.d.ts +11 -0
- package/dist/detection/basis-advanced.js +26 -0
- package/dist/detection/basis-advanced.js.map +1 -0
- package/dist/detection/capture-outcome.d.ts +16 -0
- package/dist/detection/capture-outcome.js +92 -0
- package/dist/detection/capture-outcome.js.map +1 -0
- package/dist/detection/container-membership.d.ts +32 -0
- package/dist/detection/container-membership.js +49 -0
- package/dist/detection/container-membership.js.map +1 -0
- package/dist/detection/detect-cancelled.d.ts +6 -0
- package/dist/detection/detect-cancelled.js +10 -0
- package/dist/detection/detect-cancelled.js.map +1 -0
- package/dist/detection/directory-proof.d.ts +47 -0
- package/dist/detection/directory-proof.js +77 -0
- package/dist/detection/directory-proof.js.map +1 -0
- package/dist/detection/disposition-rows.d.ts +18 -0
- package/dist/detection/disposition-rows.js +29 -0
- package/dist/detection/disposition-rows.js.map +1 -0
- package/dist/detection/dispositions.d.ts +130 -0
- package/dist/detection/dispositions.js +248 -0
- package/dist/detection/dispositions.js.map +1 -0
- package/dist/detection/git-notice.d.ts +88 -0
- package/dist/detection/git-notice.js +444 -0
- package/dist/detection/git-notice.js.map +1 -0
- package/dist/detection/ground-proof.d.ts +130 -0
- package/dist/detection/ground-proof.js +274 -0
- package/dist/detection/ground-proof.js.map +1 -0
- package/dist/detection/ground-reader.d.ts +29 -0
- package/dist/detection/ground-reader.js +102 -0
- package/dist/detection/ground-reader.js.map +1 -0
- package/dist/detection/held-territory.d.ts +51 -0
- package/dist/detection/held-territory.js +205 -0
- package/dist/detection/held-territory.js.map +1 -0
- package/dist/detection/identity-discovery.d.ts +45 -0
- package/dist/detection/identity-discovery.js +287 -0
- package/dist/detection/identity-discovery.js.map +1 -0
- package/dist/detection/maintenance-sweep.d.ts +108 -0
- package/dist/detection/maintenance-sweep.js +325 -0
- package/dist/detection/maintenance-sweep.js.map +1 -0
- package/dist/detection/name-reach.d.ts +12 -0
- package/dist/detection/name-reach.js +28 -0
- package/dist/detection/name-reach.js.map +1 -0
- package/dist/detection/notebook-basis.d.ts +5 -7
- package/dist/detection/notebook-basis.js +6 -7
- package/dist/detection/notebook-basis.js.map +1 -1
- package/dist/detection/owed-selection.d.ts +51 -0
- package/dist/detection/owed-selection.js +169 -0
- package/dist/detection/owed-selection.js.map +1 -0
- package/dist/detection/portable.d.ts +34 -34
- package/dist/detection/portable.js +67 -93
- package/dist/detection/portable.js.map +1 -1
- package/dist/detection/reconciliation-coverage.d.ts +7 -0
- package/dist/detection/reconciliation-coverage.js +16 -0
- package/dist/detection/reconciliation-coverage.js.map +1 -0
- package/dist/detection/repository-publication.d.ts +20 -0
- package/dist/detection/repository-publication.js +79 -0
- package/dist/detection/repository-publication.js.map +1 -0
- package/dist/detection/repository-routes.d.ts +43 -0
- package/dist/detection/repository-routes.js +97 -0
- package/dist/detection/repository-routes.js.map +1 -0
- package/dist/detection/root-examination.d.ts +94 -0
- package/dist/detection/root-examination.js +523 -0
- package/dist/detection/root-examination.js.map +1 -0
- package/dist/detection/runtime.d.ts +131 -64
- package/dist/detection/runtime.js +808 -1103
- package/dist/detection/runtime.js.map +1 -1
- package/dist/detection/scoped-identity-port.d.ts +34 -0
- package/dist/detection/scoped-identity-port.js +81 -0
- package/dist/detection/scoped-identity-port.js.map +1 -0
- package/dist/detection/seal-law.d.ts +66 -0
- package/dist/detection/seal-law.js +116 -0
- package/dist/detection/seal-law.js.map +1 -0
- package/dist/detection/sharing-policy.d.ts +11 -0
- package/dist/detection/sharing-policy.js +32 -0
- package/dist/detection/sharing-policy.js.map +1 -0
- package/dist/detection/thread-database.d.ts +4 -0
- package/dist/detection/thread-database.js +30 -0
- package/dist/detection/thread-database.js.map +1 -0
- package/dist/detection/unreadable.d.ts +11 -0
- package/dist/detection/unreadable.js +9 -0
- package/dist/detection/unreadable.js.map +1 -0
- package/dist/detection/verified-content.d.ts +6 -0
- package/dist/detection/verified-content.js +12 -0
- package/dist/detection/verified-content.js.map +1 -0
- package/dist/detection/walk-law.d.ts +34 -0
- package/dist/detection/walk-law.js +55 -0
- package/dist/detection/walk-law.js.map +1 -0
- package/dist/development/fly-guest.js +2 -1
- package/dist/development/fly-guest.js.map +1 -1
- package/dist/entity-apply-host.d.ts +29 -13
- package/dist/entity-apply-host.js +1426 -461
- package/dist/entity-apply-host.js.map +1 -1
- package/dist/entity-apply-store.d.ts +77 -30
- package/dist/entity-apply-store.js +221 -516
- package/dist/entity-apply-store.js.map +1 -1
- package/dist/entity-record-observability.js +2 -0
- package/dist/entity-record-observability.js.map +1 -1
- package/dist/entity-record-saves.d.ts +20 -0
- package/dist/entity-record-saves.js +91 -0
- package/dist/entity-record-saves.js.map +1 -0
- package/dist/entity-record-store.d.ts +15 -7
- package/dist/entity-record-store.js +57 -117
- package/dist/entity-record-store.js.map +1 -1
- package/dist/files-register-host.d.ts +22 -3
- package/dist/files-register-host.js +70 -31
- package/dist/files-register-host.js.map +1 -1
- package/dist/filesystem.js +3 -2
- package/dist/filesystem.js.map +1 -1
- package/dist/git-binding.d.ts +65 -0
- package/dist/git-binding.js +220 -0
- package/dist/git-binding.js.map +1 -0
- package/dist/git-capture.d.ts +39 -0
- package/dist/git-capture.js +86 -0
- package/dist/git-capture.js.map +1 -0
- package/dist/git-card.d.ts +12 -0
- package/dist/git-card.js +123 -0
- package/dist/git-card.js.map +1 -0
- package/dist/git-checkpoint-construction.d.ts +41 -0
- package/dist/git-checkpoint-construction.js +96 -0
- package/dist/git-checkpoint-construction.js.map +1 -0
- package/dist/git-checkpoint-preparation.d.ts +37 -0
- package/dist/git-checkpoint-preparation.js +145 -0
- package/dist/git-checkpoint-preparation.js.map +1 -0
- package/dist/git-command.d.ts +61 -8
- package/dist/git-command.js +217 -63
- package/dist/git-command.js.map +1 -1
- package/dist/git-configuration.d.ts +40 -0
- package/dist/git-configuration.js +217 -0
- package/dist/git-configuration.js.map +1 -0
- package/dist/git-evidence.d.ts +61 -0
- package/dist/git-evidence.js +181 -0
- package/dist/git-evidence.js.map +1 -0
- package/dist/git-index-entries.d.ts +15 -0
- package/dist/git-index-entries.js +44 -0
- package/dist/git-index-entries.js.map +1 -0
- package/dist/git-index-format.d.ts +35 -0
- package/dist/git-index-format.js +293 -0
- package/dist/git-index-format.js.map +1 -0
- package/dist/git-index-witness.d.ts +33 -0
- package/dist/git-index-witness.js +69 -0
- package/dist/git-index-witness.js.map +1 -0
- package/dist/git-literal-host.d.ts +82 -0
- package/dist/git-literal-host.js +172 -0
- package/dist/git-literal-host.js.map +1 -0
- package/dist/git-literal-read.d.ts +88 -0
- package/dist/git-literal-read.js +170 -0
- package/dist/git-literal-read.js.map +1 -0
- package/dist/git-literal-replay.d.ts +33 -0
- package/dist/git-literal-replay.js +268 -0
- package/dist/git-literal-replay.js.map +1 -0
- package/dist/git-native-file.d.ts +42 -0
- package/dist/git-native-file.js +145 -0
- package/dist/git-native-file.js.map +1 -0
- package/dist/git-native-index.d.ts +21 -0
- package/dist/git-native-index.js +44 -0
- package/dist/git-native-index.js.map +1 -0
- package/dist/git-operation-host.d.ts +48 -0
- package/dist/git-operation-host.js +127 -0
- package/dist/git-operation-host.js.map +1 -0
- package/dist/git-private-index.d.ts +11 -0
- package/dist/git-private-index.js +42 -0
- package/dist/git-private-index.js.map +1 -0
- package/dist/git-private-repository.d.ts +4 -0
- package/dist/git-private-repository.js +69 -0
- package/dist/git-private-repository.js.map +1 -0
- package/dist/git-private-view.d.ts +39 -0
- package/dist/git-private-view.js +162 -0
- package/dist/git-private-view.js.map +1 -0
- package/dist/git-ref-store.d.ts +12 -0
- package/dist/git-ref-store.js +68 -0
- package/dist/git-ref-store.js.map +1 -0
- package/dist/git-registration-host.d.ts +20 -30
- package/dist/git-registration-host.js +86 -249
- package/dist/git-registration-host.js.map +1 -1
- package/dist/git-repository-host.d.ts +148 -22
- package/dist/git-repository-host.js +633 -650
- package/dist/git-repository-host.js.map +1 -1
- package/dist/git-worktree-host.d.ts +2 -0
- package/dist/git-worktree-host.js +16 -0
- package/dist/git-worktree-host.js.map +1 -0
- package/dist/graph-publication.d.ts +75 -0
- package/dist/graph-publication.js +203 -0
- package/dist/graph-publication.js.map +1 -0
- package/dist/ground-basis.d.ts +242 -0
- package/dist/ground-basis.js +1023 -0
- package/dist/ground-basis.js.map +1 -0
- package/dist/ground-checkpoint-worker.d.ts +1 -0
- package/dist/ground-checkpoint-worker.js +84 -0
- package/dist/ground-checkpoint-worker.js.map +1 -0
- package/dist/ground-checkpoints.d.ts +16 -0
- package/dist/ground-checkpoints.js +45 -0
- package/dist/ground-checkpoints.js.map +1 -0
- package/dist/ground-coordination.d.ts +107 -3
- package/dist/ground-coordination.js +249 -24
- package/dist/ground-coordination.js.map +1 -1
- package/dist/ground-database.d.ts +42 -0
- package/dist/ground-database.js +290 -0
- package/dist/ground-database.js.map +1 -0
- package/dist/ground-differences.d.ts +23 -0
- package/dist/ground-differences.js +47 -0
- package/dist/ground-differences.js.map +1 -0
- package/dist/ground-holders.d.ts +4 -0
- package/dist/ground-holders.js +15 -0
- package/dist/ground-holders.js.map +1 -0
- package/dist/ground-initialization-worker.d.ts +1 -0
- package/dist/ground-initialization-worker.js +20 -0
- package/dist/ground-initialization-worker.js.map +1 -0
- package/dist/ground-initialization.d.ts +35 -0
- package/dist/ground-initialization.js +102 -0
- package/dist/ground-initialization.js.map +1 -0
- package/dist/ground-install-saves.d.ts +63 -0
- package/dist/ground-install-saves.js +139 -0
- package/dist/ground-install-saves.js.map +1 -0
- package/dist/ground-inventory-schema.d.ts +18 -0
- package/dist/ground-inventory-schema.js +168 -0
- package/dist/ground-inventory-schema.js.map +1 -0
- package/dist/ground-profile.d.ts +7 -0
- package/dist/ground-profile.js +52 -0
- package/dist/ground-profile.js.map +1 -0
- package/dist/ground-root-index.d.ts +2 -1
- package/dist/ground-root-index.js +16 -14
- package/dist/ground-root-index.js.map +1 -1
- package/dist/ground-row.d.ts +62 -0
- package/dist/ground-row.js +70 -0
- package/dist/ground-row.js.map +1 -0
- package/dist/ground-save-ops.d.ts +44 -0
- package/dist/ground-save-ops.js +41 -0
- package/dist/ground-save-ops.js.map +1 -0
- package/dist/ground-saver-worker.d.ts +1 -0
- package/dist/ground-saver-worker.js +156 -0
- package/dist/ground-saver-worker.js.map +1 -0
- package/dist/ground-saver.d.ts +75 -0
- package/dist/ground-saver.js +216 -0
- package/dist/ground-saver.js.map +1 -0
- package/dist/ground-store.d.ts +84 -0
- package/dist/ground-store.js +473 -0
- package/dist/ground-store.js.map +1 -0
- package/dist/ground-territory.d.ts +130 -0
- package/dist/ground-territory.js +511 -0
- package/dist/ground-territory.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/installation/ownership.d.ts +0 -2
- package/dist/installation/ownership.js +3 -15
- package/dist/installation/ownership.js.map +1 -1
- package/dist/machine-host.d.ts +3 -2
- package/dist/machine-host.js +28 -16
- package/dist/machine-host.js.map +1 -1
- package/dist/materialized-graph.d.ts +7 -7
- package/dist/materialized-graph.js +11 -23
- package/dist/materialized-graph.js.map +1 -1
- package/dist/module-thread.d.ts +9 -0
- package/dist/module-thread.js +10 -0
- package/dist/module-thread.js.map +1 -0
- package/dist/native/fsevents-stream.node +0 -0
- package/dist/physical-path-witness.d.ts +64 -0
- package/dist/physical-path-witness.js +168 -0
- package/dist/physical-path-witness.js.map +1 -0
- package/dist/register-upload-fusion.d.ts +5 -4
- package/dist/register-upload-fusion.js +9 -6
- package/dist/register-upload-fusion.js.map +1 -1
- package/dist/registry-graph.d.ts +3 -2
- package/dist/registry-graph.js +9 -6
- package/dist/registry-graph.js.map +1 -1
- package/dist/registry-page-cache.d.ts +5 -2
- package/dist/registry-page-cache.js.map +1 -1
- package/dist/repository-identity-steps.d.ts +5 -0
- package/dist/repository-identity-steps.js +33 -0
- package/dist/repository-identity-steps.js.map +1 -0
- package/dist/runtime-node-flags.d.ts +10 -0
- package/dist/runtime-node-flags.js +11 -0
- package/dist/runtime-node-flags.js.map +1 -0
- package/dist/service/adapter.d.ts +1 -1
- package/dist/service/adapter.js +1 -1
- package/dist/service/adapter.js.map +1 -1
- package/dist/service/cli.js +16 -20
- package/dist/service/cli.js.map +1 -1
- package/dist/service/control.d.ts +2 -2
- package/dist/service/keepalive.d.ts +4 -11
- package/dist/service/keepalive.js +65 -118
- package/dist/service/keepalive.js.map +1 -1
- package/dist/service/policy.d.ts +36 -0
- package/dist/service/policy.js +25 -0
- package/dist/service/policy.js.map +1 -0
- package/dist/service/portable.d.ts +1 -1
- package/dist/service/portable.js +1 -1
- package/dist/service/portable.js.map +1 -1
- package/dist/service/recovery.d.ts +10 -9
- package/dist/service/recovery.js +29 -19
- package/dist/service/recovery.js.map +1 -1
- package/dist/service/windows-action.d.ts +5 -3
- package/dist/service/windows-action.js +6 -9
- package/dist/service/windows-action.js.map +1 -1
- package/dist/service/windows-task.js +5 -5
- package/dist/service/windows-task.js.map +1 -1
- package/dist/sharing-admission.d.ts +17 -0
- package/dist/sharing-admission.js +128 -0
- package/dist/sharing-admission.js.map +1 -0
- package/dist/snapshot-delivery-baseline.d.ts +12 -3
- package/dist/snapshot-delivery-baseline.js +41 -42
- package/dist/snapshot-delivery-baseline.js.map +1 -1
- package/dist/source-proof.d.ts +36 -0
- package/dist/source-proof.js +70 -0
- package/dist/source-proof.js.map +1 -0
- package/dist/source-signature.d.ts +56 -0
- package/dist/source-signature.js +56 -0
- package/dist/source-signature.js.map +1 -0
- package/dist/source-witness.d.ts +15 -0
- package/dist/source-witness.js +29 -0
- package/dist/source-witness.js.map +1 -0
- package/dist/sqlite-durability.d.ts +31 -0
- package/dist/sqlite-durability.js +28 -0
- package/dist/sqlite-durability.js.map +1 -0
- package/dist/sqlite.d.ts +8 -2
- package/dist/sqlite.js +27 -4
- package/dist/sqlite.js.map +1 -1
- package/dist/sync-address.d.ts +19 -0
- package/dist/sync-address.js +52 -0
- package/dist/sync-address.js.map +1 -0
- package/dist/sync-setting.d.ts +15 -0
- package/dist/sync-setting.js +13 -0
- package/dist/sync-setting.js.map +1 -1
- package/dist/turns.d.ts +42 -0
- package/dist/turns.js +112 -0
- package/dist/turns.js.map +1 -0
- package/dist/updates/bootstrap.d.ts +53 -7
- package/dist/updates/bootstrap.js +224 -137
- package/dist/updates/bootstrap.js.map +1 -1
- package/dist/updates/controller.d.ts +8 -0
- package/dist/updates/controller.js +27 -3
- package/dist/updates/controller.js.map +1 -1
- package/dist/updates/store.d.ts +3 -0
- package/dist/updates/store.js +12 -0
- package/dist/updates/store.js.map +1 -1
- package/dist/user-ground-host.d.ts +364 -69
- package/dist/user-ground-host.js +5231 -3366
- package/dist/user-ground-host.js.map +1 -1
- package/dist/watching/fsevents.d.ts +52 -1
- package/dist/watching/fsevents.js +60 -25
- package/dist/watching/fsevents.js.map +1 -1
- package/dist/watching/host.d.ts +129 -5
- package/dist/watching/host.js +433 -80
- package/dist/watching/host.js.map +1 -1
- package/dist/watching/index.d.ts +1 -1
- package/dist/wire-binary.d.ts +3 -2
- package/dist/wire-binary.js +10 -8
- package/dist/wire-binary.js.map +1 -1
- package/dist/wire-client.d.ts +3 -4
- package/dist/wire-client.js +18 -44
- package/dist/wire-client.js.map +1 -1
- package/dist/wire-outbox.d.ts +34 -0
- package/dist/wire-outbox.js +127 -0
- package/dist/wire-outbox.js.map +1 -0
- package/dist/workspace-host.d.ts +4 -0
- package/dist/workspace-host.js +12 -1
- package/dist/workspace-host.js.map +1 -1
- package/examinations/fixtures/private-wire-authority.js +133 -10
- package/npm-shrinkwrap.json +43 -56
- package/package.json +26 -13
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/** One observation's physical components, including absence and obstructions.
|
|
2
|
+
* Shared ancestors keep their first evidence; contradictory reads cannot join.
|
|
3
|
+
* A sealed set is plain data, so any thread samples and judges it again. */
|
|
4
|
+
import { constants, lstatSync, readdirSync } from "node:fs";
|
|
5
|
+
import { CaptureSourceChangedError } from "./content-cache-host.js";
|
|
6
|
+
import { sameSource } from "./source-signature.js";
|
|
7
|
+
import { finishSteps, ITEMS_PER_BOUNDARY } from "@amalgm/live";
|
|
8
|
+
const same = (a, b) => a === null ? b === null : b !== null && sameSource(a, b);
|
|
9
|
+
/** A missing component, or one beneath a non-directory, is absence. */
|
|
10
|
+
export const optionalLstat = (path) => {
|
|
11
|
+
try {
|
|
12
|
+
return lstatSync(path, { bigint: true });
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
if (["ENOENT", "ENOTDIR"].includes(error.code ?? ""))
|
|
16
|
+
return null;
|
|
17
|
+
throw error;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
/** Stats belong to the reader. Retain values, never a mutable caller object. */
|
|
21
|
+
export const retainedWitness = (evidence) => evidence === null ? null : Object.freeze({
|
|
22
|
+
dev: evidence.dev, ino: evidence.ino, nlink: evidence.nlink, mode: evidence.mode, size: evidence.size,
|
|
23
|
+
mtimeNs: evidence.mtimeNs, ctimeNs: evidence.ctimeNs, directory: evidence.isDirectory(),
|
|
24
|
+
});
|
|
25
|
+
/** dev, ino, nlink, mode, size, then each time as seconds and nanoseconds.
|
|
26
|
+
* Node's bigint stats are int64 values and its times int64 seconds scaled,
|
|
27
|
+
* so every slot is exact and equal slots are exactly sameSource. */
|
|
28
|
+
const STAT_SLOTS = 9;
|
|
29
|
+
const SECOND_NS = 1000000000n;
|
|
30
|
+
const KIND = BigInt(constants.S_IFMT), DIRECTORY = BigInt(constants.S_IFDIR);
|
|
31
|
+
function pack(stats, at, stat) {
|
|
32
|
+
if (stat === null) {
|
|
33
|
+
stats.fill(0n, at, at + STAT_SLOTS);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
stats[at] = stat.dev;
|
|
37
|
+
stats[at + 1] = stat.ino;
|
|
38
|
+
stats[at + 2] = stat.nlink;
|
|
39
|
+
stats[at + 3] = stat.mode;
|
|
40
|
+
stats[at + 4] = stat.size;
|
|
41
|
+
stats[at + 5] = stat.mtimeNs / SECOND_NS;
|
|
42
|
+
stats[at + 6] = stat.mtimeNs % SECOND_NS;
|
|
43
|
+
stats[at + 7] = stat.ctimeNs / SECOND_NS;
|
|
44
|
+
stats[at + 8] = stat.ctimeNs % SECOND_NS;
|
|
45
|
+
}
|
|
46
|
+
function unpack(stats, at) {
|
|
47
|
+
const mode = stats[at + 3];
|
|
48
|
+
return mode === 0n ? null : Object.freeze({
|
|
49
|
+
dev: stats[at], ino: stats[at + 1], nlink: stats[at + 2], mode, size: stats[at + 4],
|
|
50
|
+
mtimeNs: stats[at + 5] * SECOND_NS + stats[at + 6], ctimeNs: stats[at + 7] * SECOND_NS + stats[at + 8],
|
|
51
|
+
directory: (mode & KIND) === DIRECTORY
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/** Components already ordered prefixes first, packed as one witness in steps
|
|
55
|
+
* (turns.ts) of a bounded run of components each. */
|
|
56
|
+
export function* pathsWitnessSteps(components) {
|
|
57
|
+
const stats = new BigInt64Array(components.length * STAT_SLOTS);
|
|
58
|
+
// Each run joins in its own step, so the last join copies runs, never paths.
|
|
59
|
+
const runs = [];
|
|
60
|
+
let run = [];
|
|
61
|
+
for (let index = 0; index < components.length; index++) {
|
|
62
|
+
const [path, stat] = components[index];
|
|
63
|
+
run.push(path);
|
|
64
|
+
pack(stats, index * STAT_SLOTS, stat);
|
|
65
|
+
if (run.length === ITEMS_PER_BOUNDARY) {
|
|
66
|
+
runs.push(run.join("\0"));
|
|
67
|
+
run = [];
|
|
68
|
+
yield;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (run.length)
|
|
72
|
+
runs.push(run.join("\0"));
|
|
73
|
+
return Object.freeze({ kind: "paths", paths: runs.join("\0"), stats });
|
|
74
|
+
}
|
|
75
|
+
const pathsOf = ({ paths, stats }) => stats.length === 0 ? [] : paths.split("\0");
|
|
76
|
+
/** Each component with its evidence, in the witness's order. */
|
|
77
|
+
export const pathComponents = (witness) => pathsOf(witness).map((path, index) => [path, unpack(witness.stats, index * STAT_SLOTS)]);
|
|
78
|
+
/** Parents forward before children, then every directory again in reverse,
|
|
79
|
+
* so a component replaced and restored around a child's read still differs. */
|
|
80
|
+
export function judgePaths(witness, read = optionalLstat) {
|
|
81
|
+
const paths = pathsOf(witness), { stats } = witness, now = new BigInt64Array(STAT_SLOTS);
|
|
82
|
+
const check = (index) => {
|
|
83
|
+
pack(now, 0, read(paths[index]));
|
|
84
|
+
for (let slot = 0, at = index * STAT_SLOTS; slot < STAT_SLOTS; slot += 1) {
|
|
85
|
+
if (now[slot] !== stats[at + slot])
|
|
86
|
+
throw new CaptureSourceChangedError(`source path changed: ${paths[index]}`);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
for (let index = 0; index < paths.length; index += 1)
|
|
90
|
+
check(index);
|
|
91
|
+
for (let index = paths.length - 1; index >= 0; index -= 1) {
|
|
92
|
+
if ((stats[index * STAT_SLOTS + 3] & KIND) === DIRECTORY)
|
|
93
|
+
check(index);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function readNamespace(path) {
|
|
97
|
+
const stat = lstatSync(path, { bigint: true });
|
|
98
|
+
return !stat.isDirectory() ? null : Object.freeze({ kind: "namespace", path,
|
|
99
|
+
identity: [stat.dev, stat.ino, stat.mode, stat.mtimeNs, stat.ctimeNs].join(":"),
|
|
100
|
+
names: Object.freeze(readdirSync(path).sort()) });
|
|
101
|
+
}
|
|
102
|
+
export function observeNamespace(path) {
|
|
103
|
+
const namespace = readNamespace(path);
|
|
104
|
+
if (namespace === null)
|
|
105
|
+
throw new Error(`namespace witness is not a directory: ${path}`);
|
|
106
|
+
return namespace;
|
|
107
|
+
}
|
|
108
|
+
export function judgeNamespace(witness) {
|
|
109
|
+
const now = readNamespace(witness.path);
|
|
110
|
+
if (now === null || now.identity !== witness.identity || now.names.length !== witness.names.length
|
|
111
|
+
|| now.names.some((name, index) => name !== witness.names[index])) {
|
|
112
|
+
throw new CaptureSourceChangedError(`namespace changed: ${witness.path}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export class PhysicalPathWitnesses {
|
|
116
|
+
#components = new Map();
|
|
117
|
+
#sealed;
|
|
118
|
+
remember(path, evidence) {
|
|
119
|
+
this.adopt(path, retainedWitness(evidence));
|
|
120
|
+
}
|
|
121
|
+
/** Join evidence another reader retained, such as a content thread. */
|
|
122
|
+
adopt(path, witness) {
|
|
123
|
+
if (this.#components.has(path)) {
|
|
124
|
+
if (!same(this.#components.get(path), witness)) {
|
|
125
|
+
throw new CaptureSourceChangedError(`source component changed during collection: ${path}`);
|
|
126
|
+
}
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
this.#components.set(path, witness);
|
|
130
|
+
this.#sealed = undefined;
|
|
131
|
+
}
|
|
132
|
+
/** The evidence already read for one component; undefined when unread. */
|
|
133
|
+
known(path) {
|
|
134
|
+
return this.#components.get(path);
|
|
135
|
+
}
|
|
136
|
+
/** Every component read so far as one witness. A prefix is shorter than its
|
|
137
|
+
* descendants, so a stable ordering by length puts parents first; the
|
|
138
|
+
* witness is reused until another component joins. */
|
|
139
|
+
seal() { return finishSteps(this.sealSteps()); }
|
|
140
|
+
/** The same witness as steps (turns.ts), a bounded run of components per
|
|
141
|
+
* step. It holds the components read when it began; one that joins meanwhile
|
|
142
|
+
* belongs to the next seal. */
|
|
143
|
+
*sealSteps() {
|
|
144
|
+
if (this.#sealed)
|
|
145
|
+
return this.#sealed;
|
|
146
|
+
const components = [...this.#components];
|
|
147
|
+
yield;
|
|
148
|
+
const byLength = [];
|
|
149
|
+
for (const component of components)
|
|
150
|
+
(byLength[component[0].length] ??= []).push(component);
|
|
151
|
+
const ordered = byLength.flat();
|
|
152
|
+
yield;
|
|
153
|
+
const sealed = yield* pathsWitnessSteps(ordered);
|
|
154
|
+
// Components only join, so an unchanged count is an unchanged set.
|
|
155
|
+
if (this.#components.size === components.length)
|
|
156
|
+
this.#sealed = sealed;
|
|
157
|
+
return sealed;
|
|
158
|
+
}
|
|
159
|
+
/** Admission consumers reuse the physical identities actually read, including
|
|
160
|
+
* ancestor directories; they do not perform a second filesystem discovery. */
|
|
161
|
+
*present() {
|
|
162
|
+
for (const witness of this.#components.values())
|
|
163
|
+
if (witness)
|
|
164
|
+
yield witness;
|
|
165
|
+
}
|
|
166
|
+
validate(read) { judgePaths(this.seal(), read); }
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=physical-path-witness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physical-path-witness.js","sourceRoot":"","sources":["../src/physical-path-witness.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* authority's seal inventory first, so a retried or crashed register ships
|
|
8
8
|
* only what is not yet sealed. Large files stream verified blocks during
|
|
9
9
|
* the single capture read and seal their manifest last, behind the same
|
|
10
|
-
* fingerprint law as the classic capture
|
|
10
|
+
* fingerprint law as the classic capture; that read and its hashes run on
|
|
11
|
+
* the stream thread, and this thread only relays each batch to the wire.
|
|
11
12
|
*
|
|
12
13
|
* Fusion is an opportunity, never a dependency. The upload stage still
|
|
13
14
|
* plans afterwards from the authority's seal inventory and remains the
|
|
@@ -17,9 +18,9 @@
|
|
|
17
18
|
* failure; ground failures keep the walk's own churn law. Git repositories
|
|
18
19
|
* stay on their Git-native rail and never enter this module.
|
|
19
20
|
*/
|
|
20
|
-
import type { Stats } from "node:fs";
|
|
21
21
|
import { type ContentChunk, type ContentManifest } from "@amalgm/live";
|
|
22
22
|
import { type CapturedFileContent } from "./content-cache-host.js";
|
|
23
|
+
import type { SourceStat } from "./source-signature.js";
|
|
23
24
|
export interface FusionWirePorts {
|
|
24
25
|
/** The authority's seal inventory for one segment's artifacts. */
|
|
25
26
|
sealedContentHashes(contentHashes: readonly string[]): Promise<ReadonlySet<string>>;
|
|
@@ -61,12 +62,12 @@ export declare class RegisterUploadFusion {
|
|
|
61
62
|
/** Hand one already-captured small artifact's bytes to the cargo rail.
|
|
62
63
|
* Waits only for window room — backpressure, never durability — and a
|
|
63
64
|
* failed stream disables fusion instead of failing the capture. */
|
|
64
|
-
addSmall(absolutePath: string, fingerprint:
|
|
65
|
+
addSmall(absolutePath: string, fingerprint: SourceStat, captured: CapturedFileContent, payload: Buffer): Promise<void>;
|
|
65
66
|
/** Capture one large file by streaming its single read to the authority.
|
|
66
67
|
* Ground churn propagates unchanged into the walk's retry law; a wire
|
|
67
68
|
* failure disables fusion and answers null so the caller captures the
|
|
68
69
|
* classic way and the upload stage ships it. */
|
|
69
|
-
captureLarge(sourceFile: string, expected:
|
|
70
|
+
captureLarge(sourceFile: string, expected: SourceStat): Promise<CapturedFileContent | null>;
|
|
70
71
|
/** Prove every fused source still stands exactly as it was captured — the
|
|
71
72
|
* proof the classic upload's re-read gave for free, at stat cost only.
|
|
72
73
|
* Answers the first moved path, or null while the fused ground stands.
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* authority's seal inventory first, so a retried or crashed register ships
|
|
8
8
|
* only what is not yet sealed. Large files stream verified blocks during
|
|
9
9
|
* the single capture read and seal their manifest last, behind the same
|
|
10
|
-
* fingerprint law as the classic capture
|
|
10
|
+
* fingerprint law as the classic capture; that read and its hashes run on
|
|
11
|
+
* the stream thread, and this thread only relays each batch to the wire.
|
|
11
12
|
*
|
|
12
13
|
* Fusion is an opportunity, never a dependency. The upload stage still
|
|
13
14
|
* plans afterwards from the authority's seal inventory and remains the
|
|
@@ -19,7 +20,9 @@
|
|
|
19
20
|
*/
|
|
20
21
|
import { lstat } from "node:fs/promises";
|
|
21
22
|
import { openCargoStream, } from "@amalgm/live";
|
|
22
|
-
import {
|
|
23
|
+
import { sameCaptureSource } from "./content-cache-host.js";
|
|
24
|
+
import { streamContentUpload } from "./content-stream-thread.js";
|
|
25
|
+
import { concatInTurns } from "./turns.js";
|
|
23
26
|
/** A wire refusal inside a fused capture. Distinguished from ground errors
|
|
24
27
|
* so the caller can disable fusion without disturbing the walk's churn law. */
|
|
25
28
|
class FusionTransportError extends Error {
|
|
@@ -54,7 +57,7 @@ export class RegisterUploadFusion {
|
|
|
54
57
|
content_hash: item.contentHash,
|
|
55
58
|
bytes: item.bytes,
|
|
56
59
|
chunks: item.manifest.chunks,
|
|
57
|
-
})),
|
|
60
|
+
})), await concatInTurns(fresh.map((item) => item.payload)));
|
|
58
61
|
this.cargoSegments += 1;
|
|
59
62
|
this.smallArtifacts += fresh.length;
|
|
60
63
|
for (const item of fresh)
|
|
@@ -105,7 +108,7 @@ export class RegisterUploadFusion {
|
|
|
105
108
|
throw new FusionTransportError(error);
|
|
106
109
|
});
|
|
107
110
|
try {
|
|
108
|
-
const captured = await
|
|
111
|
+
const captured = await streamContentUpload(sourceFile, expected, {
|
|
109
112
|
putBlocks: (chunks, bytes) => guard(this.ports.putBlocks(chunks, bytes)),
|
|
110
113
|
sealManifest: (manifest) => guard(this.ports.sealManifest(manifest)),
|
|
111
114
|
});
|
|
@@ -131,12 +134,12 @@ export class RegisterUploadFusion {
|
|
|
131
134
|
for (const { absolutePath, fingerprint } of this.shipped) {
|
|
132
135
|
let current;
|
|
133
136
|
try {
|
|
134
|
-
current = await lstat(absolutePath);
|
|
137
|
+
current = await lstat(absolutePath, { bigint: true });
|
|
135
138
|
}
|
|
136
139
|
catch {
|
|
137
140
|
return absolutePath;
|
|
138
141
|
}
|
|
139
|
-
if (!
|
|
142
|
+
if (!sameCaptureSource(fingerprint, current))
|
|
140
143
|
return absolutePath;
|
|
141
144
|
}
|
|
142
145
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-upload-fusion.js","sourceRoot":"","sources":["../src/register-upload-fusion.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"register-upload-fusion.js","sourceRoot":"","sources":["../src/register-upload-fusion.ts"],"names":[],"mappings":"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"}
|
package/dist/registry-graph.d.ts
CHANGED
|
@@ -83,8 +83,9 @@ export declare class RegistryGraph {
|
|
|
83
83
|
/** Publish a new graph in which `rebuilt` roots carry the given records and
|
|
84
84
|
* every other root carries its committed pages — and any records this
|
|
85
85
|
* machine already materialized for them — forward. A root mapped to an
|
|
86
|
-
* empty record list is dropped from the graph.
|
|
87
|
-
|
|
86
|
+
* empty record list is dropped from the graph. Every root's pages seal in
|
|
87
|
+
* turns (turns.ts), so a whole-account rebuild never holds the loop. */
|
|
88
|
+
rebuild(rebuilt: ReadonlyMap<string, readonly CloudEntityRecord[]>): Promise<RegistryGraphRebuild>;
|
|
88
89
|
/** Prove, parse, and visit pages in order, fetching a bounded window ahead
|
|
89
90
|
* so the network pipeline stays full while transient memory stays at a few
|
|
90
91
|
* page budgets. The visitor may answer true to stop the scan early. */
|
package/dist/registry-graph.js
CHANGED
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
* every root at once, which is exactly what the authority demands of a
|
|
22
22
|
* commit over a records base.
|
|
23
23
|
*/
|
|
24
|
-
import { graphHeadChecksum, graphHeadFromRootPages, graphHeadReplacement,
|
|
24
|
+
import { graphHeadChecksum, graphHeadFromRootPages, graphHeadReplacement, pagesForRootSteps, parseGraphHead, parseGraphPage, parseSnapshot, proveRootPaginationSteps, recordsByRoot, snapshotFromRecords, stableJson, ENTITY_CLOUD_SCHEMA_VERSION, GRAPH_HEAD_KIND, } from "@amalgm/live";
|
|
25
|
+
import { finishStepsInTurns } from "./turns.js";
|
|
25
26
|
/** How many pages a root materialization fetches ahead of its in-order
|
|
26
27
|
* proof. Bounds transient page bytes at PAGE_PREFETCH page budgets. */
|
|
27
28
|
const PAGE_PREFETCH = 4;
|
|
@@ -96,7 +97,7 @@ export class RegistryGraph {
|
|
|
96
97
|
await this.scanPages(state.pages, (rows) => {
|
|
97
98
|
assembled.push(...rows);
|
|
98
99
|
});
|
|
99
|
-
const records =
|
|
100
|
+
const records = await finishStepsInTurns(proveRootPaginationSteps(rootId.toLowerCase(), assembled, state.pages, this.sha256Hex));
|
|
100
101
|
state.records = records;
|
|
101
102
|
state.rootRecord = records.find((record) => record.uuid === rootId.toLowerCase()) ?? null;
|
|
102
103
|
return records;
|
|
@@ -205,7 +206,8 @@ export class RegistryGraph {
|
|
|
205
206
|
}
|
|
206
207
|
const records = [];
|
|
207
208
|
for (const state of this.roots.values())
|
|
208
|
-
|
|
209
|
+
for (const record of state.records ?? [])
|
|
210
|
+
records.push(record);
|
|
209
211
|
return {
|
|
210
212
|
schemaVersion: ENTITY_CLOUD_SCHEMA_VERSION,
|
|
211
213
|
kind: "amalgm-entity-registry",
|
|
@@ -215,8 +217,9 @@ export class RegistryGraph {
|
|
|
215
217
|
/** Publish a new graph in which `rebuilt` roots carry the given records and
|
|
216
218
|
* every other root carries its committed pages — and any records this
|
|
217
219
|
* machine already materialized for them — forward. A root mapped to an
|
|
218
|
-
* empty record list is dropped from the graph.
|
|
219
|
-
|
|
220
|
+
* empty record list is dropped from the graph. Every root's pages seal in
|
|
221
|
+
* turns (turns.ts), so a whole-account rebuild never holds the loop. */
|
|
222
|
+
async rebuild(rebuilt) {
|
|
220
223
|
const replaced = new Map([...rebuilt].map(([rootId, records]) => [rootId.toLowerCase(), records]));
|
|
221
224
|
if (this.head === null) {
|
|
222
225
|
// The authority's base carries no page identities, so it can prove
|
|
@@ -243,7 +246,7 @@ export class RegistryGraph {
|
|
|
243
246
|
for (const [rootId, records] of replaced) {
|
|
244
247
|
if (records.length === 0)
|
|
245
248
|
continue;
|
|
246
|
-
const rootPages =
|
|
249
|
+
const rootPages = await finishStepsInTurns(pagesForRootSteps(rootId, records, this.sha256Hex));
|
|
247
250
|
pages.push(...rootPages);
|
|
248
251
|
const paged = rootPages.flatMap((page) => page.records);
|
|
249
252
|
nextRoots.set(rootId, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-graph.js","sourceRoot":"","sources":["../src/registry-graph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry-graph.js","sourceRoot":"","sources":["../src/registry-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,2BAA2B,EAC3B,eAAe,GAQhB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAMhD;uEACuE;AACvE,MAAM,aAAa,GAAG,CAAC,CAAC;AAmBxB,SAAS,OAAO,CAAC,GAAY;IAC3B,OAAO,MAAM,CAAE,GAAiC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,OAAO,aAAa;IACxB;kCAC8B;IACrB,IAAI,CAAwB;IAEpB,KAAK,CAAyB;IAE9B,QAAQ,CAAkB;IAE1B,SAAS,CAAY;IAEtC,YACE,IAA2B,EAC3B,KAA6B,EAC7B,QAAyB,EACzB,SAAoB;QAEpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;6EACyE;IACzE,MAAM,CAAC,WAAW,CAChB,OAAqC,EACrC,SAAoB;QAEpB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC3C,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YACrD,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE;gBAChB,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI;gBAClE,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAoB,GAAG,EAAE;YACnC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC,CAAC;QACF,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED;uDACmD;IACnD,MAAM,CAAC,QAAQ,CACb,IAAoB,EACpB,QAAyB,EACzB,SAAoB;QAEpB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IAED;0DACsD;IACtD,aAAa,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;IAC/D,CAAC;IAED;;;;wCAIoC;IACpC,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QACtB,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC;QACxC,KAAK,CAAC,OAAO,KAAK,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,SAAS,GAAc,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,wBAAwB,CAC/D,MAAM,CAAC,WAAW,EAAE,EACpB,SAAS,EACT,KAAK,CAAC,KAAK,EACX,IAAI,CAAC,SAAS,CACf,CAAC,CAAC;YACH,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YACxB,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;YAC1F,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,EAAE,CAAC;QACL,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACrB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;0DAEsD;IACtD,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;QACrE,IAAI,KAAK,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC,UAAU,CAAC;QAC9C,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,+BAA+B,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,+BAA+B,CAAC,CAAC;QAC3F,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;qDAEiD;IACjD,KAAK,CAAC,WAAW;QACf,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED;;gEAE4D;IAC5D,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,UAAU,CAAC;QAClD,MAAM,IAAI,GAA0B,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;oBAAE,OAAO,MAAM,CAAC;YAChF,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YACnC,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC;gBAAE,OAAO,MAAM,CAAC;QACrE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;uEAGmE;IACnE,KAAK,CAAC,UAAU,CAAC,KAA0B;QACzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;QACxC,MAAM,IAAI,GAA0B,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;wBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YACnC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;gBAAE,MAAM;YACrC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;wBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC/C,CAAC;gBACD,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;YACnC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,iEAAiE;IACjE,QAAQ;QACN,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;6EACyE;IACzE,qBAAqB;QACnB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxG,OAAO;YACL,aAAa,EAAE,2BAA2B;YAC1C,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,OAAO;SAC9C,CAAC;IACJ,CAAC;IAED;;;;4EAIwE;IACxE,KAAK,CAAC,OAAO,CACX,OAA0D;QAE1D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAC9D,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,CAAU,CAAC,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,mEAAmE;YACnE,sEAAsE;YACtE,8BAA8B;YAC9B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC,kDAAkD,MAAM,aAAa,CAAC,CAAC;gBACzF,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC/C,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACzC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,SAAS;YACnC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QACD,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACnC,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/F,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;YACzB,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxD,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE;gBACpB,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;gBACxC,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI;gBAClE,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,GAAG,sBAAsB,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CACzE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO;YACL,KAAK,EAAE,IAAI,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;YACxE,SAAS,EAAE,oBAAoB,CAAC,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,KAAK;YACL,QAAQ,EAAE,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;SAClD,CAAC;IACJ,CAAC;IAED;;2EAEuE;IAC/D,KAAK,CAAC,SAAS,CACrB,IAA6B,EAC7B,KAAsE;QAEtE,MAAM,OAAO,GAA0B,EAAE,CAAC;QAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC;YACH,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;gBACpD,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;oBAC7D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC;oBAC1C,KAAK,IAAI,CAAC,CAAC;gBACb,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,KAAK,EAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBACzE,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI;oBAAE,OAAO;YACxC,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,8DAA8D;YAC9D,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;sDAEkD;IAC1C,KAAK,CAAC,WAAW,CACvB,IAA6B,EAC7B,IAAY;QAEZ,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3B,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACnC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1B,OAAO,KAAK,IAAI,GAAG,EAAE,CAAC;gBACpB,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACnB,OAAO,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;gBAC/D,CAAC;gBACD,IAAI,IAAI,GAAG,KAAK;oBAAE,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;;oBAC7B,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;8EAC8E;AAC9E,MAAM,UAAU,mBAAmB,CAAC,IAA2B;IAC7D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;YAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;uBAEuB;AACvB,MAAM,UAAU,yBAAyB,CACvC,KAAiB,EACjB,QAAyB,EACzB,SAAoB;IAEpB,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC5E,CAAC;AAED;;;oEAGoE;AACpE,SAAS,mBAAmB,CAAC,KAAiB;IAC5C,MAAM,QAAQ,GAAG,kBAAkB;SAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACrF,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC3E,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC;AACzC,CAAC;AAED;;oBAEoB;AACpB,MAAM,0BAA0B,GAAG,GAAG,CAAC"}
|
|
@@ -6,9 +6,12 @@
|
|
|
6
6
|
* head; corrupt evidence is ignored and can never poison later retries.
|
|
7
7
|
*/
|
|
8
8
|
import { type GraphPageRef, type Sha256Hex } from "@amalgm/live";
|
|
9
|
+
/** The identity a page's bytes must prove: its size and content hash. */
|
|
10
|
+
type PageIdentity = Pick<GraphPageRef, "sha256" | "bytes">;
|
|
9
11
|
/** Return only byte-exact cached evidence. Missing, torn, or corrupt bytes
|
|
10
12
|
* are all a cache miss and therefore recover through the immutable source. */
|
|
11
|
-
export declare function readVerifiedRegistryPage(file: string, ref:
|
|
13
|
+
export declare function readVerifiedRegistryPage(file: string, ref: PageIdentity, sha256Hex: Sha256Hex): Buffer | null;
|
|
12
14
|
/** Verify before the atomic write. A corrupt authority response must never
|
|
13
15
|
* replace good cache evidence or become a permanent same-size cache poison. */
|
|
14
|
-
export declare function writeVerifiedRegistryPage(file: string, ref:
|
|
16
|
+
export declare function writeVerifiedRegistryPage(file: string, ref: PageIdentity, bytes: Uint8Array, sha256Hex: Sha256Hex): void;
|
|
17
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-page-cache.js","sourceRoot":"","sources":["../src/registry-page-cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIvC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry-page-cache.js","sourceRoot":"","sources":["../src/registry-page-cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIvC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAK9C,SAAS,WAAW,CAClB,GAAiB,EACjB,KAAiB,EACjB,SAAoB;IAEpB,OAAO,KAAK,CAAC,UAAU,KAAK,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC;AAC3E,CAAC;AAED;8EAC8E;AAC9E,MAAM,UAAU,wBAAwB,CACtC,IAAY,EACZ,GAAiB,EACjB,SAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;+EAC+E;AAC/E,MAAM,UAAU,yBAAyB,CACvC,IAAY,EACZ,GAAiB,EACjB,KAAiB,EACjB,SAAoB;IAEpB,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,2BAA2B,CAAC,CAAC;IAC7E,CAAC;IACD,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type RepoIdentityEntry, type RepoIdentityMap, type Steps } from "@amalgm/live";
|
|
2
|
+
/** `repositoryIdentityHash`. */
|
|
3
|
+
export declare function repositoryIdentityHashSteps(identity: readonly RepoIdentityEntry[]): Steps<string>;
|
|
4
|
+
/** `repositoryIdentityMap`. */
|
|
5
|
+
export declare function repositoryIdentityMapSteps(identity: readonly RepoIdentityEntry[]): Steps<RepoIdentityMap>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live's repository identity map and hash (repo-states) as steps (turns.ts):
|
|
3
|
+
* the sort is one step and the hash digests a bounded run of entries per step,
|
|
4
|
+
* so a large repository's map never holds the main thread.
|
|
5
|
+
*/
|
|
6
|
+
import { createHash } from "node:crypto";
|
|
7
|
+
import { assertRepositoryIdentity, ITEMS_PER_BOUNDARY, repositoryIdentityText, sortRepositoryIdentity } from "@amalgm/live";
|
|
8
|
+
function* sortedIdentityHashSteps(sorted) {
|
|
9
|
+
const hash = createHash("sha256");
|
|
10
|
+
let digested = 0;
|
|
11
|
+
for (const text of repositoryIdentityText(sorted)) {
|
|
12
|
+
hash.update(text);
|
|
13
|
+
if (++digested % ITEMS_PER_BOUNDARY === 0)
|
|
14
|
+
yield;
|
|
15
|
+
}
|
|
16
|
+
return hash.digest("hex");
|
|
17
|
+
}
|
|
18
|
+
/** `repositoryIdentityHash`. */
|
|
19
|
+
export function* repositoryIdentityHashSteps(identity) {
|
|
20
|
+
yield;
|
|
21
|
+
const sorted = sortRepositoryIdentity(identity);
|
|
22
|
+
yield;
|
|
23
|
+
return yield* sortedIdentityHashSteps(sorted);
|
|
24
|
+
}
|
|
25
|
+
/** `repositoryIdentityMap`. */
|
|
26
|
+
export function* repositoryIdentityMapSteps(identity) {
|
|
27
|
+
yield;
|
|
28
|
+
const entries = sortRepositoryIdentity(identity);
|
|
29
|
+
assertRepositoryIdentity(entries);
|
|
30
|
+
yield;
|
|
31
|
+
return { entries, identityHash: yield* sortedIdentityHashSteps(entries) };
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=repository-identity-steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository-identity-steps.js","sourceRoot":"","sources":["../src/repository-identity-steps.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,sBAAsB,EACzC,MAAM,cAAc,CAAC;AAEjF,QAAQ,CAAC,CAAC,uBAAuB,CAAC,MAAoC;IACpE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,IAAI,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,EAAE,QAAQ,GAAG,kBAAkB,KAAK,CAAC;YAAE,KAAK,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,gCAAgC;AAChC,MAAM,SAAS,CAAC,CAAC,2BAA2B,CAAC,QAAsC;IACjF,KAAK,CAAC;IACN,MAAM,MAAM,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAChD,KAAK,CAAC;IACN,OAAO,KAAK,CAAC,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,+BAA+B;AAC/B,MAAM,SAAS,CAAC,CAAC,0BAA0B,CAAC,QAAsC;IAChF,KAAK,CAAC;IACN,MAAM,OAAO,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACjD,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC;IACN,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Node flags the runtime process starts with; whatever launches it names
|
|
3
|
+
* these, so tests run what ships. A young-generation collection holds the
|
|
4
|
+
* main thread while it copies survivors, and the semi-space bounds how many
|
|
5
|
+
* survive: 4 MiB keeps each pause to a few milliseconds (the operations
|
|
6
|
+
* profile's longest fell from 19.5 to 5.4 ms, the longest full collection
|
|
7
|
+
* from 34.9 to 13.4 ms, and total collection time halved) at unchanged
|
|
8
|
+
* operation latency.
|
|
9
|
+
*/
|
|
10
|
+
export declare const RUNTIME_NODE_FLAGS: readonly string[];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Node flags the runtime process starts with; whatever launches it names
|
|
3
|
+
* these, so tests run what ships. A young-generation collection holds the
|
|
4
|
+
* main thread while it copies survivors, and the semi-space bounds how many
|
|
5
|
+
* survive: 4 MiB keeps each pause to a few milliseconds (the operations
|
|
6
|
+
* profile's longest fell from 19.5 to 5.4 ms, the longest full collection
|
|
7
|
+
* from 34.9 to 13.4 ms, and total collection time halved) at unchanged
|
|
8
|
+
* operation latency.
|
|
9
|
+
*/
|
|
10
|
+
export const RUNTIME_NODE_FLAGS = Object.freeze(["--max-semi-space-size=4"]);
|
|
11
|
+
//# sourceMappingURL=runtime-node-flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-node-flags.js","sourceRoot":"","sources":["../src/runtime-node-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB,MAAM,CAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC"}
|
|
@@ -34,4 +34,4 @@ export declare function osCommand(command: string, args: readonly string[], opti
|
|
|
34
34
|
export declare function keepaliveCommand(launcher: Pick<Launcher, "node" | "bin">, keepaliveArgs: readonly string[]): readonly string[];
|
|
35
35
|
/** Preserve the OS account environment. The selected data home travels in CLI
|
|
36
36
|
* arguments; changing HOME here would select a different native credential store. */
|
|
37
|
-
export declare function serviceEnvironment(
|
|
37
|
+
export declare function serviceEnvironment(_identity: ServiceIdentity, env?: NodeJS.ProcessEnv): Readonly<Record<string, string>>;
|
package/dist/service/adapter.js
CHANGED
|
@@ -18,7 +18,7 @@ export function keepaliveCommand(launcher, keepaliveArgs) {
|
|
|
18
18
|
}
|
|
19
19
|
/** Preserve the OS account environment. The selected data home travels in CLI
|
|
20
20
|
* arguments; changing HOME here would select a different native credential store. */
|
|
21
|
-
export function serviceEnvironment(
|
|
21
|
+
export function serviceEnvironment(_identity, env = process.env) {
|
|
22
22
|
return { PATH: env.PATH ?? "/usr/local/bin:/usr/bin:/bin", HOME: env.HOME || homedir() };
|
|
23
23
|
}
|
|
24
24
|
//# sourceMappingURL=adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/service/adapter.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA2BlC,4FAA4F;AAC5F,MAAM,UAAU,SAAS,CACvB,OAAe,EACf,IAAuB,EACvB,UAAoE,EAAE;IAEtE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7H,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,gBAAgB,CAAC,QAAwC,EAAE,aAAgC;IACzG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,CAAC;AACzD,CAAC;AAED;qFACqF;AACrF,MAAM,UAAU,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/service/adapter.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA2BlC,4FAA4F;AAC5F,MAAM,UAAU,SAAS,CACvB,OAAe,EACf,IAAuB,EACvB,UAAoE,EAAE;IAEtE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7H,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,gBAAgB,CAAC,QAAwC,EAAE,aAAgC;IACzG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,CAAC;AACzD,CAAC;AAED;qFACqF;AACrF,MAAM,UAAU,kBAAkB,CAAC,SAA0B,EAAE,MAAyB,OAAO,CAAC,GAAG;IACjG,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,8BAA8B,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,EAAE,CAAC;AAC3F,CAAC"}
|
package/dist/service/cli.js
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
* owner one job. `keepalive` is the verb the OS itself runs.
|
|
6
6
|
*/
|
|
7
7
|
import { existsSync, readFileSync, rmSync } from "node:fs";
|
|
8
|
-
import { CHILD_HEALTH_POLICY, CHILD_RESTART_POLICY, readyDeadlineMs } from '@amalgm/core/supervision';
|
|
9
8
|
import { option, parseArguments } from "../cli-arguments.js";
|
|
10
9
|
import { runKeepalive } from "./keepalive.js";
|
|
11
10
|
import { controllerLeaseFile, controllerRequest, keepaliveStatus, stopKeepalive } from "./control.js";
|
|
11
|
+
import { launchLimits } from "./policy.js";
|
|
12
12
|
import { acquireProcessLease } from "../installation/lease.js";
|
|
13
13
|
import { assertSupportedInstallationLayout } from "../installation/layout.js";
|
|
14
14
|
import { dirname, join, resolve } from "node:path";
|
|
@@ -65,16 +65,17 @@ export async function runServiceCli(args, runtimeLabel = "main") {
|
|
|
65
65
|
const owner = ownerFor(registration.backend);
|
|
66
66
|
if (parsed.command === "retry") {
|
|
67
67
|
const state = await controllerRequest(identity, 'retry');
|
|
68
|
-
if (
|
|
69
|
-
|
|
70
|
-
throw new Error('The runtime controller is unavailable or its managed handover requires recovery; its release intent was preserved.');
|
|
71
|
-
}
|
|
72
|
-
await owner.stop(identity);
|
|
73
|
-
await owner.start(identity, registration);
|
|
74
|
-
report('retried', { label: identity.label, phase: 'starting' });
|
|
68
|
+
if (state) {
|
|
69
|
+
report("retried", { label: identity.label, phase: state.phase });
|
|
75
70
|
return 0;
|
|
76
71
|
}
|
|
77
|
-
|
|
72
|
+
// No controller is answering, so its launcher is waiting out a backoff.
|
|
73
|
+
// Clear that wait and start the service again now.
|
|
74
|
+
if (registration.files.bootstrap)
|
|
75
|
+
retryBootstrap(join(identity.serviceDir, 'updates.sqlite'));
|
|
76
|
+
await owner.stop(identity);
|
|
77
|
+
await owner.start(identity, registration);
|
|
78
|
+
report('retried', { label: identity.label, phase: 'starting' });
|
|
78
79
|
return 0;
|
|
79
80
|
}
|
|
80
81
|
if (parsed.command === "start")
|
|
@@ -125,12 +126,7 @@ async function installOwned(identity, parsed) {
|
|
|
125
126
|
&& metadata.amalgmSource?.repository === 'amalgm-inc/amalgm-shell' && metadata.amalgmSource.branch === identity.binding.branch
|
|
126
127
|
&& /^[a-f0-9]{40}$/.test(metadata.amalgmSource.commit) && metadata.amalgmRuntime?.schema === 1;
|
|
127
128
|
const bootstrap = managed ? initializeBootstrap({ serviceDir: identity.serviceDir, controllerLease: controllerLeaseFile(identity),
|
|
128
|
-
current: { node: launcher.node, bin: launcher.bin, args: keepaliveArgs }, limits:
|
|
129
|
-
maxAttempts: CHILD_RESTART_POLICY.maxRestarts + 1, initialDelayMs: CHILD_RESTART_POLICY.initialDelayMs,
|
|
130
|
-
maxDelayMs: CHILD_RESTART_POLICY.maxDelayMs, stableAfterMs: CHILD_RESTART_POLICY.stableAfterMs,
|
|
131
|
-
readyTimeoutMs: readyDeadlineMs(CHILD_HEALTH_POLICY), healthIntervalMs: CHILD_HEALTH_POLICY.intervalMs,
|
|
132
|
-
healthTimeoutMs: CHILD_HEALTH_POLICY.timeoutMs, maxHealthFailures: CHILD_HEALTH_POLICY.maxFailures, stopGraceMs: 30_000,
|
|
133
|
-
} }) : null;
|
|
129
|
+
current: { node: launcher.node, bin: launcher.bin, args: keepaliveArgs }, limits: launchLimits() }) : null;
|
|
134
130
|
if (bootstrap) {
|
|
135
131
|
// A reinstall through an older compatible CLI cannot replace an already
|
|
136
132
|
// selected managed controller with that CLI's immutable package generation.
|
|
@@ -223,17 +219,17 @@ Usage:
|
|
|
223
219
|
amalgm service install --user EMAIL [--mode auto|launchd|systemd|windows|portable]
|
|
224
220
|
amalgm service start --user EMAIL
|
|
225
221
|
amalgm service stop --user EMAIL
|
|
226
|
-
amalgm service retry --user EMAIL (
|
|
222
|
+
amalgm service retry --user EMAIL (restart a failing runtime now, skipping its backoff)
|
|
227
223
|
amalgm service status --user EMAIL
|
|
228
224
|
amalgm service uninstall --user EMAIL
|
|
229
225
|
amalgm service keepalive --user EMAIL (what the OS runs; the foreground entrypoint in portable mode)
|
|
230
226
|
|
|
231
227
|
install registers one keepalive with the OS and starts it: a LaunchAgent on
|
|
232
228
|
macOS, a systemd user unit on Linux, a per-user Task Scheduler owner on
|
|
233
|
-
Windows. The keepalive runs "amalgm run"
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
retry
|
|
229
|
+
Windows. The keepalive runs "amalgm run" and restarts it whenever it exits or
|
|
230
|
+
stops answering, for as long as the machine is on. Consecutive failures wait
|
|
231
|
+
longer between restarts, up to five minutes; a sustained healthy run resets
|
|
232
|
+
the wait and retry skips it. Only stop and uninstall end the runtime.
|
|
237
233
|
Options given to install (--runtime-label, --home, --amalgm-root, --app-url,
|
|
238
234
|
--branch, --proxy-url, --port) are the options the service will run with.
|
|
239
235
|
`;
|