@kya-os/cli 0.1.0-beta.5 → 0.1.0-beta.7
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 +210 -34
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +28 -6
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/cli-experience-demo-simple.d.ts +14 -0
- package/dist/commands/cli-experience-demo-simple.d.ts.map +1 -0
- package/dist/commands/cli-experience-demo-simple.js +119 -0
- package/dist/commands/cli-experience-demo-simple.js.map +1 -0
- package/dist/commands/cli-experience-demo.d.ts +14 -0
- package/dist/commands/cli-experience-demo.d.ts.map +1 -0
- package/dist/commands/cli-experience-demo.js +172 -0
- package/dist/commands/cli-experience-demo.js.map +1 -0
- package/dist/commands/effects-demo.d.ts +10 -0
- package/dist/commands/effects-demo.d.ts.map +1 -0
- package/dist/commands/effects-demo.js +292 -0
- package/dist/commands/effects-demo.js.map +1 -0
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +12 -2
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +407 -73
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/rotate.d.ts.map +1 -1
- package/dist/commands/rotate.js +19 -3
- package/dist/commands/rotate.js.map +1 -1
- package/dist/dev.d.ts +7 -0
- package/dist/dev.d.ts.map +1 -0
- package/dist/dev.js +9 -0
- package/dist/dev.js.map +1 -0
- package/dist/effects/__tests__/effects.test.d.ts +5 -0
- package/dist/effects/__tests__/effects.test.d.ts.map +1 -0
- package/dist/effects/__tests__/effects.test.js +206 -0
- package/dist/effects/__tests__/effects.test.js.map +1 -0
- package/dist/effects/animation-engine.d.ts +173 -0
- package/dist/effects/animation-engine.d.ts.map +1 -0
- package/dist/effects/animation-engine.js +254 -0
- package/dist/effects/animation-engine.js.map +1 -0
- package/dist/effects/cli-integration.d.ts +86 -0
- package/dist/effects/cli-integration.d.ts.map +1 -0
- package/dist/effects/cli-integration.js +309 -0
- package/dist/effects/cli-integration.js.map +1 -0
- package/dist/effects/config.d.ts +95 -0
- package/dist/effects/config.d.ts.map +1 -0
- package/dist/effects/config.js +216 -0
- package/dist/effects/config.js.map +1 -0
- package/dist/effects/effect-runner.d.ts +69 -0
- package/dist/effects/effect-runner.d.ts.map +1 -0
- package/dist/effects/effect-runner.js +255 -0
- package/dist/effects/effect-runner.js.map +1 -0
- package/dist/effects/gradient.d.ts +131 -0
- package/dist/effects/gradient.d.ts.map +1 -0
- package/dist/effects/gradient.js +236 -0
- package/dist/effects/gradient.js.map +1 -0
- package/dist/effects/implementations/beams.d.ts +80 -0
- package/dist/effects/implementations/beams.d.ts.map +1 -0
- package/dist/effects/implementations/beams.js +221 -0
- package/dist/effects/implementations/beams.js.map +1 -0
- package/dist/effects/implementations/binary-path.d.ts +88 -0
- package/dist/effects/implementations/binary-path.d.ts.map +1 -0
- package/dist/effects/implementations/binary-path.js +296 -0
- package/dist/effects/implementations/binary-path.js.map +1 -0
- package/dist/effects/implementations/blackhole.d.ts +98 -0
- package/dist/effects/implementations/blackhole.d.ts.map +1 -0
- package/dist/effects/implementations/blackhole.js +394 -0
- package/dist/effects/implementations/blackhole.js.map +1 -0
- package/dist/effects/implementations/burn.d.ts +74 -0
- package/dist/effects/implementations/burn.d.ts.map +1 -0
- package/dist/effects/implementations/burn.js +234 -0
- package/dist/effects/implementations/burn.js.map +1 -0
- package/dist/effects/implementations/decrypt.d.ts +115 -0
- package/dist/effects/implementations/decrypt.d.ts.map +1 -0
- package/dist/effects/implementations/decrypt.js +394 -0
- package/dist/effects/implementations/decrypt.js.map +1 -0
- package/dist/effects/implementations/test.d.ts +113 -0
- package/dist/effects/implementations/test.d.ts.map +1 -0
- package/dist/effects/implementations/test.js +552 -0
- package/dist/effects/implementations/test.js.map +1 -0
- package/dist/effects/implementations/waves.d.ts +78 -0
- package/dist/effects/implementations/waves.d.ts.map +1 -0
- package/dist/effects/implementations/waves.js +278 -0
- package/dist/effects/implementations/waves.js.map +1 -0
- package/dist/effects/index.d.ts +37 -0
- package/dist/effects/index.d.ts.map +1 -0
- package/dist/effects/index.js +79 -0
- package/dist/effects/index.js.map +1 -0
- package/dist/effects/motion-engine.d.ts +168 -0
- package/dist/effects/motion-engine.d.ts.map +1 -0
- package/dist/effects/motion-engine.js +353 -0
- package/dist/effects/motion-engine.js.map +1 -0
- package/dist/effects/safe-executor.d.ts +55 -0
- package/dist/effects/safe-executor.d.ts.map +1 -0
- package/dist/effects/safe-executor.js +210 -0
- package/dist/effects/safe-executor.js.map +1 -0
- package/dist/effects/template/effect-template.d.ts +97 -0
- package/dist/effects/template/effect-template.d.ts.map +1 -0
- package/dist/effects/template/effect-template.js +208 -0
- package/dist/effects/template/effect-template.js.map +1 -0
- package/dist/effects/types.d.ts +199 -0
- package/dist/effects/types.d.ts.map +1 -0
- package/dist/effects/types.js +80 -0
- package/dist/effects/types.js.map +1 -0
- package/dist/effects/utils.d.ts +104 -0
- package/dist/effects/utils.d.ts.map +1 -0
- package/dist/effects/utils.js +280 -0
- package/dist/effects/utils.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -42
- package/dist/index.js.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scene-Based Animation Engine for Terminal Effects
|
|
3
|
+
* Provides sophisticated animation capabilities with scenes, frames, and events
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Sync metric for scene timing
|
|
7
|
+
*/
|
|
8
|
+
export var SyncMetric;
|
|
9
|
+
(function (SyncMetric) {
|
|
10
|
+
/** Sync to time */
|
|
11
|
+
SyncMetric["TIME"] = "time";
|
|
12
|
+
/** Sync to motion distance */
|
|
13
|
+
SyncMetric["DISTANCE"] = "distance";
|
|
14
|
+
/** Sync to motion steps */
|
|
15
|
+
SyncMetric["STEP"] = "step";
|
|
16
|
+
})(SyncMetric || (SyncMetric = {}));
|
|
17
|
+
/**
|
|
18
|
+
* Animation scene - a sequence of frames
|
|
19
|
+
*/
|
|
20
|
+
export class Scene {
|
|
21
|
+
constructor(id) {
|
|
22
|
+
this.frames = [];
|
|
23
|
+
// @ts-ignore - Used internally
|
|
24
|
+
this.currentFrameIndex = 0;
|
|
25
|
+
// @ts-ignore - Used internally
|
|
26
|
+
this.frameStartTime = 0;
|
|
27
|
+
this._isLooping = false;
|
|
28
|
+
this._isComplete = false;
|
|
29
|
+
/** Sync metric for timing */
|
|
30
|
+
this.syncMetric = SyncMetric.TIME;
|
|
31
|
+
this.id = id;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Add a frame to the scene
|
|
35
|
+
*/
|
|
36
|
+
addFrame(symbol, duration, colors) {
|
|
37
|
+
this.frames.push({ symbol, duration, colors });
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Apply gradient to symbols across multiple frames
|
|
41
|
+
*/
|
|
42
|
+
applyGradientToSymbols(symbol, duration, gradient, _direction) {
|
|
43
|
+
const spectrum = gradient.getSpectrum();
|
|
44
|
+
const frameDuration = Math.floor(duration / spectrum.length);
|
|
45
|
+
for (const color of spectrum) {
|
|
46
|
+
this.addFrame(symbol, frameDuration, { fg: color, bg: null });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Set looping behavior
|
|
51
|
+
*/
|
|
52
|
+
setLooping(isLooping) {
|
|
53
|
+
this._isLooping = isLooping;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get current frame based on elapsed time
|
|
57
|
+
*/
|
|
58
|
+
getCurrentFrame(elapsedTime) {
|
|
59
|
+
if (this.frames.length === 0)
|
|
60
|
+
return null;
|
|
61
|
+
if (this._isComplete && !this._isLooping) {
|
|
62
|
+
return this.frames[this.frames.length - 1];
|
|
63
|
+
}
|
|
64
|
+
let totalDuration = 0;
|
|
65
|
+
let targetTime = elapsedTime;
|
|
66
|
+
// Handle looping
|
|
67
|
+
if (this._isLooping) {
|
|
68
|
+
const sceneDuration = this.frames.reduce((sum, frame) => sum + frame.duration, 0);
|
|
69
|
+
targetTime = elapsedTime % sceneDuration;
|
|
70
|
+
}
|
|
71
|
+
// Find the current frame
|
|
72
|
+
for (let i = 0; i < this.frames.length; i++) {
|
|
73
|
+
totalDuration += this.frames[i].duration;
|
|
74
|
+
if (targetTime < totalDuration) {
|
|
75
|
+
this.currentFrameIndex = i;
|
|
76
|
+
return this.frames[i];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Scene complete
|
|
80
|
+
this._isComplete = true;
|
|
81
|
+
if (this._isLooping) {
|
|
82
|
+
this.currentFrameIndex = 0;
|
|
83
|
+
this._isComplete = false;
|
|
84
|
+
return this.frames[0];
|
|
85
|
+
}
|
|
86
|
+
return this.frames[this.frames.length - 1];
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Reset the scene
|
|
90
|
+
*/
|
|
91
|
+
reset() {
|
|
92
|
+
this.currentFrameIndex = 0;
|
|
93
|
+
this.frameStartTime = 0;
|
|
94
|
+
this._isComplete = false;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Check if scene is complete
|
|
98
|
+
*/
|
|
99
|
+
isComplete() {
|
|
100
|
+
return this._isComplete && !this._isLooping;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get total duration of the scene
|
|
104
|
+
*/
|
|
105
|
+
getTotalDuration() {
|
|
106
|
+
return this.frames.reduce((sum, frame) => sum + frame.duration, 0);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get frame count
|
|
110
|
+
*/
|
|
111
|
+
getFrameCount() {
|
|
112
|
+
return this.frames.length;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get current frame index
|
|
116
|
+
*/
|
|
117
|
+
getCurrentFrameIndex() {
|
|
118
|
+
return this.currentFrameIndex;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Event types for character animation
|
|
123
|
+
*/
|
|
124
|
+
export var AnimationEvent;
|
|
125
|
+
(function (AnimationEvent) {
|
|
126
|
+
AnimationEvent["SCENE_COMPLETE"] = "scene_complete";
|
|
127
|
+
AnimationEvent["SCENE_ACTIVATED"] = "scene_activated";
|
|
128
|
+
AnimationEvent["FRAME_CHANGE"] = "frame_change";
|
|
129
|
+
})(AnimationEvent || (AnimationEvent = {}));
|
|
130
|
+
/**
|
|
131
|
+
* Character animation manager
|
|
132
|
+
*/
|
|
133
|
+
export class CharacterAnimation {
|
|
134
|
+
constructor(inputColors) {
|
|
135
|
+
this.scenes = new Map();
|
|
136
|
+
this.activeScene = null;
|
|
137
|
+
this.sceneStartTime = 0;
|
|
138
|
+
this.eventHandlers = [];
|
|
139
|
+
this.inputFgColor = inputColors?.fg;
|
|
140
|
+
this.inputBgColor = inputColors?.bg;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Create a new scene
|
|
144
|
+
*/
|
|
145
|
+
newScene(sceneId) {
|
|
146
|
+
const scene = new Scene(sceneId);
|
|
147
|
+
this.scenes.set(sceneId, scene);
|
|
148
|
+
return scene;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get a scene by ID
|
|
152
|
+
*/
|
|
153
|
+
queryScene(sceneId) {
|
|
154
|
+
return this.scenes.get(sceneId);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Activate a scene
|
|
158
|
+
*/
|
|
159
|
+
activateScene(scene) {
|
|
160
|
+
if (this.activeScene && this.activeScene !== scene) {
|
|
161
|
+
this.triggerEvent(AnimationEvent.SCENE_COMPLETE, this.activeScene.id);
|
|
162
|
+
}
|
|
163
|
+
this.activeScene = scene;
|
|
164
|
+
this.sceneStartTime = Date.now();
|
|
165
|
+
scene.reset();
|
|
166
|
+
this.triggerEvent(AnimationEvent.SCENE_ACTIVATED, scene.id);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Update animation and get current visual
|
|
170
|
+
*/
|
|
171
|
+
update() {
|
|
172
|
+
if (!this.activeScene)
|
|
173
|
+
return null;
|
|
174
|
+
const elapsedTime = Date.now() - this.sceneStartTime;
|
|
175
|
+
const frame = this.activeScene.getCurrentFrame(elapsedTime);
|
|
176
|
+
if (!frame)
|
|
177
|
+
return null;
|
|
178
|
+
// Check for scene completion
|
|
179
|
+
if (this.activeScene.isComplete()) {
|
|
180
|
+
this.triggerEvent(AnimationEvent.SCENE_COMPLETE, this.activeScene.id);
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
symbol: frame.symbol,
|
|
184
|
+
colors: frame.colors || { fg: this.inputFgColor || null, bg: this.inputBgColor || null },
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Register an event handler
|
|
189
|
+
*/
|
|
190
|
+
registerEvent(event, sceneId, callback) {
|
|
191
|
+
this.eventHandlers.push({ event, sceneId, callback });
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Trigger an event
|
|
195
|
+
*/
|
|
196
|
+
triggerEvent(event, sceneId) {
|
|
197
|
+
for (const handler of this.eventHandlers) {
|
|
198
|
+
if (handler.event === event && handler.sceneId === sceneId) {
|
|
199
|
+
handler.callback();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Reset all scenes
|
|
205
|
+
*/
|
|
206
|
+
reset() {
|
|
207
|
+
this.scenes.forEach(scene => scene.reset());
|
|
208
|
+
this.activeScene = null;
|
|
209
|
+
this.sceneStartTime = 0;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Enhanced character with animation capabilities
|
|
214
|
+
*/
|
|
215
|
+
export class AnimatedCharacter {
|
|
216
|
+
constructor(id, symbol, inputColors) {
|
|
217
|
+
/** Layer for z-ordering (higher = on top) */
|
|
218
|
+
this.layer = 0;
|
|
219
|
+
/** Visibility flag */
|
|
220
|
+
this.isVisible = true;
|
|
221
|
+
this.id = id;
|
|
222
|
+
this.originalSymbol = symbol;
|
|
223
|
+
this.animation = new CharacterAnimation(inputColors);
|
|
224
|
+
this.visual = {
|
|
225
|
+
symbol,
|
|
226
|
+
colors: {
|
|
227
|
+
fg: inputColors?.fg || null,
|
|
228
|
+
bg: inputColors?.bg || null,
|
|
229
|
+
},
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Update character animation
|
|
234
|
+
*/
|
|
235
|
+
update() {
|
|
236
|
+
const newVisual = this.animation.update();
|
|
237
|
+
if (newVisual) {
|
|
238
|
+
this.visual = newVisual;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Set character layer
|
|
243
|
+
*/
|
|
244
|
+
setLayer(layer) {
|
|
245
|
+
this.layer = layer;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Set visibility
|
|
249
|
+
*/
|
|
250
|
+
setVisibility(isVisible) {
|
|
251
|
+
this.isVisible = isVisible;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=animation-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animation-engine.js","sourceRoot":"","sources":["../../src/effects/animation-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Integration for Terminal Effects
|
|
3
|
+
* Provides hooks for various CLI operations to display effects
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Effect triggers for different CLI operations
|
|
7
|
+
*/
|
|
8
|
+
export declare enum EffectTrigger {
|
|
9
|
+
PRIVATE_KEY_DELETE = "private_key_delete",
|
|
10
|
+
PRIVATE_KEY_VIEW_EXIT = "private_key_view_exit",
|
|
11
|
+
KEY_ROTATION = "key_rotation",
|
|
12
|
+
AGENT_IDENTITY_CREATE = "agent_identity_create",
|
|
13
|
+
DID_GENERATION = "did_generation",
|
|
14
|
+
CREDENTIAL_ISSUANCE = "credential_issuance",
|
|
15
|
+
OPERATION_SUCCESS = "operation_success",
|
|
16
|
+
OPERATION_FAILURE = "operation_failure",
|
|
17
|
+
LOADING = "loading"
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* CLI Effects Manager
|
|
21
|
+
*/
|
|
22
|
+
export declare class CLIEffects {
|
|
23
|
+
private runner;
|
|
24
|
+
private static instance?;
|
|
25
|
+
constructor();
|
|
26
|
+
/**
|
|
27
|
+
* Get singleton instance
|
|
28
|
+
*/
|
|
29
|
+
static getInstance(): CLIEffects;
|
|
30
|
+
/**
|
|
31
|
+
* Show effect for a trigger
|
|
32
|
+
*/
|
|
33
|
+
showEffect(trigger: EffectTrigger, text: string, options?: {
|
|
34
|
+
onComplete?: () => void;
|
|
35
|
+
onError?: (error: Error) => void;
|
|
36
|
+
customOptions?: any;
|
|
37
|
+
skipExitPrompt?: boolean;
|
|
38
|
+
persistent?: boolean;
|
|
39
|
+
}): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Show custom effect
|
|
42
|
+
*/
|
|
43
|
+
showCustomEffect(effectName: string, text: string, options?: {
|
|
44
|
+
config?: any;
|
|
45
|
+
onComplete?: () => void;
|
|
46
|
+
onError?: (error: Error) => void;
|
|
47
|
+
skipExitPrompt?: boolean;
|
|
48
|
+
persistent?: boolean;
|
|
49
|
+
}): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Show loading effect with ability to stop
|
|
52
|
+
*/
|
|
53
|
+
showLoadingEffect(text: string, promise: Promise<any>): Promise<any>;
|
|
54
|
+
/**
|
|
55
|
+
* Check if an effect is currently running
|
|
56
|
+
*/
|
|
57
|
+
isEffectRunning(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Stop any running effect
|
|
60
|
+
*/
|
|
61
|
+
stopEffect(): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Export singleton instance
|
|
65
|
+
*/
|
|
66
|
+
export declare const cliEffects: CLIEffects;
|
|
67
|
+
/**
|
|
68
|
+
* Convenience functions for common operations
|
|
69
|
+
*/
|
|
70
|
+
/**
|
|
71
|
+
* Show effect for private key deletion
|
|
72
|
+
*/
|
|
73
|
+
export declare function showPrivateKeyDeleteEffect(keyName: string, skipExitPrompt?: boolean, persistent?: boolean): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Show effect for agent identity creation
|
|
76
|
+
*/
|
|
77
|
+
export declare function showAgentIdentityCreateEffect(agentName: string, skipExitPrompt?: boolean, persistent?: boolean): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Show effect for DID generation
|
|
80
|
+
*/
|
|
81
|
+
export declare function showDIDGenerationEffect(did: string, skipExitPrompt?: boolean, persistent?: boolean): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Show loading effect for async operations
|
|
84
|
+
*/
|
|
85
|
+
export declare function withLoadingEffect<T>(message: string, promise: Promise<T>): Promise<T>;
|
|
86
|
+
//# sourceMappingURL=cli-integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-integration.d.ts","sourceRoot":"","sources":["../../src/effects/cli-integration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,oBAAY,aAAa;IAEvB,kBAAkB,uBAAuB;IACzC,qBAAqB,0BAA0B;IAC/C,YAAY,iBAAiB;IAG7B,qBAAqB,0BAA0B;IAC/C,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;IAG3C,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,OAAO,YAAY;CACpB;AAgFD;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAa;;IAMrC;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,UAAU;IAOhC;;OAEG;IACG,UAAU,CACd,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;QACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,aAAa,CAAC,EAAE,GAAG,CAAC;QACpB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GACA,OAAO,CAAC,IAAI,CAAC;IAkDhB;;OAEG;IACG,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;QACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GACA,OAAO,CAAC,IAAI,CAAC;IA2ChB;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IA2D1E;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,YAA2B,CAAC;AAEnD;;GAEG;AAEH;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,cAAc,GAAE,OAAe,EAC/B,UAAU,GAAE,OAAe,GAC1B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,OAAe,EAC/B,UAAU,GAAE,OAAe,GAC1B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,cAAc,GAAE,OAAe,EAC/B,UAAU,GAAE,OAAc,GACzB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAClB,OAAO,CAAC,CAAC,CAAC,CAEZ"}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Integration for Terminal Effects
|
|
3
|
+
* Provides hooks for various CLI operations to display effects
|
|
4
|
+
*/
|
|
5
|
+
import { EffectRunner } from "./effect-runner.js";
|
|
6
|
+
import { getEffect } from "./index.js";
|
|
7
|
+
import { getConfig } from "./config.js";
|
|
8
|
+
/**
|
|
9
|
+
* Effect triggers for different CLI operations
|
|
10
|
+
*/
|
|
11
|
+
export var EffectTrigger;
|
|
12
|
+
(function (EffectTrigger) {
|
|
13
|
+
// Security operations
|
|
14
|
+
EffectTrigger["PRIVATE_KEY_DELETE"] = "private_key_delete";
|
|
15
|
+
EffectTrigger["PRIVATE_KEY_VIEW_EXIT"] = "private_key_view_exit";
|
|
16
|
+
EffectTrigger["KEY_ROTATION"] = "key_rotation";
|
|
17
|
+
// Identity operations
|
|
18
|
+
EffectTrigger["AGENT_IDENTITY_CREATE"] = "agent_identity_create";
|
|
19
|
+
EffectTrigger["DID_GENERATION"] = "did_generation";
|
|
20
|
+
EffectTrigger["CREDENTIAL_ISSUANCE"] = "credential_issuance";
|
|
21
|
+
// General operations
|
|
22
|
+
EffectTrigger["OPERATION_SUCCESS"] = "operation_success";
|
|
23
|
+
EffectTrigger["OPERATION_FAILURE"] = "operation_failure";
|
|
24
|
+
EffectTrigger["LOADING"] = "loading";
|
|
25
|
+
})(EffectTrigger || (EffectTrigger = {}));
|
|
26
|
+
/**
|
|
27
|
+
* Effect configurations for triggers
|
|
28
|
+
*/
|
|
29
|
+
const TRIGGER_EFFECTS = {
|
|
30
|
+
[EffectTrigger.PRIVATE_KEY_DELETE]: {
|
|
31
|
+
effect: "burn",
|
|
32
|
+
options: {
|
|
33
|
+
duration: 2000,
|
|
34
|
+
burnColors: ["ff0000", "ff4500", "ff8c00", "8B0000", "000000"],
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
[EffectTrigger.PRIVATE_KEY_VIEW_EXIT]: {
|
|
38
|
+
effect: "burn",
|
|
39
|
+
options: {
|
|
40
|
+
duration: 1500,
|
|
41
|
+
burnColors: ["ffffff", "ffff00", "ff8c00", "8B0000", "000000"],
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
[EffectTrigger.KEY_ROTATION]: {
|
|
45
|
+
effect: "burn",
|
|
46
|
+
options: {
|
|
47
|
+
duration: 2500,
|
|
48
|
+
burnColors: ["00ff00", "ffff00", "ff8c00", "8B0000", "000000"],
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
[EffectTrigger.AGENT_IDENTITY_CREATE]: {
|
|
52
|
+
effect: "decrypt",
|
|
53
|
+
options: {
|
|
54
|
+
duration: 3000,
|
|
55
|
+
ciphertextColors: ["004400", "006600", "008800", "00aa00", "00cc00"],
|
|
56
|
+
finalColor: "00ff00",
|
|
57
|
+
typingSpeed: 5,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
[EffectTrigger.DID_GENERATION]: {
|
|
61
|
+
effect: "beams",
|
|
62
|
+
options: {
|
|
63
|
+
duration: 3000,
|
|
64
|
+
beamColors: ["00ff00", "00ffff", "ffffff"],
|
|
65
|
+
baseColor: "404040",
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
[EffectTrigger.CREDENTIAL_ISSUANCE]: {
|
|
69
|
+
effect: "beams",
|
|
70
|
+
options: {
|
|
71
|
+
duration: 2500,
|
|
72
|
+
beamColors: ["0080ff", "00ffff", "ffffff"],
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
[EffectTrigger.OPERATION_SUCCESS]: {
|
|
76
|
+
effect: "beams",
|
|
77
|
+
options: {
|
|
78
|
+
duration: 1500,
|
|
79
|
+
beamColors: ["00ff00", "00ff00", "00ff00"],
|
|
80
|
+
beamCount: 3,
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
[EffectTrigger.OPERATION_FAILURE]: {
|
|
84
|
+
effect: "burn",
|
|
85
|
+
options: {
|
|
86
|
+
duration: 1000,
|
|
87
|
+
burnColors: ["ff0000", "ff0000", "8B0000"],
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
[EffectTrigger.LOADING]: {
|
|
91
|
+
effect: "waves",
|
|
92
|
+
options: {
|
|
93
|
+
duration: 5000,
|
|
94
|
+
waveColors: ["008800", "00aa00", "00cc00", "00ff00"],
|
|
95
|
+
waveCount: 3,
|
|
96
|
+
waveSpeed: 0.5,
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* CLI Effects Manager
|
|
102
|
+
*/
|
|
103
|
+
export class CLIEffects {
|
|
104
|
+
constructor() {
|
|
105
|
+
this.runner = new EffectRunner();
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get singleton instance
|
|
109
|
+
*/
|
|
110
|
+
static getInstance() {
|
|
111
|
+
if (!CLIEffects.instance) {
|
|
112
|
+
CLIEffects.instance = new CLIEffects();
|
|
113
|
+
}
|
|
114
|
+
return CLIEffects.instance;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Show effect for a trigger
|
|
118
|
+
*/
|
|
119
|
+
async showEffect(trigger, text, options) {
|
|
120
|
+
const config = await getConfig();
|
|
121
|
+
// Skip if effects are disabled
|
|
122
|
+
if (!config.enabled) {
|
|
123
|
+
console.log(text);
|
|
124
|
+
options?.onComplete?.();
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const triggerConfig = TRIGGER_EFFECTS[trigger];
|
|
128
|
+
if (!triggerConfig) {
|
|
129
|
+
console.log(text);
|
|
130
|
+
options?.onComplete?.();
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const effect = getEffect(triggerConfig.effect);
|
|
134
|
+
if (!effect) {
|
|
135
|
+
console.log(text);
|
|
136
|
+
options?.onComplete?.();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
try {
|
|
140
|
+
await this.runner.run({
|
|
141
|
+
effect,
|
|
142
|
+
text,
|
|
143
|
+
config: { ...triggerConfig.options, ...options?.customOptions },
|
|
144
|
+
onComplete: options?.onComplete,
|
|
145
|
+
onError: (err) => {
|
|
146
|
+
// Log the error for debugging but don't throw
|
|
147
|
+
if (process.env.DEBUG) {
|
|
148
|
+
console.error('Effect error:', err);
|
|
149
|
+
}
|
|
150
|
+
options?.onError?.(err);
|
|
151
|
+
},
|
|
152
|
+
skipExitPrompt: options?.skipExitPrompt,
|
|
153
|
+
persistent: options?.persistent,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
// Fallback to plain text
|
|
158
|
+
console.log(text);
|
|
159
|
+
if (process.env.DEBUG) {
|
|
160
|
+
console.error('Failed to run effect:', error);
|
|
161
|
+
}
|
|
162
|
+
options?.onError?.(error);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Show custom effect
|
|
167
|
+
*/
|
|
168
|
+
async showCustomEffect(effectName, text, options) {
|
|
169
|
+
const config = await getConfig();
|
|
170
|
+
// Skip if effects are disabled
|
|
171
|
+
if (!config.enabled) {
|
|
172
|
+
console.log(text);
|
|
173
|
+
options?.onComplete?.();
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
const effect = getEffect(effectName);
|
|
177
|
+
if (!effect) {
|
|
178
|
+
console.log(text);
|
|
179
|
+
options?.onComplete?.();
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
await this.runner.run({
|
|
184
|
+
effect,
|
|
185
|
+
text,
|
|
186
|
+
config: options?.config,
|
|
187
|
+
onComplete: options?.onComplete,
|
|
188
|
+
onError: (err) => {
|
|
189
|
+
// Log the error for debugging but don't throw
|
|
190
|
+
if (process.env.DEBUG) {
|
|
191
|
+
console.error('Effect error:', err);
|
|
192
|
+
}
|
|
193
|
+
options?.onError?.(err);
|
|
194
|
+
},
|
|
195
|
+
skipExitPrompt: options?.skipExitPrompt,
|
|
196
|
+
persistent: options?.persistent,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
// Fallback to plain text
|
|
201
|
+
console.log(text);
|
|
202
|
+
if (process.env.DEBUG) {
|
|
203
|
+
console.error('Failed to run custom effect:', error);
|
|
204
|
+
}
|
|
205
|
+
options?.onError?.(error);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Show loading effect with ability to stop
|
|
210
|
+
*/
|
|
211
|
+
async showLoadingEffect(text, promise) {
|
|
212
|
+
const config = await getConfig();
|
|
213
|
+
// Skip if effects are disabled
|
|
214
|
+
if (!config.enabled) {
|
|
215
|
+
console.log(text);
|
|
216
|
+
return promise;
|
|
217
|
+
}
|
|
218
|
+
const effect = getEffect("waves");
|
|
219
|
+
if (!effect) {
|
|
220
|
+
console.log(text);
|
|
221
|
+
return promise;
|
|
222
|
+
}
|
|
223
|
+
let completed = false;
|
|
224
|
+
let result;
|
|
225
|
+
let error;
|
|
226
|
+
// Start loading effect
|
|
227
|
+
this.runner
|
|
228
|
+
.run({
|
|
229
|
+
effect,
|
|
230
|
+
text,
|
|
231
|
+
config: {
|
|
232
|
+
duration: 30000, // 30 seconds max
|
|
233
|
+
waveColors: ["008800", "00aa00", "00cc00", "00ff00"],
|
|
234
|
+
waveCount: 3,
|
|
235
|
+
waveSpeed: 0.5,
|
|
236
|
+
},
|
|
237
|
+
onComplete: () => {
|
|
238
|
+
completed = true;
|
|
239
|
+
},
|
|
240
|
+
skipExitPrompt: true,
|
|
241
|
+
})
|
|
242
|
+
.catch(() => {
|
|
243
|
+
// Ignore effect errors - we'll still return the result
|
|
244
|
+
});
|
|
245
|
+
try {
|
|
246
|
+
// Wait for the actual operation
|
|
247
|
+
result = await promise;
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
error = err;
|
|
251
|
+
}
|
|
252
|
+
// Stop the effect if still running
|
|
253
|
+
if (!completed) {
|
|
254
|
+
await this.runner.stop();
|
|
255
|
+
}
|
|
256
|
+
// Re-throw error if any
|
|
257
|
+
if (error) {
|
|
258
|
+
throw error;
|
|
259
|
+
}
|
|
260
|
+
return result;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Check if an effect is currently running
|
|
264
|
+
*/
|
|
265
|
+
isEffectRunning() {
|
|
266
|
+
return this.runner.isEffectRunning();
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Stop any running effect
|
|
270
|
+
*/
|
|
271
|
+
async stopEffect() {
|
|
272
|
+
await this.runner.stop();
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Export singleton instance
|
|
277
|
+
*/
|
|
278
|
+
export const cliEffects = CLIEffects.getInstance();
|
|
279
|
+
/**
|
|
280
|
+
* Convenience functions for common operations
|
|
281
|
+
*/
|
|
282
|
+
/**
|
|
283
|
+
* Show effect for private key deletion
|
|
284
|
+
*/
|
|
285
|
+
export async function showPrivateKeyDeleteEffect(keyName, skipExitPrompt = false, persistent = false) {
|
|
286
|
+
await cliEffects.showEffect(EffectTrigger.PRIVATE_KEY_DELETE, `🔥 Securely destroying private key: ${keyName}`, { skipExitPrompt, persistent });
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Show effect for agent identity creation
|
|
290
|
+
*/
|
|
291
|
+
export async function showAgentIdentityCreateEffect(agentName, skipExitPrompt = false, persistent = false) {
|
|
292
|
+
await cliEffects.showEffect(EffectTrigger.AGENT_IDENTITY_CREATE, `🤖 Initializing Agent Identity: ${agentName}\n` +
|
|
293
|
+
`\n` +
|
|
294
|
+
`Generating cryptographic identity...`, { skipExitPrompt, persistent });
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Show effect for DID generation
|
|
298
|
+
*/
|
|
299
|
+
export async function showDIDGenerationEffect(did, skipExitPrompt = false, persistent = true // Default to persistent for DID display
|
|
300
|
+
) {
|
|
301
|
+
await cliEffects.showEffect(EffectTrigger.DID_GENERATION, `🔐 Decentralized Identity Generated\n` + `\n` + `DID: ${did}`, { skipExitPrompt, persistent });
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Show loading effect for async operations
|
|
305
|
+
*/
|
|
306
|
+
export async function withLoadingEffect(message, promise) {
|
|
307
|
+
return cliEffects.showLoadingEffect(message, promise);
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=cli-integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-integration.js","sourceRoot":"","sources":["../../src/effects/cli-integration.ts"],"names":[],"mappings":"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"}
|