erosolar-cli 1.7.108 → 1.7.110
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 +1 -0
- package/dist/bin/erosolar.js.map +1 -1
- package/dist/shell/enhancedInteractiveShell.d.ts +42 -0
- package/dist/shell/enhancedInteractiveShell.d.ts.map +1 -0
- package/dist/shell/enhancedInteractiveShell.js +139 -0
- package/dist/shell/enhancedInteractiveShell.js.map +1 -0
- package/dist/shell/enhancedShellApp.d.ts +22 -0
- package/dist/shell/enhancedShellApp.d.ts.map +1 -0
- package/dist/shell/enhancedShellApp.js +148 -0
- package/dist/shell/enhancedShellApp.js.map +1 -0
- package/dist/tools/diffUtils.d.ts +6 -0
- package/dist/tools/diffUtils.d.ts.map +1 -1
- package/dist/tools/diffUtils.js +110 -0
- package/dist/tools/diffUtils.js.map +1 -1
- package/dist/tools/editTools.d.ts.map +1 -1
- package/dist/tools/editTools.js +85 -11
- package/dist/tools/editTools.js.map +1 -1
- package/dist/ui/enhancedPinnedChatBox.d.ts +93 -0
- package/dist/ui/enhancedPinnedChatBox.d.ts.map +1 -0
- package/dist/ui/enhancedPinnedChatBox.js +372 -0
- package/dist/ui/enhancedPinnedChatBox.js.map +1 -0
- package/dist/ui/persistentChatBox.d.ts.map +1 -1
- package/dist/ui/persistentChatBox.js +6 -2
- package/dist/ui/persistentChatBox.js.map +1 -1
- package/dist/ui/persistentPrompt.d.ts +5 -4
- package/dist/ui/persistentPrompt.d.ts.map +1 -1
- package/dist/ui/persistentPrompt.js +34 -13
- package/dist/ui/persistentPrompt.js.map +1 -1
- package/package.json +1 -1
package/dist/tools/editTools.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readFile, writeFile, stat } from 'node:fs/promises';
|
|
2
2
|
import { join, relative } from 'node:path';
|
|
3
3
|
import { buildError } from '../core/errors.js';
|
|
4
|
-
import {
|
|
4
|
+
import { buildDiffSegmentsFast, formatDiffLines } from './diffUtils.js';
|
|
5
5
|
/**
|
|
6
6
|
* Creates the Edit tool for surgical file modifications using exact string replacement.
|
|
7
7
|
*
|
|
@@ -65,15 +65,33 @@ export function createEditTools(workingDir) {
|
|
|
65
65
|
}
|
|
66
66
|
try {
|
|
67
67
|
const filePath = resolveFilePath(workingDir, pathArg);
|
|
68
|
-
// Check file exists
|
|
69
|
-
|
|
68
|
+
// Check file exists (async for speed)
|
|
69
|
+
try {
|
|
70
|
+
await stat(filePath);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
70
73
|
return `Error: File not found: ${filePath}`;
|
|
71
74
|
}
|
|
72
|
-
// Read current content
|
|
73
|
-
const currentContent =
|
|
75
|
+
// Read current content (async for speed)
|
|
76
|
+
const currentContent = await readFile(filePath, 'utf-8');
|
|
74
77
|
// Check if old_string exists in file
|
|
75
78
|
if (!currentContent.includes(oldString)) {
|
|
76
|
-
|
|
79
|
+
// Provide helpful debugging info when match fails
|
|
80
|
+
const firstLine = oldString.split('\n')[0] || '';
|
|
81
|
+
const hints = findSimilarLines(currentContent, firstLine, filePath);
|
|
82
|
+
return [
|
|
83
|
+
'Error: old_string not found in file.',
|
|
84
|
+
'',
|
|
85
|
+
`File: ${filePath}`,
|
|
86
|
+
`Searching for: ${JSON.stringify(firstLine.substring(0, 80))}${firstLine.length > 80 ? '...' : ''}`,
|
|
87
|
+
'',
|
|
88
|
+
hints,
|
|
89
|
+
'',
|
|
90
|
+
'Tips:',
|
|
91
|
+
'- Ensure exact whitespace/indentation matches',
|
|
92
|
+
'- Copy text directly from Read output',
|
|
93
|
+
'- Check for tabs vs spaces',
|
|
94
|
+
].join('\n');
|
|
77
95
|
}
|
|
78
96
|
// Count occurrences
|
|
79
97
|
const occurrences = countOccurrences(currentContent, oldString);
|
|
@@ -84,10 +102,10 @@ export function createEditTools(workingDir) {
|
|
|
84
102
|
const newContent = replaceAll
|
|
85
103
|
? currentContent.split(oldString).join(newString)
|
|
86
104
|
: currentContent.replace(oldString, newString);
|
|
87
|
-
// Generate diff
|
|
88
|
-
const diffSegments =
|
|
89
|
-
// Write file
|
|
90
|
-
|
|
105
|
+
// Generate diff (fast in-memory algorithm, no git spawning)
|
|
106
|
+
const diffSegments = buildDiffSegmentsFast(currentContent, newContent);
|
|
107
|
+
// Write file (async for speed)
|
|
108
|
+
await writeFile(filePath, newContent, 'utf-8');
|
|
91
109
|
// Build summary
|
|
92
110
|
const relativePath = relative(workingDir, filePath);
|
|
93
111
|
const displayPath = relativePath && !relativePath.startsWith('..') ? relativePath : filePath;
|
|
@@ -132,4 +150,60 @@ function countOccurrences(text, search) {
|
|
|
132
150
|
}
|
|
133
151
|
return count;
|
|
134
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* Find lines in the file that are similar to the search text.
|
|
155
|
+
* Enhanced with whitespace detection and auto-correction suggestions.
|
|
156
|
+
*/
|
|
157
|
+
function findSimilarLines(content, searchFirstLine, _filePath) {
|
|
158
|
+
if (!searchFirstLine.trim()) {
|
|
159
|
+
return 'The search string starts with an empty line.';
|
|
160
|
+
}
|
|
161
|
+
const lines = content.split('\n');
|
|
162
|
+
const searchNormalized = searchFirstLine.trim().toLowerCase();
|
|
163
|
+
const matches = [];
|
|
164
|
+
// Find lines that contain key words from the search
|
|
165
|
+
const searchWords = searchNormalized.split(/\s+/).filter(w => w.length > 2);
|
|
166
|
+
for (let i = 0; i < lines.length; i++) {
|
|
167
|
+
const line = lines[i] || '';
|
|
168
|
+
const lineNormalized = line.trim().toLowerCase();
|
|
169
|
+
// Check for exact match with different whitespace
|
|
170
|
+
if (lineNormalized === searchNormalized && line !== searchFirstLine) {
|
|
171
|
+
const hasTabs = line.includes('\t') !== searchFirstLine.includes('\t');
|
|
172
|
+
const leadingDiff = line.match(/^\s*/)?.[0]?.length !== searchFirstLine.match(/^\s*/)?.[0]?.length;
|
|
173
|
+
const issue = hasTabs ? 'tabs vs spaces' : leadingDiff ? 'different indentation' : 'whitespace difference';
|
|
174
|
+
matches.push({ lineNum: i + 1, line, similarity: 0.99, issue });
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
// Check for partial match (contains significant portion of the search)
|
|
178
|
+
if (lineNormalized.includes(searchNormalized.substring(0, 20))) {
|
|
179
|
+
matches.push({ lineNum: i + 1, line, similarity: 1.0 });
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
// Check for word overlap
|
|
183
|
+
if (searchWords.length > 0) {
|
|
184
|
+
const matchingWords = searchWords.filter(w => lineNormalized.includes(w));
|
|
185
|
+
const similarity = matchingWords.length / searchWords.length;
|
|
186
|
+
if (similarity >= 0.5) {
|
|
187
|
+
matches.push({ lineNum: i + 1, line, similarity });
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (matches.length === 0) {
|
|
192
|
+
return 'No similar lines found. The text may not exist in this file.';
|
|
193
|
+
}
|
|
194
|
+
// Sort by similarity and take top 3
|
|
195
|
+
matches.sort((a, b) => b.similarity - a.similarity);
|
|
196
|
+
const topMatches = matches.slice(0, 3);
|
|
197
|
+
const suggestions = topMatches.map(m => {
|
|
198
|
+
const truncated = m.line.length > 80 ? m.line.substring(0, 77) + '...' : m.line;
|
|
199
|
+
const issueNote = m.issue ? ` (${m.issue})` : '';
|
|
200
|
+
return ` Line ${m.lineNum}${issueNote}: ${JSON.stringify(truncated)}`;
|
|
201
|
+
});
|
|
202
|
+
// Add auto-correction hint for whitespace issues
|
|
203
|
+
const whitespaceMatch = topMatches.find(m => m.issue);
|
|
204
|
+
if (whitespaceMatch) {
|
|
205
|
+
return `Similar lines found (possible whitespace mismatch):\n${suggestions.join('\n')}\n\nTip: Copy the exact text from Read output including indentation.`;
|
|
206
|
+
}
|
|
207
|
+
return `Similar lines found:\n${suggestions.join('\n')}`;
|
|
208
|
+
}
|
|
135
209
|
//# sourceMappingURL=editTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editTools.js","sourceRoot":"","sources":["../../src/tools/editTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"editTools.js","sourceRoot":"","sources":["../../src/tools/editTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EnhancedPinnedChatBox - Modified version of PinnedChatBox with persistent visibility during streaming
|
|
3
|
+
* and enhanced paste handling
|
|
4
|
+
*/
|
|
5
|
+
export interface QueuedCommand {
|
|
6
|
+
id: string;
|
|
7
|
+
text: string;
|
|
8
|
+
type: 'request' | 'continuous' | 'slash';
|
|
9
|
+
timestamp: number;
|
|
10
|
+
preview: string;
|
|
11
|
+
}
|
|
12
|
+
export interface PinnedChatBoxState {
|
|
13
|
+
isProcessing: boolean;
|
|
14
|
+
queuedCommands: QueuedCommand[];
|
|
15
|
+
currentInput: string;
|
|
16
|
+
contextUsage: number;
|
|
17
|
+
statusMessage: string | null;
|
|
18
|
+
isVisible: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare class EnhancedPinnedChatBox {
|
|
21
|
+
private writeStream;
|
|
22
|
+
private state;
|
|
23
|
+
private reservedLines;
|
|
24
|
+
private _lastRenderedHeight;
|
|
25
|
+
private inputBuffer;
|
|
26
|
+
private cursorPosition;
|
|
27
|
+
private commandIdCounter;
|
|
28
|
+
private onCommandQueued?;
|
|
29
|
+
private onInputSubmit?;
|
|
30
|
+
private renderScheduled;
|
|
31
|
+
private isEnabled;
|
|
32
|
+
private isDisposed;
|
|
33
|
+
private lastRenderTime;
|
|
34
|
+
private renderThrottleMs;
|
|
35
|
+
private maxInputLength;
|
|
36
|
+
private maxQueueSize;
|
|
37
|
+
private readonly ansiPattern;
|
|
38
|
+
private readonly oscPattern;
|
|
39
|
+
private readonly maxStatusMessageLength;
|
|
40
|
+
private scrollRegionActive;
|
|
41
|
+
private inputHistory;
|
|
42
|
+
private historyIndex;
|
|
43
|
+
private tempCurrentInput;
|
|
44
|
+
private readonly maxHistorySize;
|
|
45
|
+
private isPastedBlock;
|
|
46
|
+
private pastedFullContent;
|
|
47
|
+
private pasteStartTime;
|
|
48
|
+
private pasteLineCount;
|
|
49
|
+
private readonly maxPasteLines;
|
|
50
|
+
private outputInterceptorCleanup?;
|
|
51
|
+
constructor(writeStream: NodeJS.WriteStream, _promptText?: string, options?: {
|
|
52
|
+
onCommandQueued?: (cmd: QueuedCommand) => void;
|
|
53
|
+
onInputSubmit?: (input: string) => void;
|
|
54
|
+
maxInputLength?: number;
|
|
55
|
+
maxQueueSize?: number;
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* Enhanced paste detection with summarization
|
|
59
|
+
*/
|
|
60
|
+
handlePaste(content: string): void;
|
|
61
|
+
/**
|
|
62
|
+
* Clear paste state
|
|
63
|
+
*/
|
|
64
|
+
private clearPastedBlock;
|
|
65
|
+
/**
|
|
66
|
+
* Handle character input with paste detection
|
|
67
|
+
*/
|
|
68
|
+
handleCharacter(char: string): void;
|
|
69
|
+
/**
|
|
70
|
+
* Handle Enter key - only submit when explicitly pressed
|
|
71
|
+
*/
|
|
72
|
+
handleEnter(): string | null;
|
|
73
|
+
/**
|
|
74
|
+
* Enhanced render that always shows during processing
|
|
75
|
+
*/
|
|
76
|
+
render(): void;
|
|
77
|
+
/**
|
|
78
|
+
* Render persistent input during processing
|
|
79
|
+
*/
|
|
80
|
+
renderPersistentInput(): void;
|
|
81
|
+
private supportsRendering;
|
|
82
|
+
private safeWrite;
|
|
83
|
+
private sanitizeCommandText;
|
|
84
|
+
private sanitizeStatusMessage;
|
|
85
|
+
private addToHistory;
|
|
86
|
+
setEnabled(enabled: boolean): void;
|
|
87
|
+
setProcessing(isProcessing: boolean): void;
|
|
88
|
+
setContextUsage(percentage: number): void;
|
|
89
|
+
setStatusMessage(message: string | null): void;
|
|
90
|
+
queueCommand(text: string, type?: 'request' | 'continuous' | 'slash'): QueuedCommand | null;
|
|
91
|
+
clearQueue(): void;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=enhancedPinnedChatBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhancedPinnedChatBox.d.ts","sourceRoot":"","sources":["../../src/ui/enhancedPinnedChatBox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EnhancedPinnedChatBox - Modified version of PinnedChatBox with persistent visibility during streaming
|
|
3
|
+
* and enhanced paste handling
|
|
4
|
+
*/
|
|
5
|
+
import { theme } from './theme.js';
|
|
6
|
+
import { ANSI } from './ansi.js';
|
|
7
|
+
export class EnhancedPinnedChatBox {
|
|
8
|
+
writeStream;
|
|
9
|
+
state;
|
|
10
|
+
reservedLines = 2;
|
|
11
|
+
_lastRenderedHeight = 0;
|
|
12
|
+
inputBuffer = '';
|
|
13
|
+
cursorPosition = 0;
|
|
14
|
+
commandIdCounter = 0;
|
|
15
|
+
onCommandQueued;
|
|
16
|
+
onInputSubmit;
|
|
17
|
+
renderScheduled = false;
|
|
18
|
+
isEnabled = true;
|
|
19
|
+
isDisposed = false;
|
|
20
|
+
lastRenderTime = 0;
|
|
21
|
+
renderThrottleMs = 16;
|
|
22
|
+
maxInputLength = 10000;
|
|
23
|
+
maxQueueSize = 100;
|
|
24
|
+
ansiPattern = /[\u001B\u009B][[\]()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
|
|
25
|
+
oscPattern = /\u001b\][^\u0007]*(?:\u0007|\u001b\\)/g;
|
|
26
|
+
maxStatusMessageLength = 200;
|
|
27
|
+
// Scroll region management
|
|
28
|
+
scrollRegionActive = false;
|
|
29
|
+
// Input history
|
|
30
|
+
inputHistory = [];
|
|
31
|
+
historyIndex = -1;
|
|
32
|
+
tempCurrentInput = '';
|
|
33
|
+
maxHistorySize = 100;
|
|
34
|
+
// Enhanced paste tracking
|
|
35
|
+
isPastedBlock = false;
|
|
36
|
+
pastedFullContent = '';
|
|
37
|
+
pasteStartTime = 0;
|
|
38
|
+
pasteLineCount = 0;
|
|
39
|
+
maxPasteLines = 50;
|
|
40
|
+
outputInterceptorCleanup;
|
|
41
|
+
constructor(writeStream, _promptText = '> ', options = {}) {
|
|
42
|
+
this.writeStream = writeStream;
|
|
43
|
+
this.onCommandQueued = options.onCommandQueued;
|
|
44
|
+
this.onInputSubmit = options.onInputSubmit;
|
|
45
|
+
this.maxInputLength = options.maxInputLength ?? this.maxInputLength;
|
|
46
|
+
this.maxQueueSize = options.maxQueueSize ?? this.maxQueueSize;
|
|
47
|
+
this.state = {
|
|
48
|
+
isProcessing: false,
|
|
49
|
+
queuedCommands: [],
|
|
50
|
+
currentInput: '',
|
|
51
|
+
contextUsage: 0,
|
|
52
|
+
statusMessage: null,
|
|
53
|
+
isVisible: true,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Enhanced paste detection with summarization
|
|
58
|
+
*/
|
|
59
|
+
handlePaste(content) {
|
|
60
|
+
if (this.isDisposed)
|
|
61
|
+
return;
|
|
62
|
+
const lines = content.split('\n');
|
|
63
|
+
const lineCount = lines.length;
|
|
64
|
+
const charCount = content.length;
|
|
65
|
+
this.pasteStartTime = Date.now();
|
|
66
|
+
this.pasteLineCount = lineCount;
|
|
67
|
+
// For large pastes, show summary instead of full content
|
|
68
|
+
if (lineCount > this.maxPasteLines || charCount > 2000) {
|
|
69
|
+
this.isPastedBlock = true;
|
|
70
|
+
this.pastedFullContent = content;
|
|
71
|
+
const summaryLines = lines.slice(0, 5);
|
|
72
|
+
const remainingLines = lineCount - 5;
|
|
73
|
+
const summary = summaryLines.join('\n') +
|
|
74
|
+
(remainingLines > 0 ? `\n... (${remainingLines} more lines)` : '');
|
|
75
|
+
this.inputBuffer = summary;
|
|
76
|
+
this.cursorPosition = summary.length;
|
|
77
|
+
this.state.currentInput = summary;
|
|
78
|
+
this.setStatusMessage(`📋 Pasted ${lineCount} lines, ${charCount} chars - hit Enter to submit`);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this.isPastedBlock = false;
|
|
82
|
+
this.pastedFullContent = '';
|
|
83
|
+
this.inputBuffer = content;
|
|
84
|
+
this.cursorPosition = content.length;
|
|
85
|
+
this.state.currentInput = content;
|
|
86
|
+
}
|
|
87
|
+
this.scheduleRender();
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Clear paste state
|
|
91
|
+
*/
|
|
92
|
+
clearPastedBlock() {
|
|
93
|
+
this.isPastedBlock = false;
|
|
94
|
+
this.pastedFullContent = '';
|
|
95
|
+
this.pasteStartTime = 0;
|
|
96
|
+
this.pasteLineCount = 0;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Handle character input with paste detection
|
|
100
|
+
*/
|
|
101
|
+
handleCharacter(char) {
|
|
102
|
+
if (this.isDisposed)
|
|
103
|
+
return;
|
|
104
|
+
const now = Date.now();
|
|
105
|
+
if (this.pasteStartTime > 0 && now - this.pasteStartTime < 100) {
|
|
106
|
+
// Rapid input detected - treat as paste continuation
|
|
107
|
+
this.inputBuffer = this.inputBuffer.slice(0, this.cursorPosition) +
|
|
108
|
+
char +
|
|
109
|
+
this.inputBuffer.slice(this.cursorPosition);
|
|
110
|
+
this.cursorPosition += char.length;
|
|
111
|
+
this.state.currentInput = this.inputBuffer;
|
|
112
|
+
this.scheduleRender();
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
// Normal character input
|
|
116
|
+
this.inputBuffer = this.inputBuffer.slice(0, this.cursorPosition) +
|
|
117
|
+
char +
|
|
118
|
+
this.inputBuffer.slice(this.cursorPosition);
|
|
119
|
+
this.cursorPosition += char.length;
|
|
120
|
+
this.state.currentInput = this.inputBuffer;
|
|
121
|
+
this.clearPastedBlock();
|
|
122
|
+
this.scheduleRender();
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Handle Enter key - only submit when explicitly pressed
|
|
126
|
+
*/
|
|
127
|
+
handleEnter() {
|
|
128
|
+
if (this.isDisposed)
|
|
129
|
+
return null;
|
|
130
|
+
let input;
|
|
131
|
+
// If we have a pasted block, use the full content
|
|
132
|
+
if (this.isPastedBlock && this.pastedFullContent) {
|
|
133
|
+
input = this.sanitizeCommandText(this.pastedFullContent);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
input = this.sanitizeCommandText(this.inputBuffer);
|
|
137
|
+
}
|
|
138
|
+
if (!input)
|
|
139
|
+
return null;
|
|
140
|
+
// Add to history before processing
|
|
141
|
+
const historyEntry = this.isPastedBlock
|
|
142
|
+
? `[Pasted ${this.pasteLineCount} lines] ${input.slice(0, 100)}...`
|
|
143
|
+
: input;
|
|
144
|
+
this.addToHistory(historyEntry);
|
|
145
|
+
// If processing, queue the command instead of submitting
|
|
146
|
+
if (this.state.isProcessing) {
|
|
147
|
+
const type = input.startsWith('/') ? 'slash' : 'request';
|
|
148
|
+
const queued = this.queueCommand(input, type);
|
|
149
|
+
if (!queued) {
|
|
150
|
+
this.setStatusMessage(`Queue is full (${this.maxQueueSize}). Submit after current task or clear queued items.`);
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
this.clearInput();
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
// Clear input and paste state, then notify
|
|
157
|
+
this.clearInput();
|
|
158
|
+
if (this.onInputSubmit) {
|
|
159
|
+
this.onInputSubmit(input);
|
|
160
|
+
}
|
|
161
|
+
return input;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Enhanced render that always shows during processing
|
|
165
|
+
*/
|
|
166
|
+
render() {
|
|
167
|
+
if (!this.state.isVisible || !this.supportsRendering())
|
|
168
|
+
return;
|
|
169
|
+
// ALWAYS render during processing - use persistent input mode
|
|
170
|
+
if (this.state.isProcessing) {
|
|
171
|
+
this.renderPersistentInput();
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
// Not processing - render the standard status box
|
|
175
|
+
this.lastRenderTime = Date.now();
|
|
176
|
+
try {
|
|
177
|
+
const cols = Math.max(this.writeStream.columns || 80, 40);
|
|
178
|
+
const separatorWidth = Math.min(cols - 2, 72);
|
|
179
|
+
// Build status message
|
|
180
|
+
const statusParts = [];
|
|
181
|
+
// Processing status
|
|
182
|
+
if (this.state.statusMessage) {
|
|
183
|
+
const maxLen = Math.max(20, cols - 30);
|
|
184
|
+
const msg = this.state.statusMessage.length > maxLen
|
|
185
|
+
? `${this.state.statusMessage.slice(0, maxLen - 3)}...`
|
|
186
|
+
: this.state.statusMessage;
|
|
187
|
+
statusParts.push(theme.ui.muted(msg));
|
|
188
|
+
}
|
|
189
|
+
if (statusParts.length === 0) {
|
|
190
|
+
// Not processing and no status - nothing to show
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
const statusLine = statusParts.join(' │ ');
|
|
194
|
+
const separator = theme.ui.border('─'.repeat(separatorWidth));
|
|
195
|
+
// Write the 3-line pinned box
|
|
196
|
+
this.safeWrite(`\r${ANSI.CLEAR_LINE}${separator}\n`);
|
|
197
|
+
this.safeWrite(`${ANSI.CLEAR_LINE}${statusLine}\n`);
|
|
198
|
+
this.safeWrite(`${ANSI.CLEAR_LINE}${theme.ui.muted('>')} `);
|
|
199
|
+
this._lastRenderedHeight = 3;
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
// Silently handle render errors
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Render persistent input during processing
|
|
207
|
+
*/
|
|
208
|
+
renderPersistentInput() {
|
|
209
|
+
if (!this.supportsRendering())
|
|
210
|
+
return;
|
|
211
|
+
const rows = this.writeStream.rows || 24;
|
|
212
|
+
const cols = Math.max(this.writeStream.columns || 80, 40);
|
|
213
|
+
// Save cursor position
|
|
214
|
+
this.safeWrite(ANSI.SAVE_CURSOR);
|
|
215
|
+
// Move to the reserved bottom area (outside scroll region)
|
|
216
|
+
this.safeWrite(ANSI.CURSOR_TO_BOTTOM(rows - 1));
|
|
217
|
+
// Build status line
|
|
218
|
+
const queueCount = this.state.queuedCommands.length;
|
|
219
|
+
let statusText = '';
|
|
220
|
+
if (this.state.isProcessing) {
|
|
221
|
+
const queuePart = queueCount > 0 ? ` (${queueCount} queued)` : '';
|
|
222
|
+
statusText = `🔄 AI is streaming...${queuePart} [Enter: queue additional prompts]`;
|
|
223
|
+
}
|
|
224
|
+
else if (this.state.statusMessage) {
|
|
225
|
+
statusText = this.state.statusMessage;
|
|
226
|
+
}
|
|
227
|
+
else if (queueCount > 0) {
|
|
228
|
+
statusText = `${queueCount} follow-up${queueCount === 1 ? '' : 's'} queued`;
|
|
229
|
+
}
|
|
230
|
+
// Render separator and status on bottom lines
|
|
231
|
+
const separatorWidth = Math.min(cols - 2, 72);
|
|
232
|
+
const separator = theme.ui.border('─'.repeat(separatorWidth));
|
|
233
|
+
// Line rows-1: separator
|
|
234
|
+
this.safeWrite(ANSI.CLEAR_LINE);
|
|
235
|
+
this.safeWrite(separator);
|
|
236
|
+
// Line rows: input line with prompt or status
|
|
237
|
+
this.safeWrite(`\n${ANSI.CLEAR_LINE}`);
|
|
238
|
+
// Show actual input line during processing so user can see what they're typing
|
|
239
|
+
const promptPrefix = theme.ui.muted('> ');
|
|
240
|
+
const currentInput = this.inputBuffer;
|
|
241
|
+
const maxInputDisplay = cols - 4;
|
|
242
|
+
// Truncate input if too long, showing end of input
|
|
243
|
+
let displayInput = currentInput;
|
|
244
|
+
if (displayInput.length > maxInputDisplay) {
|
|
245
|
+
displayInput = '…' + displayInput.slice(-(maxInputDisplay - 1));
|
|
246
|
+
}
|
|
247
|
+
// Render prompt + input
|
|
248
|
+
this.safeWrite(promptPrefix);
|
|
249
|
+
this.safeWrite(displayInput);
|
|
250
|
+
// Show status hint on the right if there's room
|
|
251
|
+
if (statusText && currentInput.length < maxInputDisplay - statusText.length - 5) {
|
|
252
|
+
const padding = cols - 3 - currentInput.length - statusText.length - 3;
|
|
253
|
+
if (padding > 3) {
|
|
254
|
+
this.safeWrite(' '.repeat(padding));
|
|
255
|
+
this.safeWrite(theme.ui.muted(statusText.slice(0, cols - currentInput.length - 6)));
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// Restore cursor to scroll region
|
|
259
|
+
this.safeWrite(ANSI.RESTORE_CURSOR);
|
|
260
|
+
}
|
|
261
|
+
// ... (other methods remain largely the same as PinnedChatBox)
|
|
262
|
+
supportsRendering() {
|
|
263
|
+
return this.isEnabled &&
|
|
264
|
+
!this.isDisposed &&
|
|
265
|
+
this.writeStream.writable &&
|
|
266
|
+
this.writeStream.isTTY;
|
|
267
|
+
}
|
|
268
|
+
safeWrite(content) {
|
|
269
|
+
try {
|
|
270
|
+
if (this.writeStream.writable) {
|
|
271
|
+
this.writeStream.write(content);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
// Swallow write errors
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
sanitizeCommandText(text) {
|
|
279
|
+
return text
|
|
280
|
+
.replace(this.ansiPattern, '')
|
|
281
|
+
.replace(this.oscPattern, '')
|
|
282
|
+
.trim();
|
|
283
|
+
}
|
|
284
|
+
sanitizeStatusMessage(message) {
|
|
285
|
+
if (!message)
|
|
286
|
+
return null;
|
|
287
|
+
return message
|
|
288
|
+
.replace(this.ansiPattern, '')
|
|
289
|
+
.replace(this.oscPattern, '')
|
|
290
|
+
.slice(0, this.maxStatusMessageLength);
|
|
291
|
+
}
|
|
292
|
+
addToHistory(entry) {
|
|
293
|
+
if (!entry.trim())
|
|
294
|
+
return;
|
|
295
|
+
const existingIndex = this.inputHistory.indexOf(entry);
|
|
296
|
+
if (existingIndex >= 0) {
|
|
297
|
+
this.inputHistory.splice(existingIndex, 1);
|
|
298
|
+
}
|
|
299
|
+
this.inputHistory.push(entry);
|
|
300
|
+
if (this.inputHistory.length > this.maxHistorySize) {
|
|
301
|
+
this.inputHistory = this.inputHistory.slice(-this.maxHistorySize);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
setEnabled(enabled) {
|
|
305
|
+
if (this.isDisposed)
|
|
306
|
+
return;
|
|
307
|
+
if (!enabled && this.isEnabled) {
|
|
308
|
+
this.clear();
|
|
309
|
+
}
|
|
310
|
+
this.isEnabled = enabled;
|
|
311
|
+
if (enabled) {
|
|
312
|
+
this.scheduleRender();
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
setProcessing(isProcessing) {
|
|
316
|
+
if (this.isDisposed)
|
|
317
|
+
return;
|
|
318
|
+
this.state.isProcessing = isProcessing;
|
|
319
|
+
this.scheduleRender();
|
|
320
|
+
}
|
|
321
|
+
setContextUsage(percentage) {
|
|
322
|
+
if (this.isDisposed)
|
|
323
|
+
return;
|
|
324
|
+
const value = Number.isFinite(percentage) ? percentage : 0;
|
|
325
|
+
this.state.contextUsage = Math.max(0, Math.min(100, value));
|
|
326
|
+
}
|
|
327
|
+
setStatusMessage(message) {
|
|
328
|
+
if (this.isDisposed)
|
|
329
|
+
return;
|
|
330
|
+
this.state.statusMessage = this.sanitizeStatusMessage(message);
|
|
331
|
+
this.scheduleRender();
|
|
332
|
+
}
|
|
333
|
+
queueCommand(text, type = 'request') {
|
|
334
|
+
if (this.isDisposed)
|
|
335
|
+
return null;
|
|
336
|
+
if (typeof text !== 'string')
|
|
337
|
+
return null;
|
|
338
|
+
const sanitizedText = this.sanitizeCommandText(text);
|
|
339
|
+
if (!sanitizedText)
|
|
340
|
+
return null;
|
|
341
|
+
if (this.state.queuedCommands.length >= this.maxQueueSize) {
|
|
342
|
+
const idx = this.state.queuedCommands.findIndex(c => c.type !== 'slash');
|
|
343
|
+
if (idx >= 0) {
|
|
344
|
+
this.state.queuedCommands.splice(idx, 1);
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
return null;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
const truncated = sanitizedText.slice(0, this.maxInputLength);
|
|
351
|
+
const preview = truncated.length > 60 ? `${truncated.slice(0, 57)}...` : truncated;
|
|
352
|
+
const cmd = {
|
|
353
|
+
id: `cmd-${++this.commandIdCounter}`,
|
|
354
|
+
text: truncated,
|
|
355
|
+
type,
|
|
356
|
+
timestamp: Date.now(),
|
|
357
|
+
preview,
|
|
358
|
+
};
|
|
359
|
+
this.state.queuedCommands.push(cmd);
|
|
360
|
+
this.scheduleRender();
|
|
361
|
+
if (this.onCommandQueued) {
|
|
362
|
+
this.onCommandQueued(cmd);
|
|
363
|
+
}
|
|
364
|
+
return cmd;
|
|
365
|
+
}
|
|
366
|
+
clearQueue() {
|
|
367
|
+
if (this.isDisposed)
|
|
368
|
+
return;
|
|
369
|
+
this.state.que;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
//# sourceMappingURL=enhancedPinnedChatBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhancedPinnedChatBox.js","sourceRoot":"","sources":["../../src/ui/enhancedPinnedChatBox.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistentChatBox.d.ts","sourceRoot":"","sources":["../../src/ui/persistentChatBox.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,eAAe,CAAC,CAA+B;IACvD,OAAO,CAAC,aAAa,CAAC,CAA0B;IAChD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmF;IAC/G,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4C;IACvE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAe;IAGtD,OAAO,CAAC,kBAAkB,CAAkB;IAG5C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAG9C,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;IAE5C,2DAA2D;IAC3D,OAAO,CAAC,wBAAwB,CAAC,CAAa;IAG9C,OAAO,CAAC,WAAW,CAAkB;gBAGnC,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,OAAO,GAAE;QACP,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;QAC/C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACxC,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,CAAC;KAClB;IAkBR;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;IAMxC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAwClC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IA6BnC;;OAEG;IACH,WAAW,IAAI,MAAM,GAAG,IAAI;IA0C5B;;OAEG;IACH,MAAM,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"persistentChatBox.d.ts","sourceRoot":"","sources":["../../src/ui/persistentChatBox.ts"],"names":[],"mappings":"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"}
|