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
@@ -0,0 +1,581 @@
1
+ /**
2
+ * UnifiedUIRenderer - Claude Code style unified UI
3
+ *
4
+ * ARCHITECTURE:
5
+ * ============
6
+ * Single component that owns ALL terminal interaction:
7
+ * 1. Event queue for sequential content rendering
8
+ * 2. Multi-line input with editing
9
+ * 3. Slash command autocomplete
10
+ * 4. Status bar with live updates
11
+ * 5. Clean floating prompt that stays at bottom
12
+ *
13
+ * DISPLAY LAYOUT:
14
+ * ==============
15
+ * ┌─────────────────────────────────┐
16
+ * │ Content Area (scrolls) │ <- Tool calls, responses, etc.
17
+ * │ (natural terminal scrollback) │ Just normal terminal output
18
+ * │ │
19
+ * │ │
20
+ * ├─────────────────────────────────┤
21
+ * │ Status: Model • Session • Ctx │ <- Live status bar
22
+ * ├─────────────────────────────────┤
23
+ * │ > User prompt here │ <- Multi-line input
24
+ * │ │ can span multiple lines │ With slash autocomplete
25
+ * │ │ /command suggestions below │
26
+ * └─────────────────────────────────┘
27
+ */
28
+ import * as readline from 'node:readline';
29
+ import { EventEmitter } from 'node:events';
30
+ import { theme } from './theme.js';
31
+ // ANSI escape sequences
32
+ const ESC = {
33
+ HIDE_CURSOR: '\x1b[?25l',
34
+ SHOW_CURSOR: '\x1b[?25h',
35
+ CLEAR_SCREEN: '\x1b[2J',
36
+ CLEAR_LINE: '\x1b[2K',
37
+ HOME: '\x1b[H',
38
+ TO: (row, col) => `\x1b[${row};${col}H`,
39
+ RESET: '\x1b[0m',
40
+ REVERSE: '\x1b[7m',
41
+ SAVE_CURSOR: '\x1b7',
42
+ RESTORE_CURSOR: '\x1b8',
43
+ SCROLL_UP: '\x1bM',
44
+ ERASE_DOWN: '\x1b[J',
45
+ };
46
+ /**
47
+ * Unified UI Renderer - handles ALL terminal UI
48
+ */
49
+ export class UnifiedUIRenderer extends EventEmitter {
50
+ output;
51
+ input;
52
+ rl;
53
+ // Terminal state
54
+ rows = 24;
55
+ cols = 80;
56
+ // Event queue
57
+ eventQueue = [];
58
+ isProcessing = false;
59
+ // Input state
60
+ buffer = '';
61
+ cursor = 0;
62
+ historyIndex = -1;
63
+ history = [];
64
+ suggestions = [];
65
+ availableCommands = [];
66
+ mode = 'idle';
67
+ // Status state
68
+ statusMessage = 'Ready';
69
+ statusMeta = {};
70
+ // Display state
71
+ promptHeight = 0;
72
+ lastRenderedLines = [];
73
+ constructor(output = process.stdout, input = process.stdin, options) {
74
+ super();
75
+ this.output = output;
76
+ this.input = input;
77
+ // Create readline interface for input handling
78
+ this.rl = readline.createInterface({
79
+ input: this.input,
80
+ output: this.output,
81
+ terminal: true,
82
+ prompt: '',
83
+ tabSize: 2,
84
+ });
85
+ // Disable default readline prompt
86
+ this.rl.setPrompt('');
87
+ this.updateTerminalSize();
88
+ // Listen for terminal resize
89
+ output.on('resize', () => {
90
+ this.updateTerminalSize();
91
+ this.renderPrompt();
92
+ });
93
+ this.setupInputHandlers();
94
+ }
95
+ /**
96
+ * Initialize the UI
97
+ */
98
+ initialize() {
99
+ this.write(ESC.CLEAR_SCREEN);
100
+ this.write(ESC.HOME);
101
+ this.renderPrompt();
102
+ this.write(ESC.SHOW_CURSOR);
103
+ }
104
+ /**
105
+ * Update terminal dimensions
106
+ */
107
+ updateTerminalSize() {
108
+ if (this.output.isTTY) {
109
+ this.rows = this.output.rows || 24;
110
+ this.cols = this.output.columns || 80;
111
+ }
112
+ }
113
+ /**
114
+ * Setup input handlers
115
+ */
116
+ setupInputHandlers() {
117
+ // Disable default line handler
118
+ this.rl.removeAllListeners('line');
119
+ // Handle keypress for custom input
120
+ readline.emitKeypressEvents(this.input, this.rl);
121
+ if (this.input.isTTY) {
122
+ this.input.setRawMode(true);
123
+ }
124
+ this.input.on('keypress', (str, key) => {
125
+ this.handleKeypress(str, key);
126
+ });
127
+ }
128
+ /**
129
+ * Handle keypress events
130
+ */
131
+ handleKeypress(str, key) {
132
+ if (!key)
133
+ return;
134
+ // Ctrl+C - interrupt
135
+ if (key.ctrl && key.name === 'c') {
136
+ if (this.buffer.length === 0) {
137
+ this.emit('interrupt');
138
+ }
139
+ else {
140
+ this.buffer = '';
141
+ this.cursor = 0;
142
+ this.renderPrompt();
143
+ }
144
+ return;
145
+ }
146
+ // Ctrl+D - exit if buffer empty
147
+ if (key.ctrl && key.name === 'd') {
148
+ if (this.buffer.length === 0) {
149
+ this.emit('interrupt');
150
+ }
151
+ return;
152
+ }
153
+ // Enter - submit or queue
154
+ if (key.name === 'return' || key.name === 'enter') {
155
+ const text = this.buffer.trim();
156
+ if (text) {
157
+ this.history.push(text);
158
+ this.historyIndex = -1;
159
+ // Display the user prompt in the content area BEFORE emitting
160
+ this.displayUserPrompt(text);
161
+ if (this.mode === 'streaming') {
162
+ this.emit('queue', text);
163
+ }
164
+ else {
165
+ this.emit('submit', text);
166
+ }
167
+ this.buffer = '';
168
+ this.cursor = 0;
169
+ this.suggestions = [];
170
+ }
171
+ this.renderPrompt();
172
+ return;
173
+ }
174
+ // Backspace
175
+ if (key.name === 'backspace') {
176
+ if (this.cursor > 0) {
177
+ this.buffer = this.buffer.slice(0, this.cursor - 1) + this.buffer.slice(this.cursor);
178
+ this.cursor--;
179
+ this.updateSuggestions();
180
+ this.renderPrompt();
181
+ }
182
+ return;
183
+ }
184
+ // Delete
185
+ if (key.name === 'delete') {
186
+ if (this.cursor < this.buffer.length) {
187
+ this.buffer = this.buffer.slice(0, this.cursor) + this.buffer.slice(this.cursor + 1);
188
+ this.updateSuggestions();
189
+ this.renderPrompt();
190
+ }
191
+ return;
192
+ }
193
+ // Left arrow
194
+ if (key.name === 'left') {
195
+ if (this.cursor > 0) {
196
+ this.cursor--;
197
+ this.renderPrompt();
198
+ }
199
+ return;
200
+ }
201
+ // Right arrow
202
+ if (key.name === 'right') {
203
+ if (this.cursor < this.buffer.length) {
204
+ this.cursor++;
205
+ this.renderPrompt();
206
+ }
207
+ return;
208
+ }
209
+ // Home
210
+ if (key.name === 'home') {
211
+ this.cursor = 0;
212
+ this.renderPrompt();
213
+ return;
214
+ }
215
+ // End
216
+ if (key.name === 'end') {
217
+ this.cursor = this.buffer.length;
218
+ this.renderPrompt();
219
+ return;
220
+ }
221
+ // Up arrow - history
222
+ if (key.name === 'up') {
223
+ if (this.history.length > 0) {
224
+ if (this.historyIndex === -1) {
225
+ this.historyIndex = this.history.length - 1;
226
+ }
227
+ else if (this.historyIndex > 0) {
228
+ this.historyIndex--;
229
+ }
230
+ this.buffer = this.history[this.historyIndex] || '';
231
+ this.cursor = this.buffer.length;
232
+ this.updateSuggestions();
233
+ this.renderPrompt();
234
+ }
235
+ return;
236
+ }
237
+ // Down arrow - history
238
+ if (key.name === 'down') {
239
+ if (this.historyIndex !== -1) {
240
+ this.historyIndex++;
241
+ if (this.historyIndex >= this.history.length) {
242
+ this.historyIndex = -1;
243
+ this.buffer = '';
244
+ }
245
+ else {
246
+ this.buffer = this.history[this.historyIndex] || '';
247
+ }
248
+ this.cursor = this.buffer.length;
249
+ this.updateSuggestions();
250
+ this.renderPrompt();
251
+ }
252
+ return;
253
+ }
254
+ // Tab - autocomplete
255
+ if (key.name === 'tab') {
256
+ if (this.suggestions.length > 0) {
257
+ const suggestion = this.suggestions[0];
258
+ if (suggestion) {
259
+ this.buffer = suggestion.command + ' ';
260
+ this.cursor = this.buffer.length;
261
+ this.suggestions = [];
262
+ this.renderPrompt();
263
+ }
264
+ }
265
+ return;
266
+ }
267
+ // Regular character input
268
+ if (str && !key.ctrl && !key.meta) {
269
+ this.buffer = this.buffer.slice(0, this.cursor) + str + this.buffer.slice(this.cursor);
270
+ this.cursor += str.length;
271
+ this.updateSuggestions();
272
+ this.renderPrompt();
273
+ }
274
+ }
275
+ /**
276
+ * Update slash command suggestions
277
+ */
278
+ updateSuggestions() {
279
+ if (this.buffer.startsWith('/')) {
280
+ const partial = this.buffer.toLowerCase();
281
+ this.suggestions = this.availableCommands
282
+ .filter(cmd => cmd.command.toLowerCase().startsWith(partial))
283
+ .slice(0, 5);
284
+ }
285
+ else {
286
+ this.suggestions = [];
287
+ }
288
+ }
289
+ /**
290
+ * Set available slash commands
291
+ */
292
+ setAvailableCommands(commands) {
293
+ this.availableCommands = commands;
294
+ this.updateSuggestions();
295
+ }
296
+ /**
297
+ * Add event to queue for sequential rendering
298
+ */
299
+ addEvent(type, content) {
300
+ if (!content)
301
+ return;
302
+ this.eventQueue.push({
303
+ type,
304
+ content,
305
+ timestamp: Date.now(),
306
+ });
307
+ if (!this.isProcessing) {
308
+ void this.processQueue();
309
+ }
310
+ }
311
+ /**
312
+ * Process event queue sequentially
313
+ */
314
+ async processQueue() {
315
+ if (this.isProcessing)
316
+ return;
317
+ this.isProcessing = true;
318
+ try {
319
+ while (this.eventQueue.length > 0) {
320
+ const event = this.eventQueue.shift();
321
+ if (!event)
322
+ continue;
323
+ await this.renderEvent(event);
324
+ // Small delay to prevent overwhelming output
325
+ await this.delay(1);
326
+ }
327
+ }
328
+ finally {
329
+ this.isProcessing = false;
330
+ }
331
+ }
332
+ /**
333
+ * Render a single event to the content area
334
+ */
335
+ async renderEvent(event) {
336
+ const formatted = this.formatContent(event);
337
+ if (!formatted)
338
+ return;
339
+ // Clear prompt area temporarily
340
+ this.clearPromptArea();
341
+ // Write content (will naturally scroll terminal)
342
+ this.output.write(formatted);
343
+ // Re-render prompt at bottom
344
+ this.renderPrompt();
345
+ }
346
+ /**
347
+ * Format content based on event type
348
+ */
349
+ formatContent(event) {
350
+ const bullet = theme.info('⏺');
351
+ const indent = ' ';
352
+ switch (event.type) {
353
+ case 'raw':
354
+ return event.content;
355
+ case 'streaming':
356
+ return event.content;
357
+ case 'banner':
358
+ case 'response': {
359
+ const lines = event.content.split('\n');
360
+ return (lines
361
+ .map((line, i) => (i === 0 ? `${bullet} ${line}` : `${indent}${line}`))
362
+ .join('\n') + '\n');
363
+ }
364
+ case 'tool-call':
365
+ return `\n${bullet} ${event.content}\n`;
366
+ case 'tool-result': {
367
+ const resultIcon = theme.success('⎿');
368
+ return ` ${resultIcon} ${event.content}\n\n`;
369
+ }
370
+ case 'error': {
371
+ const errorIcon = theme.error('✗');
372
+ return `\n${errorIcon} ${event.content}\n\n`;
373
+ }
374
+ default:
375
+ return event.content + '\n';
376
+ }
377
+ }
378
+ /**
379
+ * Clear the prompt area
380
+ */
381
+ clearPromptArea() {
382
+ if (this.promptHeight === 0)
383
+ return;
384
+ // Move up and clear each line of prompt
385
+ for (let i = 0; i < this.promptHeight; i++) {
386
+ this.write('\x1b[2K\x1b[1A');
387
+ }
388
+ this.write('\x1b[2K\r');
389
+ }
390
+ /**
391
+ * Render the prompt area (status + input)
392
+ */
393
+ renderPrompt() {
394
+ const lines = this.buildPromptLines();
395
+ // Clear old prompt
396
+ this.clearPromptArea();
397
+ // Write new prompt
398
+ for (const line of lines) {
399
+ this.write(line + '\n');
400
+ }
401
+ // Move cursor to correct position
402
+ this.positionCursor(lines);
403
+ this.promptHeight = lines.length;
404
+ this.lastRenderedLines = lines;
405
+ }
406
+ /**
407
+ * Build prompt lines
408
+ */
409
+ buildPromptLines() {
410
+ const lines = [];
411
+ // Status line
412
+ const statusLine = this.buildStatusLine();
413
+ if (statusLine) {
414
+ lines.push(statusLine);
415
+ }
416
+ // Divider
417
+ lines.push(theme.ui.muted('─'.repeat(this.cols)));
418
+ // Input line
419
+ const inputLine = this.buildInputLine();
420
+ lines.push(inputLine);
421
+ // Suggestions
422
+ if (this.suggestions.length > 0) {
423
+ for (const suggestion of this.suggestions) {
424
+ const suggestionLine = ` ${theme.ui.muted(suggestion.command)} - ${theme.ui.muted(suggestion.description)}`;
425
+ lines.push(suggestionLine);
426
+ }
427
+ }
428
+ return lines;
429
+ }
430
+ /**
431
+ * Build status line
432
+ */
433
+ buildStatusLine() {
434
+ const parts = [];
435
+ if (this.statusMessage) {
436
+ parts.push(theme.info(this.statusMessage));
437
+ }
438
+ if (this.statusMeta.model) {
439
+ parts.push(theme.ui.muted(`${this.statusMeta.model}`));
440
+ }
441
+ if (this.statusMeta.sessionTime) {
442
+ parts.push(theme.ui.muted(this.statusMeta.sessionTime));
443
+ }
444
+ if (this.statusMeta.contextPercent !== undefined) {
445
+ const ctx = this.statusMeta.contextPercent;
446
+ const color = ctx > 90 ? theme.error : ctx > 70 ? theme.warning : theme.ui.muted;
447
+ parts.push(color(`Context ${ctx}%`));
448
+ }
449
+ return parts.join(theme.ui.muted(' • '));
450
+ }
451
+ /**
452
+ * Build input line with cursor
453
+ */
454
+ buildInputLine() {
455
+ const prompt = this.mode === 'streaming' ? theme.ui.muted('⋯ ') : theme.primary('> ');
456
+ if (this.buffer.length === 0) {
457
+ return prompt;
458
+ }
459
+ // Insert cursor
460
+ const before = this.buffer.slice(0, this.cursor);
461
+ const at = this.buffer.charAt(this.cursor) || ' ';
462
+ const after = this.buffer.slice(this.cursor + 1);
463
+ return prompt + before + ESC.REVERSE + at + ESC.RESET + after;
464
+ }
465
+ /**
466
+ * Position cursor correctly in the input
467
+ */
468
+ positionCursor(lines) {
469
+ // Cursor should be on the input line
470
+ // The input line is always at index (status ? 2 : 1)
471
+ const statusOffset = this.statusMessage ? 2 : 1;
472
+ const cursorRow = statusOffset + 1; // +1 because we already wrote all lines
473
+ // Column is prompt length + cursor position
474
+ const promptLen = this.mode === 'streaming' ? 2 : 2; // '> ' or '⋯ '
475
+ const cursorCol = promptLen + this.cursor + 1;
476
+ // Move to correct position (we're currently at the end of output)
477
+ this.write(`\x1b[${this.promptHeight - lines.length + cursorRow};${cursorCol}H`);
478
+ }
479
+ /**
480
+ * Update status message
481
+ */
482
+ updateStatus(message) {
483
+ this.statusMessage = message;
484
+ this.renderPrompt();
485
+ }
486
+ /**
487
+ * Update status metadata
488
+ */
489
+ updateStatusMeta(meta) {
490
+ this.statusMeta = { ...this.statusMeta, ...meta };
491
+ this.renderPrompt();
492
+ }
493
+ /**
494
+ * Set mode (idle or streaming)
495
+ */
496
+ setMode(mode) {
497
+ this.mode = mode;
498
+ this.renderPrompt();
499
+ }
500
+ /**
501
+ * Get current buffer
502
+ */
503
+ getBuffer() {
504
+ return this.buffer;
505
+ }
506
+ /**
507
+ * Set buffer content
508
+ */
509
+ setBuffer(text, cursorPos) {
510
+ this.buffer = text;
511
+ this.cursor = cursorPos ?? text.length;
512
+ this.updateSuggestions();
513
+ this.renderPrompt();
514
+ }
515
+ /**
516
+ * Clear buffer
517
+ */
518
+ clearBuffer() {
519
+ this.buffer = '';
520
+ this.cursor = 0;
521
+ this.suggestions = [];
522
+ this.renderPrompt();
523
+ }
524
+ /**
525
+ * Display user prompt in content area (Claude Code style)
526
+ */
527
+ displayUserPrompt(text) {
528
+ // Clear prompt area
529
+ this.clearPromptArea();
530
+ // Format user prompt with '>' prefix (Claude Code style)
531
+ const userIcon = theme.user('>');
532
+ const formatted = `\n${userIcon} ${text}\n`;
533
+ // Write to content area
534
+ this.output.write(formatted);
535
+ }
536
+ /**
537
+ * Cleanup - reset terminal state
538
+ */
539
+ cleanup() {
540
+ this.clearPromptArea();
541
+ this.write(ESC.SHOW_CURSOR);
542
+ this.write('\n');
543
+ if (this.input.isTTY) {
544
+ this.input.setRawMode(false);
545
+ }
546
+ this.rl.close();
547
+ }
548
+ /**
549
+ * Write to output
550
+ */
551
+ write(data) {
552
+ this.output.write(data);
553
+ }
554
+ /**
555
+ * Utility delay
556
+ */
557
+ delay(ms) {
558
+ return new Promise(resolve => setTimeout(resolve, ms));
559
+ }
560
+ /**
561
+ * Wait for queue to finish
562
+ */
563
+ async waitForCompletion() {
564
+ while (this.isProcessing || this.eventQueue.length > 0) {
565
+ await this.delay(10);
566
+ }
567
+ }
568
+ /**
569
+ * Get queue length
570
+ */
571
+ get queueLength() {
572
+ return this.eventQueue.length;
573
+ }
574
+ /**
575
+ * Full render (for resize)
576
+ */
577
+ render() {
578
+ this.renderPrompt();
579
+ }
580
+ }
581
+ //# sourceMappingURL=UnifiedUIRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnifiedUIRenderer.js","sourceRoot":"","sources":["../../src/ui/UnifiedUIRenderer.ts"],"names":[],"mappings":"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"}