erosolar-cli 1.7.429 → 1.7.431

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 (87) 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/preferences.d.ts +3 -1
  18. package/dist/core/preferences.d.ts.map +1 -1
  19. package/dist/core/preferences.js +4 -2
  20. package/dist/core/preferences.js.map +1 -1
  21. package/dist/core/validationRunner.d.ts +1 -1
  22. package/dist/core/validationRunner.js +1 -1
  23. package/dist/shell/interactiveShell.d.ts +5 -1
  24. package/dist/shell/interactiveShell.d.ts.map +1 -1
  25. package/dist/shell/interactiveShell.js +120 -88
  26. package/dist/shell/interactiveShell.js.map +1 -1
  27. package/dist/shell/systemPrompt.d.ts.map +1 -1
  28. package/dist/shell/systemPrompt.js +14 -34
  29. package/dist/shell/systemPrompt.js.map +1 -1
  30. package/dist/shell/terminalInputAdapter.d.ts +77 -85
  31. package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
  32. package/dist/shell/terminalInputAdapter.js +163 -223
  33. package/dist/shell/terminalInputAdapter.js.map +1 -1
  34. package/dist/shell/vimMode.d.ts +1 -1
  35. package/dist/shell/vimMode.js +1 -1
  36. package/dist/tools/buildTools.d.ts +1 -1
  37. package/dist/tools/buildTools.js +1 -1
  38. package/dist/tools/diffUtils.d.ts +2 -2
  39. package/dist/tools/diffUtils.js +2 -2
  40. package/dist/tools/editTools.js +4 -4
  41. package/dist/tools/editTools.js.map +1 -1
  42. package/dist/tools/localExplore.d.ts +3 -3
  43. package/dist/tools/localExplore.js +3 -3
  44. package/dist/tools/skillTools.js +2 -2
  45. package/dist/tools/skillTools.js.map +1 -1
  46. package/dist/tools/validationTools.js +1 -1
  47. package/dist/ui/DisplayEventQueue.d.ts +99 -0
  48. package/dist/ui/DisplayEventQueue.d.ts.map +1 -0
  49. package/dist/ui/DisplayEventQueue.js +167 -0
  50. package/dist/ui/DisplayEventQueue.js.map +1 -0
  51. package/dist/ui/SequentialRenderer.d.ts +69 -0
  52. package/dist/ui/SequentialRenderer.d.ts.map +1 -0
  53. package/dist/ui/SequentialRenderer.js +137 -0
  54. package/dist/ui/SequentialRenderer.js.map +1 -0
  55. package/dist/ui/ShellUIAdapter.d.ts +18 -6
  56. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  57. package/dist/ui/ShellUIAdapter.js +65 -14
  58. package/dist/ui/ShellUIAdapter.js.map +1 -1
  59. package/dist/ui/UnifiedUIRenderer.d.ts +188 -0
  60. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -0
  61. package/dist/ui/UnifiedUIRenderer.js +581 -0
  62. package/dist/ui/UnifiedUIRenderer.js.map +1 -0
  63. package/dist/ui/display.d.ts +100 -173
  64. package/dist/ui/display.d.ts.map +1 -1
  65. package/dist/ui/display.js +364 -926
  66. package/dist/ui/display.js.map +1 -1
  67. package/dist/ui/errorFormatter.d.ts +1 -1
  68. package/dist/ui/errorFormatter.js +1 -1
  69. package/dist/ui/shortcutsHelp.d.ts +6 -6
  70. package/dist/ui/shortcutsHelp.js +6 -6
  71. package/dist/ui/streamingFormatter.d.ts +2 -5
  72. package/dist/ui/streamingFormatter.d.ts.map +1 -1
  73. package/dist/ui/streamingFormatter.js +9 -33
  74. package/dist/ui/streamingFormatter.js.map +1 -1
  75. package/dist/ui/textHighlighter.d.ts +8 -8
  76. package/dist/ui/textHighlighter.js +9 -9
  77. package/dist/ui/textHighlighter.js.map +1 -1
  78. package/dist/ui/theme.d.ts +2 -2
  79. package/dist/ui/theme.js +4 -4
  80. package/dist/ui/theme.js.map +1 -1
  81. package/dist/ui/toolDisplay.d.ts +8 -8
  82. package/dist/ui/toolDisplay.js +8 -8
  83. package/package.json +1 -1
  84. package/dist/shell/terminalInput.d.ts +0 -619
  85. package/dist/shell/terminalInput.d.ts.map +0 -1
  86. package/dist/shell/terminalInput.js +0 -2699
  87. package/dist/shell/terminalInput.js.map +0 -1
@@ -1,406 +1,346 @@
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;
20
- constructor(inStream, outStream, callbacks) {
17
+ editMode = 'display-edits';
18
+ scrollbackBuffer = [];
19
+ constructor(inStream, outStream, callbacks, existingRenderer) {
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
+ // Use existing renderer if provided, otherwise create new one
23
+ this.renderer = existingRenderer ?? new UnifiedUIRenderer(outStream, inStream);
24
+ // Wire up renderer events to callbacks
25
+ this.renderer.on('submit', (text) => this.callbacks.onSubmit(text));
26
+ this.renderer.on('queue', (text) => this.callbacks.onQueue(text));
27
+ this.renderer.on('interrupt', () => this.callbacks.onInterrupt());
42
28
  }
43
29
  /**
44
- * Start capturing input. Does NOT render - caller should render after setup.
30
+ * Start capturing input
45
31
  */
46
32
  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
33
+ this.renderer.initialize();
63
34
  }
64
35
  /**
65
36
  * Stop capturing input
66
37
  */
67
38
  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
- }
39
+ this.renderer.cleanup();
85
40
  }
86
41
  /**
87
- * Set streaming mode (input will be queued instead of submitted)
42
+ * Set streaming mode
88
43
  */
89
44
  setStreaming(streaming) {
90
- this.input.setMode(streaming ? 'streaming' : 'idle');
45
+ this.renderer.setMode(streaming ? 'streaming' : 'idle');
91
46
  }
92
47
  /**
93
- * Pin top rows (e.g., the launch banner) outside the scroll region.
48
+ * Legacy: Pin top rows (no-op with new renderer)
94
49
  */
95
- setPinnedHeaderLines(count) {
96
- this.input.setPinnedHeaderLines(count);
50
+ setPinnedHeaderLines(_count) {
51
+ // No-op - new renderer doesn't use pinned headers
97
52
  }
98
53
  /**
99
54
  * Get current buffer content
100
55
  */
101
56
  getBuffer() {
102
- return this.input.getBuffer();
57
+ return this.renderer.getBuffer();
103
58
  }
104
59
  /**
105
60
  * Set buffer content
106
61
  */
107
62
  setBuffer(text, cursorPos) {
108
- this.input.setBuffer(text, cursorPos);
63
+ this.renderer.setBuffer(text, cursorPos);
109
64
  }
110
65
  /**
111
66
  * Clear the buffer
112
67
  */
113
68
  clear() {
114
- this.input.clear();
69
+ this.renderer.clearBuffer();
115
70
  }
116
71
  /**
117
- * Update context usage indicator (0-100, null to clear)
72
+ * Update context usage
118
73
  */
119
- setContextUsage(percentage, autoCompactThreshold) {
120
- this.input.updateContextUsage(percentage, autoCompactThreshold);
74
+ setContextUsage(percentage, _autoCompactThreshold) {
75
+ if (percentage !== null) {
76
+ this.renderer.updateStatusMeta({ contextPercent: percentage });
77
+ }
121
78
  }
122
79
  /**
123
- * Surface mode toggle states (verification/auto-continue) in the control bar.
80
+ * Surface mode toggles
124
81
  */
125
82
  setModeToggles(options) {
126
- this.input.setModeToggles(options);
83
+ // Store for potential future use
84
+ // The renderer handles these through shortcuts
127
85
  }
128
86
  /**
129
- * Update the inline status message shown before the prompt (e.g., streaming heartbeat).
87
+ * Update status message
130
88
  */
131
89
  setStatusMessage(message) {
132
- this.input.setStatusMessage(message);
90
+ this.renderer.updateStatus(message);
133
91
  }
134
92
  /**
135
- * Set an override status message (warnings, errors) that shows alongside the main status.
136
- * Both streaming label and override can be displayed simultaneously.
93
+ * Set override status (warnings, errors)
137
94
  */
138
95
  setOverrideStatus(message) {
139
- this.input.setOverrideStatus(message);
96
+ if (message) {
97
+ this.renderer.updateStatus(message);
98
+ }
140
99
  }
141
100
  /**
142
- * Set the streaming label (e.g., "Streaming response...").
143
- * Can be shown alongside override status messages.
101
+ * Set streaming label
144
102
  */
145
103
  setStreamingLabel(label) {
146
- this.input.setStreamingLabel(label);
104
+ if (label) {
105
+ this.renderer.updateStatus(label);
106
+ }
147
107
  }
148
108
  /**
149
- * Surface meta header information (elapsed, tokens/context) above the divider.
109
+ * Surface meta status
150
110
  */
151
111
  setMetaStatus(meta) {
152
- this.input.setMetaStatus(meta);
112
+ // Update renderer status metadata
113
+ const statusMeta = {};
114
+ if (meta.tokensUsed != null && meta.tokenLimit != null) {
115
+ const percent = meta.tokenLimit > 0
116
+ ? Math.round((meta.tokensUsed / meta.tokenLimit) * 100)
117
+ : 0;
118
+ statusMeta.contextPercent = percent;
119
+ }
120
+ this.renderer.updateStatusMeta(statusMeta);
153
121
  }
154
122
  /**
155
- * Clear all status messages at once (convenience method).
123
+ * Clear all status
156
124
  */
157
125
  clearAllStatus() {
158
- this.input.clearAllStatus();
126
+ this.renderer.updateStatus(null);
159
127
  }
160
128
  /**
161
- * Surface model/provider context in the controls bar.
129
+ * Set model context
162
130
  */
163
131
  setModelContext(options) {
164
- this.input.setModelContext(options);
132
+ this.renderer.updateStatusMeta({
133
+ model: options.model || undefined,
134
+ provider: options.provider || undefined,
135
+ });
165
136
  }
166
137
  /**
167
- * Set available slash commands for autocomplete.
168
- * When user types "/" these commands are shown for selection.
138
+ * Set available slash commands
169
139
  */
170
140
  setAvailableCommands(commands) {
171
- this.input.setAvailableCommands(commands);
141
+ this.renderer.setAvailableCommands(commands);
172
142
  }
173
143
  /**
174
- * Set the edit guard mode explicitly
144
+ * Set edit mode
175
145
  */
176
146
  setEditMode(mode) {
177
- this.input.applyEditMode(mode);
147
+ this.editMode = mode;
178
148
  }
179
149
  /**
180
- * Get current edit guard mode
150
+ * Apply edit mode (alias)
151
+ */
152
+ applyEditMode(mode) {
153
+ this.setEditMode(mode);
154
+ }
155
+ /**
156
+ * Get edit mode
181
157
  */
182
158
  getEditMode() {
183
- return this.input.getEditMode();
159
+ return this.editMode;
184
160
  }
185
161
  /**
186
- * Get queued inputs
162
+ * Get queued inputs (legacy - renderer handles this internally)
187
163
  */
188
164
  getQueue() {
189
- return this.input.getQueue();
165
+ return [];
190
166
  }
191
167
  /**
192
- * Dequeue next input
168
+ * Dequeue (legacy - no-op)
193
169
  */
194
170
  dequeue() {
195
- return this.input.dequeue();
171
+ return undefined;
196
172
  }
197
173
  /**
198
- * Force a re-render
174
+ * Force render
199
175
  */
200
176
  render() {
201
- this.input.forceRender();
177
+ this.renderer.render();
202
178
  }
203
179
  /**
204
- * Force a re-render (alias for render)
180
+ * Force render (alias)
205
181
  */
206
182
  forceRender() {
207
- this.input.forceRender();
183
+ this.renderer.render();
208
184
  }
209
185
  /**
210
- * Stream content above the pinned chat box (Claude Code method).
211
- * Automatically enables scroll region on first call.
186
+ * Stream content (renderer handles this via Display now)
212
187
  */
213
- streamContent(content) {
214
- this.input.streamContent(content);
188
+ streamContent(_content) {
189
+ // Content streaming is handled by Display -> renderer.addEvent()
215
190
  }
216
191
  /**
217
- * Enable scroll region (Claude Code method).
218
- * Chat box is pinned below scroll region.
192
+ * Enable scroll region (legacy - no-op)
219
193
  */
220
- enableScrollRegion(options) {
221
- this.input.enterStreamingScrollRegion(options);
194
+ enableScrollRegion(_options) {
195
+ // No-op - natural scrolling
222
196
  }
223
197
  /**
224
- * @deprecated Use streamContent() instead
225
- * Write content directly into the scroll region.
198
+ * Legacy: Write to scroll region
226
199
  */
227
- writeToScrollRegion(content) {
228
- this.input.writeToScrollRegion(content);
200
+ writeToScrollRegion(_content) {
201
+ // No-op - use Display.stream() instead
229
202
  }
230
203
  /**
231
- * Expose scroll region status for callers that need to choose write method.
204
+ * Check if scroll region active (always false)
232
205
  */
233
206
  isScrollRegionActive() {
234
- return this.input.isScrollRegionActive();
207
+ return false;
235
208
  }
236
209
  /**
237
- * Enter alternate screen buffer.
210
+ * Enter alternate screen (no-op)
238
211
  */
239
212
  enterAlternateScreen() {
240
- this.input.enterAlternateScreen();
213
+ // No-op - using native scrollback
241
214
  }
242
215
  /**
243
- * Exit alternate screen buffer.
216
+ * Exit alternate screen (no-op)
244
217
  */
245
218
  exitAlternateScreen() {
246
- this.input.exitAlternateScreen();
219
+ // No-op
247
220
  }
248
221
  /**
249
- * Clear the entire terminal screen and reset content position.
250
- * This removes all content including the launching command.
222
+ * Clear screen
251
223
  */
252
224
  clearScreen() {
253
- this.input.clearScreen();
225
+ // Renderer handles this
254
226
  }
255
227
  /**
256
- * Enter streaming scroll region mode.
257
- * Call once at the start of streaming.
228
+ * Enter streaming scroll region (no-op)
258
229
  */
259
- enterStreamingScrollRegion(options) {
260
- this.input.enterStreamingScrollRegion(options);
230
+ enterStreamingScrollRegion(_options) {
231
+ this.renderer.setMode('streaming');
261
232
  }
262
233
  /**
263
- * Exit streaming scroll region mode.
264
- * Call once at the end of streaming.
234
+ * Exit streaming scroll region
265
235
  */
266
- exitStreamingScrollRegion(options) {
267
- this.input.exitStreamingScrollRegion(options);
236
+ exitStreamingScrollRegion(_options) {
237
+ this.renderer.setMode('idle');
268
238
  }
269
239
  /**
270
- * Get scrollback buffer content for persistence.
240
+ * Get scrollback buffer
271
241
  */
272
242
  getScrollbackBuffer() {
273
- return this.input.getScrollbackBuffer();
243
+ return this.scrollbackBuffer;
274
244
  }
275
245
  /**
276
- * Load scrollback buffer for restoration.
246
+ * Load scrollback buffer
277
247
  */
278
248
  loadScrollbackBuffer(lines) {
279
- this.input.loadScrollbackBuffer(lines);
249
+ this.scrollbackBuffer = lines;
280
250
  }
281
251
  /**
282
- * Clear scrollback buffer.
252
+ * Clear scrollback
283
253
  */
284
254
  clearScrollbackBuffer() {
285
- this.input.clearScrollbackBuffer();
255
+ this.scrollbackBuffer = [];
286
256
  }
287
257
  /**
288
- * Check if alternate screen buffer is currently active.
258
+ * Check if alternate screen active (always false)
289
259
  */
290
260
  isAlternateScreenActive() {
291
- return this.input.isAlternateScreenActive();
261
+ return false;
292
262
  }
293
263
  /**
294
- * Get a snapshot of the scrollback buffer (for display on exit).
264
+ * Get scrollback snapshot
295
265
  */
296
266
  getScrollbackSnapshot() {
297
- return this.input.getScrollbackSnapshot();
267
+ return this.scrollbackBuffer;
298
268
  }
299
269
  /**
300
- * Reset content position to top of scroll region.
270
+ * Reset content position (no-op)
301
271
  */
302
272
  resetContentPosition() {
303
- this.input.resetContentPosition();
273
+ // No-op
304
274
  }
305
275
  /**
306
- * Set the content row explicitly (used after banner is written).
276
+ * Set content row (no-op)
307
277
  */
308
- setContentRow(row) {
309
- this.input.setContentRow(row);
278
+ setContentRow(_row) {
279
+ // No-op
310
280
  }
311
281
  /**
312
- * Get the current content row position.
282
+ * Get content row
313
283
  */
314
284
  getContentRow() {
315
- return this.input.getContentRow();
285
+ return 0;
316
286
  }
317
287
  /**
318
- * Handle terminal resize
288
+ * Handle resize
319
289
  */
320
290
  handleResize() {
321
- this.input.handleResize();
291
+ this.renderer.render();
322
292
  }
323
293
  /**
324
- * Dispose and clean up
294
+ * Dispose
325
295
  */
326
296
  dispose() {
327
- this.stop();
328
- this.input.dispose();
297
+ this.renderer.cleanup();
329
298
  }
330
299
  /**
331
- * Get the underlying TerminalInput instance
300
+ * Get underlying renderer (replaces getTerminalInput)
332
301
  */
333
302
  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);
303
+ return {
304
+ getUiSnapshot: () => ({
305
+ buffer: this.renderer.getBuffer(),
306
+ cursor: this.renderer.getBuffer().length,
307
+ suggestions: [],
308
+ statusMessage: null,
309
+ overrideStatusMessage: null,
310
+ streamingLabel: null,
311
+ statusSummary: null,
312
+ meta: {},
313
+ modeToggles: {},
314
+ modelContext: {},
315
+ render: {
316
+ inputLines: [this.renderer.getBuffer()],
317
+ cursorLine: 0,
318
+ cursorCol: this.renderer.getBuffer().length,
319
+ promptChar: '> ',
320
+ continuationChar: '│ ',
321
+ metaLines: [],
322
+ controlLines: [],
323
+ },
324
+ }),
368
325
  };
369
326
  }
370
- restoreRawDataInterception() {
371
- if (this.originalEmit) {
372
- this.inStream.emit = this.originalEmit;
373
- this.originalEmit = null;
374
- }
327
+ /**
328
+ * Get UI snapshot
329
+ */
330
+ getUiSnapshot() {
331
+ return this.getTerminalInput().getUiSnapshot();
375
332
  }
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);
333
+ /**
334
+ * Register output interceptor (no-op - renderer handles this)
335
+ */
336
+ registerOutputInterceptor(_display) {
337
+ // No-op - Display already connected to renderer
398
338
  }
399
339
  }
400
340
  /**
401
- * Create a standalone terminal input (for testing or simple use cases)
341
+ * Create a terminal input adapter
402
342
  */
403
- export function createTerminalInput(callbacks, inStream = process.stdin, outStream = process.stdout) {
404
- return new TerminalInputAdapter(inStream, outStream, callbacks);
343
+ export function createTerminalInput(callbacks, inStream = process.stdin, outStream = process.stdout, existingRenderer) {
344
+ return new TerminalInputAdapter(inStream, outStream, callbacks, existingRenderer);
405
345
  }
406
346
  //# sourceMappingURL=terminalInputAdapter.js.map
@@ -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';