looply-cli 0.0.0-stage → 0.3.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 +2727 -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/serve-cmd.d.ts +115 -0
- package/dist/serve-cmd.d.ts.map +1 -0
- package/dist/serve-cmd.js +505 -0
- package/dist/serve-cmd.js.map +1 -0
- package/dist/serve.d.ts +167 -0
- package/dist/serve.d.ts.map +1 -0
- package/dist/serve.js +336 -0
- package/dist/serve.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 +52 -4
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"run-launcher.js","sourceRoot":"","sources":["../src/run-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The run lease — `run.lease.json` under the state dir.
|
|
3
|
+
*
|
|
4
|
+
* One working tree, one mutating runner. Nothing enforced that: the only guard
|
|
5
|
+
* was `RunLauncher.live`, a Map in the daemon's memory (run-launcher.ts). A
|
|
6
|
+
* daemon restart forgets it, and since commands became genuinely redeliverable
|
|
7
|
+
* a `start-run` popped before the restart comes back afterwards — so a second
|
|
8
|
+
* `looply run` starts over a tree the first is still editing. Two runners then
|
|
9
|
+
* fight over one branch, and each one's discard path is `reset --hard` plus
|
|
10
|
+
* `clean -fd` over the other's work.
|
|
11
|
+
*
|
|
12
|
+
* **The run process takes the lease, not the daemon.** This is the load-bearing
|
|
13
|
+
* decision in the whole mechanism. The daemon spawns the run `detached` and
|
|
14
|
+
* `unref`s it (run-launcher.ts), so a daemon-held lease would record a pid that
|
|
15
|
+
* is dead while the run it names is very much alive — and every consumer that
|
|
16
|
+
* then read "dead" would do damage: the launcher would start a second runner,
|
|
17
|
+
* recovery would rewrite the queue of a live run, and the phone would be told a
|
|
18
|
+
* healthy run had crashed. A lock that endorses the collision is worse than no
|
|
19
|
+
* lock. Taking it in the runner also covers `looply run` typed by hand, which a
|
|
20
|
+
* daemon-held lease never could.
|
|
21
|
+
*
|
|
22
|
+
* Acquire is an exclusive create (`wx`): the filesystem decides the winner, so
|
|
23
|
+
* two processes racing cannot both believe they hold it. There is no
|
|
24
|
+
* check-then-write window because there is no check.
|
|
25
|
+
*
|
|
26
|
+
* There is deliberately no heartbeat field. `status.json` is already rewritten
|
|
27
|
+
* atomically on every ledger append, which is a heartbeat for free — and a run
|
|
28
|
+
* inside a 45-minute agent call is *legitimately* silent, so a heartbeat would
|
|
29
|
+
* report it dead anyway. The pid probe answers correctly without one.
|
|
30
|
+
*/
|
|
31
|
+
/** The filesystem this store needs. Narrower than LedgerFs: it also needs exclusivity. */
|
|
32
|
+
export interface LeaseFs {
|
|
33
|
+
/** Create only if absent. Must reject with an `EEXIST` error when it is not. */
|
|
34
|
+
createExclusive(path: string, data: string): Promise<void>;
|
|
35
|
+
readFile(path: string): Promise<string | null>;
|
|
36
|
+
/** Must resolve, not reject, when the file is already gone. */
|
|
37
|
+
unlink(path: string): Promise<void>;
|
|
38
|
+
mkdir(path: string): Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
export declare const nodeLeaseFs: LeaseFs;
|
|
41
|
+
/** What the holder claims about itself. Written once, never rewritten. */
|
|
42
|
+
export interface RunLease {
|
|
43
|
+
/** Distinguishes this holder from a later one that happens to reuse the pid. */
|
|
44
|
+
token: string;
|
|
45
|
+
pid: number;
|
|
46
|
+
host: string;
|
|
47
|
+
runId: string;
|
|
48
|
+
branch: string;
|
|
49
|
+
/** Where the run branch was cut from, so recovery can tell divergence from drift. */
|
|
50
|
+
baseBranch: string;
|
|
51
|
+
acquiredAt: string;
|
|
52
|
+
/** The command that asked for this run, when one did. Absent for a hand-typed run. */
|
|
53
|
+
startedByCommandId?: string;
|
|
54
|
+
/**
|
|
55
|
+
* The goal this run is bound to, when it is bound to one.
|
|
56
|
+
*
|
|
57
|
+
* Durable on purpose: it outlives the daemon that started the run, so a
|
|
58
|
+
* restarted daemon handed a start-run for a DIFFERENT goal can still refuse
|
|
59
|
+
* honestly instead of acking a goal that will never run.
|
|
60
|
+
*/
|
|
61
|
+
goalId?: string;
|
|
62
|
+
cliVersion: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Whether a pid is running, as far as this process can tell.
|
|
66
|
+
*
|
|
67
|
+
* Three answers, not two, and the third is why: on Windows `process.kill(4, 0)`
|
|
68
|
+
* throws `EPERM` for the System process — alive, but not ours to signal. A
|
|
69
|
+
* two-valued probe maps that to "dead", takes the lease over, and starts the
|
|
70
|
+
* second runner this file exists to prevent. Measured on win32 + node 20:
|
|
71
|
+
* self → ok, an exited child → ESRCH, pid 4 → EPERM.
|
|
72
|
+
*/
|
|
73
|
+
export type Liveness = 'alive' | 'dead' | 'unknown';
|
|
74
|
+
export type ProbeFn = (pid: number) => Liveness;
|
|
75
|
+
export declare const nodeProbe: ProbeFn;
|
|
76
|
+
export type LeaseState =
|
|
77
|
+
/** No lease file. Free to take. */
|
|
78
|
+
{
|
|
79
|
+
kind: 'free';
|
|
80
|
+
}
|
|
81
|
+
/** Held by a process that is running. Refuse. */
|
|
82
|
+
| {
|
|
83
|
+
kind: 'active';
|
|
84
|
+
lease: RunLease;
|
|
85
|
+
}
|
|
86
|
+
/** Held by a process that is gone. Safe to take over. */
|
|
87
|
+
| {
|
|
88
|
+
kind: 'dead';
|
|
89
|
+
lease: RunLease;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Present but not decidable: unreadable, malformed, from another host, or a
|
|
93
|
+
* pid we cannot probe. Fails closed — never taken over, because the cost of
|
|
94
|
+
* being wrong is two runners on one tree.
|
|
95
|
+
*/
|
|
96
|
+
| {
|
|
97
|
+
kind: 'ambiguous';
|
|
98
|
+
reason: string;
|
|
99
|
+
lease?: RunLease;
|
|
100
|
+
};
|
|
101
|
+
export declare class LeaseHeldError extends Error {
|
|
102
|
+
readonly state: LeaseState & {
|
|
103
|
+
kind: 'active' | 'ambiguous';
|
|
104
|
+
};
|
|
105
|
+
constructor(state: LeaseState & {
|
|
106
|
+
kind: 'active' | 'ambiguous';
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/** One sentence a person can act on, for a refusal or a log line. */
|
|
110
|
+
export declare function describeLease(state: LeaseState): string;
|
|
111
|
+
export interface AcquireInput {
|
|
112
|
+
runId: string;
|
|
113
|
+
branch: string;
|
|
114
|
+
baseBranch: string;
|
|
115
|
+
cliVersion: string;
|
|
116
|
+
startedByCommandId?: string;
|
|
117
|
+
/**
|
|
118
|
+
* The goal this run is bound to, when it is bound to one.
|
|
119
|
+
*
|
|
120
|
+
* Declared here as well as on {@link RunLease} because the lease literal
|
|
121
|
+
* below is built field by field: a member missing from THIS type is silently
|
|
122
|
+
* dropped when the caller passes it through a spread, which is exactly how it
|
|
123
|
+
* went unwritten — spread properties escape excess-property checking, so the
|
|
124
|
+
* compiler had nothing to complain about and the durable half of the
|
|
125
|
+
* duplicate-start guard read `undefined` for ever.
|
|
126
|
+
*/
|
|
127
|
+
goalId?: string;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Where a checkout's lease sits, for readers that are not the store.
|
|
131
|
+
*
|
|
132
|
+
* Exported so the run registry can corroborate a record against the lease the
|
|
133
|
+
* same run must be holding, WITHOUT a second spelling of the filename. One
|
|
134
|
+
* place decides what a lease is called.
|
|
135
|
+
*/
|
|
136
|
+
export declare function leasePathIn(stateDir: string): string;
|
|
137
|
+
export declare class RunLeaseStore {
|
|
138
|
+
private readonly stateDir;
|
|
139
|
+
private readonly fs;
|
|
140
|
+
private readonly probe;
|
|
141
|
+
private readonly deps;
|
|
142
|
+
constructor(stateDir: string, fs: LeaseFs, probe?: ProbeFn, deps?: {
|
|
143
|
+
now?: () => number;
|
|
144
|
+
pid?: () => number;
|
|
145
|
+
host?: () => string;
|
|
146
|
+
token?: () => string;
|
|
147
|
+
});
|
|
148
|
+
private get leasePath();
|
|
149
|
+
/** Read the lease and decide what it means, without touching it. */
|
|
150
|
+
inspect(): Promise<LeaseState>;
|
|
151
|
+
/**
|
|
152
|
+
* Take the lease, or refuse.
|
|
153
|
+
*
|
|
154
|
+
* A `dead` lease is taken over — that is recovery, and refusing forever is
|
|
155
|
+
* not. Everything else that is not `free` refuses: an `active` lease means a
|
|
156
|
+
* runner is working, and an `ambiguous` one means we cannot prove otherwise.
|
|
157
|
+
*
|
|
158
|
+
* ───────────────────────────────────────────────────────────────────────────
|
|
159
|
+
* TAKING OVER A DEAD LEASE IS ITSELF A RACE (6D1R-D)
|
|
160
|
+
*
|
|
161
|
+
* This method used to `unlink` the dead lease and then exclusively create its
|
|
162
|
+
* own — and `unlink` is BY PATH, not by content. Two processes that both
|
|
163
|
+
* found the same dead lease both unlinked. The first removed the dead one and
|
|
164
|
+
* created its lease; the second then removed THAT lease and created its own.
|
|
165
|
+
*
|
|
166
|
+
* Both believed they held it. The file on disk was the second one's, so the
|
|
167
|
+
* first ran a whole run unprotected, and its `release` found somebody else's
|
|
168
|
+
* token and returned false without complaint. Two runners over one working
|
|
169
|
+
* tree, each with `reset --hard` and `clean -fd` on its discard path — which
|
|
170
|
+
* is the exact thing this class exists to prevent, reintroduced by its own
|
|
171
|
+
* recovery step.
|
|
172
|
+
*
|
|
173
|
+
* The repair: reaping a dead lease is claimed EXCLUSIVELY first, at a path
|
|
174
|
+
* derived from the dead lease's own token. Exactly one process can create
|
|
175
|
+
* that file, and only that one may remove the lease it names. The loser does
|
|
176
|
+
* not unlink anything; it re-reads and refuses.
|
|
177
|
+
*
|
|
178
|
+
* `rename`-to-quarantine was considered first and does not work: rename is
|
|
179
|
+
* atomic but also by path, so the second process would move the FIRST one's
|
|
180
|
+
* fresh lease into quarantine and leave the tree unprotected in a different
|
|
181
|
+
* order. The exclusivity has to come before the removal, not from it.
|
|
182
|
+
*
|
|
183
|
+
* The quarantine file is deliberately never cleaned up. Removing it would
|
|
184
|
+
* let a third process still holding a stale `dead` observation win the claim
|
|
185
|
+
* again and delete a live lease. It is one small file per crashed run, it
|
|
186
|
+
* holds that run's lease as evidence, and that is a fair price.
|
|
187
|
+
*/
|
|
188
|
+
acquire(input: AcquireInput): Promise<RunLease>;
|
|
189
|
+
/**
|
|
190
|
+
* Claim the right to remove ONE dead lease. Exclusive, and by identity.
|
|
191
|
+
*
|
|
192
|
+
* Keyed on the dead lease's token, which is random and never reused, so this
|
|
193
|
+
* says "I am the one reaping THAT lease" rather than "I am reaping whatever
|
|
194
|
+
* is at this path" — the distinction the old `unlink` could not make.
|
|
195
|
+
*/
|
|
196
|
+
private claimDead;
|
|
197
|
+
/**
|
|
198
|
+
* Give up the lease, but only if it is still ours.
|
|
199
|
+
*
|
|
200
|
+
* The token check is what stops a slow exit from deleting the lease a newer
|
|
201
|
+
* run has since taken over — the mistake that would silently re-open the
|
|
202
|
+
* window this class closes.
|
|
203
|
+
*/
|
|
204
|
+
release(token: string): Promise<boolean>;
|
|
205
|
+
}
|
|
206
|
+
/** The record a state carries, when it carries one. `free` never does. */
|
|
207
|
+
export declare function leaseOf(state: LeaseState): RunLease | undefined;
|
|
208
|
+
//# sourceMappingURL=run-lease.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-lease.d.ts","sourceRoot":"","sources":["../src/run-lease.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RunLeaseStore = exports.LeaseHeldError = exports.nodeProbe = exports.nodeLeaseFs = void 0;
|
|
4
|
+
exports.describeLease = describeLease;
|
|
5
|
+
exports.leasePathIn = leasePathIn;
|
|
6
|
+
exports.leaseOf = leaseOf;
|
|
7
|
+
const node_os_1 = require("node:os");
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
exports.nodeLeaseFs = {
|
|
10
|
+
createExclusive: (path, data) => node_fs_1.promises.writeFile(path, data, { encoding: 'utf8', flag: 'wx' }),
|
|
11
|
+
async readFile(path) {
|
|
12
|
+
try {
|
|
13
|
+
return await node_fs_1.promises.readFile(path, 'utf8');
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
if (e.code === 'ENOENT')
|
|
17
|
+
return null;
|
|
18
|
+
throw e;
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
async unlink(path) {
|
|
22
|
+
try {
|
|
23
|
+
await node_fs_1.promises.unlink(path);
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
// Already gone is the outcome we wanted. Anything else is real.
|
|
27
|
+
if (e.code !== 'ENOENT')
|
|
28
|
+
throw e;
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
async mkdir(path) {
|
|
32
|
+
await node_fs_1.promises.mkdir(path, { recursive: true });
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
const nodeProbe = (pid) => {
|
|
36
|
+
// `process.kill(0, 0)` targets the *current process group* and returns
|
|
37
|
+
// successfully, so a corrupt lease recording pid 0 would read as alive
|
|
38
|
+
// forever. Negative pids address groups on POSIX for the same reason.
|
|
39
|
+
if (!Number.isInteger(pid) || pid <= 0)
|
|
40
|
+
return 'unknown';
|
|
41
|
+
try {
|
|
42
|
+
process.kill(pid, 0);
|
|
43
|
+
return 'alive';
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
const code = e.code;
|
|
47
|
+
if (code === 'ESRCH')
|
|
48
|
+
return 'dead';
|
|
49
|
+
// EPERM means it exists and belongs to somebody else. Anything unfamiliar
|
|
50
|
+
// is not evidence of death either.
|
|
51
|
+
return 'unknown';
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
exports.nodeProbe = nodeProbe;
|
|
55
|
+
class LeaseHeldError extends Error {
|
|
56
|
+
state;
|
|
57
|
+
constructor(state) {
|
|
58
|
+
/**
|
|
59
|
+
* 🔴 THE REFUSAL CARRIES THE REMEDY; `describeLease` DOES NOT.
|
|
60
|
+
*
|
|
61
|
+
* Measured while running the §10 one-versus-two comparison: two runs were
|
|
62
|
+
* launched together with `machine.max_workspaces: 2` — which reads like
|
|
63
|
+
* permission for two workers — and the second was turned away in one second
|
|
64
|
+
* with the holder's id, pid and branch, and no hint that a second run needs
|
|
65
|
+
* its own checkout. The ceiling and `--new-workspace` are two knobs that
|
|
66
|
+
* look like one, and this is the exact moment somebody discovers that.
|
|
67
|
+
*
|
|
68
|
+
* ⚠️ ONLY ON `active`, and only on the ERROR. `ambiguous` means looply could
|
|
69
|
+
* not tell whether a run is here, and telling somebody to cut a second
|
|
70
|
+
* checkout on the strength of "I could not tell" would be advice to act on
|
|
71
|
+
* an absence of measurement. And `describeLease` itself is unchanged
|
|
72
|
+
* because it also writes status and log lines, where a CLI flag would be
|
|
73
|
+
* noise rather than help.
|
|
74
|
+
*/
|
|
75
|
+
const remedy = state.kind === 'active' ? ' — a second run needs its own checkout: `looply run --new-workspace`' : '';
|
|
76
|
+
super(`${describeLease(state)}${remedy}`);
|
|
77
|
+
this.state = state;
|
|
78
|
+
this.name = 'LeaseHeldError';
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.LeaseHeldError = LeaseHeldError;
|
|
82
|
+
/** One sentence a person can act on, for a refusal or a log line. */
|
|
83
|
+
function describeLease(state) {
|
|
84
|
+
switch (state.kind) {
|
|
85
|
+
case 'free':
|
|
86
|
+
return 'no run holds this working tree';
|
|
87
|
+
case 'active':
|
|
88
|
+
return `run ${state.lease.runId} is already working here (pid ${state.lease.pid}, branch ${state.lease.branch})`;
|
|
89
|
+
case 'dead':
|
|
90
|
+
return `run ${state.lease.runId} left a lease behind — its process (pid ${state.lease.pid}) is gone`;
|
|
91
|
+
case 'ambiguous':
|
|
92
|
+
return `cannot tell whether a run is working here: ${state.reason}`;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Where a checkout's lease sits, for readers that are not the store.
|
|
97
|
+
*
|
|
98
|
+
* Exported so the run registry can corroborate a record against the lease the
|
|
99
|
+
* same run must be holding, WITHOUT a second spelling of the filename. One
|
|
100
|
+
* place decides what a lease is called.
|
|
101
|
+
*/
|
|
102
|
+
function leasePathIn(stateDir) {
|
|
103
|
+
return `${stateDir}/run.lease.json`;
|
|
104
|
+
}
|
|
105
|
+
class RunLeaseStore {
|
|
106
|
+
stateDir;
|
|
107
|
+
fs;
|
|
108
|
+
probe;
|
|
109
|
+
deps;
|
|
110
|
+
constructor(stateDir, fs, probe = exports.nodeProbe, deps = {}) {
|
|
111
|
+
this.stateDir = stateDir;
|
|
112
|
+
this.fs = fs;
|
|
113
|
+
this.probe = probe;
|
|
114
|
+
this.deps = deps;
|
|
115
|
+
}
|
|
116
|
+
get leasePath() {
|
|
117
|
+
return leasePathIn(this.stateDir);
|
|
118
|
+
}
|
|
119
|
+
/** Read the lease and decide what it means, without touching it. */
|
|
120
|
+
async inspect() {
|
|
121
|
+
let text;
|
|
122
|
+
try {
|
|
123
|
+
text = await this.fs.readFile(this.leasePath);
|
|
124
|
+
}
|
|
125
|
+
catch (e) {
|
|
126
|
+
// Composed, like every other answer here, and deliberately WITHOUT the
|
|
127
|
+
// underlying error text. A refusal's reason is now carried to the server
|
|
128
|
+
// and read by a client, and `(e as Error).message` from the filesystem
|
|
129
|
+
// carries the absolute path of the file it failed on. The fact is what a
|
|
130
|
+
// person needs; the path is this machine's business.
|
|
131
|
+
return { kind: 'ambiguous', reason: 'the lease file could not be read' };
|
|
132
|
+
}
|
|
133
|
+
if (text === null)
|
|
134
|
+
return { kind: 'free' };
|
|
135
|
+
let lease;
|
|
136
|
+
try {
|
|
137
|
+
const parsed = JSON.parse(text);
|
|
138
|
+
if (!isRunLease(parsed)) {
|
|
139
|
+
return { kind: 'ambiguous', reason: 'the lease file is not a lease' };
|
|
140
|
+
}
|
|
141
|
+
lease = parsed;
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// A half-written lease cannot happen — it is created whole and never
|
|
145
|
+
// rewritten — so garbage here is a fact about the machine, not a race.
|
|
146
|
+
return { kind: 'ambiguous', reason: 'the lease file is unreadable' };
|
|
147
|
+
}
|
|
148
|
+
// A pid only means something on the machine that minted it. A lease copied
|
|
149
|
+
// or synced from elsewhere would otherwise be probed against a local pid
|
|
150
|
+
// that happens to exist.
|
|
151
|
+
const here = this.deps.host?.() ?? (0, node_os_1.hostname)();
|
|
152
|
+
if (lease.host !== here) {
|
|
153
|
+
return { kind: 'ambiguous', reason: `the lease was taken on ${lease.host}, not ${here}`, lease };
|
|
154
|
+
}
|
|
155
|
+
const liveness = this.probe(lease.pid);
|
|
156
|
+
if (liveness === 'alive')
|
|
157
|
+
return { kind: 'active', lease };
|
|
158
|
+
if (liveness === 'dead')
|
|
159
|
+
return { kind: 'dead', lease };
|
|
160
|
+
return { kind: 'ambiguous', reason: `pid ${lease.pid} could not be probed`, lease };
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Take the lease, or refuse.
|
|
164
|
+
*
|
|
165
|
+
* A `dead` lease is taken over — that is recovery, and refusing forever is
|
|
166
|
+
* not. Everything else that is not `free` refuses: an `active` lease means a
|
|
167
|
+
* runner is working, and an `ambiguous` one means we cannot prove otherwise.
|
|
168
|
+
*
|
|
169
|
+
* ───────────────────────────────────────────────────────────────────────────
|
|
170
|
+
* TAKING OVER A DEAD LEASE IS ITSELF A RACE (6D1R-D)
|
|
171
|
+
*
|
|
172
|
+
* This method used to `unlink` the dead lease and then exclusively create its
|
|
173
|
+
* own — and `unlink` is BY PATH, not by content. Two processes that both
|
|
174
|
+
* found the same dead lease both unlinked. The first removed the dead one and
|
|
175
|
+
* created its lease; the second then removed THAT lease and created its own.
|
|
176
|
+
*
|
|
177
|
+
* Both believed they held it. The file on disk was the second one's, so the
|
|
178
|
+
* first ran a whole run unprotected, and its `release` found somebody else's
|
|
179
|
+
* token and returned false without complaint. Two runners over one working
|
|
180
|
+
* tree, each with `reset --hard` and `clean -fd` on its discard path — which
|
|
181
|
+
* is the exact thing this class exists to prevent, reintroduced by its own
|
|
182
|
+
* recovery step.
|
|
183
|
+
*
|
|
184
|
+
* The repair: reaping a dead lease is claimed EXCLUSIVELY first, at a path
|
|
185
|
+
* derived from the dead lease's own token. Exactly one process can create
|
|
186
|
+
* that file, and only that one may remove the lease it names. The loser does
|
|
187
|
+
* not unlink anything; it re-reads and refuses.
|
|
188
|
+
*
|
|
189
|
+
* `rename`-to-quarantine was considered first and does not work: rename is
|
|
190
|
+
* atomic but also by path, so the second process would move the FIRST one's
|
|
191
|
+
* fresh lease into quarantine and leave the tree unprotected in a different
|
|
192
|
+
* order. The exclusivity has to come before the removal, not from it.
|
|
193
|
+
*
|
|
194
|
+
* The quarantine file is deliberately never cleaned up. Removing it would
|
|
195
|
+
* let a third process still holding a stale `dead` observation win the claim
|
|
196
|
+
* again and delete a live lease. It is one small file per crashed run, it
|
|
197
|
+
* holds that run's lease as evidence, and that is a fair price.
|
|
198
|
+
*/
|
|
199
|
+
async acquire(input) {
|
|
200
|
+
const state = await this.inspect();
|
|
201
|
+
if (state.kind === 'active' || state.kind === 'ambiguous') {
|
|
202
|
+
throw new LeaseHeldError(state);
|
|
203
|
+
}
|
|
204
|
+
if (state.kind === 'dead') {
|
|
205
|
+
const claimed = await this.claimDead(state.lease);
|
|
206
|
+
if (!claimed) {
|
|
207
|
+
// Somebody else is taking it over. Re-read rather than assume: if they
|
|
208
|
+
// have already taken it, the honest thing to report is their record.
|
|
209
|
+
const now = await this.inspect();
|
|
210
|
+
throw new LeaseHeldError(now.kind === 'active' || now.kind === 'ambiguous'
|
|
211
|
+
? now
|
|
212
|
+
: { kind: 'ambiguous', reason: 'another run is taking over the dead lease' });
|
|
213
|
+
}
|
|
214
|
+
await this.fs.unlink(this.leasePath);
|
|
215
|
+
}
|
|
216
|
+
const lease = {
|
|
217
|
+
token: this.deps.token?.() ?? randomToken(),
|
|
218
|
+
pid: this.deps.pid?.() ?? process.pid,
|
|
219
|
+
host: this.deps.host?.() ?? (0, node_os_1.hostname)(),
|
|
220
|
+
runId: input.runId,
|
|
221
|
+
branch: input.branch,
|
|
222
|
+
baseBranch: input.baseBranch,
|
|
223
|
+
acquiredAt: new Date(this.deps.now?.() ?? Date.now()).toISOString(),
|
|
224
|
+
...(input.startedByCommandId === undefined ? {} : { startedByCommandId: input.startedByCommandId }),
|
|
225
|
+
...(input.goalId === undefined ? {} : { goalId: input.goalId }),
|
|
226
|
+
cliVersion: input.cliVersion,
|
|
227
|
+
};
|
|
228
|
+
await this.fs.mkdir(this.stateDir);
|
|
229
|
+
try {
|
|
230
|
+
// Exclusive create: two processes racing here cannot both win, and the
|
|
231
|
+
// loser learns it from the filesystem rather than from a stale read.
|
|
232
|
+
await this.fs.createExclusive(this.leasePath, JSON.stringify(lease, null, 2) + '\n');
|
|
233
|
+
}
|
|
234
|
+
catch (e) {
|
|
235
|
+
if (e.code === 'EEXIST') {
|
|
236
|
+
// Somebody took it between the inspect and the create. Re-read rather
|
|
237
|
+
// than assume: the winner's own record is the honest thing to report.
|
|
238
|
+
const now = await this.inspect();
|
|
239
|
+
throw new LeaseHeldError(now.kind === 'active' || now.kind === 'ambiguous'
|
|
240
|
+
? now
|
|
241
|
+
: { kind: 'ambiguous', reason: 'another run took the lease first' });
|
|
242
|
+
}
|
|
243
|
+
throw e;
|
|
244
|
+
}
|
|
245
|
+
return lease;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Claim the right to remove ONE dead lease. Exclusive, and by identity.
|
|
249
|
+
*
|
|
250
|
+
* Keyed on the dead lease's token, which is random and never reused, so this
|
|
251
|
+
* says "I am the one reaping THAT lease" rather than "I am reaping whatever
|
|
252
|
+
* is at this path" — the distinction the old `unlink` could not make.
|
|
253
|
+
*/
|
|
254
|
+
async claimDead(dead) {
|
|
255
|
+
const path = `${this.leasePath}.dead.${dead.token}`;
|
|
256
|
+
try {
|
|
257
|
+
await this.fs.createExclusive(path, JSON.stringify(dead, null, 2) + '\n');
|
|
258
|
+
return true;
|
|
259
|
+
}
|
|
260
|
+
catch (e) {
|
|
261
|
+
if (e.code === 'EEXIST')
|
|
262
|
+
return false;
|
|
263
|
+
throw e;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Give up the lease, but only if it is still ours.
|
|
268
|
+
*
|
|
269
|
+
* The token check is what stops a slow exit from deleting the lease a newer
|
|
270
|
+
* run has since taken over — the mistake that would silently re-open the
|
|
271
|
+
* window this class closes.
|
|
272
|
+
*/
|
|
273
|
+
async release(token) {
|
|
274
|
+
const state = await this.inspect();
|
|
275
|
+
const held = leaseOf(state);
|
|
276
|
+
if (held?.token !== token)
|
|
277
|
+
return false;
|
|
278
|
+
await this.fs.unlink(this.leasePath);
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
exports.RunLeaseStore = RunLeaseStore;
|
|
283
|
+
/** The record a state carries, when it carries one. `free` never does. */
|
|
284
|
+
function leaseOf(state) {
|
|
285
|
+
return state.kind === 'free' ? undefined : state.lease;
|
|
286
|
+
}
|
|
287
|
+
function isRunLease(v) {
|
|
288
|
+
if (typeof v !== 'object' || v === null)
|
|
289
|
+
return false;
|
|
290
|
+
const l = v;
|
|
291
|
+
return (typeof l['token'] === 'string' &&
|
|
292
|
+
typeof l['pid'] === 'number' &&
|
|
293
|
+
typeof l['host'] === 'string' &&
|
|
294
|
+
typeof l['runId'] === 'string' &&
|
|
295
|
+
typeof l['branch'] === 'string');
|
|
296
|
+
}
|
|
297
|
+
function randomToken() {
|
|
298
|
+
// Only has to distinguish one holder from the next on one machine.
|
|
299
|
+
return `${Date.now().toString(36)}${Math.random().toString(36).slice(2, 10)}`;
|
|
300
|
+
}
|
|
301
|
+
//# sourceMappingURL=run-lease.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-lease.js","sourceRoot":"","sources":["../src/run-lease.ts"],"names":[],"mappings":"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"}
|