@sensigo/realm-cli 0.40.0 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/providers/agent-utils.d.ts +37 -13
- package/dist/agent/providers/agent-utils.d.ts.map +1 -1
- package/dist/agent/providers/agent-utils.js +92 -17
- package/dist/agent/providers/agent-utils.js.map +1 -1
- package/dist/agent/run-attach.d.ts.map +1 -1
- package/dist/agent/run-attach.js +8 -21
- package/dist/agent/run-attach.js.map +1 -1
- package/dist/commands/agent.d.ts +6 -0
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +28 -4
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/drain.d.ts.map +1 -1
- package/dist/commands/drain.js +60 -9
- package/dist/commands/drain.js.map +1 -1
- package/dist/commands/inspect.d.ts.map +1 -1
- package/dist/commands/inspect.js +20 -2
- package/dist/commands/inspect.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +61 -8
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/listen.d.ts +13 -0
- package/dist/commands/listen.d.ts.map +1 -1
- package/dist/commands/listen.js +36 -4
- package/dist/commands/listen.js.map +1 -1
- package/dist/commands/register.d.ts +1 -14
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +52 -56
- package/dist/commands/register.js.map +1 -1
- package/dist/commands/replay.d.ts.map +1 -1
- package/dist/commands/replay.js +4 -2
- package/dist/commands/replay.js.map +1 -1
- package/dist/commands/respond.d.ts.map +1 -1
- package/dist/commands/respond.js +30 -3
- package/dist/commands/respond.js.map +1 -1
- package/dist/commands/resume.d.ts.map +1 -1
- package/dist/commands/resume.js +3 -2
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/run.d.ts +35 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +246 -12
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +51 -8
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/validate.d.ts +31 -0
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +658 -132
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/watch.d.ts +43 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +366 -42
- package/dist/commands/watch.js.map +1 -1
- package/dist/commands/workflow-list.d.ts +16 -0
- package/dist/commands/workflow-list.d.ts.map +1 -0
- package/dist/commands/workflow-list.js +96 -0
- package/dist/commands/workflow-list.js.map +1 -0
- package/dist/commands-registry.d.ts.map +1 -1
- package/dist/commands-registry.js +2 -0
- package/dist/commands-registry.js.map +1 -1
- package/dist/extensions/load-project-extensions.d.ts.map +1 -1
- package/dist/extensions/load-project-extensions.js +9 -3
- package/dist/extensions/load-project-extensions.js.map +1 -1
- package/dist/index.js +22 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/admission-context.d.ts +58 -0
- package/dist/lib/admission-context.d.ts.map +1 -0
- package/dist/lib/admission-context.js +57 -0
- package/dist/lib/admission-context.js.map +1 -0
- package/dist/lib/load-workflow-for-admission.d.ts +69 -0
- package/dist/lib/load-workflow-for-admission.d.ts.map +1 -0
- package/dist/lib/load-workflow-for-admission.js +130 -0
- package/dist/lib/load-workflow-for-admission.js.map +1 -0
- package/dist/lib/loader-warnings.d.ts +28 -10
- package/dist/lib/loader-warnings.d.ts.map +1 -1
- package/dist/lib/loader-warnings.js +84 -30
- package/dist/lib/loader-warnings.js.map +1 -1
- package/package.json +4 -4
package/dist/commands/run.d.ts
CHANGED
|
@@ -1,3 +1,38 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import type { RunRecord } from '@sensigo/realm';
|
|
3
|
+
/**
|
|
4
|
+
* The detach map (issue #447): what to do next, for THIS run's state.
|
|
5
|
+
*
|
|
6
|
+
* Cancelling a dev-run prompt used to dump a raw Node stack over an unhandled AbortError, which
|
|
7
|
+
* reads like a crash. The run was always saved — every settled step persists before the next
|
|
8
|
+
* prompt — so the exit should say so, and then hand over the exact commands that work from here.
|
|
9
|
+
*
|
|
10
|
+
* The fork is on the RECORD, not on a guess, because two of the three states REFUSE most of the
|
|
11
|
+
* remedies and printing a command that will be rejected is worse than printing nothing:
|
|
12
|
+
*
|
|
13
|
+
* - TERMINAL — reachable for real: an external `realm run respond`, or a gate-expiry enactment,
|
|
14
|
+
* can terminalize this run while this process sits blocked on the prompt (the #291 race the
|
|
15
|
+
* fresh get below exists to catch). Inspect ONLY, because both other remedies refuse a
|
|
16
|
+
* terminal run, by two DIFFERENT mechanisms: `realm run abandon` throws STATE_RUN_TERMINAL
|
|
17
|
+
* (abandon-run.ts), while `realm agent --run-id` refuses through a separate uncoded check in
|
|
18
|
+
* resolveRunAttach (run-attach.ts) — a plain Error, not that code.
|
|
19
|
+
* - PENDING GATE — respond and inspect, and deliberately NO Discard line: `realm run abandon`
|
|
20
|
+
* REFUSES a run with a pending gate (STATE_TRANSITION_DENIED, abandon-run.ts) and tells you to
|
|
21
|
+
* resolve the gate first. The gate_id and choices come from the FROZEN record, the same source
|
|
22
|
+
* `respond` validates against, so what is printed is what will be accepted.
|
|
23
|
+
* - OTHERWISE — drive, inspect, or discard, all three of which apply.
|
|
24
|
+
*
|
|
25
|
+
* The choices are joined with `|` deliberately: this is a usage template showing alternation, not
|
|
26
|
+
* a list. (inspect renders them `', '` and the prompt `'/'`; three renderings, three purposes.)
|
|
27
|
+
* An empty `choices: []` renders an empty alternation — that run is already human-unresolvable.
|
|
28
|
+
* The authored form is a load error since issue #433; a GRANDFATHERED registered copy (one
|
|
29
|
+
* registered before #433 shipped) can still carry it and keeps running — not special-cased here
|
|
30
|
+
* either way.
|
|
31
|
+
*
|
|
32
|
+
* @internal Exported for testing only.
|
|
33
|
+
*/
|
|
34
|
+
export declare function renderDetachMap(record: RunRecord, promptStep: string | undefined, opts?: {
|
|
35
|
+
headline?: string;
|
|
36
|
+
}): string;
|
|
2
37
|
export declare const runCommand: Command;
|
|
3
38
|
//# sourceMappingURL=run.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,OAAO,KAAK,EAIV,SAAS,EACV,MAAM,gBAAgB,CAAC;AAexB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B,MAAM,CAgCR;AAmCD,eAAO,MAAM,UAAU,SAsWpB,CAAC"}
|
package/dist/commands/run.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import { createInterface } from 'node:readline/promises';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
-
import { loadWorkflowFromFile, JsonFileStore, findEligibleSteps, executeChain, submitHumanResponse, unmetCapabilities, capabilityWarning, } from '@sensigo/realm';
|
|
5
|
+
import { loadWorkflowFromFile, JsonFileStore, findEligibleSteps, executeChain, submitHumanResponse, unmetCapabilities, capabilityWarning, WorkflowError, deriveRunPhase, } from '@sensigo/realm';
|
|
6
|
+
import { renderLoadFailure } from '../lib/loader-warnings.js';
|
|
6
7
|
import { loadProjectExtensions } from '../extensions/load-project-extensions.js';
|
|
7
8
|
import { scheduleGateExpiryTimer } from '../agent/gate/gate-expiry-timer.js';
|
|
8
9
|
/**
|
|
@@ -14,6 +15,95 @@ function isWriterNonceRequired() {
|
|
|
14
15
|
const v = process.env['REALM_REQUIRE_WRITER_NONCE'];
|
|
15
16
|
return v !== undefined && v !== '' && v !== '0' && v !== 'false';
|
|
16
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* The detach map (issue #447): what to do next, for THIS run's state.
|
|
20
|
+
*
|
|
21
|
+
* Cancelling a dev-run prompt used to dump a raw Node stack over an unhandled AbortError, which
|
|
22
|
+
* reads like a crash. The run was always saved — every settled step persists before the next
|
|
23
|
+
* prompt — so the exit should say so, and then hand over the exact commands that work from here.
|
|
24
|
+
*
|
|
25
|
+
* The fork is on the RECORD, not on a guess, because two of the three states REFUSE most of the
|
|
26
|
+
* remedies and printing a command that will be rejected is worse than printing nothing:
|
|
27
|
+
*
|
|
28
|
+
* - TERMINAL — reachable for real: an external `realm run respond`, or a gate-expiry enactment,
|
|
29
|
+
* can terminalize this run while this process sits blocked on the prompt (the #291 race the
|
|
30
|
+
* fresh get below exists to catch). Inspect ONLY, because both other remedies refuse a
|
|
31
|
+
* terminal run, by two DIFFERENT mechanisms: `realm run abandon` throws STATE_RUN_TERMINAL
|
|
32
|
+
* (abandon-run.ts), while `realm agent --run-id` refuses through a separate uncoded check in
|
|
33
|
+
* resolveRunAttach (run-attach.ts) — a plain Error, not that code.
|
|
34
|
+
* - PENDING GATE — respond and inspect, and deliberately NO Discard line: `realm run abandon`
|
|
35
|
+
* REFUSES a run with a pending gate (STATE_TRANSITION_DENIED, abandon-run.ts) and tells you to
|
|
36
|
+
* resolve the gate first. The gate_id and choices come from the FROZEN record, the same source
|
|
37
|
+
* `respond` validates against, so what is printed is what will be accepted.
|
|
38
|
+
* - OTHERWISE — drive, inspect, or discard, all three of which apply.
|
|
39
|
+
*
|
|
40
|
+
* The choices are joined with `|` deliberately: this is a usage template showing alternation, not
|
|
41
|
+
* a list. (inspect renders them `', '` and the prompt `'/'`; three renderings, three purposes.)
|
|
42
|
+
* An empty `choices: []` renders an empty alternation — that run is already human-unresolvable.
|
|
43
|
+
* The authored form is a load error since issue #433; a GRANDFATHERED registered copy (one
|
|
44
|
+
* registered before #433 shipped) can still carry it and keeps running — not special-cased here
|
|
45
|
+
* either way.
|
|
46
|
+
*
|
|
47
|
+
* @internal Exported for testing only.
|
|
48
|
+
*/
|
|
49
|
+
export function renderDetachMap(record, promptStep, opts) {
|
|
50
|
+
// DERIVED, never the persisted field: a record can carry a stale `run_phase` that disagrees
|
|
51
|
+
// with what its own seal says (issue #432's class), and a map that names the wrong phase sends
|
|
52
|
+
// an operator to the wrong remedy.
|
|
53
|
+
const phase = deriveRunPhase(record);
|
|
54
|
+
const step = promptStep ?? record.pending_gate?.step_name ?? '(step unknown)';
|
|
55
|
+
// issue #468 — the default is the #447 cancel route's own claim, byte-identical. The stall
|
|
56
|
+
// route (below, in the loop) passes 'Workflow stalled': no prompt was ever cancelled there, and
|
|
57
|
+
// the hardcoded word would be a false statement about what just happened.
|
|
58
|
+
const headline = opts?.headline ?? 'Prompt cancelled';
|
|
59
|
+
const lines = [
|
|
60
|
+
`${headline} — detached from run '${record.id}' at step '${step}' (phase: ${phase}). The run is saved.`,
|
|
61
|
+
];
|
|
62
|
+
if (record.terminal_state) {
|
|
63
|
+
lines.push(` Inspect: realm run inspect ${record.id}`);
|
|
64
|
+
return lines.join('\n');
|
|
65
|
+
}
|
|
66
|
+
const gate = record.pending_gate;
|
|
67
|
+
if (gate !== undefined) {
|
|
68
|
+
lines.push(` Respond: realm run respond ${record.id} --gate ${gate.gate_id} --choice ${gate.choices.join('|')}`);
|
|
69
|
+
lines.push(` Inspect: realm run inspect ${record.id}`);
|
|
70
|
+
return lines.join('\n');
|
|
71
|
+
}
|
|
72
|
+
lines.push(` Drive it: realm agent --run-id ${record.id}`);
|
|
73
|
+
lines.push(` Inspect: realm run inspect ${record.id}`);
|
|
74
|
+
lines.push(` Discard: realm run abandon ${record.id}`);
|
|
75
|
+
return lines.join('\n');
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Asks until the answer is usable: empty ⇒ {}, invalid JSON or a non-object ⇒ says why
|
|
79
|
+
* and re-asks (issue #459 — operator input gets a re-prompt, never the #123 rethrow;
|
|
80
|
+
* `42`/`null`/`[1]` are valid JSON that would lie through the object cast, MA-executed).
|
|
81
|
+
* Cancellation is untouched BY CONSTRUCTION: `rl.question` sits OUTSIDE the try, so an
|
|
82
|
+
* ABORT_ERR rejection propagates straight to the #447 catch and its detach map.
|
|
83
|
+
*/
|
|
84
|
+
async function askJsonObject(rl, prompt) {
|
|
85
|
+
for (;;) {
|
|
86
|
+
const raw = await rl.question(prompt);
|
|
87
|
+
const trimmed = raw.trim();
|
|
88
|
+
if (trimmed === '')
|
|
89
|
+
return {};
|
|
90
|
+
let parsed;
|
|
91
|
+
try {
|
|
92
|
+
parsed = JSON.parse(trimmed);
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
if (!(err instanceof SyntaxError))
|
|
96
|
+
throw err; // belt — only JSON.parse is in the try
|
|
97
|
+
console.error(` Not valid JSON: ${err.message} — try again (Enter for {}).`);
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
101
|
+
console.error(' Not a JSON object — the step\'s output must be an object like {"key": "value"}. Try again (Enter for {}).');
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
return parsed;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
17
107
|
export const runCommand = new Command('run')
|
|
18
108
|
.argument('<path>', 'Path to workflow directory or workflow.yaml file')
|
|
19
109
|
.option('--params <json>', 'Initial run parameters as JSON string', '{}')
|
|
@@ -34,7 +124,15 @@ export const runCommand = new Command('run')
|
|
|
34
124
|
definition = loadWorkflowFromFile(filePath);
|
|
35
125
|
}
|
|
36
126
|
catch (err) {
|
|
37
|
-
|
|
127
|
+
// issue #425 — this catch wraps loadWorkflowFromFile ALONE, so everything it can see is
|
|
128
|
+
// a loader failure and the family split needs no else-arm here. A structural refusal
|
|
129
|
+
// renders verbatim; an unreadable file rides the helper's `Invalid: ` fallback, which
|
|
130
|
+
// replaces today's `Error loading workflow: ` prefix — a deliberate text change, so that
|
|
131
|
+
// one voice reaches an author from every command.
|
|
132
|
+
//
|
|
133
|
+
// No `err.warnings` render here: surfacing the lenient path's warnings on run/agent/
|
|
134
|
+
// listen stays out of scope (#424's stated non-goal).
|
|
135
|
+
console.error(renderLoadFailure(err instanceof WorkflowError ? err : String(err)));
|
|
38
136
|
process.exit(1);
|
|
39
137
|
}
|
|
40
138
|
// 1b. Load project extensions BEFORE run creation (fail-before-create).
|
|
@@ -60,6 +158,26 @@ export const runCommand = new Command('run')
|
|
|
60
158
|
console.error('Error: --params is not valid JSON');
|
|
61
159
|
process.exit(1);
|
|
62
160
|
}
|
|
161
|
+
// issue #426 — dev mode is interactive BY DESIGN: every step kind and every gate prompts
|
|
162
|
+
// on stdin (agent output, auto mock output, gate choices), so a non-TTY stdin can only
|
|
163
|
+
// ever EOF into ERR_USE_AFTER_CLOSE — and it did so AFTER the run was minted and its id
|
|
164
|
+
// printed, leaving a wedged `running` record behind on every scripted invocation.
|
|
165
|
+
//
|
|
166
|
+
// Refused BEFORE any store work, joining the "1b … BEFORE run creation" doctrine one
|
|
167
|
+
// member up. The placement is load → extensions → params → HERE, and each boundary is
|
|
168
|
+
// pinned: earlier than the load and the loader-voice cells lose their messages; earlier
|
|
169
|
+
// than extensions and the spawned orphan-manifest case loses its refusal; earlier than
|
|
170
|
+
// params and `--params '{'` reports the wrong problem.
|
|
171
|
+
//
|
|
172
|
+
// `!== true` rather than a truthiness test: isTTY is `undefined` on a pipe, never false.
|
|
173
|
+
if (process.stdin.isTTY !== true) {
|
|
174
|
+
console.error('Error: dev-mode run is interactive — it prompts on stdin for every step and gate, ' +
|
|
175
|
+
'and stdin here is not a terminal. No run was created. ' +
|
|
176
|
+
"Scripted flows: 'realm workflow test' drives fixtures; " +
|
|
177
|
+
"'realm listen' / 'realm agent' are the production drives. " +
|
|
178
|
+
'To run this workflow by hand, use a real terminal.');
|
|
179
|
+
process.exit(1);
|
|
180
|
+
}
|
|
63
181
|
// 3. Create store and initial run record
|
|
64
182
|
const store = new JsonFileStore();
|
|
65
183
|
// issue #207 PR-2 (D3 §5, mixed-wiring gap): construct a JsonTraceBufferStore beside the
|
|
@@ -82,9 +200,30 @@ export const runCommand = new Command('run')
|
|
|
82
200
|
console.warn(`⚠ ${capabilityWarning(req)}`);
|
|
83
201
|
}
|
|
84
202
|
// 4. Set up readline
|
|
85
|
-
|
|
203
|
+
//
|
|
204
|
+
// issue #458 — three load-bearing facts, in order: (a) prompts follow the SCREEN, not the
|
|
205
|
+
// pipe — with stdout redirected, the interactive surface (prompt text + echo) joins the
|
|
206
|
+
// reasons/maps that already print on stderr, and the log keeps the pure narrative (bash
|
|
207
|
+
// `read -p`'s norm, executed against every surveyed tool); (b) `terminal` keys on STDIN —
|
|
208
|
+
// the #426 guard above makes `process.stdin.isTTY` an invariant `true` here, and terminal
|
|
209
|
+
// mode is the only route into node's fixed ^C/^D AbortError path (nodejs/node#54030; the
|
|
210
|
+
// non-terminal path is unfixed and upstream-declined, nodejs/node#60344), which is what
|
|
211
|
+
// keeps cancellation ABORT_ERR-coded and the exit code truthful even with BOTH streams
|
|
212
|
+
// piped; (c) the both-piped corner cost — readline then writes prompts/echo/cursor codes
|
|
213
|
+
// into the stderr pipe and the human types blind — is accepted (matches bash's exact
|
|
214
|
+
// posture; a `/dev/tty` alternative is ecosystem-unprecedented in Node and
|
|
215
|
+
// documentation-discouraged).
|
|
216
|
+
const rl = createInterface({
|
|
217
|
+
input: process.stdin,
|
|
218
|
+
output: process.stdout.isTTY ? process.stdout : process.stderr,
|
|
219
|
+
terminal: process.stdin.isTTY,
|
|
220
|
+
});
|
|
86
221
|
// 5. Execution loop
|
|
87
222
|
let run = await store.get(runId);
|
|
223
|
+
// issue #447: which step the operator was answering for, assigned immediately before each
|
|
224
|
+
// question. The block-scoped names below are not visible from the catch, and the catch is
|
|
225
|
+
// where this is needed.
|
|
226
|
+
let promptStep;
|
|
88
227
|
try {
|
|
89
228
|
while (!run.terminal_state) {
|
|
90
229
|
// Handle open gate
|
|
@@ -105,6 +244,7 @@ export const runCommand = new Command('run')
|
|
|
105
244
|
definition,
|
|
106
245
|
registry,
|
|
107
246
|
});
|
|
247
|
+
promptStep = g.step_name;
|
|
108
248
|
const raw = await rl.question(` Choice [${g.choices.join('/')}]: `).finally(() => {
|
|
109
249
|
clearExpiryTimer();
|
|
110
250
|
});
|
|
@@ -123,14 +263,28 @@ export const runCommand = new Command('run')
|
|
|
123
263
|
}
|
|
124
264
|
else {
|
|
125
265
|
console.error(` ✗ ${respondResult.errors.join(', ')}\n`);
|
|
126
|
-
break
|
|
266
|
+
// issue #468 — a FRESH read, not a break: most of this arm's members are a live
|
|
267
|
+
// gate re-asking (a typo, a stale choice) — rl.question blocks, no hot spin. The
|
|
268
|
+
// members that are NOT retryable (the gate/run moved or terminalized elsewhere) are
|
|
269
|
+
// exactly what this read converges: the next iteration sees the real state and
|
|
270
|
+
// either re-prompts honestly or reaches the stall/tail. Mirrors the ok arm above.
|
|
271
|
+
run = await store.get(runId);
|
|
127
272
|
}
|
|
128
273
|
continue;
|
|
129
274
|
}
|
|
130
275
|
const eligibleSteps = findEligibleSteps(definition, run);
|
|
131
276
|
if (eligibleSteps.length === 0) {
|
|
132
277
|
console.error(`\nNo eligible steps in phase '${run.run_phase}'. Workflow stalled.`);
|
|
133
|
-
|
|
278
|
+
// issue #468 — hands the run back with a truthful map instead of silently exiting 0.
|
|
279
|
+
// A fresh read: the loop's own snapshot is already current here (nothing awaited
|
|
280
|
+
// since the last read reached this branch in the same iteration), but the fresh read
|
|
281
|
+
// is the doctrine this file already keeps for every detach point (#447) — kept for
|
|
282
|
+
// consistency, not because a staleness gap is constructible in this spot.
|
|
283
|
+
const record = await store.get(runId);
|
|
284
|
+
console.error(renderDetachMap(record, promptStep, { headline: 'Workflow stalled' }));
|
|
285
|
+
// process.exit SKIPS the finally (the catch's own rule, below), so close explicitly.
|
|
286
|
+
rl.close();
|
|
287
|
+
process.exit(1);
|
|
134
288
|
}
|
|
135
289
|
// Take the first eligible step (linear workflow for dev mode)
|
|
136
290
|
const stepName = eligibleSteps[0];
|
|
@@ -139,8 +293,8 @@ export const runCommand = new Command('run')
|
|
|
139
293
|
// Build dispatcher output based on execution type
|
|
140
294
|
let userOutput;
|
|
141
295
|
if (stepDef.execution === 'agent') {
|
|
142
|
-
|
|
143
|
-
userOutput =
|
|
296
|
+
promptStep = stepName;
|
|
297
|
+
userOutput = await askJsonObject(rl, ' Agent output JSON (Enter for {}): ');
|
|
144
298
|
}
|
|
145
299
|
else {
|
|
146
300
|
// auto step
|
|
@@ -149,8 +303,8 @@ export const runCommand = new Command('run')
|
|
|
149
303
|
: stepDef.uses_service !== undefined
|
|
150
304
|
? `service: ${stepDef.uses_service}`
|
|
151
305
|
: 'auto';
|
|
152
|
-
|
|
153
|
-
userOutput =
|
|
306
|
+
promptStep = stepName;
|
|
307
|
+
userOutput = await askJsonObject(rl, ` Mock output (${hint}) — JSON (Enter for {}): `);
|
|
154
308
|
}
|
|
155
309
|
const dispatcher = async () => userOutput;
|
|
156
310
|
const result = await executeChain(store, definition, {
|
|
@@ -178,15 +332,95 @@ export const runCommand = new Command('run')
|
|
|
178
332
|
}
|
|
179
333
|
else {
|
|
180
334
|
console.error(` ✗ ${result.status}: ${result.errors.join(', ')}\n`);
|
|
181
|
-
break
|
|
335
|
+
// issue #468 — a FRESH read, not a break: below the validation-exhaustion threshold
|
|
336
|
+
// the step is still eligible and this re-prompts it honestly; AT the threshold the
|
|
337
|
+
// run just terminalized in the store, and only a fresh read lets the while condition
|
|
338
|
+
// see that and exit to the tail — a bare continue would re-ask a dead run forever
|
|
339
|
+
// (verified: the mock chain exhausts and the answer never lands anywhere real).
|
|
340
|
+
run = await store.get(runId);
|
|
182
341
|
}
|
|
183
342
|
}
|
|
184
|
-
|
|
185
|
-
|
|
343
|
+
// Loop-head invariant (issue #468): exactly two exits from here — the while condition
|
|
344
|
+
// (terminal) and the stall (mapped + exit 1). Every ✗ arm above re-reads then
|
|
345
|
+
// continues; no `break` remains in this loop.
|
|
346
|
+
}
|
|
347
|
+
catch (err) {
|
|
348
|
+
// issue #447 — the operator cancelled the prompt. Ctrl-D at a pending `rl.question`
|
|
349
|
+
// rejects with an AbortError carrying `code: 'ABORT_ERR'`. Nothing awaits
|
|
350
|
+
// `program.parse()`, so today that surfaces as an unhandled-rejection stack: a saved run
|
|
351
|
+
// that looks like a crash.
|
|
352
|
+
//
|
|
353
|
+
// BOTH Ctrl-D and Ctrl-C land here in EVERY wiring now (issue #458): readline's raw/
|
|
354
|
+
// terminal mode is keyed on stdin's TTY-ness at the `createInterface` call above — the
|
|
355
|
+
// #426 guard makes that an invariant `true` here, and terminal mode is the only route
|
|
356
|
+
// into node's fixed ABORT_ERR abort path (nodejs/node#54030). Before #458, terminal mode
|
|
357
|
+
// defaulted to `output.isTTY` instead, so a piped stdout left the pty cooked — history,
|
|
358
|
+
// not the present: ^C died on the raw ISIG signal path (measured then: exit 130, no map)
|
|
359
|
+
// and ^D drained the loop silently to a false exit 0 (the non-terminal case node closed
|
|
360
|
+
// not_planned, nodejs/node#60344) — both dead now, in every wiring.
|
|
361
|
+
//
|
|
362
|
+
// One timing caveat, worth recording because it produced a confident wrong answer during
|
|
363
|
+
// this work: the pty is COOKED until readline switches it, so a ^C delivered before that
|
|
364
|
+
// switch takes the cooked ISIG path and kills the process before any JS runs. A scripted
|
|
365
|
+
// `printf '\x03' | …` hits that window; the same harness with the byte delayed a second
|
|
366
|
+
// rejects ABORT_ERR-coded as expected. Cooked-mode ^D persists in the stream as EOF and
|
|
367
|
+
// still ends up ABORT_ERR-coded, which is exactly why it looked like a valid control and
|
|
368
|
+
// was not. No claim here about anyone typing that fast.
|
|
369
|
+
//
|
|
370
|
+
// Keyed on the CODE alone, never the message, which names the trigger and varies.
|
|
371
|
+
//
|
|
372
|
+
// The classification is precise TODAY and the precision is not free: a handler that
|
|
373
|
+
// out-throws is re-coded ENGINE_HANDLER_FAILED (execution-loop.ts), every engine throw
|
|
374
|
+
// is WorkflowError-coded and none uses ABORT_ERR, and the gate-expiry timer contains
|
|
375
|
+
// its own errors. So ABORT_ERR reaching here means the prompt, and only the prompt.
|
|
376
|
+
// ADDING ANY AbortSignal-CONSUMING AWAIT TO THIS LOOP REQUIRES RE-ESTABLISHING THAT.
|
|
377
|
+
if (err?.code === 'ABORT_ERR') {
|
|
378
|
+
// A FRESH read, not the loop's `run`: while this process sat blocked on the prompt,
|
|
379
|
+
// another terminal's `realm run respond` or an expiry enactment may have moved it —
|
|
380
|
+
// the #291 race. The map is only as good as the state it forks on.
|
|
381
|
+
let record;
|
|
382
|
+
try {
|
|
383
|
+
record = await store.get(runId);
|
|
384
|
+
}
|
|
385
|
+
catch (getErr) {
|
|
386
|
+
// The same concurrent-writer reality that makes the fresh read necessary can also
|
|
387
|
+
// make it FAIL — a record purged from another terminal mid-prompt. Without this arm
|
|
388
|
+
// the new cancel path would crash with exactly the stack this feature exists to
|
|
389
|
+
// remove. `inspect` still earns its line: it is the only read surface, and its own
|
|
390
|
+
// answer for a missing record is a clean not-found rather than a stack.
|
|
391
|
+
const message = getErr instanceof Error ? getErr.message : String(getErr);
|
|
392
|
+
console.error(`Prompt cancelled — detached from run '${runId}'. Its record could not be re-read: ${message}. Inspect: realm run inspect ${runId}`);
|
|
393
|
+
rl.close();
|
|
394
|
+
process.exit(1);
|
|
395
|
+
}
|
|
396
|
+
console.error(renderDetachMap(record, promptStep));
|
|
397
|
+
// process.exit SKIPS the finally, so close explicitly. (rl.close is idempotent, so
|
|
398
|
+
// the double-close on any path that reaches both is harmless — probed.)
|
|
399
|
+
rl.close();
|
|
400
|
+
// Exit 1, not 130: readline consumed the keypress and the process was never signalled,
|
|
401
|
+
// so 130 would claim a death that did not happen.
|
|
402
|
+
process.exit(1);
|
|
186
403
|
}
|
|
404
|
+
throw err;
|
|
187
405
|
}
|
|
188
406
|
finally {
|
|
189
407
|
rl.close();
|
|
190
408
|
}
|
|
409
|
+
// issue #468 — the exit code tells the truth. `run` is declared outside the try, so by the
|
|
410
|
+
// time control reaches here the finally above has already closed `rl` on every path that
|
|
411
|
+
// gets this far (the catch's ABORT_ERR arm exits directly and never falls through to here).
|
|
412
|
+
// Only the while condition being false gets here — the stall exits from inside the try
|
|
413
|
+
// above — so `run.terminal_state` is always true at this point.
|
|
414
|
+
if (deriveRunPhase(run) === 'completed') {
|
|
415
|
+
console.log(`Run complete. Phase: ${run.run_phase}`);
|
|
416
|
+
// NATURAL RETURN — never process.exit(0): three declared controls (run-detach.test.ts's
|
|
417
|
+
// R1/R2/R3) pin the completed path as an unwrapped, un-exited resolution.
|
|
418
|
+
// completed-with-failed-steps (the #302 world) exits 0 too, here — outcome-keyed,
|
|
419
|
+
// consistent with the engine's own seal ruling; #304's run-health finding +
|
|
420
|
+
// terminal_reason are the disclosure channel, not this exit code.
|
|
421
|
+
return;
|
|
422
|
+
}
|
|
423
|
+
console.log(`Run complete. Phase: ${run.run_phase}`);
|
|
424
|
+
process.exit(1);
|
|
191
425
|
});
|
|
192
426
|
//# sourceMappingURL=run.js.map
|
package/dist/commands/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQ9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E;;;;GAIG;AACH,SAAS,qBAAqB;IAC5B,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IACpD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,OAAO,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAiB,EACjB,UAA8B,EAC9B,IAA4B;IAE5B,4FAA4F;IAC5F,+FAA+F;IAC/F,mCAAmC;IACnC,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,UAAU,IAAI,MAAM,CAAC,YAAY,EAAE,SAAS,IAAI,gBAAgB,CAAC;IAC9E,2FAA2F;IAC3F,gGAAgG;IAChG,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,kBAAkB,CAAC;IACtD,MAAM,KAAK,GAAG;QACZ,GAAG,QAAQ,yBAAyB,MAAM,CAAC,EAAE,cAAc,IAAI,aAAa,KAAK,sBAAsB;KACxG,CAAC;IAEF,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,kCAAkC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC;IACjC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CACR,kCAAkC,MAAM,CAAC,EAAE,WAAW,IAAI,CAAC,OAAO,aAAa,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACxG,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,kCAAkC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,qCAAqC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,kCAAkC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,kCAAkC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,aAAa,CAC1B,EAAgD,EAChD,MAAc;IAEd,SAAS,CAAC;QACR,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC;QAC9B,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,GAAG,YAAY,WAAW,CAAC;gBAAE,MAAM,GAAG,CAAC,CAAC,uCAAuC;YACrF,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,OAAO,8BAA8B,CAAC,CAAC;YAC9E,SAAS;QACX,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,KAAK,CACX,6GAA6G,CAC9G,CAAC;YACF,SAAS;QACX,CAAC;QACD,OAAO,MAAiC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,QAAQ,CAAC,QAAQ,EAAE,kDAAkD,CAAC;KACtE,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,EAAE,IAAI,CAAC;KACxE,MAAM,CACL,4BAA4B,EAC5B,gGAAgG,CACjG;KACA,MAAM,CACL,iBAAiB,EACjB,iIAAiI,CAClI;KACA,MAAM,CACL,qBAAqB,EACrB,4FAA4F;IAC1F,uFAAuF,EACzF,KAAK,CACN;KACA,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CACL,KAAK,EACH,SAAiB,EACjB,OAKC,EACD,EAAE;IACF,4FAA4F;IAC5F,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,KAAK,IAAI,IAAI,qBAAqB,EAAE,CAAC;IACpF,MAAM,QAAQ,GACZ,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAEvC,mBAAmB;IACnB,IAAI,UAA8B,CAAC;IACnC,IAAI,CAAC;QACH,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wFAAwF;QACxF,qFAAqF;QACrF,sFAAsF;QACtF,yFAAyF;QACzF,kDAAkD;QAClD,EAAE;QACF,qFAAqF;QACrF,sDAAsD;QACtD,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,YAAY,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wEAAwE;IACxE,IAAI,QAA2B,CAAC;IAChC,IAAI,CAAC;QACH,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,qBAAqB,CAAC,UAAU,EAAE;YACtD,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,gBAAgB,EAAE;gBAC9C,CAAC,CAAC,EAAE,CAAC;YACP,UAAU,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE;SAC7C,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAChF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAA4B,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,yFAAyF;IACzF,uFAAuF;IACvF,wFAAwF;IACxF,kFAAkF;IAClF,EAAE;IACF,qFAAqF;IACrF,sFAAsF;IACtF,wFAAwF;IACxF,uFAAuF;IACvF,uDAAuD;IACvD,EAAE;IACF,yFAAyF;IACzF,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CACX,oFAAoF;YAClF,wDAAwD;YACxD,yDAAyD;YACzD,4DAA4D;YAC5D,oDAAoD,CACvD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,yCAAyC;IACzC,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;IAClC,yFAAyF;IACzF,wFAAwF;IACxF,sFAAsF;IACtF,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACpE,MAAM,gBAAgB,GAAG,IAAI,oBAAoB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAErE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;QAChD,UAAU,EAAE,UAAU,CAAC,EAAE;QACzB,eAAe,EAAE,UAAU,CAAC,OAAO;QACnC,MAAM;KACP,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC;IAE/B,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;IAElC,iGAAiG;IACjG,qGAAqG;IACrG,mGAAmG;IACnG,KAAK,MAAM,GAAG,IAAI,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,KAAK,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,qBAAqB;IACrB,EAAE;IACF,0FAA0F;IAC1F,wFAAwF;IACxF,wFAAwF;IACxF,0FAA0F;IAC1F,0FAA0F;IAC1F,yFAAyF;IACzF,wFAAwF;IACxF,uFAAuF;IACvF,yFAAyF;IACzF,qFAAqF;IACrF,2EAA2E;IAC3E,8BAA8B;IAC9B,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM;QAC9D,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;KAC9B,CAAC,CAAC;IAEH,oBAAoB;IACpB,IAAI,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEjC,0FAA0F;IAC1F,0FAA0F;IAC1F,wBAAwB;IACxB,IAAI,UAA8B,CAAC;IAEnC,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YAC3B,mBAAmB;YACnB,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChE,mFAAmF;gBACnF,+EAA+E;gBAC/E,2EAA2E;gBAC3E,mFAAmF;gBACnF,sFAAsF;gBACtF,kFAAkF;gBAClF,uFAAuF;gBACvF,kDAAkD;gBAClD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,EAAE;oBACzD,KAAK;oBACL,UAAU;oBACV,QAAQ;iBACT,CAAC,CAAC;gBACH,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC;gBACzB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;oBAChF,gBAAgB,EAAE,CAAC;gBACrB,CAAC,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE;oBACjE,KAAK;oBACL,MAAM,EAAE,CAAC,CAAC,OAAO;oBACjB,MAAM;oBACN,yEAAyE;oBACzE,iFAAiF;oBACjF,QAAQ;iBACT,CAAC,CAAC;gBACH,IAAI,aAAa,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAClC,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAC7B,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC;gBAC1C,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1D,gFAAgF;oBAChF,iFAAiF;oBACjF,oFAAoF;oBACpF,+EAA+E;oBAC/E,kFAAkF;oBAClF,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,aAAa,GAAG,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAEzD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,SAAS,sBAAsB,CAAC,CAAC;gBACpF,qFAAqF;gBACrF,iFAAiF;gBACjF,qFAAqF;gBACrF,mFAAmF;gBACnF,0EAA0E;gBAC1E,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACtC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;gBACrF,qFAAqF;gBACrF,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,8DAA8D;YAC9D,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC;YACnC,MAAM,OAAO,GAAmB,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC;YAE5D,OAAO,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,SAAS,KAAK,QAAQ,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAE5E,kDAAkD;YAClD,IAAI,UAAmC,CAAC;YAExC,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;gBAClC,UAAU,GAAG,QAAQ,CAAC;gBACtB,UAAU,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,sCAAsC,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACN,YAAY;gBACZ,MAAM,IAAI,GACR,OAAO,CAAC,OAAO,KAAK,SAAS;oBAC3B,CAAC,CAAC,YAAY,OAAO,CAAC,OAAO,EAAE;oBAC/B,CAAC,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS;wBAClC,CAAC,CAAC,YAAY,OAAO,CAAC,YAAY,EAAE;wBACpC,CAAC,CAAC,MAAM,CAAC;gBACf,UAAU,GAAG,QAAQ,CAAC;gBACtB,UAAU,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,kBAAkB,IAAI,2BAA2B,CAAC,CAAC;YAC1F,CAAC;YAED,MAAM,UAAU,GAAmB,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC;YAE1D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE;gBACnD,KAAK;gBACL,OAAO,EAAE,QAAQ;gBACjB,KAAK,EAAE,UAAU;gBACjB,UAAU;gBACV,QAAQ;gBACR,gBAAgB;gBAChB,gFAAgF;gBAChF,uFAAuF;gBACvF,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjE,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC3B,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,IAAI,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACrE,MAAM,GAAG,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC7D,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,SAAS,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC;YACtE,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAkB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7E,qEAAqE;gBACrE,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrE,oFAAoF;gBACpF,mFAAmF;gBACnF,qFAAqF;gBACrF,kFAAkF;gBAClF,gFAAgF;gBAChF,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,sFAAsF;QACtF,8EAA8E;QAC9E,8CAA8C;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,oFAAoF;QACpF,0EAA0E;QAC1E,yFAAyF;QACzF,2BAA2B;QAC3B,EAAE;QACF,qFAAqF;QACrF,uFAAuF;QACvF,sFAAsF;QACtF,yFAAyF;QACzF,wFAAwF;QACxF,yFAAyF;QACzF,wFAAwF;QACxF,oEAAoE;QACpE,EAAE;QACF,yFAAyF;QACzF,yFAAyF;QACzF,yFAAyF;QACzF,wFAAwF;QACxF,wFAAwF;QACxF,yFAAyF;QACzF,wDAAwD;QACxD,EAAE;QACF,kFAAkF;QAClF,EAAE;QACF,oFAAoF;QACpF,uFAAuF;QACvF,qFAAqF;QACrF,oFAAoF;QACpF,qFAAqF;QACrF,IAAK,GAAyB,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YACrD,oFAAoF;YACpF,oFAAoF;YACpF,mEAAmE;YACnE,IAAI,MAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,kFAAkF;gBAClF,oFAAoF;gBACpF,gFAAgF;gBAChF,mFAAmF;gBACnF,wEAAwE;gBACxE,MAAM,OAAO,GAAG,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC1E,OAAO,CAAC,KAAK,CACX,yCAAyC,KAAK,uCAAuC,OAAO,gCAAgC,KAAK,EAAE,CACpI,CAAC;gBACF,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YACnD,mFAAmF;YACnF,wEAAwE;YACxE,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,uFAAuF;YACvF,kDAAkD;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;IAED,2FAA2F;IAC3F,yFAAyF;IACzF,4FAA4F;IAC5F,uFAAuF;IACvF,gEAAgE;IAChE,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QACrD,wFAAwF;QACxF,0EAA0E;QAC1E,kFAAkF;QAClF,4EAA4E;QAC5E,kEAAkE;QAClE,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,OAAO,KAAK,EAAE,UAAU,EAA0B,MAAM,wBAAwB,CAAC;AAGjF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAe9F;AAWD,eAAO,MAAM,WAAW,SA2GpB,CAAC"}
|
package/dist/commands/test.js
CHANGED
|
@@ -3,7 +3,8 @@ import { Command } from 'commander';
|
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import { existsSync } from 'node:fs';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
|
-
import {
|
|
6
|
+
import { loadWorkflowFromFileWithDiagnostics, renderLoaderWarning, WorkflowError, } from '@sensigo/realm';
|
|
7
|
+
import { renderLoadFailure } from '../lib/loader-warnings.js';
|
|
7
8
|
import { runFixtureTests } from '@sensigo/realm-testing';
|
|
8
9
|
import { loadProjectExtensions } from '../extensions/load-project-extensions.js';
|
|
9
10
|
/**
|
|
@@ -46,18 +47,48 @@ export const testCommand = new Command('test')
|
|
|
46
47
|
}
|
|
47
48
|
let results;
|
|
48
49
|
try {
|
|
50
|
+
// issue #450: load SILENTLY and render once. The default `loadWorkflowFromFile` prints as
|
|
51
|
+
// it loads, and the fixture runner loaded the same file again — so every warning appeared
|
|
52
|
+
// twice.
|
|
53
|
+
const { definition, warnings } = loadWorkflowFromFileWithDiagnostics(resolveWorkflowFilePath(workflowPath));
|
|
54
|
+
// PLACEMENT IS LOAD-BEARING: this loop must stay ABOVE the extensions load below. The
|
|
55
|
+
// printing wrapper it replaces emitted before extensions loading could throw, so on an
|
|
56
|
+
// extensions failure the operator still saw the workflow's own warnings. Moved below, every
|
|
57
|
+
// warning on that path would vanish silently.
|
|
58
|
+
//
|
|
59
|
+
// And renderLoaderWarning directly, NOT printLoaderWarnings: historically that helper
|
|
60
|
+
// rewrote `— ignored` to `— REFUSED below` for codes the boundary commands refuse, and
|
|
61
|
+
// post-#170 that includes the unknown-key family. `realm workflow test` is
|
|
62
|
+
// execution-LENIENT — it proceeds and can pass — so "REFUSED below" above a passing run
|
|
63
|
+
// would have been a false statement about what just happened. Issue #540 deleted that
|
|
64
|
+
// substitution — printLoaderWarnings now renders identically to this loop — but `test`
|
|
65
|
+
// keeps its own direct loop rather than adopting the helper (kept as two call shapes on
|
|
66
|
+
// purpose, see #542).
|
|
67
|
+
for (const warning of warnings)
|
|
68
|
+
console.warn(renderLoaderWarning(warning));
|
|
49
69
|
// Resolve project extensions so custom HANDLERS run real and custom ADAPTERS get
|
|
50
70
|
// fail-if-unmocked tripwires inside the fixture runner. Extension-free workflows
|
|
51
71
|
// (without an override) pass no `extensions` — current behavior byte-for-byte.
|
|
52
|
-
const definition = loadWorkflowFromFile(resolveWorkflowFilePath(workflowPath));
|
|
53
72
|
// Sentinel mode: fixtures never see real credentials — secret-bearing handlers are
|
|
54
73
|
// constructed with sentinels and FAIL the fixture on first execution (runner-side).
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
74
|
+
let loaded;
|
|
75
|
+
try {
|
|
76
|
+
loaded = await loadProjectExtensions(definition, {
|
|
77
|
+
...(opts.extensionsModule !== undefined ? { overrideModule: opts.extensionsModule } : {}),
|
|
78
|
+
secretMode: 'sentinel',
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
// issue #466 — the sentence run/validate/register/watch/agent already print for this
|
|
83
|
+
// class (#445/#451/#465), wrapped in its own try so it discriminates from the outer
|
|
84
|
+
// catch's family split below without a shared tag (this call is the only extension-load
|
|
85
|
+
// site test.ts reaches — no #451-style shared helper here).
|
|
86
|
+
console.error(`Error loading extensions: ${err instanceof Error ? err.message : String(err)}`);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
59
90
|
for (const warning of loaded.sentinelWarnings ?? [])
|
|
60
|
-
console.warn(`⚠
|
|
91
|
+
console.warn(`⚠ ${warning}`);
|
|
61
92
|
const hasExtensionContent = loaded.manifest.modules.length > 0 ||
|
|
62
93
|
loaded.manifest.adapters.length > 0 ||
|
|
63
94
|
loaded.manifest.handlers.length > 0 ||
|
|
@@ -68,11 +99,23 @@ export const testCommand = new Command('test')
|
|
|
68
99
|
results = await runFixtureTests({
|
|
69
100
|
workflowPath,
|
|
70
101
|
fixturesPath: opts.fixtures,
|
|
102
|
+
// issue #450: the runner reuses this instead of re-loading (and re-printing) the file.
|
|
103
|
+
definition,
|
|
71
104
|
...(extensions !== undefined ? { extensions } : {}),
|
|
72
105
|
});
|
|
73
106
|
}
|
|
74
107
|
catch (err) {
|
|
75
|
-
|
|
108
|
+
// issue #425 — THE FAMILY SPLIT. An `Invalid workflow:` message announces itself, so it
|
|
109
|
+
// renders verbatim through the shared helper (which also lists a multi-error throw one per
|
|
110
|
+
// line). Everything else this catch can see — a store failure, an unreadable fixtures path —
|
|
111
|
+
// announces nothing on its own, so it keeps the prefix that earns its place (#417). The
|
|
112
|
+
// predicate carries the colon, byte-matching the helper's own check.
|
|
113
|
+
if (err instanceof WorkflowError && err.message.startsWith('Invalid workflow:')) {
|
|
114
|
+
console.error(renderLoadFailure(err));
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
|
|
118
|
+
}
|
|
76
119
|
process.exit(1);
|
|
77
120
|
return;
|
|
78
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,34 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import { type LoaderWarning } from '@sensigo/realm';
|
|
3
|
+
import type { WorkflowDefinition } from '@sensigo/realm';
|
|
4
|
+
/**
|
|
5
|
+
* Advisory (issue A3, never rejects): an auto step declaring `retry:` but no `timeout_seconds`
|
|
6
|
+
* has EVERY attempt bounded by the generous DEFAULT_EXECUTION_TIMEOUT_SECONDS default — a hung
|
|
7
|
+
* attempt can take up to that long before the retry loop even considers the next one. Returns one
|
|
8
|
+
* RETRY_NO_TIMEOUT LoaderWarning per such step (issue #169: folded into the validate accumulator
|
|
9
|
+
* — printed via printLoaderWarnings alongside every other warning — instead of printed directly,
|
|
10
|
+
* so `--strict` and the dormant boundary-reject can see it too).
|
|
11
|
+
*
|
|
12
|
+
* Issue #140 text update: the per-attempt bound this warns about is now ALSO the basis of the
|
|
13
|
+
* step's default total-time cap (`retry.total_timeout_seconds`, when not overridden) — so the
|
|
14
|
+
* "each attempt" wording alone would understate the exposure on a multi-attempt retry (the
|
|
15
|
+
* default cap compounds it: `max_attempts × the default timeout` before the step's own cap even
|
|
16
|
+
* fires). The message is worded to cover both axes without requiring the reader to already know
|
|
17
|
+
* about the cap.
|
|
18
|
+
*/
|
|
19
|
+
/** @internal Exported for testing only. */
|
|
20
|
+
export declare function findRetryWithoutExplicitTimeout(definition: WorkflowDefinition): LoaderWarning[];
|
|
21
|
+
/**
|
|
22
|
+
* issue #454 — the severity `--json` reports for every diagnostic. Every mint site in the tree
|
|
23
|
+
* ALREADY resolves severity at construction (`severity: resolveSeverity(code)`,
|
|
24
|
+
* diagnostics.ts:239 and its siblings, under DEFAULT_POLICY — never the `--strict` all-error
|
|
25
|
+
* policy, which is a run mode reported separately in the `strict` block) — so minted ≡ effective
|
|
26
|
+
* for every constructible diagnostic today, and this re-resolution is a GUARD against a future
|
|
27
|
+
* mint or a policy change landing without updating this file, not a live divergence. No real
|
|
28
|
+
* fixture can distinguish the two; only a hand-constructed lying warning can (validate-json.test.ts's
|
|
29
|
+
* U1 cell).
|
|
30
|
+
* @internal Exported for testing only.
|
|
31
|
+
*/
|
|
32
|
+
export declare function normalizeDiagnosticSeverity(w: LoaderWarning): LoaderWarning;
|
|
2
33
|
export declare const validateCommand: Command;
|
|
3
34
|
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAaL,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAuBzD;;;;;;;;;;;;;;GAcG;AACH,2CAA2C;AAC3C,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,kBAAkB,GAAG,aAAa,EAAE,CAwB/F;AAkND;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,aAAa,GAAG,aAAa,CAE3E;AAubD,eAAO,MAAM,eAAe,SAsMzB,CAAC"}
|