erosolar-cli 2.1.166 → 2.1.168

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 (128) hide show
  1. package/agents/erosolar-code.rules.json +2 -2
  2. package/agents/general.rules.json +3 -21
  3. package/dist/StringUtils.d.ts +8 -0
  4. package/dist/StringUtils.d.ts.map +1 -0
  5. package/dist/StringUtils.js +11 -0
  6. package/dist/StringUtils.js.map +1 -0
  7. package/dist/capabilities/statusCapability.js +2 -2
  8. package/dist/capabilities/statusCapability.js.map +1 -1
  9. package/dist/contracts/agent-schemas.json +0 -5
  10. package/dist/core/agent.d.ts +11 -70
  11. package/dist/core/agent.d.ts.map +1 -1
  12. package/dist/core/agent.js +180 -854
  13. package/dist/core/agent.js.map +1 -1
  14. package/dist/core/aiFlowSupervisor.d.ts +44 -0
  15. package/dist/core/aiFlowSupervisor.d.ts.map +1 -0
  16. package/dist/core/aiFlowSupervisor.js +299 -0
  17. package/dist/core/aiFlowSupervisor.js.map +1 -0
  18. package/dist/core/cliTestHarness.d.ts +200 -0
  19. package/dist/core/cliTestHarness.d.ts.map +1 -0
  20. package/dist/core/cliTestHarness.js +549 -0
  21. package/dist/core/cliTestHarness.js.map +1 -0
  22. package/dist/core/preferences.d.ts +0 -1
  23. package/dist/core/preferences.d.ts.map +1 -1
  24. package/dist/core/preferences.js +2 -9
  25. package/dist/core/preferences.js.map +1 -1
  26. package/dist/core/schemaValidator.js +3 -3
  27. package/dist/core/schemaValidator.js.map +1 -1
  28. package/dist/core/testUtils.d.ts +121 -0
  29. package/dist/core/testUtils.d.ts.map +1 -0
  30. package/dist/core/testUtils.js +235 -0
  31. package/dist/core/testUtils.js.map +1 -0
  32. package/dist/core/toolPreconditions.d.ts +11 -0
  33. package/dist/core/toolPreconditions.d.ts.map +1 -1
  34. package/dist/core/toolPreconditions.js +164 -33
  35. package/dist/core/toolPreconditions.js.map +1 -1
  36. package/dist/core/toolRuntime.d.ts.map +1 -1
  37. package/dist/core/toolRuntime.js +114 -9
  38. package/dist/core/toolRuntime.js.map +1 -1
  39. package/dist/core/toolValidation.d.ts +116 -0
  40. package/dist/core/toolValidation.d.ts.map +1 -0
  41. package/dist/core/toolValidation.js +282 -0
  42. package/dist/core/toolValidation.js.map +1 -0
  43. package/dist/core/updateChecker.d.ts +1 -61
  44. package/dist/core/updateChecker.d.ts.map +1 -1
  45. package/dist/core/updateChecker.js +3 -147
  46. package/dist/core/updateChecker.js.map +1 -1
  47. package/dist/headless/headlessApp.d.ts.map +1 -1
  48. package/dist/headless/headlessApp.js +39 -0
  49. package/dist/headless/headlessApp.js.map +1 -1
  50. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  51. package/dist/plugins/tools/nodeDefaults.js +2 -0
  52. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  53. package/dist/providers/openaiResponsesProvider.d.ts.map +1 -1
  54. package/dist/providers/openaiResponsesProvider.js +74 -79
  55. package/dist/providers/openaiResponsesProvider.js.map +1 -1
  56. package/dist/runtime/agentController.d.ts.map +1 -1
  57. package/dist/runtime/agentController.js +0 -2
  58. package/dist/runtime/agentController.js.map +1 -1
  59. package/dist/runtime/agentSession.d.ts.map +1 -1
  60. package/dist/runtime/agentSession.js +2 -3
  61. package/dist/runtime/agentSession.js.map +1 -1
  62. package/dist/shell/interactiveShell.d.ts +8 -16
  63. package/dist/shell/interactiveShell.d.ts.map +1 -1
  64. package/dist/shell/interactiveShell.js +151 -378
  65. package/dist/shell/interactiveShell.js.map +1 -1
  66. package/dist/shell/systemPrompt.d.ts.map +1 -1
  67. package/dist/shell/systemPrompt.js +15 -4
  68. package/dist/shell/systemPrompt.js.map +1 -1
  69. package/dist/subagents/taskRunner.js +1 -2
  70. package/dist/subagents/taskRunner.js.map +1 -1
  71. package/dist/tools/bashTools.d.ts.map +1 -1
  72. package/dist/tools/bashTools.js +8 -101
  73. package/dist/tools/bashTools.js.map +1 -1
  74. package/dist/tools/diffUtils.d.ts +2 -8
  75. package/dist/tools/diffUtils.d.ts.map +1 -1
  76. package/dist/tools/diffUtils.js +13 -72
  77. package/dist/tools/diffUtils.js.map +1 -1
  78. package/dist/tools/grepTools.d.ts.map +1 -1
  79. package/dist/tools/grepTools.js +2 -10
  80. package/dist/tools/grepTools.js.map +1 -1
  81. package/dist/tools/searchTools.d.ts.map +1 -1
  82. package/dist/tools/searchTools.js +2 -4
  83. package/dist/tools/searchTools.js.map +1 -1
  84. package/dist/ui/PromptController.d.ts +0 -2
  85. package/dist/ui/PromptController.d.ts.map +1 -1
  86. package/dist/ui/PromptController.js +0 -2
  87. package/dist/ui/PromptController.js.map +1 -1
  88. package/dist/ui/ShellUIAdapter.d.ts +18 -71
  89. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  90. package/dist/ui/ShellUIAdapter.js +139 -237
  91. package/dist/ui/ShellUIAdapter.js.map +1 -1
  92. package/dist/ui/UnifiedUIController.d.ts +1 -0
  93. package/dist/ui/UnifiedUIController.d.ts.map +1 -1
  94. package/dist/ui/UnifiedUIController.js +1 -0
  95. package/dist/ui/UnifiedUIController.js.map +1 -1
  96. package/dist/ui/UnifiedUIRenderer.d.ts +5 -122
  97. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  98. package/dist/ui/UnifiedUIRenderer.js +125 -830
  99. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  100. package/dist/ui/compactRenderer.d.ts +139 -0
  101. package/dist/ui/compactRenderer.d.ts.map +1 -0
  102. package/dist/ui/compactRenderer.js +398 -0
  103. package/dist/ui/compactRenderer.js.map +1 -0
  104. package/dist/ui/display.d.ts +48 -12
  105. package/dist/ui/display.d.ts.map +1 -1
  106. package/dist/ui/display.js +105 -22
  107. package/dist/ui/display.js.map +1 -1
  108. package/dist/ui/streamingFormatter.d.ts +30 -0
  109. package/dist/ui/streamingFormatter.d.ts.map +1 -0
  110. package/dist/ui/streamingFormatter.js +91 -0
  111. package/dist/ui/streamingFormatter.js.map +1 -0
  112. package/dist/ui/unified/index.d.ts +1 -1
  113. package/dist/ui/unified/index.d.ts.map +1 -1
  114. package/dist/ui/unified/index.js +2 -0
  115. package/dist/ui/unified/index.js.map +1 -1
  116. package/dist/utils/errorUtils.d.ts +16 -0
  117. package/dist/utils/errorUtils.d.ts.map +1 -0
  118. package/dist/utils/errorUtils.js +66 -0
  119. package/dist/utils/errorUtils.js.map +1 -0
  120. package/package.json +2 -1
  121. package/dist/core/reliabilityPrompt.d.ts +0 -9
  122. package/dist/core/reliabilityPrompt.d.ts.map +0 -1
  123. package/dist/core/reliabilityPrompt.js +0 -30
  124. package/dist/core/reliabilityPrompt.js.map +0 -1
  125. package/dist/ui/animatedStatus.d.ts +0 -129
  126. package/dist/ui/animatedStatus.d.ts.map +0 -1
  127. package/dist/ui/animatedStatus.js +0 -384
  128. package/dist/ui/animatedStatus.js.map +0 -1
@@ -1,30 +0,0 @@
1
- /**
2
- * Shared reliability directives applied to all erosolar-cli runtimes.
3
- * Ensures the agent keeps working, acknowledges the user before tools,
4
- * and surfaces useful insights instead of stalling.
5
- */
6
- const RELIABILITY_SENTINEL = '[EROSOLAR_RELIABILITY_RULES]';
7
- const RELIABILITY_DIRECTIVES = `${RELIABILITY_SENTINEL}
8
- CRITICAL RELIABILITY RULES:
9
- 1) COMPLETE THE TASK end-to-end. Do not stop until you have concrete results with file:line citations.
10
- 2) NEVER stop after calling a tool if the task is still unfinished. Keep going without prompting the user.
11
- 3) NEVER say "I need to do X" and then stop. Actually do the work in the same response.
12
- 4) Prefer multiple tool calls in a single response when needed; avoid unnecessary waits between steps.
13
- 5) Do not call the same tool with identical arguments twice in a row; use previous results to move forward.
14
- 6) ALWAYS acknowledge the user's request before the first tool call with a brief, insightful reflection of their command.
15
- 7) Keep planning internal: avoid dumping long "Understanding/Plan" sections to the user; share only a one-line intent and then act with tools.
16
- 8) If a tool fails or a plan stalls, immediately choose an alternative approach and continue.
17
- 9) Surface concise insights or progress updates to the UI whenever they help the user stay oriented.
18
- `;
19
- export function applyReliabilityDirectives(basePrompt) {
20
- const prompt = (basePrompt ?? '').trim();
21
- if (prompt.includes(RELIABILITY_SENTINEL)) {
22
- return prompt;
23
- }
24
- if (!prompt) {
25
- return RELIABILITY_DIRECTIVES.trim();
26
- }
27
- return `${prompt}\n\n${RELIABILITY_DIRECTIVES}`.trim();
28
- }
29
- export { RELIABILITY_SENTINEL };
30
- //# sourceMappingURL=reliabilityPrompt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reliabilityPrompt.js","sourceRoot":"","sources":["../../src/core/reliabilityPrompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,8BAA8B,CAAC;AAE5D,MAAM,sBAAsB,GAAG,GAAG,oBAAoB;;;;;;;;;;;CAWrD,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,UAAkB;IAC3D,MAAM,MAAM,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,sBAAsB,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,GAAG,MAAM,OAAO,sBAAsB,EAAE,CAAC,IAAI,EAAE,CAAC;AACzD,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,129 +0,0 @@
1
- /**
2
- * AnimatedStatus - Provides smooth, dynamic status indicators with animations
3
- * Integrates with the AnimationScheduler for real-time UI updates
4
- */
5
- /**
6
- * Animated spinner that cycles through frames
7
- */
8
- export declare class AnimatedSpinner {
9
- private frameIndex;
10
- private readonly frames;
11
- private intervalId;
12
- private message;
13
- private readonly color;
14
- private currentFrame;
15
- private onUpdate?;
16
- constructor(message?: string, style?: 'dots' | 'arc' | 'circle' | 'bounce' | 'braille', color?: (text: string) => string);
17
- start(onUpdate?: (frame: string) => void): void;
18
- stop(): void;
19
- setMessage(message: string): void;
20
- render(): string;
21
- isRunning(): boolean;
22
- }
23
- /**
24
- * Animated progress bar with smooth transitions
25
- */
26
- export declare class AnimatedProgressBar {
27
- private current;
28
- private target;
29
- private readonly total;
30
- private readonly width;
31
- private animationId;
32
- constructor(total: number, width?: number);
33
- update(value: number): void;
34
- render(): string;
35
- dispose(): void;
36
- }
37
- /**
38
- * Animated elapsed time display
39
- */
40
- export declare class AnimatedElapsedTime {
41
- private startTime;
42
- private intervalId;
43
- private currentDisplay;
44
- private onUpdate?;
45
- constructor();
46
- start(onUpdate?: (display: string) => void): void;
47
- stop(): string;
48
- format(): string;
49
- render(): string;
50
- }
51
- /**
52
- * Pulsing text effect for emphasis
53
- */
54
- export declare class PulsingText {
55
- private text;
56
- private intensity;
57
- private increasing;
58
- private intervalId;
59
- private onUpdate?;
60
- constructor(text: string);
61
- start(onUpdate?: (rendered: string) => void): void;
62
- stop(): void;
63
- setText(text: string): void;
64
- render(): string;
65
- }
66
- /**
67
- * Thinking indicator with animated dots
68
- */
69
- export declare class ThinkingIndicator {
70
- private dotCount;
71
- private intervalId;
72
- private label;
73
- private onUpdate?;
74
- constructor(label?: string);
75
- start(onUpdate?: (rendered: string) => void): void;
76
- stop(): void;
77
- setLabel(label: string): void;
78
- render(): string;
79
- }
80
- /**
81
- * Streaming status with spinner and message
82
- */
83
- export declare class StreamingStatus {
84
- private spinner;
85
- private elapsed;
86
- private isActive;
87
- constructor();
88
- start(message: string, onUpdate?: (status: string) => void): void;
89
- updateMessage(message: string): void;
90
- stop(): string;
91
- }
92
- /**
93
- * Context usage meter with color transitions
94
- */
95
- export declare class ContextMeter {
96
- private percentage;
97
- private targetPercentage;
98
- private animationFrame;
99
- update(percentage: number): void;
100
- private animate;
101
- render(): string;
102
- dispose(): void;
103
- }
104
- /**
105
- * Animated typing indicator (for showing AI is responding)
106
- */
107
- export declare class TypingIndicator {
108
- private frames;
109
- private frameIndex;
110
- private intervalId;
111
- private onUpdate?;
112
- start(onUpdate?: (frame: string) => void): void;
113
- stop(): void;
114
- render(): string;
115
- }
116
- /**
117
- * Wave animation for processing states
118
- */
119
- export declare class WaveIndicator {
120
- private frames;
121
- private frameIndex;
122
- private intervalId;
123
- private onUpdate?;
124
- start(onUpdate?: (frame: string) => void): void;
125
- stop(): void;
126
- render(): string;
127
- }
128
- export declare function disposeAnimations(): void;
129
- //# sourceMappingURL=animatedStatus.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"animatedStatus.d.ts","sourceRoot":"","sources":["../../src/ui/animatedStatus.ts"],"names":[],"mappings":"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"}
@@ -1,384 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"animatedStatus.js","sourceRoot":"","sources":["../../src/ui/animatedStatus.ts"],"names":[],"mappings":"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"}