erosolar-cli 1.7.213 → 1.7.214
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 +69 -15
- package/dist/shell/interactiveShell.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 +15 -4
- package/dist/shell/streamingOutputManager.js.map +1 -1
- package/dist/shell/terminalInput.d.ts +18 -1
- package/dist/shell/terminalInput.d.ts.map +1 -1
- package/dist/shell/terminalInput.js +68 -3
- 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 +14 -2
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +56 -14
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/globalWriteLock.d.ts +12 -0
- package/dist/ui/globalWriteLock.d.ts.map +1 -0
- package/dist/ui/globalWriteLock.js +35 -0
- package/dist/ui/globalWriteLock.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
package/dist/ui/gitDisplay.js
DELETED
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Git Display - Claude Code style
|
|
3
|
-
* Enhanced git output formatting
|
|
4
|
-
*/
|
|
5
|
-
import { theme } from './theme.js';
|
|
6
|
-
export class GitDisplay {
|
|
7
|
-
/**
|
|
8
|
-
* Parse git status output
|
|
9
|
-
*/
|
|
10
|
-
parseGitStatus(output) {
|
|
11
|
-
const lines = output.split('\n');
|
|
12
|
-
const status = {
|
|
13
|
-
branch: 'unknown',
|
|
14
|
-
modified: [],
|
|
15
|
-
staged: [],
|
|
16
|
-
untracked: [],
|
|
17
|
-
deleted: [],
|
|
18
|
-
renamed: [],
|
|
19
|
-
};
|
|
20
|
-
for (const line of lines) {
|
|
21
|
-
// Branch info
|
|
22
|
-
const branchMatch = line.match(/On branch (.+)/);
|
|
23
|
-
if (branchMatch) {
|
|
24
|
-
status.branch = branchMatch[1] || 'unknown';
|
|
25
|
-
continue;
|
|
26
|
-
}
|
|
27
|
-
// Ahead/behind
|
|
28
|
-
const aheadMatch = line.match(/Your branch is ahead.*by (\d+)/);
|
|
29
|
-
if (aheadMatch) {
|
|
30
|
-
status.ahead = parseInt(aheadMatch[1] || '0', 10);
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
const behindMatch = line.match(/Your branch is behind.*by (\d+)/);
|
|
34
|
-
if (behindMatch) {
|
|
35
|
-
status.behind = parseInt(behindMatch[1] || '0', 10);
|
|
36
|
-
continue;
|
|
37
|
-
}
|
|
38
|
-
// File statuses
|
|
39
|
-
if (line.match(/^\s*M\s+/)) {
|
|
40
|
-
const file = line.replace(/^\s*M\s+/, '').trim();
|
|
41
|
-
status.modified.push(file);
|
|
42
|
-
}
|
|
43
|
-
else if (line.match(/^\s*A\s+/)) {
|
|
44
|
-
const file = line.replace(/^\s*A\s+/, '').trim();
|
|
45
|
-
status.staged.push(file);
|
|
46
|
-
}
|
|
47
|
-
else if (line.match(/^\?\?\s+/)) {
|
|
48
|
-
const file = line.replace(/^\?\?\s+/, '').trim();
|
|
49
|
-
status.untracked.push(file);
|
|
50
|
-
}
|
|
51
|
-
else if (line.match(/^\s*D\s+/)) {
|
|
52
|
-
const file = line.replace(/^\s*D\s+/, '').trim();
|
|
53
|
-
status.deleted.push(file);
|
|
54
|
-
}
|
|
55
|
-
else if (line.match(/^\s*R\s+/)) {
|
|
56
|
-
const parts = line.replace(/^\s*R\s+/, '').split('->');
|
|
57
|
-
if (parts.length === 2) {
|
|
58
|
-
status.renamed.push({
|
|
59
|
-
from: (parts[0] || '').trim(),
|
|
60
|
-
to: (parts[1] || '').trim(),
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return status;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Format git status in Claude Code style
|
|
69
|
-
*/
|
|
70
|
-
formatGitStatus(status) {
|
|
71
|
-
const lines = [];
|
|
72
|
-
// Branch and sync status
|
|
73
|
-
const branchLine = [theme.info(`On branch ${status.branch}`)];
|
|
74
|
-
if (status.ahead) {
|
|
75
|
-
branchLine.push(theme.success(`↑${status.ahead}`));
|
|
76
|
-
}
|
|
77
|
-
if (status.behind) {
|
|
78
|
-
branchLine.push(theme.warning(`↓${status.behind}`));
|
|
79
|
-
}
|
|
80
|
-
lines.push(` ${branchLine.join(' ')}`);
|
|
81
|
-
// File counts summary
|
|
82
|
-
const counts = [];
|
|
83
|
-
if (status.modified.length > 0) {
|
|
84
|
-
counts.push(theme.warning(`Modified: ${status.modified.length}`));
|
|
85
|
-
}
|
|
86
|
-
if (status.staged.length > 0) {
|
|
87
|
-
counts.push(theme.success(`Staged: ${status.staged.length}`));
|
|
88
|
-
}
|
|
89
|
-
if (status.untracked.length > 0) {
|
|
90
|
-
counts.push(theme.secondary(`Untracked: ${status.untracked.length}`));
|
|
91
|
-
}
|
|
92
|
-
if (status.deleted.length > 0) {
|
|
93
|
-
counts.push(theme.error(`Deleted: ${status.deleted.length}`));
|
|
94
|
-
}
|
|
95
|
-
if (counts.length > 0) {
|
|
96
|
-
lines.push(` ${counts.join(' • ')}`);
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
lines.push(` ${theme.success('Working tree clean')}`);
|
|
100
|
-
}
|
|
101
|
-
return lines.join('\n');
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Format git diff stats (Claude Code style)
|
|
105
|
-
*/
|
|
106
|
-
formatDiffStats(output) {
|
|
107
|
-
const lines = output.split('\n');
|
|
108
|
-
const stats = [];
|
|
109
|
-
for (const line of lines) {
|
|
110
|
-
const match = line.match(/\s*(\d+)\s+(\d+)\s+(.+)/);
|
|
111
|
-
if (match) {
|
|
112
|
-
stats.push({
|
|
113
|
-
file: match[3] || '',
|
|
114
|
-
additions: parseInt(match[1] || '0', 10),
|
|
115
|
-
deletions: parseInt(match[2] || '0', 10),
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
if (stats.length === 0) {
|
|
120
|
-
return theme.ui.muted(' No changes');
|
|
121
|
-
}
|
|
122
|
-
const totalAdditions = stats.reduce((sum, s) => sum + s.additions, 0);
|
|
123
|
-
const totalDeletions = stats.reduce((sum, s) => sum + s.deletions, 0);
|
|
124
|
-
const result = [];
|
|
125
|
-
result.push(` ${theme.success(`+${totalAdditions}`)} ${theme.error(`-${totalDeletions}`)} across ${stats.length} file${stats.length > 1 ? 's' : ''}`);
|
|
126
|
-
// Show top files
|
|
127
|
-
const topFiles = stats.slice(0, 5);
|
|
128
|
-
for (const file of topFiles) {
|
|
129
|
-
const bar = this.createDiffBar(file.additions, file.deletions, 10);
|
|
130
|
-
const fileName = theme.ui.muted(file.file);
|
|
131
|
-
const changes = `${theme.success(`+${file.additions}`)} ${theme.error(`-${file.deletions}`)}`;
|
|
132
|
-
result.push(` ${bar} ${fileName} ${changes}`);
|
|
133
|
-
}
|
|
134
|
-
if (stats.length > 5) {
|
|
135
|
-
const remaining = stats.length - 5;
|
|
136
|
-
result.push(` ${theme.ui.muted(`… and ${remaining} more file${remaining > 1 ? 's' : ''}`)}`);
|
|
137
|
-
}
|
|
138
|
-
return result.join('\n');
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Create visual diff bar
|
|
142
|
-
*/
|
|
143
|
-
createDiffBar(additions, deletions, width) {
|
|
144
|
-
const total = additions + deletions;
|
|
145
|
-
if (total === 0)
|
|
146
|
-
return theme.ui.muted('─'.repeat(width));
|
|
147
|
-
const addedWidth = Math.round((additions / total) * width);
|
|
148
|
-
const deletedWidth = width - addedWidth;
|
|
149
|
-
return theme.success('▓'.repeat(addedWidth)) + theme.error('▓'.repeat(deletedWidth));
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Format git log output (Claude Code style)
|
|
153
|
-
*/
|
|
154
|
-
formatGitLog(output, maxCommits = 5) {
|
|
155
|
-
const lines = output.split('\n');
|
|
156
|
-
const commits = [];
|
|
157
|
-
let currentCommit = null;
|
|
158
|
-
for (const line of lines) {
|
|
159
|
-
const commitMatch = line.match(/^commit\s+([a-f0-9]+)/);
|
|
160
|
-
if (commitMatch) {
|
|
161
|
-
if (currentCommit) {
|
|
162
|
-
commits.push(currentCommit);
|
|
163
|
-
}
|
|
164
|
-
currentCommit = {
|
|
165
|
-
hash: (commitMatch[1] || '').slice(0, 7),
|
|
166
|
-
message: '',
|
|
167
|
-
};
|
|
168
|
-
continue;
|
|
169
|
-
}
|
|
170
|
-
if (currentCommit) {
|
|
171
|
-
const authorMatch = line.match(/^Author:\s+(.+)/);
|
|
172
|
-
if (authorMatch) {
|
|
173
|
-
currentCommit.author = authorMatch[1];
|
|
174
|
-
continue;
|
|
175
|
-
}
|
|
176
|
-
const dateMatch = line.match(/^Date:\s+(.+)/);
|
|
177
|
-
if (dateMatch) {
|
|
178
|
-
currentCommit.date = dateMatch[1];
|
|
179
|
-
continue;
|
|
180
|
-
}
|
|
181
|
-
if (line.trim() && !line.match(/^(commit|Author|Date):/)) {
|
|
182
|
-
currentCommit.message = line.trim();
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
if (currentCommit) {
|
|
187
|
-
commits.push(currentCommit);
|
|
188
|
-
}
|
|
189
|
-
const result = [];
|
|
190
|
-
const displayCommits = commits.slice(0, maxCommits);
|
|
191
|
-
for (const commit of displayCommits) {
|
|
192
|
-
const hash = theme.warning(commit.hash);
|
|
193
|
-
const message = theme.ui.text(commit.message || '(no message)');
|
|
194
|
-
result.push(` ${hash} ${message}`);
|
|
195
|
-
}
|
|
196
|
-
if (commits.length > maxCommits) {
|
|
197
|
-
const remaining = commits.length - maxCommits;
|
|
198
|
-
result.push(` ${theme.ui.muted(`… and ${remaining} more commit${remaining > 1 ? 's' : ''}`)}`);
|
|
199
|
-
}
|
|
200
|
-
return result.join('\n');
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Detect if output is git-related
|
|
204
|
-
*/
|
|
205
|
-
isGitOutput(output) {
|
|
206
|
-
return output.includes('On branch') ||
|
|
207
|
-
output.includes('git ') ||
|
|
208
|
-
output.includes('commit ') ||
|
|
209
|
-
output.includes('Author:') ||
|
|
210
|
-
output.match(/^\s*[MAD?]\s+/m) !== null;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
// Singleton instance
|
|
214
|
-
export const gitDisplay = new GitDisplay();
|
|
215
|
-
//# sourceMappingURL=gitDisplay.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gitDisplay.js","sourceRoot":"","sources":["../../src/ui/gitDisplay.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Git Output Formatter - Claude Code style
|
|
3
|
-
* Enhanced formatting for git command outputs
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Format git status output with colors
|
|
7
|
-
*/
|
|
8
|
-
export declare function formatGitStatus(statusOutput: string): string;
|
|
9
|
-
/**
|
|
10
|
-
* Format git diff output with syntax highlighting
|
|
11
|
-
*/
|
|
12
|
-
export declare function formatGitDiff(diffOutput: string): string;
|
|
13
|
-
/**
|
|
14
|
-
* Format git log output
|
|
15
|
-
*/
|
|
16
|
-
export declare function formatGitLog(logOutput: string, compact?: boolean): string;
|
|
17
|
-
/**
|
|
18
|
-
* Format branch list
|
|
19
|
-
*/
|
|
20
|
-
export declare function formatGitBranches(branchOutput: string): string;
|
|
21
|
-
/**
|
|
22
|
-
* Format git stash list
|
|
23
|
-
*/
|
|
24
|
-
export declare function formatGitStash(stashOutput: string): string;
|
|
25
|
-
/**
|
|
26
|
-
* Create a compact git status summary
|
|
27
|
-
*/
|
|
28
|
-
export declare function formatGitStatusSummary(statusOutput: string): string;
|
|
29
|
-
//# sourceMappingURL=gitFormatter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gitFormatter.d.ts","sourceRoot":"","sources":["../../src/ui/gitFormatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CA0C5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAgCxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,MAAM,CA8CvE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAmB9D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAiB1D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAyBnE"}
|
package/dist/ui/gitFormatter.js
DELETED
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Git Output Formatter - Claude Code style
|
|
3
|
-
* Enhanced formatting for git command outputs
|
|
4
|
-
*/
|
|
5
|
-
import { theme } from './theme.js';
|
|
6
|
-
/**
|
|
7
|
-
* Format git status output with colors
|
|
8
|
-
*/
|
|
9
|
-
export function formatGitStatus(statusOutput) {
|
|
10
|
-
const lines = statusOutput.split('\n');
|
|
11
|
-
const formatted = [];
|
|
12
|
-
for (const line of lines) {
|
|
13
|
-
const trimmed = line.trim();
|
|
14
|
-
// Branch information
|
|
15
|
-
if (trimmed.startsWith('On branch')) {
|
|
16
|
-
formatted.push(theme.info(line));
|
|
17
|
-
}
|
|
18
|
-
// Modified files
|
|
19
|
-
else if (trimmed.startsWith('modified:')) {
|
|
20
|
-
formatted.push(` ${theme.warning('M')} ${line.replace(/^\s*modified:\s*/, '')}`);
|
|
21
|
-
}
|
|
22
|
-
// New files
|
|
23
|
-
else if (trimmed.startsWith('new file:')) {
|
|
24
|
-
formatted.push(` ${theme.success('A')} ${line.replace(/^\s*new file:\s*/, '')}`);
|
|
25
|
-
}
|
|
26
|
-
// Deleted files
|
|
27
|
-
else if (trimmed.startsWith('deleted:')) {
|
|
28
|
-
formatted.push(` ${theme.error('D')} ${line.replace(/^\s*deleted:\s*/, '')}`);
|
|
29
|
-
}
|
|
30
|
-
// Renamed files
|
|
31
|
-
else if (trimmed.startsWith('renamed:')) {
|
|
32
|
-
formatted.push(` ${theme.info('R')} ${line.replace(/^\s*renamed:\s*/, '')}`);
|
|
33
|
-
}
|
|
34
|
-
// Untracked files
|
|
35
|
-
else if (trimmed && !trimmed.includes(':') && lines[lines.indexOf(line) - 1]?.includes('Untracked files')) {
|
|
36
|
-
formatted.push(` ${theme.ui.muted('?')} ${trimmed}`);
|
|
37
|
-
}
|
|
38
|
-
// Section headers
|
|
39
|
-
else if (trimmed.endsWith(':')) {
|
|
40
|
-
formatted.push(theme.bold(line));
|
|
41
|
-
}
|
|
42
|
-
// Empty lines and other
|
|
43
|
-
else {
|
|
44
|
-
formatted.push(theme.ui.muted(line));
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return formatted.join('\n');
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Format git diff output with syntax highlighting
|
|
51
|
-
*/
|
|
52
|
-
export function formatGitDiff(diffOutput) {
|
|
53
|
-
const lines = diffOutput.split('\n');
|
|
54
|
-
const formatted = [];
|
|
55
|
-
for (const line of lines) {
|
|
56
|
-
// File headers
|
|
57
|
-
if (line.startsWith('diff --git')) {
|
|
58
|
-
formatted.push(theme.info(line));
|
|
59
|
-
}
|
|
60
|
-
// Index and mode lines
|
|
61
|
-
else if (line.startsWith('index ') || line.startsWith('---') || line.startsWith('+++')) {
|
|
62
|
-
formatted.push(theme.ui.muted(line));
|
|
63
|
-
}
|
|
64
|
-
// Hunk headers
|
|
65
|
-
else if (line.startsWith('@@')) {
|
|
66
|
-
formatted.push(theme.accent(line));
|
|
67
|
-
}
|
|
68
|
-
// Added lines
|
|
69
|
-
else if (line.startsWith('+')) {
|
|
70
|
-
formatted.push(theme.success(line));
|
|
71
|
-
}
|
|
72
|
-
// Removed lines
|
|
73
|
-
else if (line.startsWith('-')) {
|
|
74
|
-
formatted.push(theme.error(line));
|
|
75
|
-
}
|
|
76
|
-
// Context lines
|
|
77
|
-
else {
|
|
78
|
-
formatted.push(line);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
return formatted.join('\n');
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Format git log output
|
|
85
|
-
*/
|
|
86
|
-
export function formatGitLog(logOutput, compact = false) {
|
|
87
|
-
const lines = logOutput.split('\n');
|
|
88
|
-
const formatted = [];
|
|
89
|
-
let inCommit = false;
|
|
90
|
-
for (const line of lines) {
|
|
91
|
-
const trimmed = line.trim();
|
|
92
|
-
// Commit hash
|
|
93
|
-
if (trimmed.startsWith('commit ')) {
|
|
94
|
-
const hash = trimmed.replace('commit ', '');
|
|
95
|
-
formatted.push(theme.warning(`● ${hash.slice(0, 8)}`));
|
|
96
|
-
inCommit = true;
|
|
97
|
-
}
|
|
98
|
-
// Author
|
|
99
|
-
else if (trimmed.startsWith('Author:')) {
|
|
100
|
-
const author = trimmed.replace('Author:', '').trim();
|
|
101
|
-
if (!compact) {
|
|
102
|
-
formatted.push(theme.ui.muted(` Author: ${author}`));
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
// Date
|
|
106
|
-
else if (trimmed.startsWith('Date:')) {
|
|
107
|
-
const date = trimmed.replace('Date:', '').trim();
|
|
108
|
-
if (!compact) {
|
|
109
|
-
formatted.push(theme.ui.muted(` Date: ${date}`));
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// Commit message
|
|
113
|
-
else if (inCommit && trimmed) {
|
|
114
|
-
formatted.push(theme.bold(` ${trimmed}`));
|
|
115
|
-
inCommit = false;
|
|
116
|
-
}
|
|
117
|
-
// Empty lines
|
|
118
|
-
else if (!trimmed) {
|
|
119
|
-
if (!compact) {
|
|
120
|
-
formatted.push('');
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
// Other lines
|
|
124
|
-
else {
|
|
125
|
-
formatted.push(theme.ui.muted(` ${line}`));
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
return formatted.join('\n');
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Format branch list
|
|
132
|
-
*/
|
|
133
|
-
export function formatGitBranches(branchOutput) {
|
|
134
|
-
const lines = branchOutput.split('\n').filter(l => l.trim());
|
|
135
|
-
const formatted = [];
|
|
136
|
-
for (const line of lines) {
|
|
137
|
-
const trimmed = line.trim();
|
|
138
|
-
// Current branch
|
|
139
|
-
if (trimmed.startsWith('*')) {
|
|
140
|
-
const branch = trimmed.substring(2);
|
|
141
|
-
formatted.push(` ${theme.success('●')} ${theme.bold(branch)} ${theme.ui.muted('(current)')}`);
|
|
142
|
-
}
|
|
143
|
-
// Other branches
|
|
144
|
-
else {
|
|
145
|
-
formatted.push(` ${theme.ui.muted('○')} ${trimmed}`);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
return formatted.join('\n');
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Format git stash list
|
|
152
|
-
*/
|
|
153
|
-
export function formatGitStash(stashOutput) {
|
|
154
|
-
const lines = stashOutput.split('\n').filter(l => l.trim());
|
|
155
|
-
const formatted = [];
|
|
156
|
-
lines.forEach((line) => {
|
|
157
|
-
const match = line.match(/^(stash@\{(\d+)\}):(.+)$/);
|
|
158
|
-
if (match) {
|
|
159
|
-
const [, , num, message] = match;
|
|
160
|
-
if (num && message) {
|
|
161
|
-
formatted.push(` ${theme.info(num.padStart(2))} ${theme.ui.muted('│')} ${message.trim()}`);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
formatted.push(theme.ui.muted(` ${line}`));
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
return formatted.join('\n');
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Create a compact git status summary
|
|
172
|
-
*/
|
|
173
|
-
export function formatGitStatusSummary(statusOutput) {
|
|
174
|
-
const lines = statusOutput.split('\n');
|
|
175
|
-
let modified = 0;
|
|
176
|
-
let added = 0;
|
|
177
|
-
let deleted = 0;
|
|
178
|
-
let untracked = 0;
|
|
179
|
-
for (const line of lines) {
|
|
180
|
-
if (line.includes('modified:'))
|
|
181
|
-
modified++;
|
|
182
|
-
if (line.includes('new file:'))
|
|
183
|
-
added++;
|
|
184
|
-
if (line.includes('deleted:'))
|
|
185
|
-
deleted++;
|
|
186
|
-
if (line.trim() && !line.includes(':') && lines[lines.indexOf(line) - 1]?.includes('Untracked'))
|
|
187
|
-
untracked++;
|
|
188
|
-
}
|
|
189
|
-
const parts = [];
|
|
190
|
-
if (modified > 0)
|
|
191
|
-
parts.push(theme.warning(`${modified} modified`));
|
|
192
|
-
if (added > 0)
|
|
193
|
-
parts.push(theme.success(`${added} new`));
|
|
194
|
-
if (deleted > 0)
|
|
195
|
-
parts.push(theme.error(`${deleted} deleted`));
|
|
196
|
-
if (untracked > 0)
|
|
197
|
-
parts.push(theme.ui.muted(`${untracked} untracked`));
|
|
198
|
-
if (parts.length === 0) {
|
|
199
|
-
return theme.success('✓ Working directory clean');
|
|
200
|
-
}
|
|
201
|
-
return parts.join(theme.ui.muted(' · '));
|
|
202
|
-
}
|
|
203
|
-
//# sourceMappingURL=gitFormatter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gitFormatter.js","sourceRoot":"","sources":["../../src/ui/gitFormatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,qBAAqB;QACrB,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,iBAAiB;aACZ,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACzC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,YAAY;aACP,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACzC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,gBAAgB;aACX,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,gBAAgB;aACX,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,kBAAkB;aACb,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC1G,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,kBAAkB;aACb,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,wBAAwB;aACnB,CAAC;YACJ,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,eAAe;QACf,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAClC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,uBAAuB;aAClB,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACvF,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,eAAe;aACV,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,cAAc;aACT,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,gBAAgB;aACX,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,gBAAgB;aACX,CAAC;YACJ,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,OAAO,GAAG,KAAK;IAC7D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,cAAc;QACd,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC5C,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvD,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,SAAS;aACJ,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACrD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QACD,OAAO;aACF,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QACD,iBAAiB;aACZ,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC7B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;YAC3C,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;QACD,cAAc;aACT,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QACD,cAAc;aACT,CAAC;YACJ,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAAoB;IACpD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,iBAAiB;QACjB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,iBAAiB;aACZ,CAAC;YACJ,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACrD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,EAAE,AAAD,EAAG,GAAG,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;YACjC,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;gBACnB,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,YAAoB;IACzD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,QAAQ,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,KAAK,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC;YAAE,SAAS,EAAE,CAAC;IAC/G,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,QAAQ,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,QAAQ,WAAW,CAAC,CAAC,CAAC;IACpE,IAAI,KAAK,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC;IACzD,IAAI,OAAO,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,UAAU,CAAC,CAAC,CAAC;IAC/D,IAAI,SAAS,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,SAAS,YAAY,CAAC,CAAC,CAAC;IAExE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Keyboard Shortcuts Handler - Claude Code style
|
|
3
|
-
* Handles interactive shortcuts: esc, ctrl+o, ctrl+t, ?
|
|
4
|
-
*/
|
|
5
|
-
import readline from 'node:readline';
|
|
6
|
-
export type ShortcutHandler = () => void | Promise<void>;
|
|
7
|
-
export interface ShortcutHandlers {
|
|
8
|
-
onEscape?: ShortcutHandler;
|
|
9
|
-
onExpandToggle?: ShortcutHandler;
|
|
10
|
-
onShowTodos?: ShortcutHandler;
|
|
11
|
-
onHelp?: ShortcutHandler;
|
|
12
|
-
onInterrupt?: ShortcutHandler;
|
|
13
|
-
}
|
|
14
|
-
export declare class KeyboardShortcutManager {
|
|
15
|
-
private handlers;
|
|
16
|
-
private enabled;
|
|
17
|
-
/**
|
|
18
|
-
* Register keyboard handlers with readline interface
|
|
19
|
-
*/
|
|
20
|
-
register(rl: readline.Interface, handlers: ShortcutHandlers): void;
|
|
21
|
-
/**
|
|
22
|
-
* Unregister keyboard handlers
|
|
23
|
-
*/
|
|
24
|
-
unregister(): void;
|
|
25
|
-
/**
|
|
26
|
-
* Handle keypress events
|
|
27
|
-
*/
|
|
28
|
-
private handleKeypress;
|
|
29
|
-
/**
|
|
30
|
-
* Show available shortcuts (Claude Code style)
|
|
31
|
-
*/
|
|
32
|
-
static formatShortcutsHelp(): string;
|
|
33
|
-
/**
|
|
34
|
-
* Format shortcut hint for display (Claude Code style)
|
|
35
|
-
* Example: "(esc to interrupt · ctrl+o to expand · 5s)"
|
|
36
|
-
*/
|
|
37
|
-
static formatShortcutHint(options: {
|
|
38
|
-
showEsc?: boolean;
|
|
39
|
-
showExpand?: boolean;
|
|
40
|
-
showTodos?: boolean;
|
|
41
|
-
elapsedSeconds?: number;
|
|
42
|
-
}): string;
|
|
43
|
-
/**
|
|
44
|
-
* Check if shortcuts are enabled
|
|
45
|
-
*/
|
|
46
|
-
isEnabled(): boolean;
|
|
47
|
-
}
|
|
48
|
-
export declare const keyboardShortcuts: KeyboardShortcutManager;
|
|
49
|
-
//# sourceMappingURL=keyboardShortcuts.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keyboardShortcuts.d.ts","sourceRoot":"","sources":["../../src/ui/keyboardShortcuts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,eAAe,CAAC;AAGrC,MAAM,MAAM,eAAe,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,OAAO,CAAS;IAExB;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAmBlE;;OAEG;IACH,UAAU,IAAI,IAAI;IAclB;;OAEG;YACW,cAAc;IAkC5B;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,MAAM;IAsBpC;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACjC,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,MAAM;IAwBV;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB;AAGD,eAAO,MAAM,iBAAiB,yBAAgC,CAAC"}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Keyboard Shortcuts Handler - Claude Code style
|
|
3
|
-
* Handles interactive shortcuts: esc, ctrl+o, ctrl+t, ?
|
|
4
|
-
*/
|
|
5
|
-
import readline from 'node:readline';
|
|
6
|
-
import { theme } from './theme.js';
|
|
7
|
-
export class KeyboardShortcutManager {
|
|
8
|
-
handlers = {};
|
|
9
|
-
enabled = false;
|
|
10
|
-
/**
|
|
11
|
-
* Register keyboard handlers with readline interface
|
|
12
|
-
*/
|
|
13
|
-
register(rl, handlers) {
|
|
14
|
-
this.handlers = handlers;
|
|
15
|
-
this.enabled = true;
|
|
16
|
-
// Enable raw mode for character-by-character input
|
|
17
|
-
if (process.stdin.isTTY) {
|
|
18
|
-
try {
|
|
19
|
-
process.stdin.setRawMode(true);
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
// EIO errors can occur - safe to continue without raw mode
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
// Listen for keypress events
|
|
26
|
-
readline.emitKeypressEvents(process.stdin, rl);
|
|
27
|
-
process.stdin.on('keypress', this.handleKeypress.bind(this));
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Unregister keyboard handlers
|
|
31
|
-
*/
|
|
32
|
-
unregister() {
|
|
33
|
-
this.enabled = false;
|
|
34
|
-
if (process.stdin.isTTY) {
|
|
35
|
-
try {
|
|
36
|
-
process.stdin.setRawMode(false);
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
// EIO errors can occur - safe to ignore
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
process.stdin.removeAllListeners('keypress');
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Handle keypress events
|
|
46
|
-
*/
|
|
47
|
-
async handleKeypress(str, key) {
|
|
48
|
-
if (!this.enabled || !key)
|
|
49
|
-
return;
|
|
50
|
-
// Escape key
|
|
51
|
-
if (key.name === 'escape' && this.handlers.onEscape) {
|
|
52
|
-
await this.handlers.onEscape();
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
// Ctrl+O - Expand/collapse
|
|
56
|
-
if (key.ctrl && key.name === 'o' && this.handlers.onExpandToggle) {
|
|
57
|
-
await this.handlers.onExpandToggle();
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
// Ctrl+T - Show todos
|
|
61
|
-
if (key.ctrl && key.name === 't' && this.handlers.onShowTodos) {
|
|
62
|
-
await this.handlers.onShowTodos();
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
// Ctrl+C - Interrupt
|
|
66
|
-
if (key.ctrl && key.name === 'c' && this.handlers.onInterrupt) {
|
|
67
|
-
await this.handlers.onInterrupt();
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
// ? - Help
|
|
71
|
-
if (str === '?' && this.handlers.onHelp) {
|
|
72
|
-
await this.handlers.onHelp();
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Show available shortcuts (Claude Code style)
|
|
78
|
-
*/
|
|
79
|
-
static formatShortcutsHelp() {
|
|
80
|
-
const shortcuts = [
|
|
81
|
-
{ key: 'esc', description: 'Interrupt current operation' },
|
|
82
|
-
{ key: 'ctrl+o', description: 'Expand/collapse output sections' },
|
|
83
|
-
{ key: 'ctrl+t', description: 'Show todo list' },
|
|
84
|
-
{ key: '?', description: 'Show this help' },
|
|
85
|
-
{ key: 'ctrl+c', description: 'Clear input -> pause AI -> Exit' },
|
|
86
|
-
];
|
|
87
|
-
const lines = [];
|
|
88
|
-
lines.push(theme.primary('Keyboard Shortcuts:'));
|
|
89
|
-
lines.push('');
|
|
90
|
-
for (const { key, description } of shortcuts) {
|
|
91
|
-
const keyText = theme.info(key.padEnd(10));
|
|
92
|
-
const descText = theme.ui.muted(description);
|
|
93
|
-
lines.push(` ${keyText} ${descText}`);
|
|
94
|
-
}
|
|
95
|
-
return lines.join('\n');
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Format shortcut hint for display (Claude Code style)
|
|
99
|
-
* Example: "(esc to interrupt · ctrl+o to expand · 5s)"
|
|
100
|
-
*/
|
|
101
|
-
static formatShortcutHint(options) {
|
|
102
|
-
const hints = [];
|
|
103
|
-
if (options.showEsc) {
|
|
104
|
-
hints.push('esc to interrupt');
|
|
105
|
-
}
|
|
106
|
-
if (options.showExpand) {
|
|
107
|
-
hints.push('ctrl+o to expand');
|
|
108
|
-
}
|
|
109
|
-
if (options.showTodos) {
|
|
110
|
-
hints.push('ctrl+t to show todos');
|
|
111
|
-
}
|
|
112
|
-
if (options.elapsedSeconds !== undefined) {
|
|
113
|
-
hints.push(`${options.elapsedSeconds}s`);
|
|
114
|
-
}
|
|
115
|
-
if (hints.length === 0)
|
|
116
|
-
return '';
|
|
117
|
-
return theme.ui.muted(`(${hints.join(' · ')})`);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Check if shortcuts are enabled
|
|
121
|
-
*/
|
|
122
|
-
isEnabled() {
|
|
123
|
-
return this.enabled;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
// Singleton instance
|
|
127
|
-
export const keyboardShortcuts = new KeyboardShortcutManager();
|
|
128
|
-
//# sourceMappingURL=keyboardShortcuts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keyboardShortcuts.js","sourceRoot":"","sources":["../../src/ui/keyboardShortcuts.ts"],"names":[],"mappings":"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"}
|