bmalph 2.7.5 → 2.7.7
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/README.md +20 -5
- package/dist/commands/doctor-runtime-checks.js +104 -86
- package/dist/commands/doctor-runtime-checks.js.map +1 -1
- package/dist/commands/run.js +11 -2
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/watch.js +5 -0
- package/dist/commands/watch.js.map +1 -1
- package/dist/installer/bmad-assets.js +182 -0
- package/dist/installer/bmad-assets.js.map +1 -0
- package/dist/installer/commands.js +324 -0
- package/dist/installer/commands.js.map +1 -0
- package/dist/installer/install.js +42 -0
- package/dist/installer/install.js.map +1 -0
- package/dist/installer/metadata.js +56 -0
- package/dist/installer/metadata.js.map +1 -0
- package/dist/installer/project-files.js +169 -0
- package/dist/installer/project-files.js.map +1 -0
- package/dist/installer/ralph-assets.js +91 -0
- package/dist/installer/ralph-assets.js.map +1 -0
- package/dist/installer/template-files.js +187 -0
- package/dist/installer/template-files.js.map +1 -0
- package/dist/installer/types.js +2 -0
- package/dist/installer/types.js.map +1 -0
- package/dist/installer.js +5 -843
- package/dist/installer.js.map +1 -1
- package/dist/run/run-dashboard.js +20 -6
- package/dist/run/run-dashboard.js.map +1 -1
- package/dist/transition/artifact-loading.js +91 -0
- package/dist/transition/artifact-loading.js.map +1 -0
- package/dist/transition/context-output.js +85 -0
- package/dist/transition/context-output.js.map +1 -0
- package/dist/transition/context.js +11 -3
- package/dist/transition/context.js.map +1 -1
- package/dist/transition/fix-plan-sync.js +119 -0
- package/dist/transition/fix-plan-sync.js.map +1 -0
- package/dist/transition/orchestration.js +25 -362
- package/dist/transition/orchestration.js.map +1 -1
- package/dist/transition/specs-sync.js +78 -2
- package/dist/transition/specs-sync.js.map +1 -1
- package/dist/utils/ralph-runtime-state.js +222 -0
- package/dist/utils/ralph-runtime-state.js.map +1 -0
- package/dist/utils/state.js +17 -16
- package/dist/utils/state.js.map +1 -1
- package/dist/utils/validate.js +16 -0
- package/dist/utils/validate.js.map +1 -1
- package/dist/watch/dashboard.js +25 -21
- package/dist/watch/dashboard.js.map +1 -1
- package/dist/watch/frame-writer.js +83 -0
- package/dist/watch/frame-writer.js.map +1 -0
- package/dist/watch/renderer.js +214 -49
- package/dist/watch/renderer.js.map +1 -1
- package/dist/watch/state-reader.js +87 -44
- package/dist/watch/state-reader.js.map +1 -1
- package/package.json +1 -1
- package/ralph/RALPH-REFERENCE.md +34 -14
- package/ralph/drivers/claude-code.sh +27 -0
- package/ralph/drivers/codex.sh +11 -0
- package/ralph/drivers/copilot.sh +11 -0
- package/ralph/drivers/cursor.sh +11 -0
- package/ralph/lib/circuit_breaker.sh +3 -3
- package/ralph/lib/date_utils.sh +28 -9
- package/ralph/lib/enable_core.sh +10 -2
- package/ralph/lib/response_analyzer.sh +252 -40
- package/ralph/ralph_import.sh +9 -1
- package/ralph/ralph_loop.sh +548 -128
- package/ralph/templates/PROMPT.md +20 -5
- package/ralph/templates/ralphrc.template +14 -4
package/dist/watch/renderer.js
CHANGED
|
@@ -17,16 +17,120 @@ const BOX_CHARS = {
|
|
|
17
17
|
const PROGRESS_FILLED = "\u2588";
|
|
18
18
|
const PROGRESS_EMPTY = "\u2591";
|
|
19
19
|
// eslint-disable-next-line no-control-regex
|
|
20
|
-
const ANSI_PATTERN = /\x1B\[
|
|
20
|
+
const ANSI_PATTERN = /\x1B\[[0-9;]*m/g;
|
|
21
|
+
// eslint-disable-next-line no-control-regex
|
|
22
|
+
const ANSI_PREFIX_PATTERN = /^\x1B\[[0-9;]*m/;
|
|
23
|
+
// eslint-disable-next-line no-control-regex
|
|
24
|
+
const VT_ESCAPE_PATTERN = /\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~]|\][^\x07]*(?:\x07|\x1B\\))/g;
|
|
25
|
+
// eslint-disable-next-line no-control-regex
|
|
26
|
+
const CONTROL_CHAR_PATTERN = /[\x00-\x08\x0B-\x1F\x7F]/g;
|
|
27
|
+
const DISPLAY_SEGMENTER = new Intl.Segmenter(undefined, { granularity: "grapheme" });
|
|
28
|
+
const COMBINING_MARK_PATTERN = /\p{Mark}/u;
|
|
29
|
+
const EMOJI_PATTERN = /\p{Extended_Pictographic}/u;
|
|
21
30
|
function stripAnsi(str) {
|
|
22
31
|
return str.replace(ANSI_PATTERN, "");
|
|
23
32
|
}
|
|
33
|
+
function sanitizeExternalText(str) {
|
|
34
|
+
return str
|
|
35
|
+
.replace(VT_ESCAPE_PATTERN, "")
|
|
36
|
+
.replace(/\r\n?/g, " ")
|
|
37
|
+
.replace(/\n/g, " ")
|
|
38
|
+
.replace(/\t/g, " ")
|
|
39
|
+
.replace(CONTROL_CHAR_PATTERN, "");
|
|
40
|
+
}
|
|
41
|
+
function displayWidth(str) {
|
|
42
|
+
return Array.from(DISPLAY_SEGMENTER.segment(stripAnsi(str))).reduce((width, segment) => {
|
|
43
|
+
return width + graphemeDisplayWidth(segment.segment);
|
|
44
|
+
}, 0);
|
|
45
|
+
}
|
|
46
|
+
function graphemeDisplayWidth(grapheme) {
|
|
47
|
+
let width = 0;
|
|
48
|
+
for (const char of grapheme) {
|
|
49
|
+
const codePoint = char.codePointAt(0);
|
|
50
|
+
if (codePoint === undefined || isZeroWidthChar(char, codePoint)) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (EMOJI_PATTERN.test(char) || isWideCodePoint(codePoint)) {
|
|
54
|
+
return 2;
|
|
55
|
+
}
|
|
56
|
+
width = 1;
|
|
57
|
+
}
|
|
58
|
+
return width;
|
|
59
|
+
}
|
|
60
|
+
function isZeroWidthChar(char, codePoint) {
|
|
61
|
+
return (COMBINING_MARK_PATTERN.test(char) ||
|
|
62
|
+
codePoint === 0x200c ||
|
|
63
|
+
codePoint === 0x200d ||
|
|
64
|
+
isVariationSelector(codePoint));
|
|
65
|
+
}
|
|
66
|
+
function isVariationSelector(codePoint) {
|
|
67
|
+
return ((codePoint >= 0xfe00 && codePoint <= 0xfe0f) || (codePoint >= 0xe0100 && codePoint <= 0xe01ef));
|
|
68
|
+
}
|
|
69
|
+
function isWideCodePoint(codePoint) {
|
|
70
|
+
return (codePoint >= 0x1100 &&
|
|
71
|
+
(codePoint <= 0x115f ||
|
|
72
|
+
codePoint === 0x2329 ||
|
|
73
|
+
codePoint === 0x232a ||
|
|
74
|
+
(codePoint >= 0x2e80 && codePoint <= 0x3247 && codePoint !== 0x303f) ||
|
|
75
|
+
(codePoint >= 0x3250 && codePoint <= 0x4dbf) ||
|
|
76
|
+
(codePoint >= 0x4e00 && codePoint <= 0xa4c6) ||
|
|
77
|
+
(codePoint >= 0xa960 && codePoint <= 0xa97c) ||
|
|
78
|
+
(codePoint >= 0xac00 && codePoint <= 0xd7a3) ||
|
|
79
|
+
(codePoint >= 0xf900 && codePoint <= 0xfaff) ||
|
|
80
|
+
(codePoint >= 0xfe10 && codePoint <= 0xfe19) ||
|
|
81
|
+
(codePoint >= 0xfe30 && codePoint <= 0xfe6b) ||
|
|
82
|
+
(codePoint >= 0xff01 && codePoint <= 0xff60) ||
|
|
83
|
+
(codePoint >= 0xffe0 && codePoint <= 0xffe6) ||
|
|
84
|
+
(codePoint >= 0x1f300 && codePoint <= 0x1f64f) ||
|
|
85
|
+
(codePoint >= 0x1f900 && codePoint <= 0x1f9ff) ||
|
|
86
|
+
(codePoint >= 0x20000 && codePoint <= 0x3fffd)));
|
|
87
|
+
}
|
|
88
|
+
function truncateAnsi(str, len) {
|
|
89
|
+
if (len <= 0) {
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
92
|
+
if (displayWidth(str) <= len) {
|
|
93
|
+
return str;
|
|
94
|
+
}
|
|
95
|
+
let result = "";
|
|
96
|
+
let index = 0;
|
|
97
|
+
let visibleCount = 0;
|
|
98
|
+
let sawAnsi = false;
|
|
99
|
+
outer: while (index < str.length) {
|
|
100
|
+
const ansiMatch = str.slice(index).match(ANSI_PREFIX_PATTERN);
|
|
101
|
+
if (ansiMatch) {
|
|
102
|
+
result += ansiMatch[0];
|
|
103
|
+
index += ansiMatch[0].length;
|
|
104
|
+
sawAnsi = true;
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const nextAnsiIndex = str.indexOf("\x1B", index);
|
|
108
|
+
const textChunk = nextAnsiIndex === -1 ? str.slice(index) : str.slice(index, nextAnsiIndex);
|
|
109
|
+
for (const segment of DISPLAY_SEGMENTER.segment(textChunk)) {
|
|
110
|
+
const width = graphemeDisplayWidth(segment.segment);
|
|
111
|
+
if (visibleCount + width > len) {
|
|
112
|
+
break outer;
|
|
113
|
+
}
|
|
114
|
+
result += segment.segment;
|
|
115
|
+
visibleCount += width;
|
|
116
|
+
}
|
|
117
|
+
index += textChunk.length;
|
|
118
|
+
}
|
|
119
|
+
if (sawAnsi) {
|
|
120
|
+
result += "\x1B[0m";
|
|
121
|
+
}
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
24
124
|
export function padRight(str, len) {
|
|
25
|
-
|
|
125
|
+
if (len <= 0) {
|
|
126
|
+
return "";
|
|
127
|
+
}
|
|
128
|
+
const fitted = truncateAnsi(str, len);
|
|
129
|
+
const visualLen = displayWidth(fitted);
|
|
26
130
|
if (visualLen >= len) {
|
|
27
|
-
return
|
|
131
|
+
return fitted;
|
|
28
132
|
}
|
|
29
|
-
return
|
|
133
|
+
return fitted + " ".repeat(len - visualLen);
|
|
30
134
|
}
|
|
31
135
|
export function progressBar(completed, total, width) {
|
|
32
136
|
if (total <= 0) {
|
|
@@ -36,10 +140,12 @@ export function progressBar(completed, total, width) {
|
|
|
36
140
|
const filled = Math.round(ratio * width);
|
|
37
141
|
return chalk.green(PROGRESS_FILLED.repeat(filled)) + PROGRESS_EMPTY.repeat(width - filled);
|
|
38
142
|
}
|
|
39
|
-
export function formatSessionAge(createdAt) {
|
|
40
|
-
const now = Date.now();
|
|
143
|
+
export function formatSessionAge(createdAt, referenceTime = Date.now()) {
|
|
41
144
|
const start = new Date(createdAt).getTime();
|
|
42
|
-
|
|
145
|
+
if (Number.isNaN(start)) {
|
|
146
|
+
return "0m 0s";
|
|
147
|
+
}
|
|
148
|
+
const diffSeconds = Math.max(0, Math.floor((referenceTime - start) / 1000));
|
|
43
149
|
const hours = Math.floor(diffSeconds / 3600);
|
|
44
150
|
const minutes = Math.floor((diffSeconds % 3600) / 60);
|
|
45
151
|
const seconds = diffSeconds % 60;
|
|
@@ -48,6 +154,14 @@ export function formatSessionAge(createdAt) {
|
|
|
48
154
|
}
|
|
49
155
|
return `${String(minutes)}m ${String(seconds)}s`;
|
|
50
156
|
}
|
|
157
|
+
export function formatElapsed(seconds) {
|
|
158
|
+
if (seconds < 60) {
|
|
159
|
+
return `${String(seconds)}s`;
|
|
160
|
+
}
|
|
161
|
+
const minutes = Math.floor(seconds / 60);
|
|
162
|
+
const remaining = seconds % 60;
|
|
163
|
+
return `${String(minutes)}m ${String(remaining)}s`;
|
|
164
|
+
}
|
|
51
165
|
export function formatCBState(state) {
|
|
52
166
|
switch (state) {
|
|
53
167
|
case "CLOSED":
|
|
@@ -67,31 +181,33 @@ function formatTime(date) {
|
|
|
67
181
|
return `${h}:${m}:${s}`;
|
|
68
182
|
}
|
|
69
183
|
function extractTime(timestamp) {
|
|
70
|
-
const
|
|
71
|
-
|
|
184
|
+
const safeTimestamp = sanitizeExternalText(timestamp);
|
|
185
|
+
const timePart = safeTimestamp.split(" ")[1];
|
|
186
|
+
return timePart ?? formatTime(new Date(safeTimestamp));
|
|
72
187
|
}
|
|
73
188
|
export function box(title, lines, cols) {
|
|
74
|
-
const innerWidth = cols - 2;
|
|
75
|
-
const titleStr = title ? `\u2500 ${title}
|
|
189
|
+
const innerWidth = Math.max(0, cols - 2);
|
|
190
|
+
const titleStr = title ? truncateAnsi(`\u2500 ${title} `, innerWidth) : "";
|
|
76
191
|
const topBorder = BOX_CHARS.topLeft +
|
|
77
192
|
titleStr +
|
|
78
|
-
BOX_CHARS.horizontal.repeat(Math.max(0, innerWidth - titleStr
|
|
193
|
+
BOX_CHARS.horizontal.repeat(Math.max(0, innerWidth - displayWidth(titleStr))) +
|
|
79
194
|
BOX_CHARS.topRight;
|
|
80
195
|
const bottomBorder = BOX_CHARS.bottomLeft + BOX_CHARS.horizontal.repeat(innerWidth) + BOX_CHARS.bottomRight;
|
|
81
|
-
const contentLines = lines.map((line) => BOX_CHARS.vertical + " " + padRight(line, innerWidth - 1) + BOX_CHARS.vertical);
|
|
196
|
+
const contentLines = lines.map((line) => BOX_CHARS.vertical + " " + padRight(line, Math.max(0, innerWidth - 1)) + BOX_CHARS.vertical);
|
|
82
197
|
return [topBorder, ...contentLines, bottomBorder].join("\n");
|
|
83
198
|
}
|
|
84
199
|
export function renderHeader(cols) {
|
|
85
|
-
const innerWidth = cols - 2;
|
|
86
|
-
const title = "RALPH MONITOR";
|
|
87
|
-
const
|
|
88
|
-
const
|
|
200
|
+
const innerWidth = Math.max(0, cols - 2);
|
|
201
|
+
const title = truncateAnsi("RALPH MONITOR", innerWidth);
|
|
202
|
+
const titleLength = displayWidth(title);
|
|
203
|
+
const padding = Math.max(0, Math.floor((innerWidth - titleLength) / 2));
|
|
204
|
+
const centeredTitle = " ".repeat(padding) + title + " ".repeat(Math.max(0, innerWidth - padding - titleLength));
|
|
89
205
|
const topBorder = BOX_CHARS.headerLeft + BOX_CHARS.headerHoriz.repeat(innerWidth) + BOX_CHARS.headerRight;
|
|
90
206
|
const titleLine = BOX_CHARS.headerVert + chalk.bold(centeredTitle) + BOX_CHARS.headerVert;
|
|
91
207
|
const bottomBorder = BOX_CHARS.headerBottom + BOX_CHARS.headerHoriz.repeat(innerWidth) + BOX_CHARS.headerBottomRight;
|
|
92
208
|
return [topBorder, titleLine, bottomBorder].join("\n");
|
|
93
209
|
}
|
|
94
|
-
export function renderLoopPanel(loop, execution, session, cols) {
|
|
210
|
+
export function renderLoopPanel(loop, execution, session, cols, referenceTime = Date.now()) {
|
|
95
211
|
if (loop === null) {
|
|
96
212
|
return box("Loop Status", ["Status: waiting for data"], cols);
|
|
97
213
|
}
|
|
@@ -99,16 +215,32 @@ export function renderLoopPanel(loop, execution, session, cols) {
|
|
|
99
215
|
? Math.round((loop.callsMadeThisHour / loop.maxCallsPerHour) * 100)
|
|
100
216
|
: 0;
|
|
101
217
|
const loopStr = `Loop: #${String(loop.loopCount)}`;
|
|
102
|
-
const statusStr = `Status: ${formatStatus(loop.status)}`;
|
|
218
|
+
const statusStr = `Status: ${formatStatus(sanitizeExternalText(loop.status))}`;
|
|
103
219
|
const apiStr = `API: ${String(loop.callsMadeThisHour)}/${String(loop.maxCallsPerHour)} (${String(apiPercent)}%)`;
|
|
104
220
|
const line1 = `${padRight(loopStr, 17)}${padRight(statusStr, 21)}${apiStr}`;
|
|
105
|
-
const
|
|
106
|
-
const actionStr = `Action: ${actionLabel}`;
|
|
107
|
-
const sessionStr = session !== null ? `Session: ${formatSessionAge(session.createdAt)}` : "";
|
|
221
|
+
const sessionStr = session !== null ? `Session: ${formatSessionAge(session.createdAt, referenceTime)}` : "";
|
|
108
222
|
const innerWidth = cols - 4;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
223
|
+
let line2;
|
|
224
|
+
if (execution !== null) {
|
|
225
|
+
const elapsedStr = formatElapsed(execution.elapsedSeconds);
|
|
226
|
+
const safeIndicator = sanitizeExternalText(execution.indicator);
|
|
227
|
+
const executingStr = `${safeIndicator} executing (${elapsedStr})`;
|
|
228
|
+
const sessionPad = Math.max(0, innerWidth - displayWidth(executingStr) - displayWidth(sessionStr));
|
|
229
|
+
line2 = `${executingStr}${" ".repeat(sessionPad)}${sessionStr}`;
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
const actionStr = `Action: ${sanitizeExternalText(loop.lastAction)}`;
|
|
233
|
+
const sessionPad = Math.max(0, innerWidth - displayWidth(actionStr) - displayWidth(sessionStr));
|
|
234
|
+
line2 = `${actionStr}${" ".repeat(sessionPad)}${sessionStr}`;
|
|
235
|
+
}
|
|
236
|
+
const lines = [line1, line2];
|
|
237
|
+
if (execution !== null && execution.lastOutput.length > 0) {
|
|
238
|
+
const safeOutput = sanitizeExternalText(execution.lastOutput);
|
|
239
|
+
const maxOutputLen = Math.max(0, innerWidth - 2);
|
|
240
|
+
const truncated = truncateAnsi(safeOutput, maxOutputLen);
|
|
241
|
+
lines.push(chalk.dim(` ${truncated}`));
|
|
242
|
+
}
|
|
243
|
+
return box("Loop Status", lines, cols);
|
|
112
244
|
}
|
|
113
245
|
export function renderCircuitBreakerPanel(cb, cols) {
|
|
114
246
|
const halfCols = Math.floor(cols / 2) - 1;
|
|
@@ -116,12 +248,12 @@ export function renderCircuitBreakerPanel(cb, cols) {
|
|
|
116
248
|
return box("Circuit Breaker", ["N/A"], halfCols);
|
|
117
249
|
}
|
|
118
250
|
const lines = [
|
|
119
|
-
`State: ${formatCBState(cb.state)}`,
|
|
251
|
+
`State: ${formatCBState(sanitizeExternalText(cb.state))}`,
|
|
120
252
|
`No-progress: ${String(cb.consecutiveNoProgress)}`,
|
|
121
253
|
`Opens: ${String(cb.totalOpens)}`,
|
|
122
254
|
];
|
|
123
255
|
if (cb.state === "OPEN" && cb.reason) {
|
|
124
|
-
lines.push(`Reason: ${cb.reason}`);
|
|
256
|
+
lines.push(`Reason: ${sanitizeExternalText(cb.reason)}`);
|
|
125
257
|
}
|
|
126
258
|
return box("Circuit Breaker", lines, halfCols);
|
|
127
259
|
}
|
|
@@ -139,7 +271,7 @@ export function renderStoriesPanel(stories, cols) {
|
|
|
139
271
|
`[${bar}]`,
|
|
140
272
|
];
|
|
141
273
|
if (stories.nextStory !== null) {
|
|
142
|
-
lines.push(`Next: ${stories.nextStory}`);
|
|
274
|
+
lines.push(`Next: ${sanitizeExternalText(stories.nextStory)}`);
|
|
143
275
|
}
|
|
144
276
|
return box("Stories", lines, halfCols);
|
|
145
277
|
}
|
|
@@ -161,17 +293,23 @@ export function renderAnalysisPanel(analysis, cols) {
|
|
|
161
293
|
return box("Last Analysis", ["N/A"], cols);
|
|
162
294
|
}
|
|
163
295
|
const yesNo = (v) => (v ? "yes" : "no");
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
296
|
+
const lines = [
|
|
297
|
+
[
|
|
298
|
+
`Files: ${String(analysis.filesModified)}`,
|
|
299
|
+
`Confidence: ${String(analysis.confidenceScore)}%`,
|
|
300
|
+
].join(" "),
|
|
301
|
+
[`Test-only: ${yesNo(analysis.isTestOnly)}`, `Stuck: ${yesNo(analysis.isStuck)}`].join(" "),
|
|
302
|
+
[
|
|
303
|
+
`Exit signal: ${yesNo(analysis.exitSignal)}`,
|
|
304
|
+
`Permission denials: ${String(analysis.permissionDenialCount)}`,
|
|
305
|
+
].join(" "),
|
|
306
|
+
[
|
|
307
|
+
`Claimed tasks: ${String(analysis.tasksCompletedThisLoop)}`,
|
|
308
|
+
`Checkbox delta: ${String(analysis.fixPlanCompletedDelta)}`,
|
|
309
|
+
].join(" "),
|
|
310
|
+
`Progress mismatch: ${yesNo(analysis.hasProgressTrackingMismatch)}`,
|
|
311
|
+
];
|
|
312
|
+
return box("Last Analysis", lines, cols);
|
|
175
313
|
}
|
|
176
314
|
export function renderLogsPanel(logs, cols) {
|
|
177
315
|
if (logs.length === 0) {
|
|
@@ -180,19 +318,37 @@ export function renderLogsPanel(logs, cols) {
|
|
|
180
318
|
const innerWidth = cols - 4;
|
|
181
319
|
const lines = logs.map((entry) => {
|
|
182
320
|
const time = extractTime(entry.timestamp);
|
|
183
|
-
const level = padRight(entry.level, 7);
|
|
321
|
+
const level = padRight(sanitizeExternalText(entry.level), 7);
|
|
184
322
|
const prefix = `[${time}] ${level}`;
|
|
185
|
-
const maxMsg = Math.max(0, innerWidth - prefix
|
|
186
|
-
const
|
|
323
|
+
const maxMsg = Math.max(0, innerWidth - displayWidth(prefix) - 1);
|
|
324
|
+
const safeMessage = sanitizeExternalText(entry.message);
|
|
325
|
+
const msg = truncateAnsi(safeMessage, maxMsg);
|
|
187
326
|
return `${chalk.dim(`[${time}]`)} ${level} ${msg}`;
|
|
188
327
|
});
|
|
189
328
|
return box("Recent Activity", lines, cols);
|
|
190
329
|
}
|
|
330
|
+
export function renderLiveLogPanel(liveLog, cols) {
|
|
331
|
+
if (liveLog.length === 0) {
|
|
332
|
+
return box("Live Output", [chalk.dim("No live output yet")], cols);
|
|
333
|
+
}
|
|
334
|
+
const innerWidth = cols - 4;
|
|
335
|
+
const lines = liveLog.map((line) => {
|
|
336
|
+
const safeLine = sanitizeExternalText(line);
|
|
337
|
+
const trimmed = truncateAnsi(safeLine, innerWidth);
|
|
338
|
+
return chalk.dim(trimmed);
|
|
339
|
+
});
|
|
340
|
+
return box("Live Output", lines, cols);
|
|
341
|
+
}
|
|
191
342
|
export function renderFooter(lastUpdated, cols) {
|
|
192
|
-
const
|
|
193
|
-
const
|
|
194
|
-
const
|
|
195
|
-
|
|
343
|
+
const leftText = "q quit";
|
|
344
|
+
const rightText = `Updated: ${formatTime(lastUpdated)}`;
|
|
345
|
+
const availableWidth = Math.max(0, cols - 1);
|
|
346
|
+
const minimumWidth = displayWidth(leftText) + 1 + displayWidth(rightText);
|
|
347
|
+
if (availableWidth < minimumWidth) {
|
|
348
|
+
return ` ${truncateAnsi(`${leftText} ${rightText}`, availableWidth)}`;
|
|
349
|
+
}
|
|
350
|
+
const gap = availableWidth - displayWidth(leftText) - displayWidth(rightText);
|
|
351
|
+
return ` ${chalk.dim(leftText)}${" ".repeat(gap)}${chalk.dim(rightText)}`;
|
|
196
352
|
}
|
|
197
353
|
function hasAnyData(state) {
|
|
198
354
|
return (state.loop !== null ||
|
|
@@ -201,10 +357,12 @@ function hasAnyData(state) {
|
|
|
201
357
|
state.analysis !== null ||
|
|
202
358
|
state.execution !== null ||
|
|
203
359
|
state.session !== null ||
|
|
204
|
-
state.recentLogs.length > 0
|
|
360
|
+
state.recentLogs.length > 0 ||
|
|
361
|
+
state.liveLog.length > 0);
|
|
205
362
|
}
|
|
206
363
|
export function renderDashboard(state, cols) {
|
|
207
364
|
const width = cols ?? process.stdout.columns ?? 80;
|
|
365
|
+
const referenceTime = state.lastUpdated.getTime();
|
|
208
366
|
if (!hasAnyData(state)) {
|
|
209
367
|
const lines = [];
|
|
210
368
|
lines.push(renderHeader(width));
|
|
@@ -216,13 +374,20 @@ export function renderDashboard(state, cols) {
|
|
|
216
374
|
}
|
|
217
375
|
const sections = [];
|
|
218
376
|
sections.push(renderHeader(width));
|
|
219
|
-
sections.push(renderLoopPanel(state.loop, state.execution, state.session, width));
|
|
377
|
+
sections.push(renderLoopPanel(state.loop, state.execution, state.session, width, referenceTime));
|
|
220
378
|
const leftPanel = renderCircuitBreakerPanel(state.circuitBreaker, width);
|
|
221
379
|
const rightPanel = renderStoriesPanel(state.stories, width);
|
|
222
380
|
sections.push(renderSideBySide(leftPanel, rightPanel, width));
|
|
223
381
|
sections.push(renderAnalysisPanel(state.analysis, width));
|
|
382
|
+
if (state.execution !== null) {
|
|
383
|
+
sections.push(renderLiveLogPanel(state.liveLog, width));
|
|
384
|
+
}
|
|
224
385
|
sections.push(renderLogsPanel(state.recentLogs, width));
|
|
225
386
|
sections.push(renderFooter(state.lastUpdated, width));
|
|
226
|
-
return sections
|
|
387
|
+
return sections
|
|
388
|
+
.join("\n")
|
|
389
|
+
.split("\n")
|
|
390
|
+
.map((line) => truncateAnsi(line, width))
|
|
391
|
+
.join("\n");
|
|
227
392
|
}
|
|
228
393
|
//# sourceMappingURL=renderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/watch/renderer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/watch/renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,12 @@ import { RALPH_DIR } from "../utils/constants.js";
|
|
|
5
5
|
import { parseFixPlan } from "../transition/fix-plan.js";
|
|
6
6
|
import { debug } from "../utils/logger.js";
|
|
7
7
|
import { formatError } from "../utils/errors.js";
|
|
8
|
-
import {
|
|
8
|
+
import { readRalphCircuitBreaker, readRalphRuntimeSession, readRalphRuntimeStatus, } from "../utils/ralph-runtime-state.js";
|
|
9
9
|
const LOG_LINE_PATTERN = /^\[(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\] \[(\w+)\] (.+)$/;
|
|
10
10
|
const DEFAULT_MAX_LOG_LINES = 8;
|
|
11
11
|
const TAIL_BYTES = 4096;
|
|
12
12
|
export async function readDashboardState(projectDir) {
|
|
13
|
-
const [loop, circuitBreaker, stories, analysis, execution, session, recentLogs] = await Promise.all([
|
|
13
|
+
const [loop, circuitBreaker, stories, analysis, execution, session, recentLogs, liveLog] = await Promise.all([
|
|
14
14
|
readLoopInfo(projectDir),
|
|
15
15
|
readCircuitBreakerInfo(projectDir),
|
|
16
16
|
readStoryProgress(projectDir),
|
|
@@ -18,6 +18,7 @@ export async function readDashboardState(projectDir) {
|
|
|
18
18
|
readExecutionProgress(projectDir),
|
|
19
19
|
readSessionInfo(projectDir),
|
|
20
20
|
readRecentLogs(projectDir),
|
|
21
|
+
readLiveLog(projectDir),
|
|
21
22
|
]);
|
|
22
23
|
const ralphCompleted = loop !== null && loop.status === "completed";
|
|
23
24
|
return {
|
|
@@ -28,50 +29,43 @@ export async function readDashboardState(projectDir) {
|
|
|
28
29
|
execution,
|
|
29
30
|
session,
|
|
30
31
|
recentLogs,
|
|
32
|
+
liveLog,
|
|
31
33
|
ralphCompleted,
|
|
32
34
|
lastUpdated: new Date(),
|
|
33
35
|
};
|
|
34
36
|
}
|
|
35
37
|
export async function readLoopInfo(projectDir) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return null;
|
|
40
|
-
const normalized = normalizeRalphStatus(data);
|
|
41
|
-
const lastAction = typeof data.last_action === "string" ? data.last_action : "";
|
|
42
|
-
const callsMadeThisHour = typeof data.calls_made_this_hour === "number" ? data.calls_made_this_hour : 0;
|
|
43
|
-
const maxCallsPerHour = typeof data.max_calls_per_hour === "number" ? data.max_calls_per_hour : 0;
|
|
44
|
-
return {
|
|
45
|
-
loopCount: normalized.loopCount,
|
|
46
|
-
status: normalized.status,
|
|
47
|
-
lastAction,
|
|
48
|
-
callsMadeThisHour,
|
|
49
|
-
maxCallsPerHour,
|
|
50
|
-
};
|
|
38
|
+
const result = await readRalphRuntimeStatus(projectDir);
|
|
39
|
+
if (result.kind === "missing") {
|
|
40
|
+
return null;
|
|
51
41
|
}
|
|
52
|
-
|
|
53
|
-
debug(`Failed to read loop info: ${formatError(
|
|
42
|
+
if (result.kind !== "ok") {
|
|
43
|
+
debug(`Failed to read loop info: ${formatError(result.error)}`);
|
|
54
44
|
return null;
|
|
55
45
|
}
|
|
46
|
+
return {
|
|
47
|
+
loopCount: result.value.loopCount,
|
|
48
|
+
status: result.value.status,
|
|
49
|
+
lastAction: result.value.lastAction,
|
|
50
|
+
callsMadeThisHour: result.value.callsMadeThisHour,
|
|
51
|
+
maxCallsPerHour: result.value.maxCallsPerHour,
|
|
52
|
+
};
|
|
56
53
|
}
|
|
57
54
|
export async function readCircuitBreakerInfo(projectDir) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return null;
|
|
62
|
-
const validated = validateCircuitBreakerState(data);
|
|
63
|
-
const totalOpens = typeof data.total_opens === "number" ? data.total_opens : 0;
|
|
64
|
-
return {
|
|
65
|
-
state: validated.state,
|
|
66
|
-
consecutiveNoProgress: validated.consecutive_no_progress,
|
|
67
|
-
totalOpens,
|
|
68
|
-
reason: validated.reason,
|
|
69
|
-
};
|
|
55
|
+
const result = await readRalphCircuitBreaker(projectDir);
|
|
56
|
+
if (result.kind === "missing") {
|
|
57
|
+
return null;
|
|
70
58
|
}
|
|
71
|
-
|
|
72
|
-
debug(`Failed to read circuit breaker info: ${formatError(
|
|
59
|
+
if (result.kind !== "ok") {
|
|
60
|
+
debug(`Failed to read circuit breaker info: ${formatError(result.error)}`);
|
|
73
61
|
return null;
|
|
74
62
|
}
|
|
63
|
+
return {
|
|
64
|
+
state: result.value.state,
|
|
65
|
+
consecutiveNoProgress: result.value.consecutiveNoProgress,
|
|
66
|
+
totalOpens: result.value.totalOpens,
|
|
67
|
+
reason: result.value.reason,
|
|
68
|
+
};
|
|
75
69
|
}
|
|
76
70
|
export async function readStoryProgress(projectDir) {
|
|
77
71
|
let content;
|
|
@@ -103,6 +97,11 @@ export async function readAnalysisInfo(projectDir) {
|
|
|
103
97
|
const isTestOnly = typeof a.is_test_only === "boolean" ? a.is_test_only : false;
|
|
104
98
|
const isStuck = typeof a.is_stuck === "boolean" ? a.is_stuck : false;
|
|
105
99
|
const exitSignal = typeof a.exit_signal === "boolean" ? a.exit_signal : false;
|
|
100
|
+
const tasksCompletedThisLoop = typeof a.tasks_completed_this_loop === "number" ? a.tasks_completed_this_loop : 0;
|
|
101
|
+
const fixPlanCompletedDelta = typeof a.fix_plan_completed_delta === "number" ? a.fix_plan_completed_delta : 0;
|
|
102
|
+
const hasProgressTrackingMismatch = typeof a.has_progress_tracking_mismatch === "boolean"
|
|
103
|
+
? a.has_progress_tracking_mismatch
|
|
104
|
+
: false;
|
|
106
105
|
const hasPermissionDenials = typeof a.has_permission_denials === "boolean" ? a.has_permission_denials : false;
|
|
107
106
|
const permissionDenialCount = typeof a.permission_denial_count === "number" ? a.permission_denial_count : 0;
|
|
108
107
|
return {
|
|
@@ -111,6 +110,9 @@ export async function readAnalysisInfo(projectDir) {
|
|
|
111
110
|
isTestOnly,
|
|
112
111
|
isStuck,
|
|
113
112
|
exitSignal,
|
|
113
|
+
tasksCompletedThisLoop,
|
|
114
|
+
fixPlanCompletedDelta,
|
|
115
|
+
hasProgressTrackingMismatch,
|
|
114
116
|
hasPermissionDenials,
|
|
115
117
|
permissionDenialCount,
|
|
116
118
|
};
|
|
@@ -129,7 +131,9 @@ export async function readExecutionProgress(projectDir) {
|
|
|
129
131
|
if (status !== "executing")
|
|
130
132
|
return null;
|
|
131
133
|
const elapsedSeconds = typeof data.elapsed_seconds === "number" ? data.elapsed_seconds : 0;
|
|
132
|
-
|
|
134
|
+
const indicator = typeof data.indicator === "string" ? data.indicator : "⠋";
|
|
135
|
+
const lastOutput = typeof data.last_output === "string" ? data.last_output : "";
|
|
136
|
+
return { status, elapsedSeconds, indicator, lastOutput };
|
|
133
137
|
}
|
|
134
138
|
catch (err) {
|
|
135
139
|
debug(`Failed to read execution progress: ${formatError(err)}`);
|
|
@@ -137,20 +141,59 @@ export async function readExecutionProgress(projectDir) {
|
|
|
137
141
|
}
|
|
138
142
|
}
|
|
139
143
|
export async function readSessionInfo(projectDir) {
|
|
144
|
+
const result = await readRalphRuntimeSession(projectDir);
|
|
145
|
+
if (result.kind === "missing") {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
if (result.kind !== "ok") {
|
|
149
|
+
debug(`Failed to read session info: ${formatError(result.error)}`);
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
if (result.value.kind !== "active") {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
createdAt: result.value.created_at,
|
|
157
|
+
lastUsed: result.value.last_used,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
const LIVE_LOG_MAX_LINES = 5;
|
|
161
|
+
const LIVE_LOG_TAIL_BYTES = 2048;
|
|
162
|
+
export async function readLiveLog(projectDir) {
|
|
163
|
+
const logPath = join(projectDir, RALPH_DIR, "live.log");
|
|
164
|
+
let content;
|
|
140
165
|
try {
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
166
|
+
const fh = await open(logPath, "r");
|
|
167
|
+
try {
|
|
168
|
+
const stats = await fh.stat();
|
|
169
|
+
if (stats.size === 0) {
|
|
170
|
+
return [];
|
|
171
|
+
}
|
|
172
|
+
if (stats.size <= LIVE_LOG_TAIL_BYTES) {
|
|
173
|
+
content = await fh.readFile("utf-8");
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
const position = stats.size - LIVE_LOG_TAIL_BYTES;
|
|
177
|
+
const buf = Buffer.alloc(LIVE_LOG_TAIL_BYTES);
|
|
178
|
+
const { bytesRead } = await fh.read(buf, 0, LIVE_LOG_TAIL_BYTES, position);
|
|
179
|
+
const raw = buf.toString("utf-8", 0, bytesRead);
|
|
180
|
+
const newlineIdx = raw.indexOf("\n");
|
|
181
|
+
content = newlineIdx >= 0 ? raw.slice(newlineIdx + 1) : raw;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
finally {
|
|
185
|
+
await fh.close();
|
|
186
|
+
}
|
|
149
187
|
}
|
|
150
188
|
catch (err) {
|
|
151
|
-
debug(`Failed to read
|
|
152
|
-
return
|
|
189
|
+
debug(`Failed to read live log: ${formatError(err)}`);
|
|
190
|
+
return [];
|
|
153
191
|
}
|
|
192
|
+
const lines = content
|
|
193
|
+
.split(/\r?\n/)
|
|
194
|
+
.map((line) => line.trimEnd())
|
|
195
|
+
.filter((line) => line.length > 0);
|
|
196
|
+
return lines.slice(-LIVE_LOG_MAX_LINES);
|
|
154
197
|
}
|
|
155
198
|
export async function readRecentLogs(projectDir, maxLines = DEFAULT_MAX_LOG_LINES) {
|
|
156
199
|
const logPath = join(projectDir, RALPH_DIR, "logs", "ralph.log");
|