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,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.vectorFor = vectorFor;
|
|
4
|
+
exports.observationFor = observationFor;
|
|
5
|
+
const core_1 = require("@looply/core");
|
|
6
|
+
const core_2 = require("@looply/core");
|
|
7
|
+
/**
|
|
8
|
+
* The achievement facts, read off the queue.
|
|
9
|
+
*
|
|
10
|
+
* `done` is the only state that means an item was actually finished — the
|
|
11
|
+
* others are all "not yet" of one kind or another, and `workLeft` is the
|
|
12
|
+
* repository's own reading of what a set of them amounts to.
|
|
13
|
+
*/
|
|
14
|
+
function vectorFor(goalId, goalVersion, pursuit, passingGates = []) {
|
|
15
|
+
const done = pursuit.items.filter((i) => i.state === 'done').map((i) => i.id);
|
|
16
|
+
const outcome = (0, core_2.workLeft)(pursuit.items);
|
|
17
|
+
return {
|
|
18
|
+
goalId,
|
|
19
|
+
goalVersion,
|
|
20
|
+
verifiedItemIds: done,
|
|
21
|
+
/**
|
|
22
|
+
* How many are still workable. `none` and `finished` and `stalled` all mean
|
|
23
|
+
* nothing more will happen without a person, so they are zero — three words
|
|
24
|
+
* for the same number here, and the distinction between them is somebody
|
|
25
|
+
* else's decision.
|
|
26
|
+
*/
|
|
27
|
+
workRemaining: outcome === 'working' ? pursuit.items.filter(isUnfinished).length : 0,
|
|
28
|
+
provenCriteria: [],
|
|
29
|
+
/**
|
|
30
|
+
* ⚠️ SORTED AND DE-DUPLICATED, so the fingerprint is about WHICH gates
|
|
31
|
+
* passed and not about the order a runner happened to report them in.
|
|
32
|
+
*/
|
|
33
|
+
passingGates: [...new Set(passingGates)].sort(),
|
|
34
|
+
planRevision: pursuit.planRevision,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/** The states that are "not finished yet" rather than "finished" or "given up". */
|
|
38
|
+
function isUnfinished(item) {
|
|
39
|
+
return item.state === 'ready' || item.state === 'draft' || item.state === 'verifying';
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* One observation, or null when this attempt is not the model's to answer for.
|
|
43
|
+
*
|
|
44
|
+
* Null is the common case in a quiet daemon and is not a failure: a tick that
|
|
45
|
+
* held, an approval nobody has answered, a recovery carrying one authority
|
|
46
|
+
* forward. None of those is an attempt that achieved nothing — they are attempts
|
|
47
|
+
* that never happened.
|
|
48
|
+
*/
|
|
49
|
+
function observationFor(facts) {
|
|
50
|
+
if (!(0, core_1.countsTowardSafety)(facts.excluded))
|
|
51
|
+
return null;
|
|
52
|
+
return {
|
|
53
|
+
goalId: facts.goalId,
|
|
54
|
+
goalVersion: facts.goalVersion,
|
|
55
|
+
ordinal: facts.ordinal,
|
|
56
|
+
outcome: facts.outcome,
|
|
57
|
+
progressFingerprint: (0, core_1.progressFingerprint)(vectorFor(facts.goalId, facts.goalVersion, facts.pursuit,
|
|
58
|
+
/**
|
|
59
|
+
* ⚠️ THE HIGH-WATER MARK, NOT THIS ROUND'S SET. See `gatesEverPassed`:
|
|
60
|
+
* the raw set lets one flaky step change the fingerprint every round,
|
|
61
|
+
* which makes three identical fingerprints impossible and switches all
|
|
62
|
+
* four detectors off for a pursuit that is genuinely stuck.
|
|
63
|
+
*
|
|
64
|
+
* The union only ever grows, so a step passing for the FIRST time is
|
|
65
|
+
* progress and a step flapping is not.
|
|
66
|
+
*/
|
|
67
|
+
[...(facts.gatesEverPassed ?? []), ...(facts.passingGates ?? [])])),
|
|
68
|
+
treeFingerprint: facts.treeFingerprint,
|
|
69
|
+
failureSignature: facts.failureSignature,
|
|
70
|
+
actionFingerprint: facts.actionFingerprint,
|
|
71
|
+
// TRACE. Carried so a person can find the run; excluded from every digest.
|
|
72
|
+
runId: facts.runId,
|
|
73
|
+
observedAt: facts.at,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=loop-safety-observer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop-safety-observer.js","sourceRoot":"","sources":["../src/loop-safety-observer.ts"],"names":[],"mappings":";;AA2EA,8BA2BC;AAwED,wCA+BC;AA7MD,uCAOsB;AACtB,uCAAmD;AA4DnD;;;;;;GAMG;AACH,SAAgB,SAAS,CACvB,MAAc,EACd,WAAmB,EACnB,OAAqB,EACrB,eAAkC,EAAE;IAEpC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,IAAA,eAAQ,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO;QACL,MAAM;QACN,WAAW;QACX,eAAe,EAAE,IAAI;QACrB;;;;;WAKG;QACH,aAAa,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpF,cAAc,EAAE,EAAE;QAClB;;;WAGG;QACH,YAAY,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE;QAC/C,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,SAAS,YAAY,CAAC,IAAU;IAC9B,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC;AACxF,CAAC;AA2DD;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,KAAmB;IAChD,IAAI,CAAC,IAAA,yBAAkB,EAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,mBAAmB,EAAE,IAAA,0BAAmB,EACtC,SAAS,CACP,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,OAAO;QACb;;;;;;;;WAQG;QACH,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAClE,CACF;QACD,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,2EAA2E;QAC3E,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,KAAK,CAAC,EAAE;KACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
import { type LoopSafetyVerdict, type SafetyHoldKind, type SafetyObservation } from '@looply/core';
|
|
2
|
+
import type { LedgerFs } from './ledger-store';
|
|
3
|
+
import type { AttemptFs } from './start-attempts';
|
|
4
|
+
/**
|
|
5
|
+
* WHAT AUTONOMY HAS ACHIEVED, WRITTEN DOWN SO A RESTART CANNOT FORGET IT.
|
|
6
|
+
*
|
|
7
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
8
|
+
* THE GAP THIS FILLS
|
|
9
|
+
*
|
|
10
|
+
* Nothing in this repository recorded what a Start ACHIEVED. `finishStart`
|
|
11
|
+
* closes an ordinal with no outcome payload at all — the receipts prove a Start
|
|
12
|
+
* was spent, the launch records prove a child began, and the refusal marks say
|
|
13
|
+
* why one did not. None of them says whether the work moved the Goal, so no
|
|
14
|
+
* detector could have existed before this file.
|
|
15
|
+
*
|
|
16
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
17
|
+
* WHY IT IS NOT IN `control.json`
|
|
18
|
+
*
|
|
19
|
+
* 🔴 A DIRECT `looply run` ERASES CONTROL STATE. `consumeControlOnStart` is true
|
|
20
|
+
* for a hand-typed run, so the first thing such a run does is consume a person's
|
|
21
|
+
* pause. A safety hold stored there would be cleared as a SIDE EFFECT of typing
|
|
22
|
+
* the command the hold exists to prevent — which is not a hold at all.
|
|
23
|
+
*
|
|
24
|
+
* So this is its own file, written by the same temp-then-rename contract every
|
|
25
|
+
* other store here uses, and the override that clears an incident is an
|
|
26
|
+
* exclusive create rather than a field somebody can rewrite.
|
|
27
|
+
*
|
|
28
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
29
|
+
* BOUNDED, BECAUSE A DURABLE HISTORY THAT GROWS IS A DEFECT WITH A DELAY
|
|
30
|
+
*
|
|
31
|
+
* `MAX_SAFETY_OBSERVATIONS` is the whole window; the widest detector looks at
|
|
32
|
+
* four. A file that grew for every attempt would arrive months later on
|
|
33
|
+
* somebody else's machine, and by then nobody would know why.
|
|
34
|
+
*/
|
|
35
|
+
export type SafetyStoreState = 'ok' | 'unreadable';
|
|
36
|
+
/**
|
|
37
|
+
* A safety hold, once derived, is a fact about this machine.
|
|
38
|
+
*
|
|
39
|
+
* ⚠️ IT HAS NO `expiresAt` AND NO `clear()`. A hold must not disappear because
|
|
40
|
+
* the daemon restarted, because time passed, or because a model asked nicely —
|
|
41
|
+
* only a person's explicit Start ends one, and that is recorded rather than
|
|
42
|
+
* erased so the audit survives.
|
|
43
|
+
*/
|
|
44
|
+
export interface LoopSafetyIncident {
|
|
45
|
+
readonly id: string;
|
|
46
|
+
readonly goalId: string;
|
|
47
|
+
readonly goalVersion: number;
|
|
48
|
+
readonly kind: SafetyHoldKind;
|
|
49
|
+
readonly because: string;
|
|
50
|
+
readonly evidence: readonly string[];
|
|
51
|
+
/** ISO. TRACE — a person reads it; nothing decides on it. */
|
|
52
|
+
readonly triggeredAt: string;
|
|
53
|
+
/** The Start that spent this incident's one retry, if one has. */
|
|
54
|
+
readonly overriddenByStartId?: string;
|
|
55
|
+
}
|
|
56
|
+
export declare class LoopSafetyStore {
|
|
57
|
+
private readonly stateDir;
|
|
58
|
+
/**
|
|
59
|
+
* ⚠️ `readDir` IS OPTIONAL, so every existing fake still satisfies this.
|
|
60
|
+
* A store that cannot list the ordinal claims simply falls back to deriving
|
|
61
|
+
* the next attempt number from the observations, which is what it did
|
|
62
|
+
* before — weaker, and never wrong in a direction that loses a hold.
|
|
63
|
+
*/
|
|
64
|
+
private readonly fs;
|
|
65
|
+
private readonly now;
|
|
66
|
+
private readonly migrate?;
|
|
67
|
+
/** Distinguishes two writes from ONE process; the pid distinguishes processes. */
|
|
68
|
+
private static writes;
|
|
69
|
+
private observations;
|
|
70
|
+
private incidents;
|
|
71
|
+
private state;
|
|
72
|
+
private opened;
|
|
73
|
+
/**
|
|
74
|
+
* ⚠️ `migrate` RUNS BEFORE ANY READ, AND ITS REFUSAL LEAVES THE STORE
|
|
75
|
+
* UNREADABLE — which is a REFUSAL TO START, not a silent pass.
|
|
76
|
+
*
|
|
77
|
+
* The history's home moved out of the repository (see `rails-home.ts`). During
|
|
78
|
+
* a move, "I could not read the old history" and "there is no old history"
|
|
79
|
+
* look the same, and this store must never confuse them: an empty history
|
|
80
|
+
* discharges every hold it holds. A `repeated_failure` hold raised an hour ago
|
|
81
|
+
* would vanish, the run it was stopping would start, and nothing would say why.
|
|
82
|
+
*
|
|
83
|
+
* Omitted, there is no migration and nothing changes.
|
|
84
|
+
*/
|
|
85
|
+
constructor(stateDir: string,
|
|
86
|
+
/**
|
|
87
|
+
* ⚠️ `readDir` IS OPTIONAL, so every existing fake still satisfies this.
|
|
88
|
+
* A store that cannot list the ordinal claims simply falls back to deriving
|
|
89
|
+
* the next attempt number from the observations, which is what it did
|
|
90
|
+
* before — weaker, and never wrong in a direction that loses a hold.
|
|
91
|
+
*/
|
|
92
|
+
fs: LedgerFs & Pick<AttemptFs, 'createExclusive'> & {
|
|
93
|
+
readDir?(path: string): Promise<string[]>;
|
|
94
|
+
}, now?: () => number, migrate?: (() => Promise<{
|
|
95
|
+
ok: boolean;
|
|
96
|
+
because?: string;
|
|
97
|
+
}>) | undefined);
|
|
98
|
+
private get path();
|
|
99
|
+
/**
|
|
100
|
+
* The append-only history of attempts.
|
|
101
|
+
*
|
|
102
|
+
* 🔴 A SEPARATE FILE FROM THE INCIDENTS, AND APPEND-ONLY, BECAUSE A REWRITE
|
|
103
|
+
* LOSES A CONCURRENT WRITER'S WORK. Two writers for one goal on one machine is
|
|
104
|
+
* ordinary — the run recording what it achieved, and the Start gate spending a
|
|
105
|
+
* retry — and a whole-document rewrite meant whichever loaded first clobbered
|
|
106
|
+
* the other. For the spent retry that was survivable (the marker file is the
|
|
107
|
+
* authority). For an OBSERVATION it was not: a shorter history holds LATER, so
|
|
108
|
+
* the machine keeps working, which is the direction that costs a person money.
|
|
109
|
+
*
|
|
110
|
+
* The shape is `ledger-store.ts`'s, deliberately: events appended as JSONL,
|
|
111
|
+
* never rewritten, with the small mutable thing kept as a projection beside
|
|
112
|
+
* it. ⚠️ NOT `command-receipts.ts` — that one rewrites its whole document too,
|
|
113
|
+
* and an earlier draft of this file's own handoff cited it as the append-only
|
|
114
|
+
* precedent. It is not one.
|
|
115
|
+
*
|
|
116
|
+
* NEVER COMPACT THIS FILE. `ledger-store` says the same of its own events and
|
|
117
|
+
* for the same reason: a compaction is a rewrite, and a concurrent append
|
|
118
|
+
* during one is exactly the loss this change exists to prevent.
|
|
119
|
+
*
|
|
120
|
+
* ⚠️ THE COST THIS TRADE BUYS, STATED PLAINLY RATHER THAN LEFT TO BE FOUND.
|
|
121
|
+
* The whole file is read and parsed on every observation, because the verdict
|
|
122
|
+
* must be a fact about the machine rather than about one process. So the read
|
|
123
|
+
* grows with the machine's LIFETIME, not with its current workload: one record
|
|
124
|
+
* per attempt, forever, re-parsed each time.
|
|
125
|
+
*
|
|
126
|
+
* That is affordable at the scale this runs at — attempts are minutes apart
|
|
127
|
+
* and bounded by the very brake this file feeds — and it is the honest
|
|
128
|
+
* successor to the limit it replaced, not the absence of one. If a machine
|
|
129
|
+
* ever accumulates enough attempts for this to matter, the answer is a second
|
|
130
|
+
* ledger file rolled by date with the old one left in place, NOT a compaction
|
|
131
|
+
* of this one.
|
|
132
|
+
*/
|
|
133
|
+
private get eventsPath();
|
|
134
|
+
/** Where an override's exclusive-create claim lives. One file per incident. */
|
|
135
|
+
/**
|
|
136
|
+
* Where incidents are written now: APPEND-ONLY, one per line.
|
|
137
|
+
*
|
|
138
|
+
* 🔴 `persist()` REWROTE THE WHOLE DOCUMENT from an `open()`-time snapshot,
|
|
139
|
+
* and Phase 1 turned that into a hold-erasing race. Moving this file to the
|
|
140
|
+
* project state directory is what lets a hold raised in one workspace be seen
|
|
141
|
+
* in another — and the same change put two concurrent writers on it. Two runs
|
|
142
|
+
* raising holds for two different pursuits each wrote a document without the
|
|
143
|
+
* other's incident, so one brake vanished. Unlike an override, nothing
|
|
144
|
+
* recovers it.
|
|
145
|
+
*
|
|
146
|
+
* Observations were made append-only long ago for exactly this reason.
|
|
147
|
+
* Incidents simply never were, because until Phase 1 there could not be two
|
|
148
|
+
* writers.
|
|
149
|
+
*/
|
|
150
|
+
private get incidentsPath();
|
|
151
|
+
/** A short unique token for an incident id. Filename-safe by construction. */
|
|
152
|
+
private incidentToken;
|
|
153
|
+
private overridePath;
|
|
154
|
+
/** Read what is on disk. Never throws: an unreadable file is a state, not a crash. */
|
|
155
|
+
open(): Promise<SafetyStoreState>;
|
|
156
|
+
status(): SafetyStoreState;
|
|
157
|
+
/**
|
|
158
|
+
* The active incident for a pursuit, or null.
|
|
159
|
+
*
|
|
160
|
+
* ⚠️ AN UNREADABLE FILE ANSWERS `null`, AND THAT IS DELIBERATE — but it is
|
|
161
|
+
* NOT the same as failing open. The caller (`autonomy-tick`) treats an
|
|
162
|
+
* unreadable store as a hold in its own right, because a machine that cannot
|
|
163
|
+
* read its safety history must not spend a night on the assumption that it is
|
|
164
|
+
* empty. Deciding that here would hide it inside a getter.
|
|
165
|
+
*/
|
|
166
|
+
/**
|
|
167
|
+
* Whether this store could read its history.
|
|
168
|
+
*
|
|
169
|
+
* 🔴 EXPOSED BECAUSE THE RULE ABOVE HAD A SECOND CALLER THAT DID NOT KNOW IT.
|
|
170
|
+
* `activeIncident` answers null on an unreadable file and says, correctly,
|
|
171
|
+
* that deciding there "would hide it inside a getter" — but that only works
|
|
172
|
+
* while every caller applies the rule. `autonomy-tick` did; the coordinator's
|
|
173
|
+
* `holdsFor` did not, and returned NO HOLDS for an unreadable history, which
|
|
174
|
+
* `decideSchedule` reads as "nothing is held" and answers with `start`.
|
|
175
|
+
*
|
|
176
|
+
* `open()` already returns this; a store that has been opened elsewhere had
|
|
177
|
+
* no way to be asked again.
|
|
178
|
+
*/
|
|
179
|
+
readable(): boolean;
|
|
180
|
+
activeIncident(goalId: string, goalVersion: number): LoopSafetyIncident | null;
|
|
181
|
+
/** Every incident ever derived for this pursuit, newest last. History, not state. */
|
|
182
|
+
history(goalId: string): readonly LoopSafetyIncident[];
|
|
183
|
+
observationsFor(goalId: string): readonly SafetyObservation[];
|
|
184
|
+
/**
|
|
185
|
+
* The number to give the next attempt for this pursuit.
|
|
186
|
+
*
|
|
187
|
+
* ⚠️ NOT `observationsFor(...).length + 1`, WHICH IS WHAT THIS REPLACED. The
|
|
188
|
+
* history is bounded at `MAX_SAFETY_OBSERVATIONS`, so a count SATURATES: past
|
|
189
|
+
* sixteen attempts every one of them is numbered seventeen, and the evidence
|
|
190
|
+
* a person reads to understand why their machine stopped becomes three
|
|
191
|
+
* identical lines. No detector reads the ordinal, so nothing went wrong — it
|
|
192
|
+
* was only unreadable, which is the kind of defect a test suite never has an
|
|
193
|
+
* opinion about.
|
|
194
|
+
*
|
|
195
|
+
* Counting on from the LAST one survives trimming, because trimming keeps the
|
|
196
|
+
* newest. It restarts at one for a pursuit with no history, which is correct:
|
|
197
|
+
* a person who has never seen this Goal run should be shown attempt one.
|
|
198
|
+
*/
|
|
199
|
+
nextOrdinalFor(goalId: string): number;
|
|
200
|
+
/**
|
|
201
|
+
* The largest attempt number anybody has already claimed for this goal, or 0.
|
|
202
|
+
*
|
|
203
|
+
* ⚠️ CLAIMS, NOT OBSERVATIONS. See `mintOrdinal`. An unreadable directory
|
|
204
|
+
* answers 0, which makes the caller fall back to the observation-derived
|
|
205
|
+
* start — the same answer it had before, rather than a refusal.
|
|
206
|
+
*/
|
|
207
|
+
private highestClaim;
|
|
208
|
+
/** Where an ordinal's exclusive-create claim lives. One file per attempt. */
|
|
209
|
+
private ordinalPath;
|
|
210
|
+
/**
|
|
211
|
+
* TAKE THE NEXT ATTEMPT NUMBER, EXCLUSIVELY.
|
|
212
|
+
*
|
|
213
|
+
* 🔴 `nextOrdinalFor` IS A READ, AND TWO RUNS READ THE SAME ANSWER.
|
|
214
|
+
*
|
|
215
|
+
* It derives the next number from the last observation on disk. That was
|
|
216
|
+
* sound while one run owned one checkout. With N workspaces two runs on one
|
|
217
|
+
* goal start within the same second, both read "the last attempt was 3", and
|
|
218
|
+
* both record attempt 4 — so the evidence a person is shown to explain why
|
|
219
|
+
* their machine stopped contains two different attempt fours and no five.
|
|
220
|
+
* `MAX_SAME_FAILURE_REPEATS` still fires correctly, because no detector reads
|
|
221
|
+
* the ordinal; what breaks is the only part of a hold a person can act on.
|
|
222
|
+
*
|
|
223
|
+
* ⚠️ THE SAME PRIMITIVE THE OVERRIDE MARKER USES, three files away: the
|
|
224
|
+
* filesystem arbitrates, never a read-then-write, because the two claimants
|
|
225
|
+
* may be two processes. On EEXIST the candidate simply advances — losing a
|
|
226
|
+
* race means somebody else has that number, which is exactly the information
|
|
227
|
+
* needed to pick the next one.
|
|
228
|
+
*
|
|
229
|
+
* ⚠️ GAPS ARE FINE, DUPLICATES ARE NOT. A run that mints 4 and then crashes
|
|
230
|
+
* burns 4, and the next attempt is 5. Nothing counts ordinals — the history's
|
|
231
|
+
* length is what detectors read — so a gap costs a person nothing, while a
|
|
232
|
+
* duplicate costs them the ability to tell two attempts apart.
|
|
233
|
+
*/
|
|
234
|
+
mintOrdinal(goalId: string): Promise<number>;
|
|
235
|
+
/**
|
|
236
|
+
* Record what one attempt achieved, and say whether that makes it unsafe to
|
|
237
|
+
* continue.
|
|
238
|
+
*
|
|
239
|
+
* The verdict is computed from what is now on disk rather than from the
|
|
240
|
+
* caller's belief, so a caller that forgets to persist cannot produce a
|
|
241
|
+
* verdict about a history that does not exist.
|
|
242
|
+
*/
|
|
243
|
+
observe(o: SafetyObservation): Promise<LoopSafetyVerdict>;
|
|
244
|
+
/**
|
|
245
|
+
* Write down that autonomy has stopped, and why.
|
|
246
|
+
*
|
|
247
|
+
* Idempotent on the pursuit: a second derivation while one is already active
|
|
248
|
+
* returns the existing incident rather than stacking. Two holds for one
|
|
249
|
+
* stuck condition would need two overrides to clear, and a person would have
|
|
250
|
+
* to press the button twice for reasons nobody could explain.
|
|
251
|
+
*/
|
|
252
|
+
raise(input: {
|
|
253
|
+
goalId: string;
|
|
254
|
+
goalVersion: number;
|
|
255
|
+
kind: SafetyHoldKind;
|
|
256
|
+
because: string;
|
|
257
|
+
evidence: readonly string[];
|
|
258
|
+
}): Promise<LoopSafetyIncident | null>;
|
|
259
|
+
/**
|
|
260
|
+
* A PERSON SPENDS AN INCIDENT'S ONE RETRY.
|
|
261
|
+
*
|
|
262
|
+
* 🔴 EXCLUSIVE CREATE, AND NOTHING ELSE. Two Starts arriving together must not
|
|
263
|
+
* both believe they may proceed, and the filesystem is what arbitrates —
|
|
264
|
+
* never a read-then-write, and never an in-memory flag, because the two Starts
|
|
265
|
+
* may be two processes. The same Start asking twice gets the same answer, so
|
|
266
|
+
* a dropped response cannot cost a person their retry.
|
|
267
|
+
*
|
|
268
|
+
* ⚠️ ONE RETRY, NOT "SAFETY OFF". The incident is marked as spent rather than
|
|
269
|
+
* deleted, and the observation history is left exactly where it is. If the
|
|
270
|
+
* authorised Run also achieves nothing, the detectors see the whole history
|
|
271
|
+
* and raise a NEW incident — which is the difference between a person saying
|
|
272
|
+
* "try once more" and a person disabling a brake.
|
|
273
|
+
*/
|
|
274
|
+
override(incidentId: string, startId: string): Promise<{
|
|
275
|
+
ok: true;
|
|
276
|
+
incident: LoopSafetyIncident;
|
|
277
|
+
} | {
|
|
278
|
+
ok: false;
|
|
279
|
+
because: string;
|
|
280
|
+
}>;
|
|
281
|
+
/**
|
|
282
|
+
* Read the attempt history from the append-only ledger.
|
|
283
|
+
*
|
|
284
|
+
* Bounded IN MEMORY rather than on disk: the file is never rewritten, so the
|
|
285
|
+
* only place a bound can be applied without a rewrite is here. `carried` is
|
|
286
|
+
* whatever an older build left in the document, and goes first because it is
|
|
287
|
+
* older than anything in the ledger.
|
|
288
|
+
*
|
|
289
|
+
* 🔴 A BAD LINE IS SKIPPED, NOT FATAL — and that is the opposite of how this
|
|
290
|
+
* class treats a bad INCIDENTS document, deliberately. A torn final line is
|
|
291
|
+
* what a crash mid-append leaves, and it costs one observation, which is the
|
|
292
|
+
* bounded loss this design already accepts. Refusing to read the history over
|
|
293
|
+
* it would report NO active incident and so discharge every hold on the
|
|
294
|
+
* machine, which is the one direction that must never fail open. The
|
|
295
|
+
* incidents document still fails closed; it is what holds are made of.
|
|
296
|
+
*/
|
|
297
|
+
private loadObservations;
|
|
298
|
+
/**
|
|
299
|
+
* Mark every incident whose retry has already been taken.
|
|
300
|
+
*
|
|
301
|
+
* 🔴 THE MARKER FILE IS THE AUTHORITY; THE FIELD IS A CACHE. `persist()`
|
|
302
|
+
* rewrites the whole document, so a writer that loaded before another
|
|
303
|
+
* writer's write clobbers it — and the daemon spending a retry while a run
|
|
304
|
+
* records what it achieved is not an exotic interleaving, it is what happens
|
|
305
|
+
* every time somebody presses Start as a run ends. The field really is lost
|
|
306
|
+
* there; it is measured in `loop-safety-race.spec.ts`.
|
|
307
|
+
*
|
|
308
|
+
* What cannot be lost is `loop-safety-overrides/<id>`, because it is written
|
|
309
|
+
* with an exclusive create and never rewritten. So the document is believed
|
|
310
|
+
* about WHAT was raised, and the marker files about WHICH retries are spent.
|
|
311
|
+
* Reading them here keeps `activeIncident` synchronous for its callers.
|
|
312
|
+
*
|
|
313
|
+
* Bounded by the incident count rather than by anything a person can grow: a
|
|
314
|
+
* pursuit has one active incident at a time, and only unspent ones are asked
|
|
315
|
+
* about.
|
|
316
|
+
*/
|
|
317
|
+
/**
|
|
318
|
+
* Fold the append-only incident log over whatever the legacy document held.
|
|
319
|
+
*
|
|
320
|
+
* A malformed line is SKIPPED rather than fatal: an append can be torn by a
|
|
321
|
+
* crash mid-write, and discarding every hold on the strength of one truncated
|
|
322
|
+
* last line would be the fail-open this whole file exists to prevent.
|
|
323
|
+
*/
|
|
324
|
+
private loadIncidents;
|
|
325
|
+
private foldInSpentRetries;
|
|
326
|
+
private readOverride;
|
|
327
|
+
private persist;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* The real filesystem, in the shape this store needs.
|
|
331
|
+
*
|
|
332
|
+
* `createExclusive` is the whole argument for a separate factory: it is the one
|
|
333
|
+
* operation that must be atomic against another PROCESS, and it is spelled with
|
|
334
|
+
* the `wx` flag rather than a read-then-write for exactly that reason.
|
|
335
|
+
*/
|
|
336
|
+
export declare const nodeSafetyFs: LedgerFs & Pick<AttemptFs, 'createExclusive'> & {
|
|
337
|
+
readDir(path: string): Promise<string[]>;
|
|
338
|
+
};
|
|
339
|
+
//# sourceMappingURL=loop-safety-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop-safety-store.d.ts","sourceRoot":"","sources":["../src/loop-safety-store.ts"],"names":[],"mappings":"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"}
|