@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.
Files changed (111) 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 +1 -0
  21. package/dist/commands/init.d.ts.map +1 -1
  22. package/dist/commands/init.js +407 -73
  23. package/dist/commands/init.js.map +1 -1
  24. package/dist/commands/rotate.d.ts.map +1 -1
  25. package/dist/commands/rotate.js +19 -3
  26. package/dist/commands/rotate.js.map +1 -1
  27. package/dist/dev.d.ts +7 -0
  28. package/dist/dev.d.ts.map +1 -0
  29. package/dist/dev.js +9 -0
  30. package/dist/dev.js.map +1 -0
  31. package/dist/effects/__tests__/effects.test.d.ts +5 -0
  32. package/dist/effects/__tests__/effects.test.d.ts.map +1 -0
  33. package/dist/effects/__tests__/effects.test.js +206 -0
  34. package/dist/effects/__tests__/effects.test.js.map +1 -0
  35. package/dist/effects/animation-engine.d.ts +173 -0
  36. package/dist/effects/animation-engine.d.ts.map +1 -0
  37. package/dist/effects/animation-engine.js +254 -0
  38. package/dist/effects/animation-engine.js.map +1 -0
  39. package/dist/effects/cli-integration.d.ts +86 -0
  40. package/dist/effects/cli-integration.d.ts.map +1 -0
  41. package/dist/effects/cli-integration.js +309 -0
  42. package/dist/effects/cli-integration.js.map +1 -0
  43. package/dist/effects/config.d.ts +95 -0
  44. package/dist/effects/config.d.ts.map +1 -0
  45. package/dist/effects/config.js +216 -0
  46. package/dist/effects/config.js.map +1 -0
  47. package/dist/effects/effect-runner.d.ts +69 -0
  48. package/dist/effects/effect-runner.d.ts.map +1 -0
  49. package/dist/effects/effect-runner.js +255 -0
  50. package/dist/effects/effect-runner.js.map +1 -0
  51. package/dist/effects/gradient.d.ts +131 -0
  52. package/dist/effects/gradient.d.ts.map +1 -0
  53. package/dist/effects/gradient.js +236 -0
  54. package/dist/effects/gradient.js.map +1 -0
  55. package/dist/effects/implementations/beams.d.ts +80 -0
  56. package/dist/effects/implementations/beams.d.ts.map +1 -0
  57. package/dist/effects/implementations/beams.js +221 -0
  58. package/dist/effects/implementations/beams.js.map +1 -0
  59. package/dist/effects/implementations/binary-path.d.ts +88 -0
  60. package/dist/effects/implementations/binary-path.d.ts.map +1 -0
  61. package/dist/effects/implementations/binary-path.js +296 -0
  62. package/dist/effects/implementations/binary-path.js.map +1 -0
  63. package/dist/effects/implementations/blackhole.d.ts +98 -0
  64. package/dist/effects/implementations/blackhole.d.ts.map +1 -0
  65. package/dist/effects/implementations/blackhole.js +394 -0
  66. package/dist/effects/implementations/blackhole.js.map +1 -0
  67. package/dist/effects/implementations/burn.d.ts +74 -0
  68. package/dist/effects/implementations/burn.d.ts.map +1 -0
  69. package/dist/effects/implementations/burn.js +234 -0
  70. package/dist/effects/implementations/burn.js.map +1 -0
  71. package/dist/effects/implementations/decrypt.d.ts +115 -0
  72. package/dist/effects/implementations/decrypt.d.ts.map +1 -0
  73. package/dist/effects/implementations/decrypt.js +394 -0
  74. package/dist/effects/implementations/decrypt.js.map +1 -0
  75. package/dist/effects/implementations/test.d.ts +113 -0
  76. package/dist/effects/implementations/test.d.ts.map +1 -0
  77. package/dist/effects/implementations/test.js +552 -0
  78. package/dist/effects/implementations/test.js.map +1 -0
  79. package/dist/effects/implementations/waves.d.ts +78 -0
  80. package/dist/effects/implementations/waves.d.ts.map +1 -0
  81. package/dist/effects/implementations/waves.js +278 -0
  82. package/dist/effects/implementations/waves.js.map +1 -0
  83. package/dist/effects/index.d.ts +37 -0
  84. package/dist/effects/index.d.ts.map +1 -0
  85. package/dist/effects/index.js +79 -0
  86. package/dist/effects/index.js.map +1 -0
  87. package/dist/effects/motion-engine.d.ts +168 -0
  88. package/dist/effects/motion-engine.d.ts.map +1 -0
  89. package/dist/effects/motion-engine.js +353 -0
  90. package/dist/effects/motion-engine.js.map +1 -0
  91. package/dist/effects/safe-executor.d.ts +55 -0
  92. package/dist/effects/safe-executor.d.ts.map +1 -0
  93. package/dist/effects/safe-executor.js +210 -0
  94. package/dist/effects/safe-executor.js.map +1 -0
  95. package/dist/effects/template/effect-template.d.ts +97 -0
  96. package/dist/effects/template/effect-template.d.ts.map +1 -0
  97. package/dist/effects/template/effect-template.js +208 -0
  98. package/dist/effects/template/effect-template.js.map +1 -0
  99. package/dist/effects/types.d.ts +199 -0
  100. package/dist/effects/types.d.ts.map +1 -0
  101. package/dist/effects/types.js +80 -0
  102. package/dist/effects/types.js.map +1 -0
  103. package/dist/effects/utils.d.ts +104 -0
  104. package/dist/effects/utils.d.ts.map +1 -0
  105. package/dist/effects/utils.js +280 -0
  106. package/dist/effects/utils.js.map +1 -0
  107. package/dist/index.d.ts +2 -1
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.js +48 -42
  110. package/dist/index.js.map +1 -1
  111. package/package.json +4 -1
@@ -5,6 +5,7 @@ import { EnvManager } from '../utils/env-manager.js';
5
5
  import { confirmRotation, showSuccess, showError, showWarning } from '../utils/prompts.js';
6
6
  import { existsSync } from 'fs';
7
7
  import { join } from 'path';
8
+ import { cliEffects, EffectTrigger } from '../effects/cli-integration.js';
8
9
  export async function rotate(options) {
9
10
  console.log(chalk.cyan('\n🔄 Key Rotation\n'));
10
11
  // Check for existing identity
@@ -41,14 +42,29 @@ export async function rotate(options) {
41
42
  console.log(` Age: ${Math.floor(keyHealth.age / (24 * 60 * 60 * 1000))} days`);
42
43
  console.log(` Signatures: ${keyHealth.signatureCount.toLocaleString()}`);
43
44
  console.log(` Should rotate: ${keyHealth.shouldRotate ? chalk.yellow('Yes') : chalk.green('No')}`);
45
+ // Show burn effect for old keys
46
+ spinner.stop();
47
+ await cliEffects.showEffect(EffectTrigger.KEY_ROTATION, `🔥 Rotating cryptographic keys...\n\n` +
48
+ `Old Key: ${processVars.MCP_IDENTITY_PUBLIC_KEY?.substring(0, 16)}...\n` +
49
+ `Status: BURNING`);
44
50
  // Perform rotation
45
51
  spinner.start('Contacting registry...');
46
52
  const result = await identity.rotateKeys(options.reason);
47
53
  if (result.success) {
48
54
  spinner.succeed('Keys rotated successfully!');
49
- console.log(`\n${chalk.bold('🔐 New Keys Generated:')}`);
50
- console.log(` Grace period ends: ${new Date(result.gracePeriodEnd).toLocaleDateString()}`);
51
- console.log(` Old keys remain valid until then`);
55
+ // Show beams effect for new keys
56
+ const newKeysText = `🔐 ${chalk.bold('New Keys Generated:')}\n` +
57
+ ` Public Key: ${identity.publicKey.substring(0, 32)}...\n` +
58
+ ` Grace period ends: ${new Date(result.gracePeriodEnd).toLocaleDateString()}\n` +
59
+ ` Old keys remain valid until then`;
60
+ await cliEffects.showCustomEffect('beams', newKeysText, {
61
+ config: {
62
+ duration: 3000,
63
+ beamColors: ['00ff00', '00ffff', 'ffffff'],
64
+ beamCount: 5,
65
+ baseColor: '404040'
66
+ }
67
+ });
52
68
  // Get new identity info
53
69
  const newVars = {
54
70
  MCP_IDENTITY_DID: identity.did,
@@ -1 +1 @@
1
- {"version":3,"file":"rotate.js","sourceRoot":"","sources":["../../src/commands/rotate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rotate.js","sourceRoot":"","sources":["../../src/commands/rotate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAOvE,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAsB;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAE/C,8BAA8B;IAC9B,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAEhD,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAClC,SAAS,CAAC,uDAAuD,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,eAAe,EAAE,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,WAAW,CAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAE7E,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,kDAAkD;QAClD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QAE1C,iCAAiC;QACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC,CAAC;YAC/G,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,kBAAkB,SAAS,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,qBAAqB,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAErG,gCAAgC;QAChC,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,UAAU,CAAC,UAAU,CACzB,aAAa,CAAC,YAAY,EAC1B,uCAAuC;YACvC,YAAY,WAAW,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO;YACxE,iBAAiB,CAClB,CAAC;QAEF,mBAAmB;QACnB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEzD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;YAE9C,iCAAiC;YACjC,MAAM,WAAW,GACf,MAAM,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI;gBAC3C,kBAAkB,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO;gBAC5D,yBAAyB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAe,CAAC,CAAC,kBAAkB,EAAE,IAAI;gBAClF,qCAAqC,CAAC;YAExC,MAAM,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE;gBACtD,MAAM,EAAE;oBACN,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;oBAC1C,SAAS,EAAE,CAAC;oBACZ,SAAS,EAAE,QAAQ;iBACpB;aACF,CAAC,CAAC;YAEH,wBAAwB;YACxB,MAAM,OAAO,GAAG;gBACd,gBAAgB,EAAE,QAAQ,CAAC,GAAG;gBAC9B,uBAAuB,EAAE,QAAQ,CAAC,SAAS;gBAC3C,wBAAwB,EAAG,QAAgB,CAAC,UAAU,IAAI,EAAE;gBAC5D,qBAAqB,EAAG,QAAgB,CAAC,OAAO,IAAI,EAAE;gBACtD,uBAAuB,EAAG,QAAgB,CAAC,SAAS,IAAI,EAAE;aAC3D,CAAC;YAEF,2BAA2B;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;YAEjE,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC1C,IAAI,CAAC;wBACH,MAAM,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC/D,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACnD,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACpB,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC5E,CAAC;gBACH,CAAC;YACH,CAAC;YAED,WAAW,CAAC,wBAAwB,CAAC,CAAC;YAEtC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QAExF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACpC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,+BAA+B,CAAC,CAAC;QAC7D,CAAC;IAEH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEpC,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,SAAS,CAAC,8CAA8C,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9C,SAAS,CAAC,gDAAgD,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,uBAAuB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;AACH,CAAC"}
package/dist/dev.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Development entry point for testing CLI locally
4
+ * Run with: npm run dev -- <command>
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
package/dist/dev.js ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Development entry point for testing CLI locally
4
+ * Run with: npm run dev -- <command>
5
+ */
6
+ import { program } from "./index.js";
7
+ // Parse command line arguments
8
+ program.parse(process.argv);
9
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,+BAA+B;AAC/B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for Terminal Effects System
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=effects.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects.test.d.ts","sourceRoot":"","sources":["../../../src/effects/__tests__/effects.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Tests for Terminal Effects System
3
+ */
4
+ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
5
+ import { BurnEffect, BeamsEffect, SafeEffectExecutor, getEffect, getAllEffects, cliEffects, EffectTrigger, } from "../index.js";
6
+ // Mock terminal capabilities
7
+ vi.mock("../utils.js", async () => {
8
+ const actual = await vi.importActual("../utils.js");
9
+ return {
10
+ ...actual,
11
+ detectTerminalCapabilities: vi.fn(() => ({
12
+ supportsColor: true,
13
+ supports256Color: true,
14
+ supportsTrueColor: true,
15
+ dimensions: { width: 80, height: 24 },
16
+ isInteractive: true,
17
+ })),
18
+ };
19
+ });
20
+ // Mock process.stdout
21
+ const mockWrite = vi.fn();
22
+ const mockClearLine = vi.fn();
23
+ const mockCursorTo = vi.fn();
24
+ beforeEach(() => {
25
+ vi.clearAllMocks();
26
+ process.stdout.write = mockWrite;
27
+ process.stdout.clearLine = mockClearLine;
28
+ process.stdout.cursorTo = mockCursorTo;
29
+ });
30
+ afterEach(() => {
31
+ vi.restoreAllMocks();
32
+ });
33
+ describe("Effect Registry", () => {
34
+ it("should register and retrieve effects", () => {
35
+ const burnEffect = getEffect("burn");
36
+ expect(burnEffect).toBeInstanceOf(BurnEffect);
37
+ const beamsEffect = getEffect("beams");
38
+ expect(beamsEffect).toBeInstanceOf(BeamsEffect);
39
+ });
40
+ it("should return null for non-existent effects", () => {
41
+ const effect = getEffect("nonexistent");
42
+ expect(effect).toBeNull();
43
+ });
44
+ it("should list all available effects", () => {
45
+ const effects = getAllEffects();
46
+ expect(effects).toHaveLength(3);
47
+ expect(effects.map((e) => e.name)).toContain("burn");
48
+ expect(effects.map((e) => e.name)).toContain("beams");
49
+ expect(effects.map((e) => e.name)).toContain("binarypath");
50
+ });
51
+ });
52
+ describe("BurnEffect", () => {
53
+ let effect;
54
+ beforeEach(() => {
55
+ effect = new BurnEffect();
56
+ });
57
+ it("should initialize properly", () => {
58
+ const text = "Test Text";
59
+ effect.initialize(text, { frameRate: 30 });
60
+ expect(effect.name).toBe("Burn");
61
+ expect(effect.description).toBe("Characters are ignited and burn up the screen");
62
+ });
63
+ it("should render frames", async () => {
64
+ const text = "Hello";
65
+ effect.initialize(text, { frameRate: 30 });
66
+ const frame = await effect.render();
67
+ expect(frame).toBeInstanceOf(Array);
68
+ expect(frame.length).toBeGreaterThan(0);
69
+ });
70
+ it("should provide fallback rendering", () => {
71
+ const text = "Hello\nWorld";
72
+ effect.initialize(text, {});
73
+ const fallback = effect.renderFallback();
74
+ expect(fallback).toEqual(["Hello", "World"]);
75
+ });
76
+ it("should complete after animation", async () => {
77
+ const text = "Test";
78
+ effect.initialize(text, { frameRate: 120 }); // High framerate for faster test
79
+ expect(effect.isComplete()).toBe(false);
80
+ // Render multiple frames
81
+ for (let i = 0; i < 100 && !effect.isComplete(); i++) {
82
+ await effect.render();
83
+ }
84
+ // Should eventually complete
85
+ expect(effect.isComplete()).toBe(true);
86
+ });
87
+ });
88
+ describe("SafeEffectExecutor", () => {
89
+ let executor;
90
+ beforeEach(() => {
91
+ executor = new SafeEffectExecutor({
92
+ maxExecutionTime: 1000,
93
+ maxMemoryUsage: 50,
94
+ });
95
+ });
96
+ it("should execute effects successfully", async () => {
97
+ const effect = new BurnEffect();
98
+ const result = await executor.execute(effect, "Test", {});
99
+ expect(result.success).toBe(true);
100
+ expect(result.frames).toBeInstanceOf(Array);
101
+ });
102
+ it("should timeout long-running effects", async () => {
103
+ const effect = new BurnEffect();
104
+ executor = new SafeEffectExecutor({ maxExecutionTime: 10 }); // Very short timeout
105
+ const result = await executor.execute(effect, "A".repeat(1000), {});
106
+ // Should fallback on timeout
107
+ expect(result.success).toBe(true);
108
+ expect(result.error).toBeDefined();
109
+ });
110
+ it("should use fallback in non-interactive environments", async () => {
111
+ const utils = await import("../utils.js");
112
+ vi.mocked(utils.detectTerminalCapabilities).mockReturnValueOnce({
113
+ supportsColor: false,
114
+ supports256Color: false,
115
+ supportsTrueColor: false,
116
+ dimensions: { width: 80, height: 24 },
117
+ isInteractive: false,
118
+ });
119
+ executor = new SafeEffectExecutor();
120
+ const effect = new BurnEffect();
121
+ const result = await executor.execute(effect, "Test", {});
122
+ expect(result.success).toBe(true);
123
+ expect(result.frames).toEqual(["Test"]);
124
+ });
125
+ it("should handle effect errors gracefully", async () => {
126
+ const effect = new BurnEffect();
127
+ // Force an error by not initializing
128
+ const result = await executor.execute(effect, "", {});
129
+ expect(result.frames).toBeInstanceOf(Array);
130
+ });
131
+ });
132
+ describe("CLI Effects Integration", () => {
133
+ beforeEach(() => {
134
+ // Mock console.log
135
+ vi.spyOn(console, "log").mockImplementation(() => { });
136
+ });
137
+ afterEach(() => {
138
+ vi.restoreAllMocks();
139
+ });
140
+ it("should show effects for triggers", async () => {
141
+ await cliEffects.showEffect(EffectTrigger.PRIVATE_KEY_DELETE, "Deleting key...");
142
+ // Should have attempted to show effect
143
+ expect(mockWrite).toHaveBeenCalled();
144
+ });
145
+ it("should fallback to console.log when effects disabled", async () => {
146
+ process.env.KYA_EFFECTS_ENABLED = "false";
147
+ await cliEffects.showEffect(EffectTrigger.AGENT_IDENTITY_CREATE, "Creating identity...");
148
+ expect(console.log).toHaveBeenCalledWith("Creating identity...");
149
+ delete process.env.KYA_EFFECTS_ENABLED;
150
+ });
151
+ it("should handle custom effects", async () => {
152
+ await cliEffects.showCustomEffect("burn", "Custom text");
153
+ expect(mockWrite).toHaveBeenCalled();
154
+ });
155
+ it("should handle loading effects with promises", async () => {
156
+ const promise = new Promise((resolve) => {
157
+ setTimeout(() => resolve("Done"), 100);
158
+ });
159
+ const result = await cliEffects.showLoadingEffect("Loading...", promise);
160
+ expect(result).toBe("Done");
161
+ });
162
+ });
163
+ describe("Effect Performance", () => {
164
+ it("should maintain reasonable frame rates", async () => {
165
+ const effect = new BeamsEffect();
166
+ const text = "Performance Test";
167
+ effect.initialize(text, { frameRate: 30 });
168
+ const startTime = Date.now();
169
+ let frameCount = 0;
170
+ // Render for 100ms
171
+ while (Date.now() - startTime < 100 && !effect.isComplete()) {
172
+ await effect.render();
173
+ frameCount++;
174
+ }
175
+ // Should render at least a few frames in 100ms
176
+ expect(frameCount).toBeGreaterThan(2);
177
+ });
178
+ });
179
+ describe("Memory Safety", () => {
180
+ it("should clean up resources properly", async () => {
181
+ const effect = new BurnEffect();
182
+ effect.initialize("Test", {});
183
+ // Render some frames
184
+ for (let i = 0; i < 10; i++) {
185
+ await effect.render();
186
+ }
187
+ // Cleanup
188
+ effect.cleanup();
189
+ // Should be able to reinitialize
190
+ effect.initialize("Test Again", {});
191
+ const frame = await effect.render();
192
+ expect(frame).toBeInstanceOf(Array);
193
+ });
194
+ it("should reset state correctly", () => {
195
+ const effect = new BeamsEffect();
196
+ effect.initialize("Test", {});
197
+ // Render some frames
198
+ effect.render();
199
+ effect.render();
200
+ // Reset
201
+ effect.reset();
202
+ // Should be back to initial state
203
+ expect(effect.isComplete()).toBe(false);
204
+ });
205
+ });
206
+ //# sourceMappingURL=effects.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects.test.js","sourceRoot":"","sources":["../../../src/effects/__tests__/effects.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Scene-Based Animation Engine for Terminal Effects
3
+ * Provides sophisticated animation capabilities with scenes, frames, and events
4
+ */
5
+ import { CharacterVisual, ColorPair, Color, EasingFunction } from "./types.js";
6
+ import { Gradient, GradientDirection } from "./gradient.js";
7
+ /**
8
+ * Single frame in an animation scene
9
+ */
10
+ export interface AnimationFrame {
11
+ /** Symbol to display */
12
+ symbol: string;
13
+ /** Frame duration in milliseconds */
14
+ duration: number;
15
+ /** Colors for this frame */
16
+ colors?: ColorPair;
17
+ /** Text effects (bold, italic, etc.) */
18
+ textEffects?: string[];
19
+ }
20
+ /**
21
+ * Sync metric for scene timing
22
+ */
23
+ export declare enum SyncMetric {
24
+ /** Sync to time */
25
+ TIME = "time",
26
+ /** Sync to motion distance */
27
+ DISTANCE = "distance",
28
+ /** Sync to motion steps */
29
+ STEP = "step"
30
+ }
31
+ /**
32
+ * Animation scene - a sequence of frames
33
+ */
34
+ export declare class Scene {
35
+ readonly id: string;
36
+ private frames;
37
+ private currentFrameIndex;
38
+ private frameStartTime;
39
+ private _isLooping;
40
+ private _isComplete;
41
+ /** Sync metric for timing */
42
+ syncMetric: SyncMetric;
43
+ /** Easing function for frame transitions */
44
+ easingFn?: EasingFunction;
45
+ constructor(id: string);
46
+ /**
47
+ * Add a frame to the scene
48
+ */
49
+ addFrame(symbol: string, duration: number, colors?: ColorPair): void;
50
+ /**
51
+ * Apply gradient to symbols across multiple frames
52
+ */
53
+ applyGradientToSymbols(symbol: string, duration: number, gradient: Gradient, _direction?: GradientDirection): void;
54
+ /**
55
+ * Set looping behavior
56
+ */
57
+ setLooping(isLooping: boolean): void;
58
+ /**
59
+ * Get current frame based on elapsed time
60
+ */
61
+ getCurrentFrame(elapsedTime: number): AnimationFrame | null;
62
+ /**
63
+ * Reset the scene
64
+ */
65
+ reset(): void;
66
+ /**
67
+ * Check if scene is complete
68
+ */
69
+ isComplete(): boolean;
70
+ /**
71
+ * Get total duration of the scene
72
+ */
73
+ getTotalDuration(): number;
74
+ /**
75
+ * Get frame count
76
+ */
77
+ getFrameCount(): number;
78
+ /**
79
+ * Get current frame index
80
+ */
81
+ getCurrentFrameIndex(): number;
82
+ }
83
+ /**
84
+ * Event types for character animation
85
+ */
86
+ export declare enum AnimationEvent {
87
+ SCENE_COMPLETE = "scene_complete",
88
+ SCENE_ACTIVATED = "scene_activated",
89
+ FRAME_CHANGE = "frame_change"
90
+ }
91
+ /**
92
+ * Event handler for animation events
93
+ */
94
+ export interface AnimationEventHandler {
95
+ event: AnimationEvent;
96
+ sceneId?: string;
97
+ callback: () => void;
98
+ }
99
+ /**
100
+ * Character animation manager
101
+ */
102
+ export declare class CharacterAnimation {
103
+ private scenes;
104
+ private activeScene;
105
+ private sceneStartTime;
106
+ private eventHandlers;
107
+ /** Original character colors */
108
+ inputFgColor?: Color;
109
+ inputBgColor?: Color;
110
+ constructor(inputColors?: {
111
+ fg?: Color;
112
+ bg?: Color;
113
+ });
114
+ /**
115
+ * Create a new scene
116
+ */
117
+ newScene(sceneId: string): Scene;
118
+ /**
119
+ * Get a scene by ID
120
+ */
121
+ queryScene(sceneId: string): Scene | undefined;
122
+ /**
123
+ * Activate a scene
124
+ */
125
+ activateScene(scene: Scene): void;
126
+ /**
127
+ * Update animation and get current visual
128
+ */
129
+ update(): CharacterVisual | null;
130
+ /**
131
+ * Register an event handler
132
+ */
133
+ registerEvent(event: AnimationEvent, sceneId: string, callback: () => void): void;
134
+ /**
135
+ * Trigger an event
136
+ */
137
+ private triggerEvent;
138
+ /**
139
+ * Reset all scenes
140
+ */
141
+ reset(): void;
142
+ }
143
+ /**
144
+ * Enhanced character with animation capabilities
145
+ */
146
+ export declare class AnimatedCharacter {
147
+ readonly id: string;
148
+ readonly originalSymbol: string;
149
+ readonly animation: CharacterAnimation;
150
+ /** Current visual state */
151
+ visual: CharacterVisual;
152
+ /** Layer for z-ordering (higher = on top) */
153
+ layer: number;
154
+ /** Visibility flag */
155
+ isVisible: boolean;
156
+ constructor(id: string, symbol: string, inputColors?: {
157
+ fg?: Color;
158
+ bg?: Color;
159
+ });
160
+ /**
161
+ * Update character animation
162
+ */
163
+ update(): void;
164
+ /**
165
+ * Set character layer
166
+ */
167
+ setLayer(layer: number): void;
168
+ /**
169
+ * Set visibility
170
+ */
171
+ setVisibility(isVisible: boolean): void;
172
+ }
173
+ //# sourceMappingURL=animation-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation-engine.d.ts","sourceRoot":"","sources":["../../src/effects/animation-engine.ts"],"names":[],"mappings":"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"}