erosolar-cli 1.7.106 → 1.7.108
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/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +22 -7
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
- package/dist/ui/ShellUIAdapter.js +2 -1
- package/dist/ui/ShellUIAdapter.js.map +1 -1
- package/dist/ui/persistentChatBox.d.ts +90 -100
- package/dist/ui/persistentChatBox.d.ts.map +1 -1
- package/dist/ui/persistentChatBox.js +331 -212
- package/dist/ui/persistentChatBox.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,267 +1,386 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* PersistentChatBox -
|
|
2
|
+
* PersistentChatBox - Enhanced version of PinnedChatBox that remains visible during AI streaming
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* - Always visible
|
|
6
|
-
* -
|
|
7
|
-
* -
|
|
8
|
-
* -
|
|
4
|
+
* Key improvements:
|
|
5
|
+
* - Always visible at bottom, even during AI processing/streaming
|
|
6
|
+
* - Graceful handling of long pastes with summarization
|
|
7
|
+
* - Only submits to AI when user explicitly hits Enter
|
|
8
|
+
* - Enhanced paste detection and management
|
|
9
9
|
*/
|
|
10
|
-
import * as readline from 'node:readline';
|
|
11
|
-
import { EventEmitter } from 'events';
|
|
12
10
|
import { theme } from './theme.js';
|
|
13
|
-
|
|
11
|
+
import { ANSI } from './ansi.js';
|
|
12
|
+
export class PersistentChatBox {
|
|
14
13
|
writeStream;
|
|
15
|
-
readlineInterface;
|
|
16
|
-
config;
|
|
17
14
|
state;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
reservedLines = 3; // Lines reserved at bottom for chat box
|
|
16
|
+
_lastRenderedHeight = 0;
|
|
17
|
+
inputBuffer = '';
|
|
18
|
+
cursorPosition = 0;
|
|
19
|
+
commandIdCounter = 0;
|
|
20
|
+
onCommandQueued;
|
|
21
|
+
onInputSubmit;
|
|
22
|
+
renderScheduled = false;
|
|
23
|
+
isEnabled = true;
|
|
24
|
+
isDisposed = false;
|
|
25
|
+
lastRenderTime = 0;
|
|
26
|
+
renderThrottleMs = 16; // ~60fps max
|
|
27
|
+
maxInputLength = 10000; // Prevent memory issues
|
|
28
|
+
maxQueueSize = 100; // Prevent queue overflow
|
|
29
|
+
ansiPattern = /[\u001B\u009B][[\]()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
|
|
30
|
+
oscPattern = /\u001b\][^\u0007]*(?:\u0007|\u001b\\)/g;
|
|
31
|
+
maxStatusMessageLength = 200;
|
|
32
|
+
// Scroll region management for persistent bottom input
|
|
33
|
+
scrollRegionActive = false;
|
|
34
|
+
// Input history for up/down navigation
|
|
35
|
+
inputHistory = [];
|
|
36
|
+
historyIndex = -1;
|
|
37
|
+
tempCurrentInput = ''; // Stores current input when navigating history
|
|
38
|
+
maxHistorySize = 100;
|
|
39
|
+
// Enhanced paste tracking for summary display
|
|
40
|
+
isPastedBlock = false;
|
|
41
|
+
pastedFullContent = '';
|
|
42
|
+
pasteStartTime = 0;
|
|
43
|
+
pasteLineCount = 0;
|
|
44
|
+
maxPasteLines = 50;
|
|
45
|
+
/** Cleanup function for output interceptor registration */
|
|
46
|
+
outputInterceptorCleanup;
|
|
47
|
+
// Track if we're currently in streaming mode
|
|
48
|
+
isStreaming = false;
|
|
49
|
+
constructor(writeStream, options = {}) {
|
|
23
50
|
this.writeStream = writeStream;
|
|
24
|
-
this.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
showTimestamps: false,
|
|
29
|
-
...config,
|
|
30
|
-
};
|
|
51
|
+
this.onCommandQueued = options.onCommandQueued;
|
|
52
|
+
this.onInputSubmit = options.onInputSubmit;
|
|
53
|
+
this.maxInputLength = options.maxInputLength ?? this.maxInputLength;
|
|
54
|
+
this.maxQueueSize = options.maxQueueSize ?? this.maxQueueSize;
|
|
31
55
|
this.state = {
|
|
32
|
-
isVisible: true,
|
|
33
56
|
isProcessing: false,
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
57
|
+
queuedCommands: [],
|
|
58
|
+
currentInput: '',
|
|
59
|
+
contextUsage: 0,
|
|
60
|
+
statusMessage: null,
|
|
61
|
+
isVisible: true,
|
|
37
62
|
};
|
|
38
|
-
this.readlineInterface = readline.createInterface({
|
|
39
|
-
input: process.stdin,
|
|
40
|
-
output: process.stdout,
|
|
41
|
-
prompt: '',
|
|
42
|
-
terminal: true,
|
|
43
|
-
});
|
|
44
|
-
this.setupEventHandlers();
|
|
45
63
|
}
|
|
46
64
|
/**
|
|
47
|
-
*
|
|
65
|
+
* Set streaming state - controls whether chat box remains visible during AI streaming
|
|
48
66
|
*/
|
|
49
|
-
|
|
50
|
-
if (this.
|
|
67
|
+
setStreaming(isStreaming) {
|
|
68
|
+
if (this.isDisposed)
|
|
51
69
|
return;
|
|
52
|
-
this.
|
|
53
|
-
this.
|
|
54
|
-
this.emit('initialized');
|
|
70
|
+
this.isStreaming = isStreaming;
|
|
71
|
+
this.scheduleRender();
|
|
55
72
|
}
|
|
56
73
|
/**
|
|
57
|
-
*
|
|
74
|
+
* Enhanced paste detection - detects large pastes and provides summary
|
|
58
75
|
*/
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
this.
|
|
79
|
-
this.state.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
this.emit('inputChanged', this.state.userInput, this.state.cursorPosition);
|
|
94
|
-
});
|
|
76
|
+
handlePaste(content) {
|
|
77
|
+
if (this.isDisposed)
|
|
78
|
+
return;
|
|
79
|
+
const lines = content.split('\n');
|
|
80
|
+
const lineCount = lines.length;
|
|
81
|
+
const charCount = content.length;
|
|
82
|
+
// Track paste metrics
|
|
83
|
+
this.pasteStartTime = Date.now();
|
|
84
|
+
this.pasteLineCount = lineCount;
|
|
85
|
+
// For large pastes, show summary instead of full content
|
|
86
|
+
if (lineCount > this.maxPasteLines || charCount > 2000) {
|
|
87
|
+
this.isPastedBlock = true;
|
|
88
|
+
this.pastedFullContent = content;
|
|
89
|
+
// Create summary for display
|
|
90
|
+
const summaryLines = lines.slice(0, 5); // Show first 5 lines
|
|
91
|
+
const remainingLines = lineCount - 5;
|
|
92
|
+
const summary = summaryLines.join('\n') +
|
|
93
|
+
(remainingLines > 0 ? `\n... (${remainingLines} more lines)` : '');
|
|
94
|
+
this.inputBuffer = summary;
|
|
95
|
+
this.cursorPosition = summary.length;
|
|
96
|
+
this.state.currentInput = summary;
|
|
97
|
+
// Show paste status
|
|
98
|
+
this.setStatusMessage(`📋 Pasted ${lineCount} lines, ${charCount} chars - hit Enter to submit`);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// Small paste - handle normally
|
|
102
|
+
this.isPastedBlock = false;
|
|
103
|
+
this.pastedFullContent = '';
|
|
104
|
+
this.inputBuffer = content;
|
|
105
|
+
this.cursorPosition = content.length;
|
|
106
|
+
this.state.currentInput = content;
|
|
107
|
+
}
|
|
108
|
+
this.scheduleRender();
|
|
95
109
|
}
|
|
96
110
|
/**
|
|
97
|
-
*
|
|
111
|
+
* Clear paste state
|
|
98
112
|
*/
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
113
|
+
clearPastedBlock() {
|
|
114
|
+
this.isPastedBlock = false;
|
|
115
|
+
this.pastedFullContent = '';
|
|
116
|
+
this.pasteStartTime = 0;
|
|
117
|
+
this.pasteLineCount = 0;
|
|
105
118
|
}
|
|
106
119
|
/**
|
|
107
|
-
*
|
|
120
|
+
* Handle character input with paste detection
|
|
108
121
|
*/
|
|
109
|
-
|
|
110
|
-
if (this.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
122
|
+
handleCharacter(char) {
|
|
123
|
+
if (this.isDisposed)
|
|
124
|
+
return;
|
|
125
|
+
// Check for rapid input that might indicate paste
|
|
126
|
+
const now = Date.now();
|
|
127
|
+
if (this.pasteStartTime > 0 && now - this.pasteStartTime < 100) {
|
|
128
|
+
// Rapid input detected - treat as paste continuation
|
|
129
|
+
this.inputBuffer = this.inputBuffer.slice(0, this.cursorPosition) +
|
|
130
|
+
char +
|
|
131
|
+
this.inputBuffer.slice(this.cursorPosition);
|
|
132
|
+
this.cursorPosition += char.length;
|
|
133
|
+
this.state.currentInput = this.inputBuffer;
|
|
134
|
+
this.scheduleRender();
|
|
135
|
+
return;
|
|
114
136
|
}
|
|
137
|
+
// Normal character input
|
|
138
|
+
this.inputBuffer = this.inputBuffer.slice(0, this.cursorPosition) +
|
|
139
|
+
char +
|
|
140
|
+
this.inputBuffer.slice(this.cursorPosition);
|
|
141
|
+
this.cursorPosition += char.length;
|
|
142
|
+
this.state.currentInput = this.inputBuffer;
|
|
143
|
+
// Clear any paste state for normal typing
|
|
144
|
+
this.clearPastedBlock();
|
|
145
|
+
this.scheduleRender();
|
|
115
146
|
}
|
|
116
147
|
/**
|
|
117
|
-
*
|
|
148
|
+
* Handle Enter key - only submit when explicitly pressed
|
|
118
149
|
*/
|
|
119
|
-
|
|
120
|
-
this.
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
150
|
+
handleEnter() {
|
|
151
|
+
if (this.isDisposed)
|
|
152
|
+
return null;
|
|
153
|
+
let input;
|
|
154
|
+
// If we have a pasted block, use the full content
|
|
155
|
+
if (this.isPastedBlock && this.pastedFullContent) {
|
|
156
|
+
input = this.sanitizeCommandText(this.pastedFullContent);
|
|
124
157
|
}
|
|
125
158
|
else {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
159
|
+
input = this.sanitizeCommandText(this.inputBuffer);
|
|
160
|
+
}
|
|
161
|
+
if (!input)
|
|
162
|
+
return null;
|
|
163
|
+
// Add to history before processing
|
|
164
|
+
const historyEntry = this.isPastedBlock
|
|
165
|
+
? `[Pasted ${this.pasteLineCount} lines] ${input.slice(0, 100)}...`
|
|
166
|
+
: input;
|
|
167
|
+
this.addToHistory(historyEntry);
|
|
168
|
+
// If processing/streaming, queue the command
|
|
169
|
+
if (this.state.isProcessing || this.isStreaming) {
|
|
170
|
+
const type = input.startsWith('/') ? 'slash' : 'request';
|
|
171
|
+
const queued = this.queueCommand(input, type);
|
|
172
|
+
if (!queued) {
|
|
173
|
+
this.setStatusMessage(`Queue is full (${this.maxQueueSize}). Submit after current task or clear queued items.`);
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
this.clearInput();
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
// Clear input and paste state, then notify
|
|
180
|
+
this.clearInput();
|
|
181
|
+
if (this.onInputSubmit) {
|
|
182
|
+
this.onInputSubmit(input);
|
|
129
183
|
}
|
|
130
|
-
|
|
184
|
+
return input;
|
|
131
185
|
}
|
|
132
186
|
/**
|
|
133
|
-
*
|
|
187
|
+
* Enhanced render method that works during streaming
|
|
134
188
|
*/
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
189
|
+
render() {
|
|
190
|
+
if (!this.state.isVisible || !this.supportsRendering())
|
|
191
|
+
return;
|
|
192
|
+
// ALWAYS render - even during processing/streaming
|
|
193
|
+
this.lastRenderTime = Date.now();
|
|
194
|
+
try {
|
|
195
|
+
const cols = Math.max(this.writeStream.columns || 80, 40);
|
|
196
|
+
const separatorWidth = Math.min(cols - 2, 72);
|
|
197
|
+
// Build status message
|
|
198
|
+
const statusParts = [];
|
|
199
|
+
// Show streaming status if active
|
|
200
|
+
if (this.isStreaming) {
|
|
201
|
+
statusParts.push(theme.ui.info('🔄 AI is streaming...'));
|
|
202
|
+
}
|
|
203
|
+
// Processing status
|
|
204
|
+
if (this.state.statusMessage) {
|
|
205
|
+
const maxLen = Math.max(20, cols - 30);
|
|
206
|
+
const msg = this.state.statusMessage.length > maxLen
|
|
207
|
+
? `${this.state.statusMessage.slice(0, maxLen - 3)}...`
|
|
208
|
+
: this.state.statusMessage;
|
|
209
|
+
statusParts.push(theme.ui.muted(msg));
|
|
210
|
+
}
|
|
211
|
+
// Queue status
|
|
212
|
+
if (this.state.queuedCommands.length > 0) {
|
|
213
|
+
statusParts.push(theme.ui.warning(`📋 ${this.state.queuedCommands.length} queued`));
|
|
214
|
+
}
|
|
215
|
+
const statusLine = statusParts.join(' │ ');
|
|
216
|
+
const separator = theme.ui.border('─'.repeat(separatorWidth));
|
|
217
|
+
// Write the persistent chat box
|
|
218
|
+
this.safeWrite(`\r${ANSI.CLEAR_LINE}${separator}\n`);
|
|
219
|
+
this.safeWrite(`${ANSI.CLEAR_LINE}${statusLine}\n`);
|
|
220
|
+
// Show input line with cursor
|
|
221
|
+
const displayInput = this.state.currentInput || '';
|
|
222
|
+
const prompt = theme.ui.muted('> ');
|
|
223
|
+
this.safeWrite(`${ANSI.CLEAR_LINE}${prompt}${displayInput}`);
|
|
224
|
+
// Position cursor if needed
|
|
225
|
+
if (this.cursorPosition >= 0) {
|
|
226
|
+
const cursorPos = prompt.length + this.cursorPosition;
|
|
227
|
+
this.safeWrite(`\r${ANSI.CURSOR_FORWARD(cursorPos)}`);
|
|
228
|
+
}
|
|
229
|
+
this._lastRenderedHeight = 3;
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
// Silently handle render errors
|
|
146
233
|
}
|
|
147
|
-
this.emit('messageQueued', message);
|
|
148
|
-
this.showQueuedIndicator();
|
|
149
234
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
235
|
+
// ... (other methods remain largely the same as PinnedChatBox)
|
|
236
|
+
supportsRendering() {
|
|
237
|
+
return this.isEnabled &&
|
|
238
|
+
!this.isDisposed &&
|
|
239
|
+
this.writeStream.writable &&
|
|
240
|
+
this.writeStream.isTTY;
|
|
241
|
+
}
|
|
242
|
+
safeWrite(content) {
|
|
243
|
+
try {
|
|
244
|
+
if (this.writeStream.writable) {
|
|
245
|
+
this.writeStream.write(content);
|
|
158
246
|
}
|
|
159
247
|
}
|
|
160
|
-
|
|
248
|
+
catch {
|
|
249
|
+
// Swallow write errors (e.g., stream closed) to avoid crashing the app
|
|
250
|
+
}
|
|
161
251
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
id: Date.now().toString(),
|
|
168
|
-
content: input,
|
|
169
|
-
timestamp: new Date(),
|
|
170
|
-
type: 'user',
|
|
171
|
-
};
|
|
172
|
-
this.emit('message', message);
|
|
252
|
+
sanitizeCommandText(text) {
|
|
253
|
+
return text
|
|
254
|
+
.replace(this.ansiPattern, '')
|
|
255
|
+
.replace(this.oscPattern, '')
|
|
256
|
+
.trim();
|
|
173
257
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
timestamp: new Date(),
|
|
182
|
-
type: 'ai',
|
|
183
|
-
};
|
|
184
|
-
this.emit('aiResponse', message);
|
|
258
|
+
sanitizeStatusMessage(message) {
|
|
259
|
+
if (!message)
|
|
260
|
+
return null;
|
|
261
|
+
return message
|
|
262
|
+
.replace(this.ansiPattern, '')
|
|
263
|
+
.replace(this.oscPattern, '')
|
|
264
|
+
.slice(0, this.maxStatusMessageLength);
|
|
185
265
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
*/
|
|
189
|
-
redrawPrompt() {
|
|
190
|
-
if (!this.state.isVisible)
|
|
266
|
+
addToHistory(entry) {
|
|
267
|
+
if (!entry.trim())
|
|
191
268
|
return;
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
if (
|
|
195
|
-
|
|
196
|
-
promptLine = `${theme.colors.cyan}⏳ AI is processing...${theme.colors.reset} `;
|
|
197
|
-
if (this.state.queuedMessages.length > 0) {
|
|
198
|
-
promptLine += `${theme.colors.yellow}[${this.state.queuedMessages.length} queued]${theme.colors.reset}`;
|
|
199
|
-
}
|
|
269
|
+
// Avoid duplicates
|
|
270
|
+
const existingIndex = this.inputHistory.indexOf(entry);
|
|
271
|
+
if (existingIndex >= 0) {
|
|
272
|
+
this.inputHistory.splice(existingIndex, 1);
|
|
200
273
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
promptLine += `${theme.colors.yellow}[${this.state.queuedMessages.length} queued]${theme.colors.reset} `;
|
|
206
|
-
}
|
|
274
|
+
this.inputHistory.push(entry);
|
|
275
|
+
// Trim history if needed
|
|
276
|
+
if (this.inputHistory.length > this.maxHistorySize) {
|
|
277
|
+
this.inputHistory = this.inputHistory.slice(-this.maxHistorySize);
|
|
207
278
|
}
|
|
208
|
-
this.writeStream.write(`\n${promptLine}`);
|
|
209
|
-
// Set readline prompt to maintain cursor position
|
|
210
|
-
this.readlineInterface.setPrompt(promptLine);
|
|
211
|
-
this.readlineInterface.prompt(true);
|
|
212
279
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
280
|
+
setEnabled(enabled) {
|
|
281
|
+
if (this.isDisposed)
|
|
282
|
+
return;
|
|
283
|
+
if (!enabled && this.isEnabled) {
|
|
284
|
+
this.clear();
|
|
285
|
+
}
|
|
286
|
+
this.isEnabled = enabled;
|
|
287
|
+
if (enabled) {
|
|
288
|
+
this.scheduleRender();
|
|
289
|
+
}
|
|
219
290
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
this.
|
|
291
|
+
setProcessing(isProcessing) {
|
|
292
|
+
if (this.isDisposed)
|
|
293
|
+
return;
|
|
294
|
+
this.state.isProcessing = isProcessing;
|
|
295
|
+
this.scheduleRender();
|
|
225
296
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
this.
|
|
297
|
+
setContextUsage(percentage) {
|
|
298
|
+
if (this.isDisposed)
|
|
299
|
+
return;
|
|
300
|
+
const value = Number.isFinite(percentage) ? percentage : 0;
|
|
301
|
+
this.state.contextUsage = Math.max(0, Math.min(100, value));
|
|
231
302
|
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
303
|
+
setStatusMessage(message) {
|
|
304
|
+
if (this.isDisposed)
|
|
305
|
+
return;
|
|
306
|
+
this.state.statusMessage = this.sanitizeStatusMessage(message);
|
|
307
|
+
this.scheduleRender();
|
|
237
308
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
309
|
+
queueCommand(text, type = 'request') {
|
|
310
|
+
if (this.isDisposed)
|
|
311
|
+
return null;
|
|
312
|
+
// Validate input
|
|
313
|
+
if (typeof text !== 'string')
|
|
314
|
+
return null;
|
|
315
|
+
const sanitizedText = this.sanitizeCommandText(text);
|
|
316
|
+
if (!sanitizedText)
|
|
317
|
+
return null;
|
|
318
|
+
// Check queue size limit
|
|
319
|
+
if (this.state.queuedCommands.length >= this.maxQueueSize) {
|
|
320
|
+
// Remove oldest non-slash commands to make room
|
|
321
|
+
const idx = this.state.queuedCommands.findIndex(c => c.type !== 'slash');
|
|
322
|
+
if (idx >= 0) {
|
|
323
|
+
this.state.queuedCommands.splice(idx, 1);
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
// Queue is full of slash commands, reject
|
|
327
|
+
return null;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
// Sanitize and truncate command text
|
|
331
|
+
const truncated = sanitizedText.slice(0, this.maxInputLength);
|
|
332
|
+
const preview = truncated.length > 60 ? `${truncated.slice(0, 57)}...` : truncated;
|
|
333
|
+
const cmd = {
|
|
334
|
+
id: `cmd-${++this.commandIdCounter}`,
|
|
335
|
+
text: truncated,
|
|
336
|
+
type,
|
|
337
|
+
timestamp: Date.now(),
|
|
338
|
+
preview,
|
|
339
|
+
};
|
|
340
|
+
this.state.queuedCommands.push(cmd);
|
|
341
|
+
this.scheduleRender();
|
|
342
|
+
if (this.onCommandQueued) {
|
|
343
|
+
this.onCommandQueued(cmd);
|
|
344
|
+
}
|
|
345
|
+
return cmd;
|
|
243
346
|
}
|
|
244
|
-
/**
|
|
245
|
-
* Clear all queued messages
|
|
246
|
-
*/
|
|
247
347
|
clearQueue() {
|
|
248
|
-
this.
|
|
249
|
-
|
|
250
|
-
this.
|
|
348
|
+
if (this.isDisposed)
|
|
349
|
+
return;
|
|
350
|
+
this.state.queuedCommands = [];
|
|
351
|
+
this.scheduleRender();
|
|
251
352
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
this.
|
|
257
|
-
this.
|
|
353
|
+
clearInput() {
|
|
354
|
+
if (this.isDisposed)
|
|
355
|
+
return;
|
|
356
|
+
this.inputBuffer = '';
|
|
357
|
+
this.cursorPosition = 0;
|
|
358
|
+
this.state.currentInput = '';
|
|
359
|
+
// Reset history navigation
|
|
360
|
+
this.historyIndex = -1;
|
|
361
|
+
this.tempCurrentInput = '';
|
|
362
|
+
// Clear paste state
|
|
363
|
+
this.clearPastedBlock();
|
|
364
|
+
this.scheduleRender();
|
|
258
365
|
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
this.
|
|
264
|
-
|
|
366
|
+
clear() {
|
|
367
|
+
if (!this.supportsRendering())
|
|
368
|
+
return;
|
|
369
|
+
// If we rendered a multi-line box, move up and clear it
|
|
370
|
+
if (this._lastRenderedHeight > 1) {
|
|
371
|
+
this.safeWrite(ANSI.MOVE_UP(this._lastRenderedHeight - 1));
|
|
372
|
+
}
|
|
373
|
+
this.safeWrite(`\r${ANSI.CLEAR_TO_END}`);
|
|
374
|
+
this._lastRenderedHeight = 0;
|
|
375
|
+
}
|
|
376
|
+
scheduleRender() {
|
|
377
|
+
if (this.isDisposed || this.renderScheduled)
|
|
378
|
+
return;
|
|
379
|
+
const now = Date.now();
|
|
380
|
+
const timeSinceLastRender = now - this.lastRenderTime;
|
|
381
|
+
if (timeSinceLastRender < this.renderThrottleMs) {
|
|
382
|
+
this.renderScheduled = ;
|
|
383
|
+
}
|
|
265
384
|
}
|
|
266
385
|
}
|
|
267
386
|
//# sourceMappingURL=persistentChatBox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistentChatBox.js","sourceRoot":"","sources":["../../src/ui/persistentChatBox.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"persistentChatBox.js","sourceRoot":"","sources":["../../src/ui/persistentChatBox.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "erosolar-cli",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.108",
|
|
4
4
|
"description": "Unified AI agent framework for the command line - Multi-provider support with schema-driven tools, code intelligence, and transparent reasoning",
|
|
5
5
|
"main": "dist/bin/erosolar.js",
|
|
6
6
|
"type": "module",
|