@rcrsr/claude-code-runner 0.9.1 → 0.11.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/README.md +13 -10
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +25 -4
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/docs.d.ts +9 -0
- package/dist/cli/docs.d.ts.map +1 -0
- package/dist/cli/docs.js +55 -0
- package/dist/cli/docs.js.map +1 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js +14 -2
- package/dist/index.js.map +1 -1
- package/dist/output/colors.d.ts +33 -1
- package/dist/output/colors.d.ts.map +1 -1
- package/dist/output/colors.js +119 -1
- package/dist/output/colors.js.map +1 -1
- package/dist/output/formatter.d.ts +6 -0
- package/dist/output/formatter.d.ts.map +1 -1
- package/dist/output/formatter.js +72 -34
- package/dist/output/formatter.js.map +1 -1
- package/dist/output/ui-components.d.ts +34 -0
- package/dist/output/ui-components.d.ts.map +1 -0
- package/dist/output/ui-components.js +158 -0
- package/dist/output/ui-components.js.map +1 -0
- package/dist/output/ui-renderer.d.ts +18 -0
- package/dist/output/ui-renderer.d.ts.map +1 -0
- package/dist/output/ui-renderer.js +75 -0
- package/dist/output/ui-renderer.js.map +1 -0
- package/dist/output/ui-state.d.ts +71 -0
- package/dist/output/ui-state.d.ts.map +1 -0
- package/dist/output/ui-state.js +131 -0
- package/dist/output/ui-state.js.map +1 -0
- package/dist/rill/context.d.ts +2 -0
- package/dist/rill/context.d.ts.map +1 -1
- package/dist/rill/context.js +84 -13
- package/dist/rill/context.js.map +1 -1
- package/dist/rill/runner.d.ts.map +1 -1
- package/dist/rill/runner.js +56 -1
- package/dist/rill/runner.js.map +1 -1
- package/dist/types/runner.d.ts +12 -3
- package/dist/types/runner.d.ts.map +1 -1
- package/dist/types/runner.js.map +1 -1
- package/dist/utils/constants.d.ts +4 -0
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +5 -0
- package/dist/utils/constants.js.map +1 -1
- package/package.json +4 -3
package/dist/output/formatter.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { isAssistantMessage, isResultMessage, isSystemInitMessage, isTextBlock, isToolResultBlock, isToolUseBlock, isUserMessage, } from '../types/claude.js';
|
|
5
5
|
import { NOISE_PATTERNS, } from '../types/runner.js';
|
|
6
6
|
import { MAX_RESULT_LINES, TRUNCATE_BASH_CMD, TRUNCATE_ERROR, TRUNCATE_GREP_PATTERN, TRUNCATE_MESSAGE, TRUNCATE_TASK_DESC, TRUNCATE_TOOL_JSON, TRUNCATE_VERBOSE_LINE, } from '../utils/constants.js';
|
|
7
|
-
import { colors, formatDuration, printClaude, printRunner, shortenPath, terminalLog, timestampPrefix, truncate, } from './colors.js';
|
|
7
|
+
import { agentMarker, colors, formatDuration, printClaude, printRunner, shortenPath, terminalLog, timestampPrefix, truncate, } from './colors.js';
|
|
8
8
|
import { createRunStats, formatStatsSummary, incrementMessageCount, mergeStats, recordOutput, recordToolUse, resetRunStats, updateTokenStats, } from './stats.js';
|
|
9
9
|
export function createFormatterState() {
|
|
10
10
|
return {
|
|
@@ -23,6 +23,9 @@ export function createFormatterState() {
|
|
|
23
23
|
stepStartTime: null,
|
|
24
24
|
taskStatsMap: new Map(),
|
|
25
25
|
taskStartTimes: new Map(),
|
|
26
|
+
taskReadyQueue: [],
|
|
27
|
+
taskPendingQueue: [],
|
|
28
|
+
currentStatusText: null,
|
|
26
29
|
};
|
|
27
30
|
}
|
|
28
31
|
export function resetFormatterState(state) {
|
|
@@ -37,6 +40,9 @@ export function resetFormatterState(state) {
|
|
|
37
40
|
state.stepStartTime = null;
|
|
38
41
|
state.taskStatsMap.clear();
|
|
39
42
|
state.taskStartTimes.clear();
|
|
43
|
+
state.taskReadyQueue = [];
|
|
44
|
+
state.taskPendingQueue = [];
|
|
45
|
+
state.currentStatusText = null;
|
|
40
46
|
// Note: runStats is NOT reset - it accumulates across steps
|
|
41
47
|
}
|
|
42
48
|
/**
|
|
@@ -70,31 +76,28 @@ function filterNoiseLines(text) {
|
|
|
70
76
|
.join('\n');
|
|
71
77
|
}
|
|
72
78
|
/**
|
|
73
|
-
* Get task
|
|
79
|
+
* Get task color index for a tool, or -1 if not in a task
|
|
74
80
|
*/
|
|
75
|
-
|
|
76
|
-
* Get task label for a tool, or empty string if not in a task
|
|
77
|
-
*/
|
|
78
|
-
function getToolTaskLabel(toolId, state) {
|
|
81
|
+
function getToolTaskColorIndex(toolId, state) {
|
|
79
82
|
const taskId = state.toolToTaskId.get(toolId);
|
|
80
83
|
if (!taskId)
|
|
81
|
-
return
|
|
84
|
+
return -1;
|
|
82
85
|
const task = state.activeTasks.get(taskId);
|
|
83
|
-
return task?.
|
|
86
|
+
return task?.colorIndex ?? -1;
|
|
84
87
|
}
|
|
85
88
|
/**
|
|
86
|
-
* Format a task
|
|
89
|
+
* Format a task marker (colored dot)
|
|
87
90
|
*/
|
|
88
|
-
function
|
|
89
|
-
return
|
|
91
|
+
function formatTaskMarker(colorIndex) {
|
|
92
|
+
return agentMarker(colorIndex);
|
|
90
93
|
}
|
|
91
94
|
/**
|
|
92
95
|
* Format a single tool use for display
|
|
93
96
|
*/
|
|
94
97
|
function formatToolUse(tool, indented, state) {
|
|
95
|
-
const
|
|
96
|
-
const inTask =
|
|
97
|
-
const labelPrefix = inTask ?
|
|
98
|
+
const colorIndex = getToolTaskColorIndex(tool.id, state);
|
|
99
|
+
const inTask = colorIndex >= 0;
|
|
100
|
+
const labelPrefix = inTask ? `${formatTaskMarker(colorIndex)} ` : '';
|
|
98
101
|
const prefix = indented
|
|
99
102
|
? `${timestampPrefix()}${labelPrefix} → `
|
|
100
103
|
: `${timestampPrefix()}${labelPrefix}`;
|
|
@@ -118,7 +121,7 @@ function formatToolUse(tool, indented, state) {
|
|
|
118
121
|
// Task state already initialized in pre-scan, just print header
|
|
119
122
|
const task = state.activeTasks.get(tool.id);
|
|
120
123
|
if (task) {
|
|
121
|
-
terminalLog(`${timestampPrefix()}${colors.yellow}[${task.name}]${colors.reset} ${
|
|
124
|
+
terminalLog(`${timestampPrefix()}${formatTaskMarker(task.colorIndex)} ${colors.yellow}[${task.name}]${colors.reset} ${task.description}`);
|
|
122
125
|
}
|
|
123
126
|
return;
|
|
124
127
|
}
|
|
@@ -164,9 +167,9 @@ function printToolResult(result, durationStr, verbosity, state) {
|
|
|
164
167
|
if (verbosity === 'quiet') {
|
|
165
168
|
return;
|
|
166
169
|
}
|
|
167
|
-
// Get task
|
|
168
|
-
const
|
|
169
|
-
const indent =
|
|
170
|
+
// Get task marker for this tool's result
|
|
171
|
+
const colorIndex = getToolTaskColorIndex(result.tool_use_id, state);
|
|
172
|
+
const indent = colorIndex >= 0 ? `${formatTaskMarker(colorIndex)} ` : '';
|
|
170
173
|
if (verbosity === 'normal') {
|
|
171
174
|
// In normal mode, suppress per-tool timing
|
|
172
175
|
return;
|
|
@@ -202,8 +205,8 @@ function printTaskResult(taskId, _verbosity, state) {
|
|
|
202
205
|
const statsSummary = taskStats
|
|
203
206
|
? formatStatsSummary(taskStats, taskDuration)
|
|
204
207
|
: formatDuration(taskDuration);
|
|
205
|
-
// Print task completion with
|
|
206
|
-
terminalLog(`${timestampPrefix()}
|
|
208
|
+
// Print task completion with marker
|
|
209
|
+
terminalLog(`${timestampPrefix()}${formatTaskMarker(task.colorIndex)} ${colors.yellow}[${task.name}]${colors.reset} Complete ${statsSummary}`);
|
|
207
210
|
// Merge task stats into step stats before clearing
|
|
208
211
|
if (taskStats) {
|
|
209
212
|
mergeStats(state.stats, taskStats);
|
|
@@ -212,6 +215,8 @@ function printTaskResult(taskId, _verbosity, state) {
|
|
|
212
215
|
state.activeTasks.delete(taskId);
|
|
213
216
|
state.taskStatsMap.delete(taskId);
|
|
214
217
|
state.taskStartTimes.delete(taskId);
|
|
218
|
+
state.taskReadyQueue = state.taskReadyQueue.filter((id) => id !== taskId);
|
|
219
|
+
state.taskPendingQueue = state.taskPendingQueue.filter((id) => id !== taskId);
|
|
215
220
|
// Update currentTaskId if this was the current task
|
|
216
221
|
if (state.currentTaskId === taskId) {
|
|
217
222
|
// Set to another active task if any, otherwise null
|
|
@@ -232,6 +237,7 @@ parallelThresholdMs) {
|
|
|
232
237
|
else if (isAssistantMessage(msg)) {
|
|
233
238
|
flushPendingTools(state, verbosity);
|
|
234
239
|
// Check for Task tools first to initialize task tracking
|
|
240
|
+
const preTaskCount = state.activeTasks.size;
|
|
235
241
|
for (const block of msg.message.content) {
|
|
236
242
|
if (isToolUseBlock(block) && block.name === 'Task') {
|
|
237
243
|
const input = block.input;
|
|
@@ -239,24 +245,42 @@ parallelThresholdMs) {
|
|
|
239
245
|
const taskDesc = truncate(input['description'] ??
|
|
240
246
|
input['prompt'] ??
|
|
241
247
|
'', TRUNCATE_TASK_DESC);
|
|
242
|
-
//
|
|
243
|
-
const
|
|
248
|
+
// Assign color index (cycles through 8 colors)
|
|
249
|
+
const colorIndex = state.nextLabelIndex;
|
|
244
250
|
state.nextLabelIndex++;
|
|
245
251
|
const task = {
|
|
246
252
|
name: taskType,
|
|
247
253
|
description: taskDesc,
|
|
248
254
|
id: block.id,
|
|
249
|
-
|
|
255
|
+
colorIndex,
|
|
250
256
|
};
|
|
251
257
|
state.activeTasks.set(block.id, task);
|
|
252
258
|
state.taskStatsMap.set(block.id, createRunStats());
|
|
253
259
|
state.taskStartTimes.set(block.id, Date.now());
|
|
254
260
|
state.currentTaskId = block.id;
|
|
261
|
+
state.taskPendingQueue.push(block.id);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
const createdTasks = state.activeTasks.size > preTaskCount;
|
|
265
|
+
// Determine message-level task attribution for non-Task tools
|
|
266
|
+
// Each assistant message comes from one agent context
|
|
267
|
+
let messageTaskId = null;
|
|
268
|
+
if (!createdTasks && state.activeTasks.size > 1) {
|
|
269
|
+
// Multiple concurrent tasks: use queue-based attribution
|
|
270
|
+
// Ready queue = tasks that just got a tool result (conversation continues)
|
|
271
|
+
// Pending queue = tasks awaiting their first action (creation order)
|
|
272
|
+
const candidateId = state.taskReadyQueue.shift() ?? state.taskPendingQueue.shift() ?? null;
|
|
273
|
+
if (candidateId && state.activeTasks.has(candidateId)) {
|
|
274
|
+
messageTaskId = candidateId;
|
|
255
275
|
}
|
|
256
276
|
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
277
|
+
else if (state.activeTasks.size === 1 && state.currentTaskId) {
|
|
278
|
+
messageTaskId = state.currentTaskId;
|
|
279
|
+
}
|
|
280
|
+
// Track message and token usage in stats
|
|
281
|
+
const statsTaskId = messageTaskId ?? state.currentTaskId;
|
|
282
|
+
const currentTaskStats = statsTaskId
|
|
283
|
+
? state.taskStatsMap.get(statsTaskId)
|
|
260
284
|
: null;
|
|
261
285
|
const stats = currentTaskStats ?? state.stats;
|
|
262
286
|
incrementMessageCount(stats);
|
|
@@ -285,11 +309,11 @@ parallelThresholdMs) {
|
|
|
285
309
|
const now = Date.now();
|
|
286
310
|
// Record start time
|
|
287
311
|
state.toolStartTimes.set(block.id, now);
|
|
288
|
-
// Attribute non-Task tools
|
|
289
|
-
if (block.name !== 'Task' &&
|
|
290
|
-
state.toolToTaskId.set(block.id,
|
|
291
|
-
// Track tool use in
|
|
292
|
-
const taskStats = state.taskStatsMap.get(
|
|
312
|
+
// Attribute non-Task tools using message-level task attribution
|
|
313
|
+
if (block.name !== 'Task' && messageTaskId) {
|
|
314
|
+
state.toolToTaskId.set(block.id, messageTaskId);
|
|
315
|
+
// Track tool use in attributed task's stats
|
|
316
|
+
const taskStats = state.taskStatsMap.get(messageTaskId);
|
|
293
317
|
if (taskStats) {
|
|
294
318
|
recordToolUse(taskStats, block.name);
|
|
295
319
|
}
|
|
@@ -347,11 +371,18 @@ parallelThresholdMs) {
|
|
|
347
371
|
content.startsWith('Error:') ||
|
|
348
372
|
content.startsWith('error:');
|
|
349
373
|
if (isError) {
|
|
350
|
-
const
|
|
351
|
-
const indent =
|
|
374
|
+
const colorIndex = getToolTaskColorIndex(toolUseId, state);
|
|
375
|
+
const indent = colorIndex >= 0 ? `${formatTaskMarker(colorIndex)} ` : '';
|
|
352
376
|
// Strip <tool_use_error> tags for cleaner display
|
|
353
377
|
const cleanError = content.replace(/<\/?tool_use_error>/g, '').trim();
|
|
354
|
-
terminalLog(`${timestampPrefix()}${indent}
|
|
378
|
+
terminalLog(`${timestampPrefix()}${indent}${colors.red}[error]${colors.reset} ${truncate(cleanError, TRUNCATE_ERROR)}`);
|
|
379
|
+
// Queue parent task for next attribution (conversation continues after error)
|
|
380
|
+
const parentTaskId = state.toolToTaskId.get(toolUseId);
|
|
381
|
+
if (parentTaskId &&
|
|
382
|
+
state.activeTasks.has(parentTaskId) &&
|
|
383
|
+
!state.taskReadyQueue.includes(parentTaskId)) {
|
|
384
|
+
state.taskReadyQueue.push(parentTaskId);
|
|
385
|
+
}
|
|
355
386
|
}
|
|
356
387
|
else if (state.activeTasks.has(toolUseId)) {
|
|
357
388
|
// Task completing
|
|
@@ -359,6 +390,13 @@ parallelThresholdMs) {
|
|
|
359
390
|
}
|
|
360
391
|
else {
|
|
361
392
|
printToolResult(block, durationStr, verbosity, state);
|
|
393
|
+
// Queue parent task for next attribution (conversation continues)
|
|
394
|
+
const parentTaskId = state.toolToTaskId.get(toolUseId);
|
|
395
|
+
if (parentTaskId &&
|
|
396
|
+
state.activeTasks.has(parentTaskId) &&
|
|
397
|
+
!state.taskReadyQueue.includes(parentTaskId)) {
|
|
398
|
+
state.taskReadyQueue.push(parentTaskId);
|
|
399
|
+
}
|
|
362
400
|
}
|
|
363
401
|
}
|
|
364
402
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/output/formatter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/output/formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI component formatting functions for parallel agent display
|
|
3
|
+
*/
|
|
4
|
+
import type { AgentState, LogEntry } from './ui-state.js';
|
|
5
|
+
/**
|
|
6
|
+
* Format single log entry with colors
|
|
7
|
+
* Timestamp: dim HH:MM:SS.mmm
|
|
8
|
+
* Agent name: yellow
|
|
9
|
+
* Agent label: magenta
|
|
10
|
+
* Tool names: blue
|
|
11
|
+
* Completion stats: green duration and count
|
|
12
|
+
*/
|
|
13
|
+
export declare function formatLogEntry(entry: LogEntry): string;
|
|
14
|
+
/**
|
|
15
|
+
* Generate ANSI-formatted lines for consolidated timeline
|
|
16
|
+
* Shows max 10 entries during execution, all entries when complete
|
|
17
|
+
*
|
|
18
|
+
* @param entries - Log entries sorted chronologically
|
|
19
|
+
* @param allComplete - Whether all agents have completed
|
|
20
|
+
* @returns Array of formatted lines including header and entries
|
|
21
|
+
*/
|
|
22
|
+
export declare function renderMainLog(entries: LogEntry[], allComplete: boolean): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Generate ANSI-formatted lines for single agent box
|
|
25
|
+
* Width adapts to terminal width, max 70 characters
|
|
26
|
+
* Single-line border style using box-drawing characters
|
|
27
|
+
*
|
|
28
|
+
* @param agent - Agent state with name, label, description, tool calls
|
|
29
|
+
* @param width - Box width in characters
|
|
30
|
+
* @returns Array of formatted lines representing the box
|
|
31
|
+
* @throws {Error} if width < 30
|
|
32
|
+
*/
|
|
33
|
+
export declare function renderAgentBox(agent: AgentState, width: number): string[];
|
|
34
|
+
//# sourceMappingURL=ui-components.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-components.d.ts","sourceRoot":"","sources":["../../src/output/ui-components.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAkB1D;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CA4CtD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,QAAQ,EAAE,EACnB,WAAW,EAAE,OAAO,GACnB,MAAM,EAAE,CAoBV;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA6EzE"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI component formatting functions for parallel agent display
|
|
3
|
+
*/
|
|
4
|
+
import { UI_MAX_VISIBLE_LOG, UI_MAX_VISIBLE_TOOLS, UI_MIN_BOX_WIDTH, } from '../utils/constants.js';
|
|
5
|
+
import { colors } from './colors.js';
|
|
6
|
+
import { colorize, formatDuration, formatTimestamp, stripAnsi, truncate, } from './colors.js';
|
|
7
|
+
/**
|
|
8
|
+
* Spinner frames for loading animation
|
|
9
|
+
*/
|
|
10
|
+
const SPINNER_FRAMES = [
|
|
11
|
+
'⠋',
|
|
12
|
+
'⠙',
|
|
13
|
+
'⠹',
|
|
14
|
+
'⠸',
|
|
15
|
+
'⠼',
|
|
16
|
+
'⠴',
|
|
17
|
+
'⠦',
|
|
18
|
+
'⠧',
|
|
19
|
+
'⠇',
|
|
20
|
+
'⠏',
|
|
21
|
+
];
|
|
22
|
+
/**
|
|
23
|
+
* Format single log entry with colors
|
|
24
|
+
* Timestamp: dim HH:MM:SS.mmm
|
|
25
|
+
* Agent name: yellow
|
|
26
|
+
* Agent label: magenta
|
|
27
|
+
* Tool names: blue
|
|
28
|
+
* Completion stats: green duration and count
|
|
29
|
+
*/
|
|
30
|
+
export function formatLogEntry(entry) {
|
|
31
|
+
const timestamp = colorize(formatTimestamp(entry.timestamp), 'dim');
|
|
32
|
+
const agentName = colorize(entry.agentName, 'yellow');
|
|
33
|
+
const label = colorize(`[${entry.agentLabel}]`, 'magenta');
|
|
34
|
+
switch (entry.type) {
|
|
35
|
+
case 'invocation': {
|
|
36
|
+
return `${timestamp} ${label} ${agentName} ${entry.content}`;
|
|
37
|
+
}
|
|
38
|
+
case 'tool': {
|
|
39
|
+
// Extract tool name and args from content format: "toolName(args)"
|
|
40
|
+
const regex = /^([^(]+)\((.*)\)$/;
|
|
41
|
+
const match = regex.exec(entry.content);
|
|
42
|
+
const toolNamePart = match?.[1];
|
|
43
|
+
const argsPart = match?.[2];
|
|
44
|
+
if (toolNamePart !== undefined && argsPart !== undefined) {
|
|
45
|
+
const toolName = colorize(toolNamePart, 'blue');
|
|
46
|
+
return `${timestamp} ${label} ${agentName} ${toolName}(${argsPart})`;
|
|
47
|
+
}
|
|
48
|
+
// Fallback if content doesn't match expected format
|
|
49
|
+
return `${timestamp} ${label} ${agentName} ${entry.content}`;
|
|
50
|
+
}
|
|
51
|
+
case 'completion': {
|
|
52
|
+
const duration = entry.duration !== undefined
|
|
53
|
+
? colorize(formatDuration(entry.duration), 'green')
|
|
54
|
+
: '';
|
|
55
|
+
const messageCount = entry.messageCount !== undefined
|
|
56
|
+
? colorize(`${entry.messageCount} msgs`, 'green')
|
|
57
|
+
: '';
|
|
58
|
+
const stats = [duration, messageCount].filter(Boolean).join(' ');
|
|
59
|
+
return `${timestamp} ${label} ${agentName} ${entry.content}${stats ? ` ${stats}` : ''}`;
|
|
60
|
+
}
|
|
61
|
+
default: {
|
|
62
|
+
// Exhaustiveness check - should never reach here
|
|
63
|
+
entry.type;
|
|
64
|
+
return `${timestamp} ${label} ${agentName} ${entry.content}`;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Generate ANSI-formatted lines for consolidated timeline
|
|
70
|
+
* Shows max 10 entries during execution, all entries when complete
|
|
71
|
+
*
|
|
72
|
+
* @param entries - Log entries sorted chronologically
|
|
73
|
+
* @param allComplete - Whether all agents have completed
|
|
74
|
+
* @returns Array of formatted lines including header and entries
|
|
75
|
+
*/
|
|
76
|
+
export function renderMainLog(entries, allComplete) {
|
|
77
|
+
const lines = [];
|
|
78
|
+
// Generate header with centered "main log" and optional spinner
|
|
79
|
+
const headerText = 'main log';
|
|
80
|
+
const spinner = allComplete ? '' : SPINNER_FRAMES[0];
|
|
81
|
+
const header = spinner ? `${spinner} ${headerText}` : headerText;
|
|
82
|
+
lines.push(header);
|
|
83
|
+
// Determine which entries to show based on completion status
|
|
84
|
+
const visibleEntries = allComplete
|
|
85
|
+
? entries
|
|
86
|
+
: entries.slice(-UI_MAX_VISIBLE_LOG);
|
|
87
|
+
// Format and add each visible entry
|
|
88
|
+
for (const entry of visibleEntries) {
|
|
89
|
+
lines.push(formatLogEntry(entry));
|
|
90
|
+
}
|
|
91
|
+
return lines;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Generate ANSI-formatted lines for single agent box
|
|
95
|
+
* Width adapts to terminal width, max 70 characters
|
|
96
|
+
* Single-line border style using box-drawing characters
|
|
97
|
+
*
|
|
98
|
+
* @param agent - Agent state with name, label, description, tool calls
|
|
99
|
+
* @param width - Box width in characters
|
|
100
|
+
* @returns Array of formatted lines representing the box
|
|
101
|
+
* @throws {Error} if width < 30
|
|
102
|
+
*/
|
|
103
|
+
export function renderAgentBox(agent, width) {
|
|
104
|
+
// EC-9: Validate minimum width
|
|
105
|
+
if (width < UI_MIN_BOX_WIDTH) {
|
|
106
|
+
throw new Error(`Box width ${width} below minimum 30`);
|
|
107
|
+
}
|
|
108
|
+
const lines = [];
|
|
109
|
+
const contentWidth = width - 4; // Account for border characters and padding
|
|
110
|
+
// Header: yellow name, magenta label, description
|
|
111
|
+
const nameText = colorize(agent.name, 'yellow');
|
|
112
|
+
const labelText = colorize(`[${agent.label}]`, 'magenta');
|
|
113
|
+
// Calculate plain text lengths for layout
|
|
114
|
+
const nameLen = agent.name.length;
|
|
115
|
+
const labelLen = agent.label.length + 2; // brackets add 2 chars
|
|
116
|
+
const prefixLen = nameLen + 1 + labelLen + 1; // name + space + label + space
|
|
117
|
+
// Truncate description if needed (truncate adds '...' so subtract 3 from available space)
|
|
118
|
+
const descMaxLen = contentWidth - prefixLen;
|
|
119
|
+
const truncatedDesc = agent.description.length > descMaxLen
|
|
120
|
+
? truncate(agent.description, descMaxLen - 3)
|
|
121
|
+
: agent.description;
|
|
122
|
+
const headerContent = `${nameText} ${labelText} ${truncatedDesc}`;
|
|
123
|
+
// Top border
|
|
124
|
+
lines.push(`┌${'─'.repeat(width - 2)}┐`);
|
|
125
|
+
// Header line - calculate padding based on actual plain-text length
|
|
126
|
+
const headerPlainLength = stripAnsi(headerContent).length;
|
|
127
|
+
lines.push(`│ ${headerContent}${' '.repeat(Math.max(0, contentWidth - headerPlainLength))} │`);
|
|
128
|
+
// Body: 5 tool call lines or ellipsis
|
|
129
|
+
if (agent.toolCalls.length === 0) {
|
|
130
|
+
// AC-14: Empty tool call list shows ellipsis
|
|
131
|
+
lines.push(`│ ${colors.dim}...${colors.reset}${' '.repeat(contentWidth - 3)} │`);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// Show last 5 tool calls
|
|
135
|
+
const visibleCalls = agent.toolCalls.slice(-UI_MAX_VISIBLE_TOOLS);
|
|
136
|
+
for (const call of visibleCalls) {
|
|
137
|
+
const toolText = colorize(call.toolName, 'blue');
|
|
138
|
+
const argsText = truncate(call.args, contentWidth - call.toolName.length - 2);
|
|
139
|
+
const lineContent = `${toolText}(${argsText})`;
|
|
140
|
+
const plainContent = `${call.toolName}(${argsText})`;
|
|
141
|
+
const padding = ' '.repeat(Math.max(0, contentWidth - plainContent.length));
|
|
142
|
+
lines.push(`│ ${lineContent}${padding} │`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Footer: dim elapsed time, message count, spinner
|
|
146
|
+
const elapsed = Date.now() - agent.startTime;
|
|
147
|
+
const elapsedText = colorize(formatDuration(elapsed), 'dim');
|
|
148
|
+
const messageText = colorize(`${agent.messageCount} msgs`, 'dim');
|
|
149
|
+
const spinnerChar = agent.status === 'running' ? SPINNER_FRAMES[0] : '';
|
|
150
|
+
const footerContent = `${elapsedText} ${messageText} ${spinnerChar}`;
|
|
151
|
+
const footerPlain = `${formatDuration(elapsed)} ${agent.messageCount} msgs ${spinnerChar}`;
|
|
152
|
+
const footerPadding = ' '.repeat(Math.max(0, contentWidth - footerPlain.length));
|
|
153
|
+
lines.push(`│ ${footerContent}${footerPadding} │`);
|
|
154
|
+
// Bottom border
|
|
155
|
+
lines.push(`└${'─'.repeat(width - 2)}┘`);
|
|
156
|
+
return lines;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=ui-components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-components.js","sourceRoot":"","sources":["../../src/output/ui-components.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI renderer for parallel agent display
|
|
3
|
+
* Manages 60fps render loop with terminal clear/redraw
|
|
4
|
+
*/
|
|
5
|
+
import type { UIState } from './ui-state.js';
|
|
6
|
+
export interface UIRenderer {
|
|
7
|
+
start(): void;
|
|
8
|
+
stop(): void;
|
|
9
|
+
render(): void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Create a UI renderer with 60fps render loop
|
|
13
|
+
* @param state - UI state to render
|
|
14
|
+
* @returns UIRenderer interface
|
|
15
|
+
* @throws {Error} EC-8: Terminal width < 70
|
|
16
|
+
*/
|
|
17
|
+
export declare function createUIRenderer(state: UIState): UIRenderer;
|
|
18
|
+
//# sourceMappingURL=ui-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-renderer.d.ts","sourceRoot":"","sources":["../../src/output/ui-renderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,IAAI,IAAI,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAgF3D"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI renderer for parallel agent display
|
|
3
|
+
* Manages 60fps render loop with terminal clear/redraw
|
|
4
|
+
*/
|
|
5
|
+
import { UI_MAX_BOX_WIDTH, UI_MIN_TERMINAL_WIDTH, UI_RENDER_INTERVAL_MS, UI_SPINNER_INTERVAL_MS, } from '../utils/constants.js';
|
|
6
|
+
import { terminalLog } from './colors.js';
|
|
7
|
+
import { renderAgentBox, renderMainLog } from './ui-components.js';
|
|
8
|
+
/**
|
|
9
|
+
* Create a UI renderer with 60fps render loop
|
|
10
|
+
* @param state - UI state to render
|
|
11
|
+
* @returns UIRenderer interface
|
|
12
|
+
* @throws {Error} EC-8: Terminal width < 70
|
|
13
|
+
*/
|
|
14
|
+
export function createUIRenderer(state) {
|
|
15
|
+
let intervalId = null;
|
|
16
|
+
let frameCount = 0;
|
|
17
|
+
return {
|
|
18
|
+
start() {
|
|
19
|
+
// EC-7: Already started → Error
|
|
20
|
+
if (intervalId !== null) {
|
|
21
|
+
throw new Error('Renderer already running');
|
|
22
|
+
}
|
|
23
|
+
// EC-8: Terminal width < 70 → Error
|
|
24
|
+
const terminalWidth = process.stdout.columns || 80;
|
|
25
|
+
if (terminalWidth < UI_MIN_TERMINAL_WIDTH) {
|
|
26
|
+
throw new Error(`Terminal width ${terminalWidth} below minimum ${UI_MIN_TERMINAL_WIDTH}`);
|
|
27
|
+
}
|
|
28
|
+
// Start 60fps render loop (16ms interval)
|
|
29
|
+
intervalId = setInterval(() => {
|
|
30
|
+
frameCount++;
|
|
31
|
+
// Advance spinner every 96ms (every 6 frames)
|
|
32
|
+
if (frameCount % (UI_SPINNER_INTERVAL_MS / UI_RENDER_INTERVAL_MS) ===
|
|
33
|
+
0) {
|
|
34
|
+
state.spinnerFrame = (state.spinnerFrame + 1) % 4;
|
|
35
|
+
}
|
|
36
|
+
// Clear terminal and render current state
|
|
37
|
+
this.render();
|
|
38
|
+
// Stop when all agents complete
|
|
39
|
+
const allComplete = Array.from(state.agents.values()).every((agent) => agent.status === 'complete');
|
|
40
|
+
if (allComplete && state.agents.size > 0) {
|
|
41
|
+
this.stop();
|
|
42
|
+
}
|
|
43
|
+
}, UI_RENDER_INTERVAL_MS);
|
|
44
|
+
},
|
|
45
|
+
stop() {
|
|
46
|
+
if (intervalId !== null) {
|
|
47
|
+
clearInterval(intervalId);
|
|
48
|
+
intervalId = null;
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
render() {
|
|
52
|
+
// Clear terminal
|
|
53
|
+
console.clear();
|
|
54
|
+
// Calculate box width (terminal width capped at max)
|
|
55
|
+
const terminalWidth = process.stdout.columns || 80;
|
|
56
|
+
const boxWidth = Math.min(terminalWidth - 2, UI_MAX_BOX_WIDTH);
|
|
57
|
+
// Show running agents with box rendering
|
|
58
|
+
const runningAgents = Array.from(state.agents.values()).filter((agent) => agent.status === 'running');
|
|
59
|
+
for (const agent of runningAgents) {
|
|
60
|
+
const boxLines = renderAgentBox(agent, boxWidth);
|
|
61
|
+
for (const line of boxLines) {
|
|
62
|
+
terminalLog(line);
|
|
63
|
+
}
|
|
64
|
+
terminalLog(''); // Spacing between boxes
|
|
65
|
+
}
|
|
66
|
+
// Show main log
|
|
67
|
+
const allComplete = runningAgents.length === 0 && state.agents.size > 0;
|
|
68
|
+
const logLines = renderMainLog(state.mainLog, allComplete);
|
|
69
|
+
for (const line of logLines) {
|
|
70
|
+
terminalLog(line);
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=ui-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-renderer.js","sourceRoot":"","sources":["../../src/output/ui-renderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASnE;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,UAAU,GAA0B,IAAI,CAAC;IAC7C,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,OAAO;QACL,KAAK;YACH,gCAAgC;YAChC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9C,CAAC;YAED,oCAAoC;YACpC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACnD,IAAI,aAAa,GAAG,qBAAqB,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CACb,kBAAkB,aAAa,kBAAkB,qBAAqB,EAAE,CACzE,CAAC;YACJ,CAAC;YAED,0CAA0C;YAC1C,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;gBAC5B,UAAU,EAAE,CAAC;gBAEb,8CAA8C;gBAC9C,IACE,UAAU,GAAG,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;oBAC7D,CAAC,EACD,CAAC;oBACD,KAAK,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBACpD,CAAC;gBAED,0CAA0C;gBAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;gBAEd,gCAAgC;gBAChC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CACzD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,UAAU,CACvC,CAAC;gBACF,IAAI,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBACzC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,CAAC;YACH,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI;YACF,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC1B,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC;QAED,MAAM;YACJ,iBAAiB;YACjB,OAAO,CAAC,KAAK,EAAE,CAAC;YAEhB,qDAAqD;YACrD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC;YAE/D,yCAAyC;YACzC,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAC5D,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CACtC,CAAC;YAEF,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACjD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,WAAW,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;gBACD,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB;YAC3C,CAAC;YAED,gBAAgB;YAChB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC3D,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,WAAW,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|