@kya-os/cli 0.1.0-beta.1 → 0.1.0-beta.10
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 +73 -57
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/claim.js +33 -39
- package/dist/commands/claim.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 +55 -51
- 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 +527 -102
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/rotate.d.ts.map +1 -1
- package/dist/commands/rotate.js +81 -60
- 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 +52 -51
- package/dist/index.js.map +1 -1
- package/dist/utils/env-manager.d.ts +66 -2
- package/dist/utils/env-manager.d.ts.map +1 -1
- package/dist/utils/env-manager.js +355 -65
- package/dist/utils/env-manager.js.map +1 -1
- package/dist/utils/platform-detector.js +15 -19
- package/dist/utils/platform-detector.js.map +1 -1
- package/dist/utils/prompts.js +21 -34
- package/dist/utils/prompts.js.map +1 -1
- package/package.json +10 -5
|
@@ -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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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration management for terminal effects
|
|
3
|
+
*/
|
|
4
|
+
import { TerminalCapabilities, SafetyConfig } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Effect configuration settings
|
|
7
|
+
*/
|
|
8
|
+
export interface EffectsConfig {
|
|
9
|
+
/** Enable/disable all effects */
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
/** Animation speed multiplier (0.1 to 2.0) */
|
|
12
|
+
speedMultiplier: number;
|
|
13
|
+
/** Performance profile */
|
|
14
|
+
performanceProfile: "low" | "medium" | "high";
|
|
15
|
+
/** Force fallback mode */
|
|
16
|
+
forceFallback: boolean;
|
|
17
|
+
/** Preferred color mode */
|
|
18
|
+
colorMode: "auto" | "none" | "16" | "256" | "truecolor";
|
|
19
|
+
/** Accessibility mode */
|
|
20
|
+
accessibilityMode: boolean;
|
|
21
|
+
/** Show performance metrics */
|
|
22
|
+
showMetrics: boolean;
|
|
23
|
+
/** Custom effect-specific settings */
|
|
24
|
+
effectSettings: Record<string, any>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Configuration manager for effects
|
|
28
|
+
*/
|
|
29
|
+
export declare class EffectsConfigManager {
|
|
30
|
+
private config;
|
|
31
|
+
private configPath;
|
|
32
|
+
private terminalCapabilities?;
|
|
33
|
+
constructor(configPath?: string);
|
|
34
|
+
/**
|
|
35
|
+
* Load configuration from file
|
|
36
|
+
*/
|
|
37
|
+
load(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Save configuration to file
|
|
40
|
+
*/
|
|
41
|
+
save(): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Get current configuration
|
|
44
|
+
*/
|
|
45
|
+
getConfig(): EffectsConfig;
|
|
46
|
+
/**
|
|
47
|
+
* Update configuration
|
|
48
|
+
*/
|
|
49
|
+
updateConfig(updates: Partial<EffectsConfig>): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Get safety configuration based on performance profile
|
|
52
|
+
*/
|
|
53
|
+
getSafetyConfig(): SafetyConfig;
|
|
54
|
+
/**
|
|
55
|
+
* Determine if effects should be enabled
|
|
56
|
+
*/
|
|
57
|
+
shouldEnableEffects(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Get terminal capabilities
|
|
60
|
+
*/
|
|
61
|
+
getTerminalCapabilities(): TerminalCapabilities;
|
|
62
|
+
/**
|
|
63
|
+
* Check if running in CI environment
|
|
64
|
+
*/
|
|
65
|
+
private isCI;
|
|
66
|
+
/**
|
|
67
|
+
* Check if running in testing environment
|
|
68
|
+
*/
|
|
69
|
+
private isTesting;
|
|
70
|
+
/**
|
|
71
|
+
* Apply environment variable overrides
|
|
72
|
+
*/
|
|
73
|
+
applyEnvironmentOverrides(): void;
|
|
74
|
+
/**
|
|
75
|
+
* Get effect-specific configuration
|
|
76
|
+
*/
|
|
77
|
+
getEffectConfig(effectName: string): any;
|
|
78
|
+
/**
|
|
79
|
+
* Set effect-specific configuration
|
|
80
|
+
*/
|
|
81
|
+
setEffectConfig(effectName: string, config: any): Promise<void>;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Global configuration instance
|
|
85
|
+
*/
|
|
86
|
+
export declare const effectsConfig: EffectsConfigManager;
|
|
87
|
+
/**
|
|
88
|
+
* Initialize configuration
|
|
89
|
+
*/
|
|
90
|
+
export declare function initializeConfig(): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Get current configuration
|
|
93
|
+
*/
|
|
94
|
+
export declare function getConfig(): Promise<EffectsConfig>;
|
|
95
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/effects/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAMhE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,kBAAkB,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C,0BAA0B;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,WAAW,CAAC;IACxD,yBAAyB;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,+BAA+B;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACrC;AAkCD;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAuB;gBAExC,UAAU,CAAC,EAAE,MAAM;IAM/B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B;;OAEG;IACH,SAAS,IAAI,aAAa;IAI1B;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlE;;OAEG;IACH,eAAe,IAAI,YAAY;IAY/B;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAuC9B;;OAEG;IACH,uBAAuB,IAAI,oBAAoB;IAO/C;;OAEG;IACH,OAAO,CAAC,IAAI;IAYZ;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,yBAAyB,IAAI,IAAI;IAwBjC;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG;IAIxC;;OAEG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAItE;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,sBAA6B,CAAC;AAExD;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGtD;AAED;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC,CAKxD"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration management for terminal effects
|
|
3
|
+
*/
|
|
4
|
+
import { detectTerminalCapabilities } from "./utils.js";
|
|
5
|
+
import * as fs from "fs/promises";
|
|
6
|
+
import * as path from "path";
|
|
7
|
+
import { homedir } from "os";
|
|
8
|
+
/**
|
|
9
|
+
* Default configuration
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_CONFIG = {
|
|
12
|
+
enabled: true,
|
|
13
|
+
speedMultiplier: 1.0,
|
|
14
|
+
performanceProfile: "medium",
|
|
15
|
+
forceFallback: false,
|
|
16
|
+
colorMode: "auto",
|
|
17
|
+
accessibilityMode: false,
|
|
18
|
+
showMetrics: false,
|
|
19
|
+
effectSettings: {},
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Performance profiles
|
|
23
|
+
*/
|
|
24
|
+
const PERFORMANCE_PROFILES = {
|
|
25
|
+
low: {
|
|
26
|
+
maxExecutionTime: 1000,
|
|
27
|
+
maxMemoryUsage: 25,
|
|
28
|
+
},
|
|
29
|
+
medium: {
|
|
30
|
+
maxExecutionTime: 3000,
|
|
31
|
+
maxMemoryUsage: 50,
|
|
32
|
+
},
|
|
33
|
+
high: {
|
|
34
|
+
maxExecutionTime: 5000,
|
|
35
|
+
maxMemoryUsage: 100,
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Configuration manager for effects
|
|
40
|
+
*/
|
|
41
|
+
export class EffectsConfigManager {
|
|
42
|
+
constructor(configPath) {
|
|
43
|
+
this.config = { ...DEFAULT_CONFIG };
|
|
44
|
+
this.configPath =
|
|
45
|
+
configPath || path.join(homedir(), ".kya-os", "effects.config.json");
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Load configuration from file
|
|
49
|
+
*/
|
|
50
|
+
async load() {
|
|
51
|
+
try {
|
|
52
|
+
const configData = await fs.readFile(this.configPath, "utf-8");
|
|
53
|
+
const loadedConfig = JSON.parse(configData);
|
|
54
|
+
this.config = { ...DEFAULT_CONFIG, ...loadedConfig };
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
// Config file doesn't exist or is invalid, use defaults
|
|
58
|
+
if (process.env.DEBUG) {
|
|
59
|
+
console.log("No effects config found, using defaults");
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Save configuration to file
|
|
65
|
+
*/
|
|
66
|
+
async save() {
|
|
67
|
+
const configDir = path.dirname(this.configPath);
|
|
68
|
+
await fs.mkdir(configDir, { recursive: true });
|
|
69
|
+
await fs.writeFile(this.configPath, JSON.stringify(this.config, null, 2));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get current configuration
|
|
73
|
+
*/
|
|
74
|
+
getConfig() {
|
|
75
|
+
return { ...this.config };
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Update configuration
|
|
79
|
+
*/
|
|
80
|
+
async updateConfig(updates) {
|
|
81
|
+
this.config = { ...this.config, ...updates };
|
|
82
|
+
await this.save();
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get safety configuration based on performance profile
|
|
86
|
+
*/
|
|
87
|
+
getSafetyConfig() {
|
|
88
|
+
const profile = PERFORMANCE_PROFILES[this.config.performanceProfile] ||
|
|
89
|
+
PERFORMANCE_PROFILES.medium;
|
|
90
|
+
return {
|
|
91
|
+
...profile,
|
|
92
|
+
enableMonitoring: this.config.showMetrics,
|
|
93
|
+
forceFallback: this.config.forceFallback || !this.shouldEnableEffects(),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Determine if effects should be enabled
|
|
98
|
+
*/
|
|
99
|
+
shouldEnableEffects() {
|
|
100
|
+
// Check explicit disable
|
|
101
|
+
if (!this.config.enabled || process.env.KYA_EFFECTS_ENABLED === "false") {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
// Check CI/testing environments
|
|
105
|
+
if (this.isCI() || this.isTesting()) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
// Check terminal capabilities
|
|
109
|
+
const capabilities = this.getTerminalCapabilities();
|
|
110
|
+
if (!capabilities.isInteractive) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
// Check color support based on color mode
|
|
114
|
+
if (this.config.colorMode === "none") {
|
|
115
|
+
return true; // Effects without color
|
|
116
|
+
}
|
|
117
|
+
if (this.config.colorMode === "auto") {
|
|
118
|
+
return capabilities.supportsColor;
|
|
119
|
+
}
|
|
120
|
+
// Check specific color mode support
|
|
121
|
+
switch (this.config.colorMode) {
|
|
122
|
+
case "16":
|
|
123
|
+
return capabilities.supportsColor;
|
|
124
|
+
case "256":
|
|
125
|
+
return capabilities.supports256Color;
|
|
126
|
+
case "truecolor":
|
|
127
|
+
return capabilities.supportsTrueColor;
|
|
128
|
+
default:
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get terminal capabilities
|
|
134
|
+
*/
|
|
135
|
+
getTerminalCapabilities() {
|
|
136
|
+
if (!this.terminalCapabilities) {
|
|
137
|
+
this.terminalCapabilities = detectTerminalCapabilities();
|
|
138
|
+
}
|
|
139
|
+
return this.terminalCapabilities;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Check if running in CI environment
|
|
143
|
+
*/
|
|
144
|
+
isCI() {
|
|
145
|
+
return !!(process.env.CI ||
|
|
146
|
+
process.env.CONTINUOUS_INTEGRATION ||
|
|
147
|
+
process.env.GITHUB_ACTIONS ||
|
|
148
|
+
process.env.GITLAB_CI ||
|
|
149
|
+
process.env.CIRCLECI ||
|
|
150
|
+
process.env.TRAVIS ||
|
|
151
|
+
process.env.JENKINS_URL);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Check if running in testing environment
|
|
155
|
+
*/
|
|
156
|
+
isTesting() {
|
|
157
|
+
return process.env.NODE_ENV === "test" || !!process.env.JEST_WORKER_ID;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Apply environment variable overrides
|
|
161
|
+
*/
|
|
162
|
+
applyEnvironmentOverrides() {
|
|
163
|
+
if (process.env.KYA_EFFECTS_ENABLED !== undefined) {
|
|
164
|
+
this.config.enabled = process.env.KYA_EFFECTS_ENABLED !== "false";
|
|
165
|
+
}
|
|
166
|
+
if (process.env.KYA_EFFECTS_SPEED) {
|
|
167
|
+
const speed = parseFloat(process.env.KYA_EFFECTS_SPEED);
|
|
168
|
+
if (!isNaN(speed) && speed > 0 && speed <= 10) {
|
|
169
|
+
this.config.speedMultiplier = speed;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (process.env.KYA_EFFECTS_PROFILE) {
|
|
173
|
+
const profile = process.env.KYA_EFFECTS_PROFILE;
|
|
174
|
+
if (["low", "medium", "high"].includes(profile)) {
|
|
175
|
+
this.config.performanceProfile = profile;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (process.env.KYA_EFFECTS_FALLBACK === "true") {
|
|
179
|
+
this.config.forceFallback = true;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get effect-specific configuration
|
|
184
|
+
*/
|
|
185
|
+
getEffectConfig(effectName) {
|
|
186
|
+
return this.config.effectSettings[effectName] || {};
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Set effect-specific configuration
|
|
190
|
+
*/
|
|
191
|
+
async setEffectConfig(effectName, config) {
|
|
192
|
+
this.config.effectSettings[effectName] = config;
|
|
193
|
+
await this.save();
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Global configuration instance
|
|
198
|
+
*/
|
|
199
|
+
export const effectsConfig = new EffectsConfigManager();
|
|
200
|
+
/**
|
|
201
|
+
* Initialize configuration
|
|
202
|
+
*/
|
|
203
|
+
export async function initializeConfig() {
|
|
204
|
+
await effectsConfig.load();
|
|
205
|
+
effectsConfig.applyEnvironmentOverrides();
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Get current configuration
|
|
209
|
+
*/
|
|
210
|
+
export async function getConfig() {
|
|
211
|
+
if (!effectsConfig.getConfig().enabled) {
|
|
212
|
+
await initializeConfig();
|
|
213
|
+
}
|
|
214
|
+
return effectsConfig.getConfig();
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/effects/config.ts"],"names":[],"mappings":"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"}
|