looply-cli 0.0.0-stage → 0.2.0
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/LICENSE +21 -0
- package/README.md +137 -3
- package/dist/.src-hash +1 -0
- package/dist/acceptance-observe.d.ts +108 -0
- package/dist/acceptance-observe.d.ts.map +1 -0
- package/dist/acceptance-observe.js +152 -0
- package/dist/acceptance-observe.js.map +1 -0
- package/dist/agent-cmd.d.ts +131 -0
- package/dist/agent-cmd.d.ts.map +1 -0
- package/dist/agent-cmd.js +154 -0
- package/dist/agent-cmd.js.map +1 -0
- package/dist/agent-contained.d.ts +114 -0
- package/dist/agent-contained.d.ts.map +1 -0
- package/dist/agent-contained.js +292 -0
- package/dist/agent-contained.js.map +1 -0
- package/dist/agent-driver.d.ts +130 -0
- package/dist/agent-driver.d.ts.map +1 -0
- package/dist/agent-driver.js +170 -0
- package/dist/agent-driver.js.map +1 -0
- package/dist/agent-envelope.d.ts +94 -0
- package/dist/agent-envelope.d.ts.map +1 -0
- package/dist/agent-envelope.js +214 -0
- package/dist/agent-envelope.js.map +1 -0
- package/dist/agent-exec.d.ts +182 -0
- package/dist/agent-exec.d.ts.map +1 -0
- package/dist/agent-exec.js +125 -0
- package/dist/agent-exec.js.map +1 -0
- package/dist/agent-runtime.d.ts +23 -0
- package/dist/agent-runtime.d.ts.map +1 -0
- package/dist/agent-runtime.js +143 -0
- package/dist/agent-runtime.js.map +1 -0
- package/dist/approval-gate-read.d.ts +66 -0
- package/dist/approval-gate-read.d.ts.map +1 -0
- package/dist/approval-gate-read.js +138 -0
- package/dist/approval-gate-read.js.map +1 -0
- package/dist/approval-resolution.d.ts +87 -0
- package/dist/approval-resolution.d.ts.map +1 -0
- package/dist/approval-resolution.js +100 -0
- package/dist/approval-resolution.js.map +1 -0
- package/dist/approval-resumes.d.ts +102 -0
- package/dist/approval-resumes.d.ts.map +1 -0
- package/dist/approval-resumes.js +167 -0
- package/dist/approval-resumes.js.map +1 -0
- package/dist/ask-brain.d.ts +167 -0
- package/dist/ask-brain.d.ts.map +1 -0
- package/dist/ask-brain.js +355 -0
- package/dist/ask-brain.js.map +1 -0
- package/dist/autonomy-authority.d.ts +80 -0
- package/dist/autonomy-authority.d.ts.map +1 -0
- package/dist/autonomy-authority.js +82 -0
- package/dist/autonomy-authority.js.map +1 -0
- package/dist/autonomy-controller.d.ts +321 -0
- package/dist/autonomy-controller.d.ts.map +1 -0
- package/dist/autonomy-controller.js +517 -0
- package/dist/autonomy-controller.js.map +1 -0
- package/dist/autonomy-store.d.ts +327 -0
- package/dist/autonomy-store.d.ts.map +1 -0
- package/dist/autonomy-store.js +581 -0
- package/dist/autonomy-store.js.map +1 -0
- package/dist/autonomy-tick.d.ts +257 -0
- package/dist/autonomy-tick.d.ts.map +1 -0
- package/dist/autonomy-tick.js +616 -0
- package/dist/autonomy-tick.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +2719 -0
- package/dist/bin.js.map +1 -0
- package/dist/brain-advice.d.ts +21 -0
- package/dist/brain-advice.d.ts.map +1 -0
- package/dist/brain-advice.js +51 -0
- package/dist/brain-advice.js.map +1 -0
- package/dist/candidate-replay-runtime.d.ts +125 -0
- package/dist/candidate-replay-runtime.d.ts.map +1 -0
- package/dist/candidate-replay-runtime.js +188 -0
- package/dist/candidate-replay-runtime.js.map +1 -0
- package/dist/checkout-carry.d.ts +76 -0
- package/dist/checkout-carry.d.ts.map +1 -0
- package/dist/checkout-carry.js +125 -0
- package/dist/checkout-carry.js.map +1 -0
- package/dist/citation-readers.d.ts +26 -0
- package/dist/citation-readers.d.ts.map +1 -0
- package/dist/citation-readers.js +102 -0
- package/dist/citation-readers.js.map +1 -0
- package/dist/command-receipts.d.ts +79 -0
- package/dist/command-receipts.d.ts.map +1 -0
- package/dist/command-receipts.js +143 -0
- package/dist/command-receipts.js.map +1 -0
- package/dist/command-runner.d.ts +32 -0
- package/dist/command-runner.d.ts.map +1 -0
- package/dist/command-runner.js +108 -0
- package/dist/command-runner.js.map +1 -0
- package/dist/compatible-sets.d.ts +67 -0
- package/dist/compatible-sets.d.ts.map +1 -0
- package/dist/compatible-sets.js +81 -0
- package/dist/compatible-sets.js.map +1 -0
- package/dist/compile-check.d.ts +31 -0
- package/dist/compile-check.d.ts.map +1 -0
- package/dist/compile-check.js +34 -0
- package/dist/compile-check.js.map +1 -0
- package/dist/compile-store.d.ts +16 -0
- package/dist/compile-store.d.ts.map +1 -0
- package/dist/compile-store.js +21 -0
- package/dist/compile-store.js.map +1 -0
- package/dist/completion.d.ts +106 -0
- package/dist/completion.d.ts.map +1 -0
- package/dist/completion.js +131 -0
- package/dist/completion.js.map +1 -0
- package/dist/config.d.ts +549 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +763 -0
- package/dist/config.js.map +1 -0
- package/dist/control-file.d.ts +142 -0
- package/dist/control-file.d.ts.map +1 -0
- package/dist/control-file.js +144 -0
- package/dist/control-file.js.map +1 -0
- package/dist/coordinator-state.d.ts +131 -0
- package/dist/coordinator-state.d.ts.map +1 -0
- package/dist/coordinator-state.js +380 -0
- package/dist/coordinator-state.js.map +1 -0
- package/dist/coordinator.d.ts +95 -0
- package/dist/coordinator.d.ts.map +1 -0
- package/dist/coordinator.js +97 -0
- package/dist/coordinator.js.map +1 -0
- package/dist/cursor-store.d.ts +53 -0
- package/dist/cursor-store.d.ts.map +1 -0
- package/dist/cursor-store.js +98 -0
- package/dist/cursor-store.js.map +1 -0
- package/dist/daemon-cmd.d.ts +239 -0
- package/dist/daemon-cmd.d.ts.map +1 -0
- package/dist/daemon-cmd.js +1751 -0
- package/dist/daemon-cmd.js.map +1 -0
- package/dist/daemon-lock.d.ts +140 -0
- package/dist/daemon-lock.d.ts.map +1 -0
- package/dist/daemon-lock.js +352 -0
- package/dist/daemon-lock.js.map +1 -0
- package/dist/daemon-recovery.d.ts +78 -0
- package/dist/daemon-recovery.d.ts.map +1 -0
- package/dist/daemon-recovery.js +161 -0
- package/dist/daemon-recovery.js.map +1 -0
- package/dist/daemon.d.ts +368 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +601 -0
- package/dist/daemon.js.map +1 -0
- package/dist/declared-response-shape.d.ts +93 -0
- package/dist/declared-response-shape.d.ts.map +1 -0
- package/dist/declared-response-shape.js +200 -0
- package/dist/declared-response-shape.js.map +1 -0
- package/dist/declared-surfaces.d.ts +16 -0
- package/dist/declared-surfaces.d.ts.map +1 -0
- package/dist/declared-surfaces.js +19 -0
- package/dist/declared-surfaces.js.map +1 -0
- package/dist/depends-review.d.ts +113 -0
- package/dist/depends-review.d.ts.map +1 -0
- package/dist/depends-review.js +110 -0
- package/dist/depends-review.js.map +1 -0
- package/dist/doctor.d.ts +91 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +71 -0
- package/dist/doctor.js.map +1 -0
- package/dist/edge-approval.d.ts +105 -0
- package/dist/edge-approval.d.ts.map +1 -0
- package/dist/edge-approval.js +100 -0
- package/dist/edge-approval.js.map +1 -0
- package/dist/evidence-cache.d.ts +45 -0
- package/dist/evidence-cache.d.ts.map +1 -0
- package/dist/evidence-cache.js +90 -0
- package/dist/evidence-cache.js.map +1 -0
- package/dist/evidence-cmd.d.ts +133 -0
- package/dist/evidence-cmd.d.ts.map +1 -0
- package/dist/evidence-cmd.js +347 -0
- package/dist/evidence-cmd.js.map +1 -0
- package/dist/evidence-facts.d.ts +40 -0
- package/dist/evidence-facts.d.ts.map +1 -0
- package/dist/evidence-facts.js +114 -0
- package/dist/evidence-facts.js.map +1 -0
- package/dist/exclusive-lock.d.ts +52 -0
- package/dist/exclusive-lock.d.ts.map +1 -0
- package/dist/exclusive-lock.js +150 -0
- package/dist/exclusive-lock.js.map +1 -0
- package/dist/exec-domains.d.ts +140 -0
- package/dist/exec-domains.d.ts.map +1 -0
- package/dist/exec-domains.js +287 -0
- package/dist/exec-domains.js.map +1 -0
- package/dist/exemption-store.d.ts +197 -0
- package/dist/exemption-store.d.ts.map +1 -0
- package/dist/exemption-store.js +266 -0
- package/dist/exemption-store.js.map +1 -0
- package/dist/explicit-start-gate.d.ts +96 -0
- package/dist/explicit-start-gate.d.ts.map +1 -0
- package/dist/explicit-start-gate.js +103 -0
- package/dist/explicit-start-gate.js.map +1 -0
- package/dist/fs-trouble.d.ts +70 -0
- package/dist/fs-trouble.d.ts.map +1 -0
- package/dist/fs-trouble.js +98 -0
- package/dist/fs-trouble.js.map +1 -0
- package/dist/gate.d.ts +278 -0
- package/dist/gate.d.ts.map +1 -0
- package/dist/gate.js +278 -0
- package/dist/gate.js.map +1 -0
- package/dist/git-driver.d.ts +519 -0
- package/dist/git-driver.d.ts.map +1 -0
- package/dist/git-driver.js +900 -0
- package/dist/git-driver.js.map +1 -0
- package/dist/git-push-executor.d.ts +41 -0
- package/dist/git-push-executor.d.ts.map +1 -0
- package/dist/git-push-executor.js +142 -0
- package/dist/git-push-executor.js.map +1 -0
- package/dist/glob.d.ts +26 -0
- package/dist/glob.d.ts.map +1 -0
- package/dist/glob.js +93 -0
- package/dist/glob.js.map +1 -0
- package/dist/goal-adaptive.d.ts +295 -0
- package/dist/goal-adaptive.d.ts.map +1 -0
- package/dist/goal-adaptive.js +393 -0
- package/dist/goal-adaptive.js.map +1 -0
- package/dist/goal-compile.d.ts +342 -0
- package/dist/goal-compile.d.ts.map +1 -0
- package/dist/goal-compile.js +444 -0
- package/dist/goal-compile.js.map +1 -0
- package/dist/goal-depends-executor.d.ts +55 -0
- package/dist/goal-depends-executor.d.ts.map +1 -0
- package/dist/goal-depends-executor.js +202 -0
- package/dist/goal-depends-executor.js.map +1 -0
- package/dist/goal-execution-evidence.d.ts +135 -0
- package/dist/goal-execution-evidence.d.ts.map +1 -0
- package/dist/goal-execution-evidence.js +159 -0
- package/dist/goal-execution-evidence.js.map +1 -0
- package/dist/goal-gap.d.ts +140 -0
- package/dist/goal-gap.d.ts.map +1 -0
- package/dist/goal-gap.js +197 -0
- package/dist/goal-gap.js.map +1 -0
- package/dist/goal-met-target.d.ts +98 -0
- package/dist/goal-met-target.d.ts.map +1 -0
- package/dist/goal-met-target.js +92 -0
- package/dist/goal-met-target.js.map +1 -0
- package/dist/goal-ownership.d.ts +416 -0
- package/dist/goal-ownership.d.ts.map +1 -0
- package/dist/goal-ownership.js +576 -0
- package/dist/goal-ownership.js.map +1 -0
- package/dist/goal-runs.d.ts +82 -0
- package/dist/goal-runs.d.ts.map +1 -0
- package/dist/goal-runs.js +120 -0
- package/dist/goal-runs.js.map +1 -0
- package/dist/goal-store.d.ts +146 -0
- package/dist/goal-store.d.ts.map +1 -0
- package/dist/goal-store.js +294 -0
- package/dist/goal-store.js.map +1 -0
- package/dist/goal-view.d.ts +156 -0
- package/dist/goal-view.d.ts.map +1 -0
- package/dist/goal-view.js +499 -0
- package/dist/goal-view.js.map +1 -0
- package/dist/governed-approvals.d.ts +152 -0
- package/dist/governed-approvals.d.ts.map +1 -0
- package/dist/governed-approvals.js +246 -0
- package/dist/governed-approvals.js.map +1 -0
- package/dist/governed-broker.d.ts +169 -0
- package/dist/governed-broker.d.ts.map +1 -0
- package/dist/governed-broker.js +196 -0
- package/dist/governed-broker.js.map +1 -0
- package/dist/governed-run.d.ts +220 -0
- package/dist/governed-run.d.ts.map +1 -0
- package/dist/governed-run.js +406 -0
- package/dist/governed-run.js.map +1 -0
- package/dist/grant-reconcile.d.ts +63 -0
- package/dist/grant-reconcile.d.ts.map +1 -0
- package/dist/grant-reconcile.js +121 -0
- package/dist/grant-reconcile.js.map +1 -0
- package/dist/index-for-head.d.ts +56 -0
- package/dist/index-for-head.d.ts.map +1 -0
- package/dist/index-for-head.js +103 -0
- package/dist/index-for-head.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/init-detect.d.ts +39 -0
- package/dist/init-detect.d.ts.map +1 -0
- package/dist/init-detect.js +188 -0
- package/dist/init-detect.js.map +1 -0
- package/dist/integration-deps.d.ts +62 -0
- package/dist/integration-deps.d.ts.map +1 -0
- package/dist/integration-deps.js +251 -0
- package/dist/integration-deps.js.map +1 -0
- package/dist/integration-runtime.d.ts +458 -0
- package/dist/integration-runtime.d.ts.map +1 -0
- package/dist/integration-runtime.js +681 -0
- package/dist/integration-runtime.js.map +1 -0
- package/dist/integration.d.ts +45 -0
- package/dist/integration.d.ts.map +1 -0
- package/dist/integration.js +87 -0
- package/dist/integration.js.map +1 -0
- package/dist/integrator.d.ts +84 -0
- package/dist/integrator.d.ts.map +1 -0
- package/dist/integrator.js +193 -0
- package/dist/integrator.js.map +1 -0
- package/dist/lane-claims.d.ts +174 -0
- package/dist/lane-claims.d.ts.map +1 -0
- package/dist/lane-claims.js +218 -0
- package/dist/lane-claims.js.map +1 -0
- package/dist/lane-coverage.d.ts +87 -0
- package/dist/lane-coverage.d.ts.map +1 -0
- package/dist/lane-coverage.js +129 -0
- package/dist/lane-coverage.js.map +1 -0
- package/dist/ledger-replay.d.ts +115 -0
- package/dist/ledger-replay.d.ts.map +1 -0
- package/dist/ledger-replay.js +155 -0
- package/dist/ledger-replay.js.map +1 -0
- package/dist/ledger-store.d.ts +68 -0
- package/dist/ledger-store.d.ts.map +1 -0
- package/dist/ledger-store.js +111 -0
- package/dist/ledger-store.js.map +1 -0
- package/dist/loop-safety-observer.d.ts +132 -0
- package/dist/loop-safety-observer.d.ts.map +1 -0
- package/dist/loop-safety-observer.js +76 -0
- package/dist/loop-safety-observer.js.map +1 -0
- package/dist/loop-safety-store.d.ts +339 -0
- package/dist/loop-safety-store.d.ts.map +1 -0
- package/dist/loop-safety-store.js +800 -0
- package/dist/loop-safety-store.js.map +1 -0
- package/dist/machine-store.d.ts +54 -0
- package/dist/machine-store.d.ts.map +1 -0
- package/dist/machine-store.js +149 -0
- package/dist/machine-store.js.map +1 -0
- package/dist/mcp-main.d.ts +2 -0
- package/dist/mcp-main.d.ts.map +1 -0
- package/dist/mcp-main.js +116 -0
- package/dist/mcp-main.js.map +1 -0
- package/dist/mcp-server.d.ts +72 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +259 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/model-routing.d.ts +75 -0
- package/dist/model-routing.d.ts.map +1 -0
- package/dist/model-routing.js +108 -0
- package/dist/model-routing.js.map +1 -0
- package/dist/model-transport.d.ts +188 -0
- package/dist/model-transport.d.ts.map +1 -0
- package/dist/model-transport.js +625 -0
- package/dist/model-transport.js.map +1 -0
- package/dist/notify-cadence.d.ts +55 -0
- package/dist/notify-cadence.d.ts.map +1 -0
- package/dist/notify-cadence.js +68 -0
- package/dist/notify-cadence.js.map +1 -0
- package/dist/notify-channel.d.ts +69 -0
- package/dist/notify-channel.d.ts.map +1 -0
- package/dist/notify-channel.js +151 -0
- package/dist/notify-channel.js.map +1 -0
- package/dist/notify.d.ts +71 -0
- package/dist/notify.d.ts.map +1 -0
- package/dist/notify.js +125 -0
- package/dist/notify.js.map +1 -0
- package/dist/observation-inventory.d.ts +65 -0
- package/dist/observation-inventory.d.ts.map +1 -0
- package/dist/observation-inventory.js +139 -0
- package/dist/observation-inventory.js.map +1 -0
- package/dist/owned-children.d.ts +45 -0
- package/dist/owned-children.d.ts.map +1 -0
- package/dist/owned-children.js +64 -0
- package/dist/owned-children.js.map +1 -0
- package/dist/packet-for-goal.d.ts +19 -0
- package/dist/packet-for-goal.d.ts.map +1 -0
- package/dist/packet-for-goal.js +32 -0
- package/dist/packet-for-goal.js.map +1 -0
- package/dist/pair-cmd.d.ts +85 -0
- package/dist/pair-cmd.d.ts.map +1 -0
- package/dist/pair-cmd.js +205 -0
- package/dist/pair-cmd.js.map +1 -0
- package/dist/partial-asker.d.ts +96 -0
- package/dist/partial-asker.d.ts.map +1 -0
- package/dist/partial-asker.js +117 -0
- package/dist/partial-asker.js.map +1 -0
- package/dist/pdf-text-lines.d.ts +17 -0
- package/dist/pdf-text-lines.d.ts.map +1 -0
- package/dist/pdf-text-lines.js +70 -0
- package/dist/pdf-text-lines.js.map +1 -0
- package/dist/pdf-text-worker.d.ts +2 -0
- package/dist/pdf-text-worker.d.ts.map +1 -0
- package/dist/pdf-text-worker.js +81 -0
- package/dist/pdf-text-worker.js.map +1 -0
- package/dist/pdf-text.d.ts +56 -0
- package/dist/pdf-text.d.ts.map +1 -0
- package/dist/pdf-text.js +64 -0
- package/dist/pdf-text.js.map +1 -0
- package/dist/pending-action.d.ts +154 -0
- package/dist/pending-action.d.ts.map +1 -0
- package/dist/pending-action.js +148 -0
- package/dist/pending-action.js.map +1 -0
- package/dist/preemptor.d.ts +40 -0
- package/dist/preemptor.d.ts.map +1 -0
- package/dist/preemptor.js +49 -0
- package/dist/preemptor.js.map +1 -0
- package/dist/programme-mode.d.ts +29 -0
- package/dist/programme-mode.d.ts.map +1 -0
- package/dist/programme-mode.js +50 -0
- package/dist/programme-mode.js.map +1 -0
- package/dist/progress-view.d.ts +14 -0
- package/dist/progress-view.d.ts.map +1 -0
- package/dist/progress-view.js +114 -0
- package/dist/progress-view.js.map +1 -0
- package/dist/project-graph-builder.d.ts +81 -0
- package/dist/project-graph-builder.d.ts.map +1 -0
- package/dist/project-graph-builder.js +246 -0
- package/dist/project-graph-builder.js.map +1 -0
- package/dist/project-graph-runtime.d.ts +86 -0
- package/dist/project-graph-runtime.d.ts.map +1 -0
- package/dist/project-graph-runtime.js +112 -0
- package/dist/project-graph-runtime.js.map +1 -0
- package/dist/project-index-builder.d.ts +96 -0
- package/dist/project-index-builder.d.ts.map +1 -0
- package/dist/project-index-builder.js +298 -0
- package/dist/project-index-builder.js.map +1 -0
- package/dist/project-index-facts.d.ts +51 -0
- package/dist/project-index-facts.d.ts.map +1 -0
- package/dist/project-index-facts.js +117 -0
- package/dist/project-index-facts.js.map +1 -0
- package/dist/project-index-store.d.ts +97 -0
- package/dist/project-index-store.d.ts.map +1 -0
- package/dist/project-index-store.js +140 -0
- package/dist/project-index-store.js.map +1 -0
- package/dist/project-memory-store.d.ts +127 -0
- package/dist/project-memory-store.d.ts.map +1 -0
- package/dist/project-memory-store.js +302 -0
- package/dist/project-memory-store.js.map +1 -0
- package/dist/proposal-store.d.ts +14 -0
- package/dist/proposal-store.d.ts.map +1 -0
- package/dist/proposal-store.js +19 -0
- package/dist/proposal-store.js.map +1 -0
- package/dist/prover.d.ts +80 -0
- package/dist/prover.d.ts.map +1 -0
- package/dist/prover.js +137 -0
- package/dist/prover.js.map +1 -0
- package/dist/provider-identity-store.d.ts +34 -0
- package/dist/provider-identity-store.d.ts.map +1 -0
- package/dist/provider-identity-store.js +72 -0
- package/dist/provider-identity-store.js.map +1 -0
- package/dist/provider-identity.d.ts +104 -0
- package/dist/provider-identity.d.ts.map +1 -0
- package/dist/provider-identity.js +167 -0
- package/dist/provider-identity.js.map +1 -0
- package/dist/provider-limit.d.ts +79 -0
- package/dist/provider-limit.d.ts.map +1 -0
- package/dist/provider-limit.js +148 -0
- package/dist/provider-limit.js.map +1 -0
- package/dist/provider-preflight.d.ts +171 -0
- package/dist/provider-preflight.d.ts.map +1 -0
- package/dist/provider-preflight.js +395 -0
- package/dist/provider-preflight.js.map +1 -0
- package/dist/provider-state.d.ts +120 -0
- package/dist/provider-state.d.ts.map +1 -0
- package/dist/provider-state.js +182 -0
- package/dist/provider-state.js.map +1 -0
- package/dist/providers.d.ts +132 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js +161 -0
- package/dist/providers.js.map +1 -0
- package/dist/publication-recorder.d.ts +117 -0
- package/dist/publication-recorder.d.ts.map +1 -0
- package/dist/publication-recorder.js +124 -0
- package/dist/publication-recorder.js.map +1 -0
- package/dist/pursuit-delivery.d.ts +24 -0
- package/dist/pursuit-delivery.d.ts.map +1 -0
- package/dist/pursuit-delivery.js +38 -0
- package/dist/pursuit-delivery.js.map +1 -0
- package/dist/queue-store.d.ts +132 -0
- package/dist/queue-store.d.ts.map +1 -0
- package/dist/queue-store.js +185 -0
- package/dist/queue-store.js.map +1 -0
- package/dist/queue-summary.d.ts +14 -0
- package/dist/queue-summary.d.ts.map +1 -0
- package/dist/queue-summary.js +82 -0
- package/dist/queue-summary.js.map +1 -0
- package/dist/queue-view.d.ts +20 -0
- package/dist/queue-view.d.ts.map +1 -0
- package/dist/queue-view.js +163 -0
- package/dist/queue-view.js.map +1 -0
- package/dist/queue-write-lease.d.ts +106 -0
- package/dist/queue-write-lease.d.ts.map +1 -0
- package/dist/queue-write-lease.js +282 -0
- package/dist/queue-write-lease.js.map +1 -0
- package/dist/rails-home.d.ts +162 -0
- package/dist/rails-home.d.ts.map +1 -0
- package/dist/rails-home.js +452 -0
- package/dist/rails-home.js.map +1 -0
- package/dist/rails-migrations.d.ts +75 -0
- package/dist/rails-migrations.d.ts.map +1 -0
- package/dist/rails-migrations.js +199 -0
- package/dist/rails-migrations.js.map +1 -0
- package/dist/rails-stores.d.ts +49 -0
- package/dist/rails-stores.d.ts.map +1 -0
- package/dist/rails-stores.js +100 -0
- package/dist/rails-stores.js.map +1 -0
- package/dist/reaper.d.ts +69 -0
- package/dist/reaper.d.ts.map +1 -0
- package/dist/reaper.js +152 -0
- package/dist/reaper.js.map +1 -0
- package/dist/record-store.d.ts +36 -0
- package/dist/record-store.d.ts.map +1 -0
- package/dist/record-store.js +78 -0
- package/dist/record-store.js.map +1 -0
- package/dist/recovery-io.d.ts +50 -0
- package/dist/recovery-io.d.ts.map +1 -0
- package/dist/recovery-io.js +122 -0
- package/dist/recovery-io.js.map +1 -0
- package/dist/recovery.d.ts +146 -0
- package/dist/recovery.d.ts.map +1 -0
- package/dist/recovery.js +110 -0
- package/dist/recovery.js.map +1 -0
- package/dist/redraw.d.ts +34 -0
- package/dist/redraw.d.ts.map +1 -0
- package/dist/redraw.js +62 -0
- package/dist/redraw.js.map +1 -0
- package/dist/rejected-evidence.d.ts +255 -0
- package/dist/rejected-evidence.d.ts.map +1 -0
- package/dist/rejected-evidence.js +324 -0
- package/dist/rejected-evidence.js.map +1 -0
- package/dist/report-cmd.d.ts +32 -0
- package/dist/report-cmd.d.ts.map +1 -0
- package/dist/report-cmd.js +201 -0
- package/dist/report-cmd.js.map +1 -0
- package/dist/repos-cmd.d.ts +80 -0
- package/dist/repos-cmd.d.ts.map +1 -0
- package/dist/repos-cmd.js +240 -0
- package/dist/repos-cmd.js.map +1 -0
- package/dist/request-body-shape.d.ts +93 -0
- package/dist/request-body-shape.d.ts.map +1 -0
- package/dist/request-body-shape.js +407 -0
- package/dist/request-body-shape.js.map +1 -0
- package/dist/requirement-claims.d.ts +89 -0
- package/dist/requirement-claims.d.ts.map +1 -0
- package/dist/requirement-claims.js +92 -0
- package/dist/requirement-claims.js.map +1 -0
- package/dist/retention-apply-runtime.d.ts +105 -0
- package/dist/retention-apply-runtime.d.ts.map +1 -0
- package/dist/retention-apply-runtime.js +269 -0
- package/dist/retention-apply-runtime.js.map +1 -0
- package/dist/reverify.d.ts +41 -0
- package/dist/reverify.d.ts.map +1 -0
- package/dist/reverify.js +69 -0
- package/dist/reverify.js.map +1 -0
- package/dist/round-records.d.ts +65 -0
- package/dist/round-records.d.ts.map +1 -0
- package/dist/round-records.js +61 -0
- package/dist/round-records.js.map +1 -0
- package/dist/round-runner.d.ts +924 -0
- package/dist/round-runner.d.ts.map +1 -0
- package/dist/round-runner.js +1693 -0
- package/dist/round-runner.js.map +1 -0
- package/dist/run-approval.d.ts +180 -0
- package/dist/run-approval.d.ts.map +1 -0
- package/dist/run-approval.js +199 -0
- package/dist/run-approval.js.map +1 -0
- package/dist/run-cmd.d.ts +359 -0
- package/dist/run-cmd.d.ts.map +1 -0
- package/dist/run-cmd.js +4418 -0
- package/dist/run-cmd.js.map +1 -0
- package/dist/run-delivery.d.ts +71 -0
- package/dist/run-delivery.d.ts.map +1 -0
- package/dist/run-delivery.js +104 -0
- package/dist/run-delivery.js.map +1 -0
- package/dist/run-ended.d.ts +75 -0
- package/dist/run-ended.d.ts.map +1 -0
- package/dist/run-ended.js +27 -0
- package/dist/run-ended.js.map +1 -0
- package/dist/run-ending-locator.d.ts +125 -0
- package/dist/run-ending-locator.d.ts.map +1 -0
- package/dist/run-ending-locator.js +133 -0
- package/dist/run-ending-locator.js.map +1 -0
- package/dist/run-launcher.d.ts +459 -0
- package/dist/run-launcher.d.ts.map +1 -0
- package/dist/run-launcher.js +652 -0
- package/dist/run-launcher.js.map +1 -0
- package/dist/run-lease.d.ts +208 -0
- package/dist/run-lease.d.ts.map +1 -0
- package/dist/run-lease.js +301 -0
- package/dist/run-lease.js.map +1 -0
- package/dist/run-refusal-marks.d.ts +189 -0
- package/dist/run-refusal-marks.d.ts.map +1 -0
- package/dist/run-refusal-marks.js +249 -0
- package/dist/run-refusal-marks.js.map +1 -0
- package/dist/run-start-marks.d.ts +153 -0
- package/dist/run-start-marks.d.ts.map +1 -0
- package/dist/run-start-marks.js +269 -0
- package/dist/run-start-marks.js.map +1 -0
- package/dist/scan-cmd.d.ts +14 -0
- package/dist/scan-cmd.d.ts.map +1 -0
- package/dist/scan-cmd.js +270 -0
- package/dist/scan-cmd.js.map +1 -0
- package/dist/scan-events.d.ts +50 -0
- package/dist/scan-events.d.ts.map +1 -0
- package/dist/scan-events.js +91 -0
- package/dist/scan-events.js.map +1 -0
- package/dist/scan.d.ts +191 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +417 -0
- package/dist/scan.js.map +1 -0
- package/dist/scope-rule.d.ts +148 -0
- package/dist/scope-rule.d.ts.map +1 -0
- package/dist/scope-rule.js +121 -0
- package/dist/scope-rule.js.map +1 -0
- package/dist/self-repo-id.d.ts +18 -0
- package/dist/self-repo-id.d.ts.map +1 -0
- package/dist/self-repo-id.js +70 -0
- package/dist/self-repo-id.js.map +1 -0
- package/dist/server-client.d.ts +766 -0
- package/dist/server-client.d.ts.map +1 -0
- package/dist/server-client.js +475 -0
- package/dist/server-client.js.map +1 -0
- package/dist/session-adapter-runtime.d.ts +195 -0
- package/dist/session-adapter-runtime.d.ts.map +1 -0
- package/dist/session-adapter-runtime.js +373 -0
- package/dist/session-adapter-runtime.js.map +1 -0
- package/dist/session-checkpoint-runtime.d.ts +62 -0
- package/dist/session-checkpoint-runtime.d.ts.map +1 -0
- package/dist/session-checkpoint-runtime.js +268 -0
- package/dist/session-checkpoint-runtime.js.map +1 -0
- package/dist/session-control-transport.d.ts +106 -0
- package/dist/session-control-transport.d.ts.map +1 -0
- package/dist/session-control-transport.js +232 -0
- package/dist/session-control-transport.js.map +1 -0
- package/dist/session-observation-store.d.ts +98 -0
- package/dist/session-observation-store.d.ts.map +1 -0
- package/dist/session-observation-store.js +155 -0
- package/dist/session-observation-store.js.map +1 -0
- package/dist/session-observe-runtime.d.ts +123 -0
- package/dist/session-observe-runtime.d.ts.map +1 -0
- package/dist/session-observe-runtime.js +317 -0
- package/dist/session-observe-runtime.js.map +1 -0
- package/dist/session-store.d.ts +98 -0
- package/dist/session-store.d.ts.map +1 -0
- package/dist/session-store.js +116 -0
- package/dist/session-store.js.map +1 -0
- package/dist/sessions-cmd.d.ts +202 -0
- package/dist/sessions-cmd.d.ts.map +1 -0
- package/dist/sessions-cmd.js +609 -0
- package/dist/sessions-cmd.js.map +1 -0
- package/dist/settings-overlay.d.ts +53 -0
- package/dist/settings-overlay.d.ts.map +1 -0
- package/dist/settings-overlay.js +175 -0
- package/dist/settings-overlay.js.map +1 -0
- package/dist/setup-prompt.d.ts +34 -0
- package/dist/setup-prompt.d.ts.map +1 -0
- package/dist/setup-prompt.js +92 -0
- package/dist/setup-prompt.js.map +1 -0
- package/dist/setup.d.ts +103 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +283 -0
- package/dist/setup.js.map +1 -0
- package/dist/shared-grants.d.ts +164 -0
- package/dist/shared-grants.d.ts.map +1 -0
- package/dist/shared-grants.js +242 -0
- package/dist/shared-grants.js.map +1 -0
- package/dist/signals.d.ts +55 -0
- package/dist/signals.d.ts.map +1 -0
- package/dist/signals.js +85 -0
- package/dist/signals.js.map +1 -0
- package/dist/source-cmd.d.ts +201 -0
- package/dist/source-cmd.d.ts.map +1 -0
- package/dist/source-cmd.js +684 -0
- package/dist/source-cmd.js.map +1 -0
- package/dist/source-verdict.d.ts +99 -0
- package/dist/source-verdict.d.ts.map +1 -0
- package/dist/source-verdict.js +182 -0
- package/dist/source-verdict.js.map +1 -0
- package/dist/spend-ledger.d.ts +350 -0
- package/dist/spend-ledger.d.ts.map +1 -0
- package/dist/spend-ledger.js +546 -0
- package/dist/spend-ledger.js.map +1 -0
- package/dist/stale-run-sweep.d.ts +79 -0
- package/dist/stale-run-sweep.d.ts.map +1 -0
- package/dist/stale-run-sweep.js +116 -0
- package/dist/stale-run-sweep.js.map +1 -0
- package/dist/start-attempts.d.ts +385 -0
- package/dist/start-attempts.d.ts.map +1 -0
- package/dist/start-attempts.js +613 -0
- package/dist/start-attempts.js.map +1 -0
- package/dist/status-cmd.d.ts +28 -0
- package/dist/status-cmd.d.ts.map +1 -0
- package/dist/status-cmd.js +116 -0
- package/dist/status-cmd.js.map +1 -0
- package/dist/stop-follow-up.d.ts +107 -0
- package/dist/stop-follow-up.d.ts.map +1 -0
- package/dist/stop-follow-up.js +172 -0
- package/dist/stop-follow-up.js.map +1 -0
- package/dist/surface-lease.d.ts +118 -0
- package/dist/surface-lease.d.ts.map +1 -0
- package/dist/surface-lease.js +485 -0
- package/dist/surface-lease.js.map +1 -0
- package/dist/sync.d.ts +54 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +93 -0
- package/dist/sync.js.map +1 -0
- package/dist/syncing-ledger.d.ts +45 -0
- package/dist/syncing-ledger.d.ts.map +1 -0
- package/dist/syncing-ledger.js +53 -0
- package/dist/syncing-ledger.js.map +1 -0
- package/dist/temp-fixtures.d.ts +68 -0
- package/dist/temp-fixtures.d.ts.map +1 -0
- package/dist/temp-fixtures.js +38 -0
- package/dist/temp-fixtures.js.map +1 -0
- package/dist/token-window.d.ts +84 -0
- package/dist/token-window.d.ts.map +1 -0
- package/dist/token-window.js +143 -0
- package/dist/token-window.js.map +1 -0
- package/dist/tool-bridge.d.ts +177 -0
- package/dist/tool-bridge.d.ts.map +1 -0
- package/dist/tool-bridge.js +329 -0
- package/dist/tool-bridge.js.map +1 -0
- package/dist/tool-call-record.d.ts +197 -0
- package/dist/tool-call-record.d.ts.map +1 -0
- package/dist/tool-call-record.js +276 -0
- package/dist/tool-call-record.js.map +1 -0
- package/dist/tool-protocol.d.ts +135 -0
- package/dist/tool-protocol.d.ts.map +1 -0
- package/dist/tool-protocol.js +104 -0
- package/dist/tool-protocol.js.map +1 -0
- package/dist/tool-worker.d.ts +3 -0
- package/dist/tool-worker.d.ts.map +1 -0
- package/dist/tool-worker.js +478 -0
- package/dist/tool-worker.js.map +1 -0
- package/dist/toolchain-mirror.d.ts +86 -0
- package/dist/toolchain-mirror.d.ts.map +1 -0
- package/dist/toolchain-mirror.js +307 -0
- package/dist/toolchain-mirror.js.map +1 -0
- package/dist/trusted-git.d.ts +243 -0
- package/dist/trusted-git.d.ts.map +1 -0
- package/dist/trusted-git.js +920 -0
- package/dist/trusted-git.js.map +1 -0
- package/dist/ui.d.ts +76 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +118 -0
- package/dist/ui.js.map +1 -0
- package/dist/untrusted-exec.d.ts +275 -0
- package/dist/untrusted-exec.d.ts.map +1 -0
- package/dist/untrusted-exec.js +479 -0
- package/dist/untrusted-exec.js.map +1 -0
- package/dist/untrusted-gate.d.ts +73 -0
- package/dist/untrusted-gate.d.ts.map +1 -0
- package/dist/untrusted-gate.js +226 -0
- package/dist/untrusted-gate.js.map +1 -0
- package/dist/uploader.d.ts +153 -0
- package/dist/uploader.d.ts.map +1 -0
- package/dist/uploader.js +204 -0
- package/dist/uploader.js.map +1 -0
- package/dist/verifier.d.ts +66 -0
- package/dist/verifier.d.ts.map +1 -0
- package/dist/verifier.js +170 -0
- package/dist/verifier.js.map +1 -0
- package/dist/verify-apply.d.ts +26 -0
- package/dist/verify-apply.d.ts.map +1 -0
- package/dist/verify-apply.js +36 -0
- package/dist/verify-apply.js.map +1 -0
- package/dist/verify-cmd.d.ts +44 -0
- package/dist/verify-cmd.d.ts.map +1 -0
- package/dist/verify-cmd.js +125 -0
- package/dist/verify-cmd.js.map +1 -0
- package/dist/verify-pass.d.ts +73 -0
- package/dist/verify-pass.d.ts.map +1 -0
- package/dist/verify-pass.js +103 -0
- package/dist/verify-pass.js.map +1 -0
- package/dist/welcome.d.ts +43 -0
- package/dist/welcome.d.ts.map +1 -0
- package/dist/welcome.js +116 -0
- package/dist/welcome.js.map +1 -0
- package/dist/workspace-provisioner.d.ts +65 -0
- package/dist/workspace-provisioner.d.ts.map +1 -0
- package/dist/workspace-provisioner.js +66 -0
- package/dist/workspace-provisioner.js.map +1 -0
- package/dist/workspace-quarantine.d.ts +64 -0
- package/dist/workspace-quarantine.d.ts.map +1 -0
- package/dist/workspace-quarantine.js +156 -0
- package/dist/workspace-quarantine.js.map +1 -0
- package/dist/workspace-residue-sweep.d.ts +113 -0
- package/dist/workspace-residue-sweep.d.ts.map +1 -0
- package/dist/workspace-residue-sweep.js +158 -0
- package/dist/workspace-residue-sweep.js.map +1 -0
- package/dist/workspace.d.ts +639 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +2026 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +54 -6
- package/win/CredProbe.cs +64 -0
- package/win/FakeClaude.cs +56 -0
- package/win/HandleProbe.cs +116 -0
- package/win/TokenProbe.cs +53 -0
- package/win/appcontainer.ps1 +500 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type LooplyConfig } from './config';
|
|
2
|
+
/**
|
|
3
|
+
* Settings from the phone, laid over the config file.
|
|
4
|
+
*
|
|
5
|
+
* Every project setting was written to the server and read by nobody: the run
|
|
6
|
+
* loaded `.looply/config.yaml` and stopped there, so turning off "Check every
|
|
7
|
+
* change" on your phone changed precisely nothing about the next run. The
|
|
8
|
+
* screen was wired at both ends and terminated in a dead end.
|
|
9
|
+
*
|
|
10
|
+
* **Only settings a person actually set are applied.** The server returns every
|
|
11
|
+
* key in the registry, tagging unset ones `from: 'default'` — and those defaults
|
|
12
|
+
* are the registry's, not this project's. Applying them would mean a config
|
|
13
|
+
* saying `max_rounds: 12` silently became 400 the moment a run consulted the
|
|
14
|
+
* server, which is the opposite of respecting either source. So `default` is
|
|
15
|
+
* skipped, and the file stands wherever the phone has said nothing.
|
|
16
|
+
*
|
|
17
|
+
* Where a person HAS set one, the phone wins. That is the whole promise of a
|
|
18
|
+
* remote control: a switch you flick has to do something, and a setting that
|
|
19
|
+
* loses to a file you cannot see from the sofa is a lie told in a nice font.
|
|
20
|
+
*
|
|
21
|
+
* Every override is announced. Divergence between a committed file and a live
|
|
22
|
+
* run is only dangerous when it is silent.
|
|
23
|
+
*/
|
|
24
|
+
/** A setting as the server resolves it. */
|
|
25
|
+
export interface ResolvedSettingLike {
|
|
26
|
+
key: string;
|
|
27
|
+
value: unknown;
|
|
28
|
+
from: string;
|
|
29
|
+
}
|
|
30
|
+
export interface Override {
|
|
31
|
+
key: string;
|
|
32
|
+
/** What the config file said, for the log line. */
|
|
33
|
+
was: unknown;
|
|
34
|
+
now: unknown;
|
|
35
|
+
}
|
|
36
|
+
export interface OverlayResult {
|
|
37
|
+
config: LooplyConfig;
|
|
38
|
+
overrides: Override[];
|
|
39
|
+
/** Set keys the run has no home for, so they are reported rather than dropped. */
|
|
40
|
+
ignored: string[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Apply the settings a person set. Never mutates the config it is given.
|
|
44
|
+
*
|
|
45
|
+
* Rails are deliberately absent apart from `exemptions`: forbidden paths are
|
|
46
|
+
* the one thing a phone must not be able to widen remotely. A rail exists to
|
|
47
|
+
* stop an autonomous agent touching something, and a control that can remove it
|
|
48
|
+
* from a sofa is not a rail.
|
|
49
|
+
*/
|
|
50
|
+
export declare function applySettings(config: LooplyConfig, resolved: readonly ResolvedSettingLike[]): OverlayResult;
|
|
51
|
+
/** The lines a run prints about what its phone changed. */
|
|
52
|
+
export declare function describeOverrides(result: OverlayResult): string[];
|
|
53
|
+
//# sourceMappingURL=settings-overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-overlay.d.ts","sourceRoot":"","sources":["../src/settings-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,YAAY,EAAsB,MAAM,UAAU,CAAC;AAE/F;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,2CAA2C;AAC3C,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,kFAAkF;IAClF,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAgHD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,SAAS,mBAAmB,EAAE,GACvC,aAAa,CAiCf;AAED,2DAA2D;AAC3D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CASjE"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applySettings = applySettings;
|
|
4
|
+
exports.describeOverrides = describeOverrides;
|
|
5
|
+
const config_1 = require("./config");
|
|
6
|
+
/**
|
|
7
|
+
* Where each project setting lands in the config.
|
|
8
|
+
*
|
|
9
|
+
* A setter returns the previous value when it applied, and `undefined` when the
|
|
10
|
+
* value was the wrong shape — a bad value must not half-apply, and a caller
|
|
11
|
+
* that returns undefined is reported as ignored rather than silently dropped.
|
|
12
|
+
*/
|
|
13
|
+
const num = (v) => typeof v === 'number' && Number.isFinite(v) ? v : null;
|
|
14
|
+
const SETTERS = {
|
|
15
|
+
'project.run.minHours': (c, v) => {
|
|
16
|
+
const n = num(v);
|
|
17
|
+
if (n === null || n <= 0)
|
|
18
|
+
return undefined;
|
|
19
|
+
const was = c.run.minHours;
|
|
20
|
+
c.run.minHours = n;
|
|
21
|
+
return was;
|
|
22
|
+
},
|
|
23
|
+
'project.run.maxRounds': (c, v) => {
|
|
24
|
+
const n = num(v);
|
|
25
|
+
if (n === null || !Number.isInteger(n) || n < 1)
|
|
26
|
+
return undefined;
|
|
27
|
+
const was = c.run.maxRounds;
|
|
28
|
+
c.run.maxRounds = n;
|
|
29
|
+
return was;
|
|
30
|
+
},
|
|
31
|
+
'project.run.cooldownS': (c, v) => {
|
|
32
|
+
const n = num(v);
|
|
33
|
+
if (n === null || n < 0)
|
|
34
|
+
return undefined;
|
|
35
|
+
const was = c.run.cooldownS;
|
|
36
|
+
c.run.cooldownS = n;
|
|
37
|
+
return was;
|
|
38
|
+
},
|
|
39
|
+
'project.proof.enabled': (c, v) => {
|
|
40
|
+
if (typeof v !== 'boolean')
|
|
41
|
+
return undefined;
|
|
42
|
+
const was = c.proof.enabled;
|
|
43
|
+
c.proof.enabled = v;
|
|
44
|
+
return was;
|
|
45
|
+
},
|
|
46
|
+
'project.proof.onPartial': (c, v) => {
|
|
47
|
+
if (v !== 'ask' && v !== 'keep' && v !== 'discard')
|
|
48
|
+
return undefined;
|
|
49
|
+
const was = c.proof.onPartial;
|
|
50
|
+
c.proof.onPartial = v;
|
|
51
|
+
return was;
|
|
52
|
+
},
|
|
53
|
+
'project.queue.topupThreshold': (c, v) => {
|
|
54
|
+
const n = num(v);
|
|
55
|
+
if (n === null || !Number.isInteger(n) || n < 0)
|
|
56
|
+
return undefined;
|
|
57
|
+
const was = c.queue.topupThreshold;
|
|
58
|
+
c.queue.topupThreshold = n;
|
|
59
|
+
return was;
|
|
60
|
+
},
|
|
61
|
+
'project.queue.topupSize': (c, v) => {
|
|
62
|
+
const n = num(v);
|
|
63
|
+
if (n === null || !Number.isInteger(n) || n < 1)
|
|
64
|
+
return undefined;
|
|
65
|
+
const was = c.queue.topupSize;
|
|
66
|
+
c.queue.topupSize = n;
|
|
67
|
+
return was;
|
|
68
|
+
},
|
|
69
|
+
'project.queue.maxSameShape': (c, v) => {
|
|
70
|
+
const n = num(v);
|
|
71
|
+
if (n === null || !Number.isInteger(n) || n < 1)
|
|
72
|
+
return undefined;
|
|
73
|
+
const was = c.queue.maxSameShape;
|
|
74
|
+
c.queue.maxSameShape = n;
|
|
75
|
+
return was;
|
|
76
|
+
},
|
|
77
|
+
'project.notify.everyMin': (c, v) => {
|
|
78
|
+
const n = num(v);
|
|
79
|
+
if (n === null || n < 0)
|
|
80
|
+
return undefined;
|
|
81
|
+
const was = c.notify.everyMin;
|
|
82
|
+
c.notify.everyMin = n;
|
|
83
|
+
return was;
|
|
84
|
+
},
|
|
85
|
+
/**
|
|
86
|
+
* WHETHER ANYTHING MAY LEAVE THIS MACHINE — the eleventh key, and the one
|
|
87
|
+
* this file's own opening paragraph was written about.
|
|
88
|
+
*
|
|
89
|
+
* `project.push.policy` has been in the settings registry, offered on the
|
|
90
|
+
* phone and marked sensitive since before anything could publish, and it was
|
|
91
|
+
* mapped to nothing. It was the last key still in the state described above:
|
|
92
|
+
* written to the server and read by nobody, a screen wired at both ends and
|
|
93
|
+
* terminating in a dead end.
|
|
94
|
+
*
|
|
95
|
+
* IT NARROWS ONLY. Every other setter here lets the phone win outright,
|
|
96
|
+
* because a person turning `max_rounds` up is a person who meant it. This one
|
|
97
|
+
* refuses to WIDEN what the file granted: a config saying `never` cannot be
|
|
98
|
+
* turned into `on-approval` from a screen, because the file is the thing a
|
|
99
|
+
* person can review in a diff and the screen is the thing a stolen session
|
|
100
|
+
* can reach. Narrowing — `on-approval` down to `never` — always applies,
|
|
101
|
+
* because refusing to publish is never the dangerous direction.
|
|
102
|
+
*/
|
|
103
|
+
'project.push.policy': (c, v) => {
|
|
104
|
+
if (typeof v !== 'string' || !config_1.PUBLISH_POLICIES.includes(v))
|
|
105
|
+
return undefined;
|
|
106
|
+
const was = c.publish.policy;
|
|
107
|
+
const next = v;
|
|
108
|
+
// Widening is reported as ignored rather than applied, so it is announced
|
|
109
|
+
// rather than silently refused.
|
|
110
|
+
if (!(0, config_1.mayPublish)(was) && (0, config_1.mayPublish)(next))
|
|
111
|
+
return undefined;
|
|
112
|
+
c.publish = { policy: next };
|
|
113
|
+
return was;
|
|
114
|
+
},
|
|
115
|
+
'project.rails.exemptions': (c, v) => {
|
|
116
|
+
if (v !== 'ask' && v !== 'never')
|
|
117
|
+
return undefined;
|
|
118
|
+
const was = c.rails.exemptions;
|
|
119
|
+
c.rails.exemptions = v;
|
|
120
|
+
return was;
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Apply the settings a person set. Never mutates the config it is given.
|
|
125
|
+
*
|
|
126
|
+
* Rails are deliberately absent apart from `exemptions`: forbidden paths are
|
|
127
|
+
* the one thing a phone must not be able to widen remotely. A rail exists to
|
|
128
|
+
* stop an autonomous agent touching something, and a control that can remove it
|
|
129
|
+
* from a sofa is not a rail.
|
|
130
|
+
*/
|
|
131
|
+
function applySettings(config, resolved) {
|
|
132
|
+
const next = {
|
|
133
|
+
...config,
|
|
134
|
+
run: { ...config.run },
|
|
135
|
+
rails: { ...config.rails },
|
|
136
|
+
queue: { ...config.queue },
|
|
137
|
+
proof: { ...config.proof },
|
|
138
|
+
notify: { ...config.notify },
|
|
139
|
+
publish: { ...config.publish },
|
|
140
|
+
};
|
|
141
|
+
const overrides = [];
|
|
142
|
+
const ignored = [];
|
|
143
|
+
for (const s of resolved) {
|
|
144
|
+
// The file wins wherever nobody has chosen. See the note at the top.
|
|
145
|
+
if (s.from === 'default')
|
|
146
|
+
continue;
|
|
147
|
+
const setter = SETTERS[s.key];
|
|
148
|
+
if (!setter) {
|
|
149
|
+
ignored.push(s.key);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
const was = setter(next, s.value);
|
|
153
|
+
if (was === undefined) {
|
|
154
|
+
ignored.push(s.key);
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
// A setting explicitly set to the value already in the file is not an
|
|
158
|
+
// override worth announcing — nothing changed.
|
|
159
|
+
if (was !== s.value)
|
|
160
|
+
overrides.push({ key: s.key, was, now: s.value });
|
|
161
|
+
}
|
|
162
|
+
return { config: next, overrides, ignored };
|
|
163
|
+
}
|
|
164
|
+
/** The lines a run prints about what its phone changed. */
|
|
165
|
+
function describeOverrides(result) {
|
|
166
|
+
const lines = [];
|
|
167
|
+
for (const o of result.overrides) {
|
|
168
|
+
lines.push(`settings: ${o.key} = ${JSON.stringify(o.now)} (from your phone, was ${JSON.stringify(o.was)})`);
|
|
169
|
+
}
|
|
170
|
+
if (result.ignored.length) {
|
|
171
|
+
lines.push(`settings: ${result.ignored.length} setting(s) this run has no use for: ${result.ignored.join(', ')}`);
|
|
172
|
+
}
|
|
173
|
+
return lines;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=settings-overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-overlay.js","sourceRoot":"","sources":["../src/settings-overlay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type Question, type SetupAnswers } from './setup';
|
|
2
|
+
import type { RepoProfile } from './init-detect';
|
|
3
|
+
/**
|
|
4
|
+
* The terminal half of setup: asking, and reading what comes back.
|
|
5
|
+
*
|
|
6
|
+
* Kept apart from `setup.ts` so the decisions are testable without a TTY. This
|
|
7
|
+
* file only knows how to print a question and hand the answer over.
|
|
8
|
+
*/
|
|
9
|
+
export interface Asker {
|
|
10
|
+
question(prompt: string): Promise<string>;
|
|
11
|
+
close(): void;
|
|
12
|
+
}
|
|
13
|
+
export declare function nodeAsker(): Asker;
|
|
14
|
+
export declare function renderQuestion(q: Question, profile: RepoProfile): string;
|
|
15
|
+
/** The prompt line itself, showing what enter will choose. */
|
|
16
|
+
export declare function promptLine(q: Question): string;
|
|
17
|
+
export interface RunSetupOptions {
|
|
18
|
+
profile: RepoProfile;
|
|
19
|
+
asker: Asker;
|
|
20
|
+
write: (s: string) => void;
|
|
21
|
+
/** Skip every question and take the defaults — for CI and for --yes. */
|
|
22
|
+
useDefaults?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Ask everything, then hand back the answers.
|
|
26
|
+
*
|
|
27
|
+
* A bad answer re-asks rather than aborting: getting three questions in and
|
|
28
|
+
* being thrown back to the shell over a typo is how people decide a tool is not
|
|
29
|
+
* worth the trouble.
|
|
30
|
+
*/
|
|
31
|
+
export declare function runSetup(opts: RunSetupOptions): Promise<SetupAnswers>;
|
|
32
|
+
/** What is printed once the file is written. */
|
|
33
|
+
export declare function renderSetupDone(summary: readonly string[], configPath: string, paired: boolean): string;
|
|
34
|
+
//# sourceMappingURL=setup-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-prompt.d.ts","sourceRoot":"","sources":["../src/setup-prompt.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2C,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD;;;;;GAKG;AAEH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,SAAS,IAAI,KAAK,CAMjC;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAuBxE;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAG9C;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAgC3E;AAED,gDAAgD;AAChD,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAgBvG"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.nodeAsker = nodeAsker;
|
|
4
|
+
exports.renderQuestion = renderQuestion;
|
|
5
|
+
exports.promptLine = promptLine;
|
|
6
|
+
exports.runSetup = runSetup;
|
|
7
|
+
exports.renderSetupDone = renderSetupDone;
|
|
8
|
+
const promises_1 = require("node:readline/promises");
|
|
9
|
+
const ui_1 = require("./ui");
|
|
10
|
+
const setup_1 = require("./setup");
|
|
11
|
+
function nodeAsker() {
|
|
12
|
+
const rl = (0, promises_1.createInterface)({ input: process.stdin, output: process.stdout });
|
|
13
|
+
return {
|
|
14
|
+
question: (prompt) => rl.question(prompt),
|
|
15
|
+
close: () => rl.close(),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function renderQuestion(q, profile) {
|
|
19
|
+
const out = ['', ` ${(0, ui_1.bold)(q.ask)}`, ` ${(0, ui_1.grey)(q.why)}`, ''];
|
|
20
|
+
if (q.kind === 'choice' && q.choices) {
|
|
21
|
+
q.choices.forEach((c, i) => {
|
|
22
|
+
const marker = c.value === q.default ? (0, ui_1.volt)('●') : (0, ui_1.grey)('○');
|
|
23
|
+
out.push(` ${marker} ${(0, ui_1.dim)(`${i + 1}.`)} ${c.label}${c.hint ? (0, ui_1.grey)(` — ${c.hint}`) : ''}`);
|
|
24
|
+
});
|
|
25
|
+
out.push('');
|
|
26
|
+
}
|
|
27
|
+
if (q.kind === 'paths' && q.suggest) {
|
|
28
|
+
const suggestions = q.suggest(profile);
|
|
29
|
+
if (suggestions.length) {
|
|
30
|
+
out.push(` ${(0, ui_1.grey)('common ones for a project like this:')}`);
|
|
31
|
+
out.push(` ${(0, ui_1.dim)(suggestions.join(' '))}`);
|
|
32
|
+
out.push('');
|
|
33
|
+
out.push(` ${(0, ui_1.grey)('paste the ones that apply, space separated, or press enter for none')}`);
|
|
34
|
+
out.push('');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return out.join('\n');
|
|
38
|
+
}
|
|
39
|
+
/** The prompt line itself, showing what enter will choose. */
|
|
40
|
+
function promptLine(q) {
|
|
41
|
+
const shown = q.default === '' ? 'none' : q.default;
|
|
42
|
+
return ` ${(0, ui_1.volt)('›')} ${(0, ui_1.dim)(`[${shown}]`)} `;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Ask everything, then hand back the answers.
|
|
46
|
+
*
|
|
47
|
+
* A bad answer re-asks rather than aborting: getting three questions in and
|
|
48
|
+
* being thrown back to the shell over a typo is how people decide a tool is not
|
|
49
|
+
* worth the trouble.
|
|
50
|
+
*/
|
|
51
|
+
async function runSetup(opts) {
|
|
52
|
+
if (opts.useDefaults)
|
|
53
|
+
return { ...setup_1.DEFAULT_ANSWERS };
|
|
54
|
+
const answers = { ...setup_1.DEFAULT_ANSWERS };
|
|
55
|
+
opts.write((0, ui_1.box)([
|
|
56
|
+
'looply is about to look at this project.',
|
|
57
|
+
'',
|
|
58
|
+
(0, ui_1.grey)('Five questions. Press enter to take the default on any of them,'),
|
|
59
|
+
(0, ui_1.grey)('and edit .looply/config.yaml afterwards — it is meant to be read.'),
|
|
60
|
+
], { title: 'setting up', tone: ui_1.volt }) + '\n');
|
|
61
|
+
for (const q of setup_1.QUESTIONS) {
|
|
62
|
+
opts.write(renderQuestion(q, opts.profile));
|
|
63
|
+
for (;;) {
|
|
64
|
+
const raw = await opts.asker.question(promptLine(q));
|
|
65
|
+
const parsed = (0, setup_1.parseAnswer)(q, raw);
|
|
66
|
+
if (parsed.ok) {
|
|
67
|
+
answers[q.key] = parsed.value;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
opts.write(` ${(0, ui_1.warn)(parsed.error)}\n`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return answers;
|
|
74
|
+
}
|
|
75
|
+
/** What is printed once the file is written. */
|
|
76
|
+
function renderSetupDone(summary, configPath, paired) {
|
|
77
|
+
const next = paired
|
|
78
|
+
? ['looply scan', 'looply run']
|
|
79
|
+
: ['looply scan', 'looply run', (0, ui_1.dim)('looply pair — to watch it from your phone')];
|
|
80
|
+
return [
|
|
81
|
+
'',
|
|
82
|
+
(0, ui_1.box)(summary.map((l) => l), { title: 'set up', tone: ui_1.volt }),
|
|
83
|
+
'',
|
|
84
|
+
` ${(0, ui_1.ok)(`written to ${configPath}`)}`,
|
|
85
|
+
` ${(0, ui_1.grey)('open it — every value is a decision and the comments say what each costs')}`,
|
|
86
|
+
'',
|
|
87
|
+
` ${(0, ui_1.grey)('then:')}`,
|
|
88
|
+
...next.map((c) => ` ${(0, ui_1.step)('')}${c.startsWith('looply') ? (0, ui_1.volt)(c) : c}`),
|
|
89
|
+
'',
|
|
90
|
+
].join('\n');
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=setup-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-prompt.js","sourceRoot":"","sources":["../src/setup-prompt.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { RepoProfile } from './init-detect';
|
|
2
|
+
/**
|
|
3
|
+
* The guided setup behind `looply init`.
|
|
4
|
+
*
|
|
5
|
+
* Detection covers what the repository can tell you: package manager,
|
|
6
|
+
* workspaces, test runner, build commands. It cannot tell you the things that
|
|
7
|
+
* are expensive to get wrong, and those are exactly the ones a silent default
|
|
8
|
+
* would decide for you:
|
|
9
|
+
*
|
|
10
|
+
* - which paths must never be touched
|
|
11
|
+
* - whether a production database is reachable from this machine
|
|
12
|
+
* - whether anything may be published
|
|
13
|
+
*
|
|
14
|
+
* So those are asked. Everything else has a defensible default and is not.
|
|
15
|
+
*
|
|
16
|
+
* The questions are data and the answers are validated here, so the whole flow
|
|
17
|
+
* is testable without a terminal — the readline wrapper is a thin shell over
|
|
18
|
+
* this.
|
|
19
|
+
*/
|
|
20
|
+
export type AnswerKind = 'choice' | 'paths' | 'number' | 'confirm';
|
|
21
|
+
export interface Question {
|
|
22
|
+
key: string;
|
|
23
|
+
/** The question, in the words it is asked. */
|
|
24
|
+
ask: string;
|
|
25
|
+
/** Why it is being asked. Shown under the question, not in a manual somewhere. */
|
|
26
|
+
why: string;
|
|
27
|
+
kind: AnswerKind;
|
|
28
|
+
choices?: readonly {
|
|
29
|
+
value: string;
|
|
30
|
+
label: string;
|
|
31
|
+
hint?: string;
|
|
32
|
+
}[];
|
|
33
|
+
/** Used when the answer is blank. Every question has one; none are mandatory. */
|
|
34
|
+
default: string;
|
|
35
|
+
/** Suggestions offered for a paths answer, drawn from what detection found. */
|
|
36
|
+
suggest?: (profile: RepoProfile) => string[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Guesses for the rails, by ecosystem.
|
|
40
|
+
*
|
|
41
|
+
* Offered rather than applied. A wrong guess that is presented as a suggestion
|
|
42
|
+
* costs a keystroke; a wrong guess applied silently costs a schema.
|
|
43
|
+
*/
|
|
44
|
+
export declare function suggestRails(profile: RepoProfile): string[];
|
|
45
|
+
export declare const QUESTIONS: readonly Question[];
|
|
46
|
+
export interface SetupAnswers {
|
|
47
|
+
rails: string[];
|
|
48
|
+
prodDb: boolean;
|
|
49
|
+
push: 'never' | 'on-approval' | 'manual';
|
|
50
|
+
scope: 'improve' | 'anything';
|
|
51
|
+
hours: number;
|
|
52
|
+
}
|
|
53
|
+
export declare const DEFAULT_ANSWERS: SetupAnswers;
|
|
54
|
+
/**
|
|
55
|
+
* Turn one raw answer into a value, or say why it cannot be.
|
|
56
|
+
*
|
|
57
|
+
* A blank answer always means the default — a setup that punishes pressing enter
|
|
58
|
+
* is a setup people abandon halfway.
|
|
59
|
+
*/
|
|
60
|
+
export declare function parseAnswer(question: Question, raw: string): {
|
|
61
|
+
ok: true;
|
|
62
|
+
value: string | number | boolean | string[];
|
|
63
|
+
} | {
|
|
64
|
+
ok: false;
|
|
65
|
+
error: string;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* The config file, written from what was detected and what was answered.
|
|
69
|
+
*
|
|
70
|
+
* Commented throughout, because this file is meant to be read and edited after
|
|
71
|
+
* setup rather than treated as generated output nobody opens.
|
|
72
|
+
*/
|
|
73
|
+
/**
|
|
74
|
+
* What detection could see, said in the file it wrote.
|
|
75
|
+
*
|
|
76
|
+
* 🔴 THIS MODULE'S OWN RULE, APPLIED TO THE ONE THING IT SKIPPED (the audit's
|
|
77
|
+
* B-01). The docblock at the top of this file draws the line precisely:
|
|
78
|
+
* detection covers what the repository can tell you, and *"it cannot tell you
|
|
79
|
+
* the things that are expensive to get wrong… So those are asked."* Three are
|
|
80
|
+
* asked — forbidden paths, a reachable production database, whether anything
|
|
81
|
+
* may be published.
|
|
82
|
+
*
|
|
83
|
+
* `gates` is the most expensive thing in this file to get wrong, and it is the
|
|
84
|
+
* one that is **neither asked nor defaulted**: it is DETECTED, from the
|
|
85
|
+
* lockfile, `package.json` scripts and `tsconfig` — the toolchain, and nothing
|
|
86
|
+
* else. A person handed a populated list has no way to know that contracts,
|
|
87
|
+
* data and migrations were never candidates.
|
|
88
|
+
*
|
|
89
|
+
* ⚠️ AND THE FILE ALREADY KNEW HOW TO SAY IT — IN ONE BRANCH ONLY. When nothing
|
|
90
|
+
* is detected the list reads *"none detected — add at least one, or a green
|
|
91
|
+
* round proves nothing"*, which is exactly the right sentence. It appears only
|
|
92
|
+
* when the list is EMPTY, and *"a green round proves nothing about your
|
|
93
|
+
* migrations"* is just as true when it is full.
|
|
94
|
+
*
|
|
95
|
+
* ⚠️ IT CLAIMS NOTHING ABOUT THIS REPOSITORY. Not that migrations exist, not
|
|
96
|
+
* that a contract is unchecked, not that the gates are insufficient. It says
|
|
97
|
+
* what was looked for, which is the only thing detection can honestly report.
|
|
98
|
+
*/
|
|
99
|
+
export declare const GATES_ARE_TOOLCHAIN: string;
|
|
100
|
+
export declare function renderConfig(profile: RepoProfile, answers: SetupAnswers): string;
|
|
101
|
+
/** A short account of what was decided, shown when setup finishes. */
|
|
102
|
+
export declare function summarise(answers: SetupAnswers, profile: RepoProfile): string[];
|
|
103
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnE,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,kFAAkF;IAClF,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrE,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,EAAE,CAAC;CAC9C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,EAAE,CAkB3D;AAED,eAAO,MAAM,SAAS,EAAE,SAAS,QAAQ,EA8CxC,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG,QAAQ,CAAC;IACzC,KAAK,EAAE,SAAS,GAAG,UAAU,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,eAAe,EAAE,YAM7B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,MAAM,GACV;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAoD1F;AAgBD;;;;;GAKG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,mBAAmB,QAIpB,CAAC;AAEb,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,CAmFhF;AAED,sEAAsE;AACtE,wBAAgB,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,EAAE,CAQ/E"}
|