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.
@@ -1,267 +1,386 @@
1
1
  /**
2
- * PersistentChatBox - Maintains a chat input at the bottom while AI is streaming
2
+ * PersistentChatBox - Enhanced version of PinnedChatBox that remains visible during AI streaming
3
3
  *
4
- * Features:
5
- * - Always visible chat input at bottom of terminal
6
- * - Non-blocking input while AI is processing
7
- * - Queue system for handling multiple user inputs
8
- * - Visual separation between AI output and user input
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
- export class PersistentChatBox extends EventEmitter {
11
+ import { ANSI } from './ansi.js';
12
+ export class PersistentChatBox {
14
13
  writeStream;
15
- readlineInterface;
16
- config;
17
14
  state;
18
- isInitialized = false;
19
- outputBuffer = [];
20
- lastOutputHeight = 0;
21
- constructor(writeStream, config = {}) {
22
- super();
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.config = {
25
- promptText: '> ',
26
- maxHistory: 100,
27
- enableAutoScroll: true,
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
- userInput: '',
35
- cursorPosition: 0,
36
- queuedMessages: [],
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
- * Initialize the chat box (call after setting up main UI)
65
+ * Set streaming state - controls whether chat box remains visible during AI streaming
48
66
  */
49
- initialize() {
50
- if (this.isInitialized)
67
+ setStreaming(isStreaming) {
68
+ if (this.isDisposed)
51
69
  return;
52
- this.isInitialized = true;
53
- this.show();
54
- this.emit('initialized');
70
+ this.isStreaming = isStreaming;
71
+ this.scheduleRender();
55
72
  }
56
73
  /**
57
- * Setup event handlers for readline
74
+ * Enhanced paste detection - detects large pastes and provides summary
58
75
  */
59
- setupEventHandlers() {
60
- // Handle user input
61
- this.readlineInterface.on('line', (input) => {
62
- if (this.state.isProcessing) {
63
- // Queue the input if AI is processing
64
- this.queueMessage(input);
65
- }
66
- else {
67
- // Process immediately if AI is idle
68
- this.processUserInput(input);
69
- }
70
- });
71
- // Handle SIGINT (Ctrl+C)
72
- this.readlineInterface.on('SIGINT', () => {
73
- this.emit('interrupt');
74
- });
75
- // Handle line events for real-time input tracking
76
- this.readlineInterface.on('line', () => {
77
- // Reset input state after submission
78
- this.state.userInput = '';
79
- this.state.cursorPosition = 0;
80
- });
81
- // Track input changes
82
- process.stdin.on('keypress', (str, key) => {
83
- if (key && key.name === 'backspace') {
84
- if (this.state.userInput.length > 0) {
85
- this.state.userInput = this.state.userInput.slice(0, -1);
86
- this.state.cursorPosition = Math.max(0, this.state.cursorPosition - 1);
87
- }
88
- }
89
- else if (str && str.length === 1) {
90
- this.state.userInput += str;
91
- this.state.cursorPosition++;
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
- * Show the chat box
111
+ * Clear paste state
98
112
  */
99
- show() {
100
- if (!this.state.isVisible) {
101
- this.state.isVisible = true;
102
- this.redrawPrompt();
103
- this.emit('visibilityChanged', true);
104
- }
113
+ clearPastedBlock() {
114
+ this.isPastedBlock = false;
115
+ this.pastedFullContent = '';
116
+ this.pasteStartTime = 0;
117
+ this.pasteLineCount = 0;
105
118
  }
106
119
  /**
107
- * Hide the chat box
120
+ * Handle character input with paste detection
108
121
  */
109
- hide() {
110
- if (this.state.isVisible) {
111
- this.state.isVisible = false;
112
- this.clearPrompt();
113
- this.emit('visibilityChanged', false);
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
- * Set processing state (when AI is streaming)
148
+ * Handle Enter key - only submit when explicitly pressed
118
149
  */
119
- setProcessing(isProcessing) {
120
- this.state.isProcessing = isProcessing;
121
- if (isProcessing) {
122
- // Show processing indicator
123
- this.redrawPrompt();
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
- // Process any queued messages
127
- this.processQueuedMessages();
128
- this.redrawPrompt();
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
- this.emit('processingStateChanged', isProcessing);
184
+ return input;
131
185
  }
132
186
  /**
133
- * Queue a user message for later processing
187
+ * Enhanced render method that works during streaming
134
188
  */
135
- queueMessage(input) {
136
- const message = {
137
- id: Date.now().toString(),
138
- content: input,
139
- timestamp: new Date(),
140
- type: 'user',
141
- };
142
- this.state.queuedMessages.push(message);
143
- // Limit history size
144
- if (this.state.queuedMessages.length > this.config.maxHistory) {
145
- this.state.queuedMessages.shift();
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
- * Process queued messages when AI becomes available
152
- */
153
- processQueuedMessages() {
154
- while (this.state.queuedMessages.length > 0 && !this.state.isProcessing) {
155
- const message = this.state.queuedMessages.shift();
156
- if (message) {
157
- this.emit('message', message);
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
- this.hideQueuedIndicator();
248
+ catch {
249
+ // Swallow write errors (e.g., stream closed) to avoid crashing the app
250
+ }
161
251
  }
162
- /**
163
- * Process immediate user input
164
- */
165
- processUserInput(input) {
166
- const message = {
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
- * Add AI response to chat
176
- */
177
- addAIResponse(content) {
178
- const message = {
179
- id: Date.now().toString(),
180
- content,
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
- * Redraw the prompt with current state
188
- */
189
- redrawPrompt() {
190
- if (!this.state.isVisible)
266
+ addToHistory(entry) {
267
+ if (!entry.trim())
191
268
  return;
192
- this.clearPrompt();
193
- let promptLine = '';
194
- if (this.state.isProcessing) {
195
- // Show processing indicator
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
- else {
202
- // Show normal prompt
203
- promptLine = `${this.config.promptText}`;
204
- if (this.state.queuedMessages.length > 0) {
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
- * Clear the prompt area
215
- */
216
- clearPrompt() {
217
- // Move cursor up and clear line
218
- this.writeStream.write('\x1b[1A\x1b[2K');
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
- * Show queued messages indicator
222
- */
223
- showQueuedIndicator() {
224
- this.redrawPrompt();
291
+ setProcessing(isProcessing) {
292
+ if (this.isDisposed)
293
+ return;
294
+ this.state.isProcessing = isProcessing;
295
+ this.scheduleRender();
225
296
  }
226
- /**
227
- * Hide queued messages indicator
228
- */
229
- hideQueuedIndicator() {
230
- this.redrawPrompt();
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
- * Get current state
234
- */
235
- getState() {
236
- return { ...this.state };
303
+ setStatusMessage(message) {
304
+ if (this.isDisposed)
305
+ return;
306
+ this.state.statusMessage = this.sanitizeStatusMessage(message);
307
+ this.scheduleRender();
237
308
  }
238
- /**
239
- * Get queued message count
240
- */
241
- getQueuedCount() {
242
- return this.state.queuedMessages.length;
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.state.queuedMessages = [];
249
- this.redrawPrompt();
250
- this.emit('queueCleared');
348
+ if (this.isDisposed)
349
+ return;
350
+ this.state.queuedCommands = [];
351
+ this.scheduleRender();
251
352
  }
252
- /**
253
- * Set prompt text
254
- */
255
- setPromptText(text) {
256
- this.config.promptText = text;
257
- this.redrawPrompt();
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
- * Cleanup resources
261
- */
262
- destroy() {
263
- this.readlineInterface.close();
264
- this.removeAllListeners();
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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAyBnC,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACzC,WAAW,CAAqB;IAChC,iBAAiB,CAAqB;IACtC,MAAM,CAA0B;IAChC,KAAK,CAAe;IACpB,aAAa,GAAY,KAAK,CAAC;IAC/B,YAAY,GAAa,EAAE,CAAC;IAC5B,gBAAgB,GAAW,CAAC,CAAC;IAErC,YACE,WAA+B,EAC/B,SAAwB,EAAE;QAE1B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,GAAG;YACf,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,KAAK;YACrB,GAAG,MAAM;SACV,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG;YACX,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,EAAE;YACb,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,EAAE;SACnB,CAAC;QAEF,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,eAAe,CAAC;YAChD,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO;QAE/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,oBAAoB;QACpB,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC5B,sCAAsC;gBACtC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,oCAAoC;gBACpC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACvC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,kDAAkD;QAClD,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACrC,qCAAqC;YACrC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACxC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACpC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACzD,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,YAAqB;QACjC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;QAEvC,IAAI,YAAY,EAAE,CAAC;YACjB,4BAA4B;YAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,8BAA8B;YAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,KAAa;QAChC,MAAM,OAAO,GAAgB;YAC3B,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACzB,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,IAAI,EAAE,MAAM;SACb,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAExC,qBAAqB;QACrB,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,qBAAqB;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YACxE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAClD,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAa;QACpC,MAAM,OAAO,GAAgB;YAC3B,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACzB,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,IAAI,EAAE,MAAM;SACb,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAe;QAC3B,MAAM,OAAO,GAAgB;YAC3B,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACzB,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,IAAI,EAAE,IAAI;SACX,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE,OAAO;QAElC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAC5B,4BAA4B;YAC5B,UAAU,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,wBAAwB,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC;YAE/E,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzC,UAAU,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,WAAW,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1G,CAAC;QACH,CAAC;aAAM,CAAC;YACN,qBAAqB;YACrB,UAAU,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAEzC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzC,UAAU,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,WAAW,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC;YAC3G,CAAC;QACH,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC;QAE1C,kDAAkD;QAClD,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,gCAAgC;QAChC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,IAAY;QACxB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;CACF"}
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.106",
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",