erosolar-cli 2.1.170 → 2.1.172

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 (172) hide show
  1. package/README.md +1 -1
  2. package/agents/erosolar-code.rules.json +2 -2
  3. package/agents/general.rules.json +3 -21
  4. package/dist/StringUtils.d.ts +8 -0
  5. package/dist/StringUtils.d.ts.map +1 -0
  6. package/dist/StringUtils.js +11 -0
  7. package/dist/StringUtils.js.map +1 -0
  8. package/dist/capabilities/statusCapability.js +2 -2
  9. package/dist/capabilities/statusCapability.js.map +1 -1
  10. package/dist/contracts/agent-schemas.json +5 -5
  11. package/dist/core/agent.d.ts +24 -83
  12. package/dist/core/agent.d.ts.map +1 -1
  13. package/dist/core/agent.js +248 -499
  14. package/dist/core/agent.js.map +1 -1
  15. package/dist/core/aiFlowSupervisor.d.ts +44 -0
  16. package/dist/core/aiFlowSupervisor.d.ts.map +1 -0
  17. package/dist/core/aiFlowSupervisor.js +299 -0
  18. package/dist/core/aiFlowSupervisor.js.map +1 -0
  19. package/dist/core/cliTestHarness.d.ts +200 -0
  20. package/dist/core/cliTestHarness.d.ts.map +1 -0
  21. package/dist/core/cliTestHarness.js +549 -0
  22. package/dist/core/cliTestHarness.js.map +1 -0
  23. package/dist/core/preferences.d.ts +0 -1
  24. package/dist/core/preferences.d.ts.map +1 -1
  25. package/dist/core/preferences.js +1 -8
  26. package/dist/core/preferences.js.map +1 -1
  27. package/dist/core/schemaValidator.js +3 -3
  28. package/dist/core/schemaValidator.js.map +1 -1
  29. package/dist/core/testUtils.d.ts +121 -0
  30. package/dist/core/testUtils.d.ts.map +1 -0
  31. package/dist/core/testUtils.js +235 -0
  32. package/dist/core/testUtils.js.map +1 -0
  33. package/dist/core/toolPreconditions.d.ts +11 -0
  34. package/dist/core/toolPreconditions.d.ts.map +1 -1
  35. package/dist/core/toolPreconditions.js +164 -33
  36. package/dist/core/toolPreconditions.js.map +1 -1
  37. package/dist/core/toolRuntime.d.ts.map +1 -1
  38. package/dist/core/toolRuntime.js +114 -9
  39. package/dist/core/toolRuntime.js.map +1 -1
  40. package/dist/core/toolValidation.d.ts +116 -0
  41. package/dist/core/toolValidation.d.ts.map +1 -0
  42. package/dist/core/toolValidation.js +282 -0
  43. package/dist/core/toolValidation.js.map +1 -0
  44. package/dist/core/updateChecker.d.ts +1 -61
  45. package/dist/core/updateChecker.d.ts.map +1 -1
  46. package/dist/core/updateChecker.js +3 -147
  47. package/dist/core/updateChecker.js.map +1 -1
  48. package/dist/headless/headlessApp.d.ts.map +1 -1
  49. package/dist/headless/headlessApp.js +39 -0
  50. package/dist/headless/headlessApp.js.map +1 -1
  51. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  52. package/dist/plugins/tools/nodeDefaults.js +2 -0
  53. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  54. package/dist/providers/openaiResponsesProvider.d.ts.map +1 -1
  55. package/dist/providers/openaiResponsesProvider.js +74 -79
  56. package/dist/providers/openaiResponsesProvider.js.map +1 -1
  57. package/dist/runtime/agentController.d.ts.map +1 -1
  58. package/dist/runtime/agentController.js +3 -6
  59. package/dist/runtime/agentController.js.map +1 -1
  60. package/dist/runtime/agentSession.d.ts +2 -0
  61. package/dist/runtime/agentSession.d.ts.map +1 -1
  62. package/dist/runtime/agentSession.js +2 -2
  63. package/dist/runtime/agentSession.js.map +1 -1
  64. package/dist/shell/interactiveShell.d.ts +18 -11
  65. package/dist/shell/interactiveShell.d.ts.map +1 -1
  66. package/dist/shell/interactiveShell.js +291 -273
  67. package/dist/shell/interactiveShell.js.map +1 -1
  68. package/dist/shell/shellApp.d.ts.map +1 -1
  69. package/dist/shell/shellApp.js +1 -7
  70. package/dist/shell/shellApp.js.map +1 -1
  71. package/dist/shell/systemPrompt.d.ts.map +1 -1
  72. package/dist/shell/systemPrompt.js +15 -4
  73. package/dist/shell/systemPrompt.js.map +1 -1
  74. package/dist/subagents/taskRunner.js +1 -2
  75. package/dist/subagents/taskRunner.js.map +1 -1
  76. package/dist/tools/bashTools.d.ts.map +1 -1
  77. package/dist/tools/bashTools.js +8 -101
  78. package/dist/tools/bashTools.js.map +1 -1
  79. package/dist/tools/diffUtils.d.ts +2 -8
  80. package/dist/tools/diffUtils.d.ts.map +1 -1
  81. package/dist/tools/diffUtils.js +13 -72
  82. package/dist/tools/diffUtils.js.map +1 -1
  83. package/dist/tools/grepTools.d.ts.map +1 -1
  84. package/dist/tools/grepTools.js +2 -10
  85. package/dist/tools/grepTools.js.map +1 -1
  86. package/dist/tools/planningTools.d.ts +10 -0
  87. package/dist/tools/planningTools.d.ts.map +1 -1
  88. package/dist/tools/planningTools.js +16 -0
  89. package/dist/tools/planningTools.js.map +1 -1
  90. package/dist/tools/searchTools.d.ts.map +1 -1
  91. package/dist/tools/searchTools.js +2 -4
  92. package/dist/tools/searchTools.js.map +1 -1
  93. package/dist/ui/PromptController.d.ts +4 -1
  94. package/dist/ui/PromptController.d.ts.map +1 -1
  95. package/dist/ui/PromptController.js +7 -1
  96. package/dist/ui/PromptController.js.map +1 -1
  97. package/dist/ui/ShellUIAdapter.d.ts +28 -292
  98. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  99. package/dist/ui/ShellUIAdapter.js +121 -1513
  100. package/dist/ui/ShellUIAdapter.js.map +1 -1
  101. package/dist/ui/UnifiedUIRenderer.d.ts +30 -133
  102. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  103. package/dist/ui/UnifiedUIRenderer.js +370 -939
  104. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  105. package/dist/ui/animatedStatus.d.ts +6 -128
  106. package/dist/ui/animatedStatus.d.ts.map +1 -1
  107. package/dist/ui/animatedStatus.js +50 -383
  108. package/dist/ui/animatedStatus.js.map +1 -1
  109. package/dist/ui/display.d.ts +26 -182
  110. package/dist/ui/display.d.ts.map +1 -1
  111. package/dist/ui/display.js +97 -678
  112. package/dist/ui/display.js.map +1 -1
  113. package/dist/ui/layout.d.ts +1 -0
  114. package/dist/ui/layout.d.ts.map +1 -1
  115. package/dist/ui/layout.js +12 -0
  116. package/dist/ui/layout.js.map +1 -1
  117. package/dist/ui/orchestration/UIUpdateCoordinator.d.ts +7 -61
  118. package/dist/ui/orchestration/UIUpdateCoordinator.d.ts.map +1 -1
  119. package/dist/ui/orchestration/UIUpdateCoordinator.js +20 -232
  120. package/dist/ui/orchestration/UIUpdateCoordinator.js.map +1 -1
  121. package/dist/ui/planOverlay.d.ts +28 -0
  122. package/dist/ui/planOverlay.d.ts.map +1 -0
  123. package/dist/ui/planOverlay.js +156 -0
  124. package/dist/ui/planOverlay.js.map +1 -0
  125. package/dist/ui/shortcutsHelp.d.ts.map +1 -1
  126. package/dist/ui/shortcutsHelp.js +1 -0
  127. package/dist/ui/shortcutsHelp.js.map +1 -1
  128. package/dist/ui/streamingFormatter.d.ts +30 -0
  129. package/dist/ui/streamingFormatter.d.ts.map +1 -0
  130. package/dist/ui/streamingFormatter.js +91 -0
  131. package/dist/ui/streamingFormatter.js.map +1 -0
  132. package/dist/ui/unified/index.d.ts +1 -30
  133. package/dist/ui/unified/index.d.ts.map +1 -1
  134. package/dist/ui/unified/index.js +2 -45
  135. package/dist/ui/unified/index.js.map +1 -1
  136. package/dist/utils/errorUtils.d.ts +16 -0
  137. package/dist/utils/errorUtils.d.ts.map +1 -0
  138. package/dist/utils/errorUtils.js +66 -0
  139. package/dist/utils/errorUtils.js.map +1 -0
  140. package/package.json +2 -1
  141. package/dist/core/reliabilityPrompt.d.ts +0 -9
  142. package/dist/core/reliabilityPrompt.d.ts.map +0 -1
  143. package/dist/core/reliabilityPrompt.js +0 -31
  144. package/dist/core/reliabilityPrompt.js.map +0 -1
  145. package/dist/ui/UnifiedUIController.d.ts +0 -81
  146. package/dist/ui/UnifiedUIController.d.ts.map +0 -1
  147. package/dist/ui/UnifiedUIController.js +0 -212
  148. package/dist/ui/UnifiedUIController.js.map +0 -1
  149. package/dist/ui/animation/AnimationScheduler.d.ts +0 -192
  150. package/dist/ui/animation/AnimationScheduler.d.ts.map +0 -1
  151. package/dist/ui/animation/AnimationScheduler.js +0 -432
  152. package/dist/ui/animation/AnimationScheduler.js.map +0 -1
  153. package/dist/ui/inPlaceUpdater.d.ts +0 -181
  154. package/dist/ui/inPlaceUpdater.d.ts.map +0 -1
  155. package/dist/ui/inPlaceUpdater.js +0 -515
  156. package/dist/ui/inPlaceUpdater.js.map +0 -1
  157. package/dist/ui/interrupts/InterruptManager.d.ts +0 -142
  158. package/dist/ui/interrupts/InterruptManager.d.ts.map +0 -1
  159. package/dist/ui/interrupts/InterruptManager.js +0 -439
  160. package/dist/ui/interrupts/InterruptManager.js.map +0 -1
  161. package/dist/ui/telemetry/ResponseTracker.d.ts +0 -22
  162. package/dist/ui/telemetry/ResponseTracker.d.ts.map +0 -1
  163. package/dist/ui/telemetry/ResponseTracker.js +0 -60
  164. package/dist/ui/telemetry/ResponseTracker.js.map +0 -1
  165. package/dist/ui/telemetry/UITelemetry.d.ts +0 -181
  166. package/dist/ui/telemetry/UITelemetry.d.ts.map +0 -1
  167. package/dist/ui/telemetry/UITelemetry.js +0 -446
  168. package/dist/ui/telemetry/UITelemetry.js.map +0 -1
  169. package/dist/ui/unified/layout.d.ts +0 -12
  170. package/dist/ui/unified/layout.d.ts.map +0 -1
  171. package/dist/ui/unified/layout.js +0 -96
  172. package/dist/ui/unified/layout.js.map +0 -1
@@ -1,432 +0,0 @@
1
- /**
2
- * AnimationScheduler - Coordinates animations, spinners, progress bars, and elapsed time
3
- * Provides frame-based animation updates and smooth transitions
4
- */
5
- import { EventEmitter } from 'events';
6
- import { performance } from 'perf_hooks';
7
- export class AnimationScheduler extends EventEmitter {
8
- animations = new Map();
9
- animationLoop = null;
10
- targetFPS = 30;
11
- lastFrameTime = 0;
12
- frameInterval;
13
- isRunning = false;
14
- // Predefined easing functions
15
- static Easing = {
16
- linear: (t) => t,
17
- easeInQuad: (t) => t * t,
18
- easeOutQuad: (t) => t * (2 - t),
19
- easeInOutQuad: (t) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t),
20
- easeInCubic: (t) => t * t * t,
21
- easeOutCubic: (t) => --t * t * t + 1,
22
- easeInOutCubic: (t) => t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,
23
- easeOutElastic: (t) => {
24
- const p = 0.3;
25
- return Math.pow(2, -10 * t) * Math.sin((t - p / 4) * (2 * Math.PI) / p) + 1;
26
- },
27
- };
28
- // Predefined spinner frames
29
- static SpinnerFrames = {
30
- dots: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'],
31
- dots2: ['⣾', '⣽', '⣻', '⢿', '⡿', '⣟', '⣯', '⣷'],
32
- dots3: ['⠋', '⠙', '⠚', '⠞', '⠖', '⠦', '⠴', '⠲', '⠳', '⠓'],
33
- line: ['-', '\\', '|', '/'],
34
- pipe: ['┤', '┘', '┴', '└', '├', '┌', '┬', '┐'],
35
- simpleDots: ['. ', '.. ', '...', ' '],
36
- simpleDotsScrolling: ['. ', '.. ', '...', ' ..', ' .', ' '],
37
- star: ['✶', '✸', '✹', '✺', '✹', '✷'],
38
- hamburger: ['☱', '☲', '☴'],
39
- growVertical: ['▁', '▃', '▄', '▅', '▆', '▇', '▆', '▅', '▄', '▃'],
40
- growHorizontal: ['▏', '▎', '▍', '▌', '▋', '▊', '▉', '▊', '▋', '▌', '▍', '▎'],
41
- balloon: [' ', '.', 'o', 'O', '@', '*', ' '],
42
- noise: ['▓', '▒', '░'],
43
- bounce: ['⠁', '⠂', '⠄', '⠂'],
44
- boxBounce: ['▖', '▘', '▝', '▗'],
45
- circle: ['◜', '◠', '◝', '◞', '◡', '◟'],
46
- arc: ['◜', '◠', '◝', '◞', '◡', '◟'],
47
- arrow: ['←', '↖', '↑', '↗', '→', '↘', '↓', '↙'],
48
- bouncingBar: [
49
- '[ ]',
50
- '[= ]',
51
- '[== ]',
52
- '[=== ]',
53
- '[ ===]',
54
- '[ ==]',
55
- '[ =]',
56
- '[ ]',
57
- '[ =]',
58
- '[ ==]',
59
- '[ ===]',
60
- '[====]',
61
- '[=== ]',
62
- '[== ]',
63
- '[= ]',
64
- ],
65
- };
66
- constructor(targetFPS = 30) {
67
- super();
68
- this.targetFPS = targetFPS;
69
- this.frameInterval = 1000 / targetFPS;
70
- }
71
- /**
72
- * Create and register a spinner animation
73
- */
74
- createSpinner(id, message, frames = AnimationScheduler.SpinnerFrames.dots) {
75
- const animation = {
76
- id,
77
- type: 'spinner',
78
- startTime: performance.now(),
79
- fps: 10, // Spinners typically run at 10 FPS
80
- frameCount: frames.length,
81
- currentFrame: 0,
82
- data: {
83
- frames,
84
- message,
85
- },
86
- };
87
- this.register(animation);
88
- return animation;
89
- }
90
- /**
91
- * Create and register a progress animation
92
- */
93
- createProgress(id, current, total, duration = 500) {
94
- const animation = {
95
- id,
96
- type: 'progress',
97
- startTime: performance.now(),
98
- duration,
99
- fps: 60, // Smooth progress animations at 60 FPS
100
- frameCount: Math.ceil((duration / 1000) * 60),
101
- currentFrame: 0,
102
- data: {
103
- current,
104
- target: current,
105
- total,
106
- },
107
- easing: AnimationScheduler.Easing.easeOutQuad,
108
- };
109
- this.register(animation);
110
- return animation;
111
- }
112
- /**
113
- * Update progress animation target
114
- */
115
- updateProgress(id, newTarget) {
116
- const animation = this.animations.get(id);
117
- if (!animation || animation.type !== 'progress')
118
- return;
119
- animation.data.current = this.getCurrentProgressValue(animation);
120
- animation.data.target = newTarget;
121
- animation.startTime = performance.now();
122
- animation.currentFrame = 0;
123
- }
124
- /**
125
- * Create and register an elapsed time animation
126
- */
127
- createElapsed(id, startTime = Date.now()) {
128
- const animation = {
129
- id,
130
- type: 'elapsed',
131
- startTime: performance.now(),
132
- fps: 1, // Update once per second
133
- frameCount: Infinity,
134
- currentFrame: 0,
135
- data: {
136
- startTime,
137
- format: this.formatElapsedTime,
138
- },
139
- };
140
- this.register(animation);
141
- return animation;
142
- }
143
- /**
144
- * Create and register a transition animation
145
- */
146
- createTransition(id, from, to, property, duration = 300, easing) {
147
- const animation = {
148
- id,
149
- type: 'transition',
150
- startTime: performance.now(),
151
- duration,
152
- fps: 60,
153
- frameCount: Math.ceil((duration / 1000) * 60),
154
- currentFrame: 0,
155
- data: {
156
- from,
157
- to,
158
- property,
159
- },
160
- easing: easing || AnimationScheduler.Easing.easeInOutQuad,
161
- };
162
- this.register(animation);
163
- return animation;
164
- }
165
- /**
166
- * Register an animation
167
- */
168
- register(animation) {
169
- this.animations.set(animation.id, animation);
170
- // Start the animation loop if not running
171
- if (!this.isRunning && this.animations.size > 0) {
172
- this.start();
173
- }
174
- this.emit('animation:registered', animation);
175
- }
176
- /**
177
- * Unregister an animation
178
- */
179
- unregister(id) {
180
- const animation = this.animations.get(id);
181
- if (animation) {
182
- this.animations.delete(id);
183
- this.emit('animation:unregistered', animation);
184
- // Stop the loop if no animations remain
185
- if (this.animations.size === 0) {
186
- this.stop();
187
- }
188
- }
189
- }
190
- /**
191
- * Start the animation loop
192
- */
193
- start() {
194
- if (this.isRunning)
195
- return;
196
- this.isRunning = true;
197
- this.lastFrameTime = performance.now();
198
- this.animationLoop = setInterval(() => this.tick(), this.frameInterval);
199
- this.emit('scheduler:start');
200
- }
201
- /**
202
- * Stop the animation loop
203
- */
204
- stop() {
205
- if (!this.isRunning)
206
- return;
207
- if (this.animationLoop) {
208
- clearInterval(this.animationLoop);
209
- this.animationLoop = null;
210
- }
211
- this.isRunning = false;
212
- this.emit('scheduler:stop');
213
- }
214
- /**
215
- * Main animation tick
216
- */
217
- tick() {
218
- const now = performance.now();
219
- const deltaTime = now - this.lastFrameTime;
220
- // Process each animation
221
- for (const [, animation] of this.animations) {
222
- // Check if animation should update based on its FPS
223
- const animationInterval = 1000 / animation.fps;
224
- const elapsedTime = now - animation.startTime;
225
- const expectedFrame = Math.floor(elapsedTime / animationInterval);
226
- if (expectedFrame > animation.currentFrame) {
227
- animation.currentFrame = expectedFrame;
228
- // Check if animation is complete
229
- if (animation.duration &&
230
- elapsedTime >= animation.duration &&
231
- animation.frameCount !== Infinity) {
232
- this.completeAnimation(animation);
233
- continue;
234
- }
235
- // Update animation
236
- this.updateAnimation(animation, elapsedTime);
237
- // Call frame callback
238
- if (animation.onFrame) {
239
- animation.onFrame(animation);
240
- }
241
- this.emit('animation:frame', animation);
242
- }
243
- }
244
- this.lastFrameTime = now;
245
- this.emit('scheduler:tick', { deltaTime, animationCount: this.animations.size });
246
- }
247
- /**
248
- * Update animation based on type
249
- */
250
- updateAnimation(animation, elapsedTime) {
251
- switch (animation.type) {
252
- case 'spinner':
253
- this.updateSpinner(animation);
254
- break;
255
- case 'progress':
256
- this.updateProgressAnimation(animation, elapsedTime);
257
- break;
258
- case 'elapsed':
259
- this.updateElapsed(animation);
260
- break;
261
- case 'transition':
262
- this.updateTransition(animation, elapsedTime);
263
- break;
264
- }
265
- }
266
- /**
267
- * Update spinner animation
268
- */
269
- updateSpinner(animation) {
270
- const frameIndex = animation.currentFrame % animation.data.frames.length;
271
- this.emit('spinner:frame', {
272
- id: animation.id,
273
- frame: animation.data.frames[frameIndex],
274
- message: animation.data.message,
275
- });
276
- }
277
- /**
278
- * Update progress animation
279
- */
280
- updateProgressAnimation(animation, elapsedTime) {
281
- if (!animation.duration)
282
- return;
283
- const progress = Math.min(elapsedTime / animation.duration, 1);
284
- const easedProgress = animation.easing ? animation.easing(progress) : progress;
285
- const { current, target, total } = animation.data;
286
- const newValue = current + (target - current) * easedProgress;
287
- const percentage = Math.round((newValue / total) * 100);
288
- this.emit('progress:update', {
289
- id: animation.id,
290
- value: newValue,
291
- percentage,
292
- total,
293
- formatted: animation.data.format
294
- ? animation.data.format(newValue, total)
295
- : `${percentage}%`,
296
- });
297
- }
298
- /**
299
- * Update elapsed time animation
300
- */
301
- updateElapsed(animation) {
302
- const elapsed = Date.now() - animation.data.startTime;
303
- const formatted = animation.data.format
304
- ? animation.data.format(elapsed)
305
- : this.formatElapsedTime(elapsed);
306
- this.emit('elapsed:update', {
307
- id: animation.id,
308
- elapsed,
309
- formatted,
310
- });
311
- }
312
- /**
313
- * Update transition animation
314
- */
315
- updateTransition(animation, elapsedTime) {
316
- if (!animation.duration)
317
- return;
318
- const progress = Math.min(elapsedTime / animation.duration, 1);
319
- const easedProgress = animation.easing ? animation.easing(progress) : progress;
320
- const { from, to } = animation.data;
321
- let value;
322
- if (typeof from === 'number' && typeof to === 'number') {
323
- value = from + (to - from) * easedProgress;
324
- }
325
- else {
326
- // For non-numeric values, switch at 50% progress
327
- value = easedProgress < 0.5 ? from : to;
328
- }
329
- this.emit('transition:update', {
330
- id: animation.id,
331
- property: animation.data.property,
332
- value,
333
- progress: easedProgress,
334
- });
335
- }
336
- /**
337
- * Complete an animation
338
- */
339
- completeAnimation(animation) {
340
- if (animation.onComplete) {
341
- animation.onComplete(animation);
342
- }
343
- this.emit('animation:complete', animation);
344
- this.unregister(animation.id);
345
- }
346
- /**
347
- * Get current progress value with easing
348
- */
349
- getCurrentProgressValue(animation) {
350
- const elapsedTime = performance.now() - animation.startTime;
351
- if (!animation.duration)
352
- return animation.data.target;
353
- const progress = Math.min(elapsedTime / animation.duration, 1);
354
- const easedProgress = animation.easing ? animation.easing(progress) : progress;
355
- const { current, target } = animation.data;
356
- return current + (target - current) * easedProgress;
357
- }
358
- /**
359
- * Format elapsed time
360
- */
361
- formatElapsedTime(elapsedMs) {
362
- const seconds = Math.floor(elapsedMs / 1000);
363
- const minutes = Math.floor(seconds / 60);
364
- const hours = Math.floor(minutes / 60);
365
- if (hours > 0) {
366
- return `${hours}h ${minutes % 60}m ${seconds % 60}s`;
367
- }
368
- else if (minutes > 0) {
369
- return `${minutes}m ${seconds % 60}s`;
370
- }
371
- else {
372
- return `${seconds}s`;
373
- }
374
- }
375
- /**
376
- * Get animation by ID
377
- */
378
- getAnimation(id) {
379
- return this.animations.get(id);
380
- }
381
- /**
382
- * Get all active animations
383
- */
384
- getActiveAnimations() {
385
- return Array.from(this.animations.values());
386
- }
387
- /**
388
- * Check if scheduler is running
389
- */
390
- isActive() {
391
- return this.isRunning;
392
- }
393
- /**
394
- * Get target FPS
395
- */
396
- getTargetFPS() {
397
- return this.targetFPS;
398
- }
399
- /**
400
- * Set target FPS
401
- */
402
- setTargetFPS(fps) {
403
- this.targetFPS = fps;
404
- this.frameInterval = 1000 / fps;
405
- // Restart the loop with new interval if running
406
- if (this.isRunning) {
407
- this.stop();
408
- this.start();
409
- }
410
- }
411
- /**
412
- * Clear all animations
413
- */
414
- clearAll() {
415
- for (const animation of this.animations.values()) {
416
- if (animation.onComplete) {
417
- animation.onComplete(animation);
418
- }
419
- }
420
- this.animations.clear();
421
- this.stop();
422
- this.emit('scheduler:cleared');
423
- }
424
- /**
425
- * Dispose of the scheduler
426
- */
427
- dispose() {
428
- this.clearAll();
429
- this.removeAllListeners();
430
- }
431
- }
432
- //# sourceMappingURL=AnimationScheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnimationScheduler.js","sourceRoot":"","sources":["../../../src/ui/animation/AnimationScheduler.ts"],"names":[],"mappings":"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"}
@@ -1,181 +0,0 @@
1
- /**
2
- * InPlaceUpdater - Dynamic in-place terminal updates
3
- *
4
- * Enables tool results to update in place without creating new lines.
5
- * Features:
6
- * - Cursor management for overwriting previous output
7
- * - Multi-line update support
8
- * - Progress bar animations
9
- * - Streaming content updates
10
- * - TTY detection and fallback
11
- */
12
- import { spinnerFrames } from './theme.js';
13
- export interface UpdateRegion {
14
- id: string;
15
- startLine: number;
16
- lineCount: number;
17
- content: string[];
18
- lastUpdate: number;
19
- }
20
- export interface ProgressBarOptions {
21
- width?: number;
22
- showPercentage?: boolean;
23
- showCount?: boolean;
24
- label?: string;
25
- style?: 'bar' | 'braille' | 'dots';
26
- }
27
- export interface SpinnerOptions {
28
- style?: keyof typeof spinnerFrames;
29
- label?: string;
30
- }
31
- export interface StreamingUpdateOptions {
32
- maxLines?: number;
33
- truncate?: boolean;
34
- preserveLastLine?: boolean;
35
- }
36
- export declare class InPlaceUpdater {
37
- private readonly stream;
38
- private regions;
39
- private currentSpinnerFrame;
40
- private spinnerInterval;
41
- private activeSpinnerId;
42
- private isTTY;
43
- constructor(stream?: NodeJS.WriteStream);
44
- /**
45
- * Move cursor up N lines
46
- */
47
- private cursorUp;
48
- /**
49
- * Move cursor down N lines
50
- */
51
- private cursorDown;
52
- /**
53
- * Move cursor to beginning of line
54
- */
55
- private cursorToLineStart;
56
- /**
57
- * Clear from cursor to end of line
58
- */
59
- private clearToEndOfLine;
60
- /**
61
- * Clear entire line
62
- */
63
- private clearLine;
64
- /**
65
- * Save cursor position
66
- */
67
- private saveCursor;
68
- /**
69
- * Restore cursor position
70
- */
71
- private restoreCursor;
72
- /**
73
- * Hide cursor
74
- */
75
- hideCursor(): void;
76
- /**
77
- * Show cursor
78
- */
79
- showCursor(): void;
80
- /**
81
- * Create an updateable region
82
- */
83
- createRegion(id: string, initialContent: string | string[]): void;
84
- /**
85
- * Update a region in place
86
- */
87
- updateRegion(id: string, newContent: string | string[]): void;
88
- /**
89
- * Delete a region
90
- */
91
- deleteRegion(id: string): void;
92
- /**
93
- * Update a single line in place (most common use case)
94
- */
95
- updateLine(content: string): void;
96
- /**
97
- * Finalize a line update (add newline)
98
- */
99
- finalizeLine(content?: string): void;
100
- /**
101
- * Create a progress bar string
102
- */
103
- formatProgressBar(current: number, total: number, options?: ProgressBarOptions): string;
104
- /**
105
- * Create a smooth braille-based progress bar
106
- */
107
- private formatBrailleBar;
108
- /**
109
- * Update a progress bar in place
110
- */
111
- updateProgress(regionId: string, current: number, total: number, options?: ProgressBarOptions): void;
112
- /**
113
- * Start a spinner
114
- */
115
- startSpinner(id: string, label: string, options?: SpinnerOptions): void;
116
- /**
117
- * Update spinner label
118
- */
119
- updateSpinner(label: string): void;
120
- /**
121
- * Stop spinner and show final message
122
- */
123
- stopSpinner(finalMessage?: string, success?: boolean): void;
124
- /**
125
- * Render current spinner frame
126
- */
127
- private renderSpinner;
128
- /**
129
- * Create a streaming update region that shows the last N lines
130
- */
131
- createStreamingRegion(id: string, options?: StreamingUpdateOptions): (content: string) => void;
132
- /**
133
- * Finalize streaming region with summary
134
- */
135
- finalizeStreamingRegion(id: string, summary?: string): void;
136
- /**
137
- * Show tool execution with in-place progress
138
- */
139
- showToolProgress(toolName: string, message: string, progress?: {
140
- current: number;
141
- total: number;
142
- }): void;
143
- /**
144
- * Show file operation progress
145
- */
146
- showFileProgress(operation: 'read' | 'write' | 'edit', filePath: string, progress?: {
147
- current: number;
148
- total: number;
149
- }): void;
150
- /**
151
- * Complete file operation with summary
152
- */
153
- completeFileOperation(operation: 'read' | 'write' | 'edit', filePath: string, stats?: {
154
- lines?: number;
155
- additions?: number;
156
- removals?: number;
157
- }): void;
158
- private truncatePath;
159
- /**
160
- * Check if TTY is available
161
- */
162
- get hasTTY(): boolean;
163
- /**
164
- * Cleanup resources
165
- */
166
- dispose(): void;
167
- }
168
- export declare const inPlaceUpdater: InPlaceUpdater;
169
- /**
170
- * Quick in-place line update
171
- */
172
- export declare function updateInPlace(content: string): void;
173
- /**
174
- * Quick progress bar
175
- */
176
- export declare function showProgress(current: number, total: number, label?: string): void;
177
- /**
178
- * Finalize progress with result
179
- */
180
- export declare function finishProgress(message: string, success?: boolean): void;
181
- //# sourceMappingURL=inPlaceUpdater.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inPlaceUpdater.d.ts","sourceRoot":"","sources":["../../src/ui/inPlaceUpdater.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAgB,aAAa,EAAiB,MAAM,YAAY,CAAC;AAOxE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,OAAO,aAAa,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAMD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,KAAK,CAAU;gBAEX,MAAM,GAAE,MAAM,CAAC,WAA4B;IASvD;;OAEG;IACH,OAAO,CAAC,QAAQ;IAMhB;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,SAAS;IAMjB;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;OAEG;IACH,UAAU,IAAI,IAAI;IAUlB;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAiBjE;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAqC7D;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9B;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAUjC;;OAEG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAWpC;;OAEG;IACH,iBAAiB,CACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,MAAM;IA8CT;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,IAAI;IASP;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,IAAI;IAmB3E;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMlC;;OAEG;IACH,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,OAAc,GAAG,IAAI;IAiBjE;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,qBAAqB,CACnB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,sBAA2B,GACnC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IA+C5B;;OAEG;IACH,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAW3D;;OAEG;IACH,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAC5C,IAAI;IA8BP;;OAEG;IACH,gBAAgB,CACd,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAC5C,IAAI;IAuBP;;OAEG;IACH,qBAAqB,CACnB,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAChE,IAAI;IA8BP,OAAO,CAAC,YAAY;IAgBpB;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;OAEG;IACH,OAAO,IAAI,IAAI;CAKhB;AAMD,eAAO,MAAM,cAAc,gBAAuB,CAAC;AAMnD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAON;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,OAAc,GAAG,IAAI,CAG7E"}