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,766 @@
|
|
|
1
|
+
import type { RunDelivery } from './run-refusal-marks';
|
|
2
|
+
import type { Attestation, Classification, CoverageKind, Disposition, RequirementCoverage, Source, SourceKind, SourceStatement } from '@looply/core';
|
|
3
|
+
import type { AnyEvent, Goal, GoalAutonomyState, GoalState, MachineSettlableState } from '@looply/core';
|
|
4
|
+
import type { IngestAck } from './uploader';
|
|
5
|
+
/**
|
|
6
|
+
* The machine's client for the looply server.
|
|
7
|
+
*
|
|
8
|
+
* Every failure here must be survivable: the server going away is a degraded
|
|
9
|
+
* experience, never a stopped run. A run that dies because a relay is down is
|
|
10
|
+
* strictly worse than one that keeps working and reports late.
|
|
11
|
+
*/
|
|
12
|
+
export declare class ServerError extends Error {
|
|
13
|
+
readonly status: number;
|
|
14
|
+
readonly body?: unknown | undefined;
|
|
15
|
+
constructor(status: number, message: string, body?: unknown | undefined);
|
|
16
|
+
/** The token was revoked or expired. Retrying will not help. */
|
|
17
|
+
get isAuth(): boolean;
|
|
18
|
+
/** No response at all — offline, DNS, timeout. Worth retrying later. */
|
|
19
|
+
get isOffline(): boolean;
|
|
20
|
+
}
|
|
21
|
+
export type FetchLike = (url: string, init: {
|
|
22
|
+
method: string;
|
|
23
|
+
headers: Record<string, string>;
|
|
24
|
+
body?: string;
|
|
25
|
+
signal?: AbortSignal;
|
|
26
|
+
}) => Promise<{
|
|
27
|
+
status: number;
|
|
28
|
+
ok: boolean;
|
|
29
|
+
text(): Promise<string>;
|
|
30
|
+
}>;
|
|
31
|
+
export interface ServerClientOptions {
|
|
32
|
+
baseUrl: string;
|
|
33
|
+
token?: string;
|
|
34
|
+
fetch?: FetchLike;
|
|
35
|
+
timeoutMs?: number;
|
|
36
|
+
}
|
|
37
|
+
export declare class ServerClient {
|
|
38
|
+
private readonly opts;
|
|
39
|
+
private readonly baseUrl;
|
|
40
|
+
constructor(opts: ServerClientOptions);
|
|
41
|
+
withToken(token: string): ServerClient;
|
|
42
|
+
private request;
|
|
43
|
+
pairStart(machineName: string): Promise<{
|
|
44
|
+
pairCode: string;
|
|
45
|
+
qrPayload: string;
|
|
46
|
+
expiresAt: string;
|
|
47
|
+
machineId: string;
|
|
48
|
+
}>;
|
|
49
|
+
pairPoll(machineId: string): Promise<{
|
|
50
|
+
status: "pending" | "claimed";
|
|
51
|
+
machineToken?: string;
|
|
52
|
+
}>;
|
|
53
|
+
/**
|
|
54
|
+
* One heartbeat, and the cadence the SERVER wants back.
|
|
55
|
+
*
|
|
56
|
+
* 🔴 THIS TYPE USED TO SAY `{ ok: boolean; nextBeatS?: number }` AND BOTH
|
|
57
|
+
* FIELDS WERE INVENTED. The route returns `{ ttlS, refreshS }`, and
|
|
58
|
+
* `MachinesService` says why in its own words: "the cadence is server-owned,
|
|
59
|
+
* so tuning the TTL never requires shipping a new CLI."
|
|
60
|
+
*
|
|
61
|
+
* ⚠️ THAT PROPERTY DOES NOT CURRENTLY HOLD, AND THE WRONG TYPE IS WHY. The
|
|
62
|
+
* daemon paces itself on `DEFAULT_HEARTBEAT_MS = 15_000` (`daemon.ts`) and
|
|
63
|
+
* discards this response entirely — it could not have used `refreshS`,
|
|
64
|
+
* because the type it was handed did not name it. Correcting the type does not
|
|
65
|
+
* by itself wire the cadence up; it makes wiring it possible, and stops the
|
|
66
|
+
* next caller trusting two fields that never arrive.
|
|
67
|
+
*
|
|
68
|
+
* Found by `daemon-client-flagship.e2e.spec.ts` asking a real server, after
|
|
69
|
+
* two existing specs that inject a fake `fetch` had agreed with the client for
|
|
70
|
+
* as long as it had been wrong.
|
|
71
|
+
*/
|
|
72
|
+
heartbeat(machineId: string, cliVersion: string): Promise<{
|
|
73
|
+
ttlS: number;
|
|
74
|
+
refreshS: number;
|
|
75
|
+
}>;
|
|
76
|
+
registerProject(input: {
|
|
77
|
+
machineId: string;
|
|
78
|
+
name: string;
|
|
79
|
+
repoPathHash: string;
|
|
80
|
+
}): Promise<{
|
|
81
|
+
project: {
|
|
82
|
+
id: string;
|
|
83
|
+
};
|
|
84
|
+
created: boolean;
|
|
85
|
+
}>;
|
|
86
|
+
postEvents(projectId: string, events: readonly AnyEvent[]): Promise<IngestAck>;
|
|
87
|
+
/**
|
|
88
|
+
* The effective settings for a project, each tagged with where it came from.
|
|
89
|
+
* `from: 'default'` means nobody chose it — see settings-overlay.ts for why
|
|
90
|
+
* that distinction is the whole safety of this feature.
|
|
91
|
+
*/
|
|
92
|
+
projectSettings(projectId: string): Promise<{
|
|
93
|
+
settings: {
|
|
94
|
+
key: string;
|
|
95
|
+
value: unknown;
|
|
96
|
+
from: string;
|
|
97
|
+
}[];
|
|
98
|
+
}>;
|
|
99
|
+
/**
|
|
100
|
+
* The goals the server holds for a project.
|
|
101
|
+
*
|
|
102
|
+
* Read-only, and there is deliberately no create/amend counterpart here. The
|
|
103
|
+
* server is authoritative for goal intent — a person typed it on a phone that
|
|
104
|
+
* may be the only thing awake — so the machine mirrors it and never writes
|
|
105
|
+
* back. With no local writer there is no merge to get wrong.
|
|
106
|
+
*
|
|
107
|
+
* A machine token reaches this without holding a grant: the daemon is not a
|
|
108
|
+
* person, and project-access already lets a machine read its own projects.
|
|
109
|
+
*/
|
|
110
|
+
/**
|
|
111
|
+
* The exemptions a person has granted on this project, unexpired.
|
|
112
|
+
*
|
|
113
|
+
* 🔴 THE SOURCE HALF OF A LINK THAT DID NOT EXIST. `looply run` wired neither
|
|
114
|
+
* a source of grants nor a sink for spent ones, so no grant ever reached a
|
|
115
|
+
* gate from a run: the gate's validity check, the core model, the server's
|
|
116
|
+
* grant and list routes and the commit trailer line were all built and tested
|
|
117
|
+
* around a door nothing could open.
|
|
118
|
+
*
|
|
119
|
+
* ⚠️ NO NEW BACKEND SEMANTICS. This is the route the phone already reads, and
|
|
120
|
+
* a MACHINE principal is already permitted on it — `ProjectAccessService`
|
|
121
|
+
* admits `principal.kind === 'machine'` when the machine owns the project.
|
|
122
|
+
* Nothing server-side changed to make this possible.
|
|
123
|
+
*
|
|
124
|
+
* Project-scoped by construction, so a grant cannot cross into another
|
|
125
|
+
* project: the id in the path is the only project this answers for.
|
|
126
|
+
*/
|
|
127
|
+
projectExemptions(projectId: string): Promise<{
|
|
128
|
+
exemptions: ServerExemption[];
|
|
129
|
+
}>;
|
|
130
|
+
projectGoals(projectId: string): Promise<{
|
|
131
|
+
goals: Goal[];
|
|
132
|
+
}>;
|
|
133
|
+
/**
|
|
134
|
+
* Set a goal, from the machine that holds the repository.
|
|
135
|
+
*
|
|
136
|
+
* The same route the phone posts to, with the same validators — there is no
|
|
137
|
+
* second goal-creation path, and adding one would mean two answers to what a
|
|
138
|
+
* goal is allowed to be. The server derives `createdBy` from the token and
|
|
139
|
+
* records a machine as a machine; nothing here may claim to be a person.
|
|
140
|
+
*
|
|
141
|
+
* ⚠️ IDEMPOTENT ON `clientRef` WITHIN THE PROJECT, and the answer says which
|
|
142
|
+
* happened. A caller that retries after a timeout must read `deduplicated`
|
|
143
|
+
* rather than assume it made a second goal — the field exists because
|
|
144
|
+
* inferring it from a status code is how a client ends up believing it did.
|
|
145
|
+
*/
|
|
146
|
+
createGoal(projectId: string, input: {
|
|
147
|
+
clientRef: string;
|
|
148
|
+
text: string;
|
|
149
|
+
dependsOn?: readonly string[];
|
|
150
|
+
surfaces?: readonly string[];
|
|
151
|
+
requirements?: readonly {
|
|
152
|
+
sourceId: string;
|
|
153
|
+
ordinal: number;
|
|
154
|
+
}[];
|
|
155
|
+
}): Promise<{
|
|
156
|
+
goal: Goal;
|
|
157
|
+
deduplicated: boolean;
|
|
158
|
+
}>;
|
|
159
|
+
/**
|
|
160
|
+
* Hand a document to a project, from the machine that holds it.
|
|
161
|
+
*
|
|
162
|
+
* The server keys this on the content's sha256 AND on `clientRef`; the CLI
|
|
163
|
+
* derives the key from the sha, so the same file twice is the same request
|
|
164
|
+
* twice and the answer says `deduplicated`. Admitted for the project this
|
|
165
|
+
* machine drives, and refused for any other.
|
|
166
|
+
*/
|
|
167
|
+
createSource(projectId: string, input: {
|
|
168
|
+
clientRef: string;
|
|
169
|
+
name: string;
|
|
170
|
+
kind: SourceKind;
|
|
171
|
+
/** The document, for the text kinds. */
|
|
172
|
+
content?: string;
|
|
173
|
+
/** The text layer page by page, for a pdf — read here, on the machine that holds the file. */
|
|
174
|
+
pages?: {
|
|
175
|
+
page: number;
|
|
176
|
+
text: string;
|
|
177
|
+
}[];
|
|
178
|
+
/** For a pdf: the sha256 of the file the pages came from. */
|
|
179
|
+
originSha256?: string;
|
|
180
|
+
}): Promise<{
|
|
181
|
+
source: Source;
|
|
182
|
+
statements: SourceStatement[];
|
|
183
|
+
deduplicated: boolean;
|
|
184
|
+
}>;
|
|
185
|
+
/**
|
|
186
|
+
* What the items of one goal CLAIM to serve, and which gate step each claim
|
|
187
|
+
* says would prove it.
|
|
188
|
+
*
|
|
189
|
+
* ⚠️ CLAIMS, NOT COVERAGE. `requirementReceipts` decides what a receipt may
|
|
190
|
+
* speak for, here on the machine, because deciding it needs the gate record
|
|
191
|
+
* of the tree being judged and the server has never seen one.
|
|
192
|
+
*/
|
|
193
|
+
goalServings(projectId: string, goalId: string): Promise<{
|
|
194
|
+
servings: ServingRow[];
|
|
195
|
+
}>;
|
|
196
|
+
/** One source, verbatim, with its anchored statements, what each one IS, and where each requirement stands. */
|
|
197
|
+
sourceDetail(projectId: string, sourceId: string): Promise<{
|
|
198
|
+
source: Source;
|
|
199
|
+
statements: SourceStatement[];
|
|
200
|
+
classifications: Classification[];
|
|
201
|
+
classifierVersion: number | null;
|
|
202
|
+
dispositions: Disposition[];
|
|
203
|
+
reconciledAt: {
|
|
204
|
+
treeSha: string;
|
|
205
|
+
reconcilerVersion: number;
|
|
206
|
+
createdAt: string;
|
|
207
|
+
} | null;
|
|
208
|
+
/** What people attested. The daemon reads these; it can never write one (a machine token is refused). */
|
|
209
|
+
attestations: Attestation[];
|
|
210
|
+
}>;
|
|
211
|
+
/** What is covered and by whom, for one source — a read the machine may make about its own project. */
|
|
212
|
+
coverage(projectId: string, sourceId: string): Promise<{
|
|
213
|
+
sourceId: string;
|
|
214
|
+
name: string;
|
|
215
|
+
reconciledAt: {
|
|
216
|
+
treeSha: string;
|
|
217
|
+
reconcilerVersion: number;
|
|
218
|
+
createdAt: string;
|
|
219
|
+
} | null;
|
|
220
|
+
requirements: RequirementCoverage[];
|
|
221
|
+
tally: Record<CoverageKind, number>;
|
|
222
|
+
}>;
|
|
223
|
+
/**
|
|
224
|
+
* Record where each requirement stands against the repository, as measured
|
|
225
|
+
* HERE against this machine's project index at HEAD's tree. The server
|
|
226
|
+
* stores it verbatim, once per (tree, version); the same tree again answers
|
|
227
|
+
* the rows on record. Admitted for the project this machine drives.
|
|
228
|
+
*/
|
|
229
|
+
reconcileSource(projectId: string, sourceId: string, input: {
|
|
230
|
+
treeSha: string;
|
|
231
|
+
reconcilerVersion: number;
|
|
232
|
+
dispositions: Disposition[];
|
|
233
|
+
}): Promise<{
|
|
234
|
+
dispositions: Disposition[];
|
|
235
|
+
treeSha: string;
|
|
236
|
+
reconcilerVersion: number;
|
|
237
|
+
created: boolean;
|
|
238
|
+
}>;
|
|
239
|
+
/**
|
|
240
|
+
* Raise a structured question, and get the row back so the asker knows its id.
|
|
241
|
+
*
|
|
242
|
+
* 🔴 THE ROUTE EXISTED FROM THE START AND NOTHING EVER CALLED IT. `config.ts`
|
|
243
|
+
* has warned since M6-20 that `on_partial: ask` — the DEFAULT — could not ask,
|
|
244
|
+
* so a partial proof was discarded with a log line while the server held the
|
|
245
|
+
* whole mechanism: options, a default, a deadline, first-answer-wins under a
|
|
246
|
+
* Redis claim, and a sweep that defaults through the very path a person takes.
|
|
247
|
+
*
|
|
248
|
+
* ⚠️ MACHINE-ONLY AT THE SERVER, AND FOR THE REASON THE CONTROLLER GIVES: a
|
|
249
|
+
* question is a prompt a person is asked to authorise something, and being
|
|
250
|
+
* able to write to that inbox from outside the machine is the whole attack.
|
|
251
|
+
*/
|
|
252
|
+
askQuestion(input: {
|
|
253
|
+
projectId: string;
|
|
254
|
+
runId?: string;
|
|
255
|
+
kind: string;
|
|
256
|
+
text: string;
|
|
257
|
+
options: readonly string[];
|
|
258
|
+
default: string;
|
|
259
|
+
deadline: string;
|
|
260
|
+
}): Promise<ServerQuestion>;
|
|
261
|
+
/**
|
|
262
|
+
* One question of one project, answered or not.
|
|
263
|
+
*
|
|
264
|
+
* 🔴 `listOpen` DROPS AN ANSWERED QUESTION, so a loop watching that list saw
|
|
265
|
+
* its own question vanish and never learned which way it went. §6.C asks for
|
|
266
|
+
* an answer that *"can resume exact work"*, and exact work needs the answer
|
|
267
|
+
* rather than its absence.
|
|
268
|
+
*
|
|
269
|
+
* ⚠️ NOT `question()`, AND THE NAME IS NOT AN ACCIDENT. `client-reachability`
|
|
270
|
+
* decides “does a consumer exist” by searching for `.<name>(` across the CLI,
|
|
271
|
+
* which cannot see WHICH object is being called — and readline's asker has a
|
|
272
|
+
* `.question(` in two files. A client method called `question` would have read
|
|
273
|
+
* as called for ever, by nothing.
|
|
274
|
+
*/
|
|
275
|
+
questionById(projectId: string, questionId: string): Promise<{
|
|
276
|
+
question: ServerQuestion;
|
|
277
|
+
}>;
|
|
278
|
+
/** What a project has been given, newest first, without content. */
|
|
279
|
+
/**
|
|
280
|
+
* Every session-control grant this project has issued.
|
|
281
|
+
*
|
|
282
|
+
* 🔴 A READER, AND DELIBERATELY NO ISSUER. `session-grants.controller.ts`
|
|
283
|
+
* stamps `createdBy` from the TOKEN's principal and refuses a caller without a
|
|
284
|
+
* device token, so a machine that posted here would be recorded as the
|
|
285
|
+
* authorizer of its own authority. Issuing is a person's act; this reads the
|
|
286
|
+
* result of one.
|
|
287
|
+
*/
|
|
288
|
+
sessionGrants(projectId: string): Promise<{
|
|
289
|
+
grants: ServerSessionGrant[];
|
|
290
|
+
}>;
|
|
291
|
+
/**
|
|
292
|
+
* Record that a session acknowledged a grant, and through which channel.
|
|
293
|
+
*
|
|
294
|
+
* ⚠️ THE CHANNEL IS CLAIMED, NOT PROVED, WHICH IS WHY IT IS RECORDED RATHER
|
|
295
|
+
* THAN TRUSTED. A session's adapter and a person's terminal hold the same
|
|
296
|
+
* device token — a token says which DEVICE spoke, never which program.
|
|
297
|
+
* `controlVerdict` in core then refuses anything that is not `adapter`, which
|
|
298
|
+
* turns a person's attempt into a fact on the record instead of an inference
|
|
299
|
+
* nobody can check.
|
|
300
|
+
*/
|
|
301
|
+
acknowledgeSessionGrant(projectId: string, grantId: string, ack: {
|
|
302
|
+
handshakeNonce: string;
|
|
303
|
+
sessionId: string;
|
|
304
|
+
workspace: string;
|
|
305
|
+
repositoryId: string;
|
|
306
|
+
scope: readonly string[];
|
|
307
|
+
via: 'adapter' | 'operator';
|
|
308
|
+
}): Promise<{
|
|
309
|
+
grant: ServerSessionGrant;
|
|
310
|
+
}>;
|
|
311
|
+
/**
|
|
312
|
+
* Write the effect of an approved `goal.depends`, as the machine carrying it out.
|
|
313
|
+
*
|
|
314
|
+
* 🔴 THIS REPLACES A METHOD THAT COULD NEVER WORK FROM HERE. It sent
|
|
315
|
+
* `PATCH /goals/:goalId` — a PERSON's route — with this client's MACHINE
|
|
316
|
+
* token, and the server refused it every time (403, measured 2026-09-24).
|
|
317
|
+
* This client is only ever a machine's, so a method on it that needs a
|
|
318
|
+
* device token is a method with no caller that can succeed. The governed
|
|
319
|
+
* route admits the machine only for an execution it began, still
|
|
320
|
+
* executing, whose server-held action is exactly this edge; the body is
|
|
321
|
+
* checked against that action, never trusted.
|
|
322
|
+
*/
|
|
323
|
+
applyGovernedGoalEdge(projectId: string, executionId: string, edge: {
|
|
324
|
+
goalId: string;
|
|
325
|
+
version: number;
|
|
326
|
+
dependsOn: readonly string[];
|
|
327
|
+
}): Promise<{
|
|
328
|
+
goal: Goal;
|
|
329
|
+
}>;
|
|
330
|
+
sources(projectId: string): Promise<{
|
|
331
|
+
sources: Omit<Source, "content">[];
|
|
332
|
+
}>;
|
|
333
|
+
/**
|
|
334
|
+
* What the server believes about a goal's pursuits, newest first.
|
|
335
|
+
*
|
|
336
|
+
* RECONCILIATION. This machine holds grants in its own store, and the server
|
|
337
|
+
* can end one without telling it: a person taps Stop, or the goal is edited
|
|
338
|
+
* and the grant is superseded. Without a way to read back, a machine would go
|
|
339
|
+
* on spending Starts against a permission that had been withdrawn -- and the
|
|
340
|
+
* person who withdrew it would watch it keep working.
|
|
341
|
+
*
|
|
342
|
+
* A machine token reaches this without holding a grant, the same way it reads
|
|
343
|
+
* the goal mirror: project-access lets a machine read its own project. That
|
|
344
|
+
* one route serves the phone and the daemon, which is why it had to declare a
|
|
345
|
+
* read policy -- guarded and declaring none, it was Forbidden to both.
|
|
346
|
+
*/
|
|
347
|
+
goalAutonomy(projectId: string, goalId: string): Promise<{
|
|
348
|
+
autonomy: ServerAutonomy[];
|
|
349
|
+
/** The goal as it stands NOW. Null when the server has no such goal. */
|
|
350
|
+
goal: {
|
|
351
|
+
version: number;
|
|
352
|
+
state: GoalState;
|
|
353
|
+
} | null;
|
|
354
|
+
}>;
|
|
355
|
+
/**
|
|
356
|
+
* Say where a pursuit came to rest.
|
|
357
|
+
*
|
|
358
|
+
* The server knows it authorized one; only this machine knows whether the
|
|
359
|
+
* goal was met, whether a person is needed, or whether the budget ran out.
|
|
360
|
+
*
|
|
361
|
+
* BY CONTROLLER ID, not by goal and version. Since re-authorization began
|
|
362
|
+
* minting generations, C1 and C2 can both be G@8 — and a stale report from a
|
|
363
|
+
* dead generation addressed by goal would land on the grant a person had just
|
|
364
|
+
* created, ending their fresh night with a conclusion about a different one.
|
|
365
|
+
*
|
|
366
|
+
* `version` is the OCC token from the read above and is not optional: a
|
|
367
|
+
* person may have stopped the pursuit while this machine was deciding, and a
|
|
368
|
+
* report that lost that race must be told rather than allowed to rewrite
|
|
369
|
+
* their ending as "the machine finished".
|
|
370
|
+
*
|
|
371
|
+
* The state is narrowed to what a machine can PROVE about itself.
|
|
372
|
+
* `cancelled` is not in that set: it means a person stopped this, and the
|
|
373
|
+
* machine does not get to say so.
|
|
374
|
+
*/
|
|
375
|
+
settleGoalAutonomy(projectId: string, controllerId: string,
|
|
376
|
+
/** `delivery` (L4b): what key 2 confirmed, on a `satisfied` settle only. */
|
|
377
|
+
input: {
|
|
378
|
+
version: number;
|
|
379
|
+
state: MachineSettlableState;
|
|
380
|
+
reason?: string;
|
|
381
|
+
delivery?: RunDelivery;
|
|
382
|
+
}): Promise<{
|
|
383
|
+
autonomy: ServerAutonomy;
|
|
384
|
+
}>;
|
|
385
|
+
/**
|
|
386
|
+
* Ask for an exact action to be approved, and never twice.
|
|
387
|
+
*
|
|
388
|
+
* IDEMPOTENT ON `clientRef`, which is what makes this callable from a machine
|
|
389
|
+
* that cannot tell a lost response from a lost request. The server answers
|
|
390
|
+
* the same row for the same key and says, in `deduplicated`, which of the two
|
|
391
|
+
* happened — so a retry after a timeout recovers the approval that already
|
|
392
|
+
* exists instead of raising a second one nobody asked for.
|
|
393
|
+
*
|
|
394
|
+
* `context` says which pursuit is asking. The machine names it from its own
|
|
395
|
+
* trusted run context and the server checks every part against the database;
|
|
396
|
+
* nothing here is taken on trust, which is why this method does not validate
|
|
397
|
+
* it either. Composing the URL and parsing the reply is the whole job.
|
|
398
|
+
*
|
|
399
|
+
* There is deliberately no counterpart that decides one. A machine that could
|
|
400
|
+
* answer its own request is a machine nobody is supervising.
|
|
401
|
+
*/
|
|
402
|
+
createApproval(projectId: string, input: {
|
|
403
|
+
clientRef: string;
|
|
404
|
+
actionRequest: unknown;
|
|
405
|
+
context?: {
|
|
406
|
+
goalId: string;
|
|
407
|
+
goalVersion: number;
|
|
408
|
+
originRunId?: string;
|
|
409
|
+
originItemId?: string;
|
|
410
|
+
};
|
|
411
|
+
validForMs?: number;
|
|
412
|
+
}): Promise<{
|
|
413
|
+
approval: ServerApproval;
|
|
414
|
+
deduplicated: boolean;
|
|
415
|
+
}>;
|
|
416
|
+
/**
|
|
417
|
+
* What the server says about a pursuit's approvals, right now.
|
|
418
|
+
*
|
|
419
|
+
* READ AT DECISION TIME, NEVER KEPT. This is the opposite of `ServerApproval`
|
|
420
|
+
* above and the reason the two types exist: that one is identity, checked
|
|
421
|
+
* once at creation and true for ever; this one is state, true only at the
|
|
422
|
+
* instant it was read. Between one tick and the next a person may approve,
|
|
423
|
+
* deny or revoke, so an answer to this question is worth exactly one
|
|
424
|
+
* decision and is never a fact to store.
|
|
425
|
+
*
|
|
426
|
+
* NARROWED TO ONE PURSUIT AND ONE VERSION, because that is the only question
|
|
427
|
+
* a controller has. An approval raised for version 4 was approved for wording
|
|
428
|
+
* that no longer exists; it cannot be claimed and must not hold version 5.
|
|
429
|
+
*
|
|
430
|
+
* `state` here is what the row SAYS, not necessarily what it means: the
|
|
431
|
+
* server settles expiry when a single approval is read and this route does
|
|
432
|
+
* not, so a window that closed an hour ago still comes back `requested`.
|
|
433
|
+
* `deriveApprovalGate` applies the clock. Do not read `state` directly.
|
|
434
|
+
*/
|
|
435
|
+
projectApprovals(projectId: string, goal: {
|
|
436
|
+
goalId: string;
|
|
437
|
+
goalVersion: number;
|
|
438
|
+
}, limit?: number): Promise<ServerApprovalRow[]>;
|
|
439
|
+
/**
|
|
440
|
+
* One approval, as the server holds it now.
|
|
441
|
+
*
|
|
442
|
+
* ASKED ONCE, WHEN A RUN IS RESUMING, and never in a loop. Unlike the list
|
|
443
|
+
* above, reading a single approval SETTLES it: the server closes a window
|
|
444
|
+
* that has passed before answering, so a person is never shown authority that
|
|
445
|
+
* has run out. That is exactly what a resuming run wants and exactly what a
|
|
446
|
+
* polling caller must not do.
|
|
447
|
+
*/
|
|
448
|
+
projectApproval(projectId: string, approvalId: string): Promise<ServerApprovalRow>;
|
|
449
|
+
/**
|
|
450
|
+
* TRANSPORT FOR THE GOVERNED PATH, AND ONLY TRANSPORT.
|
|
451
|
+
*
|
|
452
|
+
* Until 7B5 this file was asserted to contain no claim vocabulary at all, and
|
|
453
|
+
* that assertion was right for a phase where nothing could carry an action
|
|
454
|
+
* out. What it was really protecting is that a HOLD, a RESUME or a GATE never
|
|
455
|
+
* goes near a claim — and those files still do not. The guard is re-aimed
|
|
456
|
+
* rather than dropped, and the list it now covers is the one that matters:
|
|
457
|
+
* `run-approval`, `round-runner`, `pending-action`, `run-cmd` and every file
|
|
458
|
+
* on the autonomy path stay claim-free, and the vocabulary lives here and in
|
|
459
|
+
* the two purpose-built governed modules.
|
|
460
|
+
*
|
|
461
|
+
* Nothing below decides anything. Each one composes a URL and parses a reply;
|
|
462
|
+
* every predicate about whether the thing may happen is the server's.
|
|
463
|
+
*/
|
|
464
|
+
/**
|
|
465
|
+
* Take the execution authority an owner granted.
|
|
466
|
+
*
|
|
467
|
+
* `claimRef` is derived from the durable Start reservation, never chosen here
|
|
468
|
+
* and never derived from a run — a recovering process must be able to present
|
|
469
|
+
* the identical key and reach the server's idempotent arm.
|
|
470
|
+
*/
|
|
471
|
+
claimApproval(projectId: string, approvalId: string, input: {
|
|
472
|
+
claimRef: string;
|
|
473
|
+
expectedFingerprint: string;
|
|
474
|
+
expectedVersion: number;
|
|
475
|
+
}): Promise<ServerApprovalRow & {
|
|
476
|
+
claimId: string | null;
|
|
477
|
+
version: number;
|
|
478
|
+
}>;
|
|
479
|
+
/**
|
|
480
|
+
* Turn a claim into the one execution it authorises, and be told what to do.
|
|
481
|
+
*
|
|
482
|
+
* The reply is the SERVER's envelope. The action inside it is the stored,
|
|
483
|
+
* re-verified one — this machine sends a digest saying what it believes it is
|
|
484
|
+
* executing and never an action of its own.
|
|
485
|
+
*/
|
|
486
|
+
beginExecution(projectId: string, approvalId: string, input: {
|
|
487
|
+
claimId: string;
|
|
488
|
+
expectedFingerprint: string;
|
|
489
|
+
}): Promise<ServerExecutionEnvelope>;
|
|
490
|
+
/** What came of the attempt. Recorded once, against this exact execution. */
|
|
491
|
+
settleExecution(projectId: string, executionId: string, input: {
|
|
492
|
+
claimId: string;
|
|
493
|
+
expectedVersion: number;
|
|
494
|
+
expectedFingerprint: string;
|
|
495
|
+
outcome: 'success' | 'failure' | 'ambiguous';
|
|
496
|
+
reason?: string;
|
|
497
|
+
evidence?: Record<string, string | number | boolean>;
|
|
498
|
+
}): Promise<ServerExecution>;
|
|
499
|
+
/** Take ownership of delivering a settled result. Exactly one run may. */
|
|
500
|
+
assignExecutionResult(projectId: string, executionId: string, runId: string): Promise<ServerExecution>;
|
|
501
|
+
/** Say the result was received. Only the owning run may, and only once. */
|
|
502
|
+
acknowledgeExecutionResult(projectId: string, executionId: string, runId: string): Promise<ServerExecution>;
|
|
503
|
+
popCommands(machineId: string): Promise<{
|
|
504
|
+
commands: ServerCommand[];
|
|
505
|
+
}>;
|
|
506
|
+
/**
|
|
507
|
+
* Report a command finished. `refused` is as final as `done`: it tells the
|
|
508
|
+
* server this build will never carry the verb out, so it stops being handed
|
|
509
|
+
* back on every poll.
|
|
510
|
+
*/
|
|
511
|
+
ackCommand(commandId: string, outcome?: 'done' | 'refused', reason?: string): Promise<{
|
|
512
|
+
id: string;
|
|
513
|
+
alreadyAcked: boolean;
|
|
514
|
+
}>;
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* An approval as the server reports it back, narrowed to what a machine may act on.
|
|
518
|
+
*
|
|
519
|
+
* FIVE FIELDS AND NO DECISION. The server's own view of an approval carries a
|
|
520
|
+
* dozen more — the state, the version, who decided it, when the window closes —
|
|
521
|
+
* and every one of them is a fact that is only true at the instant it was read.
|
|
522
|
+
* A machine that held them would be a machine that could believe an approval
|
|
523
|
+
* was still granted after somebody revoked it.
|
|
524
|
+
*
|
|
525
|
+
* What is here is the opposite: identity, and the context the row was filed
|
|
526
|
+
* under. None of it changes for the life of the row, so a machine comparing
|
|
527
|
+
* these against what it asked for is asking a question that has one answer for
|
|
528
|
+
* ever — did the server store MY request, or somebody else's?
|
|
529
|
+
*/
|
|
530
|
+
/**
|
|
531
|
+
* A granted exemption exactly as the server sends it.
|
|
532
|
+
*
|
|
533
|
+
* ⚠️ NOT the core `Exemption`. The server records a DECISION — granted or
|
|
534
|
+
* refused, by whom, until when — and has no `usedInRound`, because a grant is
|
|
535
|
+
* spent on commit and the commit trailer is the durable record of that. The
|
|
536
|
+
* mapping into the core model is `run-cmd`'s job, and it is where `usedInRound`
|
|
537
|
+
* is filled from this machine's own spend store.
|
|
538
|
+
*/
|
|
539
|
+
/**
|
|
540
|
+
* A grant as the server holds it.
|
|
541
|
+
*
|
|
542
|
+
* ⚠️ THE SAME SHAPE AS `SessionControlGrant` IN CORE, MINUS `machineId`,
|
|
543
|
+
* which the server does not carry: a grant is about a SESSION in a PROJECT, and
|
|
544
|
+
* which machine asks about it is the asker's question. `controlVerdict` compares
|
|
545
|
+
* `asking.machineId` against the grant's, so the transport supplies its own —
|
|
546
|
+
* and supplying it there rather than reading it from the wire is the point: a
|
|
547
|
+
* machine cannot be told by a server which machine it is.
|
|
548
|
+
*/
|
|
549
|
+
/**
|
|
550
|
+
* A question as the server holds it.
|
|
551
|
+
*
|
|
552
|
+
* ⚠️ `deadline` AND `answeredAt` ARE STRINGS HERE. They are `Date` columns and
|
|
553
|
+
* the route serialises them; typing them as `Date` would be the class of defect
|
|
554
|
+
* the three flagship specs exist to catch — a declared shape no real response
|
|
555
|
+
* ever had.
|
|
556
|
+
*/
|
|
557
|
+
/**
|
|
558
|
+
* One claim as the server sends it: FLAT, one row per requirement, carrying
|
|
559
|
+
* the item that made it.
|
|
560
|
+
*
|
|
561
|
+
* 🔴 DELIBERATELY NOT `ItemServing` FROM CORE, which groups a whole item's
|
|
562
|
+
* claims. The two shapes are different on purpose — the wire says what was
|
|
563
|
+
* stored, row by row, and the fold takes them grouped — and sharing one name
|
|
564
|
+
* for both would make a regrouping bug look like a type that already agreed.
|
|
565
|
+
*/
|
|
566
|
+
export interface ServingRow {
|
|
567
|
+
itemId: string;
|
|
568
|
+
sourceId: string;
|
|
569
|
+
ordinal: number;
|
|
570
|
+
row?: number;
|
|
571
|
+
/** A gate step name, from the machine's own `config.gates`. */
|
|
572
|
+
provenBy: string;
|
|
573
|
+
}
|
|
574
|
+
export interface ServerQuestion {
|
|
575
|
+
readonly id: string;
|
|
576
|
+
readonly projectId: string;
|
|
577
|
+
readonly runId: string | null;
|
|
578
|
+
readonly kind: string;
|
|
579
|
+
readonly text: string;
|
|
580
|
+
readonly options: readonly string[];
|
|
581
|
+
readonly default: string;
|
|
582
|
+
readonly deadline: string;
|
|
583
|
+
readonly answer: string | null;
|
|
584
|
+
readonly answeredBy: string | null;
|
|
585
|
+
readonly answeredAt: string | null;
|
|
586
|
+
}
|
|
587
|
+
export interface ServerSessionGrant {
|
|
588
|
+
id: string;
|
|
589
|
+
issuedBy: string;
|
|
590
|
+
projectId: string;
|
|
591
|
+
sessionId: string;
|
|
592
|
+
repositoryId: string;
|
|
593
|
+
workspace: string;
|
|
594
|
+
scope: string[];
|
|
595
|
+
handshakeNonce: string;
|
|
596
|
+
issuedAt: string;
|
|
597
|
+
expiresAt: string;
|
|
598
|
+
state: 'authorized' | 'revoked' | 'expired';
|
|
599
|
+
generation: number;
|
|
600
|
+
/** The optimistic-concurrency token; see core's note on why it is on the view. */
|
|
601
|
+
version: number;
|
|
602
|
+
}
|
|
603
|
+
export interface ServerExemption {
|
|
604
|
+
id: string;
|
|
605
|
+
projectId: string;
|
|
606
|
+
itemId: string;
|
|
607
|
+
path: string;
|
|
608
|
+
decision: string;
|
|
609
|
+
actor: string;
|
|
610
|
+
reason: string | null;
|
|
611
|
+
/** ISO. `listGranted` already excludes a null or past expiry. */
|
|
612
|
+
expiresAt: string | null;
|
|
613
|
+
at: string;
|
|
614
|
+
}
|
|
615
|
+
export interface ServerApproval {
|
|
616
|
+
id: string;
|
|
617
|
+
projectId: string;
|
|
618
|
+
actionFingerprint: string;
|
|
619
|
+
goalId: string | null;
|
|
620
|
+
goalVersion: number | null;
|
|
621
|
+
originRunId: string | null;
|
|
622
|
+
originItemId: string | null;
|
|
623
|
+
}
|
|
624
|
+
/**
|
|
625
|
+
* An approval as the server reports it in a LIST, for one decision.
|
|
626
|
+
*
|
|
627
|
+
* Distinct from `ServerApproval` on purpose, and the split is the point.
|
|
628
|
+
* `ServerApproval` is identity — did the server store MY request — and every
|
|
629
|
+
* field on it is immutable, so comparing it is a question with one answer for
|
|
630
|
+
* ever. This is the opposite: it carries what a person has DONE, which is true
|
|
631
|
+
* only at the instant it was read, and it exists to be consumed by one
|
|
632
|
+
* decision and then dropped.
|
|
633
|
+
*
|
|
634
|
+
* `state` is a plain string rather than the union, because the server may know
|
|
635
|
+
* a word this build does not — and `deriveApprovalGate` refuses an unfamiliar
|
|
636
|
+
* one rather than a parser silently widening it.
|
|
637
|
+
*/
|
|
638
|
+
export interface ServerApprovalRow {
|
|
639
|
+
id: string;
|
|
640
|
+
projectId: string;
|
|
641
|
+
state: string;
|
|
642
|
+
/** ISO. When the window closes, as the SERVER stamped it. */
|
|
643
|
+
expiresAt: string;
|
|
644
|
+
goalId: string | null;
|
|
645
|
+
goalVersion: number | null;
|
|
646
|
+
originRunId: string | null;
|
|
647
|
+
actionType: string;
|
|
648
|
+
actionFingerprint: string;
|
|
649
|
+
/**
|
|
650
|
+
* One line a person could be shown, from 7B1's own formatter.
|
|
651
|
+
*
|
|
652
|
+
* The ONE description authority. A resumed run tells its model what was
|
|
653
|
+
* refused using this string and never a second wording of its own, so what
|
|
654
|
+
* the model is told and what the person was shown cannot drift.
|
|
655
|
+
*/
|
|
656
|
+
display: string;
|
|
657
|
+
/** The owner's own words about their decision. Never authority. */
|
|
658
|
+
decisionNote: string | null;
|
|
659
|
+
/**
|
|
660
|
+
* The row's OCC token, required to claim it.
|
|
661
|
+
*
|
|
662
|
+
* On the LIST as well as the detail, because the gate reads the list and a
|
|
663
|
+
* governed Start has to claim what the gate found without a second round trip
|
|
664
|
+
* that could see a different row.
|
|
665
|
+
*/
|
|
666
|
+
version: number;
|
|
667
|
+
/** Set once execution authority has been taken. Never a result. */
|
|
668
|
+
claimId: string | null;
|
|
669
|
+
/**
|
|
670
|
+
* The one attempt made under this approval's claim, if any.
|
|
671
|
+
*
|
|
672
|
+
* Present on the list so the gate can tell `claimed with nothing attempted`
|
|
673
|
+
* from `carrying out` from `settled and undelivered` in one read. Narrow on
|
|
674
|
+
* purpose: no evidence, no reason, nothing a caller could branch on beyond
|
|
675
|
+
* what the gate needs.
|
|
676
|
+
*/
|
|
677
|
+
execution: {
|
|
678
|
+
state: string;
|
|
679
|
+
resultAssignedRunId: string | null;
|
|
680
|
+
acknowledged: boolean;
|
|
681
|
+
/**
|
|
682
|
+
* Whether a PERSON settled what the machine could not. Optional because an
|
|
683
|
+
* older server does not send it, and `executionOf` reads its absence as
|
|
684
|
+
* `false` — the safe direction, since reading silence as `true` would free
|
|
685
|
+
* a pursuit nobody has dealt with.
|
|
686
|
+
*/
|
|
687
|
+
resolved?: boolean;
|
|
688
|
+
} | null;
|
|
689
|
+
}
|
|
690
|
+
/**
|
|
691
|
+
* WHAT THE SERVER SAYS AN EXECUTION IS.
|
|
692
|
+
*
|
|
693
|
+
* Distinct from the envelope below in the same way `ServerApprovalRow` is
|
|
694
|
+
* distinct from `ServerApproval`: this is state, true only at the instant it
|
|
695
|
+
* was read.
|
|
696
|
+
*/
|
|
697
|
+
export interface ServerExecution {
|
|
698
|
+
id: string;
|
|
699
|
+
projectId: string;
|
|
700
|
+
approvalId: string;
|
|
701
|
+
claimId: string;
|
|
702
|
+
machineId: string;
|
|
703
|
+
actionFingerprint: string;
|
|
704
|
+
state: string;
|
|
705
|
+
version: number;
|
|
706
|
+
startedAt: string;
|
|
707
|
+
settledAt: string | null;
|
|
708
|
+
outcomeReason: string | null;
|
|
709
|
+
evidence: unknown;
|
|
710
|
+
resultAssignedRunId: string | null;
|
|
711
|
+
resultAcknowledgedAt: string | null;
|
|
712
|
+
}
|
|
713
|
+
/**
|
|
714
|
+
* THE ONE THING A BROKER MAY ACT ON, BUILT BY THE SERVER.
|
|
715
|
+
*
|
|
716
|
+
* `actionRequest` is the stored canonical payload, re-parsed and re-verified
|
|
717
|
+
* against the fingerprint a person approved. This machine never assembles one:
|
|
718
|
+
* it sends a digest saying what it believes it is executing and is told what is
|
|
719
|
+
* actually held.
|
|
720
|
+
*/
|
|
721
|
+
export interface ServerExecutionEnvelope {
|
|
722
|
+
executionId: string;
|
|
723
|
+
approvalId: string;
|
|
724
|
+
claimId: string;
|
|
725
|
+
projectId: string;
|
|
726
|
+
machineId: string;
|
|
727
|
+
actionFingerprint: string;
|
|
728
|
+
actionRequest: unknown;
|
|
729
|
+
actionType: string;
|
|
730
|
+
display: string;
|
|
731
|
+
executionVersion: number;
|
|
732
|
+
executionState: string;
|
|
733
|
+
}
|
|
734
|
+
/**
|
|
735
|
+
* One act of permission, as the server reports it.
|
|
736
|
+
*
|
|
737
|
+
* `state` is a closed union on the wire. A value this build does not know is
|
|
738
|
+
* reported by the SERVER as `human_required` rather than passed through, so a
|
|
739
|
+
* machine never has to guess what an unfamiliar ending meant.
|
|
740
|
+
*/
|
|
741
|
+
export interface ServerAutonomy {
|
|
742
|
+
controllerId: string;
|
|
743
|
+
goalId: string;
|
|
744
|
+
goalVersion: number;
|
|
745
|
+
/** Which act of permission this was within the version. Newest first. */
|
|
746
|
+
generation: number;
|
|
747
|
+
state: GoalAutonomyState;
|
|
748
|
+
reason: string | null;
|
|
749
|
+
maxStarts: number;
|
|
750
|
+
expiresAt: string;
|
|
751
|
+
/** OCC token. Required by `settleGoalAutonomy`, and not optional there. */
|
|
752
|
+
version: number;
|
|
753
|
+
createdBy: string;
|
|
754
|
+
createdAt: string;
|
|
755
|
+
}
|
|
756
|
+
export type ServerCommandKind = 'pause' | 'resume' | 'stop' | 'skip' | 'scan' | 'start-run' | 'approve' | 'undo' | 'release-goal-items'
|
|
757
|
+
/** One person's explicit, bounded permission to keep going. NOT a start-run. */
|
|
758
|
+
| 'authorize-goal-autonomy';
|
|
759
|
+
export interface ServerCommand {
|
|
760
|
+
id: string;
|
|
761
|
+
projectId: string;
|
|
762
|
+
kind: ServerCommandKind;
|
|
763
|
+
payload?: unknown;
|
|
764
|
+
actor: string;
|
|
765
|
+
}
|
|
766
|
+
//# sourceMappingURL=server-client.d.ts.map
|