@relayflows/sdk 2.0.30 → 2.0.32
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 +54 -47
- 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-preflight.d.ts +4 -0
- package/dist/authored-preflight.d.ts.map +1 -0
- package/dist/authored-preflight.js +50 -0
- package/dist/authored-preflight.js.map +1 -0
- 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 +51 -13
- package/dist/authored-worker-step.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 +28 -3
- package/dist/cli/check.d.ts.map +1 -1
- package/dist/cli/check.js +27 -140
- package/dist/cli/check.js.map +1 -1
- package/dist/cli/cli-probe.d.ts +20 -0
- package/dist/cli/cli-probe.d.ts.map +1 -0
- package/dist/cli/cli-probe.js +166 -0
- package/dist/cli/cli-probe.js.map +1 -0
- 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-mirror-session.d.ts +97 -0
- package/dist/cli/cloud-mirror-session.d.ts.map +1 -0
- package/dist/cli/cloud-mirror-session.js +264 -0
- package/dist/cli/cloud-mirror-session.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 +12 -0
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +3 -0
- package/dist/cli-commands.js.map +1 -1
- package/dist/cli.d.ts +17 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +134 -57
- package/dist/cli.js.map +1 -1
- package/dist/cloud-deploy.d.ts +1 -1
- package/dist/cloud-deploy.d.ts.map +1 -1
- package/dist/cloud-deploy.js +24 -8
- package/dist/cloud-deploy.js.map +1 -1
- package/dist/cloud-mirror-ledger.d.ts +40 -0
- package/dist/cloud-mirror-ledger.d.ts.map +1 -0
- package/dist/cloud-mirror-ledger.js +142 -0
- package/dist/cloud-mirror-ledger.js.map +1 -0
- package/dist/cloud-mirror-step.d.ts +168 -0
- package/dist/cloud-mirror-step.d.ts.map +1 -0
- package/dist/cloud-mirror-step.js +504 -0
- package/dist/cloud-mirror-step.js.map +1 -0
- package/dist/cloud-mirror-transport.d.ts +94 -0
- package/dist/cloud-mirror-transport.d.ts.map +1 -0
- package/dist/cloud-mirror-transport.js +163 -0
- package/dist/cloud-mirror-transport.js.map +1 -0
- package/dist/cloud-mirror.d.ts +132 -0
- package/dist/cloud-mirror.d.ts.map +1 -0
- package/dist/cloud-mirror.js +556 -0
- package/dist/cloud-mirror.js.map +1 -0
- 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-requirements.d.ts.map +1 -1
- package/dist/flow-requirements.js +24 -9
- package/dist/flow-requirements.js.map +1 -1
- 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-extension-runtime.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- 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/llm-worker.js +1 -1
- 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/package-version.d.ts +10 -0
- package/dist/package-version.d.ts.map +1 -0
- package/dist/package-version.js +22 -0
- package/dist/package-version.js.map +1 -0
- package/dist/preflight.d.ts +14 -0
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +25 -3
- 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/relay-cli.d.ts.map +1 -1
- package/dist/relay-cli.js +1 -21
- package/dist/relay-cli.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/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 +91 -58
- 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-preflight.ts +46 -0
- 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 +63 -14
- package/src/cli/check-worker-surface.ts +66 -0
- package/src/cli/check.ts +59 -166
- package/src/cli/cli-probe.ts +194 -0
- package/src/cli/cloud-format.ts +82 -0
- package/src/cli/cloud-live.ts +366 -0
- package/src/cli/cloud-mirror-session.ts +329 -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 +3 -0
- package/src/cli.ts +155 -60
- package/src/cloud-deploy.ts +26 -8
- package/src/cloud-mirror-ledger.ts +161 -0
- package/src/cloud-mirror-step.ts +618 -0
- package/src/cloud-mirror-transport.ts +261 -0
- package/src/cloud-mirror.ts +633 -0
- 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-requirements.ts +24 -9
- package/src/gate-contract.ts +13 -1
- package/src/helper-preflight.ts +10 -3
- package/src/helper-reference.ts +130 -0
- package/src/hosted-extension-runtime.ts +1 -1
- package/src/index.ts +2 -0
- package/src/journal-client.ts +19 -2
- package/src/journal-projection.ts +106 -0
- package/src/llm-worker.ts +1 -1
- 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/package-version.ts +23 -0
- package/src/preflight.ts +38 -7
- package/src/protocol.ts +2 -0
- package/src/redact.ts +111 -0
- package/src/relay-cli.ts +1 -24
- package/src/run-projection.ts +247 -0
- 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,214 @@
|
|
|
1
|
+
// The `flows status --cloud` page: one run record and its step rows, rendered
|
|
2
|
+
// in the grammar `cli/status.ts` already uses for a local run.
|
|
3
|
+
//
|
|
4
|
+
// Moved out of `cli/cloud-read.ts` so the one-shot read and the watched read
|
|
5
|
+
// (cli/cloud-live.ts) draw the identical page through the identical scrubber.
|
|
6
|
+
// A watched frame that redacted differently to the page it replaces would be
|
|
7
|
+
// a leak nobody could see from either file alone.
|
|
8
|
+
//
|
|
9
|
+
// Live rows are the part this view has that the local one does not have to
|
|
10
|
+
// think about: Cloud's step snapshot is the only evidence, and where it is
|
|
11
|
+
// silent the row stays silent. An elapsed time is derived only for a step that
|
|
12
|
+
// is demonstrably running, an attempt number is printed only where the
|
|
13
|
+
// snapshot establishes one, and neither a maximum-attempt denominator nor a
|
|
14
|
+
// wait id is invented — Cloud's step rows carry neither.
|
|
15
|
+
import { isCloudRunActive } from '../cloud-run-record.js';
|
|
16
|
+
import { redact } from '../redact.js';
|
|
17
|
+
import { ago, dollars, errorLines, safe, thousands } from './cloud-format.js';
|
|
18
|
+
import { formatDuration } from './status.js';
|
|
19
|
+
const GLYPH = {
|
|
20
|
+
completed: '✓', succeeded: '✓', failed: '✗', cancelled: '✗',
|
|
21
|
+
running: '↻', backoff: '↻', waiting: '⏸', needs_human: '⏸',
|
|
22
|
+
pending: '○', queued: '○',
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Step statuses that mean the step is in flight, in the local view's
|
|
26
|
+
* vocabulary (`cli/status.ts`). These are the rows with no `durationMs` and no
|
|
27
|
+
* `endTime`: their timing has to be derived, and their attempt number is the
|
|
28
|
+
* one being attempted rather than a count of the ones that finished.
|
|
29
|
+
*/
|
|
30
|
+
const ACTIVE_STEP_STATUSES = ['running', 'backoff', 'waiting', 'needs_human'];
|
|
31
|
+
function glyph(step) {
|
|
32
|
+
if (step.status === 'completed' && step.completion_reason !== null && step.completion_reason !== 'success')
|
|
33
|
+
return '✗';
|
|
34
|
+
return GLYPH[step.status] ?? '○';
|
|
35
|
+
}
|
|
36
|
+
/** The `steps N: 3 done · 1 running` line, counted off whatever Cloud called each status. */
|
|
37
|
+
function stepCounts(steps) {
|
|
38
|
+
const counts = new Map();
|
|
39
|
+
for (const step of steps)
|
|
40
|
+
counts.set(step.status, (counts.get(step.status) ?? 0) + 1);
|
|
41
|
+
const parts = [...counts].map(([status, count]) => `${count} ${status}`);
|
|
42
|
+
return `steps ${steps.length}${parts.length === 0 ? '' : `: ${parts.join(' · ')}`}`;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* How long an in-flight step has been in flight.
|
|
46
|
+
*
|
|
47
|
+
* Only from a start timestamp the row actually carries, and only while the row
|
|
48
|
+
* says the step has not ended: a finished step whose `endTime` is missing keeps
|
|
49
|
+
* whatever duration Cloud reported rather than being advanced to now, which
|
|
50
|
+
* would make a step that ended an hour ago look like it is still burning. A
|
|
51
|
+
* start in the future is clock skew between Cloud and here, not negative time,
|
|
52
|
+
* so it clamps to zero.
|
|
53
|
+
*/
|
|
54
|
+
function liveElapsed(step, now) {
|
|
55
|
+
if (!ACTIVE_STEP_STATUSES.includes(step.status) || step.ended_at !== null || step.started_at === null)
|
|
56
|
+
return null;
|
|
57
|
+
const started = Date.parse(step.started_at);
|
|
58
|
+
return Number.isFinite(started) ? Math.max(0, now - started) : null;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The attempt cell.
|
|
62
|
+
*
|
|
63
|
+
* A finished step counts the attempt records Cloud kept. An in-flight step
|
|
64
|
+
* wants the number of the attempt *now running*, and `attempts` cannot supply
|
|
65
|
+
* it: those entries are completion records, so during a second attempt the
|
|
66
|
+
* array still holds one entry and would print `attempt 1`. `retryCount` plus
|
|
67
|
+
* one is that number — but only where the row also shows the step was
|
|
68
|
+
* dispatched, because a row with no start timestamp has not attempted
|
|
69
|
+
* anything and `attempt 1` would be a claim about work that has not begun.
|
|
70
|
+
* Where neither establishes it, the cell is omitted: the local view prints no
|
|
71
|
+
* attempt at zero either. No `/max` denominator — Cloud's step rows carry no
|
|
72
|
+
* maximum, and printing one would invent a budget.
|
|
73
|
+
*/
|
|
74
|
+
function attemptCell(step) {
|
|
75
|
+
if (!ACTIVE_STEP_STATUSES.includes(step.status)) {
|
|
76
|
+
const attempts = step.attempts.length;
|
|
77
|
+
return attempts > 0 ? `${attempts} attempt${attempts === 1 ? '' : 's'}` : null;
|
|
78
|
+
}
|
|
79
|
+
if (step.retry_count === null || step.started_at === null)
|
|
80
|
+
return null;
|
|
81
|
+
return `attempt ${Math.max(0, Math.trunc(step.retry_count)) + 1}`;
|
|
82
|
+
}
|
|
83
|
+
function renderStep(step, runId, idWidth, now) {
|
|
84
|
+
const cells = [
|
|
85
|
+
safe(step.step_name).slice(0, 24).padEnd(idWidth),
|
|
86
|
+
step.step_type.padEnd(13),
|
|
87
|
+
step.status.padEnd(11),
|
|
88
|
+
];
|
|
89
|
+
const attempt = attemptCell(step);
|
|
90
|
+
if (attempt !== null)
|
|
91
|
+
cells.push(attempt);
|
|
92
|
+
// The derived time first, not second: a row that is still in flight can
|
|
93
|
+
// carry a `wallclockMs` from the attempt that already ended, and preferring
|
|
94
|
+
// it would freeze the cell at that attempt's duration while the step runs
|
|
95
|
+
// on. `liveElapsed` is null for every row that is not demonstrably in
|
|
96
|
+
// flight, so a finished row still prints the duration Cloud reported.
|
|
97
|
+
const elapsed = liveElapsed(step, now) ?? step.duration_ms;
|
|
98
|
+
if (elapsed !== null)
|
|
99
|
+
cells.push(formatDuration(elapsed));
|
|
100
|
+
if (step.completion_reason !== null)
|
|
101
|
+
cells.push(safe(step.completion_reason));
|
|
102
|
+
if (step.gate !== null)
|
|
103
|
+
cells.push(`gate: ${safe(step.gate.gate)} ${safe(step.gate.verdict)}`);
|
|
104
|
+
const lines = [` ${glyph(step)} ${cells.join(' ')}`.trimEnd()];
|
|
105
|
+
if (step.gate !== null && step.gate.verdict !== 'pass' && step.gate.detail.length > 0) {
|
|
106
|
+
lines.push(` gate: ${safe(step.gate.gate)} ${step.gate.verdict.toUpperCase()} — ${JSON.stringify(safe(step.gate.detail))}`);
|
|
107
|
+
}
|
|
108
|
+
const transcript = step.transcript;
|
|
109
|
+
if (transcript !== null) {
|
|
110
|
+
const facts = [
|
|
111
|
+
transcript.model === null ? null : safe(transcript.model),
|
|
112
|
+
transcript.num_turns === null ? null : `${transcript.num_turns} turn${transcript.num_turns === 1 ? '' : 's'}`,
|
|
113
|
+
transcript.total_calls === null ? null : `${transcript.total_calls} tool call${transcript.total_calls === 1 ? '' : 's'}`,
|
|
114
|
+
transcript.total_cost_usd === null ? null : dollars(transcript.total_cost_usd),
|
|
115
|
+
].filter((fact) => fact !== null);
|
|
116
|
+
lines.push(` transcript (attempt ${transcript.attempt ?? step.attempts.length})${facts.length === 0 ? '' : `: ${facts.join(' · ')}`}`);
|
|
117
|
+
if (transcript.frames_total !== null || transcript.bytes_total !== null) {
|
|
118
|
+
const frames = transcript.frames_total === null ? ''
|
|
119
|
+
: `${thousands(transcript.frames_kept ?? transcript.frames_total)} of ${thousands(transcript.frames_total)} frames`;
|
|
120
|
+
const bytes = transcript.bytes_total === null ? '' : `${thousands(transcript.bytes_total)} bytes`;
|
|
121
|
+
const cut = transcript.truncated ? ', truncated' : '';
|
|
122
|
+
lines.push(` ${[frames, bytes].filter((part) => part.length > 0).join(', ')}${cut}`);
|
|
123
|
+
}
|
|
124
|
+
if (transcript.tokens_in !== null || transcript.tokens_out !== null) {
|
|
125
|
+
const cache = [
|
|
126
|
+
transcript.cache_read === null ? null : `${thousands(transcript.cache_read)} cache read`,
|
|
127
|
+
transcript.cache_creation === null ? null : `${thousands(transcript.cache_creation)} cache write`,
|
|
128
|
+
].filter((part) => part !== null);
|
|
129
|
+
lines.push(` ${thousands(transcript.tokens_in ?? 0)} in / ${thousands(transcript.tokens_out ?? 0)} out`
|
|
130
|
+
+ `${cache.length === 0 ? '' : ` · ${cache.join(' · ')}`}`);
|
|
131
|
+
}
|
|
132
|
+
if (transcript.tools.length > 0) {
|
|
133
|
+
lines.push(` tools: ${transcript.tools.map((tool) => `${safe(tool.name)} ×${tool.calls ?? 0}${tool.errors ? ` (${tool.errors} error${tool.errors === 1 ? '' : 's'})` : ''}`).join(', ')}`);
|
|
134
|
+
}
|
|
135
|
+
for (const call of transcript.last_calls) {
|
|
136
|
+
const excerpt = call.input_excerpt === null ? '' : ` ${safe(call.input_excerpt).slice(0, 120)}`;
|
|
137
|
+
lines.push(` call ${call.seq ?? '?'} ${safe(call.name)}${excerpt} → ${thousands(call.result_bytes ?? 0)} bytes`);
|
|
138
|
+
}
|
|
139
|
+
lines.push(` artifacts: ${transcript.artifacts.length === 0
|
|
140
|
+
? 'none' : transcript.artifacts.slice(0, 10).map(safe).join(', ')}`);
|
|
141
|
+
}
|
|
142
|
+
if (step.sandbox_id.length > 0)
|
|
143
|
+
lines.push(` logs: flows logs ${runId} --step ${safe(step.sandbox_id)}`);
|
|
144
|
+
return lines;
|
|
145
|
+
}
|
|
146
|
+
export function renderCloudStatus(run, steps, now) {
|
|
147
|
+
let tokensIn = 0;
|
|
148
|
+
let tokensOut = 0;
|
|
149
|
+
let cost = 0;
|
|
150
|
+
for (const step of steps) {
|
|
151
|
+
tokensIn += step.tokens_in ?? 0;
|
|
152
|
+
tokensOut += step.tokens_out ?? 0;
|
|
153
|
+
cost += step.cost_usd ?? 0;
|
|
154
|
+
}
|
|
155
|
+
// Summed from the step rows, because the run record carries no total. Cloud
|
|
156
|
+
// stores `costUsd` as a float, so this is a float sum — not the exact decimal
|
|
157
|
+
// addition the local journal fold does (run-state.ts `addDollars`). Shown to
|
|
158
|
+
// six places and labelled `spend`, the same word the local view uses.
|
|
159
|
+
const spend = `${thousands(tokensIn)} in / ${thousands(tokensOut)} out / ${dollars(cost)}`;
|
|
160
|
+
const finished = run.completion_reason === null ? '' : ` finished ${safe(run.completion_reason)}`;
|
|
161
|
+
const lines = [
|
|
162
|
+
`RUN ${run.run_id} ${safe(run.name)} ${run.status} started ${ago(run.created_at, now)}${finished} spend ${spend}`,
|
|
163
|
+
stepCounts(steps),
|
|
164
|
+
];
|
|
165
|
+
// `steps 0` alone reads as "this run has no steps", which is a claim about
|
|
166
|
+
// the run. For a run that is still going it is a fact about the snapshot:
|
|
167
|
+
// Cloud served no rows, this time.
|
|
168
|
+
if (steps.length === 0 && isCloudRunActive(run.status))
|
|
169
|
+
lines.push('No step snapshot available yet.');
|
|
170
|
+
if (run.authority !== null) {
|
|
171
|
+
const facts = [
|
|
172
|
+
run.authority.surface_version === null ? null : `surface ${run.authority.surface_version}`,
|
|
173
|
+
run.authority.artifact_sha256 === null ? null : `artifact ${run.authority.artifact_sha256.slice(0, 12)}`,
|
|
174
|
+
run.authority.source_commit === null ? null : `commit ${run.authority.source_commit.slice(0, 12)}`,
|
|
175
|
+
].filter((fact) => fact !== null);
|
|
176
|
+
if (facts.length > 0)
|
|
177
|
+
lines.push(`authority ${facts.join(' · ')}`);
|
|
178
|
+
}
|
|
179
|
+
if (run.pull_request_url !== null)
|
|
180
|
+
lines.push(`pr ${run.pull_request_url}`);
|
|
181
|
+
if (run.error !== null)
|
|
182
|
+
lines.push('error', ...errorLines(run.error, ' '));
|
|
183
|
+
lines.push('');
|
|
184
|
+
const idWidth = Math.max(4, ...steps.map((step) => Math.min(24, step.step_name.length)));
|
|
185
|
+
for (const step of steps)
|
|
186
|
+
lines.push(...renderStep(step, run.run_id, idWidth, now));
|
|
187
|
+
return lines;
|
|
188
|
+
}
|
|
189
|
+
/** Every free-text field of the run record, through the status page's redactor. */
|
|
190
|
+
export function scrubRun(run, env) {
|
|
191
|
+
return {
|
|
192
|
+
...run,
|
|
193
|
+
name: redact(run.name, env),
|
|
194
|
+
error: run.error === null ? null : redact(run.error, env),
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
/** The same, for the step rows — including every string inside the digest. */
|
|
198
|
+
export function scrubSteps(steps, env) {
|
|
199
|
+
return steps.map((step) => ({
|
|
200
|
+
...step,
|
|
201
|
+
output_summary: step.output_summary === null ? null : redact(step.output_summary, env),
|
|
202
|
+
gate: step.gate === null ? null : { ...step.gate, detail: redact(step.gate.detail, env) },
|
|
203
|
+
transcript: step.transcript === null ? null : {
|
|
204
|
+
...step.transcript,
|
|
205
|
+
model: step.transcript.model === null ? null : redact(step.transcript.model, env),
|
|
206
|
+
last_calls: step.transcript.last_calls.map((call) => ({
|
|
207
|
+
...call,
|
|
208
|
+
input_excerpt: call.input_excerpt === null ? null : redact(call.input_excerpt, env),
|
|
209
|
+
})),
|
|
210
|
+
artifacts: step.transcript.artifacts.map((path) => redact(path, env)),
|
|
211
|
+
},
|
|
212
|
+
}));
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=cloud-status-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-status-view.js","sourceRoot":"","sources":["../../src/cli/cloud-status-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direct-run.d.ts","sourceRoot":"","sources":["../../src/cli/direct-run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"direct-run.d.ts","sourceRoot":"","sources":["../../src/cli/direct-run.ts"],"names":[],"mappings":"AAmBA,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAEzB,MAAM,UAAU,CAAC;AAElB,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,YAAY,CAAC,CA4KvB"}
|
package/dist/cli/direct-run.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { onWorkerFailure } from '../worker-lease.js';
|
|
1
2
|
import { McpStepError } from '../authored-mcp.js';
|
|
2
3
|
import { randomUUID } from 'node:crypto';
|
|
3
4
|
import { authoredLocalAgentStream } from '../authored-admission.js';
|
|
@@ -13,6 +14,7 @@ import { DirectInputError, parseDirectInput } from '../direct-input.js';
|
|
|
13
14
|
import { JournalClient } from '../journal-client.js';
|
|
14
15
|
import { inputFailureReport } from './check.js';
|
|
15
16
|
import { checkAuthoredTriggers } from './check-triggers.js';
|
|
17
|
+
import { authoredInput, authoredWorkerRemedy, localAgentRemedy } from './local-agent-remedy.js';
|
|
16
18
|
import { authoredCompletion, authoredHumanParked, authoredStepFailure, connect, emptyReport, fromCheckReport, protocolFailure, socketFor, } from './run.js';
|
|
17
19
|
export async function runDirectFlow(path, inputArgument, dataDir, options = {}) {
|
|
18
20
|
let input;
|
|
@@ -60,7 +62,7 @@ export async function runDirectFlow(path, inputArgument, dataDir, options = {})
|
|
|
60
62
|
await llmClient.connect();
|
|
61
63
|
await llmClient.hello('flows-local-llm');
|
|
62
64
|
localLlm = new LlmWorker(llmClient, `${localAgent.stream}-llm`, workerCapacity);
|
|
63
|
-
localLlm.on('error', error => { llmFailure = error; client.close(); });
|
|
65
|
+
localLlm.on('error', onWorkerFailure('local-llm', error => { llmFailure = error; client.close(); }));
|
|
64
66
|
await localLlm.attach();
|
|
65
67
|
}
|
|
66
68
|
const result = await executeDurableAuthoredFlow(checked.loaded, client, input, {
|
|
@@ -70,6 +72,7 @@ export async function runDirectFlow(path, inputArgument, dataDir, options = {})
|
|
|
70
72
|
...(localAgent === undefined ? {} : { workerCapacity }),
|
|
71
73
|
lifecycle: {
|
|
72
74
|
onProgress: options.onProgress,
|
|
75
|
+
...(options.onRunStarted !== undefined ? { onRunStarted: options.onRunStarted } : {}),
|
|
73
76
|
...(options.signal !== undefined ? { signal: options.signal } : {}),
|
|
74
77
|
...(options.onWait !== undefined ? { onWait: options.onWait } : {}),
|
|
75
78
|
},
|
|
@@ -137,12 +140,23 @@ export async function runDirectFlow(path, inputArgument, dataDir, options = {})
|
|
|
137
140
|
...base,
|
|
138
141
|
ok: false,
|
|
139
142
|
runId: error.runId,
|
|
143
|
+
rootRunId: error.rootRunId,
|
|
140
144
|
socketPath,
|
|
141
145
|
status: 'parked',
|
|
146
|
+
parkCause: error.parkCause,
|
|
142
147
|
diagnostics: [...base.diagnostics, {
|
|
143
148
|
severity: 'parked',
|
|
144
149
|
kind: 'run_parked',
|
|
145
|
-
|
|
150
|
+
// The remedy is rendered here rather than by the child's own
|
|
151
|
+
// `classifyOutcome`, which is deliberately silent for authored
|
|
152
|
+
// paths: this is the only frame that knows both the flow path and
|
|
153
|
+
// the `--input` argument a new run has to repeat, and it knows
|
|
154
|
+
// whether a worker was already attached.
|
|
155
|
+
//
|
|
156
|
+
// `inputArgument` is the word this process was invoked with, so a
|
|
157
|
+
// run started from a file names that file rather than the megabyte
|
|
158
|
+
// inside it — the thing the journal can no longer tell a resume.
|
|
159
|
+
message: error.message + localAgentRemedy(authoredWorkerRemedy(error.parkCause, options.localAgent === true, { path, input: authoredInput(inputArgument), dataDir })),
|
|
146
160
|
}],
|
|
147
161
|
},
|
|
148
162
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direct-run.js","sourceRoot":"","sources":["../../src/cli/direct-run.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"direct-run.js","sourceRoot":"","sources":["../../src/cli/direct-run.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/hn-monitor.d.ts
CHANGED
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `flows hn-monitor start` — CLI-inlined proactive workload for gate 2.
|
|
3
|
-
*
|
|
4
|
-
* runHnMonitor is a public function (not a class) that composes the
|
|
5
|
-
* primitives directly: connect journal → hello → attach agent worker →
|
|
6
|
-
* loop pollHackerNewsOnce → drain on abort → close.
|
|
7
|
-
*
|
|
8
|
-
* Poll errors classify into two shapes only:
|
|
9
|
-
* - `instanceof HnTransientFetchError` → log and continue next tick.
|
|
10
|
-
* - anything else → non-transient (journal failure OR programmer
|
|
11
|
-
* error); log with the actual class name and terminate (fail-closed
|
|
12
|
-
* per covenant 2).
|
|
13
|
-
*/
|
|
14
1
|
import { type Fetcher } from '../hn-poller.js';
|
|
15
2
|
import type { EventSubmitResult, HelloResult } from '../protocol.js';
|
|
16
3
|
import type { CliIo } from '../cli.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hn-monitor.d.ts","sourceRoot":"","sources":["../../src/cli/hn-monitor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hn-monitor.d.ts","sourceRoot":"","sources":["../../src/cli/hn-monitor.ts"],"names":[],"mappings":"AAiBA,OAAO,EAA6C,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI1F,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAQ,MAAM,gBAAgB,CAAC;AAC3E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAIvC;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5C,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjH,KAAK,IAAI,IAAI,CAAC;CACf;AAED,sEAAsE;AACtE,MAAM,WAAW,eAAe;IAC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,UAAU,mBAAmB;IAC3B,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAChE,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3G,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,UAAU,mBAAmB;IAC3B,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wDAAwD;AACxD,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,CAAC;AAE5F;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAgBnE;AAoDD;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAmGjF"}
|
package/dist/cli/hn-monitor.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { onWorkerFailure } from '../worker-lease.js';
|
|
1
2
|
/**
|
|
2
3
|
* `flows hn-monitor start` — CLI-inlined proactive workload for gate 2.
|
|
3
4
|
*
|
|
@@ -102,7 +103,7 @@ async function defaultAttachWorker(client, onWorkerError) {
|
|
|
102
103
|
// synchronously, bypasses the drain-aware close(), and crashes the
|
|
103
104
|
// process. Subscribe BEFORE attach so an error during attach is not
|
|
104
105
|
// lost.
|
|
105
|
-
worker.on('error', onWorkerError);
|
|
106
|
+
worker.on('error', onWorkerFailure('hn-monitor', onWorkerError));
|
|
106
107
|
await worker.attach();
|
|
107
108
|
return worker;
|
|
108
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hn-monitor.js","sourceRoot":"","sources":["../../src/cli/hn-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAgB,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAmExC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,mBAAmB,CAAI,IAAO,EAAE,QAAgB;IAC9D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,KAAK,GAAI,IAA4B,CAAC,KAAK,CAAC;IAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC3D,MAAM,GAAG,GAAI,IAA0B,CAAC,GAAG,CAAC;QAC5C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5D,0EAA0E;QAC1E,sEAAsE;QACtE,uBAAuB;QACvB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3D,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC;AAED,+DAA+D;AAC/D,SAAS,kBAAkB,CAAC,EAAU,EAAE,MAAoB;IAC1D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YAAC,OAAO,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAC3C,IAAI,KAAgD,CAAC;QACrD,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,IAAI,KAAK,KAAK,SAAS;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,UAAkB;IACpD,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACvB,MAAM,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,MAAqB,EACrB,aAAqC;IAErC,MAAM,IAAI,GAAS;QACjB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;QACrD,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,qEAAqE;IACrE,kEAAkE;IAClE,kEAAkE;IAClE,kEAAkE;IAClE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE;QACrC,QAAQ,EAAE,cAAc,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI;KACL,CAAC,CAAC;IACH,uEAAuE;IACvE,8DAA8D;IAC9D,mEAAmE;IACnE,oEAAoE;IACpE,QAAQ;IACR,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"hn-monitor.js","sourceRoot":"","sources":["../../src/cli/hn-monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { ParkCause } from '../failure-kinds.js';
|
|
2
|
+
/**
|
|
3
|
+
* What to tell someone whose run stopped for want of an agent worker.
|
|
4
|
+
*
|
|
5
|
+
* A closed union rather than a bag of optional fields: the remedy for a spec
|
|
6
|
+
* run is a *new* run, for a spec resume it is *this* run, and for an authored
|
|
7
|
+
* `.flow.ts` it is a new run that must carry the same `--input` — three
|
|
8
|
+
* different sentences, and no combination of them is meaningful. `attached`
|
|
9
|
+
* is the case the message used to get wrong by omission: a worker WAS offered
|
|
10
|
+
* and none of them was eligible, so naming the flag again is not the fix.
|
|
11
|
+
*/
|
|
12
|
+
export type LocalAgentRemedy =
|
|
13
|
+
/** Nothing to say: not a worker park, or the caller renders it elsewhere. */
|
|
14
|
+
{
|
|
15
|
+
kind: 'none';
|
|
16
|
+
} | {
|
|
17
|
+
kind: 'attached';
|
|
18
|
+
} | {
|
|
19
|
+
kind: 'spec-run';
|
|
20
|
+
path: string;
|
|
21
|
+
dataDir?: string;
|
|
22
|
+
} | {
|
|
23
|
+
kind: 'spec-resume';
|
|
24
|
+
runId: string;
|
|
25
|
+
dataDir?: string;
|
|
26
|
+
} | {
|
|
27
|
+
kind: 'authored-run';
|
|
28
|
+
path: string;
|
|
29
|
+
input: AuthoredInput;
|
|
30
|
+
dataDir?: string;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* The `--input` argument a new run of an authored flow would have to repeat.
|
|
34
|
+
*
|
|
35
|
+
* Three outcomes, not an optional string, because each is a different sentence
|
|
36
|
+
* and only one of them ends in a command. None of them is `{}`: fabricating an
|
|
37
|
+
* input would hand over a command that runs a different flow invocation than
|
|
38
|
+
* the one that parked.
|
|
39
|
+
*/
|
|
40
|
+
export type AuthoredInput =
|
|
41
|
+
/** The argument this run was started with, rendered back verbatim. */
|
|
42
|
+
{
|
|
43
|
+
kind: 'inline';
|
|
44
|
+
argument: string;
|
|
45
|
+
}
|
|
46
|
+
/** The journal recorded no input argument to repeat. */
|
|
47
|
+
| {
|
|
48
|
+
kind: 'absent';
|
|
49
|
+
}
|
|
50
|
+
/** Recorded, but too many bytes to hand a shell as one word. */
|
|
51
|
+
| {
|
|
52
|
+
kind: 'oversized';
|
|
53
|
+
bytes: number;
|
|
54
|
+
};
|
|
55
|
+
/** How a recorded input argument should be rendered, given its size. */
|
|
56
|
+
export declare function authoredInput(argument: string | undefined): AuthoredInput;
|
|
57
|
+
/**
|
|
58
|
+
* The remedy clause appended to a worker-park diagnostic, with a leading
|
|
59
|
+
* space, or `''` when there is nothing to add.
|
|
60
|
+
*/
|
|
61
|
+
export declare function localAgentRemedy(remedy: LocalAgentRemedy): string;
|
|
62
|
+
/**
|
|
63
|
+
* Which remedy an authored `.flow.ts` park gets, decided once for both authored
|
|
64
|
+
* boundaries (`cli/direct-run.ts` on a fresh run, `resumeFlow` on a resume).
|
|
65
|
+
*
|
|
66
|
+
* The cause is trusted, not guessed: anything other than `worker_unavailable` —
|
|
67
|
+
* including an absent cause — yields `none`, so a `needs_human` recovery wait is
|
|
68
|
+
* never answered with "attach a worker", and an unclassified park says nothing
|
|
69
|
+
* at all rather than something plausible.
|
|
70
|
+
*
|
|
71
|
+
* `path` is optional because the caller may only have the journal to go on. A
|
|
72
|
+
* park with no known flow path yields `none` for the same reason an unknown
|
|
73
|
+
* input yields prose: the point of this clause is a command someone can run.
|
|
74
|
+
*/
|
|
75
|
+
export declare function authoredWorkerRemedy(parkCause: ParkCause | undefined, attached: boolean, run: {
|
|
76
|
+
path?: string;
|
|
77
|
+
input: AuthoredInput;
|
|
78
|
+
dataDir?: string;
|
|
79
|
+
}): LocalAgentRemedy;
|
|
80
|
+
//# sourceMappingURL=local-agent-remedy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-agent-remedy.d.ts","sourceRoot":"","sources":["../../src/cli/local-agent-remedy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB;AAC1B,6EAA6E;AAC3E;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,aAAa,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnF;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa;AACvB,sEAAsE;AACpE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AACtC,wDAAwD;GACtD;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE;AACpB,gEAAgE;GAC9D;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAezC,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAIzE;AAYD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAoBjE;AA4BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,aAAa,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D,gBAAgB,CAKlB"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { resumeCommand } from '../authored-human.js';
|
|
2
|
+
import { shellQuote, shellWord } from '../shell-word.js';
|
|
3
|
+
/**
|
|
4
|
+
* The largest `--input` value worth printing inline, in bytes.
|
|
5
|
+
*
|
|
6
|
+
* Linux caps a single `execve` argument at `MAX_ARG_STRLEN` — 32 pages,
|
|
7
|
+
* 131072 bytes including the terminating NUL — independently of the much
|
|
8
|
+
* larger `ARG_MAX` total. `MAX_DIRECT_INPUT_BYTES` admits a full mebibyte, so
|
|
9
|
+
* a run started from a perfectly ordinary input file can have recorded more
|
|
10
|
+
* input than any shell can pass back. Printing it anyway yields a command that
|
|
11
|
+
* dies with `Argument list too long` before the CLI is even reached, which is
|
|
12
|
+
* no better than the park it was meant to answer.
|
|
13
|
+
*/
|
|
14
|
+
const MAX_INLINE_INPUT_BYTES = 131_071;
|
|
15
|
+
/** How a recorded input argument should be rendered, given its size. */
|
|
16
|
+
export function authoredInput(argument) {
|
|
17
|
+
if (argument === undefined)
|
|
18
|
+
return { kind: 'absent' };
|
|
19
|
+
const bytes = Buffer.byteLength(argument, 'utf8');
|
|
20
|
+
return bytes > MAX_INLINE_INPUT_BYTES ? { kind: 'oversized', bytes } : { kind: 'inline', argument };
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The declared-surface caveat, stated as the condition it is.
|
|
24
|
+
*
|
|
25
|
+
* A step that declares a workspace or a stream needs a worker holding those
|
|
26
|
+
* pins, and the local agent worker holds only its own stream. That is worth
|
|
27
|
+
* saying next to the command — but it is a caveat on the remedy, not a
|
|
28
|
+
* diagnosis of this park, and it is phrased so it cannot be read as one.
|
|
29
|
+
*/
|
|
30
|
+
const PINS = 'Declared workspace or stream surfaces require a worker that holds their pins.';
|
|
31
|
+
/**
|
|
32
|
+
* The remedy clause appended to a worker-park diagnostic, with a leading
|
|
33
|
+
* space, or `''` when there is nothing to add.
|
|
34
|
+
*/
|
|
35
|
+
export function localAgentRemedy(remedy) {
|
|
36
|
+
switch (remedy.kind) {
|
|
37
|
+
case 'none':
|
|
38
|
+
return '';
|
|
39
|
+
case 'attached':
|
|
40
|
+
// Never "pass --local-agent": it was passed. The honest report is that
|
|
41
|
+
// a worker was offered and the daemon matched none of them to this step.
|
|
42
|
+
return ' A local agent worker is already attached to this run, so passing --local-agent again'
|
|
43
|
+
+ ' changes nothing: no attached worker was eligible for this step.'
|
|
44
|
+
+ ` ${PINS} The local agent worker holds only its own stream.`;
|
|
45
|
+
case 'spec-run':
|
|
46
|
+
return ` To start a new run with a local agent worker: ${newRunCommand(remedy.path, undefined, remedy.dataDir)}. ${PINS}`;
|
|
47
|
+
case 'spec-resume':
|
|
48
|
+
// This run is resumable, so the remedy is this run — not a new one.
|
|
49
|
+
return ` To continue this run with a local agent worker: ${resumeCommand(remedy.runId, remedy.dataDir, true)}. ${PINS}`;
|
|
50
|
+
case 'authored-run':
|
|
51
|
+
return authoredRunRemedy(remedy);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Either a runnable new run, or the requirement stated in prose.
|
|
56
|
+
*
|
|
57
|
+
* Prose, not a command, whenever the `--input` cannot be printed as something
|
|
58
|
+
* a shell would deliver intact: a `.flow.ts` invocation without its `--input`
|
|
59
|
+
* is refused (`input_missing`), and a placeholder or a truncation in its place
|
|
60
|
+
* is worse than a sentence, because it looks runnable.
|
|
61
|
+
*/
|
|
62
|
+
function authoredRunRemedy(remedy) {
|
|
63
|
+
if (remedy.input.kind === 'inline') {
|
|
64
|
+
return ` To start a new run with a local agent worker: ${newRunCommand(remedy.path, remedy.input.argument, remedy.dataDir)}. ${PINS}`;
|
|
65
|
+
}
|
|
66
|
+
const requirement = ' A local agent worker is admitted at run start, so this run needs a new one.'
|
|
67
|
+
+ ` Starting one needs --local-agent, the flow path ${shellQuote(remedy.path)}, and the same`
|
|
68
|
+
+ ' --input this flow takes; ';
|
|
69
|
+
return requirement + (remedy.input.kind === 'absent'
|
|
70
|
+
? 'the journal recorded no input argument to repeat here.'
|
|
71
|
+
// Naming the size says which input, and says why this clause is prose:
|
|
72
|
+
// the recorded value is larger than one `execve` argument may be, so a
|
|
73
|
+
// printed `--input '<json>'` would fail before the CLI ran at all.
|
|
74
|
+
: `the journal recorded ${remedy.input.bytes} bytes of input, more than a shell`
|
|
75
|
+
+ ' can carry in one argument, so pass the input file this run was started from.')
|
|
76
|
+
+ ` ${PINS}`;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Which remedy an authored `.flow.ts` park gets, decided once for both authored
|
|
80
|
+
* boundaries (`cli/direct-run.ts` on a fresh run, `resumeFlow` on a resume).
|
|
81
|
+
*
|
|
82
|
+
* The cause is trusted, not guessed: anything other than `worker_unavailable` —
|
|
83
|
+
* including an absent cause — yields `none`, so a `needs_human` recovery wait is
|
|
84
|
+
* never answered with "attach a worker", and an unclassified park says nothing
|
|
85
|
+
* at all rather than something plausible.
|
|
86
|
+
*
|
|
87
|
+
* `path` is optional because the caller may only have the journal to go on. A
|
|
88
|
+
* park with no known flow path yields `none` for the same reason an unknown
|
|
89
|
+
* input yields prose: the point of this clause is a command someone can run.
|
|
90
|
+
*/
|
|
91
|
+
export function authoredWorkerRemedy(parkCause, attached, run) {
|
|
92
|
+
if (parkCause !== 'worker_unavailable')
|
|
93
|
+
return { kind: 'none' };
|
|
94
|
+
if (attached)
|
|
95
|
+
return { kind: 'attached' };
|
|
96
|
+
if (run.path === undefined)
|
|
97
|
+
return { kind: 'none' };
|
|
98
|
+
return { kind: 'authored-run', path: run.path, input: run.input, dataDir: run.dataDir };
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* `flows run --local-agent <path> [--input <input>] [--data-dir <dir>]`.
|
|
102
|
+
*
|
|
103
|
+
* The flag/path prefix is byte-for-byte what the spec-run message has always
|
|
104
|
+
* emitted, so the one thing people already grep for still matches. `--input`
|
|
105
|
+
* and `--data-dir` follow the path because the parser is order-insensitive
|
|
106
|
+
* (cli.ts `parseRunArgs`), and keeping the prefix intact matters more than
|
|
107
|
+
* mirroring the usage line's flag order.
|
|
108
|
+
*/
|
|
109
|
+
function newRunCommand(path, input, dataDir) {
|
|
110
|
+
return `flows run --local-agent ${shellQuote(path)}`
|
|
111
|
+
+ (input === undefined ? '' : ` --input ${shellQuote(input)}`)
|
|
112
|
+
// `shellWord` here, matching `resumeCommand`/`answerCommand`: a data dir is
|
|
113
|
+
// this machine's path, and the two renderings must not disagree.
|
|
114
|
+
+ (dataDir === undefined ? '' : ` --data-dir ${shellWord(dataDir)}`);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=local-agent-remedy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-agent-remedy.js","sourceRoot":"","sources":["../../src/cli/local-agent-remedy.ts"],"names":[],"mappings":"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"}
|