erosolar-cli 1.7.119 → 1.7.121
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/selfTest.js +2 -2
- package/dist/bin/selfTest.js.map +1 -1
- package/dist/core/agent.js +5 -5
- package/dist/core/agent.js.map +1 -1
- package/dist/core/preferences.js +8 -2
- package/dist/core/preferences.js.map +1 -1
- package/dist/core/resultVerification.d.ts +1 -1
- package/dist/core/resultVerification.d.ts.map +1 -1
- package/dist/core/resultVerification.js +11 -10
- package/dist/core/resultVerification.js.map +1 -1
- package/dist/shell/composableMessage.js +2 -2
- package/dist/shell/composableMessage.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +17 -8
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/tools/bashTools.d.ts.map +1 -1
- package/dist/tools/bashTools.js +5 -4
- package/dist/tools/bashTools.js.map +1 -1
- package/dist/tools/diffUtils.js +6 -6
- package/dist/tools/diffUtils.js.map +1 -1
- package/dist/tools/editTools.js +1 -1
- package/dist/tools/editTools.js.map +1 -1
- package/dist/ui/persistentPrompt.js +2 -2
- package/dist/ui/persistentPrompt.js.map +1 -1
- package/dist/ui/richText.js +4 -4
- package/dist/ui/richText.js.map +1 -1
- package/package.json +1 -1
|
@@ -823,6 +823,11 @@ export class InteractiveShell {
|
|
|
823
823
|
if (str.length === 1 && str.charCodeAt(0) >= 32 && str.charCodeAt(0) < 127) {
|
|
824
824
|
return true;
|
|
825
825
|
}
|
|
826
|
+
// Suppress very short writes (1-4 chars) that are likely user keystrokes
|
|
827
|
+
// AI streaming writes are typically longer or contain newlines/formatting
|
|
828
|
+
if (str.length <= 4 && !/[\n\r]/.test(str) && /^[\x20-\x7e]+$/.test(str)) {
|
|
829
|
+
return true;
|
|
830
|
+
}
|
|
826
831
|
// Suppress backspace sequences (readline's delete char)
|
|
827
832
|
if (str === '\b \b' || str === '\x1b[D \x1b[D' || str === '\b' || str === '\x7f') {
|
|
828
833
|
return true;
|
|
@@ -832,16 +837,20 @@ export class InteractiveShell {
|
|
|
832
837
|
return true;
|
|
833
838
|
}
|
|
834
839
|
// Suppress readline prompt redraw patterns (starts with \r or cursor home)
|
|
835
|
-
if (/^\r/.test(str) && str.length <
|
|
840
|
+
if (/^\r/.test(str) && str.length < 30 && !/[a-zA-Z]{3,}/.test(str)) {
|
|
836
841
|
return true;
|
|
837
842
|
}
|
|
838
843
|
// Suppress clear line + prompt patterns from readline
|
|
839
|
-
if (/^\x1b\[\d*[GK]/.test(str) && str.length <
|
|
844
|
+
if (/^\x1b\[\d*[GK]/.test(str) && str.length < 20) {
|
|
840
845
|
return true;
|
|
841
846
|
}
|
|
842
847
|
// Suppress short sequences that look like readline control (not AI content)
|
|
843
848
|
// AI content is typically longer or contains actual text
|
|
844
|
-
if (str.length <=
|
|
849
|
+
if (str.length <= 5 && /^[\x1b\[\]\d;GKJ\b ]+$/.test(str)) {
|
|
850
|
+
return true;
|
|
851
|
+
}
|
|
852
|
+
// Suppress any short writes containing our prompt characters
|
|
853
|
+
if (str.length < 10 && /^[>\s›\x1b\[\dGK]+$/.test(str)) {
|
|
845
854
|
return true;
|
|
846
855
|
}
|
|
847
856
|
// Allow everything else through (actual AI output)
|
|
@@ -986,11 +995,11 @@ export class InteractiveShell {
|
|
|
986
995
|
});
|
|
987
996
|
// Set the prompt to show paste chips, then position cursor after them
|
|
988
997
|
// The user can type additional text after the chips
|
|
989
|
-
this.persistentPrompt.updateInput(pasteChips
|
|
998
|
+
this.persistentPrompt.updateInput(`${pasteChips} `, pasteChips.length + 1);
|
|
990
999
|
// Update readline's line buffer to include the chips as prefix
|
|
991
1000
|
// This ensures typed text appears after the chips
|
|
992
1001
|
if (this.rl.line !== undefined) {
|
|
993
|
-
this.rl.line = pasteChips
|
|
1002
|
+
this.rl.line = `${pasteChips} `;
|
|
994
1003
|
this.rl.cursor = pasteChips.length + 1;
|
|
995
1004
|
}
|
|
996
1005
|
// NOTE: Don't clear pasteJustCaptured here - the counter-based logic in shouldIgnoreLineEvent()
|
|
@@ -1655,7 +1664,7 @@ export class InteractiveShell {
|
|
|
1655
1664
|
lines.push(theme.bold('Session File Changes'));
|
|
1656
1665
|
lines.push('');
|
|
1657
1666
|
lines.push(`${theme.info('•')} ${summary.files} file${summary.files === 1 ? '' : 's'} modified`);
|
|
1658
|
-
lines.push(`${theme.info('•')} ${theme.success(
|
|
1667
|
+
lines.push(`${theme.info('•')} ${theme.success(`+${summary.additions}`)} ${theme.error(`-${summary.removals}`)} lines`);
|
|
1659
1668
|
lines.push('');
|
|
1660
1669
|
// Group changes by file
|
|
1661
1670
|
const fileMap = new Map();
|
|
@@ -1679,7 +1688,7 @@ export class InteractiveShell {
|
|
|
1679
1688
|
if (stats.writes > 0)
|
|
1680
1689
|
operations.push(`${stats.writes} write${stats.writes === 1 ? '' : 's'}`);
|
|
1681
1690
|
const opsText = operations.join(', ');
|
|
1682
|
-
const diffText = `${theme.success(
|
|
1691
|
+
const diffText = `${theme.success(`+${stats.additions}`)} ${theme.error(`-${stats.removals}`)}`;
|
|
1683
1692
|
lines.push(` ${theme.dim(path)}`);
|
|
1684
1693
|
lines.push(` ${opsText} • ${diffText}`);
|
|
1685
1694
|
}
|
|
@@ -3406,7 +3415,7 @@ What's the next action?`;
|
|
|
3406
3415
|
// Truncate to reasonable length
|
|
3407
3416
|
const maxLength = 50;
|
|
3408
3417
|
return cleaned.length > maxLength
|
|
3409
|
-
? cleaned.slice(0, maxLength - 3)
|
|
3418
|
+
? `${cleaned.slice(0, maxLength - 3)}...`
|
|
3410
3419
|
: cleaned;
|
|
3411
3420
|
}
|
|
3412
3421
|
splitThinkingResponse(content) {
|