@kya-os/cli 0.1.0-beta.6 → 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.
Files changed (110) hide show
  1. package/README.md +210 -34
  2. package/dist/commands/check.d.ts.map +1 -1
  3. package/dist/commands/check.js +28 -6
  4. package/dist/commands/check.js.map +1 -1
  5. package/dist/commands/cli-experience-demo-simple.d.ts +14 -0
  6. package/dist/commands/cli-experience-demo-simple.d.ts.map +1 -0
  7. package/dist/commands/cli-experience-demo-simple.js +119 -0
  8. package/dist/commands/cli-experience-demo-simple.js.map +1 -0
  9. package/dist/commands/cli-experience-demo.d.ts +14 -0
  10. package/dist/commands/cli-experience-demo.d.ts.map +1 -0
  11. package/dist/commands/cli-experience-demo.js +172 -0
  12. package/dist/commands/cli-experience-demo.js.map +1 -0
  13. package/dist/commands/effects-demo.d.ts +10 -0
  14. package/dist/commands/effects-demo.d.ts.map +1 -0
  15. package/dist/commands/effects-demo.js +292 -0
  16. package/dist/commands/effects-demo.js.map +1 -0
  17. package/dist/commands/env.d.ts.map +1 -1
  18. package/dist/commands/env.js +12 -2
  19. package/dist/commands/env.js.map +1 -1
  20. package/dist/commands/init.d.ts.map +1 -1
  21. package/dist/commands/init.js +262 -136
  22. package/dist/commands/init.js.map +1 -1
  23. package/dist/commands/rotate.d.ts.map +1 -1
  24. package/dist/commands/rotate.js +19 -3
  25. package/dist/commands/rotate.js.map +1 -1
  26. package/dist/dev.d.ts +7 -0
  27. package/dist/dev.d.ts.map +1 -0
  28. package/dist/dev.js +9 -0
  29. package/dist/dev.js.map +1 -0
  30. package/dist/effects/__tests__/effects.test.d.ts +5 -0
  31. package/dist/effects/__tests__/effects.test.d.ts.map +1 -0
  32. package/dist/effects/__tests__/effects.test.js +206 -0
  33. package/dist/effects/__tests__/effects.test.js.map +1 -0
  34. package/dist/effects/animation-engine.d.ts +173 -0
  35. package/dist/effects/animation-engine.d.ts.map +1 -0
  36. package/dist/effects/animation-engine.js +254 -0
  37. package/dist/effects/animation-engine.js.map +1 -0
  38. package/dist/effects/cli-integration.d.ts +86 -0
  39. package/dist/effects/cli-integration.d.ts.map +1 -0
  40. package/dist/effects/cli-integration.js +309 -0
  41. package/dist/effects/cli-integration.js.map +1 -0
  42. package/dist/effects/config.d.ts +95 -0
  43. package/dist/effects/config.d.ts.map +1 -0
  44. package/dist/effects/config.js +216 -0
  45. package/dist/effects/config.js.map +1 -0
  46. package/dist/effects/effect-runner.d.ts +69 -0
  47. package/dist/effects/effect-runner.d.ts.map +1 -0
  48. package/dist/effects/effect-runner.js +255 -0
  49. package/dist/effects/effect-runner.js.map +1 -0
  50. package/dist/effects/gradient.d.ts +131 -0
  51. package/dist/effects/gradient.d.ts.map +1 -0
  52. package/dist/effects/gradient.js +236 -0
  53. package/dist/effects/gradient.js.map +1 -0
  54. package/dist/effects/implementations/beams.d.ts +80 -0
  55. package/dist/effects/implementations/beams.d.ts.map +1 -0
  56. package/dist/effects/implementations/beams.js +221 -0
  57. package/dist/effects/implementations/beams.js.map +1 -0
  58. package/dist/effects/implementations/binary-path.d.ts +88 -0
  59. package/dist/effects/implementations/binary-path.d.ts.map +1 -0
  60. package/dist/effects/implementations/binary-path.js +296 -0
  61. package/dist/effects/implementations/binary-path.js.map +1 -0
  62. package/dist/effects/implementations/blackhole.d.ts +98 -0
  63. package/dist/effects/implementations/blackhole.d.ts.map +1 -0
  64. package/dist/effects/implementations/blackhole.js +394 -0
  65. package/dist/effects/implementations/blackhole.js.map +1 -0
  66. package/dist/effects/implementations/burn.d.ts +74 -0
  67. package/dist/effects/implementations/burn.d.ts.map +1 -0
  68. package/dist/effects/implementations/burn.js +234 -0
  69. package/dist/effects/implementations/burn.js.map +1 -0
  70. package/dist/effects/implementations/decrypt.d.ts +115 -0
  71. package/dist/effects/implementations/decrypt.d.ts.map +1 -0
  72. package/dist/effects/implementations/decrypt.js +394 -0
  73. package/dist/effects/implementations/decrypt.js.map +1 -0
  74. package/dist/effects/implementations/test.d.ts +113 -0
  75. package/dist/effects/implementations/test.d.ts.map +1 -0
  76. package/dist/effects/implementations/test.js +552 -0
  77. package/dist/effects/implementations/test.js.map +1 -0
  78. package/dist/effects/implementations/waves.d.ts +78 -0
  79. package/dist/effects/implementations/waves.d.ts.map +1 -0
  80. package/dist/effects/implementations/waves.js +278 -0
  81. package/dist/effects/implementations/waves.js.map +1 -0
  82. package/dist/effects/index.d.ts +37 -0
  83. package/dist/effects/index.d.ts.map +1 -0
  84. package/dist/effects/index.js +79 -0
  85. package/dist/effects/index.js.map +1 -0
  86. package/dist/effects/motion-engine.d.ts +168 -0
  87. package/dist/effects/motion-engine.d.ts.map +1 -0
  88. package/dist/effects/motion-engine.js +353 -0
  89. package/dist/effects/motion-engine.js.map +1 -0
  90. package/dist/effects/safe-executor.d.ts +55 -0
  91. package/dist/effects/safe-executor.d.ts.map +1 -0
  92. package/dist/effects/safe-executor.js +210 -0
  93. package/dist/effects/safe-executor.js.map +1 -0
  94. package/dist/effects/template/effect-template.d.ts +97 -0
  95. package/dist/effects/template/effect-template.d.ts.map +1 -0
  96. package/dist/effects/template/effect-template.js +208 -0
  97. package/dist/effects/template/effect-template.js.map +1 -0
  98. package/dist/effects/types.d.ts +199 -0
  99. package/dist/effects/types.d.ts.map +1 -0
  100. package/dist/effects/types.js +80 -0
  101. package/dist/effects/types.js.map +1 -0
  102. package/dist/effects/utils.d.ts +104 -0
  103. package/dist/effects/utils.d.ts.map +1 -0
  104. package/dist/effects/utils.js +280 -0
  105. package/dist/effects/utils.js.map +1 -0
  106. package/dist/index.d.ts +2 -1
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +48 -42
  109. package/dist/index.js.map +1 -1
  110. 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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"}