erosolar-cli 1.7.213 → 1.7.215
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/bin/erosolar.js +3 -0
- package/dist/bin/erosolar.js.map +1 -1
- package/dist/mcp/sseClient.d.ts.map +1 -1
- package/dist/mcp/sseClient.js +54 -27
- package/dist/mcp/sseClient.js.map +1 -1
- package/dist/shell/claudeCodeStreamHandler.d.ts.map +1 -1
- package/dist/shell/claudeCodeStreamHandler.js +11 -1
- package/dist/shell/claudeCodeStreamHandler.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +10 -0
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +76 -31
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/shellApp.d.ts.map +1 -1
- package/dist/shell/shellApp.js +3 -0
- package/dist/shell/shellApp.js.map +1 -1
- package/dist/shell/streamingOutputManager.d.ts +1 -0
- package/dist/shell/streamingOutputManager.d.ts.map +1 -1
- package/dist/shell/streamingOutputManager.js +16 -4
- package/dist/shell/streamingOutputManager.js.map +1 -1
- package/dist/shell/terminalInput.d.ts +27 -7
- package/dist/shell/terminalInput.d.ts.map +1 -1
- package/dist/shell/terminalInput.js +91 -53
- package/dist/shell/terminalInput.js.map +1 -1
- package/dist/shell/terminalInputAdapter.d.ts +14 -0
- package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
- package/dist/shell/terminalInputAdapter.js +20 -0
- package/dist/shell/terminalInputAdapter.js.map +1 -1
- package/dist/ui/display.d.ts +17 -4
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +141 -81
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/globalWriteLock.d.ts +38 -0
- package/dist/ui/globalWriteLock.d.ts.map +1 -0
- package/dist/ui/globalWriteLock.js +54 -0
- package/dist/ui/globalWriteLock.js.map +1 -0
- package/dist/ui/unified/layout.d.ts +27 -0
- package/dist/ui/unified/layout.d.ts.map +1 -0
- package/dist/ui/unified/layout.js +110 -0
- package/dist/ui/unified/layout.js.map +1 -0
- package/package.json +1 -1
- package/dist/ui/FixedInputArea.d.ts +0 -108
- package/dist/ui/FixedInputArea.d.ts.map +0 -1
- package/dist/ui/FixedInputArea.js +0 -312
- package/dist/ui/FixedInputArea.js.map +0 -1
- package/dist/ui/advancedTheme.d.ts +0 -246
- package/dist/ui/advancedTheme.d.ts.map +0 -1
- package/dist/ui/advancedTheme.js +0 -478
- package/dist/ui/advancedTheme.js.map +0 -1
- package/dist/ui/collapsibleContent.d.ts +0 -57
- package/dist/ui/collapsibleContent.d.ts.map +0 -1
- package/dist/ui/collapsibleContent.js +0 -106
- package/dist/ui/collapsibleContent.js.map +0 -1
- package/dist/ui/diffViewer.d.ts +0 -42
- package/dist/ui/diffViewer.d.ts.map +0 -1
- package/dist/ui/diffViewer.js +0 -343
- package/dist/ui/diffViewer.js.map +0 -1
- package/dist/ui/gitDisplay.d.ts +0 -45
- package/dist/ui/gitDisplay.d.ts.map +0 -1
- package/dist/ui/gitDisplay.js +0 -215
- package/dist/ui/gitDisplay.js.map +0 -1
- package/dist/ui/gitFormatter.d.ts +0 -29
- package/dist/ui/gitFormatter.d.ts.map +0 -1
- package/dist/ui/gitFormatter.js +0 -203
- package/dist/ui/gitFormatter.js.map +0 -1
- package/dist/ui/keyboardShortcuts.d.ts +0 -49
- package/dist/ui/keyboardShortcuts.d.ts.map +0 -1
- package/dist/ui/keyboardShortcuts.js +0 -128
- package/dist/ui/keyboardShortcuts.js.map +0 -1
- package/dist/ui/logFormatter.d.ts +0 -70
- package/dist/ui/logFormatter.d.ts.map +0 -1
- package/dist/ui/logFormatter.js +0 -323
- package/dist/ui/logFormatter.js.map +0 -1
- package/dist/ui/outputSummarizer.d.ts +0 -52
- package/dist/ui/outputSummarizer.d.ts.map +0 -1
- package/dist/ui/outputSummarizer.js +0 -242
- package/dist/ui/outputSummarizer.js.map +0 -1
- package/dist/ui/progressBar.d.ts +0 -51
- package/dist/ui/progressBar.d.ts.map +0 -1
- package/dist/ui/progressBar.js +0 -153
- package/dist/ui/progressBar.js.map +0 -1
- package/dist/ui/progressIndicator.d.ts +0 -69
- package/dist/ui/progressIndicator.d.ts.map +0 -1
- package/dist/ui/progressIndicator.js +0 -145
- package/dist/ui/progressIndicator.js.map +0 -1
- package/dist/ui/streamingIndicators.d.ts +0 -42
- package/dist/ui/streamingIndicators.d.ts.map +0 -1
- package/dist/ui/streamingIndicators.js +0 -155
- package/dist/ui/streamingIndicators.js.map +0 -1
- package/dist/ui/tableFormatter.d.ts +0 -31
- package/dist/ui/tableFormatter.d.ts.map +0 -1
- package/dist/ui/tableFormatter.js +0 -186
- package/dist/ui/tableFormatter.js.map +0 -1
- package/dist/ui/thinkingTracker.d.ts +0 -51
- package/dist/ui/thinkingTracker.d.ts.map +0 -1
- package/dist/ui/thinkingTracker.js +0 -115
- package/dist/ui/thinkingTracker.js.map +0 -1
- package/dist/ui/toolDisplayAdapter.d.ts +0 -66
- package/dist/ui/toolDisplayAdapter.d.ts.map +0 -1
- package/dist/ui/toolDisplayAdapter.js +0 -356
- package/dist/ui/toolDisplayAdapter.js.map +0 -1
- package/dist/ui/treeVisualizer.d.ts +0 -56
- package/dist/ui/treeVisualizer.d.ts.map +0 -1
- package/dist/ui/treeVisualizer.js +0 -247
- package/dist/ui/treeVisualizer.js.map +0 -1
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Progress Indicator - Claude Code style
|
|
3
|
-
* Shows progress bars and elapsed time for long operations
|
|
4
|
-
*/
|
|
5
|
-
import { theme } from './theme.js';
|
|
6
|
-
export class ProgressIndicator {
|
|
7
|
-
state = null;
|
|
8
|
-
/**
|
|
9
|
-
* Start tracking progress
|
|
10
|
-
*/
|
|
11
|
-
start(total, message) {
|
|
12
|
-
this.state = {
|
|
13
|
-
current: 0,
|
|
14
|
-
total,
|
|
15
|
-
startTime: Date.now(),
|
|
16
|
-
message,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Update progress
|
|
21
|
-
*/
|
|
22
|
-
update(current, message) {
|
|
23
|
-
if (!this.state)
|
|
24
|
-
return;
|
|
25
|
-
this.state.current = Math.min(current, this.state.total);
|
|
26
|
-
if (message) {
|
|
27
|
-
this.state.message = message;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Increment progress by 1
|
|
32
|
-
*/
|
|
33
|
-
increment(message) {
|
|
34
|
-
if (!this.state)
|
|
35
|
-
return;
|
|
36
|
-
this.update(this.state.current + 1, message);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Complete and clear progress
|
|
40
|
-
*/
|
|
41
|
-
complete() {
|
|
42
|
-
this.state = null;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Get elapsed time in milliseconds
|
|
46
|
-
*/
|
|
47
|
-
getElapsed() {
|
|
48
|
-
if (!this.state)
|
|
49
|
-
return 0;
|
|
50
|
-
return Date.now() - this.state.startTime;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Get progress percentage (0-100)
|
|
54
|
-
*/
|
|
55
|
-
getPercentage() {
|
|
56
|
-
if (!this.state || this.state.total === 0)
|
|
57
|
-
return 0;
|
|
58
|
-
return Math.floor((this.state.current / this.state.total) * 100);
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Format progress bar (Claude Code style)
|
|
62
|
-
* Example: [████████████░░░░░░░░] 60% complete
|
|
63
|
-
*/
|
|
64
|
-
formatProgressBar(width = 20) {
|
|
65
|
-
if (!this.state)
|
|
66
|
-
return '';
|
|
67
|
-
const percentage = this.getPercentage();
|
|
68
|
-
const filled = Math.floor((percentage / 100) * width);
|
|
69
|
-
const empty = width - filled;
|
|
70
|
-
const filledBar = theme.success('█'.repeat(filled));
|
|
71
|
-
const emptyBar = theme.ui.muted('░'.repeat(empty));
|
|
72
|
-
const percentText = theme.info(`${percentage}%`);
|
|
73
|
-
return ` [${filledBar}${emptyBar}] ${percentText} complete`;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Format elapsed time
|
|
77
|
-
*/
|
|
78
|
-
formatElapsed() {
|
|
79
|
-
const elapsed = this.getElapsed();
|
|
80
|
-
const seconds = Math.floor(elapsed / 1000);
|
|
81
|
-
if (seconds < 60) {
|
|
82
|
-
return `${seconds}s`;
|
|
83
|
-
}
|
|
84
|
-
const minutes = Math.floor(seconds / 60);
|
|
85
|
-
const remainingSeconds = seconds % 60;
|
|
86
|
-
return `${minutes}m ${remainingSeconds}s`;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Format full progress display with message
|
|
90
|
-
*/
|
|
91
|
-
format() {
|
|
92
|
-
if (!this.state)
|
|
93
|
-
return '';
|
|
94
|
-
const lines = [];
|
|
95
|
-
// Message line
|
|
96
|
-
if (this.state.message) {
|
|
97
|
-
const elapsed = this.formatElapsed();
|
|
98
|
-
lines.push(` ${this.state.message} ${theme.ui.muted(`(${elapsed} elapsed)`)}`);
|
|
99
|
-
}
|
|
100
|
-
// Progress bar
|
|
101
|
-
lines.push(this.formatProgressBar());
|
|
102
|
-
// Items completed
|
|
103
|
-
const itemsText = `${this.state.current} / ${this.state.total}`;
|
|
104
|
-
lines.push(` ${theme.ui.muted(itemsText)}`);
|
|
105
|
-
return lines.join('\n');
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Check if progress is active
|
|
109
|
-
*/
|
|
110
|
-
isActive() {
|
|
111
|
-
return this.state !== null;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Get current state
|
|
115
|
-
*/
|
|
116
|
-
getState() {
|
|
117
|
-
return this.state;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Create a simple spinner animation
|
|
122
|
-
*/
|
|
123
|
-
export function createSpinnerFrames() {
|
|
124
|
-
return ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Format operation timing (Claude Code style)
|
|
128
|
-
* Example: "45s elapsed"
|
|
129
|
-
*/
|
|
130
|
-
export function formatOperationTiming(startTime) {
|
|
131
|
-
const elapsed = Date.now() - startTime;
|
|
132
|
-
const seconds = Math.floor(elapsed / 1000);
|
|
133
|
-
if (seconds < 1) {
|
|
134
|
-
return theme.ui.muted('< 1s');
|
|
135
|
-
}
|
|
136
|
-
if (seconds < 60) {
|
|
137
|
-
return theme.ui.muted(`${seconds}s elapsed`);
|
|
138
|
-
}
|
|
139
|
-
const minutes = Math.floor(seconds / 60);
|
|
140
|
-
const remainingSeconds = seconds % 60;
|
|
141
|
-
return theme.ui.muted(`${minutes}m ${remainingSeconds}s elapsed`);
|
|
142
|
-
}
|
|
143
|
-
// Singleton instance
|
|
144
|
-
export const progressIndicator = new ProgressIndicator();
|
|
145
|
-
//# sourceMappingURL=progressIndicator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"progressIndicator.js","sourceRoot":"","sources":["../../src/ui/progressIndicator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Streaming Response Indicators - Claude Code style
|
|
3
|
-
* Visual indicators for streaming AI responses
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Streaming status indicator
|
|
7
|
-
*/
|
|
8
|
-
export declare function formatStreamingStatus(state: 'starting' | 'streaming' | 'paused' | 'complete'): string;
|
|
9
|
-
/**
|
|
10
|
-
* Token counter for streaming responses
|
|
11
|
-
*/
|
|
12
|
-
export declare function formatTokenStream(tokensReceived: number, estimated?: number): string;
|
|
13
|
-
/**
|
|
14
|
-
* Format streaming rate (tokens/second)
|
|
15
|
-
*/
|
|
16
|
-
export declare function formatStreamRate(tokensPerSecond: number): string;
|
|
17
|
-
/**
|
|
18
|
-
* Chunk receipt indicator
|
|
19
|
-
*/
|
|
20
|
-
export declare function formatChunkIndicator(chunkNumber: number, size?: number): string;
|
|
21
|
-
/**
|
|
22
|
-
* Streaming latency indicator
|
|
23
|
-
*/
|
|
24
|
-
export declare function formatLatency(ms: number): string;
|
|
25
|
-
/**
|
|
26
|
-
* Multi-model streaming indicator (for parallel requests)
|
|
27
|
-
*/
|
|
28
|
-
export interface ModelStream {
|
|
29
|
-
model: string;
|
|
30
|
-
status: 'waiting' | 'streaming' | 'complete' | 'error';
|
|
31
|
-
tokensReceived?: number;
|
|
32
|
-
}
|
|
33
|
-
export declare function formatMultiStreamStatus(streams: ModelStream[]): string;
|
|
34
|
-
/**
|
|
35
|
-
* Thinking/reasoning indicator for extended thinking
|
|
36
|
-
*/
|
|
37
|
-
export declare function formatThinkingIndicator(seconds: number, deep?: boolean): string;
|
|
38
|
-
/**
|
|
39
|
-
* Buffer status for streaming
|
|
40
|
-
*/
|
|
41
|
-
export declare function formatBufferStatus(bufferSize: number, maxSize: number): string;
|
|
42
|
-
//# sourceMappingURL=streamingIndicators.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"streamingIndicators.d.ts","sourceRoot":"","sources":["../../src/ui/streamingIndicators.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAWrG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAUpF;AAqBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAahE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAI/E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAmBhD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CA2BtE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,MAAM,CAS7E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAc9E"}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Streaming Response Indicators - Claude Code style
|
|
3
|
-
* Visual indicators for streaming AI responses
|
|
4
|
-
*/
|
|
5
|
-
import { theme } from './theme.js';
|
|
6
|
-
/**
|
|
7
|
-
* Streaming status indicator
|
|
8
|
-
*/
|
|
9
|
-
export function formatStreamingStatus(state) {
|
|
10
|
-
switch (state) {
|
|
11
|
-
case 'starting':
|
|
12
|
-
return `${theme.info('◐')} ${theme.ui.muted('Starting stream...')}`;
|
|
13
|
-
case 'streaming':
|
|
14
|
-
return `${theme.success('◉')} ${theme.info('Streaming...')}`;
|
|
15
|
-
case 'paused':
|
|
16
|
-
return `${theme.warning('◫')} ${theme.ui.muted('Paused')}`;
|
|
17
|
-
case 'complete':
|
|
18
|
-
return `${theme.success('✓')} ${theme.ui.muted('Stream complete')}`;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Token counter for streaming responses
|
|
23
|
-
*/
|
|
24
|
-
export function formatTokenStream(tokensReceived, estimated) {
|
|
25
|
-
const received = theme.info(`${tokensReceived} tokens`);
|
|
26
|
-
if (estimated) {
|
|
27
|
-
const percentage = Math.round((tokensReceived / estimated) * 100);
|
|
28
|
-
const bar = createMiniBar(percentage);
|
|
29
|
-
return `${received} ${theme.ui.muted('│')} ${bar} ${theme.ui.muted(`~${estimated} expected`)}`;
|
|
30
|
-
}
|
|
31
|
-
return received;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Create a mini progress bar
|
|
35
|
-
*/
|
|
36
|
-
function createMiniBar(percentage) {
|
|
37
|
-
const filled = Math.floor(percentage / 10);
|
|
38
|
-
const empty = 10 - filled;
|
|
39
|
-
let color;
|
|
40
|
-
if (percentage >= 90) {
|
|
41
|
-
color = theme.warning;
|
|
42
|
-
}
|
|
43
|
-
else if (percentage >= 70) {
|
|
44
|
-
color = theme.info;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
color = theme.success;
|
|
48
|
-
}
|
|
49
|
-
return color('▓'.repeat(filled)) + theme.ui.muted('░'.repeat(empty));
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Format streaming rate (tokens/second)
|
|
53
|
-
*/
|
|
54
|
-
export function formatStreamRate(tokensPerSecond) {
|
|
55
|
-
const rate = tokensPerSecond.toFixed(1);
|
|
56
|
-
let quality;
|
|
57
|
-
if (tokensPerSecond > 50) {
|
|
58
|
-
quality = theme.success('fast');
|
|
59
|
-
}
|
|
60
|
-
else if (tokensPerSecond > 20) {
|
|
61
|
-
quality = theme.info('good');
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
quality = theme.warning('slow');
|
|
65
|
-
}
|
|
66
|
-
return `${rate} tok/s ${theme.ui.muted('│')} ${quality}`;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Chunk receipt indicator
|
|
70
|
-
*/
|
|
71
|
-
export function formatChunkIndicator(chunkNumber, size) {
|
|
72
|
-
const chunk = theme.ui.muted(`#${chunkNumber}`);
|
|
73
|
-
const sizeStr = size ? ` ${theme.ui.muted(`(${size}b)`)}` : '';
|
|
74
|
-
return `${theme.info('◇')} ${chunk}${sizeStr}`;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Streaming latency indicator
|
|
78
|
-
*/
|
|
79
|
-
export function formatLatency(ms) {
|
|
80
|
-
let status;
|
|
81
|
-
let color;
|
|
82
|
-
if (ms < 100) {
|
|
83
|
-
status = 'excellent';
|
|
84
|
-
color = theme.success;
|
|
85
|
-
}
|
|
86
|
-
else if (ms < 300) {
|
|
87
|
-
status = 'good';
|
|
88
|
-
color = theme.info;
|
|
89
|
-
}
|
|
90
|
-
else if (ms < 1000) {
|
|
91
|
-
status = 'fair';
|
|
92
|
-
color = theme.warning;
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
status = 'slow';
|
|
96
|
-
color = theme.error;
|
|
97
|
-
}
|
|
98
|
-
return `${color(`${ms}ms`)} ${theme.ui.muted(`(${status})`)}`;
|
|
99
|
-
}
|
|
100
|
-
export function formatMultiStreamStatus(streams) {
|
|
101
|
-
return streams.map(stream => {
|
|
102
|
-
let icon;
|
|
103
|
-
let statusColor;
|
|
104
|
-
switch (stream.status) {
|
|
105
|
-
case 'waiting':
|
|
106
|
-
icon = theme.ui.muted('○');
|
|
107
|
-
statusColor = theme.ui.muted;
|
|
108
|
-
break;
|
|
109
|
-
case 'streaming':
|
|
110
|
-
icon = theme.success('◉');
|
|
111
|
-
statusColor = theme.info;
|
|
112
|
-
break;
|
|
113
|
-
case 'complete':
|
|
114
|
-
icon = theme.success('✓');
|
|
115
|
-
statusColor = theme.success;
|
|
116
|
-
break;
|
|
117
|
-
case 'error':
|
|
118
|
-
icon = theme.error('✗');
|
|
119
|
-
statusColor = theme.error;
|
|
120
|
-
break;
|
|
121
|
-
}
|
|
122
|
-
const tokens = stream.tokensReceived ? ` ${theme.ui.muted(`(${stream.tokensReceived} tok)`)}` : '';
|
|
123
|
-
return ` ${icon} ${statusColor(stream.model)}${tokens}`;
|
|
124
|
-
}).join('\n');
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Thinking/reasoning indicator for extended thinking
|
|
128
|
-
*/
|
|
129
|
-
export function formatThinkingIndicator(seconds, deep = false) {
|
|
130
|
-
const duration = seconds < 60
|
|
131
|
-
? `${Math.round(seconds)}s`
|
|
132
|
-
: `${Math.floor(seconds / 60)}m ${Math.round(seconds % 60)}s`;
|
|
133
|
-
const type = deep ? 'Deep thinking' : 'Thinking';
|
|
134
|
-
const icon = deep ? theme.accent('∴∴∴') : theme.info('∴');
|
|
135
|
-
return `${icon} ${theme.ui.muted(type)} ${theme.info(duration)}`;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Buffer status for streaming
|
|
139
|
-
*/
|
|
140
|
-
export function formatBufferStatus(bufferSize, maxSize) {
|
|
141
|
-
const percentage = Math.round((bufferSize / maxSize) * 100);
|
|
142
|
-
const bar = createMiniBar(percentage);
|
|
143
|
-
let status;
|
|
144
|
-
if (percentage > 90) {
|
|
145
|
-
status = theme.error('buffer full');
|
|
146
|
-
}
|
|
147
|
-
else if (percentage > 70) {
|
|
148
|
-
status = theme.warning('buffer high');
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
status = theme.success('buffer ok');
|
|
152
|
-
}
|
|
153
|
-
return `${bar} ${status} ${theme.ui.muted(`${bufferSize}/${maxSize}`)}`;
|
|
154
|
-
}
|
|
155
|
-
//# sourceMappingURL=streamingIndicators.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"streamingIndicators.js","sourceRoot":"","sources":["../../src/ui/streamingIndicators.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Table Formatter - Claude Code style
|
|
3
|
-
* Formats data as clean, aligned tables
|
|
4
|
-
*/
|
|
5
|
-
export interface TableColumn {
|
|
6
|
-
header: string;
|
|
7
|
-
key: string;
|
|
8
|
-
width?: number | 'auto';
|
|
9
|
-
align?: 'left' | 'center' | 'right';
|
|
10
|
-
format?: (value: any) => string;
|
|
11
|
-
}
|
|
12
|
-
export interface TableOptions {
|
|
13
|
-
maxWidth?: number;
|
|
14
|
-
borders?: boolean;
|
|
15
|
-
headerStyle?: 'bold' | 'color' | 'both';
|
|
16
|
-
rowNumbers?: boolean;
|
|
17
|
-
compact?: boolean;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Format data as a table (Claude Code style)
|
|
21
|
-
*/
|
|
22
|
-
export declare function formatTable(data: Array<Record<string, any>>, columns: TableColumn[], options?: TableOptions): string;
|
|
23
|
-
/**
|
|
24
|
-
* Format simple key-value pairs as a compact table
|
|
25
|
-
*/
|
|
26
|
-
export declare function formatKeyValueTable(data: Record<string, any>): string;
|
|
27
|
-
/**
|
|
28
|
-
* Quick table for arrays of primitives
|
|
29
|
-
*/
|
|
30
|
-
export declare function formatListAsTable(items: string[], columns?: number): string;
|
|
31
|
-
//# sourceMappingURL=tableFormatter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tableFormatter.d.ts","sourceRoot":"","sources":["../../src/ui/tableFormatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAChC,OAAO,EAAE,WAAW,EAAE,EACtB,OAAO,GAAE,YAAiB,GACzB,MAAM,CAwER;AA4GD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAcrE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,MAAU,GAAG,MAAM,CAgB9E"}
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Table Formatter - Claude Code style
|
|
3
|
-
* Formats data as clean, aligned tables
|
|
4
|
-
*/
|
|
5
|
-
import { theme } from './theme.js';
|
|
6
|
-
import { getTerminalColumns } from './layout.js';
|
|
7
|
-
/**
|
|
8
|
-
* Format data as a table (Claude Code style)
|
|
9
|
-
*/
|
|
10
|
-
export function formatTable(data, columns, options = {}) {
|
|
11
|
-
if (data.length === 0) {
|
|
12
|
-
return theme.ui.muted('(No data)');
|
|
13
|
-
}
|
|
14
|
-
const maxWidth = options.maxWidth || Math.min(getTerminalColumns(), 120);
|
|
15
|
-
const borders = options.borders ?? true;
|
|
16
|
-
const headerStyle = options.headerStyle ?? 'both';
|
|
17
|
-
const compact = options.compact ?? false;
|
|
18
|
-
// Calculate column widths
|
|
19
|
-
const columnWidths = calculateColumnWidths(data, columns, maxWidth, options.rowNumbers ?? false);
|
|
20
|
-
// Build header
|
|
21
|
-
const lines = [];
|
|
22
|
-
const header = formatRow(columns.map(col => col.header), columnWidths, columns.map(col => col.align ?? 'left'), options.rowNumbers ? '#' : undefined);
|
|
23
|
-
// Style header
|
|
24
|
-
let styledHeader = header;
|
|
25
|
-
if (headerStyle === 'bold' || headerStyle === 'both') {
|
|
26
|
-
styledHeader = theme.bold(header);
|
|
27
|
-
}
|
|
28
|
-
if (headerStyle === 'color' || headerStyle === 'both') {
|
|
29
|
-
styledHeader = theme.info(styledHeader);
|
|
30
|
-
}
|
|
31
|
-
if (borders) {
|
|
32
|
-
const totalWidth = columnWidths.reduce((sum, w) => sum + w, 0) +
|
|
33
|
-
(columnWidths.length - 1) * 3 +
|
|
34
|
-
(options.rowNumbers ? 6 : 2);
|
|
35
|
-
lines.push(theme.ui.muted('─'.repeat(totalWidth)));
|
|
36
|
-
}
|
|
37
|
-
lines.push(styledHeader);
|
|
38
|
-
if (borders) {
|
|
39
|
-
const totalWidth = columnWidths.reduce((sum, w) => sum + w, 0) +
|
|
40
|
-
(columnWidths.length - 1) * 3 +
|
|
41
|
-
(options.rowNumbers ? 6 : 2);
|
|
42
|
-
lines.push(theme.ui.muted('─'.repeat(totalWidth)));
|
|
43
|
-
}
|
|
44
|
-
// Build rows
|
|
45
|
-
data.forEach((row, index) => {
|
|
46
|
-
const values = columns.map(col => {
|
|
47
|
-
const value = row[col.key];
|
|
48
|
-
return col.format ? col.format(value) : String(value ?? '');
|
|
49
|
-
});
|
|
50
|
-
const rowNum = options.rowNumbers ? String(index + 1) : undefined;
|
|
51
|
-
const formattedRow = formatRow(values, columnWidths, columns.map(col => col.align ?? 'left'), rowNum);
|
|
52
|
-
lines.push(formattedRow);
|
|
53
|
-
// Add separator for compact mode
|
|
54
|
-
if (!compact && index < data.length - 1) {
|
|
55
|
-
// Optional: add subtle separators
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
if (borders) {
|
|
59
|
-
const totalWidth = columnWidths.reduce((sum, w) => sum + w, 0) +
|
|
60
|
-
(columnWidths.length - 1) * 3 +
|
|
61
|
-
(options.rowNumbers ? 6 : 2);
|
|
62
|
-
lines.push(theme.ui.muted('─'.repeat(totalWidth)));
|
|
63
|
-
}
|
|
64
|
-
return lines.join('\n');
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Calculate optimal column widths
|
|
68
|
-
*/
|
|
69
|
-
function calculateColumnWidths(data, columns, maxWidth, hasRowNumbers) {
|
|
70
|
-
const widths = [];
|
|
71
|
-
const rowNumWidth = hasRowNumbers ? 4 : 0;
|
|
72
|
-
const separatorWidth = (columns.length - 1) * 3 + rowNumWidth; // " │ " between columns
|
|
73
|
-
const availableWidth = maxWidth - separatorWidth;
|
|
74
|
-
// Calculate min/max widths for each column
|
|
75
|
-
const minWidths = [];
|
|
76
|
-
const maxWidths = [];
|
|
77
|
-
columns.forEach((col, index) => {
|
|
78
|
-
const headerWidth = col.header.length;
|
|
79
|
-
const maxDataWidth = Math.max(...data.map(row => {
|
|
80
|
-
const value = row[col.key];
|
|
81
|
-
const formatted = col.format ? col.format(value) : String(value ?? '');
|
|
82
|
-
return formatted.length;
|
|
83
|
-
}));
|
|
84
|
-
minWidths[index] = Math.max(headerWidth, 3); // Minimum 3 chars
|
|
85
|
-
maxWidths[index] = col.width === 'auto'
|
|
86
|
-
? Math.max(headerWidth, maxDataWidth)
|
|
87
|
-
: (typeof col.width === 'number' ? col.width : Math.max(headerWidth, maxDataWidth));
|
|
88
|
-
});
|
|
89
|
-
// Distribute available width
|
|
90
|
-
const totalMin = minWidths.reduce((sum, w) => sum + w, 0);
|
|
91
|
-
const totalMax = maxWidths.reduce((sum, w) => sum + w, 0);
|
|
92
|
-
if (totalMax <= availableWidth) {
|
|
93
|
-
// All columns fit at max width
|
|
94
|
-
return maxWidths;
|
|
95
|
-
}
|
|
96
|
-
else if (totalMin > availableWidth) {
|
|
97
|
-
// Even min widths don't fit, use equal distribution
|
|
98
|
-
const equalWidth = Math.floor(availableWidth / columns.length);
|
|
99
|
-
return columns.map(() => Math.max(equalWidth, 3));
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
// Proportionally distribute
|
|
103
|
-
columns.forEach((_, index) => {
|
|
104
|
-
const maxWidth = maxWidths[index];
|
|
105
|
-
if (maxWidth !== undefined) {
|
|
106
|
-
widths[index] = Math.floor((maxWidth / totalMax) * availableWidth);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
return widths;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Format a single row
|
|
114
|
-
*/
|
|
115
|
-
function formatRow(values, widths, aligns, rowNum) {
|
|
116
|
-
const cells = values.map((value, index) => {
|
|
117
|
-
const width = widths[index] ?? 10;
|
|
118
|
-
const align = aligns[index] ?? 'left';
|
|
119
|
-
return alignText(truncate(value, width), width, align);
|
|
120
|
-
});
|
|
121
|
-
const rowPrefix = rowNum ? theme.ui.muted(`${rowNum.padStart(3)} │ `) : '';
|
|
122
|
-
return rowPrefix + cells.join(theme.ui.muted(' │ '));
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Align text within a width
|
|
126
|
-
*/
|
|
127
|
-
function alignText(text, width, align) {
|
|
128
|
-
const len = text.length;
|
|
129
|
-
if (len >= width)
|
|
130
|
-
return text;
|
|
131
|
-
const padding = width - len;
|
|
132
|
-
switch (align) {
|
|
133
|
-
case 'center':
|
|
134
|
-
const leftPad = Math.floor(padding / 2);
|
|
135
|
-
const rightPad = padding - leftPad;
|
|
136
|
-
return ' '.repeat(leftPad) + text + ' '.repeat(rightPad);
|
|
137
|
-
case 'right':
|
|
138
|
-
return ' '.repeat(padding) + text;
|
|
139
|
-
default:
|
|
140
|
-
return text + ' '.repeat(padding);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Truncate text with ellipsis
|
|
145
|
-
*/
|
|
146
|
-
function truncate(text, maxLength) {
|
|
147
|
-
if (text.length <= maxLength)
|
|
148
|
-
return text;
|
|
149
|
-
if (maxLength <= 3)
|
|
150
|
-
return text.slice(0, maxLength);
|
|
151
|
-
return `${text.slice(0, maxLength - 3)}...`;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Format simple key-value pairs as a compact table
|
|
155
|
-
*/
|
|
156
|
-
export function formatKeyValueTable(data) {
|
|
157
|
-
const entries = Object.entries(data);
|
|
158
|
-
if (entries.length === 0) {
|
|
159
|
-
return theme.ui.muted('(Empty)');
|
|
160
|
-
}
|
|
161
|
-
const maxKeyWidth = Math.max(...entries.map(([key]) => key.length));
|
|
162
|
-
const lines = entries.map(([key, value]) => {
|
|
163
|
-
const formattedKey = theme.info(key.padEnd(maxKeyWidth));
|
|
164
|
-
const formattedValue = String(value);
|
|
165
|
-
return ` ${formattedKey} ${theme.ui.muted('│')} ${formattedValue}`;
|
|
166
|
-
});
|
|
167
|
-
return lines.join('\n');
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Quick table for arrays of primitives
|
|
171
|
-
*/
|
|
172
|
-
export function formatListAsTable(items, columns = 3) {
|
|
173
|
-
if (items.length === 0) {
|
|
174
|
-
return theme.ui.muted('(Empty)');
|
|
175
|
-
}
|
|
176
|
-
const maxWidth = Math.min(getTerminalColumns(), 100);
|
|
177
|
-
const columnWidth = Math.floor(maxWidth / columns) - 2;
|
|
178
|
-
const lines = [];
|
|
179
|
-
for (let i = 0; i < items.length; i += columns) {
|
|
180
|
-
const row = items.slice(i, i + columns);
|
|
181
|
-
const formatted = row.map(item => truncate(item, columnWidth).padEnd(columnWidth));
|
|
182
|
-
lines.push(` ${formatted.join(' ')}`);
|
|
183
|
-
}
|
|
184
|
-
return lines.join('\n');
|
|
185
|
-
}
|
|
186
|
-
//# sourceMappingURL=tableFormatter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tableFormatter.js","sourceRoot":"","sources":["../../src/ui/tableFormatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Thinking Tracker - Claude Code style
|
|
3
|
-
* Tracks thinking time and displays formatted blocks
|
|
4
|
-
*/
|
|
5
|
-
export interface ThinkingBlock {
|
|
6
|
-
id: string;
|
|
7
|
-
startTime: number;
|
|
8
|
-
endTime?: number;
|
|
9
|
-
content?: string;
|
|
10
|
-
expanded: boolean;
|
|
11
|
-
}
|
|
12
|
-
export declare class ThinkingTracker {
|
|
13
|
-
private blocks;
|
|
14
|
-
private activeBlockId;
|
|
15
|
-
private nextId;
|
|
16
|
-
/**
|
|
17
|
-
* Start a new thinking block
|
|
18
|
-
*/
|
|
19
|
-
startThinking(): string;
|
|
20
|
-
/**
|
|
21
|
-
* End the current thinking block
|
|
22
|
-
*/
|
|
23
|
-
endThinking(content?: string): ThinkingBlock | null;
|
|
24
|
-
/**
|
|
25
|
-
* Get thinking duration in milliseconds
|
|
26
|
-
*/
|
|
27
|
-
getThinkingDuration(blockId: string): number | null;
|
|
28
|
-
/**
|
|
29
|
-
* Format thinking block for display (Claude Code style)
|
|
30
|
-
* Example: "∴ Thought for 3s (ctrl+o to show thinking)"
|
|
31
|
-
*/
|
|
32
|
-
formatThinkingBlock(blockId: string): string;
|
|
33
|
-
/**
|
|
34
|
-
* Format duration in human-readable form
|
|
35
|
-
*/
|
|
36
|
-
private formatDuration;
|
|
37
|
-
/**
|
|
38
|
-
* Toggle thinking block expansion
|
|
39
|
-
*/
|
|
40
|
-
toggleExpansion(blockId: string): boolean;
|
|
41
|
-
/**
|
|
42
|
-
* Get expanded content if available
|
|
43
|
-
*/
|
|
44
|
-
getExpandedContent(blockId: string): string | null;
|
|
45
|
-
/**
|
|
46
|
-
* Clear all thinking blocks
|
|
47
|
-
*/
|
|
48
|
-
clear(): void;
|
|
49
|
-
}
|
|
50
|
-
export declare const thinkingTracker: ThinkingTracker;
|
|
51
|
-
//# sourceMappingURL=thinkingTracker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"thinkingTracker.d.ts","sourceRoot":"","sources":["../../src/ui/thinkingTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,MAAM,CAAK;IAEnB;;OAEG;IACH,aAAa,IAAI,MAAM;IAWvB;;OAEG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAanD;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQnD;;;OAGG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAiB5C;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQzC;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOlD;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd;AAGD,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|