erosolar-cli 2.1.172 → 2.1.173
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.
- package/README.md +1 -1
- package/agents/erosolar-code.rules.json +2 -2
- package/agents/general.rules.json +21 -3
- package/dist/capabilities/askUserCapability.js +1 -1
- package/dist/capabilities/askUserCapability.js.map +1 -1
- package/dist/capabilities/statusCapability.js +2 -2
- package/dist/capabilities/statusCapability.js.map +1 -1
- package/dist/codex/capabilities/codexCoreCapability.d.ts +6 -0
- package/dist/codex/capabilities/codexCoreCapability.d.ts.map +1 -0
- package/dist/codex/capabilities/codexCoreCapability.js +516 -0
- package/dist/codex/capabilities/codexCoreCapability.js.map +1 -0
- package/dist/codex/fs.d.ts +4 -0
- package/dist/codex/fs.d.ts.map +1 -0
- package/dist/codex/fs.js +25 -0
- package/dist/codex/fs.js.map +1 -0
- package/dist/codex/persistence/planStore.d.ts +4 -0
- package/dist/codex/persistence/planStore.d.ts.map +1 -0
- package/dist/codex/persistence/planStore.js +59 -0
- package/dist/codex/persistence/planStore.js.map +1 -0
- package/dist/codex/pluginAllowlist.d.ts +4 -0
- package/dist/codex/pluginAllowlist.d.ts.map +1 -0
- package/dist/codex/pluginAllowlist.js +14 -0
- package/dist/codex/pluginAllowlist.js.map +1 -0
- package/dist/codex/types.d.ts +21 -0
- package/dist/codex/types.d.ts.map +1 -0
- package/dist/codex/types.js +62 -0
- package/dist/codex/types.js.map +1 -0
- package/dist/contracts/agent-schemas.json +5 -5
- package/dist/core/agent.d.ts +83 -24
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +499 -248
- package/dist/core/agent.js.map +1 -1
- package/dist/core/preferences.d.ts +1 -0
- package/dist/core/preferences.d.ts.map +1 -1
- package/dist/core/preferences.js +8 -1
- package/dist/core/preferences.js.map +1 -1
- package/dist/core/reliabilityPrompt.d.ts +9 -0
- package/dist/core/reliabilityPrompt.d.ts.map +1 -0
- package/dist/core/reliabilityPrompt.js +31 -0
- package/dist/core/reliabilityPrompt.js.map +1 -0
- package/dist/core/schemaValidator.js +3 -3
- package/dist/core/schemaValidator.js.map +1 -1
- package/dist/core/toolPreconditions.d.ts +0 -11
- package/dist/core/toolPreconditions.d.ts.map +1 -1
- package/dist/core/toolPreconditions.js +33 -164
- package/dist/core/toolPreconditions.js.map +1 -1
- package/dist/core/toolRuntime.d.ts.map +1 -1
- package/dist/core/toolRuntime.js +9 -114
- package/dist/core/toolRuntime.js.map +1 -1
- package/dist/core/updateChecker.d.ts +61 -1
- package/dist/core/updateChecker.d.ts.map +1 -1
- package/dist/core/updateChecker.js +147 -3
- package/dist/core/updateChecker.js.map +1 -1
- package/dist/headless/evalMode.d.ts.map +1 -1
- package/dist/headless/evalMode.js +6 -0
- package/dist/headless/evalMode.js.map +1 -1
- package/dist/headless/headlessApp.d.ts.map +1 -1
- package/dist/headless/headlessApp.js +6 -39
- package/dist/headless/headlessApp.js.map +1 -1
- package/dist/mcp/sseClient.d.ts +4 -1
- package/dist/mcp/sseClient.d.ts.map +1 -1
- package/dist/mcp/sseClient.js +36 -2
- package/dist/mcp/sseClient.js.map +1 -1
- package/dist/mcp/stdioClient.d.ts +4 -1
- package/dist/mcp/stdioClient.d.ts.map +1 -1
- package/dist/mcp/stdioClient.js +41 -1
- package/dist/mcp/stdioClient.js.map +1 -1
- package/dist/mcp/toolBridge.d.ts +3 -0
- package/dist/mcp/toolBridge.d.ts.map +1 -1
- package/dist/mcp/toolBridge.js +2 -2
- package/dist/mcp/toolBridge.js.map +1 -1
- package/dist/mcp/types.d.ts +18 -0
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
- package/dist/plugins/tools/nodeDefaults.js +0 -2
- package/dist/plugins/tools/nodeDefaults.js.map +1 -1
- package/dist/providers/openaiResponsesProvider.d.ts.map +1 -1
- package/dist/providers/openaiResponsesProvider.js +79 -74
- package/dist/providers/openaiResponsesProvider.js.map +1 -1
- package/dist/runtime/agentController.d.ts.map +1 -1
- package/dist/runtime/agentController.js +6 -3
- package/dist/runtime/agentController.js.map +1 -1
- package/dist/runtime/agentSession.d.ts +0 -2
- package/dist/runtime/agentSession.d.ts.map +1 -1
- package/dist/runtime/agentSession.js +2 -2
- package/dist/runtime/agentSession.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +25 -18
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +345 -291
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/shellApp.d.ts.map +1 -1
- package/dist/shell/shellApp.js +15 -8
- package/dist/shell/shellApp.js.map +1 -1
- package/dist/shell/systemPrompt.d.ts.map +1 -1
- package/dist/shell/systemPrompt.js +4 -15
- package/dist/shell/systemPrompt.js.map +1 -1
- package/dist/subagents/taskRunner.js +2 -1
- package/dist/subagents/taskRunner.js.map +1 -1
- package/dist/tools/bashTools.d.ts.map +1 -1
- package/dist/tools/bashTools.js +101 -8
- package/dist/tools/bashTools.js.map +1 -1
- package/dist/tools/diffUtils.d.ts +8 -2
- package/dist/tools/diffUtils.d.ts.map +1 -1
- package/dist/tools/diffUtils.js +72 -13
- package/dist/tools/diffUtils.js.map +1 -1
- package/dist/tools/grepTools.d.ts.map +1 -1
- package/dist/tools/grepTools.js +10 -2
- package/dist/tools/grepTools.js.map +1 -1
- package/dist/tools/planningTools.d.ts +0 -10
- package/dist/tools/planningTools.d.ts.map +1 -1
- package/dist/tools/planningTools.js +0 -16
- package/dist/tools/planningTools.js.map +1 -1
- package/dist/tools/searchTools.d.ts.map +1 -1
- package/dist/tools/searchTools.js +4 -2
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/ui/PromptController.d.ts +7 -4
- package/dist/ui/PromptController.d.ts.map +1 -1
- package/dist/ui/PromptController.js +4 -7
- package/dist/ui/PromptController.js.map +1 -1
- package/dist/ui/ShellUIAdapter.d.ts +286 -28
- package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
- package/dist/ui/ShellUIAdapter.js +1485 -121
- package/dist/ui/ShellUIAdapter.js.map +1 -1
- package/dist/ui/UnifiedUIController.d.ts +80 -0
- package/dist/ui/UnifiedUIController.d.ts.map +1 -0
- package/dist/ui/UnifiedUIController.js +211 -0
- package/dist/ui/UnifiedUIController.js.map +1 -0
- package/dist/ui/UnifiedUIRenderer.d.ts +102 -46
- package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
- package/dist/ui/UnifiedUIRenderer.js +680 -610
- package/dist/ui/UnifiedUIRenderer.js.map +1 -1
- package/dist/ui/animatedStatus.d.ts +128 -6
- package/dist/ui/animatedStatus.d.ts.map +1 -1
- package/dist/ui/animatedStatus.js +383 -50
- package/dist/ui/animatedStatus.js.map +1 -1
- package/dist/ui/animation/AnimationScheduler.d.ts +192 -0
- package/dist/ui/animation/AnimationScheduler.d.ts.map +1 -0
- package/dist/ui/animation/AnimationScheduler.js +432 -0
- package/dist/ui/animation/AnimationScheduler.js.map +1 -0
- package/dist/ui/display.d.ts +179 -25
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +678 -96
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/inPlaceUpdater.d.ts +181 -0
- package/dist/ui/inPlaceUpdater.d.ts.map +1 -0
- package/dist/ui/inPlaceUpdater.js +515 -0
- package/dist/ui/inPlaceUpdater.js.map +1 -0
- package/dist/ui/interrupts/InterruptManager.d.ts +142 -0
- package/dist/ui/interrupts/InterruptManager.d.ts.map +1 -0
- package/dist/ui/interrupts/InterruptManager.js +439 -0
- package/dist/ui/interrupts/InterruptManager.js.map +1 -0
- package/dist/ui/layout.d.ts +0 -1
- package/dist/ui/layout.d.ts.map +1 -1
- package/dist/ui/layout.js +0 -12
- package/dist/ui/layout.js.map +1 -1
- package/dist/ui/orchestration/StatusOrchestrator.d.ts +1 -1
- package/dist/ui/orchestration/StatusOrchestrator.js +1 -1
- package/dist/ui/orchestration/UIUpdateCoordinator.d.ts +61 -7
- package/dist/ui/orchestration/UIUpdateCoordinator.d.ts.map +1 -1
- package/dist/ui/orchestration/UIUpdateCoordinator.js +232 -20
- package/dist/ui/orchestration/UIUpdateCoordinator.js.map +1 -1
- package/dist/ui/shortcutsHelp.d.ts.map +1 -1
- package/dist/ui/shortcutsHelp.js +0 -1
- package/dist/ui/shortcutsHelp.js.map +1 -1
- package/dist/ui/telemetry/ResponseTracker.d.ts +22 -0
- package/dist/ui/telemetry/ResponseTracker.d.ts.map +1 -0
- package/dist/ui/telemetry/ResponseTracker.js +60 -0
- package/dist/ui/telemetry/ResponseTracker.js.map +1 -0
- package/dist/ui/telemetry/UITelemetry.d.ts +181 -0
- package/dist/ui/telemetry/UITelemetry.d.ts.map +1 -0
- package/dist/ui/telemetry/UITelemetry.js +446 -0
- package/dist/ui/telemetry/UITelemetry.js.map +1 -0
- package/dist/ui/unified/index.d.ts +28 -1
- package/dist/ui/unified/index.d.ts.map +1 -1
- package/dist/ui/unified/index.js +41 -2
- package/dist/ui/unified/index.js.map +1 -1
- package/dist/ui/unified/layout.d.ts +12 -0
- package/dist/ui/unified/layout.d.ts.map +1 -0
- package/dist/ui/unified/layout.js +96 -0
- package/dist/ui/unified/layout.js.map +1 -0
- package/package.json +1 -2
- package/dist/StringUtils.d.ts +0 -8
- package/dist/StringUtils.d.ts.map +0 -1
- package/dist/StringUtils.js +0 -11
- package/dist/StringUtils.js.map +0 -1
- package/dist/core/aiFlowSupervisor.d.ts +0 -44
- package/dist/core/aiFlowSupervisor.d.ts.map +0 -1
- package/dist/core/aiFlowSupervisor.js +0 -299
- package/dist/core/aiFlowSupervisor.js.map +0 -1
- package/dist/core/cliTestHarness.d.ts +0 -200
- package/dist/core/cliTestHarness.d.ts.map +0 -1
- package/dist/core/cliTestHarness.js +0 -549
- package/dist/core/cliTestHarness.js.map +0 -1
- package/dist/core/testUtils.d.ts +0 -121
- package/dist/core/testUtils.d.ts.map +0 -1
- package/dist/core/testUtils.js +0 -235
- package/dist/core/testUtils.js.map +0 -1
- package/dist/core/toolValidation.d.ts +0 -116
- package/dist/core/toolValidation.d.ts.map +0 -1
- package/dist/core/toolValidation.js +0 -282
- package/dist/core/toolValidation.js.map +0 -1
- package/dist/ui/planOverlay.d.ts +0 -28
- package/dist/ui/planOverlay.d.ts.map +0 -1
- package/dist/ui/planOverlay.js +0 -156
- package/dist/ui/planOverlay.js.map +0 -1
- package/dist/ui/streamingFormatter.d.ts +0 -30
- package/dist/ui/streamingFormatter.d.ts.map +0 -1
- package/dist/ui/streamingFormatter.js +0 -91
- package/dist/ui/streamingFormatter.js.map +0 -1
- package/dist/utils/errorUtils.d.ts +0 -16
- package/dist/utils/errorUtils.d.ts.map +0 -1
- package/dist/utils/errorUtils.js +0 -66
- package/dist/utils/errorUtils.js.map +0 -1
|
@@ -0,0 +1,432 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimationScheduler.js","sourceRoot":"","sources":["../../../src/ui/animation/AnimationScheduler.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/display.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Display - Simplified UI facade that routes all output through UnifiedUIRenderer
|
|
3
|
+
*
|
|
4
|
+
* This class now serves as a compatibility layer, providing the same API
|
|
5
|
+
* but delegating all actual rendering to UnifiedUIRenderer.
|
|
6
|
+
*/
|
|
1
7
|
import type { ProviderUsage } from '../core/types.js';
|
|
2
|
-
import { UnifiedUIRenderer
|
|
8
|
+
import { UnifiedUIRenderer } from './UnifiedUIRenderer.js';
|
|
3
9
|
type OutputStream = NodeJS.WritableStream & {
|
|
4
10
|
columns?: number;
|
|
5
11
|
rows?: number;
|
|
@@ -11,50 +17,198 @@ export interface DisplayMessageMetadata {
|
|
|
11
17
|
usage?: ProviderUsage | null;
|
|
12
18
|
contextWindowTokens?: number | null;
|
|
13
19
|
wasStreamed?: boolean;
|
|
20
|
+
suppressDisplay?: boolean;
|
|
14
21
|
}
|
|
22
|
+
interface StatusLineContextInfo {
|
|
23
|
+
percentage?: number;
|
|
24
|
+
tokens?: number;
|
|
25
|
+
sessionElapsedMs?: number;
|
|
26
|
+
}
|
|
27
|
+
type ActionStatus = 'pending' | 'success' | 'error' | 'info' | 'warning';
|
|
28
|
+
interface OutputInterceptor {
|
|
29
|
+
beforeWrite?: () => void;
|
|
30
|
+
afterWrite?: (content?: string) => void;
|
|
31
|
+
}
|
|
32
|
+
type CommandPaletteTone = 'info' | 'warn' | 'success' | 'muted';
|
|
33
|
+
interface CommandPaletteItem {
|
|
34
|
+
command: string;
|
|
35
|
+
description: string;
|
|
36
|
+
category?: string | null;
|
|
37
|
+
tone?: CommandPaletteTone;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Display class - now a thin wrapper around UnifiedUIRenderer
|
|
41
|
+
*
|
|
42
|
+
* Provides backward-compatible API while routing all output through the renderer.
|
|
43
|
+
*/
|
|
15
44
|
export declare class Display {
|
|
16
|
-
private renderer;
|
|
17
45
|
private readonly outputStream;
|
|
46
|
+
private readonly errorStream;
|
|
47
|
+
private renderer;
|
|
48
|
+
private readonly outputInterceptors;
|
|
18
49
|
private inlinePanelHandler;
|
|
19
|
-
|
|
20
|
-
private lastToolResult;
|
|
21
|
-
private activeSpinner;
|
|
22
|
-
constructor(stream?: OutputStream, _errorStream?: OutputStream);
|
|
50
|
+
constructor(stream?: OutputStream, errorStream?: OutputStream);
|
|
23
51
|
setRenderer(renderer: UnifiedUIRenderer | null): void;
|
|
52
|
+
hasRenderer(): boolean;
|
|
24
53
|
setInlinePanelHandler(handler: ((content: string) => boolean) | null): void;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
54
|
+
private maybeHandleInlinePanel;
|
|
55
|
+
private enqueueEvent;
|
|
56
|
+
registerOutputInterceptor(interceptor: OutputInterceptor): () => void;
|
|
57
|
+
private notifyBeforeOutput;
|
|
58
|
+
private notifyAfterOutput;
|
|
59
|
+
/**
|
|
60
|
+
* Write raw content directly
|
|
61
|
+
*/
|
|
62
|
+
writeRaw(content: string): void;
|
|
63
|
+
/**
|
|
64
|
+
* Stream chunk (for streaming responses)
|
|
65
|
+
*/
|
|
28
66
|
stream(chunk: string): void;
|
|
29
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Backward-compatible alias
|
|
69
|
+
*/
|
|
70
|
+
writeStreamChunk(chunk: string): void;
|
|
71
|
+
/**
|
|
72
|
+
* Get the output stream for direct access
|
|
73
|
+
*/
|
|
74
|
+
getOutputStream(): OutputStream;
|
|
75
|
+
/**
|
|
76
|
+
* Show thinking indicator
|
|
77
|
+
* NO-OP: Don't emit events during SSE streaming.
|
|
78
|
+
* The animated spinner in the status line shows thinking state.
|
|
79
|
+
*/
|
|
80
|
+
showThinking(_message?: string): void;
|
|
81
|
+
/**
|
|
82
|
+
* Update thinking indicator (status line only, not scrollback)
|
|
83
|
+
* This is called frequently during streaming to show progress snippets.
|
|
84
|
+
* The actual content will be rendered as a complete block later.
|
|
85
|
+
*/
|
|
86
|
+
updateThinking(_message: string): void;
|
|
87
|
+
/**
|
|
88
|
+
* Stop thinking (no-op - renderer handles state)
|
|
89
|
+
*/
|
|
90
|
+
stopThinking(_addNewLine?: boolean): void;
|
|
91
|
+
/**
|
|
92
|
+
* Show assistant message
|
|
93
|
+
*/
|
|
30
94
|
showAssistantMessage(content: string, metadata?: DisplayMessageMetadata): void;
|
|
95
|
+
/**
|
|
96
|
+
* Show narrative (thought)
|
|
97
|
+
*/
|
|
31
98
|
showNarrative(content: string): void;
|
|
99
|
+
/**
|
|
100
|
+
* Show action
|
|
101
|
+
*/
|
|
102
|
+
showAction(text: string, status?: ActionStatus): void;
|
|
103
|
+
/**
|
|
104
|
+
* Show sub-action
|
|
105
|
+
*/
|
|
106
|
+
showSubAction(text: string, status?: ActionStatus): void;
|
|
107
|
+
/**
|
|
108
|
+
* Show message
|
|
109
|
+
*/
|
|
110
|
+
showMessage(content: string, role?: 'assistant' | 'system'): void;
|
|
111
|
+
/**
|
|
112
|
+
* Show system message
|
|
113
|
+
*/
|
|
32
114
|
showSystemMessage(content: string): void;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
showSuccess(message: string): void;
|
|
115
|
+
/**
|
|
116
|
+
* Show test event (renders in unified UI "test" lane)
|
|
117
|
+
*/
|
|
37
118
|
showTestEvent(content: string): void;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
private clearActiveSpinner;
|
|
42
|
-
isSpinnerActive(): boolean;
|
|
43
|
-
getThinkingElapsedMs(): number | null;
|
|
119
|
+
/**
|
|
120
|
+
* Show an inline panel; in non-overlay mode this simply writes to output.
|
|
121
|
+
*/
|
|
44
122
|
showInlinePanel(content: string | string[]): void;
|
|
45
123
|
clearInlinePanel(): void;
|
|
124
|
+
/**
|
|
125
|
+
* Capture a single line of user input without logging it to scrollback.
|
|
126
|
+
* Uses the unified renderer when available, with a readline fallback.
|
|
127
|
+
*/
|
|
46
128
|
captureUserInput(options?: {
|
|
47
129
|
allowEmpty?: boolean;
|
|
48
130
|
trim?: boolean;
|
|
49
131
|
resetBuffer?: boolean;
|
|
50
132
|
}): Promise<string>;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
133
|
+
/**
|
|
134
|
+
* Show error
|
|
135
|
+
*/
|
|
136
|
+
showError(message: string, error?: unknown): void;
|
|
137
|
+
/**
|
|
138
|
+
* Show warning
|
|
139
|
+
*/
|
|
140
|
+
showWarning(message: string): void;
|
|
141
|
+
/**
|
|
142
|
+
* Show info
|
|
143
|
+
*/
|
|
144
|
+
showInfo(message: string): void;
|
|
145
|
+
/**
|
|
146
|
+
* Show success
|
|
147
|
+
*/
|
|
148
|
+
showSuccess(message: string): void;
|
|
149
|
+
/**
|
|
150
|
+
* Show progress badge
|
|
151
|
+
*/
|
|
152
|
+
showProgressBadge(label: string, current: number, total: number): void;
|
|
153
|
+
/**
|
|
154
|
+
* Show status line
|
|
155
|
+
*/
|
|
156
|
+
showStatusLine(status: string, elapsedMs?: number, _context?: StatusLineContextInfo): void;
|
|
157
|
+
/**
|
|
158
|
+
* Show command palette
|
|
159
|
+
*/
|
|
160
|
+
showCommandPalette(commands: CommandPaletteItem[], options?: {
|
|
161
|
+
title?: string;
|
|
162
|
+
intro?: string;
|
|
163
|
+
}): void;
|
|
164
|
+
/**
|
|
165
|
+
* Show planning step
|
|
166
|
+
*/
|
|
167
|
+
showPlanningStep(step: string, index: number, total: number): void;
|
|
168
|
+
/**
|
|
169
|
+
* Show thinking block
|
|
170
|
+
*/
|
|
171
|
+
showThinkingBlock(content: string, durationMs?: number): void;
|
|
172
|
+
/**
|
|
173
|
+
* Clear screen
|
|
174
|
+
*/
|
|
54
175
|
clear(): void;
|
|
55
|
-
|
|
56
|
-
|
|
176
|
+
/**
|
|
177
|
+
* Update streaming status (routes to renderer)
|
|
178
|
+
*/
|
|
179
|
+
updateStreamingStatus(status: string | null): void;
|
|
180
|
+
/**
|
|
181
|
+
* Clear streaming status
|
|
182
|
+
*/
|
|
183
|
+
clearStreamingStatus(): void;
|
|
184
|
+
/**
|
|
185
|
+
* Check if streaming status is visible
|
|
186
|
+
*/
|
|
187
|
+
isStreamingStatusVisible(): boolean;
|
|
188
|
+
parallelAgentStatus(content: string): void;
|
|
189
|
+
private getColumnWidth;
|
|
190
|
+
private formatErrorDetails;
|
|
57
191
|
private formatElapsed;
|
|
192
|
+
private buildChatBox;
|
|
193
|
+
private resolveMessageWidth;
|
|
194
|
+
private formatTelemetryLine;
|
|
195
|
+
private buildClaudeStyleThought;
|
|
196
|
+
private formatElapsedTime;
|
|
197
|
+
private buildCommandPalette;
|
|
198
|
+
private groupPaletteCommands;
|
|
199
|
+
private computeCommandColumnWidth;
|
|
200
|
+
private formatPaletteCategory;
|
|
201
|
+
private colorizePaletteText;
|
|
202
|
+
private wrapWithPrefix;
|
|
203
|
+
private buildWrappedSubActionLines;
|
|
204
|
+
private buildSubActionPrefixes;
|
|
205
|
+
private resolveStatusColor;
|
|
206
|
+
private formatActionIcon;
|
|
207
|
+
private wrapForRenderer;
|
|
208
|
+
private wrapLine;
|
|
209
|
+
private chunkWord;
|
|
210
|
+
private visibleLength;
|
|
211
|
+
private stripAnsi;
|
|
58
212
|
}
|
|
59
213
|
export declare const display: Display;
|
|
60
214
|
export {};
|