erosolar-cli 1.7.428 → 1.7.430

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.
Files changed (83) hide show
  1. package/dist/capabilities/enhancedGitCapability.js +3 -3
  2. package/dist/capabilities/enhancedGitCapability.js.map +1 -1
  3. package/dist/capabilities/learnCapability.d.ts +1 -1
  4. package/dist/capabilities/learnCapability.d.ts.map +1 -1
  5. package/dist/capabilities/learnCapability.js +1 -1
  6. package/dist/capabilities/learnCapability.js.map +1 -1
  7. package/dist/core/checkpoint.d.ts +1 -1
  8. package/dist/core/checkpoint.js +1 -1
  9. package/dist/core/costTracker.d.ts +1 -1
  10. package/dist/core/costTracker.js +1 -1
  11. package/dist/core/hooks.d.ts +1 -1
  12. package/dist/core/hooks.js +1 -1
  13. package/dist/core/memorySystem.d.ts +2 -2
  14. package/dist/core/memorySystem.js +2 -2
  15. package/dist/core/outputStyles.d.ts +2 -2
  16. package/dist/core/outputStyles.js +2 -2
  17. package/dist/core/validationRunner.d.ts +1 -1
  18. package/dist/core/validationRunner.js +1 -1
  19. package/dist/shell/interactiveShell.d.ts +6 -1
  20. package/dist/shell/interactiveShell.d.ts.map +1 -1
  21. package/dist/shell/interactiveShell.js +129 -92
  22. package/dist/shell/interactiveShell.js.map +1 -1
  23. package/dist/shell/systemPrompt.d.ts.map +1 -1
  24. package/dist/shell/systemPrompt.js +13 -33
  25. package/dist/shell/systemPrompt.js.map +1 -1
  26. package/dist/shell/terminalInputAdapter.d.ts +75 -83
  27. package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
  28. package/dist/shell/terminalInputAdapter.js +159 -220
  29. package/dist/shell/terminalInputAdapter.js.map +1 -1
  30. package/dist/shell/vimMode.d.ts +1 -1
  31. package/dist/shell/vimMode.js +1 -1
  32. package/dist/tools/buildTools.d.ts +1 -1
  33. package/dist/tools/buildTools.js +1 -1
  34. package/dist/tools/diffUtils.d.ts +2 -2
  35. package/dist/tools/diffUtils.js +2 -2
  36. package/dist/tools/editTools.js +4 -4
  37. package/dist/tools/editTools.js.map +1 -1
  38. package/dist/tools/localExplore.d.ts +3 -3
  39. package/dist/tools/localExplore.js +3 -3
  40. package/dist/tools/skillTools.js +2 -2
  41. package/dist/tools/skillTools.js.map +1 -1
  42. package/dist/tools/validationTools.js +1 -1
  43. package/dist/ui/DisplayEventQueue.d.ts +99 -0
  44. package/dist/ui/DisplayEventQueue.d.ts.map +1 -0
  45. package/dist/ui/DisplayEventQueue.js +167 -0
  46. package/dist/ui/DisplayEventQueue.js.map +1 -0
  47. package/dist/ui/SequentialRenderer.d.ts +69 -0
  48. package/dist/ui/SequentialRenderer.d.ts.map +1 -0
  49. package/dist/ui/SequentialRenderer.js +137 -0
  50. package/dist/ui/SequentialRenderer.js.map +1 -0
  51. package/dist/ui/ShellUIAdapter.d.ts +19 -12
  52. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  53. package/dist/ui/ShellUIAdapter.js +73 -56
  54. package/dist/ui/ShellUIAdapter.js.map +1 -1
  55. package/dist/ui/UnifiedUIRenderer.d.ts +184 -0
  56. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -0
  57. package/dist/ui/UnifiedUIRenderer.js +567 -0
  58. package/dist/ui/UnifiedUIRenderer.js.map +1 -0
  59. package/dist/ui/display.d.ts +100 -173
  60. package/dist/ui/display.d.ts.map +1 -1
  61. package/dist/ui/display.js +359 -926
  62. package/dist/ui/display.js.map +1 -1
  63. package/dist/ui/errorFormatter.d.ts +1 -1
  64. package/dist/ui/errorFormatter.js +1 -1
  65. package/dist/ui/shortcutsHelp.d.ts +6 -6
  66. package/dist/ui/shortcutsHelp.js +6 -6
  67. package/dist/ui/streamingFormatter.d.ts +2 -10
  68. package/dist/ui/streamingFormatter.d.ts.map +1 -1
  69. package/dist/ui/streamingFormatter.js +9 -59
  70. package/dist/ui/streamingFormatter.js.map +1 -1
  71. package/dist/ui/textHighlighter.d.ts +8 -8
  72. package/dist/ui/textHighlighter.js +9 -9
  73. package/dist/ui/textHighlighter.js.map +1 -1
  74. package/dist/ui/theme.d.ts +2 -2
  75. package/dist/ui/theme.js +4 -4
  76. package/dist/ui/theme.js.map +1 -1
  77. package/dist/ui/toolDisplay.d.ts +8 -8
  78. package/dist/ui/toolDisplay.js +8 -8
  79. package/package.json +1 -1
  80. package/dist/shell/terminalInput.d.ts +0 -619
  81. package/dist/shell/terminalInput.d.ts.map +0 -1
  82. package/dist/shell/terminalInput.js +0 -2699
  83. package/dist/shell/terminalInput.js.map +0 -1
@@ -1,404 +1,343 @@
1
1
  /**
2
- * TerminalInputAdapter - Bridges TerminalInput with InteractiveShell
2
+ * TerminalInputAdapter - Compatibility bridge to UnifiedUIRenderer
3
3
  *
4
- * This adapter is the single integration path for terminal input,
5
- * connecting the unified TerminalInput to the InteractiveShell.
4
+ * This adapter provides backward compatibility with the old TerminalInput API
5
+ * while delegating all actual work to the new UnifiedUIRenderer.
6
+ *
7
+ * This allows gradual migration without breaking existing code.
6
8
  */
7
- import * as readline from 'node:readline';
8
- import { TerminalInput } from './terminalInput.js';
9
+ import { UnifiedUIRenderer } from '../ui/UnifiedUIRenderer.js';
9
10
  /**
10
- * Adapter that integrates TerminalInput with InteractiveShell's event system
11
+ * Adapter that bridges old TerminalInput API to new UnifiedUIRenderer
11
12
  */
12
13
  export class TerminalInputAdapter {
13
14
  inStream;
14
- input;
15
+ renderer;
15
16
  callbacks;
16
- rawDataHandler = null;
17
- keypressHandler = null;
18
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
- originalEmit = null;
17
+ editMode = 'display-edits';
18
+ scrollbackBuffer = [];
20
19
  constructor(inStream, outStream, callbacks) {
21
20
  this.inStream = inStream;
22
21
  this.callbacks = callbacks;
23
- this.input = new TerminalInput(outStream, {
24
- maxLines: Number.POSITIVE_INFINITY,
25
- maxLength: 100000,
26
- maxQueueSize: 100,
27
- });
28
- // Wire up events
29
- this.input.on('submit', (text) => this.callbacks.onSubmit(text));
30
- this.input.on('queue', (text) => this.callbacks.onQueue(text));
31
- this.input.on('interrupt', () => this.callbacks.onInterrupt());
32
- this.input.on('change', (text) => this.callbacks.onChange?.(text));
33
- this.input.on('mode-change', (mode) => this.callbacks.onEditModeChange?.(mode));
34
- this.input.on('toggleVerify', () => this.callbacks.onToggleVerify?.());
35
- this.input.on('toggleAutoContinue', () => this.callbacks.onToggleAutoContinue?.());
36
- this.input.on('toggleThinking', () => this.callbacks.onToggleThinking?.());
37
- this.input.on('toggleEditMode', () => {
38
- const mode = this.input.getEditMode?.() || 'display-edits';
39
- this.callbacks.onEditModeChange?.(mode);
40
- });
41
- this.input.on('clearContext', () => this.callbacks.onClearContext?.());
22
+ this.renderer = new UnifiedUIRenderer(outStream, inStream);
23
+ // Wire up renderer events to callbacks
24
+ this.renderer.on('submit', (text) => this.callbacks.onSubmit(text));
25
+ this.renderer.on('queue', (text) => this.callbacks.onQueue(text));
26
+ this.renderer.on('interrupt', () => this.callbacks.onInterrupt());
42
27
  }
43
28
  /**
44
- * Start capturing input. Does NOT render - caller should render after setup.
29
+ * Start capturing input
45
30
  */
46
31
  start() {
47
- this.input.enableBracketedPaste();
48
- // Mouse tracking DISABLED to preserve native text selection
49
- // Use PgUp/PgDn for scrollback navigation instead of mouse wheel
50
- // this.input.enableMouseTracking();
51
- // Set up raw mode
52
- if (this.inStream.isTTY) {
53
- this.inStream.setRawMode(true);
54
- }
55
- // Resume the input stream - stdin is paused by default and won't emit
56
- // keypress events until resumed
57
- this.inStream.resume();
58
- // Intercept raw data for bracketed paste detection
59
- this.setupRawDataInterception();
60
- // Set up keypress handling
61
- this.setupKeypressHandler();
62
- // Note: No auto-render here - caller controls when to render
32
+ this.renderer.initialize();
63
33
  }
64
34
  /**
65
35
  * Stop capturing input
66
36
  */
67
37
  stop() {
68
- this.input.disableBracketedPaste();
69
- // Only disable if it was enabled
70
- // this.input.disableMouseTracking();
71
- // Remove handlers
72
- if (this.rawDataHandler) {
73
- this.restoreRawDataInterception();
74
- }
75
- if (this.keypressHandler && this.inStream) {
76
- this.inStream.off('keypress', this.keypressHandler);
77
- this.keypressHandler = null;
78
- }
79
- // Pause the input stream
80
- this.inStream.pause();
81
- // Restore raw mode
82
- if (this.inStream.isTTY) {
83
- this.inStream.setRawMode(false);
84
- }
38
+ this.renderer.cleanup();
85
39
  }
86
40
  /**
87
- * Set streaming mode (input will be queued instead of submitted)
41
+ * Set streaming mode
88
42
  */
89
43
  setStreaming(streaming) {
90
- this.input.setMode(streaming ? 'streaming' : 'idle');
44
+ this.renderer.setMode(streaming ? 'streaming' : 'idle');
91
45
  }
92
46
  /**
93
- * Pin top rows (e.g., the launch banner) outside the scroll region.
47
+ * Legacy: Pin top rows (no-op with new renderer)
94
48
  */
95
- setPinnedHeaderLines(count) {
96
- this.input.setPinnedHeaderLines(count);
49
+ setPinnedHeaderLines(_count) {
50
+ // No-op - new renderer doesn't use pinned headers
97
51
  }
98
52
  /**
99
53
  * Get current buffer content
100
54
  */
101
55
  getBuffer() {
102
- return this.input.getBuffer();
56
+ return this.renderer.getBuffer();
103
57
  }
104
58
  /**
105
59
  * Set buffer content
106
60
  */
107
61
  setBuffer(text, cursorPos) {
108
- this.input.setBuffer(text, cursorPos);
62
+ this.renderer.setBuffer(text, cursorPos);
109
63
  }
110
64
  /**
111
65
  * Clear the buffer
112
66
  */
113
67
  clear() {
114
- this.input.clear();
68
+ this.renderer.clearBuffer();
115
69
  }
116
70
  /**
117
- * Update context usage indicator (0-100, null to clear)
71
+ * Update context usage
118
72
  */
119
- setContextUsage(percentage, autoCompactThreshold) {
120
- this.input.updateContextUsage(percentage, autoCompactThreshold);
73
+ setContextUsage(percentage, _autoCompactThreshold) {
74
+ if (percentage !== null) {
75
+ this.renderer.updateStatusMeta({ contextPercent: percentage });
76
+ }
121
77
  }
122
78
  /**
123
- * Surface mode toggle states (verification/auto-continue) in the control bar.
79
+ * Surface mode toggles
124
80
  */
125
81
  setModeToggles(options) {
126
- this.input.setModeToggles(options);
82
+ // Store for potential future use
83
+ // The renderer handles these through shortcuts
127
84
  }
128
85
  /**
129
- * Update the inline status message shown before the prompt (e.g., streaming heartbeat).
86
+ * Update status message
130
87
  */
131
88
  setStatusMessage(message) {
132
- this.input.setStatusMessage(message);
89
+ this.renderer.updateStatus(message);
133
90
  }
134
91
  /**
135
- * Set an override status message (warnings, errors) that shows alongside the main status.
136
- * Both streaming label and override can be displayed simultaneously.
92
+ * Set override status (warnings, errors)
137
93
  */
138
94
  setOverrideStatus(message) {
139
- this.input.setOverrideStatus(message);
95
+ if (message) {
96
+ this.renderer.updateStatus(message);
97
+ }
140
98
  }
141
99
  /**
142
- * Set the streaming label (e.g., "Streaming response...").
143
- * Can be shown alongside override status messages.
100
+ * Set streaming label
144
101
  */
145
102
  setStreamingLabel(label) {
146
- this.input.setStreamingLabel(label);
103
+ if (label) {
104
+ this.renderer.updateStatus(label);
105
+ }
147
106
  }
148
107
  /**
149
- * Surface meta header information (elapsed, tokens/context) above the divider.
108
+ * Surface meta status
150
109
  */
151
110
  setMetaStatus(meta) {
152
- this.input.setMetaStatus(meta);
111
+ // Update renderer status metadata
112
+ const statusMeta = {};
113
+ if (meta.tokensUsed != null && meta.tokenLimit != null) {
114
+ const percent = meta.tokenLimit > 0
115
+ ? Math.round((meta.tokensUsed / meta.tokenLimit) * 100)
116
+ : 0;
117
+ statusMeta.contextPercent = percent;
118
+ }
119
+ this.renderer.updateStatusMeta(statusMeta);
153
120
  }
154
121
  /**
155
- * Clear all status messages at once (convenience method).
122
+ * Clear all status
156
123
  */
157
124
  clearAllStatus() {
158
- this.input.clearAllStatus();
125
+ this.renderer.updateStatus(null);
159
126
  }
160
127
  /**
161
- * Surface model/provider context in the controls bar.
128
+ * Set model context
162
129
  */
163
130
  setModelContext(options) {
164
- this.input.setModelContext(options);
131
+ this.renderer.updateStatusMeta({
132
+ model: options.model || undefined,
133
+ provider: options.provider || undefined,
134
+ });
165
135
  }
166
136
  /**
167
- * Set available slash commands for autocomplete.
168
- * When user types "/" these commands are shown for selection.
137
+ * Set available slash commands
169
138
  */
170
139
  setAvailableCommands(commands) {
171
- this.input.setAvailableCommands(commands);
140
+ this.renderer.setAvailableCommands(commands);
172
141
  }
173
142
  /**
174
- * Set the edit guard mode explicitly
143
+ * Set edit mode
175
144
  */
176
145
  setEditMode(mode) {
177
- this.input.applyEditMode(mode);
146
+ this.editMode = mode;
178
147
  }
179
148
  /**
180
- * Get current edit guard mode
149
+ * Apply edit mode (alias)
150
+ */
151
+ applyEditMode(mode) {
152
+ this.setEditMode(mode);
153
+ }
154
+ /**
155
+ * Get edit mode
181
156
  */
182
157
  getEditMode() {
183
- return this.input.getEditMode();
158
+ return this.editMode;
184
159
  }
185
160
  /**
186
- * Get queued inputs
161
+ * Get queued inputs (legacy - renderer handles this internally)
187
162
  */
188
163
  getQueue() {
189
- return this.input.getQueue();
164
+ return [];
190
165
  }
191
166
  /**
192
- * Dequeue next input
167
+ * Dequeue (legacy - no-op)
193
168
  */
194
169
  dequeue() {
195
- return this.input.dequeue();
170
+ return undefined;
196
171
  }
197
172
  /**
198
- * Force a re-render
173
+ * Force render
199
174
  */
200
175
  render() {
201
- this.input.forceRender();
176
+ this.renderer.render();
202
177
  }
203
178
  /**
204
- * Force a re-render (alias for render)
179
+ * Force render (alias)
205
180
  */
206
181
  forceRender() {
207
- this.input.forceRender();
182
+ this.renderer.render();
208
183
  }
209
184
  /**
210
- * Stream content above the pinned chat box (Claude Code method).
211
- * Automatically enables scroll region on first call.
185
+ * Stream content (renderer handles this via Display now)
212
186
  */
213
- streamContent(content) {
214
- this.input.streamContent(content);
187
+ streamContent(_content) {
188
+ // Content streaming is handled by Display -> renderer.addEvent()
215
189
  }
216
190
  /**
217
- * Enable scroll region (Claude Code method).
218
- * Chat box is pinned below scroll region.
191
+ * Enable scroll region (legacy - no-op)
219
192
  */
220
- enableScrollRegion(options) {
221
- this.input.enterStreamingScrollRegion(options);
193
+ enableScrollRegion(_options) {
194
+ // No-op - natural scrolling
222
195
  }
223
196
  /**
224
- * @deprecated Use streamContent() instead
225
- * Write content directly into the scroll region.
197
+ * Legacy: Write to scroll region
226
198
  */
227
- writeToScrollRegion(content) {
228
- this.input.writeToScrollRegion(content);
199
+ writeToScrollRegion(_content) {
200
+ // No-op - use Display.stream() instead
229
201
  }
230
202
  /**
231
- * Expose scroll region status for callers that need to choose write method.
203
+ * Check if scroll region active (always false)
232
204
  */
233
205
  isScrollRegionActive() {
234
- return this.input.isScrollRegionActive();
206
+ return false;
235
207
  }
236
208
  /**
237
- * Enter alternate screen buffer.
209
+ * Enter alternate screen (no-op)
238
210
  */
239
211
  enterAlternateScreen() {
240
- this.input.enterAlternateScreen();
212
+ // No-op - using native scrollback
241
213
  }
242
214
  /**
243
- * Exit alternate screen buffer.
215
+ * Exit alternate screen (no-op)
244
216
  */
245
217
  exitAlternateScreen() {
246
- this.input.exitAlternateScreen();
218
+ // No-op
247
219
  }
248
220
  /**
249
- * Clear the entire terminal screen and reset content position.
250
- * This removes all content including the launching command.
221
+ * Clear screen
251
222
  */
252
223
  clearScreen() {
253
- this.input.clearScreen();
224
+ // Renderer handles this
254
225
  }
255
226
  /**
256
- * Enter streaming scroll region mode.
257
- * Call once at the start of streaming.
227
+ * Enter streaming scroll region (no-op)
258
228
  */
259
- enterStreamingScrollRegion(options) {
260
- this.input.enterStreamingScrollRegion(options);
229
+ enterStreamingScrollRegion(_options) {
230
+ this.renderer.setMode('streaming');
261
231
  }
262
232
  /**
263
- * Exit streaming scroll region mode.
264
- * Call once at the end of streaming.
233
+ * Exit streaming scroll region
265
234
  */
266
- exitStreamingScrollRegion(options) {
267
- this.input.exitStreamingScrollRegion(options);
235
+ exitStreamingScrollRegion(_options) {
236
+ this.renderer.setMode('idle');
268
237
  }
269
238
  /**
270
- * Get scrollback buffer content for persistence.
239
+ * Get scrollback buffer
271
240
  */
272
241
  getScrollbackBuffer() {
273
- return this.input.getScrollbackBuffer();
242
+ return this.scrollbackBuffer;
274
243
  }
275
244
  /**
276
- * Load scrollback buffer for restoration.
245
+ * Load scrollback buffer
277
246
  */
278
247
  loadScrollbackBuffer(lines) {
279
- this.input.loadScrollbackBuffer(lines);
248
+ this.scrollbackBuffer = lines;
280
249
  }
281
250
  /**
282
- * Clear scrollback buffer.
251
+ * Clear scrollback
283
252
  */
284
253
  clearScrollbackBuffer() {
285
- this.input.clearScrollbackBuffer();
254
+ this.scrollbackBuffer = [];
286
255
  }
287
256
  /**
288
- * Check if alternate screen buffer is currently active.
257
+ * Check if alternate screen active (always false)
289
258
  */
290
259
  isAlternateScreenActive() {
291
- return this.input.isAlternateScreenActive();
260
+ return false;
292
261
  }
293
262
  /**
294
- * Get a snapshot of the scrollback buffer (for display on exit).
263
+ * Get scrollback snapshot
295
264
  */
296
265
  getScrollbackSnapshot() {
297
- return this.input.getScrollbackSnapshot();
266
+ return this.scrollbackBuffer;
298
267
  }
299
268
  /**
300
- * Reset content position to top of scroll region.
269
+ * Reset content position (no-op)
301
270
  */
302
271
  resetContentPosition() {
303
- this.input.resetContentPosition();
272
+ // No-op
304
273
  }
305
274
  /**
306
- * Set the content row explicitly (used after banner is written).
275
+ * Set content row (no-op)
307
276
  */
308
- setContentRow(row) {
309
- this.input.setContentRow(row);
277
+ setContentRow(_row) {
278
+ // No-op
310
279
  }
311
280
  /**
312
- * Get the current content row position.
281
+ * Get content row
313
282
  */
314
283
  getContentRow() {
315
- return this.input.getContentRow();
284
+ return 0;
316
285
  }
317
286
  /**
318
- * Handle terminal resize
287
+ * Handle resize
319
288
  */
320
289
  handleResize() {
321
- this.input.handleResize();
290
+ this.renderer.render();
322
291
  }
323
292
  /**
324
- * Dispose and clean up
293
+ * Dispose
325
294
  */
326
295
  dispose() {
327
- this.stop();
328
- this.input.dispose();
296
+ this.renderer.cleanup();
329
297
  }
330
298
  /**
331
- * Get the underlying TerminalInput instance
299
+ * Get underlying renderer (replaces getTerminalInput)
332
300
  */
333
301
  getTerminalInput() {
334
- return this.input;
335
- }
336
- /**
337
- * Register with display's output interceptor for cursor positioning.
338
- * This ensures streamed output goes to the scroll region during processing.
339
- */
340
- registerOutputInterceptor(display) {
341
- this.input.registerOutputInterceptor(display);
342
- }
343
- // ===========================================================================
344
- // PRIVATE
345
- // ===========================================================================
346
- setupRawDataInterception() {
347
- // Intercept stdin emit to capture raw data before readline processes it
348
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
349
- const origEmit = this.inStream.emit.bind(this.inStream);
350
- this.originalEmit = origEmit;
351
- const self = this;
352
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
353
- this.inStream.emit = function (event, ...args) {
354
- if (event === 'data' && args[0]) {
355
- const data = args[0];
356
- const str = typeof data === 'string' ? data : data.toString();
357
- const result = self.input.processRawData(str);
358
- if (result.consumed) {
359
- // Data was consumed by paste handler
360
- if (result.passthrough) {
361
- // Pass through remaining data
362
- return origEmit(event, result.passthrough);
363
- }
364
- return true;
365
- }
366
- }
367
- return origEmit(event, ...args);
302
+ return {
303
+ getUiSnapshot: () => ({
304
+ buffer: this.renderer.getBuffer(),
305
+ cursor: this.renderer.getBuffer().length,
306
+ suggestions: [],
307
+ statusMessage: null,
308
+ overrideStatusMessage: null,
309
+ streamingLabel: null,
310
+ statusSummary: null,
311
+ meta: {},
312
+ modeToggles: {},
313
+ modelContext: {},
314
+ render: {
315
+ inputLines: [this.renderer.getBuffer()],
316
+ cursorLine: 0,
317
+ cursorCol: this.renderer.getBuffer().length,
318
+ promptChar: '> ',
319
+ continuationChar: '│ ',
320
+ metaLines: [],
321
+ controlLines: [],
322
+ },
323
+ }),
368
324
  };
369
325
  }
370
- restoreRawDataInterception() {
371
- if (this.originalEmit) {
372
- this.inStream.emit = this.originalEmit;
373
- this.originalEmit = null;
374
- }
326
+ /**
327
+ * Get UI snapshot
328
+ */
329
+ getUiSnapshot() {
330
+ return this.getTerminalInput().getUiSnapshot();
375
331
  }
376
- setupKeypressHandler() {
377
- // Ensure keypress events are being emitted
378
- readline.emitKeypressEvents(this.inStream);
379
- this.keypressHandler = (str, key) => {
380
- // Convert readline key to our KeyInfo type
381
- const keyInfo = {
382
- name: key?.name,
383
- ctrl: key?.ctrl,
384
- meta: key?.meta,
385
- shift: key?.shift,
386
- sequence: key?.sequence,
387
- };
388
- // Notify about Ctrl+C before TerminalInput handles the key (so buffer state is accurate)
389
- if (keyInfo.ctrl && keyInfo.name === 'c' && this.callbacks.onCtrlC) {
390
- this.callbacks.onCtrlC({
391
- hadBuffer: this.input.getBuffer().length > 0,
392
- });
393
- }
394
- this.input.handleKeypress(str, keyInfo);
395
- };
396
- // Use prependListener to handle before readline
397
- this.inStream.prependListener('keypress', this.keypressHandler);
332
+ /**
333
+ * Register output interceptor (no-op - renderer handles this)
334
+ */
335
+ registerOutputInterceptor(_display) {
336
+ // No-op - Display already connected to renderer
398
337
  }
399
338
  }
400
339
  /**
401
- * Create a standalone terminal input (for testing or simple use cases)
340
+ * Create a terminal input adapter
402
341
  */
403
342
  export function createTerminalInput(callbacks, inStream = process.stdin, outStream = process.stdout) {
404
343
  return new TerminalInputAdapter(inStream, outStream, callbacks);
@@ -1 +1 @@
1
- {"version":3,"file":"terminalInputAdapter.js","sourceRoot":"","sources":["../../src/shell/terminalInputAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminalInputAdapter.js","sourceRoot":"","sources":["../../src/shell/terminalInputAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Vim Mode - Claude Code Style
2
+ * Vim Mode - Erosolar-CLI Style
3
3
  *
4
4
  * Vim-style editing support for the terminal input.
5
5
  * Toggle with /vim command or Ctrl+[ to escape.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Vim Mode - Claude Code Style
2
+ * Vim Mode - Erosolar-CLI Style
3
3
  *
4
4
  * Vim-style editing support for the terminal input.
5
5
  * Toggle with /vim command or Ctrl+[ to escape.
@@ -2,7 +2,7 @@
2
2
  * Build and Test Tools with AI-Powered Error Analysis
3
3
  *
4
4
  * Provides run_build, run_tests, and check_package_info tools that automatically
5
- * analyze errors and suggest fixes, following Claude Code's approach.
5
+ * analyze errors and suggest fixes, following Erosolar-CLI's approach.
6
6
  */
7
7
  import type { ToolDefinition } from '../core/toolRuntime.js';
8
8
  export declare function createBuildTools(workingDir: string): ToolDefinition[];
@@ -2,7 +2,7 @@
2
2
  * Build and Test Tools with AI-Powered Error Analysis
3
3
  *
4
4
  * Provides run_build, run_tests, and check_package_info tools that automatically
5
- * analyze errors and suggest fixes, following Claude Code's approach.
5
+ * analyze errors and suggest fixes, following Erosolar-CLI's approach.
6
6
  */
7
7
  import { exec } from 'node:child_process';
8
8
  import { existsSync, readFileSync } from 'node:fs';