@rcrsr/claude-code-runner 0.9.0 → 0.10.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/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/output/colors.d.ts +5 -0
- package/dist/output/colors.d.ts.map +1 -1
- package/dist/output/colors.js +22 -0
- package/dist/output/colors.js.map +1 -1
- package/dist/output/formatter.d.ts +12 -5
- package/dist/output/formatter.d.ts.map +1 -1
- package/dist/output/formatter.js +101 -48
- 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/types/runner.d.ts +2 -0
- package/dist/types/runner.d.ts.map +1 -1
- package/dist/types/runner.js.map +1 -1
- package/package.json +6 -3
package/dist/index.js
CHANGED
|
@@ -3,8 +3,12 @@
|
|
|
3
3
|
* Claude Code Runner - executes claude CLI with proper TTY handling
|
|
4
4
|
* Shows intermediate tool calls and responses in real-time
|
|
5
5
|
*/
|
|
6
|
+
import { VERSION as RILL_VERSION } from '@rcrsr/rill';
|
|
6
7
|
import { randomBytes } from 'crypto';
|
|
8
|
+
import { createRequire } from 'module';
|
|
7
9
|
import { parseArgs } from './cli/args.js';
|
|
10
|
+
const require = createRequire(import.meta.url);
|
|
11
|
+
const pkg = require('../package.json');
|
|
8
12
|
import { createDeadDropClientFromEnv } from './deaddrop/index.js';
|
|
9
13
|
import { configureDeadDrop, flushDeadDrop, printRunner, printRunnerInfo, } from './output/colors.js';
|
|
10
14
|
import { createFormatterState, finalizeStepStats, getRunStatsSummary, } from './output/formatter.js';
|
|
@@ -42,7 +46,9 @@ async function main() {
|
|
|
42
46
|
const logger = createLogger(config.enableLog, config.logDir, parsed.subcommand);
|
|
43
47
|
// Create formatter state
|
|
44
48
|
const formatterState = createFormatterState();
|
|
45
|
-
//
|
|
49
|
+
// Print version info
|
|
50
|
+
printRunnerInfo(`v${pkg.version} (rill v${RILL_VERSION})`);
|
|
51
|
+
// Emit starting run message (operational, sent to deaddrop)
|
|
46
52
|
printRunner(`Starting run ${runId}`);
|
|
47
53
|
// Print config with [RUNNER] messages (informational, not sent to deaddrop)
|
|
48
54
|
printRunnerInfo(`Mode: ${parsed.subcommand} | Verbosity: ${config.verbosity}`);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/output/colors.d.ts
CHANGED
|
@@ -15,6 +15,11 @@ export declare const colors: {
|
|
|
15
15
|
readonly blue: "\u001B[34m";
|
|
16
16
|
};
|
|
17
17
|
export type ColorName = keyof typeof colors;
|
|
18
|
+
/**
|
|
19
|
+
* Get an agent marker: inverted dot with cycling background color
|
|
20
|
+
* @param index - Agent index (0-based), cycles through 8 colors
|
|
21
|
+
*/
|
|
22
|
+
export declare function agentMarker(index: number): string;
|
|
18
23
|
export declare function stripAnsi(str: string): string;
|
|
19
24
|
/**
|
|
20
25
|
* Strip carriage returns for cleaner terminal display
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/output/colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;AAE5C,eAAO,MAAM,MAAM;;;;;;;;;;CAUT,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/output/colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;AAE5C,eAAO,MAAM,MAAM;;;;;;;;;;CAUT,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,MAAM,CAAC;AAiB5C;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjD;AAQD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKzD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAejD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAM/D;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,YAAY,KACf,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKjD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAK1E"}
|
package/dist/output/colors.js
CHANGED
|
@@ -15,6 +15,28 @@ export const colors = {
|
|
|
15
15
|
magenta: '\x1b[35m',
|
|
16
16
|
blue: '\x1b[34m',
|
|
17
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* Background colors for agent markers (8 distinct colors)
|
|
20
|
+
* Uses bright background colors (100-107) for better visibility
|
|
21
|
+
*/
|
|
22
|
+
const AGENT_BG_COLORS = [
|
|
23
|
+
'\x1b[106m', // bright cyan
|
|
24
|
+
'\x1b[103m', // bright yellow
|
|
25
|
+
'\x1b[102m', // bright green
|
|
26
|
+
'\x1b[105m', // bright magenta
|
|
27
|
+
'\x1b[104m', // bright blue
|
|
28
|
+
'\x1b[101m', // bright red
|
|
29
|
+
'\x1b[107m', // bright white
|
|
30
|
+
'\x1b[100m', // bright black (gray)
|
|
31
|
+
];
|
|
32
|
+
/**
|
|
33
|
+
* Get an agent marker: inverted dot with cycling background color
|
|
34
|
+
* @param index - Agent index (0-based), cycles through 8 colors
|
|
35
|
+
*/
|
|
36
|
+
export function agentMarker(index) {
|
|
37
|
+
const bg = AGENT_BG_COLORS[index % AGENT_BG_COLORS.length];
|
|
38
|
+
return `${bg}\x1b[30m●${colors.reset}`;
|
|
39
|
+
}
|
|
18
40
|
/**
|
|
19
41
|
* Strip ANSI escape codes from a string
|
|
20
42
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/output/colors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/output/colors.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,14 @@ import { type RunStats } from './stats.js';
|
|
|
11
11
|
export interface FormatterState {
|
|
12
12
|
pendingTools: PendingTool[];
|
|
13
13
|
lastToolTime: number | null;
|
|
14
|
-
|
|
14
|
+
/** Multiple active tasks keyed by tool_use_id */
|
|
15
|
+
activeTasks: Map<string, ActiveTask>;
|
|
16
|
+
/** Maps tool_use_id to parent task id for attribution */
|
|
17
|
+
toolToTaskId: Map<string, string>;
|
|
18
|
+
/** Counter for generating task labels (A, B, C...) */
|
|
19
|
+
nextLabelIndex: number;
|
|
20
|
+
/** Most recently started task id (for tool attribution) */
|
|
21
|
+
currentTaskId: string | null;
|
|
15
22
|
toolStartTimes: Map<string, number>;
|
|
16
23
|
currentStep: number;
|
|
17
24
|
/** When true, step completion is not printed (caller handles it) */
|
|
@@ -24,10 +31,10 @@ export interface FormatterState {
|
|
|
24
31
|
runStats: RunStats;
|
|
25
32
|
/** Step start time */
|
|
26
33
|
stepStartTime: number | null;
|
|
27
|
-
/** Task statistics
|
|
28
|
-
|
|
29
|
-
/** Task start
|
|
30
|
-
|
|
34
|
+
/** Task statistics keyed by task id */
|
|
35
|
+
taskStatsMap: Map<string, RunStats>;
|
|
36
|
+
/** Task start times keyed by task id */
|
|
37
|
+
taskStartTimes: Map<string, number>;
|
|
31
38
|
}
|
|
32
39
|
export declare function createFormatterState(): FormatterState;
|
|
33
40
|
export declare function resetFormatterState(state: FormatterState): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/output/formatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,KAAK,aAAa,EASnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,UAAU,EAEf,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/output/formatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,KAAK,aAAa,EASnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,UAAU,EAEf,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAsB5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAQL,KAAK,QAAQ,EAEd,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iDAAiD;IACjD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrC,yDAAyD;IACzD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,sBAAsB,EAAE,OAAO,CAAC;IAChC,4DAA4D;IAC5D,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,sCAAsC;IACtC,KAAK,EAAE,QAAQ,CAAC;IAChB,wDAAwD;IACxD,QAAQ,EAAE,QAAQ,CAAC;IACnB,sBAAsB;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uCAAuC;IACvC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpC,wCAAwC;IACxC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAkBrD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAa/D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,cAAc,EACrB,cAAc,EAAE,MAAM,GACrB,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,MAAM,GACpB,MAAM,CAER;AAuFD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,SAAS,GACnB,IAAI,CAuBN;AAyFD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,EAAE,sCAAsC;AACvD,mBAAmB,EAAE,MAAM,GAC1B,MAAM,CAuLR"}
|
package/dist/output/formatter.js
CHANGED
|
@@ -4,13 +4,16 @@
|
|
|
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 {
|
|
11
11
|
pendingTools: [],
|
|
12
12
|
lastToolTime: null,
|
|
13
|
-
|
|
13
|
+
activeTasks: new Map(),
|
|
14
|
+
toolToTaskId: new Map(),
|
|
15
|
+
nextLabelIndex: 0,
|
|
16
|
+
currentTaskId: null,
|
|
14
17
|
toolStartTimes: new Map(),
|
|
15
18
|
currentStep: 1,
|
|
16
19
|
suppressStepCompletion: true,
|
|
@@ -18,19 +21,22 @@ export function createFormatterState() {
|
|
|
18
21
|
stats: createRunStats(),
|
|
19
22
|
runStats: createRunStats(),
|
|
20
23
|
stepStartTime: null,
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
taskStatsMap: new Map(),
|
|
25
|
+
taskStartTimes: new Map(),
|
|
23
26
|
};
|
|
24
27
|
}
|
|
25
28
|
export function resetFormatterState(state) {
|
|
26
29
|
state.pendingTools = [];
|
|
27
30
|
state.lastToolTime = null;
|
|
28
|
-
state.
|
|
31
|
+
state.activeTasks.clear();
|
|
32
|
+
state.toolToTaskId.clear();
|
|
33
|
+
state.nextLabelIndex = 0;
|
|
34
|
+
state.currentTaskId = null;
|
|
29
35
|
state.toolStartTimes.clear();
|
|
30
36
|
resetRunStats(state.stats);
|
|
31
37
|
state.stepStartTime = null;
|
|
32
|
-
state.
|
|
33
|
-
state.
|
|
38
|
+
state.taskStatsMap.clear();
|
|
39
|
+
state.taskStartTimes.clear();
|
|
34
40
|
// Note: runStats is NOT reset - it accumulates across steps
|
|
35
41
|
}
|
|
36
42
|
/**
|
|
@@ -63,14 +69,32 @@ function filterNoiseLines(text) {
|
|
|
63
69
|
.filter((line) => !isNoise(line))
|
|
64
70
|
.join('\n');
|
|
65
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Get task color index for a tool, or -1 if not in a task
|
|
74
|
+
*/
|
|
75
|
+
function getToolTaskColorIndex(toolId, state) {
|
|
76
|
+
const taskId = state.toolToTaskId.get(toolId);
|
|
77
|
+
if (!taskId)
|
|
78
|
+
return -1;
|
|
79
|
+
const task = state.activeTasks.get(taskId);
|
|
80
|
+
return task?.colorIndex ?? -1;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Format a task marker (colored dot)
|
|
84
|
+
*/
|
|
85
|
+
function formatTaskMarker(colorIndex) {
|
|
86
|
+
return agentMarker(colorIndex);
|
|
87
|
+
}
|
|
66
88
|
/**
|
|
67
89
|
* Format a single tool use for display
|
|
68
90
|
*/
|
|
69
91
|
function formatToolUse(tool, indented, state) {
|
|
70
|
-
const
|
|
92
|
+
const colorIndex = getToolTaskColorIndex(tool.id, state);
|
|
93
|
+
const inTask = colorIndex >= 0;
|
|
94
|
+
const labelPrefix = inTask ? `${formatTaskMarker(colorIndex)} ` : '';
|
|
71
95
|
const prefix = indented
|
|
72
|
-
? `${timestampPrefix()}${
|
|
73
|
-
: `${timestampPrefix()}${
|
|
96
|
+
? `${timestampPrefix()}${labelPrefix} → `
|
|
97
|
+
: `${timestampPrefix()}${labelPrefix}`;
|
|
74
98
|
const name = tool.name;
|
|
75
99
|
const input = tool.input;
|
|
76
100
|
let summary = '';
|
|
@@ -89,9 +113,9 @@ function formatToolUse(tool, indented, state) {
|
|
|
89
113
|
}
|
|
90
114
|
else if (name === 'Task') {
|
|
91
115
|
// Task state already initialized in pre-scan, just print header
|
|
92
|
-
const task = state.
|
|
116
|
+
const task = state.activeTasks.get(tool.id);
|
|
93
117
|
if (task) {
|
|
94
|
-
terminalLog(`${timestampPrefix()}${colors.yellow}[${task.name}]${colors.reset} ${task.description}`);
|
|
118
|
+
terminalLog(`${timestampPrefix()}${formatTaskMarker(task.colorIndex)} ${colors.yellow}[${task.name}]${colors.reset} ${task.description}`);
|
|
95
119
|
}
|
|
96
120
|
return;
|
|
97
121
|
}
|
|
@@ -137,8 +161,9 @@ function printToolResult(result, durationStr, verbosity, state) {
|
|
|
137
161
|
if (verbosity === 'quiet') {
|
|
138
162
|
return;
|
|
139
163
|
}
|
|
140
|
-
|
|
141
|
-
const
|
|
164
|
+
// Get task marker for this tool's result
|
|
165
|
+
const colorIndex = getToolTaskColorIndex(result.tool_use_id, state);
|
|
166
|
+
const indent = colorIndex >= 0 ? `${formatTaskMarker(colorIndex)} ` : '';
|
|
142
167
|
if (verbosity === 'normal') {
|
|
143
168
|
// In normal mode, suppress per-tool timing
|
|
144
169
|
return;
|
|
@@ -161,27 +186,35 @@ function printToolResult(result, durationStr, verbosity, state) {
|
|
|
161
186
|
}
|
|
162
187
|
}
|
|
163
188
|
/**
|
|
164
|
-
* Print a task result
|
|
189
|
+
* Print a task result and clean up task state
|
|
165
190
|
*/
|
|
166
|
-
function printTaskResult(
|
|
191
|
+
function printTaskResult(taskId, _verbosity, state) {
|
|
192
|
+
const task = state.activeTasks.get(taskId);
|
|
193
|
+
if (!task)
|
|
194
|
+
return;
|
|
167
195
|
// Calculate task duration and format stats summary
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
const statsSummary =
|
|
172
|
-
? formatStatsSummary(
|
|
196
|
+
const taskStartTime = state.taskStartTimes.get(taskId);
|
|
197
|
+
const taskDuration = taskStartTime ? Date.now() - taskStartTime : 0;
|
|
198
|
+
const taskStats = state.taskStatsMap.get(taskId);
|
|
199
|
+
const statsSummary = taskStats
|
|
200
|
+
? formatStatsSummary(taskStats, taskDuration)
|
|
173
201
|
: formatDuration(taskDuration);
|
|
174
|
-
// Print task completion with
|
|
175
|
-
|
|
176
|
-
terminalLog(`${timestampPrefix()}└─${colors.yellow}[${taskName}]${colors.reset} Complete: ${statsSummary}`);
|
|
202
|
+
// Print task completion with marker
|
|
203
|
+
terminalLog(`${timestampPrefix()}${formatTaskMarker(task.colorIndex)} ${colors.yellow}[${task.name}]${colors.reset} Complete ${statsSummary}`);
|
|
177
204
|
// Merge task stats into step stats before clearing
|
|
178
|
-
if (
|
|
179
|
-
mergeStats(state.stats,
|
|
205
|
+
if (taskStats) {
|
|
206
|
+
mergeStats(state.stats, taskStats);
|
|
207
|
+
}
|
|
208
|
+
// Clean up this task's state
|
|
209
|
+
state.activeTasks.delete(taskId);
|
|
210
|
+
state.taskStatsMap.delete(taskId);
|
|
211
|
+
state.taskStartTimes.delete(taskId);
|
|
212
|
+
// Update currentTaskId if this was the current task
|
|
213
|
+
if (state.currentTaskId === taskId) {
|
|
214
|
+
// Set to another active task if any, otherwise null
|
|
215
|
+
const remaining = Array.from(state.activeTasks.keys());
|
|
216
|
+
state.currentTaskId = remaining.length > 0 ? (remaining[0] ?? null) : null;
|
|
180
217
|
}
|
|
181
|
-
// Clear active task and stats
|
|
182
|
-
state.activeTask = null;
|
|
183
|
-
state.taskStats = null;
|
|
184
|
-
state.taskStartTime = null;
|
|
185
218
|
}
|
|
186
219
|
/**
|
|
187
220
|
* Format and display a Claude message
|
|
@@ -195,7 +228,7 @@ parallelThresholdMs) {
|
|
|
195
228
|
}
|
|
196
229
|
else if (isAssistantMessage(msg)) {
|
|
197
230
|
flushPendingTools(state, verbosity);
|
|
198
|
-
// Check for Task
|
|
231
|
+
// Check for Task tools first to initialize task tracking
|
|
199
232
|
for (const block of msg.message.content) {
|
|
200
233
|
if (isToolUseBlock(block) && block.name === 'Task') {
|
|
201
234
|
const input = block.input;
|
|
@@ -203,18 +236,26 @@ parallelThresholdMs) {
|
|
|
203
236
|
const taskDesc = truncate(input['description'] ??
|
|
204
237
|
input['prompt'] ??
|
|
205
238
|
'', TRUNCATE_TASK_DESC);
|
|
206
|
-
|
|
239
|
+
// Assign color index (cycles through 8 colors)
|
|
240
|
+
const colorIndex = state.nextLabelIndex;
|
|
241
|
+
state.nextLabelIndex++;
|
|
242
|
+
const task = {
|
|
207
243
|
name: taskType,
|
|
208
244
|
description: taskDesc,
|
|
209
245
|
id: block.id,
|
|
246
|
+
colorIndex,
|
|
210
247
|
};
|
|
211
|
-
state.
|
|
212
|
-
state.
|
|
213
|
-
|
|
248
|
+
state.activeTasks.set(block.id, task);
|
|
249
|
+
state.taskStatsMap.set(block.id, createRunStats());
|
|
250
|
+
state.taskStartTimes.set(block.id, Date.now());
|
|
251
|
+
state.currentTaskId = block.id;
|
|
214
252
|
}
|
|
215
253
|
}
|
|
216
|
-
// Track message and token usage in stats
|
|
217
|
-
const
|
|
254
|
+
// Track message and token usage in stats (use current task's stats if in a task)
|
|
255
|
+
const currentTaskStats = state.currentTaskId
|
|
256
|
+
? state.taskStatsMap.get(state.currentTaskId)
|
|
257
|
+
: null;
|
|
258
|
+
const stats = currentTaskStats ?? state.stats;
|
|
218
259
|
incrementMessageCount(stats);
|
|
219
260
|
if (msg.message.usage) {
|
|
220
261
|
updateTokenStats(stats, msg.message.usage);
|
|
@@ -241,8 +282,16 @@ parallelThresholdMs) {
|
|
|
241
282
|
const now = Date.now();
|
|
242
283
|
// Record start time
|
|
243
284
|
state.toolStartTimes.set(block.id, now);
|
|
244
|
-
//
|
|
245
|
-
if (block.name !== 'Task') {
|
|
285
|
+
// Attribute non-Task tools to the current task
|
|
286
|
+
if (block.name !== 'Task' && state.currentTaskId) {
|
|
287
|
+
state.toolToTaskId.set(block.id, state.currentTaskId);
|
|
288
|
+
// Track tool use in current task's stats
|
|
289
|
+
const taskStats = state.taskStatsMap.get(state.currentTaskId);
|
|
290
|
+
if (taskStats) {
|
|
291
|
+
recordToolUse(taskStats, block.name);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
else if (block.name !== 'Task') {
|
|
246
295
|
recordToolUse(stats, block.name);
|
|
247
296
|
}
|
|
248
297
|
if (state.lastToolTime &&
|
|
@@ -271,8 +320,10 @@ parallelThresholdMs) {
|
|
|
271
320
|
flushPendingTools(state, verbosity);
|
|
272
321
|
// Track usage from task results (tool_use_result has aggregated stats)
|
|
273
322
|
if (msg.tool_use_result?.usage) {
|
|
274
|
-
const
|
|
275
|
-
|
|
323
|
+
const taskStats = state.currentTaskId
|
|
324
|
+
? state.taskStatsMap.get(state.currentTaskId)
|
|
325
|
+
: null;
|
|
326
|
+
updateTokenStats(taskStats ?? state.stats, msg.tool_use_result.usage);
|
|
276
327
|
}
|
|
277
328
|
for (const block of msg.message.content) {
|
|
278
329
|
if (isToolResultBlock(block)) {
|
|
@@ -293,15 +344,15 @@ parallelThresholdMs) {
|
|
|
293
344
|
content.startsWith('Error:') ||
|
|
294
345
|
content.startsWith('error:');
|
|
295
346
|
if (isError) {
|
|
296
|
-
const
|
|
297
|
-
const indent =
|
|
347
|
+
const colorIndex = getToolTaskColorIndex(toolUseId, state);
|
|
348
|
+
const indent = colorIndex >= 0 ? `${formatTaskMarker(colorIndex)} ` : '';
|
|
298
349
|
// Strip <tool_use_error> tags for cleaner display
|
|
299
350
|
const cleanError = content.replace(/<\/?tool_use_error>/g, '').trim();
|
|
300
|
-
terminalLog(`${timestampPrefix()}${indent}
|
|
351
|
+
terminalLog(`${timestampPrefix()}${indent}${colors.red}ERROR: ${truncate(cleanError, TRUNCATE_ERROR)}${colors.reset}${durationStr}`);
|
|
301
352
|
}
|
|
302
|
-
else if (state.
|
|
353
|
+
else if (state.activeTasks.has(toolUseId)) {
|
|
303
354
|
// Task completing
|
|
304
|
-
printTaskResult(
|
|
355
|
+
printTaskResult(toolUseId, verbosity, state);
|
|
305
356
|
}
|
|
306
357
|
else {
|
|
307
358
|
printToolResult(block, durationStr, verbosity, state);
|
|
@@ -313,8 +364,10 @@ parallelThresholdMs) {
|
|
|
313
364
|
flushPendingTools(state, verbosity);
|
|
314
365
|
// Track usage from result message
|
|
315
366
|
if (msg.usage) {
|
|
316
|
-
const
|
|
317
|
-
|
|
367
|
+
const taskStats = state.currentTaskId
|
|
368
|
+
? state.taskStatsMap.get(state.currentTaskId)
|
|
369
|
+
: null;
|
|
370
|
+
updateTokenStats(taskStats ?? state.stats, msg.usage);
|
|
318
371
|
}
|
|
319
372
|
state.lastStepDurationMs = msg.duration_ms ?? null;
|
|
320
373
|
if (!state.suppressStepCompletion && verbosity !== 'quiet') {
|
|
@@ -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":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI state management for parallel agent display
|
|
3
|
+
*/
|
|
4
|
+
import type { ActiveTask } from '../types/runner.js';
|
|
5
|
+
/**
|
|
6
|
+
* Entry in the main execution log
|
|
7
|
+
*/
|
|
8
|
+
export interface LogEntry {
|
|
9
|
+
timestamp: Date;
|
|
10
|
+
agentLabel: string;
|
|
11
|
+
agentName: string;
|
|
12
|
+
type: 'invocation' | 'tool' | 'completion';
|
|
13
|
+
content: string;
|
|
14
|
+
duration?: number;
|
|
15
|
+
messageCount?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Individual tool call record
|
|
19
|
+
*/
|
|
20
|
+
export interface ToolCallEntry {
|
|
21
|
+
toolName: string;
|
|
22
|
+
args: string;
|
|
23
|
+
timestamp: Date;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* State for a single agent/task
|
|
27
|
+
*/
|
|
28
|
+
export interface AgentState {
|
|
29
|
+
id: string;
|
|
30
|
+
name: string;
|
|
31
|
+
description: string;
|
|
32
|
+
label: string;
|
|
33
|
+
toolCalls: ToolCallEntry[];
|
|
34
|
+
messageCount: number;
|
|
35
|
+
startTime: number;
|
|
36
|
+
status: 'running' | 'complete';
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Overall UI state for parallel agent display
|
|
40
|
+
*/
|
|
41
|
+
export interface UIState {
|
|
42
|
+
agents: Map<string, AgentState>;
|
|
43
|
+
mainLog: LogEntry[];
|
|
44
|
+
renderStartTime: number;
|
|
45
|
+
spinnerFrame: number;
|
|
46
|
+
/** Callback invoked when first agent is registered */
|
|
47
|
+
onFirstAgent?: () => void;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Create initial UI state with empty agents and log
|
|
51
|
+
*/
|
|
52
|
+
export declare function createUIState(): UIState;
|
|
53
|
+
/**
|
|
54
|
+
* Register a new agent in the UI state
|
|
55
|
+
* @throws {Error} if agent count exceeds UI_MAX_AGENTS
|
|
56
|
+
* @throws {Error} if agent ID already registered
|
|
57
|
+
*/
|
|
58
|
+
export declare function registerAgent(state: UIState, task: ActiveTask, description: string): void;
|
|
59
|
+
/**
|
|
60
|
+
* Record a tool call for an agent
|
|
61
|
+
* @throws {Error} if agent ID not found
|
|
62
|
+
* @throws {Error} if tool name empty
|
|
63
|
+
*/
|
|
64
|
+
export declare function recordToolCall(state: UIState, agentId: string, toolName: string, args: string): void;
|
|
65
|
+
/**
|
|
66
|
+
* Mark agent complete and add completion entry to main log
|
|
67
|
+
* @throws {Error} if agent ID not found
|
|
68
|
+
* @throws {Error} if agent already complete
|
|
69
|
+
*/
|
|
70
|
+
export declare function completeAgent(state: UIState, agentId: string): void;
|
|
71
|
+
//# sourceMappingURL=ui-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-state.d.ts","sourceRoot":"","sources":["../../src/output/ui-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOrD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,YAAY,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChC,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAOvC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,GAClB,IAAI,CAkDN;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,IAAI,CAqCN;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CA8BnE"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI state management for parallel agent display
|
|
3
|
+
*/
|
|
4
|
+
import { UI_MAX_AGENTS, UI_MAX_DESCRIPTION_LENGTH, UI_MAX_VISIBLE_TOOLS, } from '../utils/constants.js';
|
|
5
|
+
/**
|
|
6
|
+
* Create initial UI state with empty agents and log
|
|
7
|
+
*/
|
|
8
|
+
export function createUIState() {
|
|
9
|
+
return {
|
|
10
|
+
agents: new Map(),
|
|
11
|
+
mainLog: [],
|
|
12
|
+
renderStartTime: Date.now(),
|
|
13
|
+
spinnerFrame: 0,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Register a new agent in the UI state
|
|
18
|
+
* @throws {Error} if agent count exceeds UI_MAX_AGENTS
|
|
19
|
+
* @throws {Error} if agent ID already registered
|
|
20
|
+
*/
|
|
21
|
+
export function registerAgent(state, task, description) {
|
|
22
|
+
// EC-1: Check agent count limit
|
|
23
|
+
if (state.agents.size >= UI_MAX_AGENTS) {
|
|
24
|
+
throw new Error('Maximum 10 concurrent agents exceeded');
|
|
25
|
+
}
|
|
26
|
+
// EC-2: Check for duplicate agent ID
|
|
27
|
+
if (state.agents.has(task.id)) {
|
|
28
|
+
throw new Error(`Agent ${task.id} already registered`);
|
|
29
|
+
}
|
|
30
|
+
// Truncate description to 40 characters
|
|
31
|
+
const truncatedDescription = description.length > UI_MAX_DESCRIPTION_LENGTH
|
|
32
|
+
? description.slice(0, UI_MAX_DESCRIPTION_LENGTH)
|
|
33
|
+
: description;
|
|
34
|
+
// Create agent state
|
|
35
|
+
const agentState = {
|
|
36
|
+
id: task.id,
|
|
37
|
+
name: task.name,
|
|
38
|
+
description: truncatedDescription,
|
|
39
|
+
label: task.label,
|
|
40
|
+
toolCalls: [],
|
|
41
|
+
messageCount: 0,
|
|
42
|
+
startTime: Date.now(),
|
|
43
|
+
status: 'running',
|
|
44
|
+
};
|
|
45
|
+
// Check if this is the first agent (trigger callback before adding)
|
|
46
|
+
const isFirstAgent = state.agents.size === 0;
|
|
47
|
+
// Add to agents map
|
|
48
|
+
state.agents.set(task.id, agentState);
|
|
49
|
+
// Trigger callback for first agent
|
|
50
|
+
if (isFirstAgent && state.onFirstAgent) {
|
|
51
|
+
state.onFirstAgent();
|
|
52
|
+
}
|
|
53
|
+
// Add invocation entry to main log
|
|
54
|
+
const logEntry = {
|
|
55
|
+
timestamp: new Date(),
|
|
56
|
+
agentLabel: task.label,
|
|
57
|
+
agentName: task.name,
|
|
58
|
+
type: 'invocation',
|
|
59
|
+
content: truncatedDescription,
|
|
60
|
+
};
|
|
61
|
+
state.mainLog.push(logEntry);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Record a tool call for an agent
|
|
65
|
+
* @throws {Error} if agent ID not found
|
|
66
|
+
* @throws {Error} if tool name empty
|
|
67
|
+
*/
|
|
68
|
+
export function recordToolCall(state, agentId, toolName, args) {
|
|
69
|
+
// EC-3: Check agent ID exists
|
|
70
|
+
const agent = state.agents.get(agentId);
|
|
71
|
+
if (!agent) {
|
|
72
|
+
throw new Error(`Unknown agent: ${agentId}`);
|
|
73
|
+
}
|
|
74
|
+
// EC-4: Check tool name not empty
|
|
75
|
+
if (!toolName || toolName.trim().length === 0) {
|
|
76
|
+
throw new Error('Tool name required');
|
|
77
|
+
}
|
|
78
|
+
// Create tool call entry
|
|
79
|
+
const toolCall = {
|
|
80
|
+
toolName,
|
|
81
|
+
args,
|
|
82
|
+
timestamp: new Date(),
|
|
83
|
+
};
|
|
84
|
+
// Add to agent's tool calls (FIFO management for max 5 visible)
|
|
85
|
+
agent.toolCalls.push(toolCall);
|
|
86
|
+
// AC-8: Remove oldest if exceeds max visible tools
|
|
87
|
+
if (agent.toolCalls.length > UI_MAX_VISIBLE_TOOLS) {
|
|
88
|
+
agent.toolCalls.shift();
|
|
89
|
+
}
|
|
90
|
+
// Add tool call entry to main log
|
|
91
|
+
const logEntry = {
|
|
92
|
+
timestamp: new Date(),
|
|
93
|
+
agentLabel: agent.label,
|
|
94
|
+
agentName: agent.name,
|
|
95
|
+
type: 'tool',
|
|
96
|
+
content: `${toolName}(${args})`,
|
|
97
|
+
};
|
|
98
|
+
state.mainLog.push(logEntry);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Mark agent complete and add completion entry to main log
|
|
102
|
+
* @throws {Error} if agent ID not found
|
|
103
|
+
* @throws {Error} if agent already complete
|
|
104
|
+
*/
|
|
105
|
+
export function completeAgent(state, agentId) {
|
|
106
|
+
// EC-5: Check agent ID exists
|
|
107
|
+
const agent = state.agents.get(agentId);
|
|
108
|
+
if (!agent) {
|
|
109
|
+
throw new Error(`Unknown agent: ${agentId}`);
|
|
110
|
+
}
|
|
111
|
+
// EC-6: Check agent not already complete
|
|
112
|
+
if (agent.status === 'complete') {
|
|
113
|
+
throw new Error(`Agent ${agentId} already completed`);
|
|
114
|
+
}
|
|
115
|
+
// Calculate duration from agent start time to current time
|
|
116
|
+
const duration = Date.now() - agent.startTime;
|
|
117
|
+
// Set agent status to 'complete' for renderer to remove box
|
|
118
|
+
agent.status = 'complete';
|
|
119
|
+
// Add completion entry to main log with duration and message count
|
|
120
|
+
const logEntry = {
|
|
121
|
+
timestamp: new Date(),
|
|
122
|
+
agentLabel: agent.label,
|
|
123
|
+
agentName: agent.name,
|
|
124
|
+
type: 'completion',
|
|
125
|
+
content: 'Complete',
|
|
126
|
+
duration,
|
|
127
|
+
messageCount: agent.messageCount,
|
|
128
|
+
};
|
|
129
|
+
state.mainLog.push(logEntry);
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=ui-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-state.js","sourceRoot":"","sources":["../../src/output/ui-state.ts"],"names":[],"mappings":"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"}
|
package/dist/types/runner.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/types/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,YAO5B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,+CAA+C;IAC/C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,uBAAuB;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/types/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,YAO5B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,+CAA+C;IAC/C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,uBAAuB;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,EAMlC,CAAC"}
|
package/dist/types/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/types/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AA2BtE;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,MAAM;IACd,mBAAmB,EAAE,6BAA6B;IAClD,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,KAAK;CAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/types/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AA2BtE;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,MAAM;IACd,mBAAmB,EAAE,6BAA6B;IAClD,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,KAAK;CAChB,CAAC;AAoCF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAa;IACtC,UAAU;IACV,gBAAgB;IAChB,UAAU;IACV,eAAe;IACf,QAAQ;CACT,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rcrsr/claude-code-runner",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Execute Claude CLI with PTY handling, real-time tool visualization, and iterative execution support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -46,16 +46,19 @@
|
|
|
46
46
|
"author": "Andre Bremer",
|
|
47
47
|
"license": "MIT",
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@rcrsr/rill": "~0.
|
|
49
|
+
"@rcrsr/rill": "~0.5.0",
|
|
50
50
|
"node-pty": "^1.1.0"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@eslint/js": "^9.39.2",
|
|
54
|
-
"@types/node": "^25.0
|
|
54
|
+
"@types/node": "^25.2.0",
|
|
55
55
|
"@vitest/coverage-v8": "^4.0.18",
|
|
56
56
|
"eslint": "^9.39.2",
|
|
57
57
|
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
58
|
+
"ink": "^6.6.0",
|
|
59
|
+
"ink-spinner": "^5.0.0",
|
|
58
60
|
"prettier": "^3.8.1",
|
|
61
|
+
"react": "^19.2.4",
|
|
59
62
|
"tsc-files": "^1.1.4",
|
|
60
63
|
"typescript": "^5.9.3",
|
|
61
64
|
"typescript-eslint": "^8.54.0",
|