erosolar-cli 2.1.62 → 2.1.65

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.
@@ -0,0 +1,384 @@
1
+ /**
2
+ * AnimatedStatus - Provides smooth, dynamic status indicators with animations
3
+ * Integrates with the AnimationScheduler for real-time UI updates
4
+ */
5
+ import { theme, spinnerFrames, progressChars } from './theme.js';
6
+ import { AnimationScheduler } from './animation/AnimationScheduler.js';
7
+ // Singleton scheduler for global animation coordination
8
+ let globalScheduler = null;
9
+ function getScheduler() {
10
+ if (!globalScheduler) {
11
+ globalScheduler = new AnimationScheduler(30); // 30 FPS for smooth animations
12
+ }
13
+ return globalScheduler;
14
+ }
15
+ /**
16
+ * Animated spinner that cycles through frames
17
+ */
18
+ export class AnimatedSpinner {
19
+ frameIndex = 0;
20
+ frames;
21
+ intervalId = null;
22
+ message;
23
+ color;
24
+ currentFrame = '';
25
+ onUpdate;
26
+ constructor(message = '', style = 'dots', color = theme.info) {
27
+ this.frames = spinnerFrames[style];
28
+ this.message = message;
29
+ this.color = color;
30
+ this.currentFrame = this.frames[0] ?? '⠋';
31
+ }
32
+ start(onUpdate) {
33
+ this.onUpdate = onUpdate;
34
+ this.frameIndex = 0;
35
+ this.intervalId = setInterval(() => {
36
+ this.frameIndex = (this.frameIndex + 1) % this.frames.length;
37
+ this.currentFrame = this.frames[this.frameIndex] ?? '⠋';
38
+ if (this.onUpdate) {
39
+ this.onUpdate(this.render());
40
+ }
41
+ }, 80); // ~12 FPS for spinners
42
+ }
43
+ stop() {
44
+ if (this.intervalId) {
45
+ clearInterval(this.intervalId);
46
+ this.intervalId = null;
47
+ }
48
+ }
49
+ setMessage(message) {
50
+ this.message = message;
51
+ }
52
+ render() {
53
+ const spinnerChar = this.color(this.currentFrame);
54
+ return this.message ? `${spinnerChar} ${this.message}` : spinnerChar;
55
+ }
56
+ isRunning() {
57
+ return this.intervalId !== null;
58
+ }
59
+ }
60
+ /**
61
+ * Animated progress bar with smooth transitions
62
+ */
63
+ export class AnimatedProgressBar {
64
+ current = 0;
65
+ target = 0;
66
+ total;
67
+ width;
68
+ animationId = null;
69
+ constructor(total, width = 20) {
70
+ this.total = total;
71
+ this.width = width;
72
+ }
73
+ update(value) {
74
+ this.target = Math.min(value, this.total);
75
+ // Smooth transition to target
76
+ const scheduler = getScheduler();
77
+ if (this.animationId) {
78
+ scheduler.unregister(this.animationId);
79
+ }
80
+ this.animationId = `progress-${Date.now()}`;
81
+ scheduler.createTransition(this.animationId, this.current, this.target, 'progress', 300, AnimationScheduler.Easing.easeOutQuad);
82
+ scheduler.on('transition:update', (data) => {
83
+ if (data.id === this.animationId && typeof data.value === 'number') {
84
+ this.current = data.value;
85
+ }
86
+ });
87
+ }
88
+ render() {
89
+ const percentage = this.total > 0 ? this.current / this.total : 0;
90
+ const filled = Math.floor(percentage * this.width);
91
+ const partial = (percentage * this.width) % 1;
92
+ const empty = this.width - filled - (partial > 0 ? 1 : 0);
93
+ let bar = theme.progress.bar(progressChars.filled.repeat(filled));
94
+ if (partial > 0 && filled < this.width) {
95
+ const partialIndex = Math.floor(partial * progressChars.partial.length);
96
+ const partialChar = progressChars.partial[partialIndex] ?? progressChars.partial[0];
97
+ bar += theme.progress.bar(partialChar);
98
+ }
99
+ bar += theme.progress.empty(progressChars.empty.repeat(Math.max(0, empty)));
100
+ const percentText = theme.progress.percentage(`${Math.round(percentage * 100)}%`);
101
+ return `${bar} ${percentText}`;
102
+ }
103
+ dispose() {
104
+ if (this.animationId) {
105
+ getScheduler().unregister(this.animationId);
106
+ }
107
+ }
108
+ }
109
+ /**
110
+ * Animated elapsed time display
111
+ */
112
+ export class AnimatedElapsedTime {
113
+ startTime;
114
+ intervalId = null;
115
+ currentDisplay = '0s';
116
+ onUpdate;
117
+ constructor() {
118
+ this.startTime = Date.now();
119
+ }
120
+ start(onUpdate) {
121
+ this.startTime = Date.now();
122
+ this.onUpdate = onUpdate;
123
+ this.intervalId = setInterval(() => {
124
+ this.currentDisplay = this.format();
125
+ if (this.onUpdate) {
126
+ this.onUpdate(this.currentDisplay);
127
+ }
128
+ }, 1000); // Update every second
129
+ }
130
+ stop() {
131
+ if (this.intervalId) {
132
+ clearInterval(this.intervalId);
133
+ this.intervalId = null;
134
+ }
135
+ return this.format();
136
+ }
137
+ format() {
138
+ const elapsed = Date.now() - this.startTime;
139
+ const seconds = Math.floor(elapsed / 1000);
140
+ const minutes = Math.floor(seconds / 60);
141
+ const hours = Math.floor(minutes / 60);
142
+ if (hours > 0) {
143
+ return `${hours}h ${minutes % 60}m ${seconds % 60}s`;
144
+ }
145
+ else if (minutes > 0) {
146
+ return `${minutes}:${(seconds % 60).toString().padStart(2, '0')}`;
147
+ }
148
+ else {
149
+ return `${seconds}s`;
150
+ }
151
+ }
152
+ render() {
153
+ return theme.ui.muted(this.currentDisplay);
154
+ }
155
+ }
156
+ /**
157
+ * Pulsing text effect for emphasis
158
+ */
159
+ export class PulsingText {
160
+ text;
161
+ intensity = 0;
162
+ increasing = true;
163
+ intervalId = null;
164
+ onUpdate;
165
+ constructor(text) {
166
+ this.text = text;
167
+ }
168
+ start(onUpdate) {
169
+ this.onUpdate = onUpdate;
170
+ this.intervalId = setInterval(() => {
171
+ if (this.increasing) {
172
+ this.intensity += 0.1;
173
+ if (this.intensity >= 1) {
174
+ this.intensity = 1;
175
+ this.increasing = false;
176
+ }
177
+ }
178
+ else {
179
+ this.intensity -= 0.1;
180
+ if (this.intensity <= 0.3) {
181
+ this.intensity = 0.3;
182
+ this.increasing = true;
183
+ }
184
+ }
185
+ if (this.onUpdate) {
186
+ this.onUpdate(this.render());
187
+ }
188
+ }, 50); // 20 FPS for pulse
189
+ }
190
+ stop() {
191
+ if (this.intervalId) {
192
+ clearInterval(this.intervalId);
193
+ this.intervalId = null;
194
+ }
195
+ }
196
+ setText(text) {
197
+ this.text = text;
198
+ }
199
+ render() {
200
+ // Use intensity to vary between dim and bright
201
+ if (this.intensity > 0.7) {
202
+ return theme.ui.highlight(this.text);
203
+ }
204
+ else if (this.intensity > 0.4) {
205
+ return theme.info(this.text);
206
+ }
207
+ else {
208
+ return theme.ui.muted(this.text);
209
+ }
210
+ }
211
+ }
212
+ /**
213
+ * Thinking indicator with animated dots
214
+ */
215
+ export class ThinkingIndicator {
216
+ dotCount = 0;
217
+ intervalId = null;
218
+ label;
219
+ onUpdate;
220
+ constructor(label = 'Thinking') {
221
+ this.label = label;
222
+ }
223
+ start(onUpdate) {
224
+ this.onUpdate = onUpdate;
225
+ this.dotCount = 0;
226
+ this.intervalId = setInterval(() => {
227
+ this.dotCount = (this.dotCount + 1) % 4;
228
+ if (this.onUpdate) {
229
+ this.onUpdate(this.render());
230
+ }
231
+ }, 400); // Slower animation for thinking
232
+ }
233
+ stop() {
234
+ if (this.intervalId) {
235
+ clearInterval(this.intervalId);
236
+ this.intervalId = null;
237
+ }
238
+ }
239
+ setLabel(label) {
240
+ this.label = label;
241
+ }
242
+ render() {
243
+ const dots = '.'.repeat(this.dotCount);
244
+ const padding = ' '.repeat(3 - this.dotCount);
245
+ return `${theme.thinking.icon('◐')} ${theme.thinking.label(this.label)}${theme.thinking.text(dots)}${padding}`;
246
+ }
247
+ }
248
+ /**
249
+ * Streaming status with spinner and message
250
+ */
251
+ export class StreamingStatus {
252
+ spinner;
253
+ elapsed;
254
+ isActive = false;
255
+ constructor() {
256
+ this.spinner = new AnimatedSpinner('', 'braille', theme.info);
257
+ this.elapsed = new AnimatedElapsedTime();
258
+ }
259
+ start(message, onUpdate) {
260
+ this.isActive = true;
261
+ this.spinner.setMessage(message);
262
+ const update = () => {
263
+ if (this.isActive && onUpdate) {
264
+ const spinnerPart = this.spinner.render();
265
+ const elapsedPart = this.elapsed.render();
266
+ onUpdate(`${spinnerPart} ${theme.ui.muted('·')} ${elapsedPart}`);
267
+ }
268
+ };
269
+ this.spinner.start(update);
270
+ this.elapsed.start(update);
271
+ }
272
+ updateMessage(message) {
273
+ this.spinner.setMessage(message);
274
+ }
275
+ stop() {
276
+ this.isActive = false;
277
+ this.spinner.stop();
278
+ const finalTime = this.elapsed.stop();
279
+ return `${theme.success('✓')} ${theme.ui.muted('Completed')} ${theme.ui.muted('·')} ${theme.ui.muted(finalTime)}`;
280
+ }
281
+ }
282
+ /**
283
+ * Context usage meter with color transitions
284
+ */
285
+ export class ContextMeter {
286
+ percentage = 0;
287
+ targetPercentage = 0;
288
+ animationFrame = null;
289
+ update(percentage) {
290
+ this.targetPercentage = Math.min(100, Math.max(0, percentage));
291
+ this.animate();
292
+ }
293
+ animate() {
294
+ if (this.animationFrame) {
295
+ clearTimeout(this.animationFrame);
296
+ }
297
+ const step = () => {
298
+ const diff = this.targetPercentage - this.percentage;
299
+ if (Math.abs(diff) < 0.5) {
300
+ this.percentage = this.targetPercentage;
301
+ return;
302
+ }
303
+ // Smooth easing
304
+ this.percentage += diff * 0.15;
305
+ this.animationFrame = setTimeout(step, 16); // ~60 FPS
306
+ };
307
+ step();
308
+ }
309
+ render() {
310
+ const pct = Math.round(this.percentage);
311
+ const color = pct > 90 ? theme.error
312
+ : pct > 70 ? theme.warning
313
+ : pct > 50 ? theme.info
314
+ : theme.success;
315
+ return `${theme.ui.muted('ctx')} ${color(`${pct}%`)}`;
316
+ }
317
+ dispose() {
318
+ if (this.animationFrame) {
319
+ clearTimeout(this.animationFrame);
320
+ }
321
+ }
322
+ }
323
+ /**
324
+ * Animated typing indicator (for showing AI is responding)
325
+ */
326
+ export class TypingIndicator {
327
+ frames = ['▌', '▐', '▌', ' '];
328
+ frameIndex = 0;
329
+ intervalId = null;
330
+ onUpdate;
331
+ start(onUpdate) {
332
+ this.onUpdate = onUpdate;
333
+ this.intervalId = setInterval(() => {
334
+ this.frameIndex = (this.frameIndex + 1) % this.frames.length;
335
+ if (this.onUpdate) {
336
+ this.onUpdate(this.render());
337
+ }
338
+ }, 530); // Blink at cursor rate
339
+ }
340
+ stop() {
341
+ if (this.intervalId) {
342
+ clearInterval(this.intervalId);
343
+ this.intervalId = null;
344
+ }
345
+ }
346
+ render() {
347
+ return theme.info(this.frames[this.frameIndex] ?? '▌');
348
+ }
349
+ }
350
+ /**
351
+ * Wave animation for processing states
352
+ */
353
+ export class WaveIndicator {
354
+ frames = ['∙∙∙∙∙', '●∙∙∙∙', '∙●∙∙∙', '∙∙●∙∙', '∙∙∙●∙', '∙∙∙∙●', '∙∙∙∙∙'];
355
+ frameIndex = 0;
356
+ intervalId = null;
357
+ onUpdate;
358
+ start(onUpdate) {
359
+ this.onUpdate = onUpdate;
360
+ this.intervalId = setInterval(() => {
361
+ this.frameIndex = (this.frameIndex + 1) % this.frames.length;
362
+ if (this.onUpdate) {
363
+ this.onUpdate(this.render());
364
+ }
365
+ }, 120);
366
+ }
367
+ stop() {
368
+ if (this.intervalId) {
369
+ clearInterval(this.intervalId);
370
+ this.intervalId = null;
371
+ }
372
+ }
373
+ render() {
374
+ return theme.info(this.frames[this.frameIndex] ?? '∙∙∙∙∙');
375
+ }
376
+ }
377
+ // Export singleton cleanup
378
+ export function disposeAnimations() {
379
+ if (globalScheduler) {
380
+ globalScheduler.dispose();
381
+ globalScheduler = null;
382
+ }
383
+ }
384
+ //# sourceMappingURL=animatedStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animatedStatus.js","sourceRoot":"","sources":["../../src/ui/animatedStatus.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "erosolar-cli",
3
- "version": "2.1.62",
3
+ "version": "2.1.65",
4
4
  "description": "Unified AI agent framework for the command line - Multi-provider support with schema-driven tools, code intelligence, and transparent reasoning",
5
5
  "main": "dist/bin/erosolar.js",
6
6
  "type": "module",