@relayflows/sdk 2.0.29 → 2.0.31
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/dist/agent-artifacts.d.ts.map +1 -1
- package/dist/agent-artifacts.js +2 -9
- package/dist/agent-artifacts.js.map +1 -1
- package/dist/agent-cwd.d.ts +69 -0
- package/dist/agent-cwd.d.ts.map +1 -0
- package/dist/agent-cwd.js +140 -0
- package/dist/agent-cwd.js.map +1 -0
- package/dist/artifact-scan-policy.d.ts +35 -0
- package/dist/artifact-scan-policy.d.ts.map +1 -0
- package/dist/artifact-scan-policy.js +49 -0
- package/dist/artifact-scan-policy.js.map +1 -0
- package/dist/authored-completion-record.d.ts +35 -0
- package/dist/authored-completion-record.d.ts.map +1 -0
- package/dist/authored-completion-record.js +92 -0
- package/dist/authored-completion-record.js.map +1 -0
- package/dist/authored-completion.d.ts +99 -0
- package/dist/authored-completion.d.ts.map +1 -0
- package/dist/authored-completion.js +184 -0
- package/dist/authored-completion.js.map +1 -0
- package/dist/authored-flow-error.d.ts +13 -1
- package/dist/authored-flow-error.d.ts.map +1 -1
- package/dist/authored-flow-error.js +12 -0
- package/dist/authored-flow-error.js.map +1 -1
- package/dist/authored-flow-executor.d.ts +7 -30
- package/dist/authored-flow-executor.d.ts.map +1 -1
- package/dist/authored-flow-executor.js +64 -48
- package/dist/authored-flow-executor.js.map +1 -1
- package/dist/authored-human.d.ts.map +1 -1
- package/dist/authored-human.js +1 -3
- package/dist/authored-human.js.map +1 -1
- package/dist/authored-node-entry.js +4 -1
- package/dist/authored-node-entry.js.map +1 -1
- package/dist/authored-node-runner.d.ts +9 -1
- package/dist/authored-node-runner.d.ts.map +1 -1
- package/dist/authored-node-runner.js +92 -17
- package/dist/authored-node-runner.js.map +1 -1
- package/dist/authored-root.d.ts +5 -0
- package/dist/authored-root.d.ts.map +1 -1
- package/dist/authored-root.js +20 -2
- package/dist/authored-root.js.map +1 -1
- package/dist/authored-step-output.d.ts +35 -10
- package/dist/authored-step-output.d.ts.map +1 -1
- package/dist/authored-step-output.js +108 -40
- package/dist/authored-step-output.js.map +1 -1
- package/dist/authored-verdict.d.ts +28 -0
- package/dist/authored-verdict.d.ts.map +1 -0
- package/dist/authored-verdict.js +79 -0
- package/dist/authored-verdict.js.map +1 -0
- package/dist/authored-worker-step.d.ts +5 -2
- package/dist/authored-worker-step.d.ts.map +1 -1
- package/dist/authored-worker-step.js +48 -11
- package/dist/authored-worker-step.js.map +1 -1
- package/dist/bundle-extensions.d.ts.map +1 -1
- package/dist/bundle-extensions.js +4 -7
- package/dist/bundle-extensions.js.map +1 -1
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +41 -7
- package/dist/bundle.js.map +1 -1
- package/dist/canonical.d.ts.map +1 -1
- package/dist/canonical.js +18 -6
- package/dist/canonical.js.map +1 -1
- package/dist/cli/check-worker-surface.d.ts +27 -0
- package/dist/cli/check-worker-surface.d.ts.map +1 -0
- package/dist/cli/check-worker-surface.js +63 -0
- package/dist/cli/check-worker-surface.js.map +1 -0
- package/dist/cli/check.d.ts +19 -2
- package/dist/cli/check.d.ts.map +1 -1
- package/dist/cli/check.js +12 -4
- package/dist/cli/check.js.map +1 -1
- package/dist/cli/cloud-format.d.ts +9 -0
- package/dist/cli/cloud-format.d.ts.map +1 -0
- package/dist/cli/cloud-format.js +77 -0
- package/dist/cli/cloud-format.js.map +1 -0
- package/dist/cli/cloud-live.d.ts +39 -0
- package/dist/cli/cloud-live.d.ts.map +1 -0
- package/dist/cli/cloud-live.js +325 -0
- package/dist/cli/cloud-live.js.map +1 -0
- package/dist/cli/cloud-read.d.ts +3 -7
- package/dist/cli/cloud-read.d.ts.map +1 -1
- package/dist/cli/cloud-read.js +14 -266
- package/dist/cli/cloud-read.js.map +1 -1
- package/dist/cli/cloud-refusal.d.ts +39 -0
- package/dist/cli/cloud-refusal.d.ts.map +1 -0
- package/dist/cli/cloud-refusal.js +95 -0
- package/dist/cli/cloud-refusal.js.map +1 -0
- package/dist/cli/cloud-status-view.d.ts +7 -0
- package/dist/cli/cloud-status-view.d.ts.map +1 -0
- package/dist/cli/cloud-status-view.js +214 -0
- package/dist/cli/cloud-status-view.js.map +1 -0
- package/dist/cli/direct-run.d.ts.map +1 -1
- package/dist/cli/direct-run.js +16 -2
- package/dist/cli/direct-run.js.map +1 -1
- package/dist/cli/hn-monitor.d.ts +0 -13
- package/dist/cli/hn-monitor.d.ts.map +1 -1
- package/dist/cli/hn-monitor.js +2 -1
- package/dist/cli/hn-monitor.js.map +1 -1
- package/dist/cli/local-agent-remedy.d.ts +80 -0
- package/dist/cli/local-agent-remedy.d.ts.map +1 -0
- package/dist/cli/local-agent-remedy.js +116 -0
- package/dist/cli/local-agent-remedy.js.map +1 -0
- package/dist/cli/observer-session.d.ts +41 -0
- package/dist/cli/observer-session.d.ts.map +1 -0
- package/dist/cli/observer-session.js +78 -0
- package/dist/cli/observer-session.js.map +1 -0
- package/dist/cli/run.d.ts +30 -2
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +186 -24
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/status.d.ts +9 -0
- package/dist/cli/status.d.ts.map +1 -1
- package/dist/cli/status.js +31 -2
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/step-evidence.d.ts +90 -0
- package/dist/cli/step-evidence.d.ts.map +1 -0
- package/dist/cli/step-evidence.js +259 -0
- package/dist/cli/step-evidence.js.map +1 -0
- package/dist/cli/step-failure.d.ts +14 -4
- package/dist/cli/step-failure.d.ts.map +1 -1
- package/dist/cli/step-failure.js +41 -76
- package/dist/cli/step-failure.js.map +1 -1
- package/dist/cli-commands.d.ts +6 -0
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +2 -0
- package/dist/cli-commands.js.map +1 -1
- package/dist/cli.d.ts +10 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +53 -42
- package/dist/cli.js.map +1 -1
- package/dist/cloud-read.d.ts +15 -0
- package/dist/cloud-read.d.ts.map +1 -1
- package/dist/cloud-read.js +20 -1
- package/dist/cloud-read.js.map +1 -1
- package/dist/cloud-run-record.d.ts +27 -0
- package/dist/cloud-run-record.d.ts.map +1 -0
- package/dist/cloud-run-record.js +56 -0
- package/dist/cloud-run-record.js.map +1 -0
- package/dist/cloud-run.d.ts +2 -9
- package/dist/cloud-run.d.ts.map +1 -1
- package/dist/cloud-run.js +3 -20
- package/dist/cloud-run.js.map +1 -1
- package/dist/communication/local.d.ts.map +1 -1
- package/dist/communication/local.js +2 -1
- package/dist/communication/local.js.map +1 -1
- package/dist/communication/worker.d.ts +1 -1
- package/dist/communication/worker.d.ts.map +1 -1
- package/dist/communication/worker.js +13 -5
- package/dist/communication/worker.js.map +1 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +28 -6
- package/dist/compile.js.map +1 -1
- package/dist/direct-input.d.ts.map +1 -1
- package/dist/direct-input.js +21 -1
- package/dist/direct-input.js.map +1 -1
- package/dist/failure-kinds.d.ts +96 -6
- package/dist/failure-kinds.d.ts.map +1 -1
- package/dist/failure-kinds.js +29 -2
- package/dist/failure-kinds.js.map +1 -1
- package/dist/flow-extension-compat.d.ts.map +1 -1
- package/dist/flow-extension-compat.js +26 -8
- package/dist/flow-extension-compat.js.map +1 -1
- package/dist/flow-extension-loader.d.ts +7 -0
- package/dist/flow-extension-loader.d.ts.map +1 -1
- package/dist/flow-extension-loader.js +48 -22
- package/dist/flow-extension-loader.js.map +1 -1
- package/dist/flow-requirements.d.ts.map +1 -1
- package/dist/flow-requirements.js +24 -9
- package/dist/flow-requirements.js.map +1 -1
- package/dist/fs-descriptor.d.ts +17 -0
- package/dist/fs-descriptor.d.ts.map +1 -0
- package/dist/fs-descriptor.js +96 -0
- package/dist/fs-descriptor.js.map +1 -0
- package/dist/gate-contract.d.ts +7 -0
- package/dist/gate-contract.d.ts.map +1 -1
- package/dist/gate-contract.js +6 -1
- package/dist/gate-contract.js.map +1 -1
- package/dist/helper-preflight.d.ts.map +1 -1
- package/dist/helper-preflight.js +10 -3
- package/dist/helper-preflight.js.map +1 -1
- package/dist/helper-reference.d.ts +25 -0
- package/dist/helper-reference.d.ts.map +1 -0
- package/dist/helper-reference.js +129 -0
- package/dist/helper-reference.js.map +1 -0
- package/dist/hosted-base-snapshot.d.ts +25 -0
- package/dist/hosted-base-snapshot.d.ts.map +1 -0
- package/dist/hosted-base-snapshot.js +278 -0
- package/dist/hosted-base-snapshot.js.map +1 -0
- package/dist/hosted-extension-declarations.d.ts +10 -0
- package/dist/hosted-extension-declarations.d.ts.map +1 -0
- package/dist/hosted-extension-declarations.js +272 -0
- package/dist/hosted-extension-declarations.js.map +1 -0
- package/dist/hosted-extension-isolation.d.ts +82 -0
- package/dist/hosted-extension-isolation.d.ts.map +1 -0
- package/dist/hosted-extension-isolation.js +322 -0
- package/dist/hosted-extension-isolation.js.map +1 -0
- package/dist/hosted-extension-manifest.d.ts +9 -0
- package/dist/hosted-extension-manifest.d.ts.map +1 -0
- package/dist/hosted-extension-manifest.js +235 -0
- package/dist/hosted-extension-manifest.js.map +1 -0
- package/dist/hosted-extension-protocol.d.ts +16 -0
- package/dist/hosted-extension-protocol.d.ts.map +1 -0
- package/dist/hosted-extension-protocol.js +224 -0
- package/dist/hosted-extension-protocol.js.map +1 -0
- package/dist/hosted-extension-runtime.d.ts +30 -0
- package/dist/hosted-extension-runtime.d.ts.map +1 -0
- package/dist/hosted-extension-runtime.js +167 -0
- package/dist/hosted-extension-runtime.js.map +1 -0
- package/dist/hosted-extension-sandbox-source.d.ts +9 -0
- package/dist/hosted-extension-sandbox-source.d.ts.map +1 -0
- package/dist/hosted-extension-sandbox-source.js +95 -0
- package/dist/hosted-extension-sandbox-source.js.map +1 -0
- package/dist/hosted-extension-sandbox.d.ts +39 -0
- package/dist/hosted-extension-sandbox.d.ts.map +1 -0
- package/dist/hosted-extension-sandbox.js +418 -0
- package/dist/hosted-extension-sandbox.js.map +1 -0
- package/dist/hosted-project.d.ts +3 -0
- package/dist/hosted-project.d.ts.map +1 -0
- package/dist/hosted-project.js +19 -0
- package/dist/hosted-project.js.map +1 -0
- package/dist/hosted-promise-safety.d.ts +12 -0
- package/dist/hosted-promise-safety.d.ts.map +1 -0
- package/dist/hosted-promise-safety.js +63 -0
- package/dist/hosted-promise-safety.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/intrinsic-array.d.ts +3 -0
- package/dist/intrinsic-array.d.ts.map +1 -0
- package/dist/intrinsic-array.js +14 -0
- package/dist/intrinsic-array.js.map +1 -0
- package/dist/journal-client.d.ts +3 -1
- package/dist/journal-client.d.ts.map +1 -1
- package/dist/journal-client.js +17 -2
- package/dist/journal-client.js.map +1 -1
- package/dist/journal-projection.d.ts +16 -0
- package/dist/journal-projection.d.ts.map +1 -0
- package/dist/journal-projection.js +108 -0
- package/dist/journal-projection.js.map +1 -0
- package/dist/json-value.d.ts +6 -1
- package/dist/json-value.d.ts.map +1 -1
- package/dist/json-value.js +155 -36
- package/dist/json-value.js.map +1 -1
- package/dist/llm-worker.d.ts +9 -0
- package/dist/llm-worker.d.ts.map +1 -1
- package/dist/llm-worker.js +16 -2
- package/dist/llm-worker.js.map +1 -1
- package/dist/local-agent.d.ts +1 -1
- package/dist/local-agent.d.ts.map +1 -1
- package/dist/local-agent.js +4 -3
- package/dist/local-agent.js.map +1 -1
- package/dist/named-gate-lowering.js +35 -5
- package/dist/named-gate-lowering.js.map +1 -1
- package/dist/named-gate-preflight.d.ts +27 -0
- package/dist/named-gate-preflight.d.ts.map +1 -0
- package/dist/named-gate-preflight.js +47 -0
- package/dist/named-gate-preflight.js.map +1 -0
- package/dist/named-gates.d.ts +1 -1
- package/dist/named-gates.d.ts.map +1 -1
- package/dist/named-gates.js +3 -0
- package/dist/named-gates.js.map +1 -1
- package/dist/observer-link.d.ts +7 -0
- package/dist/observer-link.d.ts.map +1 -1
- package/dist/observer-link.js +3 -1
- package/dist/observer-link.js.map +1 -1
- package/dist/plugin-store.d.ts +8 -2
- package/dist/plugin-store.d.ts.map +1 -1
- package/dist/plugin-store.js +233 -56
- package/dist/plugin-store.js.map +1 -1
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +7 -0
- package/dist/preflight.js.map +1 -1
- package/dist/protocol.d.ts +2 -0
- package/dist/protocol.d.ts.map +1 -1
- package/dist/redact.d.ts +42 -0
- package/dist/redact.d.ts.map +1 -1
- package/dist/redact.js +128 -0
- package/dist/redact.js.map +1 -1
- package/dist/run-projection.d.ts +83 -0
- package/dist/run-projection.d.ts.map +1 -0
- package/dist/run-projection.js +199 -0
- package/dist/run-projection.js.map +1 -0
- package/dist/semver-range.d.ts.map +1 -1
- package/dist/semver-range.js +27 -15
- package/dist/semver-range.js.map +1 -1
- package/dist/shell-word.d.ts +19 -0
- package/dist/shell-word.d.ts.map +1 -0
- package/dist/shell-word.js +23 -0
- package/dist/shell-word.js.map +1 -0
- package/dist/spec.d.ts +52 -3
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js.map +1 -1
- package/dist/step-fields.d.ts +1 -1
- package/dist/step-fields.js +1 -1
- package/dist/step-fields.js.map +1 -1
- package/dist/steps-green.d.ts +27 -0
- package/dist/steps-green.d.ts.map +1 -0
- package/dist/steps-green.js +164 -0
- package/dist/steps-green.js.map +1 -0
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +39 -8
- package/dist/validate.js.map +1 -1
- package/dist/worker-lease.d.ts +8 -1
- package/dist/worker-lease.d.ts.map +1 -1
- package/dist/worker-lease.js +34 -4
- package/dist/worker-lease.js.map +1 -1
- package/dist/worker.d.ts +8 -0
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +17 -9
- package/dist/worker.js.map +1 -1
- package/package.json +3 -7
- package/src/agent-artifacts.ts +2 -10
- package/src/agent-cwd.ts +139 -0
- package/src/artifact-scan-policy.ts +51 -0
- package/src/authored-completion-record.ts +119 -0
- package/src/authored-completion.ts +203 -0
- package/src/authored-flow-error.ts +13 -1
- package/src/authored-flow-executor.ts +101 -59
- package/src/authored-human.ts +1 -4
- package/src/authored-node-entry.ts +4 -1
- package/src/authored-node-runner.ts +96 -22
- package/src/authored-root.ts +20 -2
- package/src/authored-step-output.ts +139 -42
- package/src/authored-verdict.ts +87 -0
- package/src/authored-worker-step.ts +60 -12
- package/src/bundle-extensions.ts +6 -5
- package/src/bundle.ts +52 -7
- package/src/canonical.ts +20 -6
- package/src/cli/check-worker-surface.ts +66 -0
- package/src/cli/check.ts +35 -4
- package/src/cli/cloud-format.ts +82 -0
- package/src/cli/cloud-live.ts +366 -0
- package/src/cli/cloud-read.ts +13 -282
- package/src/cli/cloud-refusal.ts +113 -0
- package/src/cli/cloud-status-view.ts +213 -0
- package/src/cli/direct-run.ts +19 -2
- package/src/cli/hn-monitor.ts +2 -1
- package/src/cli/local-agent-remedy.ts +160 -0
- package/src/cli/observer-session.ts +107 -0
- package/src/cli/run.ts +233 -28
- package/src/cli/status.ts +59 -3
- package/src/cli/step-evidence.ts +310 -0
- package/src/cli/step-failure.ts +57 -81
- package/src/cli-commands.ts +2 -0
- package/src/cli.ts +64 -44
- package/src/cloud-read.ts +25 -1
- package/src/cloud-run-record.ts +64 -0
- package/src/cloud-run.ts +5 -24
- package/src/communication/local.ts +2 -1
- package/src/communication/worker.ts +13 -5
- package/src/compile.ts +28 -6
- package/src/direct-input.ts +22 -1
- package/src/failure-kinds.ts +104 -2
- package/src/flow-extension-compat.ts +32 -7
- package/src/flow-extension-loader.ts +56 -21
- package/src/flow-requirements.ts +24 -9
- package/src/fs-descriptor.ts +127 -0
- package/src/gate-contract.ts +13 -1
- package/src/helper-preflight.ts +10 -3
- package/src/helper-reference.ts +130 -0
- package/src/hosted-base-snapshot.ts +351 -0
- package/src/hosted-extension-declarations.ts +387 -0
- package/src/hosted-extension-isolation.ts +457 -0
- package/src/hosted-extension-manifest.ts +249 -0
- package/src/hosted-extension-protocol.ts +262 -0
- package/src/hosted-extension-runtime.ts +266 -0
- package/src/hosted-extension-sandbox-source.ts +94 -0
- package/src/hosted-extension-sandbox.ts +489 -0
- package/src/hosted-project.ts +18 -0
- package/src/hosted-promise-safety.ts +68 -0
- package/src/index.ts +20 -0
- package/src/intrinsic-array.ts +14 -0
- package/src/journal-client.ts +19 -2
- package/src/journal-projection.ts +106 -0
- package/src/json-value.ts +184 -32
- package/src/llm-worker.ts +16 -2
- package/src/local-agent.ts +4 -2
- package/src/named-gate-lowering.ts +35 -5
- package/src/named-gate-preflight.ts +47 -0
- package/src/named-gates.ts +3 -0
- package/src/observer-link.ts +10 -1
- package/src/plugin-store.ts +323 -56
- package/src/preflight.ts +7 -0
- package/src/protocol.ts +2 -0
- package/src/redact.ts +111 -0
- package/src/run-projection.ts +247 -0
- package/src/semver-range.ts +39 -14
- package/src/shell-word.ts +24 -0
- package/src/spec.ts +54 -3
- package/src/step-fields.ts +1 -1
- package/src/steps-green.ts +168 -0
- package/src/validate.ts +35 -8
- package/src/worker-lease.ts +35 -5
- package/src/worker.ts +27 -11
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { redact } from '../redact.js';
|
|
2
|
+
import { formatStepExcerpt } from './step-excerpt.js';
|
|
3
|
+
/** Per-attempt history is context beside that account, not a second copy of it. */
|
|
4
|
+
export const ATTEMPT_TAIL_BYTES = 256;
|
|
5
|
+
/**
|
|
6
|
+
* What the daemon appends when it cut a render before journaling it
|
|
7
|
+
* (`worker_failure_detail`, relayflowd/src/engine/remote.rs). Evidence that
|
|
8
|
+
* arrived already truncated cannot establish that two attempts failed
|
|
9
|
+
* identically, however equal the surviving bytes are.
|
|
10
|
+
*/
|
|
11
|
+
const PRODUCER_TRUNCATED = /…\s*\((?:render bounded|[\d,]+ bytes truncated)\)$/u;
|
|
12
|
+
/**
|
|
13
|
+
* Pull the process-shaped fields out of whichever field carried them.
|
|
14
|
+
*
|
|
15
|
+
* `verification.detail` is last because it is the daemon's own render rather
|
|
16
|
+
* than the worker's structured report — but for an agent step it is the only
|
|
17
|
+
* thing that survives, so it is parsed when it parses and kept verbatim when
|
|
18
|
+
* it does not. A truncated render (the daemon caps at 2,000 chars and appends
|
|
19
|
+
* a truncation note) will not parse; that falls through to the raw string,
|
|
20
|
+
* which is still the account of what went wrong.
|
|
21
|
+
*
|
|
22
|
+
* An agent or llm completion now also carries `trajectory_tail.transcript`
|
|
23
|
+
* (agent-transcript.ts) on every attempt. That object is not process-shaped,
|
|
24
|
+
* so it must not shadow the render that is: the first candidate that carries
|
|
25
|
+
* an exit code or a tail wins. The digest contributes what only it has — the
|
|
26
|
+
* failure excerpt the worker picked out of the provider's frames, and the
|
|
27
|
+
* path of the transcript file.
|
|
28
|
+
*/
|
|
29
|
+
export function selectEvidence(payload) {
|
|
30
|
+
const detail = record(payload['verification'])?.['detail'];
|
|
31
|
+
const rendered = typeof detail === 'string' ? parsed(detail) : undefined;
|
|
32
|
+
const candidates = [
|
|
33
|
+
record(payload['output']),
|
|
34
|
+
record(payload['trajectory_tail']),
|
|
35
|
+
rendered,
|
|
36
|
+
].filter((candidate) => candidate !== undefined);
|
|
37
|
+
const structured = candidates.find(processShaped) ?? candidates[0];
|
|
38
|
+
const exitCode = structured?.['exit_code'];
|
|
39
|
+
const stdout = structured?.['stdout_tail'];
|
|
40
|
+
const stderr = structured?.['stderr_tail'];
|
|
41
|
+
const transcript = record(record(payload['trajectory_tail'])?.['transcript']);
|
|
42
|
+
const failure = record(transcript?.['failure']);
|
|
43
|
+
const excerpt = failure?.['excerpt'];
|
|
44
|
+
const transcriptPath = record(transcript?.['file'])?.['path'];
|
|
45
|
+
// The excerpt is the worker's own pick of the failure; a `stderr` excerpt
|
|
46
|
+
// is the same bytes as `stderrTail`, so it is not printed twice.
|
|
47
|
+
const excerptDetail = typeof excerpt === 'string' && excerpt.length > 0
|
|
48
|
+
&& !(failure?.['kind'] === 'stderr' && typeof stderr === 'string')
|
|
49
|
+
? excerpt : undefined;
|
|
50
|
+
return {
|
|
51
|
+
...(typeof exitCode === 'number' && Number.isSafeInteger(exitCode) ? { exitCode } : {}),
|
|
52
|
+
...(typeof stdout === 'string' && stdout.length > 0 ? { stdoutTail: stdout } : {}),
|
|
53
|
+
...(typeof stderr === 'string' ? { stderrTail: stderr } : {}),
|
|
54
|
+
...(excerptDetail !== undefined ? { detail: excerptDetail }
|
|
55
|
+
: typeof detail === 'string' && detail.length > 0 && !duplicates(detail, rendered, exitCode)
|
|
56
|
+
? { detail } : {}),
|
|
57
|
+
...(typeof transcriptPath === 'string' && transcriptPath.length > 0 ? { transcriptPath } : {}),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Whether printing `verification.detail` would print bytes already printed.
|
|
62
|
+
*
|
|
63
|
+
* Only two shapes do. The daemon's render of a worker failure IS the
|
|
64
|
+
* `{exit_code, stdout_tail, stderr_tail}` report (`worker_failure_detail`,
|
|
65
|
+
* relayflowd/src/engine/remote.rs), which a deterministic step journals
|
|
66
|
+
* alongside its preserved `output`; and the `exit_code` gate's verdict on its
|
|
67
|
+
* own is the exit code that is already reported beside it (`exit code was 1`,
|
|
68
|
+
* relayflowd-core/src/verify.rs).
|
|
69
|
+
*
|
|
70
|
+
* Every other verdict is the ONLY account of its failure. `output did not
|
|
71
|
+
* contain "READY"` accompanies exit 0 and empty tails, so suppressing the
|
|
72
|
+
* detail whenever some field happened to be process-shaped left the attempt
|
|
73
|
+
* saying `exit=0 — no failure evidence recorded` while the journal held the
|
|
74
|
+
* gate error — the first attempt hidden again, inside the diagnostic that
|
|
75
|
+
* exists to surface it.
|
|
76
|
+
*/
|
|
77
|
+
function duplicates(detail, rendered, exitCode) {
|
|
78
|
+
if (rendered !== undefined && processShaped(rendered))
|
|
79
|
+
return true;
|
|
80
|
+
return typeof exitCode === 'number' && detail === `exit code was ${exitCode}`;
|
|
81
|
+
}
|
|
82
|
+
/** The `StepFailedDetails` scalars for one completion, as a failure excerpt. */
|
|
83
|
+
export function terminalEvidence(payload) {
|
|
84
|
+
const selected = selectEvidence(payload);
|
|
85
|
+
return {
|
|
86
|
+
...(selected.exitCode === undefined ? {} : { exitCode: selected.exitCode }),
|
|
87
|
+
...(selected.stdoutTail === undefined ? {} : { stdoutTail: formatStepExcerpt(selected.stdoutTail) }),
|
|
88
|
+
...(selected.stderrTail === undefined ? {} : { stderrTail: formatStepExcerpt(selected.stderrTail) }),
|
|
89
|
+
...(selected.detail === undefined ? {} : { detail: formatStepExcerpt(selected.detail) }),
|
|
90
|
+
...(selected.transcriptPath === undefined ? {} : { transcriptPath: selected.transcriptPath }),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* One historical attempt's record, redacted and then bounded.
|
|
95
|
+
*
|
|
96
|
+
* Redaction runs first so a credential cannot survive by sitting outside the
|
|
97
|
+
* excerpt window on one attempt and inside it on another. Control-character
|
|
98
|
+
* replacement alone is not redaction: an agent that echoed `rk_live_...` into
|
|
99
|
+
* its stderr would otherwise reach a terminal through this new field.
|
|
100
|
+
*/
|
|
101
|
+
export function attemptFailure(attempt, completionReason, disposition, payload) {
|
|
102
|
+
const selected = selectEvidence(payload);
|
|
103
|
+
let truncated = false;
|
|
104
|
+
const bound = (value) => {
|
|
105
|
+
const redacted = redact(value);
|
|
106
|
+
if (Buffer.byteLength(redacted, 'utf8') > ATTEMPT_TAIL_BYTES)
|
|
107
|
+
truncated = true;
|
|
108
|
+
return tail(redacted, ATTEMPT_TAIL_BYTES);
|
|
109
|
+
};
|
|
110
|
+
const record_ = {
|
|
111
|
+
...(typeof attempt === 'number' && Number.isSafeInteger(attempt) && attempt > 0
|
|
112
|
+
? { attempt } : {}),
|
|
113
|
+
completionReason,
|
|
114
|
+
...(typeof disposition === 'string' && disposition.length > 0 ? { disposition } : {}),
|
|
115
|
+
...(selected.exitCode === undefined ? {} : { exitCode: selected.exitCode }),
|
|
116
|
+
...(selected.stdoutTail === undefined ? {} : { stdoutTail: bound(selected.stdoutTail) }),
|
|
117
|
+
...(selected.stderrTail === undefined ? {} : { stderrTail: bound(selected.stderrTail) }),
|
|
118
|
+
...(selected.detail === undefined ? {} : { detail: bound(selected.detail) }),
|
|
119
|
+
};
|
|
120
|
+
return truncated ? { ...record_, truncated } : record_;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Everything about a completion that bears on WHY it failed, unbounded.
|
|
124
|
+
*
|
|
125
|
+
* Deliberately not the display selection: `selectEvidence` suppresses the
|
|
126
|
+
* daemon's render when process-shaped output exists, and prefers a transcript
|
|
127
|
+
* excerpt over both, so two attempts can show identical excerpts over
|
|
128
|
+
* different gate verdicts. Everything the journal recorded about the failure
|
|
129
|
+
* is read here instead, before any bound is applied.
|
|
130
|
+
*
|
|
131
|
+
* Timestamps, transcript paths, dispositions and attempt numbers are NOT
|
|
132
|
+
* causes and are excluded: they differ on every attempt by construction.
|
|
133
|
+
*/
|
|
134
|
+
export function failureCause(completionReason, payload) {
|
|
135
|
+
const verification = record(payload['verification']);
|
|
136
|
+
const output = record(payload['output']);
|
|
137
|
+
const trajectory = record(payload['trajectory_tail']);
|
|
138
|
+
const failure = record(record(trajectory?.['transcript'])?.['failure']);
|
|
139
|
+
const verificationDetail = text(verification?.['detail']);
|
|
140
|
+
const accounts = [
|
|
141
|
+
verificationDetail,
|
|
142
|
+
text(output?.['stdout_tail']), text(output?.['stderr_tail']),
|
|
143
|
+
text(trajectory?.['stdout_tail']), text(trajectory?.['stderr_tail']),
|
|
144
|
+
text(failure?.['excerpt']),
|
|
145
|
+
];
|
|
146
|
+
const exitCodes = [output?.['exit_code'], trajectory?.['exit_code']]
|
|
147
|
+
.filter(value => typeof value === 'number');
|
|
148
|
+
return {
|
|
149
|
+
key: JSON.stringify([
|
|
150
|
+
// `verification_failed` on a retry and `retries_exhausted` at the budget
|
|
151
|
+
// limit are the SAME fallback over the same failure: `completion_actions`
|
|
152
|
+
// picks the label from the branch it took, not from the cause. Comparing
|
|
153
|
+
// them literally would report "the retry failed differently" on every
|
|
154
|
+
// ordinary repeated failure. No other pair of labels is collapsed.
|
|
155
|
+
completionReason === 'verification_failed' || completionReason === 'retries_exhausted'
|
|
156
|
+
? 'kernel_rejected' : completionReason,
|
|
157
|
+
text(verification?.['gate']), text(verification?.['verdict']), verificationDetail,
|
|
158
|
+
...exitCodes, ...accounts, text(failure?.['kind']),
|
|
159
|
+
]),
|
|
160
|
+
// An attempt that journaled nothing about itself cannot agree with
|
|
161
|
+
// another one; it can only fail to disagree.
|
|
162
|
+
recorded: exitCodes.length > 0 || accounts.some(account => account !== undefined),
|
|
163
|
+
producerTruncated: (verificationDetail !== undefined
|
|
164
|
+
&& PRODUCER_TRUNCATED.test(verificationDetail))
|
|
165
|
+
// The transcript digest's own flag (`boundTranscriptDigest`,
|
|
166
|
+
// agent-transcript.ts): the worker already cut this excerpt, so equal
|
|
167
|
+
// survivors cannot establish identical failures either.
|
|
168
|
+
|| failure?.['truncated'] === true,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Only attempts that recorded something can establish a difference.
|
|
173
|
+
*
|
|
174
|
+
* An attempt that journaled no account of itself differs from every other one
|
|
175
|
+
* on paper while saying nothing about why it failed, and reporting that as
|
|
176
|
+
* `differs` would put "an earlier attempt may have had side effects" on a
|
|
177
|
+
* crash that is evidence of nothing. Truncation is not the same case: two
|
|
178
|
+
* renders the daemon already cut can only look MORE alike than they were, so
|
|
179
|
+
* surviving bytes that disagree still prove the causes disagreed.
|
|
180
|
+
*/
|
|
181
|
+
export function compareAttempts(causes) {
|
|
182
|
+
const recorded = causes.filter(cause => cause.recorded);
|
|
183
|
+
if (new Set(recorded.map(cause => cause.key)).size > 1)
|
|
184
|
+
return 'differs';
|
|
185
|
+
return recorded.length === causes.length && causes.every(cause => !cause.producerTruncated)
|
|
186
|
+
? 'unchanged' : 'unknown';
|
|
187
|
+
}
|
|
188
|
+
const COMPARISON_CLAUSE = {
|
|
189
|
+
differs: 'recorded failure evidence differs. An earlier attempt may have had side effects.',
|
|
190
|
+
unchanged: 'recorded failure evidence is unchanged across them.',
|
|
191
|
+
unknown: 'recorded failure evidence is incomplete, so whether the causes differ is unknown.',
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Every failed attempt, oldest first, under one line saying whether they
|
|
195
|
+
* agree. Rendered in full rather than elided: `flows logs` prints the runner
|
|
196
|
+
* log without eliding it, so an attempt dropped here is an attempt that
|
|
197
|
+
* reaches no reader at all.
|
|
198
|
+
*/
|
|
199
|
+
export function renderAttemptHistory(details) {
|
|
200
|
+
const attempts = details.attempts;
|
|
201
|
+
if (attempts === undefined || attempts.length < 2)
|
|
202
|
+
return '';
|
|
203
|
+
const comparison = COMPARISON_CLAUSE[details.attemptEvidence ?? 'unknown'];
|
|
204
|
+
return [`\nAttempts: ${attempts.length} failed; ${comparison}`, ...attempts.map(renderAttempt)]
|
|
205
|
+
.join('\n');
|
|
206
|
+
}
|
|
207
|
+
function renderAttempt(attempt) {
|
|
208
|
+
const head = ` attempt ${attempt.attempt ?? '?'}: ${attempt.completionReason ?? 'unknown'}`
|
|
209
|
+
+ (attempt.exitCode === undefined ? '' : ` exit=${attempt.exitCode}`)
|
|
210
|
+
+ (attempt.truncated ? ' (excerpt truncated)' : '');
|
|
211
|
+
// An empty `stderrTail` is a journaled fact but not an account of anything,
|
|
212
|
+
// so it never displaces useful stdout the way `detail ?? stderr ?? stdout`
|
|
213
|
+
// would. Both are kept when both exist.
|
|
214
|
+
const accounts = [
|
|
215
|
+
['detail', attempt.detail], ['stderr', attempt.stderrTail], ['stdout', attempt.stdoutTail],
|
|
216
|
+
].filter((pair) => typeof pair[1] === 'string' && pair[1].length > 0);
|
|
217
|
+
if (accounts.length === 0)
|
|
218
|
+
return `${head} — no failure evidence recorded`;
|
|
219
|
+
const [only] = accounts;
|
|
220
|
+
if (accounts.length === 1 && !only[1].includes('\n'))
|
|
221
|
+
return `${head} — ${only[0]}: ${only[1]}`;
|
|
222
|
+
return [head, ...accounts.map(([label, value]) => indent(`${label}: ${value}`))].join('\n');
|
|
223
|
+
}
|
|
224
|
+
/** Continuation lines are indented past the label so the list stays readable. */
|
|
225
|
+
function indent(block) {
|
|
226
|
+
const [first, ...rest] = block.split('\n');
|
|
227
|
+
return [` ${first}`, ...rest.map(line => ` ${line}`)].join('\n');
|
|
228
|
+
}
|
|
229
|
+
function text(value) {
|
|
230
|
+
return typeof value === 'string' && value.length > 0 ? value : undefined;
|
|
231
|
+
}
|
|
232
|
+
function processShaped(value) {
|
|
233
|
+
return typeof value['exit_code'] === 'number'
|
|
234
|
+
|| typeof value['stdout_tail'] === 'string' || typeof value['stderr_tail'] === 'string';
|
|
235
|
+
}
|
|
236
|
+
function parsed(value) {
|
|
237
|
+
try {
|
|
238
|
+
return record(JSON.parse(value));
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
return undefined;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
export function record(value) {
|
|
245
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
246
|
+
? value : undefined;
|
|
247
|
+
}
|
|
248
|
+
export function tail(value, limit) {
|
|
249
|
+
const bytes = Buffer.from(value, 'utf8');
|
|
250
|
+
let start = Math.max(0, bytes.length - limit);
|
|
251
|
+
// Drop a partial leading code point, avoiding replacement-byte expansion.
|
|
252
|
+
while (start < bytes.length && (bytes[start] & 0xc0) === 0x80)
|
|
253
|
+
start += 1;
|
|
254
|
+
// Preserve tabs/newlines; replace binary controls (including ESC and CR),
|
|
255
|
+
// C1 controls and Unicode formatting controls without growing the excerpt.
|
|
256
|
+
return bytes.subarray(start).toString('utf8')
|
|
257
|
+
.replace(/[\p{Cc}\p{Cf}]/gu, character => character === '\n' || character === '\t' ? character : '?');
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=step-evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-evidence.js","sourceRoot":"","sources":["../../src/cli/step-evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,10 +17,16 @@ import type { JournalClient } from '../journal-client.js';
|
|
|
17
17
|
* agent or llm step the worker's `{exit_code, stdout_tail, stderr_tail}` is
|
|
18
18
|
* nulled out of `output` and survives only as the bounded render the daemon
|
|
19
19
|
* captured into `verification.detail` (`worker_failure_detail`,
|
|
20
|
-
* relayflowd/src/engine/remote.rs). Both are read
|
|
21
|
-
* daemon's render is re-parsed when it carries that same shape
|
|
22
|
-
*
|
|
23
|
-
*
|
|
20
|
+
* relayflowd/src/engine/remote.rs). Both are read by `selectEvidence`, in that
|
|
21
|
+
* order, and the daemon's render is re-parsed when it carries that same shape.
|
|
22
|
+
*
|
|
23
|
+
* EVERY failed attempt is collected, not only the terminal one. The kernel
|
|
24
|
+
* appends a `step.completed` per attempt, so a retried step's first failure is
|
|
25
|
+
* in the journal — but `retries_exhausted` reported only the last attempt, and
|
|
26
|
+
* a retry that fails differently (because the first attempt already had a side
|
|
27
|
+
* effect) is exactly when the last attempt is the least informative record
|
|
28
|
+
* there is. The scalar fields still describe the terminal attempt; `attempts`
|
|
29
|
+
* is additive.
|
|
24
30
|
*/
|
|
25
31
|
export declare function stepFailureDetails(client: JournalClient, runId: string): Promise<StepFailedDetails | undefined>;
|
|
26
32
|
/**
|
|
@@ -39,6 +45,10 @@ export declare function stepFailureDetails(client: JournalClient, runId: string)
|
|
|
39
45
|
* stops it being misread. Unknown values are omitted rather than defaulted —
|
|
40
46
|
* an absent budget must not be reported as one attempt.
|
|
41
47
|
*
|
|
48
|
+
* The attempt history follows that line and precedes the terminal attempt's
|
|
49
|
+
* own clauses, so the first error is visible without scrolling past the last
|
|
50
|
+
* one's output tails.
|
|
51
|
+
*
|
|
42
52
|
* Lives next to `StepFailedDetails`'s extractor rather than in `cli/run.ts` so
|
|
43
53
|
* the authored `f.run` path can render the same grammar without importing the
|
|
44
54
|
* run lifecycle (which would be a cycle).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-failure.d.ts","sourceRoot":"","sources":["../../src/cli/step-failure.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"step-failure.d.ts","sourceRoot":"","sources":["../../src/cli/step-failure.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAsB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAiB1D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CA8ExC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAYrE;AAQD,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAIvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAaxC"}
|
package/dist/cli/step-failure.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
2
|
import { DEFAULT_DATA_DIR } from '../daemon-connection.js';
|
|
3
|
-
import {
|
|
3
|
+
import { attemptFailure, compareAttempts, failureCause, record, renderAttemptHistory, terminalEvidence, } from './step-evidence.js';
|
|
4
4
|
/**
|
|
5
5
|
* Read what a failed step left in the journal — for any step type.
|
|
6
6
|
*
|
|
@@ -18,10 +18,16 @@ import { formatStepExcerpt } from './step-excerpt.js';
|
|
|
18
18
|
* agent or llm step the worker's `{exit_code, stdout_tail, stderr_tail}` is
|
|
19
19
|
* nulled out of `output` and survives only as the bounded render the daemon
|
|
20
20
|
* captured into `verification.detail` (`worker_failure_detail`,
|
|
21
|
-
* relayflowd/src/engine/remote.rs). Both are read
|
|
22
|
-
* daemon's render is re-parsed when it carries that same shape
|
|
23
|
-
*
|
|
24
|
-
*
|
|
21
|
+
* relayflowd/src/engine/remote.rs). Both are read by `selectEvidence`, in that
|
|
22
|
+
* order, and the daemon's render is re-parsed when it carries that same shape.
|
|
23
|
+
*
|
|
24
|
+
* EVERY failed attempt is collected, not only the terminal one. The kernel
|
|
25
|
+
* appends a `step.completed` per attempt, so a retried step's first failure is
|
|
26
|
+
* in the journal — but `retries_exhausted` reported only the last attempt, and
|
|
27
|
+
* a retry that fails differently (because the first attempt already had a side
|
|
28
|
+
* effect) is exactly when the last attempt is the least informative record
|
|
29
|
+
* there is. The scalar fields still describe the terminal attempt; `attempts`
|
|
30
|
+
* is additive.
|
|
25
31
|
*/
|
|
26
32
|
export async function stepFailureDetails(client, runId) {
|
|
27
33
|
const snapshot = await client.runGet(runId);
|
|
@@ -34,6 +40,9 @@ export async function stepFailureDetails(client, runId) {
|
|
|
34
40
|
// enforcing (relayflowd-core/src/entry.rs `AttemptStartedPayload`). They are
|
|
35
41
|
// collected on the same walk and reported only when the journal held them.
|
|
36
42
|
const budgets = new Map();
|
|
43
|
+
// Keyed by step, so interleaved steps never pool their attempts and a page
|
|
44
|
+
// boundary never splits one step's history.
|
|
45
|
+
const histories = new Map();
|
|
37
46
|
while (true) {
|
|
38
47
|
const { entries } = await client.journalRead(runId, fromSeq, 100);
|
|
39
48
|
if (entries.length === 0)
|
|
@@ -60,16 +69,27 @@ export async function stepFailureDetails(client, runId) {
|
|
|
60
69
|
// A later completion supersedes an earlier failed attempt.
|
|
61
70
|
failures.delete(stepId);
|
|
62
71
|
const payload = record(entry['payload']);
|
|
63
|
-
|
|
72
|
+
const completionReason = payload?.['completionReason'];
|
|
73
|
+
// A success — or a completion this reader cannot read — ends the failure
|
|
74
|
+
// history too: what a step that eventually succeeded printed on the way
|
|
75
|
+
// is not the diagnosis of a later, different failure. The journal still
|
|
76
|
+
// holds every entry; only this diagnostic's candidate is cleared.
|
|
77
|
+
if (payload === undefined || typeof completionReason !== 'string' || completionReason === 'success') {
|
|
78
|
+
histories.delete(stepId);
|
|
64
79
|
continue;
|
|
65
|
-
|
|
80
|
+
}
|
|
81
|
+
const history = histories.get(stepId) ?? { records: [], causes: [] };
|
|
82
|
+
// Recorded for `retry` and `park` alike: the kernel's disposition says
|
|
83
|
+
// what it did next, not whether the attempt failed.
|
|
84
|
+
history.records.push(attemptFailure(entry['attempt'], completionReason, payload['disposition'], payload));
|
|
85
|
+
history.causes.push(failureCause(completionReason, payload));
|
|
86
|
+
histories.set(stepId, history);
|
|
66
87
|
// A terminal completion that is not a success is the failure, whatever
|
|
67
88
|
// its step type. The old predicate also demanded a non-zero `exit_code`,
|
|
68
89
|
// which no agent completion carries and which a deterministic step that
|
|
69
90
|
// exits 0 and then fails its gate does not carry either — both were
|
|
70
91
|
// silently skipped.
|
|
71
|
-
if (payload['disposition'] !== 'step_done'
|
|
72
|
-
|| typeof completionReason !== 'string' || completionReason === 'success')
|
|
92
|
+
if (payload['disposition'] !== 'step_done')
|
|
73
93
|
continue;
|
|
74
94
|
const stepType = snapshot.steps[stepId]?.type;
|
|
75
95
|
const attempt = entry['attempt'];
|
|
@@ -80,7 +100,13 @@ export async function stepFailureDetails(client, runId) {
|
|
|
80
100
|
...(stepType === undefined ? {} : { stepType }),
|
|
81
101
|
...(typeof attempt === 'number' && Number.isSafeInteger(attempt) && attempt > 0 ? { attempt } : {}),
|
|
82
102
|
...(maxIterations === undefined ? {} : { maxIterations }),
|
|
83
|
-
...
|
|
103
|
+
...terminalEvidence(payload),
|
|
104
|
+
// A single failed attempt is already fully described by the scalars
|
|
105
|
+
// above; repeating it as a one-element history would add a clause to
|
|
106
|
+
// every ordinary failure report without adding a fact.
|
|
107
|
+
...(history.records.length > 1
|
|
108
|
+
? { attempts: history.records, attemptEvidence: compareAttempts(history.causes) }
|
|
109
|
+
: {}),
|
|
84
110
|
});
|
|
85
111
|
}
|
|
86
112
|
}
|
|
@@ -102,6 +128,10 @@ export async function stepFailureDetails(client, runId) {
|
|
|
102
128
|
* stops it being misread. Unknown values are omitted rather than defaulted —
|
|
103
129
|
* an absent budget must not be reported as one attempt.
|
|
104
130
|
*
|
|
131
|
+
* The attempt history follows that line and precedes the terminal attempt's
|
|
132
|
+
* own clauses, so the first error is visible without scrolling past the last
|
|
133
|
+
* one's output tails.
|
|
134
|
+
*
|
|
105
135
|
* Lives next to `StepFailedDetails`'s extractor rather than in `cli/run.ts` so
|
|
106
136
|
* the authored `f.run` path can render the same grammar without importing the
|
|
107
137
|
* run lifecycle (which would be a cycle).
|
|
@@ -113,6 +143,7 @@ export function renderStepEvidence(details) {
|
|
|
113
143
|
+ renderAttempt(details)
|
|
114
144
|
+ (details.exitCode === undefined ? '' : ` exit=${details.exitCode}`)
|
|
115
145
|
+ '.'
|
|
146
|
+
+ renderAttemptHistory(details)
|
|
116
147
|
+ (details.detail === undefined ? '' : `\nDetail: ${details.detail}`)
|
|
117
148
|
+ (details.stdoutTail ? `\nStdout (captured excerpt):\n${details.stdoutTail}` : '')
|
|
118
149
|
+ (details.stderrTail ? `\nStderr (captured excerpt):\n${details.stderrTail}` : '')
|
|
@@ -155,72 +186,6 @@ export function inspectionHint(runId, stepId, dataDir) {
|
|
|
155
186
|
...(dataDir === undefined ? {} : { journalPath: join(dataDir, 'runs', `${runId}.sqlite3`) }),
|
|
156
187
|
};
|
|
157
188
|
}
|
|
158
|
-
/**
|
|
159
|
-
* Pull the process-shaped fields out of whichever field carried them.
|
|
160
|
-
*
|
|
161
|
-
* `verification.detail` is last because it is the daemon's own render rather
|
|
162
|
-
* than the worker's structured report — but for an agent step it is the only
|
|
163
|
-
* thing that survives, so it is parsed when it parses and kept verbatim when
|
|
164
|
-
* it does not. A truncated render (the daemon caps at 2,000 chars and appends
|
|
165
|
-
* a truncation note) will not parse; that falls through to the raw string,
|
|
166
|
-
* which is still the account of what went wrong.
|
|
167
|
-
*
|
|
168
|
-
* An agent or llm completion now also carries `trajectory_tail.transcript`
|
|
169
|
-
* (agent-transcript.ts) on every attempt. That object is not process-shaped,
|
|
170
|
-
* so it must not shadow the render that is: the first candidate that carries
|
|
171
|
-
* an exit code or a tail wins. The digest contributes what only it has — the
|
|
172
|
-
* failure excerpt the worker picked out of the provider's frames, and the
|
|
173
|
-
* path of the transcript file.
|
|
174
|
-
*/
|
|
175
|
-
function evidence(payload) {
|
|
176
|
-
const detail = record(payload['verification'])?.['detail'];
|
|
177
|
-
const candidates = [
|
|
178
|
-
record(payload['output']),
|
|
179
|
-
record(payload['trajectory_tail']),
|
|
180
|
-
typeof detail === 'string' ? parsed(detail) : undefined,
|
|
181
|
-
].filter((candidate) => candidate !== undefined);
|
|
182
|
-
const structured = candidates.find(processShaped) ?? candidates[0];
|
|
183
|
-
const exitCode = structured?.['exit_code'];
|
|
184
|
-
const stdout = structured?.['stdout_tail'];
|
|
185
|
-
const stderr = structured?.['stderr_tail'];
|
|
186
|
-
const structuredShape = structured !== undefined && processShaped(structured);
|
|
187
|
-
const transcript = record(record(payload['trajectory_tail'])?.['transcript']);
|
|
188
|
-
const failure = record(transcript?.['failure']);
|
|
189
|
-
const failureExcerpt = failure?.['excerpt'];
|
|
190
|
-
const transcriptPath = record(transcript?.['file'])?.['path'];
|
|
191
|
-
// The excerpt is the worker's own pick of the failure; a `stderr` excerpt
|
|
192
|
-
// is the same bytes as `stderrTail`, so it is not printed twice.
|
|
193
|
-
const excerptDetail = typeof failureExcerpt === 'string' && failureExcerpt.length > 0
|
|
194
|
-
&& !(failure?.['kind'] === 'stderr' && typeof stderr === 'string')
|
|
195
|
-
? formatStepExcerpt(failureExcerpt) : undefined;
|
|
196
|
-
return {
|
|
197
|
-
...(typeof exitCode === 'number' && Number.isSafeInteger(exitCode) ? { exitCode } : {}),
|
|
198
|
-
...(typeof stdout === 'string' && stdout.length > 0 ? { stdoutTail: formatStepExcerpt(stdout) } : {}),
|
|
199
|
-
...(typeof stderr === 'string' ? { stderrTail: formatStepExcerpt(stderr) } : {}),
|
|
200
|
-
// Keep the daemon's account only when it was NOT just a render of the
|
|
201
|
-
// fields above — otherwise the same bytes print twice.
|
|
202
|
-
...(excerptDetail !== undefined ? { detail: excerptDetail }
|
|
203
|
-
: typeof detail === 'string' && detail.length > 0 && !structuredShape
|
|
204
|
-
? { detail: formatStepExcerpt(detail) } : {}),
|
|
205
|
-
...(typeof transcriptPath === 'string' && transcriptPath.length > 0 ? { transcriptPath } : {}),
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
function processShaped(value) {
|
|
209
|
-
return typeof value['exit_code'] === 'number'
|
|
210
|
-
|| typeof value['stdout_tail'] === 'string' || typeof value['stderr_tail'] === 'string';
|
|
211
|
-
}
|
|
212
|
-
function parsed(value) {
|
|
213
|
-
try {
|
|
214
|
-
return record(JSON.parse(value));
|
|
215
|
-
}
|
|
216
|
-
catch {
|
|
217
|
-
return undefined;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
function record(value) {
|
|
221
|
-
return value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
222
|
-
? value : undefined;
|
|
223
|
-
}
|
|
224
189
|
function shellQuote(value) {
|
|
225
190
|
return /^[A-Za-z0-9_-]+$/.test(value) && !value.startsWith('-')
|
|
226
191
|
? value : `'${value.replace(/'/g, "'\\''")}'`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-failure.js","sourceRoot":"","sources":["../../src/cli/step-failure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,
|
|
1
|
+
{"version":3,"file":"step-failure.js","sourceRoot":"","sources":["../../src/cli/step-failure.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-commands.d.ts
CHANGED
|
@@ -194,6 +194,9 @@ export declare const CLI_VERBS: readonly [{
|
|
|
194
194
|
}, {
|
|
195
195
|
readonly flags: "--raw";
|
|
196
196
|
readonly description: "Print the transcript JSONL unrendered (still redacted)";
|
|
197
|
+
}, {
|
|
198
|
+
readonly flags: "--follow";
|
|
199
|
+
readonly description: "Append new runner output until the run ends; exits with the run’s outcome";
|
|
197
200
|
}, CliOptionSpec];
|
|
198
201
|
readonly variants: readonly ["logs"];
|
|
199
202
|
}, {
|
|
@@ -394,6 +397,9 @@ export declare const CLI_VERBS: readonly [{
|
|
|
394
397
|
}, {
|
|
395
398
|
readonly flags: "--cloud";
|
|
396
399
|
readonly description: "Read the run from Cloud instead of a local journal; needs the run id";
|
|
400
|
+
}, {
|
|
401
|
+
readonly flags: "--watch";
|
|
402
|
+
readonly description: "With --cloud: redraw until the run ends, then exit with its outcome";
|
|
397
403
|
}];
|
|
398
404
|
readonly variants: readonly ["status"];
|
|
399
405
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-commands.d.ts","sourceRoot":"","sources":["../src/cli-commands.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CAC1C;AAED,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACnC,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACzC;AAED,uEAAuE;AACvE,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD;;;;;;OAMG;IACH,QAAQ,EAAE,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;CAC5C;AAyCD;;;;GAIG;AACH,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"cli-commands.d.ts","sourceRoot":"","sources":["../src/cli-commands.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CAC1C;AAED,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACnC,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACzC;AAED,uEAAuE;AACvE,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD;;;;;;OAMG;IACH,QAAQ,EAAE,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;CAC5C;AAyCD;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkRqB,CAAC;AAE5C;;;;GAIG;AACH,KAAK,eAAe,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE;;;;;;;GAOG;AACH,KAAK,WAAW,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;AACtC,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;AACnG,MAAM,MAAM,2BAA2B,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEvG;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAA+C,CAAC"}
|
package/dist/cli-commands.js
CHANGED
|
@@ -130,6 +130,7 @@ export const CLI_VERBS = [
|
|
|
130
130
|
options: [
|
|
131
131
|
{ flags: '--step <name>', description: 'Show that agent step’s transcript instead of the runner log' },
|
|
132
132
|
{ flags: '--raw', description: 'Print the transcript JSONL unrendered (still redacted)' },
|
|
133
|
+
{ flags: '--follow', description: 'Append new runner output until the run ends; exits with the run’s outcome' },
|
|
133
134
|
JSON_OPTION,
|
|
134
135
|
],
|
|
135
136
|
variants: ['logs'],
|
|
@@ -265,6 +266,7 @@ export const CLI_VERBS = [
|
|
|
265
266
|
DATA_DIR_OPTION,
|
|
266
267
|
{ flags: '--tail <n>', description: 'Lines of each agent attempt’s transcript tail to show' },
|
|
267
268
|
{ flags: '--cloud', description: 'Read the run from Cloud instead of a local journal; needs the run id' },
|
|
269
|
+
{ flags: '--watch', description: 'With --cloud: redraw until the run ends, then exit with its outcome' },
|
|
268
270
|
],
|
|
269
271
|
variants: ['status'],
|
|
270
272
|
},
|
package/dist/cli-commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-commands.js","sourceRoot":"","sources":["../src/cli-commands.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli-commands.js","sourceRoot":"","sources":["../src/cli-commands.ts"],"names":[],"mappings":"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"}
|