erosolar-cli 1.7.394 → 1.7.395

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.
@@ -31,6 +31,7 @@ export interface TerminalInputEvents {
31
31
  toggleVerify?: () => void;
32
32
  toggleAutoContinue?: () => void;
33
33
  toggleThinking?: () => void;
34
+ toggleAlphaZero?: () => void;
34
35
  toggleEditMode?: () => void;
35
36
  clearContext?: () => void;
36
37
  }
@@ -110,6 +111,9 @@ export declare class TerminalInput extends EventEmitter {
110
111
  private verificationHotkey;
111
112
  private autoContinueHotkey;
112
113
  private thinkingHotkey;
114
+ private alphaZeroModeEnabled;
115
+ private alphaZeroHotkey;
116
+ private alphaZeroLabel;
113
117
  private modelLabel;
114
118
  private providerLabel;
115
119
  private lastStreamingRender;
@@ -124,6 +128,8 @@ export declare class TerminalInput extends EventEmitter {
124
128
  private lastChatBoxStartRow;
125
129
  private lastChatBoxHeight;
126
130
  private displayInterceptorDispose;
131
+ private recentActions;
132
+ private readonly maxRecentActions;
127
133
  constructor(writeStream?: NodeJS.WriteStream, config?: TerminalInputConfig);
128
134
  /**
129
135
  * Enable bracketed paste mode in terminal
@@ -277,6 +283,9 @@ export declare class TerminalInput extends EventEmitter {
277
283
  autoContinueHotkey?: string;
278
284
  thinkingModeLabel?: string | null;
279
285
  thinkingHotkey?: string;
286
+ alphaZeroEnabled?: boolean;
287
+ alphaZeroHotkey?: string;
288
+ alphaZeroLabel?: string | null;
280
289
  }): void;
281
290
  /**
282
291
  * Clear all status messages at once (convenience method).
@@ -352,6 +361,14 @@ export declare class TerminalInput extends EventEmitter {
352
361
  private formatElapsedLabel;
353
362
  private formatTokenCount;
354
363
  private visibleLength;
364
+ /**
365
+ * Record a compact recent action for display above the divider.
366
+ */
367
+ recordRecentAction(action: string): void;
368
+ /**
369
+ * Build the single-line recent actions strip.
370
+ */
371
+ private buildRecentActionLines;
355
372
  /**
356
373
  * Debug-only snapshot used by tests to assert rendered strings without
357
374
  * needing a TTY. Not used by production code.
@@ -590,7 +607,7 @@ export declare class TerminalInput extends EventEmitter {
590
607
  * pending UI changes. Prevents meta/header lines from being echoed into the
591
608
  * streamed log when nothing changed.
592
609
  */
593
- private renderStreamingFrame;
610
+ renderStreamingFrame(force?: boolean): void;
594
611
  private resetStreamingRenderThrottle;
595
612
  private scheduleRender;
596
613
  private canRender;
@@ -1 +1 @@
1
- {"version":3,"file":"terminalInput.d.ts","sourceRoot":"","sources":["../../src/shell/terminalInput.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminalInput.d.ts","sourceRoot":"","sources":["../../src/shell/terminalInput.ts"],"names":[],"mappings":"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"}
@@ -121,11 +121,14 @@ export class TerminalInput extends EventEmitter {
121
121
  verificationHotkey = 'ctrl+shift+v';
122
122
  autoContinueHotkey = 'ctrl+shift+c';
123
123
  thinkingHotkey = 'ctrl+shift+t';
124
+ alphaZeroModeEnabled = false;
125
+ alphaZeroHotkey = 'ctrl+shift+a';
126
+ alphaZeroLabel = null;
124
127
  modelLabel = null;
125
128
  providerLabel = null;
126
129
  // Streaming render throttle
127
130
  lastStreamingRender = 0;
128
- streamingRenderInterval = 250; // ms between renders during streaming
131
+ streamingRenderInterval = 150; // ms between renders during streaming
129
132
  streamingRenderTimer = null;
130
133
  // Command autocomplete state
131
134
  commandSuggestions = [];
@@ -137,6 +140,8 @@ export class TerminalInput extends EventEmitter {
137
140
  lastChatBoxStartRow = null;
138
141
  lastChatBoxHeight = 0;
139
142
  displayInterceptorDispose = null;
143
+ recentActions = [];
144
+ maxRecentActions = 5;
140
145
  constructor(writeStream = process.stdout, config = {}) {
141
146
  super();
142
147
  this.out = writeStream;
@@ -293,6 +298,13 @@ export class TerminalInput extends EventEmitter {
293
298
  const normalizedName = key?.name ?? this.getArrowKeyName(key?.sequence ?? str);
294
299
  const effectiveKey = normalizedName ? { ...key, name: normalizedName } : key;
295
300
  const safeStr = this.isArrowEscapeFragment(str) ? undefined : str;
301
+ // Some terminals emit raw DEL/backspace bytes without a parsed key name.
302
+ // Treat these as backspace to avoid inserting the control character.
303
+ const isRawBackspace = !effectiveKey?.name && safeStr && (safeStr === '\b' || safeStr === '\x7f');
304
+ if (isRawBackspace) {
305
+ this.deleteBackward();
306
+ return;
307
+ }
296
308
  let handled = false;
297
309
  // Handle control keys
298
310
  if (effectiveKey?.ctrl) {
@@ -685,13 +697,19 @@ export class TerminalInput extends EventEmitter {
685
697
  const nextVerifyHotkey = options.verificationHotkey ?? this.verificationHotkey;
686
698
  const nextAutoHotkey = options.autoContinueHotkey ?? this.autoContinueHotkey;
687
699
  const nextThinkingHotkey = options.thinkingHotkey ?? this.thinkingHotkey;
700
+ const nextAlphaHotkey = options.alphaZeroHotkey ?? this.alphaZeroHotkey;
688
701
  const nextThinkingLabel = options.thinkingModeLabel === undefined ? this.thinkingModeLabel : (options.thinkingModeLabel || null);
702
+ const nextAlphaZeroEnabled = options.alphaZeroEnabled === undefined ? this.alphaZeroModeEnabled : !!options.alphaZeroEnabled;
703
+ const nextAlphaZeroLabel = options.alphaZeroLabel === undefined ? this.alphaZeroLabel : (options.alphaZeroLabel || null);
689
704
  if (this.verificationEnabled === nextVerification &&
690
705
  this.autoContinueEnabled === nextAutoContinue &&
691
706
  this.verificationHotkey === nextVerifyHotkey &&
692
707
  this.autoContinueHotkey === nextAutoHotkey &&
693
708
  this.thinkingHotkey === nextThinkingHotkey &&
694
- this.thinkingModeLabel === nextThinkingLabel) {
709
+ this.thinkingModeLabel === nextThinkingLabel &&
710
+ this.alphaZeroModeEnabled === nextAlphaZeroEnabled &&
711
+ this.alphaZeroHotkey === nextAlphaHotkey &&
712
+ this.alphaZeroLabel === nextAlphaZeroLabel) {
695
713
  return;
696
714
  }
697
715
  this.verificationEnabled = nextVerification;
@@ -700,6 +718,9 @@ export class TerminalInput extends EventEmitter {
700
718
  this.autoContinueHotkey = nextAutoHotkey;
701
719
  this.thinkingHotkey = nextThinkingHotkey;
702
720
  this.thinkingModeLabel = nextThinkingLabel;
721
+ this.alphaZeroModeEnabled = nextAlphaZeroEnabled;
722
+ this.alphaZeroHotkey = nextAlphaHotkey;
723
+ this.alphaZeroLabel = nextAlphaZeroLabel;
703
724
  this.scheduleRender();
704
725
  }
705
726
  /**
@@ -737,6 +758,10 @@ export class TerminalInput extends EventEmitter {
737
758
  if (this.isRendering)
738
759
  return;
739
760
  const streamingActive = this.mode === 'streaming' || isStreamingMode();
761
+ if (this.scrollRegionActive && streamingActive) {
762
+ this.renderStreamingFrame();
763
+ return;
764
+ }
740
765
  const bufferChanged = this.buffer !== this.lastRenderContent || this.cursor !== this.lastRenderCursor;
741
766
  // During streaming, throttle re-renders unless the buffer actually changed
742
767
  // (e.g., typing slash commands while streaming should update immediately).
@@ -830,6 +855,13 @@ export class TerminalInput extends EventEmitter {
830
855
  this.write(metaLine);
831
856
  currentRow += 1;
832
857
  }
858
+ // Recent actions strip (sits above the divider)
859
+ const recentLines = this.buildRecentActionLines(cols - 2);
860
+ for (const recentLine of recentLines) {
861
+ this.write(ESC.TO(currentRow, 1));
862
+ this.write(recentLine);
863
+ currentRow += 1;
864
+ }
833
865
  // Separator line with scroll status
834
866
  this.write(ESC.TO(currentRow, 1));
835
867
  const dividerLabel = scrollIndicator || undefined;
@@ -1110,6 +1142,14 @@ export class TerminalInput extends EventEmitter {
1110
1142
  text: `${autoHotkey} ${autoStatus}`,
1111
1143
  tone: this.autoContinueEnabled ? 'info' : 'muted'
1112
1144
  });
1145
+ // AlphaZero RL mode toggle
1146
+ const alphaHotkey = this.formatHotkey(this.alphaZeroHotkey);
1147
+ const alphaLabel = this.alphaZeroLabel || 'AlphaZero RL';
1148
+ const alphaStatus = this.alphaZeroModeEnabled ? `${alphaLabel} on` : `${alphaLabel} off`;
1149
+ toggleParts.push({
1150
+ text: `${alphaHotkey} ${alphaStatus}`,
1151
+ tone: this.alphaZeroModeEnabled ? 'success' : 'muted',
1152
+ });
1113
1153
  // Thinking mode toggle
1114
1154
  if (this.thinkingModeLabel) {
1115
1155
  const shortThinking = this.thinkingModeLabel.length > 10
@@ -1236,6 +1276,41 @@ export class TerminalInput extends EventEmitter {
1236
1276
  const ansiPattern = /\u001B\[[0-?]*[ -/]*[@-~]/g;
1237
1277
  return value.replace(ansiPattern, '').length;
1238
1278
  }
1279
+ /**
1280
+ * Record a compact recent action for display above the divider.
1281
+ */
1282
+ recordRecentAction(action) {
1283
+ const clean = this.sanitize(action).replace(/\s+/g, ' ').trim();
1284
+ if (!clean) {
1285
+ return;
1286
+ }
1287
+ const maxLen = 80;
1288
+ const text = clean.length > maxLen ? `${clean.slice(0, maxLen - 1)}…` : clean;
1289
+ const last = this.recentActions[this.recentActions.length - 1];
1290
+ if (last && last.text === text) {
1291
+ last.timestamp = Date.now();
1292
+ return;
1293
+ }
1294
+ if (!this.isTTY()) {
1295
+ this.write(`[action] ${text}\n`);
1296
+ }
1297
+ this.recentActions.push({ text, timestamp: Date.now() });
1298
+ while (this.recentActions.length > this.maxRecentActions) {
1299
+ this.recentActions.shift();
1300
+ }
1301
+ this.scheduleRender();
1302
+ }
1303
+ /**
1304
+ * Build the single-line recent actions strip.
1305
+ */
1306
+ buildRecentActionLines(width) {
1307
+ if (this.recentActions.length === 0 || width <= 0) {
1308
+ return [];
1309
+ }
1310
+ const items = this.recentActions.map((entry) => ({ text: entry.text, tone: 'muted' }));
1311
+ const parts = [{ text: 'recent', tone: 'info' }, ...items];
1312
+ return [renderStatusLine(parts, width)];
1313
+ }
1239
1314
  /**
1240
1315
  * Debug-only snapshot used by tests to assert rendered strings without
1241
1316
  * needing a TTY. Not used by production code.
@@ -1282,6 +1357,12 @@ export class TerminalInput extends EventEmitter {
1282
1357
  * Sets up terminal scroll region to exclude chat box.
1283
1358
  */
1284
1359
  enterStreamingScrollRegion() {
1360
+ if (!this.isTTY()) {
1361
+ this.scrollRegionActive = false;
1362
+ this.setStatusMessage('esc to interrupt');
1363
+ this.forceRender();
1364
+ return;
1365
+ }
1285
1366
  const { rows } = this.getSize();
1286
1367
  const chatBoxHeight = this.getChatBoxHeight();
1287
1368
  const scrollEnd = Math.max(1, rows - chatBoxHeight);
@@ -1305,6 +1386,12 @@ export class TerminalInput extends EventEmitter {
1305
1386
  * Clears the old pinned chat box area to prevent duplication.
1306
1387
  */
1307
1388
  exitStreamingScrollRegion() {
1389
+ if (!this.isTTY()) {
1390
+ this.scrollRegionActive = false;
1391
+ this.setStatusMessage('Ready for prompts');
1392
+ this.forceRender();
1393
+ return;
1394
+ }
1308
1395
  const { rows } = this.getSize();
1309
1396
  const chatBoxHeight = this.getChatBoxHeight();
1310
1397
  writeLock.lock('exitStreamingScrollRegion');
@@ -1367,7 +1454,7 @@ export class TerminalInput extends EventEmitter {
1367
1454
  // Content moved; force a render so the chat box follows.
1368
1455
  this.renderDirty = true;
1369
1456
  }
1370
- this.scheduleStreamingRender(200);
1457
+ this.scheduleStreamingRender(150);
1371
1458
  }
1372
1459
  }
1373
1460
  /**
@@ -1411,9 +1498,11 @@ export class TerminalInput extends EventEmitter {
1411
1498
  const filtered = this.getFilteredCommands();
1412
1499
  suggestionLines = Math.min(filtered.length, this.maxVisibleSuggestions) + 1; // +1 for header
1413
1500
  }
1501
+ // Recent actions strip (single line when present)
1502
+ const recentLines = this.buildRecentActionLines(cols - 2).length;
1414
1503
  // Total: meta + divider + input lines + suggestions + controls + buffer
1415
1504
  // Leave a small buffer so streamed content still has space above the chat box
1416
- const totalHeight = metaLines + 1 + inputLines + suggestionLines + controlLineCount + 1;
1505
+ const totalHeight = metaLines + recentLines + 1 + inputLines + suggestionLines + controlLineCount + 1;
1417
1506
  const minContentRows = 2;
1418
1507
  const maxHeight = Math.max(4, rows - minContentRows);
1419
1508
  return Math.min(totalHeight, maxHeight);
@@ -1448,6 +1537,12 @@ export class TerminalInput extends EventEmitter {
1448
1537
  return;
1449
1538
  // Capture content in scrollback buffer
1450
1539
  this.addToScrollback(content);
1540
+ if (!this.isTTY()) {
1541
+ this.write(content);
1542
+ const rowsUsed = this.countRenderedRows(content);
1543
+ this.contentRow += rowsUsed;
1544
+ return;
1545
+ }
1451
1546
  writeLock.lock('writeToScrollRegion');
1452
1547
  try {
1453
1548
  // Position cursor at content row and write
@@ -1564,6 +1659,10 @@ export class TerminalInput extends EventEmitter {
1564
1659
  }
1565
1660
  return true;
1566
1661
  case 'a': // Home
1662
+ if (key.shift) {
1663
+ this.emit('toggleAlphaZero');
1664
+ return true;
1665
+ }
1567
1666
  this.moveCursorToLineStart();
1568
1667
  return true;
1569
1668
  case 'e': // End
@@ -1659,6 +1758,10 @@ export class TerminalInput extends EventEmitter {
1659
1758
  // Alt+T: Toggle/cycle thinking mode
1660
1759
  this.emit('toggleThinking');
1661
1760
  break;
1761
+ case 'a':
1762
+ // Alt+A: Toggle AlphaZero RL mode
1763
+ this.emit('toggleAlphaZero');
1764
+ break;
1662
1765
  case 'e':
1663
1766
  // Alt+E: Toggle edit permission mode (ask/auto)
1664
1767
  this.toggleEditMode();
@@ -2522,12 +2625,13 @@ export class TerminalInput extends EventEmitter {
2522
2625
  * pending UI changes. Prevents meta/header lines from being echoed into the
2523
2626
  * streamed log when nothing changed.
2524
2627
  */
2525
- renderStreamingFrame() {
2628
+ renderStreamingFrame(force = false) {
2526
2629
  if (!this.canRender())
2527
2630
  return;
2528
2631
  if (this.isRendering)
2529
2632
  return;
2530
- const shouldSkip = !this.renderDirty &&
2633
+ const shouldSkip = !force &&
2634
+ !this.renderDirty &&
2531
2635
  this.buffer === this.lastRenderContent &&
2532
2636
  this.cursor === this.lastRenderCursor;
2533
2637
  // Clear the dirty flag even when skipping to avoid runaway retries.
@@ -2536,7 +2640,7 @@ export class TerminalInput extends EventEmitter {
2536
2640
  return;
2537
2641
  }
2538
2642
  if (writeLock.isLocked()) {
2539
- writeLock.safeWrite(() => this.renderStreamingFrame());
2643
+ writeLock.safeWrite(() => this.renderStreamingFrame(force));
2540
2644
  return;
2541
2645
  }
2542
2646
  this.renderPinnedChatBox();
@@ -2552,7 +2656,14 @@ export class TerminalInput extends EventEmitter {
2552
2656
  if (!this.canRender())
2553
2657
  return;
2554
2658
  this.renderDirty = true;
2555
- queueMicrotask(() => this.render());
2659
+ queueMicrotask(() => {
2660
+ const streamingActive = this.scrollRegionActive || this.mode === 'streaming' || isStreamingMode();
2661
+ if (streamingActive && this.scrollRegionActive) {
2662
+ this.renderStreamingFrame();
2663
+ return;
2664
+ }
2665
+ this.render();
2666
+ });
2556
2667
  }
2557
2668
  canRender() {
2558
2669
  return !this.disposed && this.enabled && this.isTTY();
@@ -2583,7 +2694,7 @@ export class TerminalInput extends EventEmitter {
2583
2694
  return text
2584
2695
  .replace(/\x1b\][^\x07]*(?:\x07|\x1b\\)/g, '') // OSC sequences
2585
2696
  .replace(/\x1b\[[0-9;]*[A-Za-z]/g, '') // CSI sequences
2586
- .replace(/[\x00-\x08\x0B\x0C\x0E-\x1F]/g, '') // Control chars except \n and \r
2697
+ .replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, '') // Control chars except \n and \r (incl. DEL/C1)
2587
2698
  .replace(/\r\n?/g, '\n'); // Normalize line endings
2588
2699
  }
2589
2700
  getArrowKeyName(sequence) {