@llm-dev-ops/agentics-cli 2.7.16 → 2.7.18
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/cli/ui/live-status.d.ts +98 -0
- package/dist/cli/ui/live-status.d.ts.map +1 -0
- package/dist/cli/ui/live-status.js +291 -0
- package/dist/cli/ui/live-status.js.map +1 -0
- package/dist/pipeline/auto-chain.d.ts.map +1 -1
- package/dist/pipeline/auto-chain.js +70 -1
- package/dist/pipeline/auto-chain.js.map +1 -1
- package/dist/pipeline/phase7/coherence-gate.d.ts +71 -0
- package/dist/pipeline/phase7/coherence-gate.d.ts.map +1 -0
- package/dist/pipeline/phase7/coherence-gate.js +541 -0
- package/dist/pipeline/phase7/coherence-gate.js.map +1 -0
- package/dist/pipeline/phase7/coordinator.d.ts +94 -0
- package/dist/pipeline/phase7/coordinator.d.ts.map +1 -0
- package/dist/pipeline/phase7/coordinator.js +693 -0
- package/dist/pipeline/phase7/coordinator.js.map +1 -0
- package/dist/pipeline/phase7/deliverables-registry.d.ts +97 -0
- package/dist/pipeline/phase7/deliverables-registry.d.ts.map +1 -0
- package/dist/pipeline/phase7/deliverables-registry.js +1132 -0
- package/dist/pipeline/phase7/deliverables-registry.js.map +1 -0
- package/dist/pipeline/phase7/template-renderer.d.ts +81 -0
- package/dist/pipeline/phase7/template-renderer.d.ts.map +1 -0
- package/dist/pipeline/phase7/template-renderer.js +108 -0
- package/dist/pipeline/phase7/template-renderer.js.map +1 -0
- package/dist/pipeline/swarm-orchestrator.d.ts.map +1 -1
- package/dist/pipeline/swarm-orchestrator.js +48 -13
- package/dist/pipeline/swarm-orchestrator.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADR-PIPELINE-097 — Live phase / agent status renderer.
|
|
3
|
+
*
|
|
4
|
+
* Hand-rolled spinner + multi-row status manager (no external deps), matching
|
|
5
|
+
* the pattern used by `@claude-flow/cli` (ruflo). Single-line phase spinner
|
|
6
|
+
* uses `\r` redraw; multi-row agent panel uses ANSI cursor-up + line-clear.
|
|
7
|
+
*
|
|
8
|
+
* TTY-detection rules (gracefully degrade in CI / piped output):
|
|
9
|
+
* - render target is `process.stderr` (stdout is reserved for JSON results)
|
|
10
|
+
* - if `!stderr.isTTY` OR `process.env.NO_COLOR` OR `process.env.CI` →
|
|
11
|
+
* no animation; emit plain `[AGENTICS] event` lines on state transitions,
|
|
12
|
+
* preserving the prior log shape so log scrapers still work.
|
|
13
|
+
* - if `process.env.AGENTICS_NO_LIVE === '1'` → forced plain mode.
|
|
14
|
+
*
|
|
15
|
+
* All frame text written to stderr; never to stdout.
|
|
16
|
+
*/
|
|
17
|
+
export type AgentStatus = 'pending' | 'running' | 'success' | 'failed' | 'skipped';
|
|
18
|
+
export interface AgentRow {
|
|
19
|
+
readonly id: string;
|
|
20
|
+
label: string;
|
|
21
|
+
status: AgentStatus;
|
|
22
|
+
startedAt?: number;
|
|
23
|
+
finishedAt?: number;
|
|
24
|
+
detail?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* True when stderr is a TTY and the user has NOT opted out of live rendering.
|
|
28
|
+
* Exported for callers that need the same decision (e.g. to decide whether to
|
|
29
|
+
* emit verbose plain-log lines).
|
|
30
|
+
*/
|
|
31
|
+
export declare function isLiveCapable(): boolean;
|
|
32
|
+
export declare class PhaseSpinner {
|
|
33
|
+
private label;
|
|
34
|
+
private frameIndex;
|
|
35
|
+
private interval;
|
|
36
|
+
private rendered;
|
|
37
|
+
private readonly live;
|
|
38
|
+
constructor(label: string);
|
|
39
|
+
/**
|
|
40
|
+
* Non-live mode is silent (callers already emit phase boundary log lines).
|
|
41
|
+
* Live mode animates `\r`-redrawn frames at 120ms intervals.
|
|
42
|
+
*/
|
|
43
|
+
start(): this;
|
|
44
|
+
setLabel(label: string): void;
|
|
45
|
+
succeed(message?: string): void;
|
|
46
|
+
fail(message?: string): void;
|
|
47
|
+
/** Stop the spinner. Final line only printed in TTY mode. */
|
|
48
|
+
stop(finalLine?: string): void;
|
|
49
|
+
private render;
|
|
50
|
+
private clearLine;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Renders one row per agent with animated frames for in-flight rows.
|
|
54
|
+
*
|
|
55
|
+
* ◓ shield/pii (running, 1.2s)
|
|
56
|
+
* ✓ shield/secrets (success, 0.8s)
|
|
57
|
+
* ✗ test-bench/benchmark — timeout
|
|
58
|
+
*
|
|
59
|
+
* Falls back to plain `[AGENTICS] event` lines in non-TTY mode.
|
|
60
|
+
*/
|
|
61
|
+
export declare class AgentPanel {
|
|
62
|
+
private rows;
|
|
63
|
+
private rowIndex;
|
|
64
|
+
private frameIndex;
|
|
65
|
+
private interval;
|
|
66
|
+
private renderedRows;
|
|
67
|
+
private readonly live;
|
|
68
|
+
private readonly title;
|
|
69
|
+
constructor(title: string, agents: ReadonlyArray<{
|
|
70
|
+
id: string;
|
|
71
|
+
label: string;
|
|
72
|
+
}>);
|
|
73
|
+
/**
|
|
74
|
+
* Non-live mode is intentionally silent — the dispatch site already emits
|
|
75
|
+
* legacy `[AGENTICS] Dispatching N agents: ...` and per-result `[OK]/[FB]/
|
|
76
|
+
* [!!]` lines that log scrapers depend on. We only render in TTY mode;
|
|
77
|
+
* otherwise every method is a no-op (state still tracked for `stop()`).
|
|
78
|
+
*/
|
|
79
|
+
start(): this;
|
|
80
|
+
/** Mark a row as in-flight. Idempotent. No-op in non-TTY mode. */
|
|
81
|
+
begin(id: string, detail?: string): void;
|
|
82
|
+
/** Mark a row as completed (success/failure/skipped). Idempotent. */
|
|
83
|
+
complete(id: string, status: 'success' | 'failed' | 'skipped', detail?: string): void;
|
|
84
|
+
/**
|
|
85
|
+
* Stop the timer; finalize any pending rows as 'skipped'. Returns a count
|
|
86
|
+
* summary so callers can decide whether to log additional context.
|
|
87
|
+
*/
|
|
88
|
+
stop(): {
|
|
89
|
+
success: number;
|
|
90
|
+
failed: number;
|
|
91
|
+
skipped: number;
|
|
92
|
+
};
|
|
93
|
+
private row;
|
|
94
|
+
private renderHeader;
|
|
95
|
+
private renderAll;
|
|
96
|
+
private formatRow;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=live-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-status.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/live-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAsBH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnF,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAKvC;AAkBD,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;gBAEnB,KAAK,EAAE,MAAM;IAKzB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAWb,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/B,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5B,6DAA6D;IAC7D,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAa9B,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,SAAS;CAOlB;AAMD;;;;;;;;GAQG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAO/E;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAcb,kEAAkE;IAClE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAUxC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAWrF;;;OAGG;IACH,IAAI,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAuB5D,OAAO,CAAC,GAAG;IAKX,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,SAAS;CA+BlB"}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADR-PIPELINE-097 — Live phase / agent status renderer.
|
|
3
|
+
*
|
|
4
|
+
* Hand-rolled spinner + multi-row status manager (no external deps), matching
|
|
5
|
+
* the pattern used by `@claude-flow/cli` (ruflo). Single-line phase spinner
|
|
6
|
+
* uses `\r` redraw; multi-row agent panel uses ANSI cursor-up + line-clear.
|
|
7
|
+
*
|
|
8
|
+
* TTY-detection rules (gracefully degrade in CI / piped output):
|
|
9
|
+
* - render target is `process.stderr` (stdout is reserved for JSON results)
|
|
10
|
+
* - if `!stderr.isTTY` OR `process.env.NO_COLOR` OR `process.env.CI` →
|
|
11
|
+
* no animation; emit plain `[AGENTICS] event` lines on state transitions,
|
|
12
|
+
* preserving the prior log shape so log scrapers still work.
|
|
13
|
+
* - if `process.env.AGENTICS_NO_LIVE === '1'` → forced plain mode.
|
|
14
|
+
*
|
|
15
|
+
* All frame text written to stderr; never to stdout.
|
|
16
|
+
*/
|
|
17
|
+
const FRAMES = ['◐', '◓', '◑', '◒'];
|
|
18
|
+
const FRAME_INTERVAL_MS = 120;
|
|
19
|
+
const ICON = {
|
|
20
|
+
pending: '·',
|
|
21
|
+
running: '', // placeholder — running rows use the animated frame
|
|
22
|
+
success: '✓',
|
|
23
|
+
failed: '✗',
|
|
24
|
+
skipped: '○',
|
|
25
|
+
};
|
|
26
|
+
const COLOR = {
|
|
27
|
+
reset: '\x1b[0m',
|
|
28
|
+
dim: '\x1b[2m',
|
|
29
|
+
cyan: '\x1b[36m',
|
|
30
|
+
green: '\x1b[32m',
|
|
31
|
+
red: '\x1b[31m',
|
|
32
|
+
yellow: '\x1b[33m',
|
|
33
|
+
gray: '\x1b[90m',
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* True when stderr is a TTY and the user has NOT opted out of live rendering.
|
|
37
|
+
* Exported for callers that need the same decision (e.g. to decide whether to
|
|
38
|
+
* emit verbose plain-log lines).
|
|
39
|
+
*/
|
|
40
|
+
export function isLiveCapable() {
|
|
41
|
+
if (process.env['AGENTICS_NO_LIVE'] === '1')
|
|
42
|
+
return false;
|
|
43
|
+
if (process.env['CI'])
|
|
44
|
+
return false;
|
|
45
|
+
if (process.env['NO_COLOR'])
|
|
46
|
+
return false;
|
|
47
|
+
return Boolean(process.stderr.isTTY);
|
|
48
|
+
}
|
|
49
|
+
function color(s, c) {
|
|
50
|
+
if (!isLiveCapable())
|
|
51
|
+
return s;
|
|
52
|
+
return COLOR[c] + s + COLOR.reset;
|
|
53
|
+
}
|
|
54
|
+
function formatElapsed(startedAt, finishedAt) {
|
|
55
|
+
if (!startedAt)
|
|
56
|
+
return '';
|
|
57
|
+
const ms = (finishedAt ?? Date.now()) - startedAt;
|
|
58
|
+
if (ms < 1000)
|
|
59
|
+
return `${ms}ms`;
|
|
60
|
+
return `${(ms / 1000).toFixed(1)}s`;
|
|
61
|
+
}
|
|
62
|
+
// ============================================================================
|
|
63
|
+
// PhaseSpinner — single-line spinner for "Phase N: <label>" boundaries.
|
|
64
|
+
// ============================================================================
|
|
65
|
+
export class PhaseSpinner {
|
|
66
|
+
label;
|
|
67
|
+
frameIndex = 0;
|
|
68
|
+
interval = null;
|
|
69
|
+
rendered = '';
|
|
70
|
+
live;
|
|
71
|
+
constructor(label) {
|
|
72
|
+
this.label = label;
|
|
73
|
+
this.live = isLiveCapable();
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Non-live mode is silent (callers already emit phase boundary log lines).
|
|
77
|
+
* Live mode animates `\r`-redrawn frames at 120ms intervals.
|
|
78
|
+
*/
|
|
79
|
+
start() {
|
|
80
|
+
if (!this.live)
|
|
81
|
+
return this;
|
|
82
|
+
if (this.interval)
|
|
83
|
+
return this;
|
|
84
|
+
this.render();
|
|
85
|
+
this.interval = setInterval(() => {
|
|
86
|
+
this.frameIndex = (this.frameIndex + 1) % FRAMES.length;
|
|
87
|
+
this.render();
|
|
88
|
+
}, FRAME_INTERVAL_MS);
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
setLabel(label) {
|
|
92
|
+
this.label = label;
|
|
93
|
+
if (this.live)
|
|
94
|
+
this.render();
|
|
95
|
+
}
|
|
96
|
+
succeed(message) {
|
|
97
|
+
this.stop(`${color('✓', 'green')} ${message ?? this.label}`);
|
|
98
|
+
}
|
|
99
|
+
fail(message) {
|
|
100
|
+
this.stop(`${color('✗', 'red')} ${message ?? this.label}`);
|
|
101
|
+
}
|
|
102
|
+
/** Stop the spinner. Final line only printed in TTY mode. */
|
|
103
|
+
stop(finalLine) {
|
|
104
|
+
if (this.interval) {
|
|
105
|
+
clearInterval(this.interval);
|
|
106
|
+
this.interval = null;
|
|
107
|
+
}
|
|
108
|
+
if (this.live) {
|
|
109
|
+
this.clearLine();
|
|
110
|
+
if (finalLine !== undefined) {
|
|
111
|
+
process.stderr.write(` ${finalLine}\n`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
render() {
|
|
116
|
+
const frame = color(FRAMES[this.frameIndex], 'cyan');
|
|
117
|
+
const line = ` ${frame} ${this.label}`;
|
|
118
|
+
this.clearLine();
|
|
119
|
+
process.stderr.write(line);
|
|
120
|
+
this.rendered = line;
|
|
121
|
+
}
|
|
122
|
+
clearLine() {
|
|
123
|
+
if (!this.rendered)
|
|
124
|
+
return;
|
|
125
|
+
// \r + spaces wide enough to wipe + \r. We can't know the visual width
|
|
126
|
+
// (ANSI codes have zero visual width), so over-clear with the raw length.
|
|
127
|
+
process.stderr.write('\r' + ' '.repeat(this.rendered.length + 4) + '\r');
|
|
128
|
+
this.rendered = '';
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// ============================================================================
|
|
132
|
+
// AgentPanel — multi-row live panel for parallel agent fan-out.
|
|
133
|
+
// ============================================================================
|
|
134
|
+
/**
|
|
135
|
+
* Renders one row per agent with animated frames for in-flight rows.
|
|
136
|
+
*
|
|
137
|
+
* ◓ shield/pii (running, 1.2s)
|
|
138
|
+
* ✓ shield/secrets (success, 0.8s)
|
|
139
|
+
* ✗ test-bench/benchmark — timeout
|
|
140
|
+
*
|
|
141
|
+
* Falls back to plain `[AGENTICS] event` lines in non-TTY mode.
|
|
142
|
+
*/
|
|
143
|
+
export class AgentPanel {
|
|
144
|
+
rows;
|
|
145
|
+
rowIndex = new Map();
|
|
146
|
+
frameIndex = 0;
|
|
147
|
+
interval = null;
|
|
148
|
+
renderedRows = 0;
|
|
149
|
+
live;
|
|
150
|
+
title;
|
|
151
|
+
constructor(title, agents) {
|
|
152
|
+
this.title = title;
|
|
153
|
+
this.rows = agents.map((a) => ({ id: a.id, label: a.label, status: 'pending' }));
|
|
154
|
+
this.rows.forEach((r, i) => this.rowIndex.set(r.id, i));
|
|
155
|
+
this.live = isLiveCapable();
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Non-live mode is intentionally silent — the dispatch site already emits
|
|
159
|
+
* legacy `[AGENTICS] Dispatching N agents: ...` and per-result `[OK]/[FB]/
|
|
160
|
+
* [!!]` lines that log scrapers depend on. We only render in TTY mode;
|
|
161
|
+
* otherwise every method is a no-op (state still tracked for `stop()`).
|
|
162
|
+
*/
|
|
163
|
+
start() {
|
|
164
|
+
if (!this.live)
|
|
165
|
+
return this;
|
|
166
|
+
if (this.interval)
|
|
167
|
+
return this;
|
|
168
|
+
this.renderHeader();
|
|
169
|
+
this.renderAll();
|
|
170
|
+
this.interval = setInterval(() => {
|
|
171
|
+
this.frameIndex = (this.frameIndex + 1) % FRAMES.length;
|
|
172
|
+
if (this.rows.some((r) => r.status === 'running')) {
|
|
173
|
+
this.renderAll();
|
|
174
|
+
}
|
|
175
|
+
}, FRAME_INTERVAL_MS);
|
|
176
|
+
return this;
|
|
177
|
+
}
|
|
178
|
+
/** Mark a row as in-flight. Idempotent. No-op in non-TTY mode. */
|
|
179
|
+
begin(id, detail) {
|
|
180
|
+
const r = this.row(id);
|
|
181
|
+
if (!r)
|
|
182
|
+
return;
|
|
183
|
+
if (r.status === 'success' || r.status === 'failed')
|
|
184
|
+
return;
|
|
185
|
+
r.status = 'running';
|
|
186
|
+
r.startedAt = r.startedAt ?? Date.now();
|
|
187
|
+
r.detail = detail;
|
|
188
|
+
if (this.live)
|
|
189
|
+
this.renderAll();
|
|
190
|
+
}
|
|
191
|
+
/** Mark a row as completed (success/failure/skipped). Idempotent. */
|
|
192
|
+
complete(id, status, detail) {
|
|
193
|
+
const r = this.row(id);
|
|
194
|
+
if (!r)
|
|
195
|
+
return;
|
|
196
|
+
if (r.status === status)
|
|
197
|
+
return;
|
|
198
|
+
r.status = status;
|
|
199
|
+
r.finishedAt = Date.now();
|
|
200
|
+
r.startedAt = r.startedAt ?? r.finishedAt;
|
|
201
|
+
r.detail = detail ?? r.detail;
|
|
202
|
+
if (this.live)
|
|
203
|
+
this.renderAll();
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Stop the timer; finalize any pending rows as 'skipped'. Returns a count
|
|
207
|
+
* summary so callers can decide whether to log additional context.
|
|
208
|
+
*/
|
|
209
|
+
stop() {
|
|
210
|
+
if (this.interval) {
|
|
211
|
+
clearInterval(this.interval);
|
|
212
|
+
this.interval = null;
|
|
213
|
+
}
|
|
214
|
+
let success = 0, failed = 0, skipped = 0;
|
|
215
|
+
for (const r of this.rows) {
|
|
216
|
+
if (r.status === 'pending' || r.status === 'running') {
|
|
217
|
+
r.status = 'skipped';
|
|
218
|
+
r.finishedAt = Date.now();
|
|
219
|
+
}
|
|
220
|
+
if (r.status === 'success')
|
|
221
|
+
success++;
|
|
222
|
+
else if (r.status === 'failed')
|
|
223
|
+
failed++;
|
|
224
|
+
else if (r.status === 'skipped')
|
|
225
|
+
skipped++;
|
|
226
|
+
}
|
|
227
|
+
if (this.live) {
|
|
228
|
+
this.renderAll();
|
|
229
|
+
const summary = `${color(`${success}✓`, 'green')} ${color(`${failed}✗`, 'red')} ${color(`${skipped}○`, 'gray')}`;
|
|
230
|
+
process.stderr.write(` ${color('─', 'gray')} ${this.title}: ${summary}\n`);
|
|
231
|
+
}
|
|
232
|
+
return { success, failed, skipped };
|
|
233
|
+
}
|
|
234
|
+
row(id) {
|
|
235
|
+
const i = this.rowIndex.get(id);
|
|
236
|
+
return i === undefined ? undefined : this.rows[i];
|
|
237
|
+
}
|
|
238
|
+
renderHeader() {
|
|
239
|
+
const line = color(` ▼ ${this.title} (${this.rows.length} agents)`, 'cyan');
|
|
240
|
+
process.stderr.write(line + '\n');
|
|
241
|
+
this.renderedRows = 0;
|
|
242
|
+
}
|
|
243
|
+
renderAll() {
|
|
244
|
+
if (!this.live)
|
|
245
|
+
return;
|
|
246
|
+
// Move cursor up to the first row of the panel (if we've already drawn
|
|
247
|
+
// anything), clear from there to end-of-screen, then redraw all rows.
|
|
248
|
+
if (this.renderedRows > 0) {
|
|
249
|
+
process.stderr.write(`\x1b[${this.renderedRows}A`); // cursor up N
|
|
250
|
+
process.stderr.write('\x1b[0J'); // clear to end of screen
|
|
251
|
+
}
|
|
252
|
+
let written = 0;
|
|
253
|
+
for (const r of this.rows) {
|
|
254
|
+
process.stderr.write(this.formatRow(r) + '\n');
|
|
255
|
+
written++;
|
|
256
|
+
}
|
|
257
|
+
this.renderedRows = written;
|
|
258
|
+
}
|
|
259
|
+
formatRow(r) {
|
|
260
|
+
const elapsed = r.startedAt ? formatElapsed(r.startedAt, r.finishedAt) : '';
|
|
261
|
+
const detail = r.detail ? color(` — ${r.detail}`, 'gray') : '';
|
|
262
|
+
let icon;
|
|
263
|
+
let labelColor;
|
|
264
|
+
switch (r.status) {
|
|
265
|
+
case 'pending':
|
|
266
|
+
icon = color(ICON.pending, 'gray');
|
|
267
|
+
labelColor = 'gray';
|
|
268
|
+
break;
|
|
269
|
+
case 'running':
|
|
270
|
+
icon = color(FRAMES[this.frameIndex], 'cyan');
|
|
271
|
+
labelColor = 'cyan';
|
|
272
|
+
break;
|
|
273
|
+
case 'success':
|
|
274
|
+
icon = color(ICON.success, 'green');
|
|
275
|
+
labelColor = 'reset';
|
|
276
|
+
break;
|
|
277
|
+
case 'failed':
|
|
278
|
+
icon = color(ICON.failed, 'red');
|
|
279
|
+
labelColor = 'red';
|
|
280
|
+
break;
|
|
281
|
+
case 'skipped':
|
|
282
|
+
icon = color(ICON.skipped, 'gray');
|
|
283
|
+
labelColor = 'gray';
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
const label = color(r.label.padEnd(34, ' '), labelColor);
|
|
287
|
+
const elapsedStr = elapsed ? color(elapsed.padStart(7, ' '), 'dim') : ' ';
|
|
288
|
+
return ` ${icon} ${label} ${elapsedStr}${detail}`;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=live-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-status.js","sourceRoot":"","sources":["../../../src/cli/ui/live-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-chain.d.ts","sourceRoot":"","sources":["../../src/pipeline/auto-chain.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"auto-chain.d.ts","sourceRoot":"","sources":["../../src/pipeline/auto-chain.ts"],"names":[],"mappings":"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"}
|
|
@@ -4002,10 +4002,79 @@ services when the pilot validates the approach.
|
|
|
4002
4002
|
recordPhaseFailure(PHASE_AGENTS[6], traceId, errMsg);
|
|
4003
4003
|
phases.push({ phase: 6, label: 'ERP Surface Push', status: 'failed', timing: Date.now() - phaseStart, artifacts: [], outputDir: phaseDir, error: errMsg });
|
|
4004
4004
|
await ensureAdrsExist(runDir, traceId, scenarioQuery);
|
|
4005
|
-
|
|
4005
|
+
// ADR-PIPELINE-098 D1 — Phase 7 still runs after a Phase 6 failure
|
|
4006
|
+
// (only Phase 1 input loss skips it). Fall through to the Phase 7
|
|
4007
|
+
// block instead of returning here.
|
|
4006
4008
|
}
|
|
4007
4009
|
}
|
|
4008
4010
|
}
|
|
4011
|
+
// ── Phase 7: Consulting Deliverables (ADR-PIPELINE-098) ──
|
|
4012
|
+
{
|
|
4013
|
+
const phaseStart = Date.now();
|
|
4014
|
+
const phaseDir = path.join(runDir, 'deliverables');
|
|
4015
|
+
console.error('');
|
|
4016
|
+
console.error('-'.repeat(72));
|
|
4017
|
+
console.error(' >> Phase 7: Consulting Deliverables (85-document enterprise decision pack)');
|
|
4018
|
+
console.error('-'.repeat(72));
|
|
4019
|
+
try {
|
|
4020
|
+
const { executePhase7 } = await import('./phase7/coordinator.js');
|
|
4021
|
+
const p7 = await executePhase7({ runDir, traceId, scenarioQuery, options });
|
|
4022
|
+
const timing = Date.now() - phaseStart;
|
|
4023
|
+
if (p7.status === 'skipped-due-to-upstream') {
|
|
4024
|
+
console.error(` [P7] skipped-due-to-upstream — reason: ${p7.reason ?? 'unknown'}`);
|
|
4025
|
+
// ADR-094 D4 — always-emit a phases[] entry.
|
|
4026
|
+
phases.push({
|
|
4027
|
+
phase: 7,
|
|
4028
|
+
label: 'Consulting Deliverables',
|
|
4029
|
+
status: 'skipped-due-to-upstream',
|
|
4030
|
+
timing,
|
|
4031
|
+
artifacts: [],
|
|
4032
|
+
outputDir: phaseDir,
|
|
4033
|
+
error: `Upstream phase 1 inputs missing: ${p7.reason ?? 'phase1-inputs-missing'}`,
|
|
4034
|
+
});
|
|
4035
|
+
}
|
|
4036
|
+
else {
|
|
4037
|
+
console.error(` [P7] ${p7.deliverables_emitted}/${p7.deliverables_total} emitted, ` +
|
|
4038
|
+
`${p7.deliverables_skeleton} skeleton, ${p7.deliverables_failed} failed, ` +
|
|
4039
|
+
`${p7.coherence_violations.length} coherence violations in ${timing}ms`);
|
|
4040
|
+
const phaseStatus = p7.status === 'completed' ? 'completed'
|
|
4041
|
+
: p7.status === 'failed' ? 'failed'
|
|
4042
|
+
: 'completed';
|
|
4043
|
+
// 'partial' from the coordinator is still a successful phase from
|
|
4044
|
+
// the chain's POV — it produced 85 files (mix of full + skeleton).
|
|
4045
|
+
// We emit `completed` so `success` calc holds, but record the
|
|
4046
|
+
// skeleton/violation counts in error for visibility.
|
|
4047
|
+
const errorDetail = p7.status === 'partial'
|
|
4048
|
+
? `partial: skeleton=${p7.deliverables_skeleton} failed=${p7.deliverables_failed} coherence_violations=${p7.coherence_violations.length}`
|
|
4049
|
+
: p7.status === 'failed'
|
|
4050
|
+
? (p7.reason ?? 'phase7-failed')
|
|
4051
|
+
: undefined;
|
|
4052
|
+
phases.push({
|
|
4053
|
+
phase: 7,
|
|
4054
|
+
label: 'Consulting Deliverables',
|
|
4055
|
+
status: phaseStatus,
|
|
4056
|
+
timing,
|
|
4057
|
+
artifacts: [...p7.output_paths],
|
|
4058
|
+
outputDir: phaseDir,
|
|
4059
|
+
...(errorDetail ? { error: errorDetail } : {}),
|
|
4060
|
+
});
|
|
4061
|
+
}
|
|
4062
|
+
}
|
|
4063
|
+
catch (err) {
|
|
4064
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
4065
|
+
console.error(` [FAIL] Phase 7 failed: ${errMsg}`);
|
|
4066
|
+
// ADR-094 D4 — always emit the phases[] entry, even on hard error.
|
|
4067
|
+
phases.push({
|
|
4068
|
+
phase: 7,
|
|
4069
|
+
label: 'Consulting Deliverables',
|
|
4070
|
+
status: 'failed',
|
|
4071
|
+
timing: Date.now() - phaseStart,
|
|
4072
|
+
artifacts: [],
|
|
4073
|
+
outputDir: phaseDir,
|
|
4074
|
+
error: errMsg,
|
|
4075
|
+
});
|
|
4076
|
+
}
|
|
4077
|
+
}
|
|
4009
4078
|
// Progressive copy already happened after each phase via copyPlanningArtifacts()
|
|
4010
4079
|
// ── Project mode: materialize to repo root and commit on current branch ──
|
|
4011
4080
|
let commitHash;
|