@arvorco/relentless 0.1.13 → 0.1.15
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/package.json
CHANGED
package/src/tui/TUIRunner.tsx
CHANGED
|
@@ -73,11 +73,16 @@ function TUIRunnerComponent({
|
|
|
73
73
|
return () => clearInterval(interval);
|
|
74
74
|
}, [state.isRunning]);
|
|
75
75
|
|
|
76
|
-
// Add output line
|
|
76
|
+
// Add output line (strips newlines to prevent rendering issues)
|
|
77
77
|
const addOutput = useCallback((line: string) => {
|
|
78
|
+
// Remove leading/trailing newlines and split if line contains embedded newlines
|
|
79
|
+
const cleanLines = line.split("\n").map(l => l.trim()).filter(l => l.length > 0);
|
|
80
|
+
|
|
81
|
+
if (cleanLines.length === 0) return; // Skip empty lines
|
|
82
|
+
|
|
78
83
|
setState((prev) => ({
|
|
79
84
|
...prev,
|
|
80
|
-
outputLines: [...prev.outputLines.slice(-100),
|
|
85
|
+
outputLines: [...prev.outputLines.slice(-100), ...cleanLines], // Keep last 100 lines
|
|
81
86
|
}));
|
|
82
87
|
}, []);
|
|
83
88
|
|
|
@@ -152,7 +157,7 @@ function TUIRunnerComponent({
|
|
|
152
157
|
elapsedSeconds: 0,
|
|
153
158
|
}));
|
|
154
159
|
|
|
155
|
-
addOutput(
|
|
160
|
+
addOutput(`--- Iteration ${i}/${maxIterations} ---`);
|
|
156
161
|
addOutput(`Story: ${story.id} - ${story.title}`);
|
|
157
162
|
|
|
158
163
|
// Select agent
|
|
@@ -350,7 +355,7 @@ function TUIRunnerComponent({
|
|
|
350
355
|
}));
|
|
351
356
|
|
|
352
357
|
if (!success) {
|
|
353
|
-
addOutput(
|
|
358
|
+
addOutput(`⚠️ Reached max iterations (${maxIterations}) without completing all stories.`);
|
|
354
359
|
}
|
|
355
360
|
|
|
356
361
|
onComplete(success);
|
|
@@ -20,12 +20,6 @@ export function AgentOutput({
|
|
|
20
20
|
// Take last N lines for display
|
|
21
21
|
const displayLines = lines.slice(-maxLines);
|
|
22
22
|
|
|
23
|
-
// Pad to maintain consistent height
|
|
24
|
-
const paddedLines = [...displayLines];
|
|
25
|
-
while (paddedLines.length < maxLines) {
|
|
26
|
-
paddedLines.push("");
|
|
27
|
-
}
|
|
28
|
-
|
|
29
23
|
return (
|
|
30
24
|
<Box flexDirection="column" borderStyle="single" borderColor={colors.dim}>
|
|
31
25
|
<Box paddingX={1} borderBottom borderColor={colors.dim}>
|
|
@@ -33,12 +27,18 @@ export function AgentOutput({
|
|
|
33
27
|
Agent Output
|
|
34
28
|
</Text>
|
|
35
29
|
</Box>
|
|
36
|
-
<Box flexDirection="column" paddingX={1}
|
|
37
|
-
{
|
|
38
|
-
|
|
39
|
-
{
|
|
30
|
+
<Box flexDirection="column" paddingX={1} height={maxLines}>
|
|
31
|
+
{displayLines.length > 0 ? (
|
|
32
|
+
displayLines.map((line, i) => (
|
|
33
|
+
<Text key={i} color={colors.dim} wrap="truncate">
|
|
34
|
+
{line}
|
|
35
|
+
</Text>
|
|
36
|
+
))
|
|
37
|
+
) : (
|
|
38
|
+
<Text color={colors.dim} dimColor>
|
|
39
|
+
Waiting for agent output...
|
|
40
40
|
</Text>
|
|
41
|
-
)
|
|
41
|
+
)}
|
|
42
42
|
</Box>
|
|
43
43
|
</Box>
|
|
44
44
|
);
|