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.
- package/agents/erosolar-code.rules.json +2 -2
- package/agents/general.rules.json +3 -21
- package/dist/StringUtils.d.ts +8 -0
- package/dist/StringUtils.d.ts.map +1 -0
- package/dist/StringUtils.js +11 -0
- package/dist/StringUtils.js.map +1 -0
- package/dist/capabilities/statusCapability.js +2 -2
- package/dist/capabilities/statusCapability.js.map +1 -1
- package/dist/contracts/agent-schemas.json +0 -5
- package/dist/core/agent.d.ts +11 -70
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +180 -854
- package/dist/core/agent.js.map +1 -1
- package/dist/core/aiFlowSupervisor.d.ts +44 -0
- package/dist/core/aiFlowSupervisor.d.ts.map +1 -0
- package/dist/core/aiFlowSupervisor.js +299 -0
- package/dist/core/aiFlowSupervisor.js.map +1 -0
- package/dist/core/cliTestHarness.d.ts +200 -0
- package/dist/core/cliTestHarness.d.ts.map +1 -0
- package/dist/core/cliTestHarness.js +549 -0
- package/dist/core/cliTestHarness.js.map +1 -0
- package/dist/core/preferences.d.ts +0 -1
- package/dist/core/preferences.d.ts.map +1 -1
- package/dist/core/preferences.js +2 -9
- package/dist/core/preferences.js.map +1 -1
- package/dist/core/schemaValidator.js +3 -3
- package/dist/core/schemaValidator.js.map +1 -1
- package/dist/core/testUtils.d.ts +121 -0
- package/dist/core/testUtils.d.ts.map +1 -0
- package/dist/core/testUtils.js +235 -0
- package/dist/core/testUtils.js.map +1 -0
- package/dist/core/toolPreconditions.d.ts +11 -0
- package/dist/core/toolPreconditions.d.ts.map +1 -1
- package/dist/core/toolPreconditions.js +164 -33
- package/dist/core/toolPreconditions.js.map +1 -1
- package/dist/core/toolRuntime.d.ts.map +1 -1
- package/dist/core/toolRuntime.js +114 -9
- package/dist/core/toolRuntime.js.map +1 -1
- package/dist/core/toolValidation.d.ts +116 -0
- package/dist/core/toolValidation.d.ts.map +1 -0
- package/dist/core/toolValidation.js +282 -0
- package/dist/core/toolValidation.js.map +1 -0
- package/dist/core/updateChecker.d.ts +1 -61
- package/dist/core/updateChecker.d.ts.map +1 -1
- package/dist/core/updateChecker.js +3 -147
- package/dist/core/updateChecker.js.map +1 -1
- package/dist/headless/headlessApp.d.ts.map +1 -1
- package/dist/headless/headlessApp.js +39 -0
- package/dist/headless/headlessApp.js.map +1 -1
- package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
- package/dist/plugins/tools/nodeDefaults.js +2 -0
- package/dist/plugins/tools/nodeDefaults.js.map +1 -1
- package/dist/providers/openaiResponsesProvider.d.ts.map +1 -1
- package/dist/providers/openaiResponsesProvider.js +74 -79
- package/dist/providers/openaiResponsesProvider.js.map +1 -1
- package/dist/runtime/agentController.d.ts.map +1 -1
- package/dist/runtime/agentController.js +0 -2
- package/dist/runtime/agentController.js.map +1 -1
- package/dist/runtime/agentSession.d.ts.map +1 -1
- package/dist/runtime/agentSession.js +2 -3
- package/dist/runtime/agentSession.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +8 -16
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +151 -378
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/systemPrompt.d.ts.map +1 -1
- package/dist/shell/systemPrompt.js +15 -4
- package/dist/shell/systemPrompt.js.map +1 -1
- package/dist/subagents/taskRunner.js +1 -2
- package/dist/subagents/taskRunner.js.map +1 -1
- package/dist/tools/bashTools.d.ts.map +1 -1
- package/dist/tools/bashTools.js +8 -101
- package/dist/tools/bashTools.js.map +1 -1
- package/dist/tools/diffUtils.d.ts +2 -8
- package/dist/tools/diffUtils.d.ts.map +1 -1
- package/dist/tools/diffUtils.js +13 -72
- package/dist/tools/diffUtils.js.map +1 -1
- package/dist/tools/grepTools.d.ts.map +1 -1
- package/dist/tools/grepTools.js +2 -10
- package/dist/tools/grepTools.js.map +1 -1
- package/dist/tools/searchTools.d.ts.map +1 -1
- package/dist/tools/searchTools.js +2 -4
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/ui/PromptController.d.ts +0 -2
- package/dist/ui/PromptController.d.ts.map +1 -1
- package/dist/ui/PromptController.js +0 -2
- package/dist/ui/PromptController.js.map +1 -1
- package/dist/ui/ShellUIAdapter.d.ts +18 -71
- package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
- package/dist/ui/ShellUIAdapter.js +139 -237
- package/dist/ui/ShellUIAdapter.js.map +1 -1
- package/dist/ui/UnifiedUIController.d.ts +1 -0
- package/dist/ui/UnifiedUIController.d.ts.map +1 -1
- package/dist/ui/UnifiedUIController.js +1 -0
- package/dist/ui/UnifiedUIController.js.map +1 -1
- package/dist/ui/UnifiedUIRenderer.d.ts +5 -122
- package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
- package/dist/ui/UnifiedUIRenderer.js +125 -830
- package/dist/ui/UnifiedUIRenderer.js.map +1 -1
- package/dist/ui/compactRenderer.d.ts +139 -0
- package/dist/ui/compactRenderer.d.ts.map +1 -0
- package/dist/ui/compactRenderer.js +398 -0
- package/dist/ui/compactRenderer.js.map +1 -0
- package/dist/ui/display.d.ts +48 -12
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +105 -22
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/streamingFormatter.d.ts +30 -0
- package/dist/ui/streamingFormatter.d.ts.map +1 -0
- package/dist/ui/streamingFormatter.js +91 -0
- package/dist/ui/streamingFormatter.js.map +1 -0
- package/dist/ui/unified/index.d.ts +1 -1
- package/dist/ui/unified/index.d.ts.map +1 -1
- package/dist/ui/unified/index.js +2 -0
- package/dist/ui/unified/index.js.map +1 -1
- package/dist/utils/errorUtils.d.ts +16 -0
- package/dist/utils/errorUtils.d.ts.map +1 -0
- package/dist/utils/errorUtils.js +66 -0
- package/dist/utils/errorUtils.js.map +1 -0
- package/package.json +2 -1
- package/dist/core/reliabilityPrompt.d.ts +0 -9
- package/dist/core/reliabilityPrompt.d.ts.map +0 -1
- package/dist/core/reliabilityPrompt.js +0 -30
- package/dist/core/reliabilityPrompt.js.map +0 -1
- package/dist/ui/animatedStatus.d.ts +0 -129
- package/dist/ui/animatedStatus.d.ts.map +0 -1
- package/dist/ui/animatedStatus.js +0 -384
- 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":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,wDAAwD;AACxD,IAAI,eAAe,GAA8B,IAAI,CAAC;AAEtD,SAAS,YAAY;IACnB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B;IAC/E,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,eAAe;IAClB,UAAU,GAAG,CAAC,CAAC;IACN,MAAM,CAAW;IAC1B,UAAU,GAA0B,IAAI,CAAC;IACzC,OAAO,CAAS;IACP,KAAK,CAA2B;IACzC,YAAY,GAAG,EAAE,CAAC;IAClB,QAAQ,CAA2B;IAE3C,YACE,UAAkB,EAAE,EACpB,QAA0D,MAAM,EAChE,QAAkC,KAAK,CAAC,IAAI;QAE5C,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,QAAkC;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC7D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;YACxD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,uBAAuB;IACjC,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,MAAM;QACJ,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IACvE,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;IAClC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACtB,OAAO,GAAG,CAAC,CAAC;IACZ,MAAM,GAAG,CAAC,CAAC;IACF,KAAK,CAAS;IACd,KAAK,CAAS;IACvB,WAAW,GAAkB,IAAI,CAAC;IAE1C,YAAY,KAAa,EAAE,QAAgB,EAAE;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1C,8BAA8B;QAC9B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC5C,SAAS,CAAC,gBAAgB,CACxB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,MAAM,EACX,UAAU,EACV,GAAG,EACH,kBAAkB,CAAC,MAAM,CAAC,WAAW,CACtC,CAAC;QAEF,SAAS,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,IAAmC,EAAE,EAAE;YACxE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACnE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1D,IAAI,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAElE,IAAI,OAAO,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACxE,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACpF,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;QAED,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5E,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAClF,OAAO,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;IACjC,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,YAAY,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACtB,SAAS,CAAS;IAClB,UAAU,GAA0B,IAAI,CAAC;IACzC,cAAc,GAAG,IAAI,CAAC;IACtB,QAAQ,CAA6B;IAE7C;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,QAAoC;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,sBAAsB;IAClC,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED,MAAM;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QAEvC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,GAAG,KAAK,KAAK,OAAO,GAAG,EAAE,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;QACvD,CAAC;aAAM,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,OAAO,GAAG,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAW;IACd,IAAI,CAAS;IACb,SAAS,GAAG,CAAC,CAAC;IACd,UAAU,GAAG,IAAI,CAAC;IAClB,UAAU,GAA0B,IAAI,CAAC;IACzC,QAAQ,CAA8B;IAE9C,YAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,QAAqC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;gBACtB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;oBACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBAC1B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;gBACtB,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;oBAC1B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;oBACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACzB,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB;IAC7B,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM;QACJ,+CAA+C;QAC/C,IAAI,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACpB,QAAQ,GAAG,CAAC,CAAC;IACb,UAAU,GAA0B,IAAI,CAAC;IACzC,KAAK,CAAS;IACd,QAAQ,CAA8B;IAE9C,YAAY,QAAgB,UAAU;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,QAAqC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,gCAAgC;IAC3C,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;IACjH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAe;IAClB,OAAO,CAAkB;IACzB,OAAO,CAAsB;IAC7B,QAAQ,GAAG,KAAK,CAAC;IAEzB;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,QAAmC;QACxD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEjC,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1C,QAAQ,CAAC,GAAG,WAAW,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,aAAa,CAAC,OAAe;QAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,IAAI;QACF,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;IACpH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,UAAU,GAAG,CAAC,CAAC;IACf,gBAAgB,GAAG,CAAC,CAAC;IACrB,cAAc,GAA0B,IAAI,CAAC;IAErD,MAAM,CAAC,UAAkB;QACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEO,OAAO;QACb,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC;YACrD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;gBACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBACxC,OAAO;YACT,CAAC;YAED,gBAAgB;YAChB,IAAI,CAAC,UAAU,IAAI,IAAI,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU;QACxD,CAAC,CAAC;QAEF,IAAI,EAAE,CAAC;IACT,CAAC;IAED,MAAM;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;YACxB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;gBAC1B,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;oBACvB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QAE5B,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAe;IAClB,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,UAAU,GAAG,CAAC,CAAC;IACf,UAAU,GAA0B,IAAI,CAAC;IACzC,QAAQ,CAA2B;IAE3C,KAAK,CAAC,QAAkC;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC7D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,uBAAuB;IAClC,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;IACzD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACzE,UAAU,GAAG,CAAC,CAAC;IACf,UAAU,GAA0B,IAAI,CAAC;IACzC,QAAQ,CAA2B;IAE3C,KAAK,CAAC,QAAkC;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC7D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC;IAC7D,CAAC;CACF;AAED,2BAA2B;AAC3B,MAAM,UAAU,iBAAiB;IAC/B,IAAI,eAAe,EAAE,CAAC;QACpB,eAAe,CAAC,OAAO,EAAE,CAAC;QAC1B,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;AACH,CAAC"}
|