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,98 @@
|
|
|
1
|
+
import { type ObservationRecord } from '@looply/core';
|
|
2
|
+
/**
|
|
3
|
+
* WHERE AN OBSERVATION LIVES AFTER THE PROCESS THAT MADE IT EXITS.
|
|
4
|
+
*
|
|
5
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
6
|
+
* 🔴 IT DID NOT LIVE ANYWHERE. `looply sessions --watch` printed its record to a
|
|
7
|
+
* terminal and the record died with the process — so a watch was a thing you
|
|
8
|
+
* could do and never a thing you could later CONSULT. "Was that session
|
|
9
|
+
* observed, and what did it do?" had no answer an hour afterwards, which is
|
|
10
|
+
* most of what observing is for.
|
|
11
|
+
*
|
|
12
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
13
|
+
* ⚠️ NOT THE SESSION LEDGER, AND THE DIFFERENCE IS NOT COSMETIC.
|
|
14
|
+
*
|
|
15
|
+
* `sessions.jsonl` is the handshake's history — who offered, what was decided,
|
|
16
|
+
* who acknowledged. It is small, permanent and append-only, and every line in
|
|
17
|
+
* it is a fact about PERMISSION. An observation is none of those things: it is
|
|
18
|
+
* large, it is about WORK rather than permission, and it stops being useful
|
|
19
|
+
* long before a grant does. Putting one in the ledger would make the ledger the
|
|
20
|
+
* default answer to every "where does this go" question by accident, and would
|
|
21
|
+
* make a file people rely on unbounded.
|
|
22
|
+
*
|
|
23
|
+
* So: its own root, one file per watch, and a root a retention policy can be
|
|
24
|
+
* pointed at — this product already decided how disposable artifacts are
|
|
25
|
+
* removed (D5), and an observation is exactly that kind of artifact.
|
|
26
|
+
*
|
|
27
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
28
|
+
* 🔴 AN OPEN RECORD IS WRITTEN BEFORE THE WATCH BEGINS, AND THAT IS THE POINT.
|
|
29
|
+
*
|
|
30
|
+
* A record written only at the end exists only for watches that ENDED. Kill the
|
|
31
|
+
* process — which is the ordinary way a long watch stops — and the store
|
|
32
|
+
* contains nothing, and "no record on file" means both "never watched" and
|
|
33
|
+
* "watched and the terminal closed". The same ambiguity `session-observe.ts`
|
|
34
|
+
* exists to destroy, reintroduced by the storage layer.
|
|
35
|
+
*
|
|
36
|
+
* So the record is written at attach with `stop: null`, and rewritten when the
|
|
37
|
+
* watch closes. A record left open is a watch that never closed, and
|
|
38
|
+
* `observationCompleteness` already calls that `nothing-established`.
|
|
39
|
+
*/
|
|
40
|
+
export interface ObservationPaths {
|
|
41
|
+
readonly root: string;
|
|
42
|
+
readonly session: string;
|
|
43
|
+
}
|
|
44
|
+
export declare function observationPaths(stateDir: string, sessionId: string): ObservationPaths;
|
|
45
|
+
/**
|
|
46
|
+
* Write the record, atomically.
|
|
47
|
+
*
|
|
48
|
+
* ⚠️ TEMP-THEN-RENAME, because this is called twice for one watch — once at
|
|
49
|
+
* attach and once at the close — and a reader arriving between the open and the
|
|
50
|
+
* write of the closed version must see one or the other, never half of each.
|
|
51
|
+
*/
|
|
52
|
+
export declare function writeObservation(paths: ObservationPaths, record: ObservationRecord): string;
|
|
53
|
+
/**
|
|
54
|
+
* The record a watch writes before it has seen anything.
|
|
55
|
+
*
|
|
56
|
+
* 🔴 `attached: true` AND `stop: null` IS NOT AN OPTIMISTIC GUESS. A watcher
|
|
57
|
+
* that has taken its baseline HAS attached — that is what attaching is — and it
|
|
58
|
+
* genuinely has not stopped. Both fields are true at the moment this is
|
|
59
|
+
* written, and if the process dies here they stay true forever, which is
|
|
60
|
+
* exactly what a reader should be told.
|
|
61
|
+
*/
|
|
62
|
+
export declare function openRecord(sessionId: string, coversFrom: string): ObservationRecord;
|
|
63
|
+
export interface StoredObservation {
|
|
64
|
+
readonly file: string;
|
|
65
|
+
readonly record: ObservationRecord;
|
|
66
|
+
/**
|
|
67
|
+
* 🔴 WRITTEN AND NEVER CLOSED. Distinct from every other answer: the fold
|
|
68
|
+
* calls an open record `nothing-established` and gives the reason "still
|
|
69
|
+
* running", which is true of a live watch and misleading about a dead one.
|
|
70
|
+
* The store knows something the fold cannot — that nobody is holding this
|
|
71
|
+
* file open — and says it rather than leaving the fold's wording to be read
|
|
72
|
+
* as a status.
|
|
73
|
+
*/
|
|
74
|
+
readonly open: boolean;
|
|
75
|
+
}
|
|
76
|
+
export interface ReadOutcome {
|
|
77
|
+
readonly observations: readonly StoredObservation[];
|
|
78
|
+
readonly unreadable: readonly string[];
|
|
79
|
+
/** Whether this session has a directory at all. */
|
|
80
|
+
readonly present: boolean;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Every observation on file for one session, oldest first.
|
|
84
|
+
*
|
|
85
|
+
* ⚠️ A DIRECTORY THAT IS NOT THERE AND ONE THAT IS EMPTY ARE DIFFERENT FACTS,
|
|
86
|
+
* the same distinction the outbox keeps: never watched, versus watched and the
|
|
87
|
+
* records removed.
|
|
88
|
+
*/
|
|
89
|
+
export declare function readObservations(paths: ObservationPaths): ReadOutcome;
|
|
90
|
+
/**
|
|
91
|
+
* The lines a person reads.
|
|
92
|
+
*
|
|
93
|
+
* 🔴 AN EMPTY LIST GETS A SENTENCE, ALWAYS, AND WHICH SENTENCE DEPENDS ON WHY.
|
|
94
|
+
* "Never watched" and "watched, and the records are gone" are the two readings
|
|
95
|
+
* of nothing, and a reader who has to guess will guess the reassuring one.
|
|
96
|
+
*/
|
|
97
|
+
export declare function reportObservations(sessionId: string, outcome: ReadOutcome, out: (line: string) => void): void;
|
|
98
|
+
//# sourceMappingURL=session-observation-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-observation-store.d.ts","sourceRoot":"","sources":["../src/session-observation-store.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAGtF;AAOD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAY3F;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,iBAAiB,CAanF;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAaD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,mDAAmD;IACnD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAkCrE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CA6B7G"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.observationPaths = observationPaths;
|
|
4
|
+
exports.writeObservation = writeObservation;
|
|
5
|
+
exports.openRecord = openRecord;
|
|
6
|
+
exports.readObservations = readObservations;
|
|
7
|
+
exports.reportObservations = reportObservations;
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
|
+
const core_1 = require("@looply/core");
|
|
11
|
+
function observationPaths(stateDir, sessionId) {
|
|
12
|
+
const root = (0, node_path_1.join)(stateDir, 'observations');
|
|
13
|
+
return { root, session: (0, node_path_1.join)(root, sessionId) };
|
|
14
|
+
}
|
|
15
|
+
/** One watch's file, named by the moment it covers from. */
|
|
16
|
+
function fileFor(paths, coversFrom) {
|
|
17
|
+
return (0, node_path_1.join)(paths.session, `${coversFrom.replace(/[:.]/g, '-')}.json`);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Write the record, atomically.
|
|
21
|
+
*
|
|
22
|
+
* ⚠️ TEMP-THEN-RENAME, because this is called twice for one watch — once at
|
|
23
|
+
* attach and once at the close — and a reader arriving between the open and the
|
|
24
|
+
* write of the closed version must see one or the other, never half of each.
|
|
25
|
+
*/
|
|
26
|
+
function writeObservation(paths, record) {
|
|
27
|
+
(0, node_fs_1.mkdirSync)(paths.session, { recursive: true });
|
|
28
|
+
const target = fileFor(paths, record.coversFrom);
|
|
29
|
+
const tmp = `${target}.partial`;
|
|
30
|
+
const fd = (0, node_fs_1.openSync)(tmp, 'w');
|
|
31
|
+
try {
|
|
32
|
+
(0, node_fs_1.writeSync)(fd, `${JSON.stringify(record, null, 2)}\n`);
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
(0, node_fs_1.closeSync)(fd);
|
|
36
|
+
}
|
|
37
|
+
(0, node_fs_1.renameSync)(tmp, target);
|
|
38
|
+
return target;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The record a watch writes before it has seen anything.
|
|
42
|
+
*
|
|
43
|
+
* 🔴 `attached: true` AND `stop: null` IS NOT AN OPTIMISTIC GUESS. A watcher
|
|
44
|
+
* that has taken its baseline HAS attached — that is what attaching is — and it
|
|
45
|
+
* genuinely has not stopped. Both fields are true at the moment this is
|
|
46
|
+
* written, and if the process dies here they stay true forever, which is
|
|
47
|
+
* exactly what a reader should be told.
|
|
48
|
+
*/
|
|
49
|
+
function openRecord(sessionId, coversFrom) {
|
|
50
|
+
return {
|
|
51
|
+
sessionId,
|
|
52
|
+
coversFrom,
|
|
53
|
+
coversTo: null,
|
|
54
|
+
events: [],
|
|
55
|
+
predates: 0,
|
|
56
|
+
outOfScope: 0,
|
|
57
|
+
unjudgeable: 0,
|
|
58
|
+
unreadable: [],
|
|
59
|
+
stop: null,
|
|
60
|
+
attached: true,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const isRecord = (v) => {
|
|
64
|
+
if (typeof v !== 'object' || v === null)
|
|
65
|
+
return false;
|
|
66
|
+
const o = v;
|
|
67
|
+
return (typeof o['sessionId'] === 'string' &&
|
|
68
|
+
typeof o['coversFrom'] === 'string' &&
|
|
69
|
+
Array.isArray(o['events']) &&
|
|
70
|
+
typeof o['attached'] === 'boolean');
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Every observation on file for one session, oldest first.
|
|
74
|
+
*
|
|
75
|
+
* ⚠️ A DIRECTORY THAT IS NOT THERE AND ONE THAT IS EMPTY ARE DIFFERENT FACTS,
|
|
76
|
+
* the same distinction the outbox keeps: never watched, versus watched and the
|
|
77
|
+
* records removed.
|
|
78
|
+
*/
|
|
79
|
+
function readObservations(paths) {
|
|
80
|
+
let names;
|
|
81
|
+
try {
|
|
82
|
+
names = (0, node_fs_1.readdirSync)(paths.session).sort();
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return { observations: [], unreadable: [], present: false };
|
|
86
|
+
}
|
|
87
|
+
const observations = [];
|
|
88
|
+
const unreadable = [];
|
|
89
|
+
for (const name of names) {
|
|
90
|
+
if (!name.endsWith('.json'))
|
|
91
|
+
continue;
|
|
92
|
+
const at = (0, node_path_1.join)(paths.session, name);
|
|
93
|
+
try {
|
|
94
|
+
/**
|
|
95
|
+
* 🔴 `lstat`, NEVER `stat`. This root is retention-eligible and therefore
|
|
96
|
+
* a place things get removed from; a link here would make a read reach
|
|
97
|
+
* somewhere nobody pointed it.
|
|
98
|
+
*/
|
|
99
|
+
if ((0, node_fs_1.lstatSync)(at).isSymbolicLink()) {
|
|
100
|
+
unreadable.push(`${name} is a link and was not followed`);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const parsed = JSON.parse((0, node_fs_1.readFileSync)(at, 'utf8'));
|
|
104
|
+
if (!isRecord(parsed)) {
|
|
105
|
+
unreadable.push(`${name} is not an observation record`);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
observations.push({ file: at, record: parsed, open: parsed.stop === null });
|
|
109
|
+
}
|
|
110
|
+
catch (e) {
|
|
111
|
+
unreadable.push(`${name} could not be read: ${e.message}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return { observations, unreadable, present: true };
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* The lines a person reads.
|
|
118
|
+
*
|
|
119
|
+
* 🔴 AN EMPTY LIST GETS A SENTENCE, ALWAYS, AND WHICH SENTENCE DEPENDS ON WHY.
|
|
120
|
+
* "Never watched" and "watched, and the records are gone" are the two readings
|
|
121
|
+
* of nothing, and a reader who has to guess will guess the reassuring one.
|
|
122
|
+
*/
|
|
123
|
+
function reportObservations(sessionId, outcome, out) {
|
|
124
|
+
if (!outcome.present) {
|
|
125
|
+
out(`observations: ${sessionId} has never been watched — nothing was ever recorded about what it did`);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (outcome.observations.length === 0 && outcome.unreadable.length === 0) {
|
|
129
|
+
out(`observations: ${sessionId} has been watched, and no record remains — they may have been retained away`);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
out(`observations: ${outcome.observations.length} on file for ${sessionId}`);
|
|
133
|
+
for (const stored of outcome.observations) {
|
|
134
|
+
const c = (0, core_1.observationCompleteness)(stored.record);
|
|
135
|
+
const span = `${stored.record.coversFrom} .. ${stored.record.coversTo ?? '(never closed)'}`;
|
|
136
|
+
out(` ${span} ${stored.record.events.length} event(s)`);
|
|
137
|
+
/**
|
|
138
|
+
* ⚠️ AN OPEN RECORD SAYS SO IN ITS OWN WORDS. The fold answers
|
|
139
|
+
* `nothing-established` with "still running", which is true of a live watch
|
|
140
|
+
* and misleading about one whose process was killed an hour ago.
|
|
141
|
+
*/
|
|
142
|
+
if (stored.open) {
|
|
143
|
+
out(' open: the watch that wrote this never closed it — the process may have been stopped, and what happened after is unknown');
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
out(` ${c.kind}: ${c.because}`);
|
|
147
|
+
}
|
|
148
|
+
if (stored.record.predates > 0) {
|
|
149
|
+
out(` ${stored.record.predates} event(s) predate it and are NOT certified by it`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
for (const u of outcome.unreadable)
|
|
153
|
+
out(` blind: ${u}`);
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=session-observation-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-observation-store.js","sourceRoot":"","sources":["../src/session-observation-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { type ObservationRecord, type SessionEvent, type WatchWindow } from '@looply/core';
|
|
2
|
+
/**
|
|
3
|
+
* THE MECHANICS OF A BOUNDED WATCH. `session-observe.ts` decides; this walks.
|
|
4
|
+
*
|
|
5
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
6
|
+
* 🔴 THE FIRST SNAPSHOT IS NOT EVENTS, AND THAT IS THE WHOLE REASON THIS FILE
|
|
7
|
+
* IS CAREFUL RATHER THAN SHORT.
|
|
8
|
+
*
|
|
9
|
+
* A watcher that attaches to a repository and reports every file it finds has
|
|
10
|
+
* just certified the past — every edit the session made in the hour before
|
|
11
|
+
* anybody asked arrives stamped with the observer's clock, INSIDE the window,
|
|
12
|
+
* and `ruleOnEvent` waves all of it through because the timestamps it is
|
|
13
|
+
* judging are the moment of the walk. The fold cannot catch this; it never sees
|
|
14
|
+
* the difference between a file that changed and a file that merely exists.
|
|
15
|
+
*
|
|
16
|
+
* So `attach` takes a baseline and emits NOTHING from it. Only differences from
|
|
17
|
+
* that baseline become events, and the baseline's own existence is not a
|
|
18
|
+
* finding. `session-adoption.ts` puts it as "adoption cannot make those things
|
|
19
|
+
* observed", and this is the one place in the product where getting it wrong
|
|
20
|
+
* would be silent and total.
|
|
21
|
+
*
|
|
22
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
23
|
+
* 🔴 AND THE WALK DOES NOT FOLLOW LINKS. `lstat`, never `stat` — the rule
|
|
24
|
+
* `retention-apply-runtime.ts` already carries for deletion, and it is the same
|
|
25
|
+
* rule for the same reason: a junction inside the granted scope pointing
|
|
26
|
+
* somewhere else would let a watch observe outside the grant while every path
|
|
27
|
+
* it recorded looked perfectly in-bounds. A link is NOTED (it is a real fact
|
|
28
|
+
* about the tree) and not descended.
|
|
29
|
+
*
|
|
30
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
31
|
+
* ⚠️ EVERY BOUND HERE FAILS LOUD. A scope entry that cannot be read, a walk
|
|
32
|
+
* that hits its ceiling, a tick that throws — each becomes a named entry in
|
|
33
|
+
* `unreadable`, which makes the record `partial`. None of them is a shrug: a
|
|
34
|
+
* watch that quietly skipped an unreadable directory would report `complete`
|
|
35
|
+
* over a blind spot, which is the ambiguity the fold exists to prevent, smuggled
|
|
36
|
+
* back in through the runtime.
|
|
37
|
+
*/
|
|
38
|
+
/** What the observer can do. Injected, so a test drives a real clock nowhere. */
|
|
39
|
+
export interface ObserveRuntimeDeps {
|
|
40
|
+
/** The observer's clock. Never a file's mtime — see `SessionEvent.at`. */
|
|
41
|
+
now(): string;
|
|
42
|
+
/** Is the session's process still there? `unknown` is a real answer. */
|
|
43
|
+
liveness(): 'alive' | 'gone' | 'unknown';
|
|
44
|
+
/** What the server says about the grant right now. `false` ends the watch. */
|
|
45
|
+
stillAuthorized(): Promise<boolean>;
|
|
46
|
+
/** The revision the workspace is on, or `null` when it could not be read. */
|
|
47
|
+
revision(): string | null;
|
|
48
|
+
/** Wait between ticks. */
|
|
49
|
+
sleep(ms: number): Promise<void>;
|
|
50
|
+
/** A caller-owned flag, checked every tick. */
|
|
51
|
+
askedToStop(): boolean;
|
|
52
|
+
}
|
|
53
|
+
export interface WatchOptions {
|
|
54
|
+
/** The checkout the scope is relative to. */
|
|
55
|
+
readonly root: string;
|
|
56
|
+
readonly tickMs: number;
|
|
57
|
+
/**
|
|
58
|
+
* How many filesystem entries one walk may visit.
|
|
59
|
+
*
|
|
60
|
+
* 🔴 NOT A PERFORMANCE KNOB. Without it a watch pointed at a scope containing
|
|
61
|
+
* `node_modules` stops responding to revocation — it is inside a walk — and a
|
|
62
|
+
* watch that cannot notice a revocation is the failure this whole feature is
|
|
63
|
+
* about. Hitting it is recorded as a blind spot, never as a clean walk.
|
|
64
|
+
*/
|
|
65
|
+
readonly maxEntries: number;
|
|
66
|
+
readonly maxDepth: number;
|
|
67
|
+
/**
|
|
68
|
+
* How many bytes one walk may HASH.
|
|
69
|
+
*
|
|
70
|
+
* 🔴 THIS EXISTS BECAUSE SIZE AND TIMESTAMP DO NOT DETECT AN EDIT, AND THAT
|
|
71
|
+
* WAS MEASURED HERE RATHER THAN ASSUMED: writing '1' then '2' to the same
|
|
72
|
+
* file back to back, 139 of 200 pairs were byte-identical in `mtimeMs` — and
|
|
73
|
+
* identically 139 of 200 in `mtimeNs`, so it is not a precision problem that
|
|
74
|
+
* a finer field fixes. NTFS simply does not move the stamp. A watcher built
|
|
75
|
+
* on size and timestamp would have reported nothing for most same-size edits,
|
|
76
|
+
* and reported it as `complete`.
|
|
77
|
+
*
|
|
78
|
+
* So contents are hashed, and the budget keeps a 1s tick from turning into a
|
|
79
|
+
* full-repository scan. Files past the budget fall back to size and timestamp
|
|
80
|
+
* and are NAMED in `unreadable` — lower resolution is a thing the watch
|
|
81
|
+
* cannot see, and it is recorded as one rather than rounded up to fine.
|
|
82
|
+
*/
|
|
83
|
+
readonly maxHashBytes: number;
|
|
84
|
+
}
|
|
85
|
+
export declare const DEFAULT_WATCH_OPTIONS: Omit<WatchOptions, 'root'>;
|
|
86
|
+
/** path (repository-relative, forward slashes) -> size:mtimeMs:sha1|coarse */
|
|
87
|
+
type Snapshot = ReadonlyMap<string, string>;
|
|
88
|
+
interface WalkResult {
|
|
89
|
+
readonly files: Map<string, string>;
|
|
90
|
+
/** Scope entries or subtrees this walk could not see, or could not see fully. */
|
|
91
|
+
readonly unreadable: string[];
|
|
92
|
+
/** Links found and deliberately not descended. */
|
|
93
|
+
readonly links: string[];
|
|
94
|
+
}
|
|
95
|
+
/** A snapshot of everything the grant's scope covers, right now. */
|
|
96
|
+
export declare function snapshot(root: string, scope: readonly string[], opt: WatchOptions): WalkResult;
|
|
97
|
+
/**
|
|
98
|
+
* What changed between two snapshots, as candidate events.
|
|
99
|
+
*
|
|
100
|
+
* ⚠️ `at` IS PASSED IN AND IS THE OBSERVER'S CLOCK. Using each file's mtime
|
|
101
|
+
* would hand a session the ability to place its own events before `coversFrom`
|
|
102
|
+
* and out of the record — it can write a file, so it can write a timestamp.
|
|
103
|
+
*/
|
|
104
|
+
export declare function diffSnapshots(before: Snapshot, after: Snapshot, at: string): SessionEvent[];
|
|
105
|
+
/**
|
|
106
|
+
* Watch a session, inside every bound the grant sets, and return the record.
|
|
107
|
+
*
|
|
108
|
+
* 🔴 IT RETURNS AN `ObservationRecord` WHATEVER HAPPENS, including when it could
|
|
109
|
+
* not start. `attached: false` is the honest answer to "the baseline walk
|
|
110
|
+
* failed", and the fold turns that into `nothing-established` rather than into
|
|
111
|
+
* an empty, reassuring list.
|
|
112
|
+
*/
|
|
113
|
+
export declare function watchSession(window: WatchWindow, opt: WatchOptions, deps: ObserveRuntimeDeps): Promise<ObservationRecord>;
|
|
114
|
+
/**
|
|
115
|
+
* The lines a person reads after a watch.
|
|
116
|
+
*
|
|
117
|
+
* ⚠️ THE COMPLETENESS IS ON ITS OWN LINE, ALWAYS, even when it is `complete`.
|
|
118
|
+
* A reader who has to infer from the absence of a warning that a record is
|
|
119
|
+
* whole is a reader who will one day infer it from the absence of a bug.
|
|
120
|
+
*/
|
|
121
|
+
export declare function reportObservation(record: ObservationRecord, out: (line: string) => void): void;
|
|
122
|
+
export {};
|
|
123
|
+
//# sourceMappingURL=session-observe-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-observe-runtime.d.ts","sourceRoot":"","sources":["../src/session-observe-runtime.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAEjB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,iFAAiF;AACjF,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,GAAG,IAAI,MAAM,CAAC;IACd,wEAAwE;IACxE,QAAQ,IAAI,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACzC,8EAA8E;IAC9E,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,6EAA6E;IAC7E,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;IAC1B,0BAA0B;IAC1B,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,+CAA+C;IAC/C,WAAW,IAAI,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,qBAAqB,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAK5D,CAAC;AAEF,8EAA8E;AAC9E,KAAK,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE5C,UAAU,UAAU;IAClB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,iFAAiF;IACjF,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;CAC1B;AAsGD,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,YAAY,GAAG,UAAU,CAK9F;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,EAAE,CAW3F;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAuJ5B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAW9F"}
|