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,317 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_WATCH_OPTIONS = void 0;
|
|
4
|
+
exports.snapshot = snapshot;
|
|
5
|
+
exports.diffSnapshots = diffSnapshots;
|
|
6
|
+
exports.watchSession = watchSession;
|
|
7
|
+
exports.reportObservation = reportObservation;
|
|
8
|
+
const node_crypto_1 = require("node:crypto");
|
|
9
|
+
const node_fs_1 = require("node:fs");
|
|
10
|
+
const node_path_1 = require("node:path");
|
|
11
|
+
const core_1 = require("@looply/core");
|
|
12
|
+
exports.DEFAULT_WATCH_OPTIONS = {
|
|
13
|
+
tickMs: 1_000,
|
|
14
|
+
maxEntries: 20_000,
|
|
15
|
+
maxDepth: 24,
|
|
16
|
+
maxHashBytes: 8 * 1024 * 1024,
|
|
17
|
+
};
|
|
18
|
+
/** Repository-relative, forward slashes, or null when it escapes the root. */
|
|
19
|
+
function relativeTo(root, abs) {
|
|
20
|
+
const r = (0, node_path_1.relative)((0, node_path_1.resolve)(root), abs);
|
|
21
|
+
if (r === '')
|
|
22
|
+
return null;
|
|
23
|
+
if (r.startsWith('..'))
|
|
24
|
+
return null;
|
|
25
|
+
return r.split(node_path_1.sep).join('/');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* One scope entry, walked.
|
|
29
|
+
*
|
|
30
|
+
* ⚠️ THE BUDGET IS SHARED ACROSS ENTRIES, not per entry. A per-entry budget
|
|
31
|
+
* would let a grant with ten scope entries walk ten times the ceiling, which is
|
|
32
|
+
* the ceiling not existing.
|
|
33
|
+
*/
|
|
34
|
+
function walkInto(root, prefix, opt, budget, out) {
|
|
35
|
+
const start = (0, node_path_1.resolve)(root, prefix);
|
|
36
|
+
const stack = [{ at: start, depth: 0 }];
|
|
37
|
+
while (stack.length > 0) {
|
|
38
|
+
const { at, depth } = stack.pop();
|
|
39
|
+
if (budget.left <= 0) {
|
|
40
|
+
out.unreadable.push(`${prefix} (walk stopped at ${opt.maxEntries} entries — the rest was not looked at)`);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
budget.left -= 1;
|
|
44
|
+
let st;
|
|
45
|
+
try {
|
|
46
|
+
st = (0, node_fs_1.lstatSync)(at);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// The scope entry itself missing is a different fact from a child that
|
|
50
|
+
// vanished mid-walk: the first is a grant naming something that is not
|
|
51
|
+
// there, the second is an ordinary race. Only the first is worth a line.
|
|
52
|
+
if (at === start)
|
|
53
|
+
out.unreadable.push(`${prefix} (could not be read)`);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (st.isSymbolicLink()) {
|
|
57
|
+
const rel = relativeTo(root, at);
|
|
58
|
+
out.links.push(rel ?? at);
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (st.isDirectory()) {
|
|
62
|
+
if (depth >= opt.maxDepth) {
|
|
63
|
+
out.unreadable.push(`${relativeTo(root, at) ?? at} (deeper than ${opt.maxDepth} — not descended)`);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
let children;
|
|
67
|
+
try {
|
|
68
|
+
children = (0, node_fs_1.readdirSync)(at);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
out.unreadable.push(`${relativeTo(root, at) ?? at} (could not be listed)`);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
for (const c of children)
|
|
75
|
+
stack.push({ at: (0, node_path_1.join)(at, c), depth: depth + 1 });
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const rel = relativeTo(root, at);
|
|
79
|
+
if (rel === null) {
|
|
80
|
+
// Cannot happen through a normal walk from inside the root; recorded
|
|
81
|
+
// rather than dropped, because if it ever does the record must say so.
|
|
82
|
+
out.unreadable.push(`${at} (outside ${root} — not recorded)`);
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
out.files.set(rel, `${st.size}:${st.mtimeMs}:${contentStamp(at, st.size, budget, rel, out)}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* The part of a stamp that actually detects an edit.
|
|
90
|
+
*
|
|
91
|
+
* ⚠️ A FILE PAST THE BUDGET IS NOT SKIPPED — it is stamped coarsely and said
|
|
92
|
+
* out loud. Skipping it would drop it from the snapshot entirely, which reads
|
|
93
|
+
* as "removed" on the next walk and then "appeared" on the one after: two
|
|
94
|
+
* fabricated events where there was no change at all.
|
|
95
|
+
*/
|
|
96
|
+
function contentStamp(abs, size, budget, rel, out) {
|
|
97
|
+
if (size > budget.hashBytesLeft) {
|
|
98
|
+
out.unreadable.push(`${rel} (tracked by size and timestamp only — the hash budget ran out, and a same-size edit inside one filesystem tick would not be seen)`);
|
|
99
|
+
return 'coarse';
|
|
100
|
+
}
|
|
101
|
+
try {
|
|
102
|
+
const h = (0, node_crypto_1.createHash)('sha1').update((0, node_fs_1.readFileSync)(abs)).digest('hex').slice(0, 16);
|
|
103
|
+
budget.hashBytesLeft -= size;
|
|
104
|
+
return h;
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
out.unreadable.push(`${rel} (could not be read to hash — tracked by size and timestamp only)`);
|
|
108
|
+
return 'coarse';
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/** A snapshot of everything the grant's scope covers, right now. */
|
|
112
|
+
function snapshot(root, scope, opt) {
|
|
113
|
+
const out = { files: new Map(), unreadable: [], links: [] };
|
|
114
|
+
const budget = { left: opt.maxEntries, hashBytesLeft: opt.maxHashBytes };
|
|
115
|
+
for (const prefix of scope)
|
|
116
|
+
walkInto(root, prefix, opt, budget, out);
|
|
117
|
+
return out;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* What changed between two snapshots, as candidate events.
|
|
121
|
+
*
|
|
122
|
+
* ⚠️ `at` IS PASSED IN AND IS THE OBSERVER'S CLOCK. Using each file's mtime
|
|
123
|
+
* would hand a session the ability to place its own events before `coversFrom`
|
|
124
|
+
* and out of the record — it can write a file, so it can write a timestamp.
|
|
125
|
+
*/
|
|
126
|
+
function diffSnapshots(before, after, at) {
|
|
127
|
+
const events = [];
|
|
128
|
+
for (const [path, stamp] of after) {
|
|
129
|
+
const was = before.get(path);
|
|
130
|
+
if (was === undefined)
|
|
131
|
+
events.push({ at, kind: 'wrote', path, detail: 'appeared' });
|
|
132
|
+
else if (was !== stamp)
|
|
133
|
+
events.push({ at, kind: 'wrote', path, detail: 'changed' });
|
|
134
|
+
}
|
|
135
|
+
for (const path of before.keys()) {
|
|
136
|
+
if (!after.has(path))
|
|
137
|
+
events.push({ at, kind: 'wrote', path, detail: 'removed' });
|
|
138
|
+
}
|
|
139
|
+
return events.sort((a, b) => (a.path ?? '').localeCompare(b.path ?? ''));
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Watch a session, inside every bound the grant sets, and return the record.
|
|
143
|
+
*
|
|
144
|
+
* 🔴 IT RETURNS AN `ObservationRecord` WHATEVER HAPPENS, including when it could
|
|
145
|
+
* not start. `attached: false` is the honest answer to "the baseline walk
|
|
146
|
+
* failed", and the fold turns that into `nothing-established` rather than into
|
|
147
|
+
* an empty, reassuring list.
|
|
148
|
+
*/
|
|
149
|
+
async function watchSession(window, opt, deps) {
|
|
150
|
+
const events = [];
|
|
151
|
+
const unreadable = new Set();
|
|
152
|
+
let predates = 0;
|
|
153
|
+
let outOfScope = 0;
|
|
154
|
+
let unjudgeable = 0;
|
|
155
|
+
/**
|
|
156
|
+
* 🔴 THE BASELINE. Its contents become the comparison and NEVER events. If
|
|
157
|
+
* this line ever grows an "and emit them too", every edit made before anybody
|
|
158
|
+
* asked is certified by the resulting record.
|
|
159
|
+
*/
|
|
160
|
+
let previous;
|
|
161
|
+
try {
|
|
162
|
+
const base = snapshot(opt.root, window.scope, opt);
|
|
163
|
+
previous = base.files;
|
|
164
|
+
for (const u of base.unreadable)
|
|
165
|
+
unreadable.add(u);
|
|
166
|
+
}
|
|
167
|
+
catch (e) {
|
|
168
|
+
return {
|
|
169
|
+
sessionId: window.sessionId,
|
|
170
|
+
coversFrom: window.coversFrom,
|
|
171
|
+
coversTo: null,
|
|
172
|
+
events: [],
|
|
173
|
+
predates: 0,
|
|
174
|
+
outOfScope: 0,
|
|
175
|
+
unjudgeable: 0,
|
|
176
|
+
unreadable: [`${opt.root} (the baseline walk failed: ${e.message})`],
|
|
177
|
+
stop: null,
|
|
178
|
+
attached: false,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
let lastRevision = deps.revision();
|
|
182
|
+
let stop = null;
|
|
183
|
+
let coversTo = null;
|
|
184
|
+
for (;;) {
|
|
185
|
+
const at = deps.now();
|
|
186
|
+
/**
|
|
187
|
+
* ⚠️ ASKED BEFORE WALKING, NOT AFTER. A tick that walked first would keep
|
|
188
|
+
* recording for one whole tick after a person revoked the grant — small in
|
|
189
|
+
* seconds, and exactly the window in which somebody revoking in a hurry
|
|
190
|
+
* cares.
|
|
191
|
+
*/
|
|
192
|
+
let authorized;
|
|
193
|
+
try {
|
|
194
|
+
authorized = await deps.stillAuthorized();
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
/**
|
|
198
|
+
* 🔴 A SERVER THAT CANNOT BE ASKED IS NOT A GRANT THAT STILL HOLDS. The
|
|
199
|
+
* watch stops, and it stops as `revoked` rather than as some softer word,
|
|
200
|
+
* because continuing to observe on the strength of an unanswered question
|
|
201
|
+
* is observing without permission.
|
|
202
|
+
*/
|
|
203
|
+
unreadable.add('the server could not be asked whether the grant still holds');
|
|
204
|
+
authorized = false;
|
|
205
|
+
}
|
|
206
|
+
stop = (0, core_1.stopFor)(window, { stillAuthorized: authorized, liveness: deps.liveness(), recorded: events.length, askedToStop: deps.askedToStop() }, at);
|
|
207
|
+
if (stop !== null) {
|
|
208
|
+
coversTo = at;
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
let walked;
|
|
212
|
+
try {
|
|
213
|
+
walked = snapshot(opt.root, window.scope, opt);
|
|
214
|
+
}
|
|
215
|
+
catch (e) {
|
|
216
|
+
unreadable.add(`a walk of ${opt.root} threw (${e.message})`);
|
|
217
|
+
await deps.sleep(opt.tickMs);
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
for (const u of walked.unreadable)
|
|
221
|
+
unreadable.add(u);
|
|
222
|
+
const candidates = diffSnapshots(previous, walked.files, at);
|
|
223
|
+
previous = walked.files;
|
|
224
|
+
const revisionNow = deps.revision();
|
|
225
|
+
if (revisionNow !== null && revisionNow !== lastRevision) {
|
|
226
|
+
candidates.push({ at, kind: 'revision', path: '.', detail: `${lastRevision ?? 'unknown'} -> ${revisionNow}` });
|
|
227
|
+
lastRevision = revisionNow;
|
|
228
|
+
}
|
|
229
|
+
if (deps.liveness() === 'gone') {
|
|
230
|
+
candidates.push({ at, kind: 'exited', detail: `session ${window.sessionId} is gone` });
|
|
231
|
+
}
|
|
232
|
+
for (const candidate of candidates) {
|
|
233
|
+
/**
|
|
234
|
+
* 🔴 EVERY CANDIDATE GOES THROUGH THE FOLD. The runtime does not decide
|
|
235
|
+
* what belongs; it produces facts and the fold rules on them, which is
|
|
236
|
+
* why the rules are testable without a filesystem and why this loop
|
|
237
|
+
* cannot quietly acquire an exception.
|
|
238
|
+
*/
|
|
239
|
+
const ruling = (0, core_1.ruleOnEvent)(window, candidate);
|
|
240
|
+
switch (ruling.kind) {
|
|
241
|
+
case 'record':
|
|
242
|
+
if (events.length < window.cap)
|
|
243
|
+
events.push(candidate);
|
|
244
|
+
break;
|
|
245
|
+
case 'predates':
|
|
246
|
+
predates += 1;
|
|
247
|
+
break;
|
|
248
|
+
case 'out-of-scope':
|
|
249
|
+
outOfScope += 1;
|
|
250
|
+
break;
|
|
251
|
+
case 'unjudgeable':
|
|
252
|
+
unjudgeable += 1;
|
|
253
|
+
break;
|
|
254
|
+
case 'after-the-end':
|
|
255
|
+
/**
|
|
256
|
+
* ⚠️ UNREACHABLE FROM THIS LOOP, AND SAID SO RATHER THAN DRESSED UP.
|
|
257
|
+
* Every candidate here carries the same `at` that `stopFor` was just
|
|
258
|
+
* asked about, so a tick past the expiry has already broken out
|
|
259
|
+
* above. The branch exists because the fold is shared and another
|
|
260
|
+
* caller may feed it events it did not stamp itself — and because a
|
|
261
|
+
* switch that silently fell through would be the place a real one
|
|
262
|
+
* hid later.
|
|
263
|
+
*/
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* 🔴 ASKED AGAIN, WITH THE NEW COUNT, BEFORE SLEEPING. A watch that filled
|
|
269
|
+
* up mid-tick and then slept would go on discarding events for a full tick
|
|
270
|
+
* while `events.length < cap` silently refused them — the "dropping events
|
|
271
|
+
* quietly" the cap exists to prevent, one layer down. Re-asking the FOLD
|
|
272
|
+
* rather than constructing a `full` stop here keeps the decision in one
|
|
273
|
+
* place.
|
|
274
|
+
*/
|
|
275
|
+
stop = (0, core_1.stopFor)(window, { stillAuthorized: authorized, liveness: deps.liveness(), recorded: events.length, askedToStop: deps.askedToStop() }, at);
|
|
276
|
+
if (stop !== null) {
|
|
277
|
+
coversTo = at;
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
await deps.sleep(opt.tickMs);
|
|
281
|
+
}
|
|
282
|
+
return {
|
|
283
|
+
sessionId: window.sessionId,
|
|
284
|
+
coversFrom: window.coversFrom,
|
|
285
|
+
coversTo,
|
|
286
|
+
events,
|
|
287
|
+
predates,
|
|
288
|
+
outOfScope,
|
|
289
|
+
unjudgeable,
|
|
290
|
+
unreadable: [...unreadable],
|
|
291
|
+
stop,
|
|
292
|
+
attached: true,
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* The lines a person reads after a watch.
|
|
297
|
+
*
|
|
298
|
+
* ⚠️ THE COMPLETENESS IS ON ITS OWN LINE, ALWAYS, even when it is `complete`.
|
|
299
|
+
* A reader who has to infer from the absence of a warning that a record is
|
|
300
|
+
* whole is a reader who will one day infer it from the absence of a bug.
|
|
301
|
+
*/
|
|
302
|
+
function reportObservation(record, out) {
|
|
303
|
+
const c = (0, core_1.observationCompleteness)(record);
|
|
304
|
+
out(`watch: ${record.sessionId} — ${record.events.length} event(s) recorded`);
|
|
305
|
+
out(` covers ${record.coversFrom} .. ${record.coversTo ?? '(never closed)'}`);
|
|
306
|
+
out(` ${c.kind}: ${c.because}`);
|
|
307
|
+
if (record.predates > 0) {
|
|
308
|
+
out(` ${record.predates} event(s) predate the watch — NOT certified by it`);
|
|
309
|
+
}
|
|
310
|
+
if (record.outOfScope > 0)
|
|
311
|
+
out(` ${record.outOfScope} outside the granted scope, not recorded`);
|
|
312
|
+
if (record.unjudgeable > 0)
|
|
313
|
+
out(` ${record.unjudgeable} could not be placed against the scope`);
|
|
314
|
+
for (const u of record.unreadable)
|
|
315
|
+
out(` blind: ${u}`);
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=session-observe-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-observe-runtime.js","sourceRoot":"","sources":["../src/session-observe-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { SessionAdoptionVerdict, SessionClaim } from '@looply/core';
|
|
2
|
+
import type { LedgerFs } from './ledger-store';
|
|
3
|
+
import { AppendOnlyStore } from './record-store';
|
|
4
|
+
/**
|
|
5
|
+
* THE SESSION HANDSHAKE RECORDS — `.looply/state/sessions.jsonl`.
|
|
6
|
+
*
|
|
7
|
+
* 🔴 FOUR KINDS OF WRITE-ONCE LINE, because every one of them is a thing that
|
|
8
|
+
* HAPPENED and not a field to be updated. The same reasoning as
|
|
9
|
+
* `compatible-sets.ts`: a store whose records supersede each other can say what
|
|
10
|
+
* is currently believed but not what occurred, and for adoption what occurred
|
|
11
|
+
* is the entire evidentiary record — *when* a person authorized control, *when*
|
|
12
|
+
* the session acknowledged, *what* was measured at the moment of each decision.
|
|
13
|
+
*
|
|
14
|
+
* offered a session presented a claim through the adapter. One per
|
|
15
|
+
* handshake, because a session may present again after fixing
|
|
16
|
+
* whatever got it refused.
|
|
17
|
+
* decided what looply answered that handshake. One per handshake.
|
|
18
|
+
* authorized a PERSON authorized control of this session. One per session.
|
|
19
|
+
* 🔴 NO LOCAL COMMAND WRITES THIS, and that is deliberate.
|
|
20
|
+
* `approval-architecture.spec.ts` holds the rule: the server is
|
|
21
|
+
* the authority, and a file this machine could write saying
|
|
22
|
+
* somebody approved would be a second answer nobody gave. The
|
|
23
|
+
* kind exists because it is the shape a server-issued grant will
|
|
24
|
+
* take; until that path exists, a session tops out at
|
|
25
|
+
* observe-only.
|
|
26
|
+
* acked the SESSION acknowledged the control handshake. One per session.
|
|
27
|
+
*
|
|
28
|
+
* ⚠️ THE LAST TWO ARE SEPARATE LINES ON PURPOSE. Control needs both halves and
|
|
29
|
+
* they arrive from different parties at different moments; collapsing them into
|
|
30
|
+
* one "controlled: true" would destroy the only evidence that the session
|
|
31
|
+
* cooperated rather than was seized.
|
|
32
|
+
*/
|
|
33
|
+
export type SessionRecord = {
|
|
34
|
+
readonly id: string;
|
|
35
|
+
readonly kind: 'offered';
|
|
36
|
+
readonly sessionId: string;
|
|
37
|
+
readonly at: string;
|
|
38
|
+
readonly claim: SessionClaim;
|
|
39
|
+
} | {
|
|
40
|
+
readonly id: string;
|
|
41
|
+
readonly kind: 'decided';
|
|
42
|
+
readonly sessionId: string;
|
|
43
|
+
readonly at: string;
|
|
44
|
+
readonly handshakeId: string;
|
|
45
|
+
readonly verdict: SessionAdoptionVerdict;
|
|
46
|
+
} | {
|
|
47
|
+
readonly id: string;
|
|
48
|
+
readonly kind: 'authorized';
|
|
49
|
+
readonly sessionId: string;
|
|
50
|
+
readonly at: string;
|
|
51
|
+
readonly by: string;
|
|
52
|
+
} | {
|
|
53
|
+
readonly id: string;
|
|
54
|
+
readonly kind: 'acked';
|
|
55
|
+
readonly sessionId: string;
|
|
56
|
+
readonly at: string;
|
|
57
|
+
};
|
|
58
|
+
export declare const decidedId: (handshakeId: string) => string;
|
|
59
|
+
export declare const authorizedId: (sessionId: string) => string;
|
|
60
|
+
export declare const ackedId: (sessionId: string) => string;
|
|
61
|
+
export declare class SessionStore extends AppendOnlyStore<SessionRecord> {
|
|
62
|
+
constructor(stateDir: string, fs: LedgerFs);
|
|
63
|
+
}
|
|
64
|
+
export declare function isSessionRecord(v: unknown): v is SessionRecord;
|
|
65
|
+
/** What is true about one session, folded out of its lines. */
|
|
66
|
+
export interface SessionStanding {
|
|
67
|
+
readonly sessionId: string;
|
|
68
|
+
/** The most recent decision, or null if it has only ever offered. */
|
|
69
|
+
readonly verdict: SessionAdoptionVerdict | null;
|
|
70
|
+
readonly decidedAt: string | null;
|
|
71
|
+
readonly authorized: boolean;
|
|
72
|
+
readonly acked: boolean;
|
|
73
|
+
readonly handshakes: number;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* ⚠️ THE LATEST DECISION WINS, AND THE EARLIER ONES STAY ON RECORD. A session
|
|
77
|
+
* refused at 10:00 for being on the wrong sha and observed at 10:05 after
|
|
78
|
+
* moving is one session with two handshakes, and the refusal is not erased by
|
|
79
|
+
* the acceptance — it is why anybody would trust the acceptance.
|
|
80
|
+
*/
|
|
81
|
+
export declare function standingOf(records: readonly SessionRecord[], sessionId: string): SessionStanding | null;
|
|
82
|
+
/**
|
|
83
|
+
* The most recent claim a session presented, or null if it never has.
|
|
84
|
+
*
|
|
85
|
+
* ⚠️ THE LATEST ONE, NOT THE FIRST. A session that re-presented after moving
|
|
86
|
+
* to a new revision has a newer scope and a newer workspace, and a watcher
|
|
87
|
+
* bounded by the FIRST claim would be bounded by paths that are no longer the
|
|
88
|
+
* ones the project agreed to.
|
|
89
|
+
*
|
|
90
|
+
* 🔴 AND IT IS STILL NOT EVIDENCE. A claim is what the session ASSERTS;
|
|
91
|
+
* `sessionAdoptionVerdict` is what compared it against the tree. This is only
|
|
92
|
+
* ever read for a session whose latest verdict already accepted it — which is
|
|
93
|
+
* why the scope here is a scope the project's own configuration allowed.
|
|
94
|
+
*/
|
|
95
|
+
export declare function latestClaimOf(records: readonly SessionRecord[], sessionId: string): SessionClaim | null;
|
|
96
|
+
/** Every session that has ever presented, newest handshake first. */
|
|
97
|
+
export declare function sessionsKnown(records: readonly SessionRecord[]): string[];
|
|
98
|
+
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,MAAM,aAAa,GACrB;IACE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B,GACD;IACE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;CAC1C,GACD;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC1H;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAErG,eAAO,MAAM,SAAS,GAAI,aAAa,MAAM,KAAG,MAAkC,CAAC;AACnF,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,KAAG,MAAmC,CAAC;AACrF,eAAO,MAAM,OAAO,GAAI,WAAW,MAAM,KAAG,MAA8B,CAAC;AAE3E,qBAAa,YAAa,SAAQ,eAAe,CAAC,aAAa,CAAC;gBAClD,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ;CAG3C;AAWD,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,aAAa,CAgB9D;AAED,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAmBvG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAWvG;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,EAAE,CAOzE"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SessionStore = exports.ackedId = exports.authorizedId = exports.decidedId = void 0;
|
|
4
|
+
exports.isSessionRecord = isSessionRecord;
|
|
5
|
+
exports.standingOf = standingOf;
|
|
6
|
+
exports.latestClaimOf = latestClaimOf;
|
|
7
|
+
exports.sessionsKnown = sessionsKnown;
|
|
8
|
+
const record_store_1 = require("./record-store");
|
|
9
|
+
const decidedId = (handshakeId) => `${handshakeId}:decided`;
|
|
10
|
+
exports.decidedId = decidedId;
|
|
11
|
+
const authorizedId = (sessionId) => `${sessionId}:authorized`;
|
|
12
|
+
exports.authorizedId = authorizedId;
|
|
13
|
+
const ackedId = (sessionId) => `${sessionId}:acked`;
|
|
14
|
+
exports.ackedId = ackedId;
|
|
15
|
+
class SessionStore extends record_store_1.AppendOnlyStore {
|
|
16
|
+
constructor(stateDir, fs) {
|
|
17
|
+
super(stateDir, 'sessions.jsonl', isSessionRecord, fs);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.SessionStore = SessionStore;
|
|
21
|
+
function isClaim(v) {
|
|
22
|
+
if (typeof v !== 'object' || v === null)
|
|
23
|
+
return false;
|
|
24
|
+
const o = v;
|
|
25
|
+
const strings = ['sessionId', 'adapter', 'adapterVersion', 'repo', 'workspace', 'host', 'sourceSha', 'budgetOwner'];
|
|
26
|
+
if (!strings.every((k) => typeof o[k] === 'string'))
|
|
27
|
+
return false;
|
|
28
|
+
if (typeof o['pid'] !== 'number' || !Number.isInteger(o['pid']))
|
|
29
|
+
return false;
|
|
30
|
+
return Array.isArray(o['scope']) && o['scope'].every((s) => typeof s === 'string');
|
|
31
|
+
}
|
|
32
|
+
function isSessionRecord(v) {
|
|
33
|
+
if (typeof v !== 'object' || v === null)
|
|
34
|
+
return false;
|
|
35
|
+
const o = v;
|
|
36
|
+
if (typeof o['id'] !== 'string' || typeof o['sessionId'] !== 'string' || typeof o['at'] !== 'string')
|
|
37
|
+
return false;
|
|
38
|
+
switch (o['kind']) {
|
|
39
|
+
case 'offered':
|
|
40
|
+
return isClaim(o['claim']);
|
|
41
|
+
case 'decided':
|
|
42
|
+
return typeof o['handshakeId'] === 'string' && typeof o['verdict'] === 'object' && o['verdict'] !== null;
|
|
43
|
+
case 'authorized':
|
|
44
|
+
return typeof o['by'] === 'string';
|
|
45
|
+
case 'acked':
|
|
46
|
+
return true;
|
|
47
|
+
default:
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* ⚠️ THE LATEST DECISION WINS, AND THE EARLIER ONES STAY ON RECORD. A session
|
|
53
|
+
* refused at 10:00 for being on the wrong sha and observed at 10:05 after
|
|
54
|
+
* moving is one session with two handshakes, and the refusal is not erased by
|
|
55
|
+
* the acceptance — it is why anybody would trust the acceptance.
|
|
56
|
+
*/
|
|
57
|
+
function standingOf(records, sessionId) {
|
|
58
|
+
const mine = records.filter((r) => r.sessionId === sessionId);
|
|
59
|
+
if (mine.length === 0)
|
|
60
|
+
return null;
|
|
61
|
+
let verdict = null;
|
|
62
|
+
let decidedAt = null;
|
|
63
|
+
let authorized = false;
|
|
64
|
+
let acked = false;
|
|
65
|
+
let handshakes = 0;
|
|
66
|
+
for (const r of mine) {
|
|
67
|
+
if (r.kind === 'offered')
|
|
68
|
+
handshakes += 1;
|
|
69
|
+
else if (r.kind === 'authorized')
|
|
70
|
+
authorized = true;
|
|
71
|
+
else if (r.kind === 'acked')
|
|
72
|
+
acked = true;
|
|
73
|
+
else if (r.kind === 'decided' && (decidedAt === null || r.at >= decidedAt)) {
|
|
74
|
+
verdict = r.verdict;
|
|
75
|
+
decidedAt = r.at;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return { sessionId, verdict, decidedAt, authorized, acked, handshakes };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The most recent claim a session presented, or null if it never has.
|
|
82
|
+
*
|
|
83
|
+
* ⚠️ THE LATEST ONE, NOT THE FIRST. A session that re-presented after moving
|
|
84
|
+
* to a new revision has a newer scope and a newer workspace, and a watcher
|
|
85
|
+
* bounded by the FIRST claim would be bounded by paths that are no longer the
|
|
86
|
+
* ones the project agreed to.
|
|
87
|
+
*
|
|
88
|
+
* 🔴 AND IT IS STILL NOT EVIDENCE. A claim is what the session ASSERTS;
|
|
89
|
+
* `sessionAdoptionVerdict` is what compared it against the tree. This is only
|
|
90
|
+
* ever read for a session whose latest verdict already accepted it — which is
|
|
91
|
+
* why the scope here is a scope the project's own configuration allowed.
|
|
92
|
+
*/
|
|
93
|
+
function latestClaimOf(records, sessionId) {
|
|
94
|
+
let claim = null;
|
|
95
|
+
let at = null;
|
|
96
|
+
for (const r of records) {
|
|
97
|
+
if (r.kind !== 'offered' || r.sessionId !== sessionId)
|
|
98
|
+
continue;
|
|
99
|
+
if (at === null || r.at >= at) {
|
|
100
|
+
claim = r.claim;
|
|
101
|
+
at = r.at;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return claim;
|
|
105
|
+
}
|
|
106
|
+
/** Every session that has ever presented, newest handshake first. */
|
|
107
|
+
function sessionsKnown(records) {
|
|
108
|
+
const seen = new Map();
|
|
109
|
+
for (const r of records) {
|
|
110
|
+
const prev = seen.get(r.sessionId);
|
|
111
|
+
if (prev === undefined || r.at > prev)
|
|
112
|
+
seen.set(r.sessionId, r.at);
|
|
113
|
+
}
|
|
114
|
+
return [...seen.entries()].sort((a, b) => (a[1] < b[1] ? 1 : a[1] > b[1] ? -1 : 0)).map(([id]) => id);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=session-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"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"}
|