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,613 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.nodeAttemptFs = exports.StartAttempts = exports.MAX_START_REQUEST_ATTEMPTS = exports.START_ATTEMPTS_SCHEMA = void 0;
|
|
37
|
+
exports.startAttemptId = startAttemptId;
|
|
38
|
+
exports.attemptDirName = attemptDirName;
|
|
39
|
+
exports.codeOf = codeOf;
|
|
40
|
+
const node_crypto_1 = require("node:crypto");
|
|
41
|
+
const node_os_1 = require("node:os");
|
|
42
|
+
const core_1 = require("@looply/core");
|
|
43
|
+
const run_lease_1 = require("./run-lease");
|
|
44
|
+
const ledger_store_1 = require("./ledger-store");
|
|
45
|
+
const fs_trouble_1 = require("./fs-trouble");
|
|
46
|
+
/**
|
|
47
|
+
* ONE ATTEMPT TO EXECUTE ONE BOUNDED START.
|
|
48
|
+
*
|
|
49
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
50
|
+
* TWO FACTS, NOT ONE
|
|
51
|
+
*
|
|
52
|
+
* A grant's ordinal receipt (autonomy-store.ts) says one thing and must go on
|
|
53
|
+
* saying only that: CONTROLLER C HAS PERMANENTLY SPENT START SLOT N. It is
|
|
54
|
+
* immutable, it is the budget, and nothing that goes wrong afterwards refunds
|
|
55
|
+
* it.
|
|
56
|
+
*
|
|
57
|
+
* This file records something different: ONE PROCESS HAS ATTEMPTED TO EXECUTE
|
|
58
|
+
* REQUEST S. A process can claim an attempt and die without ever reaching a
|
|
59
|
+
* Run, and that must be recoverable — otherwise a machine that crashed in the
|
|
60
|
+
* wrong second would burn a person's whole night one ordinal at a time.
|
|
61
|
+
*
|
|
62
|
+
* Conflating the two is what makes a controller wedge. If "the ordinal is
|
|
63
|
+
* reserved" also means "a Start is in flight", then a reservation followed by a
|
|
64
|
+
* crash is a Start that is in flight forever, against a process that does not
|
|
65
|
+
* exist, and nothing can ever move.
|
|
66
|
+
*
|
|
67
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
68
|
+
* THE REQUEST ID NEVER CHANGES
|
|
69
|
+
*
|
|
70
|
+
* Attempts 1, 2 and 3 of ordinal N all carry the SAME requestId. They are not
|
|
71
|
+
* three Starts; they are three tries at establishing one Start, and every
|
|
72
|
+
* durable fact about it — the lease, the start mark, the refusal mark — is
|
|
73
|
+
* filed under that one id. A retry that minted a new id would be a second
|
|
74
|
+
* Start wearing a disguise, and the budget would be a lie.
|
|
75
|
+
*
|
|
76
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
77
|
+
* THE CHILD CLAIMS, NOT THE DAEMON
|
|
78
|
+
*
|
|
79
|
+
* The claim is made by the process that could actually go on to do the work,
|
|
80
|
+
* immediately before it does. That is deliberate and it is the whole reason
|
|
81
|
+
* this is safe.
|
|
82
|
+
*
|
|
83
|
+
* A daemon that claimed before spawning would be recording the identity of a
|
|
84
|
+
* process that is NOT the executor: children here are detached and outlive
|
|
85
|
+
* their parent, so a dead daemon proves nothing about whether the run it
|
|
86
|
+
* launched is still going. The claimant would be a corpse and the executor
|
|
87
|
+
* would still be compiling. By having the child write its own pid, the durable
|
|
88
|
+
* claimant IS the process whose liveness decides whether a retry is safe.
|
|
89
|
+
*/
|
|
90
|
+
/** Bumped only when the on-disk shape changes incompatibly. Read, not decorative. */
|
|
91
|
+
exports.START_ATTEMPTS_SCHEMA = 1;
|
|
92
|
+
/**
|
|
93
|
+
* How many times one Start request may be attempted.
|
|
94
|
+
*
|
|
95
|
+
* Three, matching `MAX_ITEM_EXECUTION_ATTEMPTS` — the repository's existing
|
|
96
|
+
* answer to "how many times may one thing be tried before we stop and say so".
|
|
97
|
+
*
|
|
98
|
+
* It needs its own bound rather than borrowing one. A HUMAN Start is bounded by
|
|
99
|
+
* the server's one-hour redelivery window: `pop` marks anything un-acked and
|
|
100
|
+
* older than that `expired`, and stops offering it. An autonomous Start has no
|
|
101
|
+
* server row, so it inherits none of that — the only ceiling it would otherwise
|
|
102
|
+
* have is the grant's 24-hour lifetime, which at a ten-second cadence is more
|
|
103
|
+
* than eight thousand attempts at a request that has failed the same way every
|
|
104
|
+
* time.
|
|
105
|
+
*/
|
|
106
|
+
exports.MAX_START_REQUEST_ATTEMPTS = 3;
|
|
107
|
+
/**
|
|
108
|
+
* The deterministic name of one attempt.
|
|
109
|
+
*
|
|
110
|
+
* Derived, never minted, for the same reason `autonomyStartId` is: two daemons
|
|
111
|
+
* that independently conclude attempt 2 of request S is due must compute the
|
|
112
|
+
* same name, so that the filesystem can tell them apart instead of both
|
|
113
|
+
* believing they own it.
|
|
114
|
+
*/
|
|
115
|
+
function startAttemptId(requestId, attempt) {
|
|
116
|
+
return `${requestId}#attempt-${attempt}`;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Where one request's attempts live.
|
|
120
|
+
*
|
|
121
|
+
* A directory per request, beside nothing else. Deliberately NOT a field on
|
|
122
|
+
* any of the whole-file JSON stores this state directory already holds: each of
|
|
123
|
+
* those is rewritten entire by writers that hold no lease, so attempt history
|
|
124
|
+
* filed there would be erased by a process that never knew it existed.
|
|
125
|
+
*
|
|
126
|
+
* The directory name is derived rather than used raw. A request id contains
|
|
127
|
+
* colons (`controller-start:aut_1:3`) and a colon cannot appear in a Windows
|
|
128
|
+
* filename, so the readable part is sanitised and an eight-hex digest of the
|
|
129
|
+
* WHOLE id is appended — readable enough to debug by eye, and unique because
|
|
130
|
+
* the digest is over the original.
|
|
131
|
+
*/
|
|
132
|
+
function attemptDirName(requestId) {
|
|
133
|
+
const readable = requestId.replace(/[^A-Za-z0-9_-]/g, '-').slice(0, 60);
|
|
134
|
+
const digest = (0, node_crypto_1.createHash)('sha256').update(requestId).digest('hex').slice(0, 8);
|
|
135
|
+
return `${readable}-${digest}`;
|
|
136
|
+
}
|
|
137
|
+
class StartAttempts {
|
|
138
|
+
stateDir;
|
|
139
|
+
fs;
|
|
140
|
+
probe;
|
|
141
|
+
deps;
|
|
142
|
+
constructor(stateDir, fs, probe = run_lease_1.nodeProbe, deps = {}) {
|
|
143
|
+
this.stateDir = stateDir;
|
|
144
|
+
this.fs = fs;
|
|
145
|
+
this.probe = probe;
|
|
146
|
+
this.deps = deps;
|
|
147
|
+
}
|
|
148
|
+
dir(requestId) {
|
|
149
|
+
return `${this.stateDir}/start-attempts/${attemptDirName(requestId)}`;
|
|
150
|
+
}
|
|
151
|
+
path(requestId, attempt) {
|
|
152
|
+
return `${this.dir(requestId)}/${String(attempt).padStart(3, '0')}.json`;
|
|
153
|
+
}
|
|
154
|
+
/** The daemon's "I am spending a try" receipt. Beside the claim, never instead of it. */
|
|
155
|
+
launchPath(requestId, attempt) {
|
|
156
|
+
return `${this.dir(requestId)}/${String(attempt).padStart(3, '0')}.launch.json`;
|
|
157
|
+
}
|
|
158
|
+
/** What the launcher reported: a child, or no child. */
|
|
159
|
+
spawnPath(requestId, attempt) {
|
|
160
|
+
return `${this.dir(requestId)}/${String(attempt).padStart(3, '0')}.spawn.json`;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* SPEND ONE OF THE THREE TRIES, before anything is spawned.
|
|
164
|
+
*
|
|
165
|
+
* Exclusive, like every other budget fact here, so two daemons that both
|
|
166
|
+
* decide attempt N is due cannot both take it. The loser is told, and does
|
|
167
|
+
* not spawn.
|
|
168
|
+
*
|
|
169
|
+
* Deliberately written BEFORE the launcher is called. A try recorded
|
|
170
|
+
* afterwards is not recorded at all for precisely the failures that need
|
|
171
|
+
* bounding — the ones where nothing comes back.
|
|
172
|
+
*/
|
|
173
|
+
async reserveLaunch(requestId, attempt) {
|
|
174
|
+
if (!Number.isInteger(attempt) || attempt < 1 || attempt > exports.MAX_START_REQUEST_ATTEMPTS) {
|
|
175
|
+
return { ok: false, because: `attempt ${attempt} is outside the permitted range` };
|
|
176
|
+
}
|
|
177
|
+
const launch = {
|
|
178
|
+
requestId,
|
|
179
|
+
attempt,
|
|
180
|
+
token: this.deps.token?.() ?? randomToken(),
|
|
181
|
+
pid: this.deps.pid?.() ?? process.pid,
|
|
182
|
+
host: this.deps.host?.() ?? (0, node_os_1.hostname)(),
|
|
183
|
+
at: new Date(this.deps.now?.() ?? Date.now()).toISOString(),
|
|
184
|
+
};
|
|
185
|
+
const body = { schema: exports.START_ATTEMPTS_SCHEMA, launch };
|
|
186
|
+
await this.fs.mkdir(this.dir(requestId));
|
|
187
|
+
try {
|
|
188
|
+
await this.fs.createExclusive(this.launchPath(requestId, attempt), JSON.stringify(body, null, 2) + '\n');
|
|
189
|
+
}
|
|
190
|
+
catch (e) {
|
|
191
|
+
if (e.code === 'EEXIST') {
|
|
192
|
+
return { ok: false, because: `attempt ${attempt} of this Start was already launched` };
|
|
193
|
+
}
|
|
194
|
+
throw e;
|
|
195
|
+
}
|
|
196
|
+
return { ok: true, launch };
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Record what the launcher answered. Idempotent on the same answer.
|
|
200
|
+
*
|
|
201
|
+
* A second, DIFFERENT answer for one launch is two processes disagreeing
|
|
202
|
+
* about whether a child exists, which is not something to overwrite.
|
|
203
|
+
*/
|
|
204
|
+
async noteSpawn(requestId, attempt, outcome) {
|
|
205
|
+
const spawn = {
|
|
206
|
+
requestId,
|
|
207
|
+
attempt,
|
|
208
|
+
spawned: outcome.spawned,
|
|
209
|
+
...(outcome.pid === undefined ? {} : { pid: outcome.pid }),
|
|
210
|
+
host: this.deps.host?.() ?? (0, node_os_1.hostname)(),
|
|
211
|
+
at: new Date(this.deps.now?.() ?? Date.now()).toISOString(),
|
|
212
|
+
};
|
|
213
|
+
const body = { schema: exports.START_ATTEMPTS_SCHEMA, spawn };
|
|
214
|
+
await this.fs.mkdir(this.dir(requestId));
|
|
215
|
+
try {
|
|
216
|
+
await this.fs.createExclusive(this.spawnPath(requestId, attempt), JSON.stringify(body, null, 2) + '\n');
|
|
217
|
+
}
|
|
218
|
+
catch (e) {
|
|
219
|
+
if (e.code !== 'EEXIST')
|
|
220
|
+
throw e;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Every try spent on this request, lowest first, and what became of each.
|
|
225
|
+
*
|
|
226
|
+
* A hole is refused here for the same reason it is refused among the ordinal
|
|
227
|
+
* receipts: launches are taken in order, so a gap means one was removed, and
|
|
228
|
+
* a removed launch is a retry budget quietly topped up.
|
|
229
|
+
*/
|
|
230
|
+
async launches(requestId) {
|
|
231
|
+
const found = [];
|
|
232
|
+
const missing = [];
|
|
233
|
+
for (let attempt = 1; attempt <= exports.MAX_START_REQUEST_ATTEMPTS; attempt++) {
|
|
234
|
+
let text;
|
|
235
|
+
try {
|
|
236
|
+
text = await this.fs.readFile(this.launchPath(requestId, attempt));
|
|
237
|
+
}
|
|
238
|
+
catch (e) {
|
|
239
|
+
const t = (0, fs_trouble_1.classifyFsError)(e, `launch ${attempt} of this Start`);
|
|
240
|
+
return { ok: false, transient: (0, fs_trouble_1.shouldWaitFor)(t), because: t.because };
|
|
241
|
+
}
|
|
242
|
+
if (text === null) {
|
|
243
|
+
missing.push(attempt);
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
if (missing.length > 0) {
|
|
247
|
+
return {
|
|
248
|
+
ok: false,
|
|
249
|
+
transient: false,
|
|
250
|
+
because: `launch ${missing[0]} of this Start has no receipt, but launch ${attempt} does`,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
const launch = readLaunch(text);
|
|
254
|
+
if (launch === null) {
|
|
255
|
+
return {
|
|
256
|
+
ok: false,
|
|
257
|
+
transient: false,
|
|
258
|
+
because: `launch ${attempt} is not a record this build can read`,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
if (launch.attempt !== attempt || launch.requestId !== requestId) {
|
|
262
|
+
return {
|
|
263
|
+
ok: false,
|
|
264
|
+
transient: false,
|
|
265
|
+
because: `launch ${attempt} holds a record for something else`,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
let spawnText;
|
|
269
|
+
try {
|
|
270
|
+
spawnText = await this.fs.readFile(this.spawnPath(requestId, attempt));
|
|
271
|
+
}
|
|
272
|
+
catch (e) {
|
|
273
|
+
const t = (0, fs_trouble_1.classifyFsError)(e, `the outcome of launch ${attempt}`);
|
|
274
|
+
return { ok: false, transient: (0, fs_trouble_1.shouldWaitFor)(t), because: t.because };
|
|
275
|
+
}
|
|
276
|
+
found.push({ launch, spawn: spawnText === null ? null : readSpawn(spawnText) });
|
|
277
|
+
}
|
|
278
|
+
return { ok: true, launches: found };
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Take attempt N of this request, or lose it.
|
|
282
|
+
*
|
|
283
|
+
* Exclusive create and nothing else — no read, no check, no "does it exist".
|
|
284
|
+
* The operating system hands the file to exactly one caller, and the loser
|
|
285
|
+
* finds out from the filesystem rather than from a stale read of its own.
|
|
286
|
+
*
|
|
287
|
+
* There is deliberately NO takeover path. If the claimant of attempt 1 is
|
|
288
|
+
* dead, the answer is attempt 2, not attempt 1 again: an attempt receipt is a
|
|
289
|
+
* historical fact and rewriting one would both lose the history that bounds
|
|
290
|
+
* the retries and reopen the dead-lease race class this repository already
|
|
291
|
+
* closed once.
|
|
292
|
+
*/
|
|
293
|
+
async claim(requestId, attempt) {
|
|
294
|
+
if (!Number.isInteger(attempt) || attempt < 1 || attempt > exports.MAX_START_REQUEST_ATTEMPTS) {
|
|
295
|
+
return { ok: false, because: `attempt ${attempt} is outside the permitted range` };
|
|
296
|
+
}
|
|
297
|
+
const claim = {
|
|
298
|
+
requestId,
|
|
299
|
+
attempt,
|
|
300
|
+
token: this.deps.token?.() ?? randomToken(),
|
|
301
|
+
pid: this.deps.pid?.() ?? process.pid,
|
|
302
|
+
host: this.deps.host?.() ?? (0, node_os_1.hostname)(),
|
|
303
|
+
claimedAt: new Date(this.deps.now?.() ?? Date.now()).toISOString(),
|
|
304
|
+
};
|
|
305
|
+
const body = { schema: exports.START_ATTEMPTS_SCHEMA, claim };
|
|
306
|
+
await this.fs.mkdir(this.dir(requestId));
|
|
307
|
+
try {
|
|
308
|
+
await this.fs.createExclusive(this.path(requestId, attempt), JSON.stringify(body, null, 2) + '\n');
|
|
309
|
+
}
|
|
310
|
+
catch (e) {
|
|
311
|
+
if (e.code === 'EEXIST') {
|
|
312
|
+
return { ok: false, because: `attempt ${attempt} of this Start is already claimed` };
|
|
313
|
+
}
|
|
314
|
+
throw e;
|
|
315
|
+
}
|
|
316
|
+
return { ok: true, claim };
|
|
317
|
+
}
|
|
318
|
+
/** Every claim on record for this request, lowest attempt first. */
|
|
319
|
+
async claims(requestId) {
|
|
320
|
+
const found = [];
|
|
321
|
+
const missing = [];
|
|
322
|
+
for (let attempt = 1; attempt <= exports.MAX_START_REQUEST_ATTEMPTS; attempt++) {
|
|
323
|
+
let text;
|
|
324
|
+
try {
|
|
325
|
+
text = await this.fs.readFile(this.path(requestId, attempt));
|
|
326
|
+
}
|
|
327
|
+
catch (e) {
|
|
328
|
+
// Unreadable is not absent — treating it as absent would hand the same
|
|
329
|
+
// attempt number out twice — and it is not damage either. A handle held
|
|
330
|
+
// for a moment by something else says nothing about the bytes.
|
|
331
|
+
const t = (0, fs_trouble_1.classifyFsError)(e, `attempt ${attempt} of this Start`);
|
|
332
|
+
return { ok: false, transient: (0, fs_trouble_1.shouldWaitFor)(t), because: t.because };
|
|
333
|
+
}
|
|
334
|
+
if (text === null) {
|
|
335
|
+
missing.push(attempt);
|
|
336
|
+
continue;
|
|
337
|
+
}
|
|
338
|
+
if (missing.length > 0) {
|
|
339
|
+
// A HOLE. Attempts are taken in order, so a gap means one was removed —
|
|
340
|
+
// and an attempt receipt is the retry budget, so a missing one is a
|
|
341
|
+
// budget that has been quietly topped up. Neither counting around it nor
|
|
342
|
+
// stopping at it is honest.
|
|
343
|
+
return {
|
|
344
|
+
ok: false,
|
|
345
|
+
transient: false,
|
|
346
|
+
because: `attempt ${missing[0]} of this Start has no receipt, but attempt ${attempt} does`,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
const claim = readClaim(text);
|
|
350
|
+
if (claim === null) {
|
|
351
|
+
return {
|
|
352
|
+
ok: false,
|
|
353
|
+
transient: false,
|
|
354
|
+
because: `attempt ${attempt} is not a claim this build can read`,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
if (claim.attempt !== attempt) {
|
|
358
|
+
return {
|
|
359
|
+
ok: false,
|
|
360
|
+
transient: false,
|
|
361
|
+
because: `attempt ${attempt} holds a claim for attempt ${claim.attempt}`,
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
if (claim.requestId !== requestId) {
|
|
365
|
+
return {
|
|
366
|
+
ok: false,
|
|
367
|
+
transient: false,
|
|
368
|
+
because: `attempt ${attempt} holds a claim for another request`,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
found.push(claim);
|
|
372
|
+
}
|
|
373
|
+
return { ok: true, claims: found };
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* What has become of this request, as something that must DECIDE reads it.
|
|
377
|
+
*
|
|
378
|
+
* The order of the questions is the safety argument, and it is not
|
|
379
|
+
* negotiable:
|
|
380
|
+
*
|
|
381
|
+
* A Run that demonstrably began outranks everything. Once `run.started` is
|
|
382
|
+
* durable no further attempt may ever be made, whatever the attempt history
|
|
383
|
+
* says and whichever process died — the work is happening, or it happened.
|
|
384
|
+
*
|
|
385
|
+
* A refusal the run itself made outranks the attempt history too. The run
|
|
386
|
+
* reached a decision; trying again would ask the same question of the same
|
|
387
|
+
* repository and get the same answer.
|
|
388
|
+
*
|
|
389
|
+
* Only then does whether anybody is still working matter.
|
|
390
|
+
*/
|
|
391
|
+
async progress(requestId, outcomes) {
|
|
392
|
+
/**
|
|
393
|
+
* F38: THE RUN'S OWN CODED DECISION OUTRANKS ITS REGISTRATION RECEIPT. The start mark is written at
|
|
394
|
+
* REGISTRATION (run-cmd: "the honest instant") — before a goal-met Start reaches its verdict — and says
|
|
395
|
+
* of itself that "a refusal mark for the same request outranks this receipt". This read the other way:
|
|
396
|
+
* a run that registered and then refused `goal_satisfied` came back as merely "run-started", so the
|
|
397
|
+
* refusal — and with it the third key — was never consulted and the next Start was bought. MEASURED
|
|
398
|
+
* LIVE (LIVE-2, 2026-09-26): R3's goal-met Starts 2→3→4 and R2's 2→3 looped on `goal_satisfied`, and a
|
|
399
|
+
* `human_required` (DepIntent Start 5) was followed by another Start. Both answers still forbid a
|
|
400
|
+
* second attempt of THIS Start — no second executor over one tree. An UNCODED refusal still does not
|
|
401
|
+
* outrank a run that began.
|
|
402
|
+
*/
|
|
403
|
+
if (outcomes.refusal !== null && outcomes.refusal.code !== undefined) {
|
|
404
|
+
return { kind: 'refused', code: outcomes.refusal.code, reason: outcomes.refusal.reason };
|
|
405
|
+
}
|
|
406
|
+
if (outcomes.startedRun !== null) {
|
|
407
|
+
return { kind: 'run-started', runId: outcomes.startedRun.runId };
|
|
408
|
+
}
|
|
409
|
+
// THE BUDGET IS THE LAUNCHES. Not the claims.
|
|
410
|
+
//
|
|
411
|
+
// A claim is written by the child, so counting claims counts only the
|
|
412
|
+
// children that reached the seam — and the whole failure this bound exists
|
|
413
|
+
// for is the one where nothing reaches it. Launches are written by the
|
|
414
|
+
// daemon before it spawns, so they count tries.
|
|
415
|
+
const spent = await this.launches(requestId);
|
|
416
|
+
if (!spent.ok) {
|
|
417
|
+
return spent.transient
|
|
418
|
+
? { kind: 'unreadable', because: spent.because }
|
|
419
|
+
: { kind: 'corrupt', because: spent.because };
|
|
420
|
+
}
|
|
421
|
+
const read = await this.claims(requestId);
|
|
422
|
+
if (!read.ok) {
|
|
423
|
+
return read.transient
|
|
424
|
+
? { kind: 'unreadable', because: read.because }
|
|
425
|
+
: { kind: 'corrupt', because: read.because };
|
|
426
|
+
}
|
|
427
|
+
const { claims } = read;
|
|
428
|
+
const { launches } = spent;
|
|
429
|
+
if (!outcomes.ordinalReserved) {
|
|
430
|
+
// The budget says nothing was spent. If anything WAS tried, the two
|
|
431
|
+
// records contradict each other and this is not the place to pick a
|
|
432
|
+
// winner. With no attempts either, there is simply nothing to run.
|
|
433
|
+
return launches.length === 0 && claims.length === 0
|
|
434
|
+
? { kind: 'corrupt', because: 'this Start has no reserved ordinal behind it' }
|
|
435
|
+
: { kind: 'corrupt', because: 'attempts exist for a Start whose ordinal is not reserved' };
|
|
436
|
+
}
|
|
437
|
+
// A child that claimed a try nobody launched. Two records that cannot both
|
|
438
|
+
// be true, and picking a winner would either lose a try or invent one.
|
|
439
|
+
if (claims.length > launches.length) {
|
|
440
|
+
return {
|
|
441
|
+
kind: 'corrupt',
|
|
442
|
+
because: `attempt ${claims.length} was claimed but only ${launches.length} were launched`,
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
if (launches.length === 0)
|
|
446
|
+
return { kind: 'none', nextAttempt: 1 };
|
|
447
|
+
const latest = launches[launches.length - 1];
|
|
448
|
+
const claim = claims.find((c) => c.attempt === latest.launch.attempt) ?? null;
|
|
449
|
+
const nextOf = (attempt) => attempt >= exports.MAX_START_REQUEST_ATTEMPTS
|
|
450
|
+
? { kind: 'exhausted', attempts: attempt }
|
|
451
|
+
: { kind: 'retryable', nextAttempt: attempt + 1, deadAttempt: attempt };
|
|
452
|
+
if (claim !== null) {
|
|
453
|
+
// A child got in. Its liveness is what decides, exactly as before: this
|
|
454
|
+
// is the process actually capable of doing the work.
|
|
455
|
+
const liveness = this.livenessOf(claim);
|
|
456
|
+
if (liveness !== 'dead') {
|
|
457
|
+
return { kind: 'active', attempt: claim.attempt, liveness, claim };
|
|
458
|
+
}
|
|
459
|
+
return nextOf(claim.attempt);
|
|
460
|
+
}
|
|
461
|
+
// A try was spent and no child ever crossed the seam. What may be concluded
|
|
462
|
+
// depends entirely on what the launcher managed to write down, and the one
|
|
463
|
+
// thing that must never be concluded is "no claim, therefore dead" — a
|
|
464
|
+
// detached child that is a millisecond from claiming would be overtaken by
|
|
465
|
+
// a second executor, which is the failure the seam exists to prevent.
|
|
466
|
+
const outcome = latest.spawn;
|
|
467
|
+
if (outcome === null) {
|
|
468
|
+
// The launcher has not reported yet. Either it is mid-spawn right now, or
|
|
469
|
+
// it died between reserving the try and learning what happened. Neither
|
|
470
|
+
// can be told from the other, and neither proves no child exists — so
|
|
471
|
+
// this waits. It cannot wait for ever: the try is already spent, the
|
|
472
|
+
// ceiling is three, and the grant's own clock ends it.
|
|
473
|
+
return {
|
|
474
|
+
kind: 'active',
|
|
475
|
+
attempt: latest.launch.attempt,
|
|
476
|
+
liveness: this.livenessOf({ ...latest.launch, claimedAt: latest.launch.at }),
|
|
477
|
+
claim: { ...latest.launch, claimedAt: latest.launch.at },
|
|
478
|
+
};
|
|
479
|
+
}
|
|
480
|
+
if (!outcome.spawned) {
|
|
481
|
+
// PROVEN: no child was ever created. The launcher said so before anything
|
|
482
|
+
// could have started. This is the case that used to leave no trace at all
|
|
483
|
+
// and spin for ever; it now costs exactly one of three tries.
|
|
484
|
+
return nextOf(latest.launch.attempt);
|
|
485
|
+
}
|
|
486
|
+
// A child was created and never claimed. Probe the child itself — its pid
|
|
487
|
+
// was written down for precisely this — and fail closed on anything but
|
|
488
|
+
// proven death.
|
|
489
|
+
const childHost = outcome.host;
|
|
490
|
+
const here = this.deps.host?.() ?? (0, node_os_1.hostname)();
|
|
491
|
+
const liveness = childHost !== here || outcome.pid === undefined ? 'unknown' : this.probe(outcome.pid);
|
|
492
|
+
if (liveness === 'dead')
|
|
493
|
+
return nextOf(latest.launch.attempt);
|
|
494
|
+
return {
|
|
495
|
+
kind: 'active',
|
|
496
|
+
attempt: latest.launch.attempt,
|
|
497
|
+
liveness,
|
|
498
|
+
claim: { ...latest.launch, claimedAt: latest.launch.at, pid: outcome.pid ?? latest.launch.pid },
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Whether the process that made this claim is still about.
|
|
503
|
+
*
|
|
504
|
+
* A claim made on another machine is `unknown`, never `dead`: a pid means
|
|
505
|
+
* nothing off the host that issued it, and probing a local pid that happens
|
|
506
|
+
* to match somebody else's would be reading a stranger's process as evidence
|
|
507
|
+
* about ours.
|
|
508
|
+
*/
|
|
509
|
+
livenessOf(claim) {
|
|
510
|
+
const here = this.deps.host?.() ?? (0, node_os_1.hostname)();
|
|
511
|
+
if (claim.host !== here)
|
|
512
|
+
return 'unknown';
|
|
513
|
+
return this.probe(claim.pid);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
exports.StartAttempts = StartAttempts;
|
|
517
|
+
exports.nodeAttemptFs = {
|
|
518
|
+
...ledger_store_1.nodeLedgerFs,
|
|
519
|
+
createExclusive: async (path, data) => {
|
|
520
|
+
const { writeFile } = await Promise.resolve().then(() => __importStar(require('node:fs/promises')));
|
|
521
|
+
await writeFile(path, data, { encoding: 'utf8', flag: 'wx' });
|
|
522
|
+
},
|
|
523
|
+
};
|
|
524
|
+
function readLaunch(text) {
|
|
525
|
+
let parsed;
|
|
526
|
+
try {
|
|
527
|
+
parsed = JSON.parse(text);
|
|
528
|
+
}
|
|
529
|
+
catch {
|
|
530
|
+
return null;
|
|
531
|
+
}
|
|
532
|
+
const file = parsed;
|
|
533
|
+
if (typeof file !== 'object' || file === null)
|
|
534
|
+
return null;
|
|
535
|
+
if (file.schema !== exports.START_ATTEMPTS_SCHEMA)
|
|
536
|
+
return null;
|
|
537
|
+
const l = file.launch;
|
|
538
|
+
if (typeof l !== 'object' || l === null)
|
|
539
|
+
return null;
|
|
540
|
+
if (typeof l['requestId'] !== 'string' || l['requestId'] === '')
|
|
541
|
+
return null;
|
|
542
|
+
if (typeof l['attempt'] !== 'number' || !Number.isInteger(l['attempt']))
|
|
543
|
+
return null;
|
|
544
|
+
if (typeof l['token'] !== 'string' || typeof l['host'] !== 'string')
|
|
545
|
+
return null;
|
|
546
|
+
if (typeof l['pid'] !== 'number' || !Number.isInteger(l['pid']))
|
|
547
|
+
return null;
|
|
548
|
+
if (typeof l['at'] !== 'string')
|
|
549
|
+
return null;
|
|
550
|
+
return l;
|
|
551
|
+
}
|
|
552
|
+
function readSpawn(text) {
|
|
553
|
+
let parsed;
|
|
554
|
+
try {
|
|
555
|
+
parsed = JSON.parse(text);
|
|
556
|
+
}
|
|
557
|
+
catch {
|
|
558
|
+
return null;
|
|
559
|
+
}
|
|
560
|
+
const file = parsed;
|
|
561
|
+
if (typeof file !== 'object' || file === null)
|
|
562
|
+
return null;
|
|
563
|
+
if (file.schema !== exports.START_ATTEMPTS_SCHEMA)
|
|
564
|
+
return null;
|
|
565
|
+
const s = file.spawn;
|
|
566
|
+
if (typeof s !== 'object' || s === null)
|
|
567
|
+
return null;
|
|
568
|
+
if (typeof s['spawned'] !== 'boolean')
|
|
569
|
+
return null;
|
|
570
|
+
if (typeof s['host'] !== 'string')
|
|
571
|
+
return null;
|
|
572
|
+
return s;
|
|
573
|
+
}
|
|
574
|
+
function readClaim(text) {
|
|
575
|
+
let parsed;
|
|
576
|
+
try {
|
|
577
|
+
parsed = JSON.parse(text);
|
|
578
|
+
}
|
|
579
|
+
catch {
|
|
580
|
+
return null;
|
|
581
|
+
}
|
|
582
|
+
const file = parsed;
|
|
583
|
+
if (typeof file !== 'object' || file === null)
|
|
584
|
+
return null;
|
|
585
|
+
if (file.schema !== exports.START_ATTEMPTS_SCHEMA)
|
|
586
|
+
return null;
|
|
587
|
+
const c = file.claim;
|
|
588
|
+
if (typeof c !== 'object' || c === null)
|
|
589
|
+
return null;
|
|
590
|
+
if (typeof c['requestId'] !== 'string' || c['requestId'] === '')
|
|
591
|
+
return null;
|
|
592
|
+
if (typeof c['attempt'] !== 'number' || !Number.isInteger(c['attempt']))
|
|
593
|
+
return null;
|
|
594
|
+
if (typeof c['token'] !== 'string' || typeof c['host'] !== 'string')
|
|
595
|
+
return null;
|
|
596
|
+
if (typeof c['pid'] !== 'number' || !Number.isInteger(c['pid']))
|
|
597
|
+
return null;
|
|
598
|
+
if (typeof c['claimedAt'] !== 'string')
|
|
599
|
+
return null;
|
|
600
|
+
return c;
|
|
601
|
+
}
|
|
602
|
+
/** The same shape the run lease uses, for the same reason. */
|
|
603
|
+
function randomToken() {
|
|
604
|
+
return (0, node_crypto_1.createHash)('sha256')
|
|
605
|
+
.update(`${process.pid}:${Date.now()}:${Math.random()}`)
|
|
606
|
+
.digest('hex')
|
|
607
|
+
.slice(0, 16);
|
|
608
|
+
}
|
|
609
|
+
/** Narrow a refusal mark's code without trusting it. */
|
|
610
|
+
function codeOf(mark) {
|
|
611
|
+
return mark && (0, core_1.isRunRefusalCode)(mark.code) ? mark.code : undefined;
|
|
612
|
+
}
|
|
613
|
+
//# sourceMappingURL=start-attempts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-attempts.js","sourceRoot":"","sources":["../src/start-attempts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type Status } from '@looply/core';
|
|
2
|
+
/**
|
|
3
|
+
* `looply status` — a one-screen snapshot read from `status.json` and nothing
|
|
4
|
+
* else (DESIGN §5.2). Not the ledger, not the queue: the projection is the
|
|
5
|
+
* contract, and it is the same file a phone polls. If it cannot answer a
|
|
6
|
+
* question the screen needs, the fix belongs in the projection, never in a
|
|
7
|
+
* side-channel read here that only the CLI would benefit from.
|
|
8
|
+
*
|
|
9
|
+
* Pure text-in, text-out; the filesystem and the clock stay in `bin.ts`.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* The longest legal silence in a healthy run is one gate step running to its
|
|
13
|
+
* default timeout, so the stale window is that plus slack. DESIGN §12 case 25:
|
|
14
|
+
* a quiet run must read as STALE, not resting — a silent loop and a healthy
|
|
15
|
+
* one look identical otherwise.
|
|
16
|
+
*/
|
|
17
|
+
export declare const STALE_AFTER_MS: number;
|
|
18
|
+
export interface RenderedStatus {
|
|
19
|
+
out: string;
|
|
20
|
+
code: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Shallow shape check only: the writer is our own `LedgerStore`, so this guard
|
|
24
|
+
* exists to catch a foreign or hand-edited file, not to re-validate our schema.
|
|
25
|
+
*/
|
|
26
|
+
export declare function parseStatusFile(text: string): Status | null;
|
|
27
|
+
export declare function renderStatus(text: string | null, now: number): RenderedStatus;
|
|
28
|
+
//# sourceMappingURL=status-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-cmd.d.ts","sourceRoot":"","sources":["../src/status-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqD,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAG9F;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAmC,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW3D;AAkBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,CAkD7E"}
|