looply-cli 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +137 -3
- package/dist/.src-hash +1 -0
- package/dist/acceptance-observe.d.ts +108 -0
- package/dist/acceptance-observe.d.ts.map +1 -0
- package/dist/acceptance-observe.js +152 -0
- package/dist/acceptance-observe.js.map +1 -0
- package/dist/agent-cmd.d.ts +131 -0
- package/dist/agent-cmd.d.ts.map +1 -0
- package/dist/agent-cmd.js +154 -0
- package/dist/agent-cmd.js.map +1 -0
- package/dist/agent-contained.d.ts +114 -0
- package/dist/agent-contained.d.ts.map +1 -0
- package/dist/agent-contained.js +292 -0
- package/dist/agent-contained.js.map +1 -0
- package/dist/agent-driver.d.ts +130 -0
- package/dist/agent-driver.d.ts.map +1 -0
- package/dist/agent-driver.js +170 -0
- package/dist/agent-driver.js.map +1 -0
- package/dist/agent-envelope.d.ts +94 -0
- package/dist/agent-envelope.d.ts.map +1 -0
- package/dist/agent-envelope.js +214 -0
- package/dist/agent-envelope.js.map +1 -0
- package/dist/agent-exec.d.ts +182 -0
- package/dist/agent-exec.d.ts.map +1 -0
- package/dist/agent-exec.js +125 -0
- package/dist/agent-exec.js.map +1 -0
- package/dist/agent-runtime.d.ts +23 -0
- package/dist/agent-runtime.d.ts.map +1 -0
- package/dist/agent-runtime.js +143 -0
- package/dist/agent-runtime.js.map +1 -0
- package/dist/approval-gate-read.d.ts +66 -0
- package/dist/approval-gate-read.d.ts.map +1 -0
- package/dist/approval-gate-read.js +138 -0
- package/dist/approval-gate-read.js.map +1 -0
- package/dist/approval-resolution.d.ts +87 -0
- package/dist/approval-resolution.d.ts.map +1 -0
- package/dist/approval-resolution.js +100 -0
- package/dist/approval-resolution.js.map +1 -0
- package/dist/approval-resumes.d.ts +102 -0
- package/dist/approval-resumes.d.ts.map +1 -0
- package/dist/approval-resumes.js +167 -0
- package/dist/approval-resumes.js.map +1 -0
- package/dist/ask-brain.d.ts +167 -0
- package/dist/ask-brain.d.ts.map +1 -0
- package/dist/ask-brain.js +355 -0
- package/dist/ask-brain.js.map +1 -0
- package/dist/autonomy-authority.d.ts +80 -0
- package/dist/autonomy-authority.d.ts.map +1 -0
- package/dist/autonomy-authority.js +82 -0
- package/dist/autonomy-authority.js.map +1 -0
- package/dist/autonomy-controller.d.ts +321 -0
- package/dist/autonomy-controller.d.ts.map +1 -0
- package/dist/autonomy-controller.js +517 -0
- package/dist/autonomy-controller.js.map +1 -0
- package/dist/autonomy-store.d.ts +327 -0
- package/dist/autonomy-store.d.ts.map +1 -0
- package/dist/autonomy-store.js +581 -0
- package/dist/autonomy-store.js.map +1 -0
- package/dist/autonomy-tick.d.ts +257 -0
- package/dist/autonomy-tick.d.ts.map +1 -0
- package/dist/autonomy-tick.js +616 -0
- package/dist/autonomy-tick.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +2719 -0
- package/dist/bin.js.map +1 -0
- package/dist/brain-advice.d.ts +21 -0
- package/dist/brain-advice.d.ts.map +1 -0
- package/dist/brain-advice.js +51 -0
- package/dist/brain-advice.js.map +1 -0
- package/dist/candidate-replay-runtime.d.ts +125 -0
- package/dist/candidate-replay-runtime.d.ts.map +1 -0
- package/dist/candidate-replay-runtime.js +188 -0
- package/dist/candidate-replay-runtime.js.map +1 -0
- package/dist/checkout-carry.d.ts +76 -0
- package/dist/checkout-carry.d.ts.map +1 -0
- package/dist/checkout-carry.js +125 -0
- package/dist/checkout-carry.js.map +1 -0
- package/dist/citation-readers.d.ts +26 -0
- package/dist/citation-readers.d.ts.map +1 -0
- package/dist/citation-readers.js +102 -0
- package/dist/citation-readers.js.map +1 -0
- package/dist/command-receipts.d.ts +79 -0
- package/dist/command-receipts.d.ts.map +1 -0
- package/dist/command-receipts.js +143 -0
- package/dist/command-receipts.js.map +1 -0
- package/dist/command-runner.d.ts +32 -0
- package/dist/command-runner.d.ts.map +1 -0
- package/dist/command-runner.js +108 -0
- package/dist/command-runner.js.map +1 -0
- package/dist/compatible-sets.d.ts +67 -0
- package/dist/compatible-sets.d.ts.map +1 -0
- package/dist/compatible-sets.js +81 -0
- package/dist/compatible-sets.js.map +1 -0
- package/dist/compile-check.d.ts +31 -0
- package/dist/compile-check.d.ts.map +1 -0
- package/dist/compile-check.js +34 -0
- package/dist/compile-check.js.map +1 -0
- package/dist/compile-store.d.ts +16 -0
- package/dist/compile-store.d.ts.map +1 -0
- package/dist/compile-store.js +21 -0
- package/dist/compile-store.js.map +1 -0
- package/dist/completion.d.ts +106 -0
- package/dist/completion.d.ts.map +1 -0
- package/dist/completion.js +131 -0
- package/dist/completion.js.map +1 -0
- package/dist/config.d.ts +549 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +763 -0
- package/dist/config.js.map +1 -0
- package/dist/control-file.d.ts +142 -0
- package/dist/control-file.d.ts.map +1 -0
- package/dist/control-file.js +144 -0
- package/dist/control-file.js.map +1 -0
- package/dist/coordinator-state.d.ts +131 -0
- package/dist/coordinator-state.d.ts.map +1 -0
- package/dist/coordinator-state.js +380 -0
- package/dist/coordinator-state.js.map +1 -0
- package/dist/coordinator.d.ts +95 -0
- package/dist/coordinator.d.ts.map +1 -0
- package/dist/coordinator.js +97 -0
- package/dist/coordinator.js.map +1 -0
- package/dist/cursor-store.d.ts +53 -0
- package/dist/cursor-store.d.ts.map +1 -0
- package/dist/cursor-store.js +98 -0
- package/dist/cursor-store.js.map +1 -0
- package/dist/daemon-cmd.d.ts +239 -0
- package/dist/daemon-cmd.d.ts.map +1 -0
- package/dist/daemon-cmd.js +1751 -0
- package/dist/daemon-cmd.js.map +1 -0
- package/dist/daemon-lock.d.ts +140 -0
- package/dist/daemon-lock.d.ts.map +1 -0
- package/dist/daemon-lock.js +352 -0
- package/dist/daemon-lock.js.map +1 -0
- package/dist/daemon-recovery.d.ts +78 -0
- package/dist/daemon-recovery.d.ts.map +1 -0
- package/dist/daemon-recovery.js +161 -0
- package/dist/daemon-recovery.js.map +1 -0
- package/dist/daemon.d.ts +368 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +601 -0
- package/dist/daemon.js.map +1 -0
- package/dist/declared-response-shape.d.ts +93 -0
- package/dist/declared-response-shape.d.ts.map +1 -0
- package/dist/declared-response-shape.js +200 -0
- package/dist/declared-response-shape.js.map +1 -0
- package/dist/declared-surfaces.d.ts +16 -0
- package/dist/declared-surfaces.d.ts.map +1 -0
- package/dist/declared-surfaces.js +19 -0
- package/dist/declared-surfaces.js.map +1 -0
- package/dist/depends-review.d.ts +113 -0
- package/dist/depends-review.d.ts.map +1 -0
- package/dist/depends-review.js +110 -0
- package/dist/depends-review.js.map +1 -0
- package/dist/doctor.d.ts +91 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +71 -0
- package/dist/doctor.js.map +1 -0
- package/dist/edge-approval.d.ts +105 -0
- package/dist/edge-approval.d.ts.map +1 -0
- package/dist/edge-approval.js +100 -0
- package/dist/edge-approval.js.map +1 -0
- package/dist/evidence-cache.d.ts +45 -0
- package/dist/evidence-cache.d.ts.map +1 -0
- package/dist/evidence-cache.js +90 -0
- package/dist/evidence-cache.js.map +1 -0
- package/dist/evidence-cmd.d.ts +133 -0
- package/dist/evidence-cmd.d.ts.map +1 -0
- package/dist/evidence-cmd.js +347 -0
- package/dist/evidence-cmd.js.map +1 -0
- package/dist/evidence-facts.d.ts +40 -0
- package/dist/evidence-facts.d.ts.map +1 -0
- package/dist/evidence-facts.js +114 -0
- package/dist/evidence-facts.js.map +1 -0
- package/dist/exclusive-lock.d.ts +52 -0
- package/dist/exclusive-lock.d.ts.map +1 -0
- package/dist/exclusive-lock.js +150 -0
- package/dist/exclusive-lock.js.map +1 -0
- package/dist/exec-domains.d.ts +140 -0
- package/dist/exec-domains.d.ts.map +1 -0
- package/dist/exec-domains.js +287 -0
- package/dist/exec-domains.js.map +1 -0
- package/dist/exemption-store.d.ts +197 -0
- package/dist/exemption-store.d.ts.map +1 -0
- package/dist/exemption-store.js +266 -0
- package/dist/exemption-store.js.map +1 -0
- package/dist/explicit-start-gate.d.ts +96 -0
- package/dist/explicit-start-gate.d.ts.map +1 -0
- package/dist/explicit-start-gate.js +103 -0
- package/dist/explicit-start-gate.js.map +1 -0
- package/dist/fs-trouble.d.ts +70 -0
- package/dist/fs-trouble.d.ts.map +1 -0
- package/dist/fs-trouble.js +98 -0
- package/dist/fs-trouble.js.map +1 -0
- package/dist/gate.d.ts +278 -0
- package/dist/gate.d.ts.map +1 -0
- package/dist/gate.js +278 -0
- package/dist/gate.js.map +1 -0
- package/dist/git-driver.d.ts +519 -0
- package/dist/git-driver.d.ts.map +1 -0
- package/dist/git-driver.js +900 -0
- package/dist/git-driver.js.map +1 -0
- package/dist/git-push-executor.d.ts +41 -0
- package/dist/git-push-executor.d.ts.map +1 -0
- package/dist/git-push-executor.js +142 -0
- package/dist/git-push-executor.js.map +1 -0
- package/dist/glob.d.ts +26 -0
- package/dist/glob.d.ts.map +1 -0
- package/dist/glob.js +93 -0
- package/dist/glob.js.map +1 -0
- package/dist/goal-adaptive.d.ts +295 -0
- package/dist/goal-adaptive.d.ts.map +1 -0
- package/dist/goal-adaptive.js +393 -0
- package/dist/goal-adaptive.js.map +1 -0
- package/dist/goal-compile.d.ts +342 -0
- package/dist/goal-compile.d.ts.map +1 -0
- package/dist/goal-compile.js +444 -0
- package/dist/goal-compile.js.map +1 -0
- package/dist/goal-depends-executor.d.ts +55 -0
- package/dist/goal-depends-executor.d.ts.map +1 -0
- package/dist/goal-depends-executor.js +202 -0
- package/dist/goal-depends-executor.js.map +1 -0
- package/dist/goal-execution-evidence.d.ts +135 -0
- package/dist/goal-execution-evidence.d.ts.map +1 -0
- package/dist/goal-execution-evidence.js +159 -0
- package/dist/goal-execution-evidence.js.map +1 -0
- package/dist/goal-gap.d.ts +140 -0
- package/dist/goal-gap.d.ts.map +1 -0
- package/dist/goal-gap.js +197 -0
- package/dist/goal-gap.js.map +1 -0
- package/dist/goal-met-target.d.ts +98 -0
- package/dist/goal-met-target.d.ts.map +1 -0
- package/dist/goal-met-target.js +92 -0
- package/dist/goal-met-target.js.map +1 -0
- package/dist/goal-ownership.d.ts +416 -0
- package/dist/goal-ownership.d.ts.map +1 -0
- package/dist/goal-ownership.js +576 -0
- package/dist/goal-ownership.js.map +1 -0
- package/dist/goal-runs.d.ts +82 -0
- package/dist/goal-runs.d.ts.map +1 -0
- package/dist/goal-runs.js +120 -0
- package/dist/goal-runs.js.map +1 -0
- package/dist/goal-store.d.ts +146 -0
- package/dist/goal-store.d.ts.map +1 -0
- package/dist/goal-store.js +294 -0
- package/dist/goal-store.js.map +1 -0
- package/dist/goal-view.d.ts +156 -0
- package/dist/goal-view.d.ts.map +1 -0
- package/dist/goal-view.js +499 -0
- package/dist/goal-view.js.map +1 -0
- package/dist/governed-approvals.d.ts +152 -0
- package/dist/governed-approvals.d.ts.map +1 -0
- package/dist/governed-approvals.js +246 -0
- package/dist/governed-approvals.js.map +1 -0
- package/dist/governed-broker.d.ts +169 -0
- package/dist/governed-broker.d.ts.map +1 -0
- package/dist/governed-broker.js +196 -0
- package/dist/governed-broker.js.map +1 -0
- package/dist/governed-run.d.ts +220 -0
- package/dist/governed-run.d.ts.map +1 -0
- package/dist/governed-run.js +406 -0
- package/dist/governed-run.js.map +1 -0
- package/dist/grant-reconcile.d.ts +63 -0
- package/dist/grant-reconcile.d.ts.map +1 -0
- package/dist/grant-reconcile.js +121 -0
- package/dist/grant-reconcile.js.map +1 -0
- package/dist/index-for-head.d.ts +56 -0
- package/dist/index-for-head.d.ts.map +1 -0
- package/dist/index-for-head.js +103 -0
- package/dist/index-for-head.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/init-detect.d.ts +39 -0
- package/dist/init-detect.d.ts.map +1 -0
- package/dist/init-detect.js +188 -0
- package/dist/init-detect.js.map +1 -0
- package/dist/integration-deps.d.ts +62 -0
- package/dist/integration-deps.d.ts.map +1 -0
- package/dist/integration-deps.js +251 -0
- package/dist/integration-deps.js.map +1 -0
- package/dist/integration-runtime.d.ts +458 -0
- package/dist/integration-runtime.d.ts.map +1 -0
- package/dist/integration-runtime.js +681 -0
- package/dist/integration-runtime.js.map +1 -0
- package/dist/integration.d.ts +45 -0
- package/dist/integration.d.ts.map +1 -0
- package/dist/integration.js +87 -0
- package/dist/integration.js.map +1 -0
- package/dist/integrator.d.ts +84 -0
- package/dist/integrator.d.ts.map +1 -0
- package/dist/integrator.js +193 -0
- package/dist/integrator.js.map +1 -0
- package/dist/lane-claims.d.ts +174 -0
- package/dist/lane-claims.d.ts.map +1 -0
- package/dist/lane-claims.js +218 -0
- package/dist/lane-claims.js.map +1 -0
- package/dist/lane-coverage.d.ts +87 -0
- package/dist/lane-coverage.d.ts.map +1 -0
- package/dist/lane-coverage.js +129 -0
- package/dist/lane-coverage.js.map +1 -0
- package/dist/ledger-replay.d.ts +115 -0
- package/dist/ledger-replay.d.ts.map +1 -0
- package/dist/ledger-replay.js +155 -0
- package/dist/ledger-replay.js.map +1 -0
- package/dist/ledger-store.d.ts +68 -0
- package/dist/ledger-store.d.ts.map +1 -0
- package/dist/ledger-store.js +111 -0
- package/dist/ledger-store.js.map +1 -0
- package/dist/loop-safety-observer.d.ts +132 -0
- package/dist/loop-safety-observer.d.ts.map +1 -0
- package/dist/loop-safety-observer.js +76 -0
- package/dist/loop-safety-observer.js.map +1 -0
- package/dist/loop-safety-store.d.ts +339 -0
- package/dist/loop-safety-store.d.ts.map +1 -0
- package/dist/loop-safety-store.js +800 -0
- package/dist/loop-safety-store.js.map +1 -0
- package/dist/machine-store.d.ts +54 -0
- package/dist/machine-store.d.ts.map +1 -0
- package/dist/machine-store.js +149 -0
- package/dist/machine-store.js.map +1 -0
- package/dist/mcp-main.d.ts +2 -0
- package/dist/mcp-main.d.ts.map +1 -0
- package/dist/mcp-main.js +116 -0
- package/dist/mcp-main.js.map +1 -0
- package/dist/mcp-server.d.ts +72 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +259 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/model-routing.d.ts +75 -0
- package/dist/model-routing.d.ts.map +1 -0
- package/dist/model-routing.js +108 -0
- package/dist/model-routing.js.map +1 -0
- package/dist/model-transport.d.ts +188 -0
- package/dist/model-transport.d.ts.map +1 -0
- package/dist/model-transport.js +625 -0
- package/dist/model-transport.js.map +1 -0
- package/dist/notify-cadence.d.ts +55 -0
- package/dist/notify-cadence.d.ts.map +1 -0
- package/dist/notify-cadence.js +68 -0
- package/dist/notify-cadence.js.map +1 -0
- package/dist/notify-channel.d.ts +69 -0
- package/dist/notify-channel.d.ts.map +1 -0
- package/dist/notify-channel.js +151 -0
- package/dist/notify-channel.js.map +1 -0
- package/dist/notify.d.ts +71 -0
- package/dist/notify.d.ts.map +1 -0
- package/dist/notify.js +125 -0
- package/dist/notify.js.map +1 -0
- package/dist/observation-inventory.d.ts +65 -0
- package/dist/observation-inventory.d.ts.map +1 -0
- package/dist/observation-inventory.js +139 -0
- package/dist/observation-inventory.js.map +1 -0
- package/dist/owned-children.d.ts +45 -0
- package/dist/owned-children.d.ts.map +1 -0
- package/dist/owned-children.js +64 -0
- package/dist/owned-children.js.map +1 -0
- package/dist/packet-for-goal.d.ts +19 -0
- package/dist/packet-for-goal.d.ts.map +1 -0
- package/dist/packet-for-goal.js +32 -0
- package/dist/packet-for-goal.js.map +1 -0
- package/dist/pair-cmd.d.ts +85 -0
- package/dist/pair-cmd.d.ts.map +1 -0
- package/dist/pair-cmd.js +205 -0
- package/dist/pair-cmd.js.map +1 -0
- package/dist/partial-asker.d.ts +96 -0
- package/dist/partial-asker.d.ts.map +1 -0
- package/dist/partial-asker.js +117 -0
- package/dist/partial-asker.js.map +1 -0
- package/dist/pdf-text-lines.d.ts +17 -0
- package/dist/pdf-text-lines.d.ts.map +1 -0
- package/dist/pdf-text-lines.js +70 -0
- package/dist/pdf-text-lines.js.map +1 -0
- package/dist/pdf-text-worker.d.ts +2 -0
- package/dist/pdf-text-worker.d.ts.map +1 -0
- package/dist/pdf-text-worker.js +81 -0
- package/dist/pdf-text-worker.js.map +1 -0
- package/dist/pdf-text.d.ts +56 -0
- package/dist/pdf-text.d.ts.map +1 -0
- package/dist/pdf-text.js +64 -0
- package/dist/pdf-text.js.map +1 -0
- package/dist/pending-action.d.ts +154 -0
- package/dist/pending-action.d.ts.map +1 -0
- package/dist/pending-action.js +148 -0
- package/dist/pending-action.js.map +1 -0
- package/dist/preemptor.d.ts +40 -0
- package/dist/preemptor.d.ts.map +1 -0
- package/dist/preemptor.js +49 -0
- package/dist/preemptor.js.map +1 -0
- package/dist/programme-mode.d.ts +29 -0
- package/dist/programme-mode.d.ts.map +1 -0
- package/dist/programme-mode.js +50 -0
- package/dist/programme-mode.js.map +1 -0
- package/dist/progress-view.d.ts +14 -0
- package/dist/progress-view.d.ts.map +1 -0
- package/dist/progress-view.js +114 -0
- package/dist/progress-view.js.map +1 -0
- package/dist/project-graph-builder.d.ts +81 -0
- package/dist/project-graph-builder.d.ts.map +1 -0
- package/dist/project-graph-builder.js +246 -0
- package/dist/project-graph-builder.js.map +1 -0
- package/dist/project-graph-runtime.d.ts +86 -0
- package/dist/project-graph-runtime.d.ts.map +1 -0
- package/dist/project-graph-runtime.js +112 -0
- package/dist/project-graph-runtime.js.map +1 -0
- package/dist/project-index-builder.d.ts +96 -0
- package/dist/project-index-builder.d.ts.map +1 -0
- package/dist/project-index-builder.js +298 -0
- package/dist/project-index-builder.js.map +1 -0
- package/dist/project-index-facts.d.ts +51 -0
- package/dist/project-index-facts.d.ts.map +1 -0
- package/dist/project-index-facts.js +117 -0
- package/dist/project-index-facts.js.map +1 -0
- package/dist/project-index-store.d.ts +97 -0
- package/dist/project-index-store.d.ts.map +1 -0
- package/dist/project-index-store.js +140 -0
- package/dist/project-index-store.js.map +1 -0
- package/dist/project-memory-store.d.ts +127 -0
- package/dist/project-memory-store.d.ts.map +1 -0
- package/dist/project-memory-store.js +302 -0
- package/dist/project-memory-store.js.map +1 -0
- package/dist/proposal-store.d.ts +14 -0
- package/dist/proposal-store.d.ts.map +1 -0
- package/dist/proposal-store.js +19 -0
- package/dist/proposal-store.js.map +1 -0
- package/dist/prover.d.ts +80 -0
- package/dist/prover.d.ts.map +1 -0
- package/dist/prover.js +137 -0
- package/dist/prover.js.map +1 -0
- package/dist/provider-identity-store.d.ts +34 -0
- package/dist/provider-identity-store.d.ts.map +1 -0
- package/dist/provider-identity-store.js +72 -0
- package/dist/provider-identity-store.js.map +1 -0
- package/dist/provider-identity.d.ts +104 -0
- package/dist/provider-identity.d.ts.map +1 -0
- package/dist/provider-identity.js +167 -0
- package/dist/provider-identity.js.map +1 -0
- package/dist/provider-limit.d.ts +79 -0
- package/dist/provider-limit.d.ts.map +1 -0
- package/dist/provider-limit.js +148 -0
- package/dist/provider-limit.js.map +1 -0
- package/dist/provider-preflight.d.ts +171 -0
- package/dist/provider-preflight.d.ts.map +1 -0
- package/dist/provider-preflight.js +395 -0
- package/dist/provider-preflight.js.map +1 -0
- package/dist/provider-state.d.ts +120 -0
- package/dist/provider-state.d.ts.map +1 -0
- package/dist/provider-state.js +182 -0
- package/dist/provider-state.js.map +1 -0
- package/dist/providers.d.ts +132 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js +161 -0
- package/dist/providers.js.map +1 -0
- package/dist/publication-recorder.d.ts +117 -0
- package/dist/publication-recorder.d.ts.map +1 -0
- package/dist/publication-recorder.js +124 -0
- package/dist/publication-recorder.js.map +1 -0
- package/dist/pursuit-delivery.d.ts +24 -0
- package/dist/pursuit-delivery.d.ts.map +1 -0
- package/dist/pursuit-delivery.js +38 -0
- package/dist/pursuit-delivery.js.map +1 -0
- package/dist/queue-store.d.ts +132 -0
- package/dist/queue-store.d.ts.map +1 -0
- package/dist/queue-store.js +185 -0
- package/dist/queue-store.js.map +1 -0
- package/dist/queue-summary.d.ts +14 -0
- package/dist/queue-summary.d.ts.map +1 -0
- package/dist/queue-summary.js +82 -0
- package/dist/queue-summary.js.map +1 -0
- package/dist/queue-view.d.ts +20 -0
- package/dist/queue-view.d.ts.map +1 -0
- package/dist/queue-view.js +163 -0
- package/dist/queue-view.js.map +1 -0
- package/dist/queue-write-lease.d.ts +106 -0
- package/dist/queue-write-lease.d.ts.map +1 -0
- package/dist/queue-write-lease.js +282 -0
- package/dist/queue-write-lease.js.map +1 -0
- package/dist/rails-home.d.ts +162 -0
- package/dist/rails-home.d.ts.map +1 -0
- package/dist/rails-home.js +452 -0
- package/dist/rails-home.js.map +1 -0
- package/dist/rails-migrations.d.ts +75 -0
- package/dist/rails-migrations.d.ts.map +1 -0
- package/dist/rails-migrations.js +199 -0
- package/dist/rails-migrations.js.map +1 -0
- package/dist/rails-stores.d.ts +49 -0
- package/dist/rails-stores.d.ts.map +1 -0
- package/dist/rails-stores.js +100 -0
- package/dist/rails-stores.js.map +1 -0
- package/dist/reaper.d.ts +69 -0
- package/dist/reaper.d.ts.map +1 -0
- package/dist/reaper.js +152 -0
- package/dist/reaper.js.map +1 -0
- package/dist/record-store.d.ts +36 -0
- package/dist/record-store.d.ts.map +1 -0
- package/dist/record-store.js +78 -0
- package/dist/record-store.js.map +1 -0
- package/dist/recovery-io.d.ts +50 -0
- package/dist/recovery-io.d.ts.map +1 -0
- package/dist/recovery-io.js +122 -0
- package/dist/recovery-io.js.map +1 -0
- package/dist/recovery.d.ts +146 -0
- package/dist/recovery.d.ts.map +1 -0
- package/dist/recovery.js +110 -0
- package/dist/recovery.js.map +1 -0
- package/dist/redraw.d.ts +34 -0
- package/dist/redraw.d.ts.map +1 -0
- package/dist/redraw.js +62 -0
- package/dist/redraw.js.map +1 -0
- package/dist/rejected-evidence.d.ts +255 -0
- package/dist/rejected-evidence.d.ts.map +1 -0
- package/dist/rejected-evidence.js +324 -0
- package/dist/rejected-evidence.js.map +1 -0
- package/dist/report-cmd.d.ts +32 -0
- package/dist/report-cmd.d.ts.map +1 -0
- package/dist/report-cmd.js +201 -0
- package/dist/report-cmd.js.map +1 -0
- package/dist/repos-cmd.d.ts +80 -0
- package/dist/repos-cmd.d.ts.map +1 -0
- package/dist/repos-cmd.js +240 -0
- package/dist/repos-cmd.js.map +1 -0
- package/dist/request-body-shape.d.ts +93 -0
- package/dist/request-body-shape.d.ts.map +1 -0
- package/dist/request-body-shape.js +407 -0
- package/dist/request-body-shape.js.map +1 -0
- package/dist/requirement-claims.d.ts +89 -0
- package/dist/requirement-claims.d.ts.map +1 -0
- package/dist/requirement-claims.js +92 -0
- package/dist/requirement-claims.js.map +1 -0
- package/dist/retention-apply-runtime.d.ts +105 -0
- package/dist/retention-apply-runtime.d.ts.map +1 -0
- package/dist/retention-apply-runtime.js +269 -0
- package/dist/retention-apply-runtime.js.map +1 -0
- package/dist/reverify.d.ts +41 -0
- package/dist/reverify.d.ts.map +1 -0
- package/dist/reverify.js +69 -0
- package/dist/reverify.js.map +1 -0
- package/dist/round-records.d.ts +65 -0
- package/dist/round-records.d.ts.map +1 -0
- package/dist/round-records.js +61 -0
- package/dist/round-records.js.map +1 -0
- package/dist/round-runner.d.ts +924 -0
- package/dist/round-runner.d.ts.map +1 -0
- package/dist/round-runner.js +1693 -0
- package/dist/round-runner.js.map +1 -0
- package/dist/run-approval.d.ts +180 -0
- package/dist/run-approval.d.ts.map +1 -0
- package/dist/run-approval.js +199 -0
- package/dist/run-approval.js.map +1 -0
- package/dist/run-cmd.d.ts +359 -0
- package/dist/run-cmd.d.ts.map +1 -0
- package/dist/run-cmd.js +4418 -0
- package/dist/run-cmd.js.map +1 -0
- package/dist/run-delivery.d.ts +71 -0
- package/dist/run-delivery.d.ts.map +1 -0
- package/dist/run-delivery.js +104 -0
- package/dist/run-delivery.js.map +1 -0
- package/dist/run-ended.d.ts +75 -0
- package/dist/run-ended.d.ts.map +1 -0
- package/dist/run-ended.js +27 -0
- package/dist/run-ended.js.map +1 -0
- package/dist/run-ending-locator.d.ts +125 -0
- package/dist/run-ending-locator.d.ts.map +1 -0
- package/dist/run-ending-locator.js +133 -0
- package/dist/run-ending-locator.js.map +1 -0
- package/dist/run-launcher.d.ts +459 -0
- package/dist/run-launcher.d.ts.map +1 -0
- package/dist/run-launcher.js +652 -0
- package/dist/run-launcher.js.map +1 -0
- package/dist/run-lease.d.ts +208 -0
- package/dist/run-lease.d.ts.map +1 -0
- package/dist/run-lease.js +301 -0
- package/dist/run-lease.js.map +1 -0
- package/dist/run-refusal-marks.d.ts +189 -0
- package/dist/run-refusal-marks.d.ts.map +1 -0
- package/dist/run-refusal-marks.js +249 -0
- package/dist/run-refusal-marks.js.map +1 -0
- package/dist/run-start-marks.d.ts +153 -0
- package/dist/run-start-marks.d.ts.map +1 -0
- package/dist/run-start-marks.js +269 -0
- package/dist/run-start-marks.js.map +1 -0
- package/dist/scan-cmd.d.ts +14 -0
- package/dist/scan-cmd.d.ts.map +1 -0
- package/dist/scan-cmd.js +270 -0
- package/dist/scan-cmd.js.map +1 -0
- package/dist/scan-events.d.ts +50 -0
- package/dist/scan-events.d.ts.map +1 -0
- package/dist/scan-events.js +91 -0
- package/dist/scan-events.js.map +1 -0
- package/dist/scan.d.ts +191 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +417 -0
- package/dist/scan.js.map +1 -0
- package/dist/scope-rule.d.ts +148 -0
- package/dist/scope-rule.d.ts.map +1 -0
- package/dist/scope-rule.js +121 -0
- package/dist/scope-rule.js.map +1 -0
- package/dist/self-repo-id.d.ts +18 -0
- package/dist/self-repo-id.d.ts.map +1 -0
- package/dist/self-repo-id.js +70 -0
- package/dist/self-repo-id.js.map +1 -0
- package/dist/server-client.d.ts +766 -0
- package/dist/server-client.d.ts.map +1 -0
- package/dist/server-client.js +475 -0
- package/dist/server-client.js.map +1 -0
- package/dist/session-adapter-runtime.d.ts +195 -0
- package/dist/session-adapter-runtime.d.ts.map +1 -0
- package/dist/session-adapter-runtime.js +373 -0
- package/dist/session-adapter-runtime.js.map +1 -0
- package/dist/session-checkpoint-runtime.d.ts +62 -0
- package/dist/session-checkpoint-runtime.d.ts.map +1 -0
- package/dist/session-checkpoint-runtime.js +268 -0
- package/dist/session-checkpoint-runtime.js.map +1 -0
- package/dist/session-control-transport.d.ts +106 -0
- package/dist/session-control-transport.d.ts.map +1 -0
- package/dist/session-control-transport.js +232 -0
- package/dist/session-control-transport.js.map +1 -0
- package/dist/session-observation-store.d.ts +98 -0
- package/dist/session-observation-store.d.ts.map +1 -0
- package/dist/session-observation-store.js +155 -0
- package/dist/session-observation-store.js.map +1 -0
- package/dist/session-observe-runtime.d.ts +123 -0
- package/dist/session-observe-runtime.d.ts.map +1 -0
- package/dist/session-observe-runtime.js +317 -0
- package/dist/session-observe-runtime.js.map +1 -0
- package/dist/session-store.d.ts +98 -0
- package/dist/session-store.d.ts.map +1 -0
- package/dist/session-store.js +116 -0
- package/dist/session-store.js.map +1 -0
- package/dist/sessions-cmd.d.ts +202 -0
- package/dist/sessions-cmd.d.ts.map +1 -0
- package/dist/sessions-cmd.js +609 -0
- package/dist/sessions-cmd.js.map +1 -0
- package/dist/settings-overlay.d.ts +53 -0
- package/dist/settings-overlay.d.ts.map +1 -0
- package/dist/settings-overlay.js +175 -0
- package/dist/settings-overlay.js.map +1 -0
- package/dist/setup-prompt.d.ts +34 -0
- package/dist/setup-prompt.d.ts.map +1 -0
- package/dist/setup-prompt.js +92 -0
- package/dist/setup-prompt.js.map +1 -0
- package/dist/setup.d.ts +103 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +283 -0
- package/dist/setup.js.map +1 -0
- package/dist/shared-grants.d.ts +164 -0
- package/dist/shared-grants.d.ts.map +1 -0
- package/dist/shared-grants.js +242 -0
- package/dist/shared-grants.js.map +1 -0
- package/dist/signals.d.ts +55 -0
- package/dist/signals.d.ts.map +1 -0
- package/dist/signals.js +85 -0
- package/dist/signals.js.map +1 -0
- package/dist/source-cmd.d.ts +201 -0
- package/dist/source-cmd.d.ts.map +1 -0
- package/dist/source-cmd.js +684 -0
- package/dist/source-cmd.js.map +1 -0
- package/dist/source-verdict.d.ts +99 -0
- package/dist/source-verdict.d.ts.map +1 -0
- package/dist/source-verdict.js +182 -0
- package/dist/source-verdict.js.map +1 -0
- package/dist/spend-ledger.d.ts +350 -0
- package/dist/spend-ledger.d.ts.map +1 -0
- package/dist/spend-ledger.js +546 -0
- package/dist/spend-ledger.js.map +1 -0
- package/dist/stale-run-sweep.d.ts +79 -0
- package/dist/stale-run-sweep.d.ts.map +1 -0
- package/dist/stale-run-sweep.js +116 -0
- package/dist/stale-run-sweep.js.map +1 -0
- package/dist/start-attempts.d.ts +385 -0
- package/dist/start-attempts.d.ts.map +1 -0
- package/dist/start-attempts.js +613 -0
- package/dist/start-attempts.js.map +1 -0
- package/dist/status-cmd.d.ts +28 -0
- package/dist/status-cmd.d.ts.map +1 -0
- package/dist/status-cmd.js +116 -0
- package/dist/status-cmd.js.map +1 -0
- package/dist/stop-follow-up.d.ts +107 -0
- package/dist/stop-follow-up.d.ts.map +1 -0
- package/dist/stop-follow-up.js +172 -0
- package/dist/stop-follow-up.js.map +1 -0
- package/dist/surface-lease.d.ts +118 -0
- package/dist/surface-lease.d.ts.map +1 -0
- package/dist/surface-lease.js +485 -0
- package/dist/surface-lease.js.map +1 -0
- package/dist/sync.d.ts +54 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +93 -0
- package/dist/sync.js.map +1 -0
- package/dist/syncing-ledger.d.ts +45 -0
- package/dist/syncing-ledger.d.ts.map +1 -0
- package/dist/syncing-ledger.js +53 -0
- package/dist/syncing-ledger.js.map +1 -0
- package/dist/temp-fixtures.d.ts +68 -0
- package/dist/temp-fixtures.d.ts.map +1 -0
- package/dist/temp-fixtures.js +38 -0
- package/dist/temp-fixtures.js.map +1 -0
- package/dist/token-window.d.ts +84 -0
- package/dist/token-window.d.ts.map +1 -0
- package/dist/token-window.js +143 -0
- package/dist/token-window.js.map +1 -0
- package/dist/tool-bridge.d.ts +177 -0
- package/dist/tool-bridge.d.ts.map +1 -0
- package/dist/tool-bridge.js +329 -0
- package/dist/tool-bridge.js.map +1 -0
- package/dist/tool-call-record.d.ts +197 -0
- package/dist/tool-call-record.d.ts.map +1 -0
- package/dist/tool-call-record.js +276 -0
- package/dist/tool-call-record.js.map +1 -0
- package/dist/tool-protocol.d.ts +135 -0
- package/dist/tool-protocol.d.ts.map +1 -0
- package/dist/tool-protocol.js +104 -0
- package/dist/tool-protocol.js.map +1 -0
- package/dist/tool-worker.d.ts +3 -0
- package/dist/tool-worker.d.ts.map +1 -0
- package/dist/tool-worker.js +478 -0
- package/dist/tool-worker.js.map +1 -0
- package/dist/toolchain-mirror.d.ts +86 -0
- package/dist/toolchain-mirror.d.ts.map +1 -0
- package/dist/toolchain-mirror.js +307 -0
- package/dist/toolchain-mirror.js.map +1 -0
- package/dist/trusted-git.d.ts +243 -0
- package/dist/trusted-git.d.ts.map +1 -0
- package/dist/trusted-git.js +920 -0
- package/dist/trusted-git.js.map +1 -0
- package/dist/ui.d.ts +76 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +118 -0
- package/dist/ui.js.map +1 -0
- package/dist/untrusted-exec.d.ts +275 -0
- package/dist/untrusted-exec.d.ts.map +1 -0
- package/dist/untrusted-exec.js +479 -0
- package/dist/untrusted-exec.js.map +1 -0
- package/dist/untrusted-gate.d.ts +73 -0
- package/dist/untrusted-gate.d.ts.map +1 -0
- package/dist/untrusted-gate.js +226 -0
- package/dist/untrusted-gate.js.map +1 -0
- package/dist/uploader.d.ts +153 -0
- package/dist/uploader.d.ts.map +1 -0
- package/dist/uploader.js +204 -0
- package/dist/uploader.js.map +1 -0
- package/dist/verifier.d.ts +66 -0
- package/dist/verifier.d.ts.map +1 -0
- package/dist/verifier.js +170 -0
- package/dist/verifier.js.map +1 -0
- package/dist/verify-apply.d.ts +26 -0
- package/dist/verify-apply.d.ts.map +1 -0
- package/dist/verify-apply.js +36 -0
- package/dist/verify-apply.js.map +1 -0
- package/dist/verify-cmd.d.ts +44 -0
- package/dist/verify-cmd.d.ts.map +1 -0
- package/dist/verify-cmd.js +125 -0
- package/dist/verify-cmd.js.map +1 -0
- package/dist/verify-pass.d.ts +73 -0
- package/dist/verify-pass.d.ts.map +1 -0
- package/dist/verify-pass.js +103 -0
- package/dist/verify-pass.js.map +1 -0
- package/dist/welcome.d.ts +43 -0
- package/dist/welcome.d.ts.map +1 -0
- package/dist/welcome.js +116 -0
- package/dist/welcome.js.map +1 -0
- package/dist/workspace-provisioner.d.ts +65 -0
- package/dist/workspace-provisioner.d.ts.map +1 -0
- package/dist/workspace-provisioner.js +66 -0
- package/dist/workspace-provisioner.js.map +1 -0
- package/dist/workspace-quarantine.d.ts +64 -0
- package/dist/workspace-quarantine.d.ts.map +1 -0
- package/dist/workspace-quarantine.js +156 -0
- package/dist/workspace-quarantine.js.map +1 -0
- package/dist/workspace-residue-sweep.d.ts +113 -0
- package/dist/workspace-residue-sweep.d.ts.map +1 -0
- package/dist/workspace-residue-sweep.js +158 -0
- package/dist/workspace-residue-sweep.js.map +1 -0
- package/dist/workspace.d.ts +639 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +2026 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +54 -6
- package/win/CredProbe.cs +64 -0
- package/win/FakeClaude.cs +56 -0
- package/win/HandleProbe.cs +116 -0
- package/win/TokenProbe.cs +53 -0
- package/win/appcontainer.ps1 +500 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { AnyEvent } from '@looply/core';
|
|
2
|
+
import type { AnyEventInput } from './ledger-store';
|
|
3
|
+
/**
|
|
4
|
+
* A ledger that also ships what it writes.
|
|
5
|
+
*
|
|
6
|
+
* Without this a run was complete and correct and entirely invisible: every
|
|
7
|
+
* transition landed in `.looply/state/events.jsonl` and nothing ever left the
|
|
8
|
+
* machine, so the phone showed a project that never moved. The runner should not
|
|
9
|
+
* know a server exists, so the wiring goes here rather than into the runner.
|
|
10
|
+
*
|
|
11
|
+
* Local first, always. The append to disk is the record; the upload is a copy.
|
|
12
|
+
* If shipping fails the run carries on and the events wait — which is the same
|
|
13
|
+
* rule the daemon follows, for the same reason.
|
|
14
|
+
*/
|
|
15
|
+
export interface AppendOnlyLedger {
|
|
16
|
+
append(input: AnyEventInput): Promise<AnyEvent>;
|
|
17
|
+
}
|
|
18
|
+
export interface EventSink {
|
|
19
|
+
enqueue(event: AnyEvent): void;
|
|
20
|
+
}
|
|
21
|
+
export declare class SyncingLedger implements AppendOnlyLedger {
|
|
22
|
+
private readonly inner;
|
|
23
|
+
private readonly sink;
|
|
24
|
+
/** Never fatal: a broken sink must not stop a run that is otherwise fine. */
|
|
25
|
+
private readonly onSinkError?;
|
|
26
|
+
constructor(inner: AppendOnlyLedger, sink: EventSink,
|
|
27
|
+
/** Never fatal: a broken sink must not stop a run that is otherwise fine. */
|
|
28
|
+
onSinkError?: ((e: Error) => void) | undefined);
|
|
29
|
+
append(input: AnyEventInput): Promise<AnyEvent>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The error reporter every construction site passes.
|
|
33
|
+
*
|
|
34
|
+
* `onSinkError` is optional and nobody passed one, so the catch above was a
|
|
35
|
+
* silent drop: the event stayed on disk, never reached the phone, and the user
|
|
36
|
+
* saw a project that had simply stopped moving — the exact failure this class
|
|
37
|
+
* was written to prevent.
|
|
38
|
+
*
|
|
39
|
+
* Said once, on the first failure. This is the append path of a run that may
|
|
40
|
+
* last hours, and a line per event would be a second, louder way of failing to
|
|
41
|
+
* reach the server; `Daemon.enqueue` holds its overflow notice back for the
|
|
42
|
+
* same reason. What is worth saying is that the stream broke, not how often.
|
|
43
|
+
*/
|
|
44
|
+
export declare function logSinkErrorOnce(log: (line: string) => void): (e: Error) => void;
|
|
45
|
+
//# sourceMappingURL=syncing-ledger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncing-ledger.d.ts","sourceRoot":"","sources":["../src/syncing-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;CAChC;AAED,qBAAa,aAAc,YAAW,gBAAgB;IAElD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAHZ,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,SAAS;IAChC,6EAA6E;IAC5D,WAAW,CAAC,GAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,aAAA;IAG7C,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;CAStD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAUhF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SyncingLedger = void 0;
|
|
4
|
+
exports.logSinkErrorOnce = logSinkErrorOnce;
|
|
5
|
+
class SyncingLedger {
|
|
6
|
+
inner;
|
|
7
|
+
sink;
|
|
8
|
+
onSinkError;
|
|
9
|
+
constructor(inner, sink,
|
|
10
|
+
/** Never fatal: a broken sink must not stop a run that is otherwise fine. */
|
|
11
|
+
onSinkError) {
|
|
12
|
+
this.inner = inner;
|
|
13
|
+
this.sink = sink;
|
|
14
|
+
this.onSinkError = onSinkError;
|
|
15
|
+
}
|
|
16
|
+
async append(input) {
|
|
17
|
+
const event = await this.inner.append(input);
|
|
18
|
+
try {
|
|
19
|
+
this.sink.enqueue(event);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
this.onSinkError?.(e);
|
|
23
|
+
}
|
|
24
|
+
return event;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.SyncingLedger = SyncingLedger;
|
|
28
|
+
/**
|
|
29
|
+
* The error reporter every construction site passes.
|
|
30
|
+
*
|
|
31
|
+
* `onSinkError` is optional and nobody passed one, so the catch above was a
|
|
32
|
+
* silent drop: the event stayed on disk, never reached the phone, and the user
|
|
33
|
+
* saw a project that had simply stopped moving — the exact failure this class
|
|
34
|
+
* was written to prevent.
|
|
35
|
+
*
|
|
36
|
+
* Said once, on the first failure. This is the append path of a run that may
|
|
37
|
+
* last hours, and a line per event would be a second, louder way of failing to
|
|
38
|
+
* reach the server; `Daemon.enqueue` holds its overflow notice back for the
|
|
39
|
+
* same reason. What is worth saying is that the stream broke, not how often.
|
|
40
|
+
*/
|
|
41
|
+
function logSinkErrorOnce(log) {
|
|
42
|
+
let said = false;
|
|
43
|
+
return (e) => {
|
|
44
|
+
if (said)
|
|
45
|
+
return;
|
|
46
|
+
said = true;
|
|
47
|
+
// `enqueue` is somebody else's code and a throw need not be an Error.
|
|
48
|
+
const why = e instanceof Error ? e.message : String(e);
|
|
49
|
+
log(`sync : an event did not reach the stream (${why}) — it stays on disk.`);
|
|
50
|
+
log(' Your phone may show a gap; the ledger on this machine is complete.');
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=syncing-ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncing-ledger.js","sourceRoot":"","sources":["../src/syncing-ledger.ts"],"names":[],"mappings":";;;AAwDA,4CAUC;AA1CD,MAAa,aAAa;IAEL;IACA;IAEA;IAJnB,YACmB,KAAuB,EACvB,IAAe;IAChC,6EAA6E;IAC5D,WAAgC;QAHhC,UAAK,GAAL,KAAK,CAAkB;QACvB,SAAI,GAAJ,IAAI,CAAW;QAEf,gBAAW,GAAX,WAAW,CAAqB;IAChD,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,KAAoB;QAC/B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,WAAW,EAAE,CAAC,CAAU,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAjBD,sCAiBC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,gBAAgB,CAAC,GAA2B;IAC1D,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,OAAO,CAAC,CAAC,EAAE,EAAE;QACX,IAAI,IAAI;YAAE,OAAO;QACjB,IAAI,GAAG,IAAI,CAAC;QACZ,sEAAsE;QACtE,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,GAAG,CAAC,gDAAgD,GAAG,uBAAuB,CAAC,CAAC;QAChF,GAAG,CAAC,8EAA8E,CAAC,CAAC;IACtF,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A TEST FIXTURE OWNS THE TEMP DIRECTORIES IT CREATES, AND REMOVES EXACTLY
|
|
3
|
+
* THOSE.
|
|
4
|
+
*
|
|
5
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
6
|
+
* WHY THIS EXISTS, MEASURED RATHER THAN SUPPOSED.
|
|
7
|
+
*
|
|
8
|
+
* 🔴 THE SUITES LEAKED 23,604 TEMP DIRECTORIES — about 8 GB — AND IT TOOK A GATE
|
|
9
|
+
* DOWN. `mkdtempSync` was called in ninety files and twenty-three of them
|
|
10
|
+
* created more directories than they removed; thirteen had no cleanup hook at
|
|
11
|
+
* all. The accumulation filled the disk mid-gate, `ENOSPC` truncated a jest
|
|
12
|
+
* transform-cache entry as it was being written, and the next run failed with a
|
|
13
|
+
* parse error at line 1 of a source file nobody had touched. Three separate
|
|
14
|
+
* symptoms, one owner.
|
|
15
|
+
*
|
|
16
|
+
* ⚠️ THE FIX IS OWNERSHIP, NOT A SWEEPER. A background cleaner that deleted old
|
|
17
|
+
* directories by age or by name prefix would be guessing about files it did not
|
|
18
|
+
* create — and the one thing worse than a leak is a cleaner that removes
|
|
19
|
+
* somebody else's live fixture because it looked old. Every path this removes is
|
|
20
|
+
* one it returned from `make`.
|
|
21
|
+
*
|
|
22
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
23
|
+
* WHY IT TOUCHES NO TEST-FRAMEWORK GLOBAL.
|
|
24
|
+
*
|
|
25
|
+
* ⚠️ IT DOES NOT CALL `afterAll` ITSELF, AND THAT IS DELIBERATE TWICE OVER.
|
|
26
|
+
*
|
|
27
|
+
* First, a module that registers a lifecycle hook at import time hides the
|
|
28
|
+
* hook from the file that needs to be responsible for it: the spec declares
|
|
29
|
+
* `afterAll(() => tmp.cleanup())` in its own body, where a reader looking for
|
|
30
|
+
* "what cleans this up" will find it.
|
|
31
|
+
*
|
|
32
|
+
* Second, this file is ordinary source and stays free of `describe`/`it`/
|
|
33
|
+
* `afterAll`. A helper that called them would have to live in a `.spec.ts` to
|
|
34
|
+
* get the globals — and a `.spec.ts` imported by another suite executes its
|
|
35
|
+
* module body in that suite's worker, so any `describe` it declares would be
|
|
36
|
+
* registered into every importing suite. The controls for this helper live in
|
|
37
|
+
* `temp-fixtures.spec.ts`; the helper itself is importable from anywhere.
|
|
38
|
+
*/
|
|
39
|
+
export interface OwnedTempDirs {
|
|
40
|
+
/**
|
|
41
|
+
* Create a temp directory under the OS temp root and take ownership of it.
|
|
42
|
+
*
|
|
43
|
+
* The prefix is `mkdtemp`'s, so the returned path always ends in six random
|
|
44
|
+
* characters and two calls with the same prefix are two different
|
|
45
|
+
* directories.
|
|
46
|
+
*/
|
|
47
|
+
make(prefix: string): string;
|
|
48
|
+
/** The paths this fixture created and has not yet removed, in creation order. */
|
|
49
|
+
readonly owned: readonly string[];
|
|
50
|
+
/**
|
|
51
|
+
* Remove exactly the directories this fixture created, and forget them.
|
|
52
|
+
*
|
|
53
|
+
* ⚠️ SAFE TO CALL TWICE, and safe to call when nothing was created — a spec
|
|
54
|
+
* that throws before its first `make` still runs its `afterAll`.
|
|
55
|
+
*
|
|
56
|
+
* ⚠️ AND IT NEVER THROWS. A directory a live process still holds open on
|
|
57
|
+
* Windows cannot be removed, and a fixture that threw from its own cleanup
|
|
58
|
+
* would turn a passing suite red for a housekeeping failure. The paths it
|
|
59
|
+
* could not remove come back in `failed` so a caller that wants to assert on
|
|
60
|
+
* them can.
|
|
61
|
+
*/
|
|
62
|
+
cleanup(): {
|
|
63
|
+
readonly removed: number;
|
|
64
|
+
readonly failed: readonly string[];
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export declare function ownedTempDirs(): OwnedTempDirs;
|
|
68
|
+
//# sourceMappingURL=temp-fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temp-fixtures.d.ts","sourceRoot":"","sources":["../src/temp-fixtures.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;;;;;;;;;OAWG;IACH,OAAO,IAAI;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;CAC7E;AAED,wBAAgB,aAAa,IAAI,aAAa,CA6B7C"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ownedTempDirs = ownedTempDirs;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const node_os_1 = require("node:os");
|
|
6
|
+
const node_path_1 = require("node:path");
|
|
7
|
+
function ownedTempDirs() {
|
|
8
|
+
const owned = [];
|
|
9
|
+
return {
|
|
10
|
+
make(prefix) {
|
|
11
|
+
const dir = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), prefix));
|
|
12
|
+
owned.push(dir);
|
|
13
|
+
return dir;
|
|
14
|
+
},
|
|
15
|
+
get owned() {
|
|
16
|
+
return [...owned];
|
|
17
|
+
},
|
|
18
|
+
cleanup() {
|
|
19
|
+
const failed = [];
|
|
20
|
+
let removed = 0;
|
|
21
|
+
// Drained rather than iterated: a second call must not retry a path this
|
|
22
|
+
// one already removed, and a throw mid-loop must not leave the list half
|
|
23
|
+
// consumed in a way that hides what is still owned.
|
|
24
|
+
const mine = owned.splice(0, owned.length);
|
|
25
|
+
for (const dir of mine) {
|
|
26
|
+
try {
|
|
27
|
+
(0, node_fs_1.rmSync)(dir, { recursive: true, force: true, maxRetries: 2 });
|
|
28
|
+
removed += 1;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
failed.push(dir);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return { removed, failed };
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=temp-fixtures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temp-fixtures.js","sourceRoot":"","sources":["../src/temp-fixtures.ts"],"names":[],"mappings":";;AAqEA,sCA6BC;AAlGD,qCAA8C;AAC9C,qCAAiC;AACjC,yCAAiC;AAmEjC,SAAgB,aAAa;IAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,OAAO;QACL,IAAI,CAAC,MAAc;YACjB,MAAM,GAAG,GAAG,IAAA,qBAAW,EAAC,IAAA,gBAAI,EAAC,IAAA,gBAAM,GAAE,EAAE,MAAM,CAAC,CAAC,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,KAAK;YACP,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,OAAO;YACL,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,yEAAyE;YACzE,yEAAyE;YACzE,oDAAoD;YACpD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACH,IAAA,gBAAM,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC7D,OAAO,IAAI,CAAC,CAAC;gBACf,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { type SpendRecord } from './spend-ledger';
|
|
2
|
+
/**
|
|
3
|
+
* WHAT A WINDOW OF WORK COST IN TOKENS, AND WHETHER THAT CAN BE SAID AT ALL.
|
|
4
|
+
*
|
|
5
|
+
* 🔴 THE FIGURES WERE RECORDED AND NOBODY READ THEM. `inputTokens` and
|
|
6
|
+
* `outputTokens` have been parsed out of every envelope and written onto every
|
|
7
|
+
* spend row since they were added, and the only reader of that ledger sums
|
|
8
|
+
* `usd`. The two cache counts were not even parsed — `costOf` stopped one line
|
|
9
|
+
* short of them — so the question "did this night pay again for context it
|
|
10
|
+
* already had" had no answer anywhere, which is the capability audit's E-05.
|
|
11
|
+
*
|
|
12
|
+
* ⚠️ THE MONEY RULE, UNCHANGED, RATHER THAN A SOFTER SECOND ONE. `spendInWindow`
|
|
13
|
+
* reports `usd: null` the moment one charged row in the window is silent,
|
|
14
|
+
* because adding up the rows that did report and calling it the total is "a
|
|
15
|
+
* number that looks like a measurement and is not one". The same applies here
|
|
16
|
+
* and for the same reason — the audit says any context-reuse figure "would be
|
|
17
|
+
* an estimate, and must be labelled so" — and a reader who has learned the rule
|
|
18
|
+
* once does not have to learn a second one that behaves differently.
|
|
19
|
+
*
|
|
20
|
+
* ⚠️ EACH FIGURE REFUSES SEPARATELY. A provider may report input and output and
|
|
21
|
+
* say nothing about its cache, and that is not a reason to throw away the two
|
|
22
|
+
* numbers it did give. So `input` can be a number while `cacheRead` is null.
|
|
23
|
+
*
|
|
24
|
+
* ⚠️ AND `null` IS NEVER LEFT BARE. `invocations` and `reported` travel with it,
|
|
25
|
+
* so "cannot say" always arrives with the count that explains it.
|
|
26
|
+
*
|
|
27
|
+
* ⚠️ THIS IS NOT ON CORE'S `Spend`. That type feeds `withinEnvelope`, which is a
|
|
28
|
+
* CEILING — a safety decision about money and concurrency. Widening a safety
|
|
29
|
+
* type to carry a reporting figure is how a reporting bug becomes a ceiling
|
|
30
|
+
* bug, so this is its own view over the same records.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* The window used when a machine declares no envelope of its own.
|
|
34
|
+
*
|
|
35
|
+
* Eight hours: a night, which is the unit this system is about. It lives here
|
|
36
|
+
* rather than in the command so the figure and the rule that governs it stay
|
|
37
|
+
* in one file.
|
|
38
|
+
*/
|
|
39
|
+
export declare const DEFAULT_TOKEN_WINDOW_MS: number;
|
|
40
|
+
export interface TokenTotals {
|
|
41
|
+
/** Null when one charged invocation in the window did not report this figure. */
|
|
42
|
+
readonly input: number | null;
|
|
43
|
+
readonly output: number | null;
|
|
44
|
+
readonly cacheRead: number | null;
|
|
45
|
+
readonly cacheWrite: number | null;
|
|
46
|
+
/** Charged invocations in the window — what the figures above are over. */
|
|
47
|
+
readonly invocations: number;
|
|
48
|
+
/** How many of those reported each figure, so a null is never mysterious. */
|
|
49
|
+
readonly reported: {
|
|
50
|
+
readonly input: number;
|
|
51
|
+
readonly output: number;
|
|
52
|
+
readonly cacheRead: number;
|
|
53
|
+
readonly cacheWrite: number;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export type TokenView = {
|
|
57
|
+
readonly ok: true;
|
|
58
|
+
readonly tokens: TokenTotals;
|
|
59
|
+
} | {
|
|
60
|
+
readonly ok: false;
|
|
61
|
+
readonly because: string;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* A row that represents work actually done.
|
|
65
|
+
*
|
|
66
|
+
* Reservations and cancellations are money-shaped bookkeeping — a hold placed
|
|
67
|
+
* and a hold released — and neither ever carried a token count. Counting them
|
|
68
|
+
* as silent invocations would make every window unmeasurable for a reason that
|
|
69
|
+
* has nothing to do with what a provider reported.
|
|
70
|
+
*/
|
|
71
|
+
export declare function isChargedInvocation(r: SpendRecord): boolean;
|
|
72
|
+
export declare function totalsOf(records: readonly SpendRecord[]): TokenTotals;
|
|
73
|
+
/** The window ending now, read from this machine's spend ledger. */
|
|
74
|
+
export declare function tokensInWindow(now: number, windowMs: number, home?: string): TokenView;
|
|
75
|
+
/**
|
|
76
|
+
* The one line `looply doctor` prints.
|
|
77
|
+
*
|
|
78
|
+
* It never prints a bare number for a figure it cannot stand behind, and it
|
|
79
|
+
* never prints "cannot say" without the count that explains it — a reader who
|
|
80
|
+
* is told a figure is unavailable deserves to know whether that is because
|
|
81
|
+
* nothing ran or because their provider is quiet.
|
|
82
|
+
*/
|
|
83
|
+
export declare function tokenLine(view: TokenView, windowMs: number): string;
|
|
84
|
+
//# sourceMappingURL=token-window.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-window.d.ts","sourceRoot":"","sources":["../src/token-window.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,QAAqB,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAE3D;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,CA0CrE;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,GAAG,SAAS,CAWjG;AAKD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiBnE"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_TOKEN_WINDOW_MS = void 0;
|
|
4
|
+
exports.isChargedInvocation = isChargedInvocation;
|
|
5
|
+
exports.totalsOf = totalsOf;
|
|
6
|
+
exports.tokensInWindow = tokensInWindow;
|
|
7
|
+
exports.tokenLine = tokenLine;
|
|
8
|
+
const node_os_1 = require("node:os");
|
|
9
|
+
const spend_ledger_1 = require("./spend-ledger");
|
|
10
|
+
/**
|
|
11
|
+
* WHAT A WINDOW OF WORK COST IN TOKENS, AND WHETHER THAT CAN BE SAID AT ALL.
|
|
12
|
+
*
|
|
13
|
+
* 🔴 THE FIGURES WERE RECORDED AND NOBODY READ THEM. `inputTokens` and
|
|
14
|
+
* `outputTokens` have been parsed out of every envelope and written onto every
|
|
15
|
+
* spend row since they were added, and the only reader of that ledger sums
|
|
16
|
+
* `usd`. The two cache counts were not even parsed — `costOf` stopped one line
|
|
17
|
+
* short of them — so the question "did this night pay again for context it
|
|
18
|
+
* already had" had no answer anywhere, which is the capability audit's E-05.
|
|
19
|
+
*
|
|
20
|
+
* ⚠️ THE MONEY RULE, UNCHANGED, RATHER THAN A SOFTER SECOND ONE. `spendInWindow`
|
|
21
|
+
* reports `usd: null` the moment one charged row in the window is silent,
|
|
22
|
+
* because adding up the rows that did report and calling it the total is "a
|
|
23
|
+
* number that looks like a measurement and is not one". The same applies here
|
|
24
|
+
* and for the same reason — the audit says any context-reuse figure "would be
|
|
25
|
+
* an estimate, and must be labelled so" — and a reader who has learned the rule
|
|
26
|
+
* once does not have to learn a second one that behaves differently.
|
|
27
|
+
*
|
|
28
|
+
* ⚠️ EACH FIGURE REFUSES SEPARATELY. A provider may report input and output and
|
|
29
|
+
* say nothing about its cache, and that is not a reason to throw away the two
|
|
30
|
+
* numbers it did give. So `input` can be a number while `cacheRead` is null.
|
|
31
|
+
*
|
|
32
|
+
* ⚠️ AND `null` IS NEVER LEFT BARE. `invocations` and `reported` travel with it,
|
|
33
|
+
* so "cannot say" always arrives with the count that explains it.
|
|
34
|
+
*
|
|
35
|
+
* ⚠️ THIS IS NOT ON CORE'S `Spend`. That type feeds `withinEnvelope`, which is a
|
|
36
|
+
* CEILING — a safety decision about money and concurrency. Widening a safety
|
|
37
|
+
* type to carry a reporting figure is how a reporting bug becomes a ceiling
|
|
38
|
+
* bug, so this is its own view over the same records.
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* The window used when a machine declares no envelope of its own.
|
|
42
|
+
*
|
|
43
|
+
* Eight hours: a night, which is the unit this system is about. It lives here
|
|
44
|
+
* rather than in the command so the figure and the rule that governs it stay
|
|
45
|
+
* in one file.
|
|
46
|
+
*/
|
|
47
|
+
exports.DEFAULT_TOKEN_WINDOW_MS = 8 * 60 * 60 * 1000;
|
|
48
|
+
/**
|
|
49
|
+
* A row that represents work actually done.
|
|
50
|
+
*
|
|
51
|
+
* Reservations and cancellations are money-shaped bookkeeping — a hold placed
|
|
52
|
+
* and a hold released — and neither ever carried a token count. Counting them
|
|
53
|
+
* as silent invocations would make every window unmeasurable for a reason that
|
|
54
|
+
* has nothing to do with what a provider reported.
|
|
55
|
+
*/
|
|
56
|
+
function isChargedInvocation(r) {
|
|
57
|
+
return r.kind === undefined || r.kind === 'spend' || r.kind === 'settlement';
|
|
58
|
+
}
|
|
59
|
+
function totalsOf(records) {
|
|
60
|
+
const fields = ['inputTokens', 'outputTokens', 'cacheReadTokens', 'cacheWriteTokens'];
|
|
61
|
+
const sums = {
|
|
62
|
+
inputTokens: 0,
|
|
63
|
+
outputTokens: 0,
|
|
64
|
+
cacheReadTokens: 0,
|
|
65
|
+
cacheWriteTokens: 0,
|
|
66
|
+
};
|
|
67
|
+
const said = {
|
|
68
|
+
inputTokens: 0,
|
|
69
|
+
outputTokens: 0,
|
|
70
|
+
cacheReadTokens: 0,
|
|
71
|
+
cacheWriteTokens: 0,
|
|
72
|
+
};
|
|
73
|
+
let invocations = 0;
|
|
74
|
+
for (const r of records) {
|
|
75
|
+
if (!isChargedInvocation(r))
|
|
76
|
+
continue;
|
|
77
|
+
invocations += 1;
|
|
78
|
+
for (const f of fields) {
|
|
79
|
+
const v = r[f];
|
|
80
|
+
if (typeof v === 'number' && Number.isFinite(v) && v >= 0) {
|
|
81
|
+
sums[f] += v;
|
|
82
|
+
said[f] += 1;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Complete or nothing, per figure. An empty window is complete and zero:
|
|
87
|
+
// nothing ran, which is a fact rather than a gap.
|
|
88
|
+
const total = (f) => (said[f] === invocations ? sums[f] : null);
|
|
89
|
+
return {
|
|
90
|
+
input: total('inputTokens'),
|
|
91
|
+
output: total('outputTokens'),
|
|
92
|
+
cacheRead: total('cacheReadTokens'),
|
|
93
|
+
cacheWrite: total('cacheWriteTokens'),
|
|
94
|
+
invocations,
|
|
95
|
+
reported: {
|
|
96
|
+
input: said.inputTokens,
|
|
97
|
+
output: said.outputTokens,
|
|
98
|
+
cacheRead: said.cacheReadTokens,
|
|
99
|
+
cacheWrite: said.cacheWriteTokens,
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/** The window ending now, read from this machine's spend ledger. */
|
|
104
|
+
function tokensInWindow(now, windowMs, home = (0, node_os_1.homedir)()) {
|
|
105
|
+
const read = (0, spend_ledger_1.readSpend)(home);
|
|
106
|
+
if (!read.ok)
|
|
107
|
+
return { ok: false, because: read.because };
|
|
108
|
+
const since = now - windowMs;
|
|
109
|
+
// The same bounds `spendInWindow` uses: a row stamped later than this
|
|
110
|
+
// reader's clock is still somebody's, and excluding it flatters the machine.
|
|
111
|
+
const inWindow = read.records.filter((r) => {
|
|
112
|
+
const at = Date.parse(r.at);
|
|
113
|
+
return Number.isFinite(at) && at >= since;
|
|
114
|
+
});
|
|
115
|
+
return { ok: true, tokens: totalsOf(inWindow) };
|
|
116
|
+
}
|
|
117
|
+
const thousands = (n) => n >= 1_000_000 ? `${(n / 1_000_000).toFixed(1)}M` : n >= 1_000 ? `${Math.round(n / 1_000)}k` : String(n);
|
|
118
|
+
/**
|
|
119
|
+
* The one line `looply doctor` prints.
|
|
120
|
+
*
|
|
121
|
+
* It never prints a bare number for a figure it cannot stand behind, and it
|
|
122
|
+
* never prints "cannot say" without the count that explains it — a reader who
|
|
123
|
+
* is told a figure is unavailable deserves to know whether that is because
|
|
124
|
+
* nothing ran or because their provider is quiet.
|
|
125
|
+
*/
|
|
126
|
+
function tokenLine(view, windowMs) {
|
|
127
|
+
if (!view.ok)
|
|
128
|
+
return `tokens : cannot be read — ${view.because}`;
|
|
129
|
+
const t = view.tokens;
|
|
130
|
+
const hours = Math.round(windowMs / 3_600_000);
|
|
131
|
+
const over = `last ${hours}h`;
|
|
132
|
+
if (t.invocations === 0)
|
|
133
|
+
return `tokens : ${over} — nothing has run`;
|
|
134
|
+
const fig = (label, v, said) => v === null ? `${label} not reported by ${t.invocations - said} of ${t.invocations}` : `${label} ${thousands(v)}`;
|
|
135
|
+
return (`tokens : ${over}, ${t.invocations} invocation${t.invocations === 1 ? '' : 's'} — ` +
|
|
136
|
+
[
|
|
137
|
+
fig('in', t.input, t.reported.input),
|
|
138
|
+
fig('out', t.output, t.reported.output),
|
|
139
|
+
fig('cache read', t.cacheRead, t.reported.cacheRead),
|
|
140
|
+
fig('cache written', t.cacheWrite, t.reported.cacheWrite),
|
|
141
|
+
].join(' · '));
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=token-window.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-window.js","sourceRoot":"","sources":["../src/token-window.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { type SharedGrantDeps } from './shared-grants';
|
|
2
|
+
import { type ToolchainResult } from './toolchain-mirror';
|
|
3
|
+
import { type ToolName, type ToolResponse } from './tool-protocol';
|
|
4
|
+
import { type UntrustedExecutionBackend } from './untrusted-exec';
|
|
5
|
+
import { type ToolCallRecorder } from './tool-call-record';
|
|
6
|
+
import { type ActionRequest, type BuildActionErrorCode, type TrustedActionContext } from '@looply/core';
|
|
7
|
+
/** The worker script, somewhere the container can read and cannot write. */
|
|
8
|
+
export declare function toolWorkerRoot(deps?: ToolBridgeDeps): string;
|
|
9
|
+
/**
|
|
10
|
+
* Put the worker where a contained process can read it.
|
|
11
|
+
*
|
|
12
|
+
* READ ONLY, and keyed by content. The worker is the one thing in this design
|
|
13
|
+
* that runs with the container's grants, so a directory the container could
|
|
14
|
+
* write would be a directory it could replace the worker in — which is the same
|
|
15
|
+
* as having no worker policy at all.
|
|
16
|
+
*/
|
|
17
|
+
export declare function ensureToolWorker(deps?: ToolBridgeDeps): {
|
|
18
|
+
ok: true;
|
|
19
|
+
path: string;
|
|
20
|
+
} | {
|
|
21
|
+
ok: false;
|
|
22
|
+
because: string;
|
|
23
|
+
};
|
|
24
|
+
export interface ToolBridgeDeps {
|
|
25
|
+
backend?: UntrustedExecutionBackend;
|
|
26
|
+
toolchain?: () => ToolchainResult;
|
|
27
|
+
/** Overridable so tests never write to the shared worker root. */
|
|
28
|
+
workerRoot?: string;
|
|
29
|
+
/** Overridable so a test can point at a different worker build. */
|
|
30
|
+
workerSource?: string;
|
|
31
|
+
now?: () => number;
|
|
32
|
+
/** Per-call ceiling. A worker that hangs must not hang the session. */
|
|
33
|
+
timeoutMs?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Who this run is and what it is working on.
|
|
36
|
+
*
|
|
37
|
+
* Absent means no action can be proposed at all — fail closed rather than
|
|
38
|
+
* invent an identity, because the identity is half of what an approval is
|
|
39
|
+
* about.
|
|
40
|
+
*/
|
|
41
|
+
actionContext?: TrustedActionContext;
|
|
42
|
+
/**
|
|
43
|
+
* Where what was served is written down (the audit's G-05).
|
|
44
|
+
*
|
|
45
|
+
* Absent means nothing is kept — which is every caller that has no run to
|
|
46
|
+
* attach it to, and is byte for byte what this did before the record existed.
|
|
47
|
+
* See `tool-call-record.ts` for why the run id is the switch.
|
|
48
|
+
*/
|
|
49
|
+
record?: ToolCallRecorder;
|
|
50
|
+
/**
|
|
51
|
+
* F43: WHERE THE SHARED-GRANT LEDGER AND ITS LOCK LIVE — the machine's, handed
|
|
52
|
+
* over by the trusted launcher (`mcp-main.ts`).
|
|
53
|
+
*
|
|
54
|
+
* Absent means `homedir()`, and inside a provider session that is the sterile
|
|
55
|
+
* session directory: every role kept its own ledger and its own lock, so an
|
|
56
|
+
* agent's grant was serialised against no other grant (`icacls` is a
|
|
57
|
+
* read-modify-write of one DACL) and was released by nothing — retirement reads
|
|
58
|
+
* the machine ledger only.
|
|
59
|
+
*/
|
|
60
|
+
sharedGrants?: SharedGrantDeps;
|
|
61
|
+
}
|
|
62
|
+
/** What one role is allowed to ask for. */
|
|
63
|
+
export interface ToolPolicy {
|
|
64
|
+
readonly role: string;
|
|
65
|
+
readonly tools: readonly ToolName[];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The seam a consequential tool will one day arrive through.
|
|
69
|
+
*
|
|
70
|
+
* A tool that can push, deploy or send does NOT get an executor here. It gets
|
|
71
|
+
* this: the model describes what it wants, Looply turns that into a structured
|
|
72
|
+
* request with an exact fingerprint, and the request goes off to be approved by
|
|
73
|
+
* a person. Nothing in this phase can carry any of them out, and there is no
|
|
74
|
+
* approval state — that is the next slice.
|
|
75
|
+
*
|
|
76
|
+
* WHAT THE MODEL DOES NOT SUPPLY. The project and the actor come from the run
|
|
77
|
+
* that is executing, injected below. A model that could name its own project
|
|
78
|
+
* would make "approve this for project A" authorise something in project B, and
|
|
79
|
+
* one that could name its own actor would be able to sign as a person.
|
|
80
|
+
*/
|
|
81
|
+
export type ActionOutcome = {
|
|
82
|
+
readonly ok: true;
|
|
83
|
+
readonly request: ActionRequest;
|
|
84
|
+
} | {
|
|
85
|
+
readonly ok: false;
|
|
86
|
+
readonly code: BuildActionErrorCode | 'no_context';
|
|
87
|
+
readonly because: string;
|
|
88
|
+
};
|
|
89
|
+
export interface ToolBridge {
|
|
90
|
+
call(req: unknown): Promise<ToolResponse>;
|
|
91
|
+
/**
|
|
92
|
+
* Describe a consequential action as data. Executes nothing, stores nothing.
|
|
93
|
+
*
|
|
94
|
+
* `type` and `payload` are model input and are validated to death; the
|
|
95
|
+
* trusted context is the run's own and is never taken from either.
|
|
96
|
+
*/
|
|
97
|
+
proposeAction(type: unknown, payload: unknown, note?: string): ActionOutcome;
|
|
98
|
+
/** What has been spent so far, for tests and for logging. */
|
|
99
|
+
spent(): {
|
|
100
|
+
calls: number;
|
|
101
|
+
bytesRead: number;
|
|
102
|
+
bytesWritten: number;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* A bridge for one project and one role.
|
|
107
|
+
*
|
|
108
|
+
* The budget is per bridge, which is per provider invocation. It exists because
|
|
109
|
+
* the model may call tools as many times as it likes inside one session and
|
|
110
|
+
* nobody is watching the loop. It is NOT the Goal or autonomy budget — those
|
|
111
|
+
* count provider invocations and belong to Phase 6, which this must not touch.
|
|
112
|
+
*/
|
|
113
|
+
export declare function makeToolBridge(projectDir: string, policy: ToolPolicy, deps?: ToolBridgeDeps): ToolBridge;
|
|
114
|
+
/**
|
|
115
|
+
* What each role may call.
|
|
116
|
+
*
|
|
117
|
+
* LEAST PRIVILEGE BY ROLE, derived from what each one actually does rather than
|
|
118
|
+
* granted by habit. The implementer changes code, so it edits and writes. The
|
|
119
|
+
* verifier and the scanner form a judgement about code that already exists;
|
|
120
|
+
* neither has ever needed to change it, and giving them write access would be
|
|
121
|
+
* handing out authority nothing asked for.
|
|
122
|
+
*
|
|
123
|
+
* Nobody gets a shell. There is no tool here that runs anything at all —
|
|
124
|
+
* project code is executed in exactly one place, the gate, under Looply's own
|
|
125
|
+
* orchestration and never at the model's request.
|
|
126
|
+
*/
|
|
127
|
+
export declare const TOOL_POLICIES: {
|
|
128
|
+
readonly implementer: {
|
|
129
|
+
readonly role: "implementer";
|
|
130
|
+
readonly tools: readonly ["read", "glob", "grep", "edit", "write"];
|
|
131
|
+
};
|
|
132
|
+
readonly verifier: {
|
|
133
|
+
readonly role: "verifier";
|
|
134
|
+
readonly tools: readonly ["read", "glob", "grep"];
|
|
135
|
+
};
|
|
136
|
+
readonly scanner: {
|
|
137
|
+
readonly role: "scanner";
|
|
138
|
+
readonly tools: readonly ["read", "glob", "grep"];
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* THE BRAIN. READ, GLOB, GREP — AND NOTHING THAT CHANGES ANYTHING.
|
|
142
|
+
*
|
|
143
|
+
* 🔴 IT PROPOSES; IT NEVER ACTS. A brain that could `edit` would be a second
|
|
144
|
+
* implementer with none of the first one's gate, and a brain that could
|
|
145
|
+
* `write` would be able to manufacture the very evidence its proposals are
|
|
146
|
+
* checked against. The narrowest role in the table is the one belonging to
|
|
147
|
+
* the only component that reasons.
|
|
148
|
+
*
|
|
149
|
+
* ⚠️ ENFORCED TWICE, LIKE THE OTHER THREE — once where the policy is applied
|
|
150
|
+
* and once at the bridge — because a single check is a single line to delete.
|
|
151
|
+
*/
|
|
152
|
+
readonly brain: {
|
|
153
|
+
readonly role: "brain";
|
|
154
|
+
readonly tools: readonly ["read", "glob", "grep"];
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* THE PROVER. READ, GLOB, GREP — THE SECOND KEY GRADES THE TREE; IT NEVER TOUCHES IT.
|
|
158
|
+
*
|
|
159
|
+
* 🔴 IT WAS LENT THE IMPLEMENTER'S TRANSPORT. `run-cmd.ts` handed `runProver`
|
|
160
|
+
* the same invoke as the round, so the prover ran with `edit` and `write` —
|
|
161
|
+
* while its own prompt told it "read-only access … you must not modify
|
|
162
|
+
* anything". The prompt asked; nothing enforced. MEASURED, LIVE, 2026-09-24
|
|
163
|
+
* (LIVE-1 run 2): the prover's bridge was launched as role `implementer` with
|
|
164
|
+
* `mcp__looply__edit,mcp__looply__write` allowed, between a GREEN gate and
|
|
165
|
+
* the commit — the one window in a round where a write is kept without being
|
|
166
|
+
* gated — and its spend was booked as the implementer's.
|
|
167
|
+
*
|
|
168
|
+
* ⚠️ ENFORCED TWICE, LIKE THE OTHERS: the allowlist on the provider's
|
|
169
|
+
* command line, and the bridge, which refuses a tool the role does not hold.
|
|
170
|
+
*/
|
|
171
|
+
readonly prover: {
|
|
172
|
+
readonly role: "prover";
|
|
173
|
+
readonly tools: readonly ["read", "glob", "grep"];
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
export type ToolRole = keyof typeof TOOL_POLICIES;
|
|
177
|
+
//# sourceMappingURL=tool-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-bridge.d.ts","sourceRoot":"","sources":["../src/tool-bridge.ts"],"names":[],"mappings":"AAWA,OAAO,EAAsB,KAAK,eAAe,EAAkB,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAKL,KAAK,QAAQ,EAEb,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAIL,KAAK,yBAAyB,EAC/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AAwCtB,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,IAAI,GAAE,cAAmB,GAAG,MAAM,CAEhE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,cAAmB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAoBvH;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,eAAe,CAAC;IAClC,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC;AAED,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;CACrC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,YAAY,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzG,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1C;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAC7E,6DAA6D;IAC7D,KAAK,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AAkDD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,UAAU,EAClB,IAAI,GAAE,cAAmB,GACxB,UAAU,CA0IZ;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;IAIxB;;;;;;;;;;;OAWG;;;;;IAEH;;;;;;;;;;;;;;OAcG;;;;;CAE0C,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,aAAa,CAAC"}
|