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.
@@ -1,7 +1,7 @@
1
- import { readFileSync, writeFileSync, existsSync } from 'node:fs';
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 { buildDiffSegments, formatDiffLines } from './diffUtils.js';
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
- if (!existsSync(filePath)) {
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 = readFileSync(filePath, 'utf-8');
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
- return `Error: old_string not found in file. The exact text must match including all whitespace and indentation.\n\nFile: ${filePath}\nSearching for: ${JSON.stringify(oldString.substring(0, 100))}...`;
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 = buildDiffSegments(currentContent, newContent);
89
- // Write file
90
- writeFileSync(filePath, newContent, 'utf-8');
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":"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"}
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":"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"}
1
+ {"version":3,"file":"persistentChatBox.d.ts","sourceRoot":"","sources":["../../src/ui/persistentChatBox.ts"],"names":[],"mappings":"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"}