erosolar-cli 1.7.145 → 1.7.147

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 +1 @@
1
- {"version":3,"file":"editTools.d.ts","sourceRoot":"","sources":["../../src/tools/editTools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAK7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CAuKpE"}
1
+ {"version":3,"file":"editTools.d.ts","sourceRoot":"","sources":["../../src/tools/editTools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAuG7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CA6MpE"}
@@ -1,8 +1,93 @@
1
- import { readFile, writeFile, stat, mkdir } from 'node:fs/promises';
2
- import { join, relative, dirname } from 'node:path';
1
+ import { readFile, writeFile, stat, mkdir, copyFile } from 'node:fs/promises';
2
+ import { join, relative, dirname, basename } from 'node:path';
3
3
  import { buildError } from '../core/errors.js';
4
4
  import { buildDiffSegmentsFast, formatDiffLines } from './diffUtils.js';
5
5
  import { theme } from '../ui/theme.js';
6
+ /**
7
+ * Safety thresholds for edit operations.
8
+ * These prevent accidental destructive edits from corrupting files.
9
+ */
10
+ const EDIT_SAFETY = {
11
+ /** Max lines that can be removed in a single edit without warning */
12
+ MAX_REMOVED_LINES_WARN: 50,
13
+ /** Max percentage of file that can be removed in a single edit */
14
+ MAX_REMOVAL_PERCENTAGE: 30,
15
+ /** Create backup if removing more than this many lines */
16
+ BACKUP_THRESHOLD_LINES: 20,
17
+ /** Reject edits where old_string is more than this many times larger than new_string */
18
+ MAX_SIZE_RATIO: 15,
19
+ /** Minimum old_string size (chars) to trigger size ratio check */
20
+ SIZE_RATIO_MIN_CHARS: 500,
21
+ };
22
+ /**
23
+ * Create a backup of a file before potentially destructive edit.
24
+ * Backups are stored in .erosolar/backups/ with timestamp.
25
+ */
26
+ async function createEditBackup(workingDir, filePath) {
27
+ try {
28
+ const backupDir = join(workingDir, '.erosolar', 'backups');
29
+ await mkdir(backupDir, { recursive: true });
30
+ const fileName = basename(filePath);
31
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
32
+ const backupPath = join(backupDir, `${fileName}.${timestamp}.bak`);
33
+ await copyFile(filePath, backupPath);
34
+ return backupPath;
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ }
40
+ /**
41
+ * Validate edit safety - check if the edit is potentially destructive.
42
+ * Returns rejection message if edit should be blocked, warning if concerning, null if safe.
43
+ */
44
+ function validateEditSafety(oldString, newString, totalFileLines, filePath) {
45
+ const oldLines = oldString.split('\n').length;
46
+ const newLines = newString.split('\n').length;
47
+ const removedLines = Math.max(0, oldLines - newLines);
48
+ const removalPercentage = totalFileLines > 0 ? (removedLines / totalFileLines) * 100 : 0;
49
+ let warning = null;
50
+ let shouldBackup = false;
51
+ // Check size ratio (old_string suspiciously larger than new_string)
52
+ // This catches cases where the LLM accidentally included too much content
53
+ if (oldString.length > EDIT_SAFETY.SIZE_RATIO_MIN_CHARS) {
54
+ const sizeRatio = oldString.length / Math.max(1, newString.length);
55
+ if (sizeRatio > EDIT_SAFETY.MAX_SIZE_RATIO) {
56
+ const rejection = [
57
+ `⚠ SUSPICIOUS EDIT REJECTED`,
58
+ ``,
59
+ `old_string: ${oldString.length} chars (${oldLines} lines)`,
60
+ `new_string: ${newString.length} chars (${newLines} lines)`,
61
+ `Size ratio: ${sizeRatio.toFixed(1)}x (max allowed: ${EDIT_SAFETY.MAX_SIZE_RATIO}x)`,
62
+ ``,
63
+ `This usually indicates an error - old_string contains more content than intended.`,
64
+ `The edit would remove ${removedLines} lines (${removalPercentage.toFixed(1)}% of file).`,
65
+ ``,
66
+ `To fix:`,
67
+ `1. Use a smaller, more targeted old_string`,
68
+ `2. Break the edit into multiple smaller changes`,
69
+ `3. Only include the specific lines you want to change`,
70
+ ``,
71
+ `File: ${filePath}`,
72
+ ].join('\n');
73
+ return { rejection, warning: null, shouldBackup: true };
74
+ }
75
+ }
76
+ // Check if removing a significant portion of the file
77
+ if (removedLines > EDIT_SAFETY.MAX_REMOVED_LINES_WARN) {
78
+ warning = `⚠ Large edit: removing ${removedLines} lines (${removalPercentage.toFixed(1)}% of file)`;
79
+ shouldBackup = true;
80
+ }
81
+ else if (removalPercentage > EDIT_SAFETY.MAX_REMOVAL_PERCENTAGE && removedLines > 10) {
82
+ warning = `⚠ Large edit: removing ${removalPercentage.toFixed(1)}% of file (${removedLines} lines)`;
83
+ shouldBackup = true;
84
+ }
85
+ // Check if should create backup
86
+ if (removedLines > EDIT_SAFETY.BACKUP_THRESHOLD_LINES) {
87
+ shouldBackup = true;
88
+ }
89
+ return { rejection: null, warning, shouldBackup };
90
+ }
6
91
  /**
7
92
  * Creates the Edit tool for surgical file modifications using exact string replacement.
8
93
  *
@@ -66,14 +151,20 @@ export function createEditTools(workingDir) {
66
151
  }
67
152
  try {
68
153
  const filePath = resolveFilePath(workingDir, pathArg);
69
- // Check if file exists
154
+ // Check if file exists and is not a directory
70
155
  let fileExists = true;
156
+ let isDirectory = false;
71
157
  try {
72
- await stat(filePath);
158
+ const fileStat = await stat(filePath);
159
+ isDirectory = fileStat.isDirectory();
73
160
  }
74
161
  catch {
75
162
  fileExists = false;
76
163
  }
164
+ // Reject directory paths
165
+ if (isDirectory) {
166
+ return `Error: Cannot edit a directory: ${filePath}\n\nProvide a file path, not a directory path.`;
167
+ }
77
168
  // Handle file creation when old_string is empty and file doesn't exist
78
169
  if (!fileExists) {
79
170
  if (oldString !== '') {
@@ -130,6 +221,18 @@ export function createEditTools(workingDir) {
130
221
  if (!replaceAll && occurrences > 1) {
131
222
  return `Error: old_string appears ${occurrences} times in the file. Either:\n1. Provide a larger unique string that includes more context\n2. Set replace_all: true to replace all ${occurrences} occurrences\n\nFile: ${filePath}`;
132
223
  }
224
+ // Validate edit safety - prevent accidentally destructive edits
225
+ const totalFileLines = currentContent.split('\n').length;
226
+ const safety = validateEditSafety(matchedOldString, newString, totalFileLines, filePath);
227
+ // Reject suspicious edits (e.g., old_string is 15x larger than new_string)
228
+ if (safety.rejection) {
229
+ return safety.rejection;
230
+ }
231
+ // Create backup if this is a risky edit
232
+ let backupPath = null;
233
+ if (safety.shouldBackup) {
234
+ backupPath = await createEditBackup(workingDir, filePath);
235
+ }
133
236
  // Perform replacement using the matched string (may be auto-corrected)
134
237
  const newContent = replaceAll
135
238
  ? currentContent.split(matchedOldString).join(newString)
@@ -151,13 +254,24 @@ export function createEditTools(workingDir) {
151
254
  // Colorize the change summary: green for additions, red for removals
152
255
  const addedText = theme.diff.added(`+${addedLines}`);
153
256
  const removedText = theme.diff.removed(`-${removedLines}`);
154
- return [
155
- `✓ Edited ${displayPath}${occurrencesText}`,
156
- `Lines changed: ${addedText} / ${removedText}`,
157
- '',
158
- 'Diff preview:',
159
- diffBlock,
160
- ].join('\n');
257
+ // Build result message with optional warning and backup info
258
+ const resultParts = [];
259
+ // Add warning if present
260
+ if (safety.warning) {
261
+ resultParts.push(safety.warning);
262
+ resultParts.push('');
263
+ }
264
+ resultParts.push(`✓ Edited ${displayPath}${occurrencesText}`);
265
+ resultParts.push(`Lines changed: ${addedText} / ${removedText}`);
266
+ // Add backup info if created
267
+ if (backupPath) {
268
+ const relBackup = relative(workingDir, backupPath);
269
+ resultParts.push(`Backup: ${relBackup}`);
270
+ }
271
+ resultParts.push('');
272
+ resultParts.push('Diff preview:');
273
+ resultParts.push(diffBlock);
274
+ return resultParts.join('\n');
161
275
  }
162
276
  catch (error) {
163
277
  return buildError('editing file', error, {
@@ -237,6 +351,19 @@ function tryAutoCorrectMatch(content, oldString) {
237
351
  }
238
352
  }
239
353
  }
354
+ // Strategy 7: Single-line exact trimmed match
355
+ // Find a line in the file that matches when trimmed (handles tabs/spaces/indentation differences)
356
+ if (!oldString.includes('\n')) {
357
+ const searchTrimmed = oldString.trim();
358
+ if (searchTrimmed) {
359
+ const contentLines = content.split('\n');
360
+ for (const line of contentLines) {
361
+ if (line.trim() === searchTrimmed) {
362
+ return line;
363
+ }
364
+ }
365
+ }
366
+ }
240
367
  return null;
241
368
  }
242
369
  /**
@@ -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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"}
@@ -352,6 +352,11 @@ export declare class PinnedChatBox {
352
352
  handleInput(char: string): void;
353
353
  /**
354
354
  * Handle multiline paste - show full content for small pastes, summary for large ones
355
+ * CRITICAL: Must work correctly in all circumstances:
356
+ * - During streaming (scroll region active)
357
+ * - During idle (normal readline mode)
358
+ * - Small pastes (≤5 lines AND ≤300 chars) - show full content
359
+ * - Large pastes - show condensed summary
355
360
  */
356
361
  private handleMultilinePaste;
357
362
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"persistentPrompt.d.ts","sourceRoot":"","sources":["../../src/ui/persistentPrompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistentPrompt.d.ts","sourceRoot":"","sources":["../../src/ui/persistentPrompt.ts"],"names":[],"mappings":"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"}
@@ -354,8 +354,8 @@ export class PinnedChatBox {
354
354
  const rows = this.writeStream.rows || 24;
355
355
  const cols = Math.max(this.writeStream.columns || 80, 40);
356
356
  const borderWidth = cols - 2;
357
- // Move to the reserved bottom area (4 lines: top border + input + bottom border + status)
358
- this.safeWrite(ANSI.CURSOR_TO_BOTTOM(rows - 3));
357
+ // Calculate starting row (4 lines: top border + input + bottom border + status)
358
+ let currentRow = rows - 3;
359
359
  // Build status line
360
360
  const queueCount = this.state.queuedCommands.length;
361
361
  let statusText = '';
@@ -364,21 +364,25 @@ export class PinnedChatBox {
364
364
  const queuePart = queueCount > 0 ? ` +${queueCount}` : '';
365
365
  statusText = `${icon}${queuePart} [Enter: queue]`;
366
366
  }
367
+ // Use absolute row positioning to prevent scroll history leakage
367
368
  // Top border with status on right
368
369
  const statusSuffix = statusText ? ` ${statusText}` : '';
369
370
  const topBorderWidth = Math.max(10, borderWidth - statusSuffix.length);
370
- this.safeWrite(ANSI.CLEAR_LINE);
371
+ this.safeWrite(`\u001b[${currentRow};1H${ANSI.CLEAR_LINE}`);
371
372
  this.safeWrite(theme.ui.border('─'.repeat(topBorderWidth)) + theme.ui.muted(statusSuffix));
373
+ currentRow++;
372
374
  // Input line with prompt
373
- this.safeWrite(`\n${ANSI.CLEAR_LINE}`);
375
+ this.safeWrite(`\u001b[${currentRow};1H${ANSI.CLEAR_LINE}`);
374
376
  this.safeWrite(theme.ui.muted('> '));
377
+ currentRow++;
375
378
  // Bottom border
376
- this.safeWrite(`\n${ANSI.CLEAR_LINE}`);
379
+ this.safeWrite(`\u001b[${currentRow};1H${ANSI.CLEAR_LINE}`);
377
380
  this.safeWrite(theme.ui.border('─'.repeat(borderWidth)));
381
+ currentRow++;
378
382
  // Status line (context + time)
379
383
  const contextTimeLine = this.buildContextTimeStatus(cols);
380
384
  if (contextTimeLine) {
381
- this.safeWrite(`\n${ANSI.CLEAR_LINE}`);
385
+ this.safeWrite(`\u001b[${currentRow};1H${ANSI.CLEAR_LINE}`);
382
386
  this.safeWrite(contextTimeLine);
383
387
  }
384
388
  }
@@ -463,18 +467,25 @@ export class PinnedChatBox {
463
467
  renderPersistentInput() {
464
468
  if (!this.supportsRendering())
465
469
  return;
470
+ // IMPORTANT: Only render when scroll region is active
471
+ // This prevents the chat box from leaking into the scroll history
472
+ if (!this.scrollRegionActive)
473
+ return;
466
474
  const rows = this.writeStream.rows || 24;
467
475
  const cols = Math.max(this.writeStream.columns || 80, 40);
468
476
  const borderWidth = cols - 2;
469
477
  // Calculate dynamic height based on input content
470
478
  const inputLines = this.calculateInputLines(cols);
471
479
  const totalHeight = inputLines + 3; // top border + input + bottom border + status line
480
+ // Calculate starting row for the chat box (reserved area at bottom)
481
+ const startRow = rows - totalHeight + 1;
482
+ let currentRow = startRow;
472
483
  // Build the entire output as a single string for atomic write
473
484
  const output = [];
474
- // Save cursor position (DEC sequence for compatibility with scroll regions)
475
- output.push('\u001b7'); // DECSC
476
- // Move to the reserved bottom area (outside scroll region)
477
- output.push(ANSI.CURSOR_TO_BOTTOM(rows - totalHeight + 1));
485
+ // CRITICAL: Use absolute row positioning instead of newlines (\n).
486
+ // Newlines cause content to be added to the terminal's scroll buffer,
487
+ // which makes the chat box appear multiple times when scrolling back.
488
+ // With absolute positioning, we overwrite the same rows in place.
478
489
  // Build status indicators for top border
479
490
  const queueCount = this.state.queuedCommands.length;
480
491
  let statusText = '';
@@ -490,25 +501,25 @@ export class PinnedChatBox {
490
501
  const statusSuffix = statusText ? ` ${statusText}` : '';
491
502
  const topBorderWidth = Math.max(10, borderWidth - statusSuffix.length);
492
503
  const topBorder = theme.ui.border('─'.repeat(topBorderWidth)) + theme.ui.muted(statusSuffix);
493
- output.push(ANSI.CLEAR_LINE);
494
- output.push(topBorder);
504
+ output.push(`\u001b[${currentRow};1H${ANSI.CLEAR_LINE}${topBorder}`);
505
+ currentRow++;
495
506
  // Input lines
496
507
  const currentInput = this.inputBuffer;
497
508
  const contentWidth = cols - 4;
498
509
  if (!currentInput) {
499
510
  // Empty input - show just the prompt
500
- output.push(`\n${ANSI.CLEAR_LINE}`);
501
- output.push(theme.ui.muted('> '));
511
+ output.push(`\u001b[${currentRow};1H${ANSI.CLEAR_LINE}${theme.ui.muted('> ')}`);
502
512
  // Visual cursor at prompt position
503
513
  if (this.showCursor) {
504
514
  output.push('\u001b[7m \u001b[27m'); // Inverted space for cursor
505
515
  }
516
+ currentRow++;
506
517
  }
507
518
  else {
508
519
  // Wrap input text into display lines
509
520
  const displayLines = this.wrapInputForDisplay(currentInput, contentWidth, inputLines);
510
521
  for (let i = 0; i < displayLines.length; i++) {
511
- output.push(`\n${ANSI.CLEAR_LINE}`);
522
+ output.push(`\u001b[${currentRow};1H${ANSI.CLEAR_LINE}`);
512
523
  const lineContent = displayLines[i] ?? '';
513
524
  const isFirstLine = i === 0;
514
525
  const prompt = isFirstLine ? theme.ui.muted('> ') : ' ';
@@ -528,6 +539,7 @@ export class PinnedChatBox {
528
539
  else {
529
540
  output.push(lineContent);
530
541
  }
542
+ currentRow++;
531
543
  }
532
544
  // Show truncation indicator if content exceeds max lines
533
545
  if (this.inputBuffer.split('\n').length > this.maxInputLines ||
@@ -539,16 +551,16 @@ export class PinnedChatBox {
539
551
  }
540
552
  }
541
553
  // Bottom border (full width)
542
- output.push(`\n${ANSI.CLEAR_LINE}`);
543
- output.push(theme.ui.border('─'.repeat(borderWidth)));
554
+ output.push(`\u001b[${currentRow};1H${ANSI.CLEAR_LINE}${theme.ui.border('─'.repeat(borderWidth))}`);
555
+ currentRow++;
544
556
  // Status line below: Context usage and session elapsed time
545
557
  const statusLine = this.buildContextTimeStatus(cols);
546
558
  if (statusLine) {
547
- output.push(`\n${ANSI.CLEAR_LINE}`);
548
- output.push(statusLine);
559
+ output.push(`\u001b[${currentRow};1H${ANSI.CLEAR_LINE}${statusLine}`);
549
560
  }
550
- // Restore cursor position (DEC sequence for compatibility with scroll regions)
551
- output.push('\u001b8'); // DECRC
561
+ // Move cursor back to the bottom of the scroll region
562
+ // This ensures subsequent streaming output appears in the correct place
563
+ output.push(`\u001b[${this.scrollRegionBottomRow};1H`);
552
564
  // Ensure terminal cursor stays hidden in the stream area
553
565
  // We show a visual cursor (inverted block) in the chat box instead
554
566
  output.push(ANSI.HIDE_CURSOR);
@@ -913,6 +925,11 @@ export class PinnedChatBox {
913
925
  }
914
926
  /**
915
927
  * Handle multiline paste - show full content for small pastes, summary for large ones
928
+ * CRITICAL: Must work correctly in all circumstances:
929
+ * - During streaming (scroll region active)
930
+ * - During idle (normal readline mode)
931
+ * - Small pastes (≤5 lines AND ≤300 chars) - show full content
932
+ * - Large pastes - show condensed summary
916
933
  */
917
934
  handleMultilinePaste(content) {
918
935
  const lines = content.split('\n');
@@ -937,7 +954,15 @@ export class PinnedChatBox {
937
954
  this.cursorPosition = summary.length;
938
955
  this.state.currentInput = summary;
939
956
  }
940
- this.scheduleRender();
957
+ // Use consistent rendering approach as handleInput:
958
+ // During streaming with scroll region active, render immediately
959
+ // Otherwise use scheduled render
960
+ if (this.scrollRegionActive && this.state.isProcessing) {
961
+ this.renderPersistentInput();
962
+ }
963
+ else {
964
+ this.scheduleRender();
965
+ }
941
966
  }
942
967
  /**
943
968
  * Generate a short summary of pasted content for display