@kya-os/cli 0.1.0-beta.8 → 1.0.0-beta-0.1
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 +24 -26
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +62 -61
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/claim.d.ts.map +1 -1
- package/dist/commands/claim.js +31 -31
- package/dist/commands/claim.js.map +1 -1
- package/dist/commands/env.d.ts +1 -1
- package/dist/commands/env.js +90 -89
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +268 -218
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/rotate.d.ts.map +1 -1
- package/dist/commands/rotate.js +67 -56
- package/dist/commands/rotate.js.map +1 -1
- package/dist/components/agent-avatar.d.ts +28 -0
- package/dist/components/agent-avatar.d.ts.map +1 -0
- package/dist/components/agent-avatar.js +98 -0
- package/dist/components/agent-avatar.js.map +1 -0
- package/dist/components/agent-card.d.ts +14 -0
- package/dist/components/agent-card.d.ts.map +1 -0
- package/dist/components/agent-card.js +170 -0
- package/dist/components/agent-card.js.map +1 -0
- package/dist/components/agent-table.d.ts +20 -0
- package/dist/components/agent-table.d.ts.map +1 -0
- package/dist/components/agent-table.js +195 -0
- package/dist/components/agent-table.js.map +1 -0
- package/dist/components/box.d.ts +14 -0
- package/dist/components/box.d.ts.map +1 -0
- package/dist/components/box.js +222 -0
- package/dist/components/box.js.map +1 -0
- package/dist/components/index.d.ts +16 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +17 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/messages.d.ts +62 -0
- package/dist/components/messages.d.ts.map +1 -0
- package/dist/components/messages.js +146 -0
- package/dist/components/messages.js.map +1 -0
- package/dist/components/types.d.ts +51 -0
- package/dist/components/types.d.ts.map +1 -0
- package/dist/components/types.js +5 -0
- package/dist/components/types.js.map +1 -0
- package/dist/components/welcome.d.ts +38 -0
- package/dist/components/welcome.d.ts.map +1 -0
- package/dist/components/welcome.js +149 -0
- package/dist/components/welcome.js.map +1 -0
- package/dist/effects/cli-integration.js +3 -3
- package/dist/effects/cli-integration.js.map +1 -1
- package/dist/effects/index.d.ts +9 -12
- package/dist/effects/index.d.ts.map +1 -1
- package/dist/effects/index.js +69 -34
- package/dist/effects/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +12 -19
- package/dist/utils/env-manager.d.ts +69 -5
- package/dist/utils/env-manager.d.ts.map +1 -1
- package/dist/utils/env-manager.js +381 -56
- package/dist/utils/env-manager.js.map +1 -1
- package/dist/utils/prompts.d.ts +1 -0
- package/dist/utils/prompts.d.ts.map +1 -1
- package/dist/utils/prompts.js +15 -0
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/screen-manager.d.ts +10 -0
- package/dist/utils/screen-manager.d.ts.map +1 -0
- package/dist/utils/screen-manager.js +50 -0
- package/dist/utils/screen-manager.js.map +1 -0
- package/dist/utils/validation.d.ts +92 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +106 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +27 -9
- package/dist/commands/cli-experience-demo-simple.d.ts +0 -14
- package/dist/commands/cli-experience-demo-simple.d.ts.map +0 -1
- package/dist/commands/cli-experience-demo-simple.js +0 -119
- package/dist/commands/cli-experience-demo-simple.js.map +0 -1
- package/dist/commands/cli-experience-demo.d.ts +0 -14
- package/dist/commands/cli-experience-demo.d.ts.map +0 -1
- package/dist/commands/cli-experience-demo.js +0 -172
- package/dist/commands/cli-experience-demo.js.map +0 -1
- package/dist/commands/effects-demo.d.ts +0 -10
- package/dist/commands/effects-demo.d.ts.map +0 -1
- package/dist/commands/effects-demo.js +0 -292
- package/dist/commands/effects-demo.js.map +0 -1
- package/dist/dev.d.ts +0 -7
- package/dist/dev.d.ts.map +0 -1
- package/dist/dev.js +0 -9
- package/dist/dev.js.map +0 -1
- package/dist/effects/__tests__/effects.test.d.ts +0 -5
- package/dist/effects/__tests__/effects.test.d.ts.map +0 -1
- package/dist/effects/__tests__/effects.test.js +0 -206
- package/dist/effects/__tests__/effects.test.js.map +0 -1
- package/dist/effects/implementations/binary-path.d.ts +0 -88
- package/dist/effects/implementations/binary-path.d.ts.map +0 -1
- package/dist/effects/implementations/binary-path.js +0 -296
- package/dist/effects/implementations/binary-path.js.map +0 -1
- package/dist/effects/implementations/test.d.ts +0 -113
- package/dist/effects/implementations/test.d.ts.map +0 -1
- package/dist/effects/implementations/test.js +0 -552
- package/dist/effects/implementations/test.js.map +0 -1
- package/dist/effects/template/effect-template.d.ts +0 -97
- package/dist/effects/template/effect-template.d.ts.map +0 -1
- package/dist/effects/template/effect-template.js +0 -208
- package/dist/effects/template/effect-template.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
|
@@ -1,206 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"effects.test.js","sourceRoot":"","sources":["../../../src/effects/__tests__/effects.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Binary Path Effect
|
|
3
|
-
* Creates a binary rain effect that reveals characters
|
|
4
|
-
*/
|
|
5
|
-
import { BaseEffect } from "../types.js";
|
|
6
|
-
/**
|
|
7
|
-
* Configuration options for the Binary Path effect
|
|
8
|
-
*/
|
|
9
|
-
export interface BinaryPathEffectOptions {
|
|
10
|
-
/** Duration in milliseconds */
|
|
11
|
-
duration?: number;
|
|
12
|
-
/** Number of binary streams */
|
|
13
|
-
streamCount?: number;
|
|
14
|
-
/** Speed of binary fall */
|
|
15
|
-
fallSpeed?: number;
|
|
16
|
-
/** Binary colors (for 0 and 1) */
|
|
17
|
-
binaryColors?: [string, string];
|
|
18
|
-
/** Revealed character color */
|
|
19
|
-
revealColor?: string;
|
|
20
|
-
/** Fade duration for revealed characters */
|
|
21
|
-
fadeDuration?: number;
|
|
22
|
-
/** Probability of spawning new stream per frame */
|
|
23
|
-
spawnProbability?: number;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Binary Path effect implementation
|
|
27
|
-
*/
|
|
28
|
-
export declare class BinaryPathEffect extends BaseEffect {
|
|
29
|
-
readonly name = "BinaryPath";
|
|
30
|
-
readonly description = "Creates a binary rain effect that reveals characters";
|
|
31
|
-
private options;
|
|
32
|
-
private streams;
|
|
33
|
-
private characterStates;
|
|
34
|
-
private animationFrameCount;
|
|
35
|
-
private totalFrames;
|
|
36
|
-
private nextStreamId;
|
|
37
|
-
private _isEffectComplete;
|
|
38
|
-
constructor(options?: BinaryPathEffectOptions);
|
|
39
|
-
/**
|
|
40
|
-
* Initialize the effect
|
|
41
|
-
*/
|
|
42
|
-
protected onInitialize(): void;
|
|
43
|
-
/**
|
|
44
|
-
* Render the next frame
|
|
45
|
-
*/
|
|
46
|
-
render(): Promise<string[]>;
|
|
47
|
-
/**
|
|
48
|
-
* Update stream positions and states
|
|
49
|
-
*/
|
|
50
|
-
private updateStreams;
|
|
51
|
-
/**
|
|
52
|
-
* Spawn a new binary stream
|
|
53
|
-
*/
|
|
54
|
-
private spawnStream;
|
|
55
|
-
/**
|
|
56
|
-
* Check if a stream collides with any characters
|
|
57
|
-
*/
|
|
58
|
-
private checkCharacterCollision;
|
|
59
|
-
/**
|
|
60
|
-
* Get color for a revealed character based on fade progress
|
|
61
|
-
*/
|
|
62
|
-
private getRevealedCharacterColor;
|
|
63
|
-
/**
|
|
64
|
-
* Apply fade to a color
|
|
65
|
-
*/
|
|
66
|
-
private applyFade;
|
|
67
|
-
/**
|
|
68
|
-
* Interpolate between two colors
|
|
69
|
-
*/
|
|
70
|
-
private interpolateColor;
|
|
71
|
-
/**
|
|
72
|
-
* Get ANSI color code for a color
|
|
73
|
-
*/
|
|
74
|
-
private getColorCode;
|
|
75
|
-
/**
|
|
76
|
-
* Render fallback for when effects are disabled
|
|
77
|
-
*/
|
|
78
|
-
renderFallback(): string[];
|
|
79
|
-
/**
|
|
80
|
-
* Check if effect is complete
|
|
81
|
-
*/
|
|
82
|
-
isComplete(): boolean;
|
|
83
|
-
/**
|
|
84
|
-
* Reset the effect
|
|
85
|
-
*/
|
|
86
|
-
protected onReset(): void;
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=binary-path.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"binary-path.d.ts","sourceRoot":"","sources":["../../../src/effects/implementations/binary-path.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAS,MAAM,aAAa,CAAC;AAGhD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAwBD;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,0DAA0D;IAE9E,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,eAAe,CAAgD;IACvE,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,iBAAiB,CAAkB;gBAE/B,OAAO,GAAE,uBAA4B;IAcjD;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IA0B9B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA+DjC;;OAEG;IACH,OAAO,CAAC,aAAa;IA0ErB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAuB/B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAYjC;;OAEG;IACH,OAAO,CAAC,SAAS;IAcjB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,IAAI;CAQ1B"}
|
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Binary Path Effect
|
|
3
|
-
* Creates a binary rain effect that reveals characters
|
|
4
|
-
*/
|
|
5
|
-
import { BaseEffect } from "../types.js";
|
|
6
|
-
import { ANSI } from "../utils.js";
|
|
7
|
-
/**
|
|
8
|
-
* Binary Path effect implementation
|
|
9
|
-
*/
|
|
10
|
-
export class BinaryPathEffect extends BaseEffect {
|
|
11
|
-
constructor(options = {}) {
|
|
12
|
-
super();
|
|
13
|
-
this.name = "BinaryPath";
|
|
14
|
-
this.description = "Creates a binary rain effect that reveals characters";
|
|
15
|
-
this.streams = [];
|
|
16
|
-
this.characterStates = new Map();
|
|
17
|
-
this.animationFrameCount = 0;
|
|
18
|
-
this.totalFrames = 0;
|
|
19
|
-
this.nextStreamId = 0;
|
|
20
|
-
this._isEffectComplete = false;
|
|
21
|
-
this.options = {
|
|
22
|
-
duration: 4000,
|
|
23
|
-
streamCount: 20,
|
|
24
|
-
fallSpeed: 0.5,
|
|
25
|
-
binaryColors: ["00FF00", "008800"],
|
|
26
|
-
revealColor: "FFFFFF",
|
|
27
|
-
fadeDuration: 500,
|
|
28
|
-
spawnProbability: 0.1,
|
|
29
|
-
...options,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Initialize the effect
|
|
34
|
-
*/
|
|
35
|
-
onInitialize() {
|
|
36
|
-
this.totalFrames = Math.floor((this.options.duration / 1000) * this.config.frameRate);
|
|
37
|
-
this.streams = [];
|
|
38
|
-
this.characterStates.clear();
|
|
39
|
-
this.animationFrameCount = 0;
|
|
40
|
-
this.nextStreamId = 0;
|
|
41
|
-
this._isEffectComplete = false;
|
|
42
|
-
// Initialize character states
|
|
43
|
-
for (const char of this.characters) {
|
|
44
|
-
const key = `${char.originalPosition.x},${char.originalPosition.y}`;
|
|
45
|
-
this.characterStates.set(key, {
|
|
46
|
-
revealed: false,
|
|
47
|
-
revealTime: -1,
|
|
48
|
-
fadeProgress: 0,
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
// Hide all characters initially
|
|
52
|
-
for (const char of this.characters) {
|
|
53
|
-
char.visual.symbol = " ";
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Render the next frame
|
|
58
|
-
*/
|
|
59
|
-
async render() {
|
|
60
|
-
if (!this.isInitialized) {
|
|
61
|
-
throw new Error("Effect not initialized");
|
|
62
|
-
}
|
|
63
|
-
// Update streams
|
|
64
|
-
this.updateStreams();
|
|
65
|
-
// Render text line by line
|
|
66
|
-
const lines = this.text.split("\n");
|
|
67
|
-
const renderedLines = [];
|
|
68
|
-
for (let y = 0; y < lines.length; y++) {
|
|
69
|
-
let line = "";
|
|
70
|
-
const chars = [...lines[y]];
|
|
71
|
-
for (let x = 0; x < chars.length; x++) {
|
|
72
|
-
const char = chars[x];
|
|
73
|
-
const key = `${x},${y}`;
|
|
74
|
-
const state = this.characterStates.get(key);
|
|
75
|
-
let renderedChar = " ";
|
|
76
|
-
let color = null;
|
|
77
|
-
// Check if character is revealed
|
|
78
|
-
if (state && state.revealed) {
|
|
79
|
-
renderedChar = char;
|
|
80
|
-
color = this.getRevealedCharacterColor(state);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
// Check if there's a binary stream at this position
|
|
84
|
-
for (const stream of this.streams) {
|
|
85
|
-
if (!stream.active || stream.x !== x)
|
|
86
|
-
continue;
|
|
87
|
-
for (const segment of stream.trail) {
|
|
88
|
-
const segY = Math.floor(segment.y);
|
|
89
|
-
if (segY === y) {
|
|
90
|
-
renderedChar = segment.char;
|
|
91
|
-
const colorIndex = segment.char === "1" ? 0 : 1;
|
|
92
|
-
const baseColor = this.options.binaryColors[colorIndex];
|
|
93
|
-
color = this.applyFade(baseColor, segment.fade);
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
if (color) {
|
|
100
|
-
const colorCode = this.getColorCode(color);
|
|
101
|
-
const resetCode = ANSI.reset;
|
|
102
|
-
line += colorCode + renderedChar + resetCode;
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
line += renderedChar;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
renderedLines.push(line);
|
|
109
|
-
}
|
|
110
|
-
this.animationFrameCount++;
|
|
111
|
-
return renderedLines;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Update stream positions and states
|
|
115
|
-
*/
|
|
116
|
-
updateStreams() {
|
|
117
|
-
const dimensions = this.getCanvasDimensions();
|
|
118
|
-
// Spawn new streams
|
|
119
|
-
if (this.streams.filter((s) => s.active).length < this.options.streamCount &&
|
|
120
|
-
Math.random() < this.options.spawnProbability &&
|
|
121
|
-
this.animationFrameCount < this.totalFrames * 0.8) {
|
|
122
|
-
this.spawnStream();
|
|
123
|
-
}
|
|
124
|
-
// Update existing streams
|
|
125
|
-
for (const stream of this.streams) {
|
|
126
|
-
if (!stream.active)
|
|
127
|
-
continue;
|
|
128
|
-
// Move stream down
|
|
129
|
-
stream.y += stream.speed;
|
|
130
|
-
// Update trail
|
|
131
|
-
stream.trail = stream.trail
|
|
132
|
-
.map((segment) => ({
|
|
133
|
-
...segment,
|
|
134
|
-
fade: Math.max(0, segment.fade - 0.05),
|
|
135
|
-
}))
|
|
136
|
-
.filter((segment) => segment.fade > 0);
|
|
137
|
-
// Add new segment at the head
|
|
138
|
-
if (stream.y < dimensions.height) {
|
|
139
|
-
stream.trail.unshift({
|
|
140
|
-
y: stream.y,
|
|
141
|
-
char: Math.random() > 0.5 ? "1" : "0",
|
|
142
|
-
fade: 1,
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
// Trim trail to max length
|
|
146
|
-
if (stream.trail.length > stream.maxLength) {
|
|
147
|
-
stream.trail = stream.trail.slice(0, stream.maxLength);
|
|
148
|
-
}
|
|
149
|
-
// Check for character collision
|
|
150
|
-
this.checkCharacterCollision(stream);
|
|
151
|
-
// Deactivate if completely off screen
|
|
152
|
-
if (stream.y > dimensions.height + stream.maxLength) {
|
|
153
|
-
stream.active = false;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
// Update revealed characters
|
|
157
|
-
let allRevealed = true;
|
|
158
|
-
for (const [, state] of this.characterStates.entries()) {
|
|
159
|
-
if (state.revealed && state.fadeProgress < 1) {
|
|
160
|
-
const timeSinceReveal = this.animationFrameCount - state.revealTime;
|
|
161
|
-
state.fadeProgress = Math.min(1, timeSinceReveal /
|
|
162
|
-
(this.options.fadeDuration / (1000 / this.config.frameRate)));
|
|
163
|
-
}
|
|
164
|
-
if (!state.revealed) {
|
|
165
|
-
allRevealed = false;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
// Check if effect is complete
|
|
169
|
-
const activeStreams = this.streams.filter((s) => s.active).length;
|
|
170
|
-
this._isEffectComplete =
|
|
171
|
-
allRevealed &&
|
|
172
|
-
activeStreams === 0 &&
|
|
173
|
-
this.animationFrameCount >= this.totalFrames * 0.8;
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Spawn a new binary stream
|
|
177
|
-
*/
|
|
178
|
-
spawnStream() {
|
|
179
|
-
const dimensions = this.getCanvasDimensions();
|
|
180
|
-
const stream = {
|
|
181
|
-
id: this.nextStreamId++,
|
|
182
|
-
x: Math.floor(Math.random() * dimensions.width),
|
|
183
|
-
y: -1,
|
|
184
|
-
speed: 0.3 + Math.random() * this.options.fallSpeed,
|
|
185
|
-
trail: [],
|
|
186
|
-
active: true,
|
|
187
|
-
maxLength: 5 + Math.floor(Math.random() * 10),
|
|
188
|
-
};
|
|
189
|
-
this.streams.push(stream);
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Check if a stream collides with any characters
|
|
193
|
-
*/
|
|
194
|
-
checkCharacterCollision(stream) {
|
|
195
|
-
for (const segment of stream.trail) {
|
|
196
|
-
const y = Math.floor(segment.y);
|
|
197
|
-
// Check all characters at this position
|
|
198
|
-
for (const char of this.characters) {
|
|
199
|
-
if (char.originalPosition.x === stream.x &&
|
|
200
|
-
char.originalPosition.y === y) {
|
|
201
|
-
const key = `${char.originalPosition.x},${char.originalPosition.y}`;
|
|
202
|
-
const state = this.characterStates.get(key);
|
|
203
|
-
if (state && !state.revealed) {
|
|
204
|
-
state.revealed = true;
|
|
205
|
-
state.revealTime = this.animationFrameCount;
|
|
206
|
-
state.fadeProgress = 0;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Get color for a revealed character based on fade progress
|
|
214
|
-
*/
|
|
215
|
-
getRevealedCharacterColor(state) {
|
|
216
|
-
if (state.fadeProgress >= 1) {
|
|
217
|
-
return this.options.revealColor;
|
|
218
|
-
}
|
|
219
|
-
// Fade from bright green to final color
|
|
220
|
-
const startColor = this.options.binaryColors[0];
|
|
221
|
-
const endColor = this.options.revealColor;
|
|
222
|
-
return this.interpolateColor(startColor, endColor, state.fadeProgress);
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Apply fade to a color
|
|
226
|
-
*/
|
|
227
|
-
applyFade(color, fade) {
|
|
228
|
-
const r = parseInt(color.substring(0, 2), 16);
|
|
229
|
-
const g = parseInt(color.substring(2, 4), 16);
|
|
230
|
-
const b = parseInt(color.substring(4, 6), 16);
|
|
231
|
-
const fadedR = Math.round(r * fade);
|
|
232
|
-
const fadedG = Math.round(g * fade);
|
|
233
|
-
const fadedB = Math.round(b * fade);
|
|
234
|
-
return [fadedR, fadedG, fadedB]
|
|
235
|
-
.map((c) => Math.max(0, Math.min(255, c)).toString(16).padStart(2, "0"))
|
|
236
|
-
.join("");
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Interpolate between two colors
|
|
240
|
-
*/
|
|
241
|
-
interpolateColor(color1, color2, factor) {
|
|
242
|
-
const r1 = parseInt(color1.substring(0, 2), 16);
|
|
243
|
-
const g1 = parseInt(color1.substring(2, 4), 16);
|
|
244
|
-
const b1 = parseInt(color1.substring(4, 6), 16);
|
|
245
|
-
const r2 = parseInt(color2.substring(0, 2), 16);
|
|
246
|
-
const g2 = parseInt(color2.substring(2, 4), 16);
|
|
247
|
-
const b2 = parseInt(color2.substring(4, 6), 16);
|
|
248
|
-
const r = Math.round(r1 + (r2 - r1) * factor);
|
|
249
|
-
const g = Math.round(g1 + (g2 - g1) * factor);
|
|
250
|
-
const b = Math.round(b1 + (b2 - b1) * factor);
|
|
251
|
-
return [r, g, b]
|
|
252
|
-
.map((c) => Math.max(0, Math.min(255, c)).toString(16).padStart(2, "0"))
|
|
253
|
-
.join("");
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Get ANSI color code for a color
|
|
257
|
-
*/
|
|
258
|
-
getColorCode(color) {
|
|
259
|
-
if (!color || this.config.noColor) {
|
|
260
|
-
return "";
|
|
261
|
-
}
|
|
262
|
-
// For RGB colors, convert to ANSI 24-bit color
|
|
263
|
-
if (typeof color === "string") {
|
|
264
|
-
const r = parseInt(color.substring(0, 2), 16);
|
|
265
|
-
const g = parseInt(color.substring(2, 4), 16);
|
|
266
|
-
const b = parseInt(color.substring(4, 6), 16);
|
|
267
|
-
return `\x1b[38;2;${r};${g};${b}m`;
|
|
268
|
-
}
|
|
269
|
-
// For XTerm colors
|
|
270
|
-
return `\x1b[38;5;${color}m`;
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Render fallback for when effects are disabled
|
|
274
|
-
*/
|
|
275
|
-
renderFallback() {
|
|
276
|
-
return this.text.split("\n");
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Check if effect is complete
|
|
280
|
-
*/
|
|
281
|
-
isComplete() {
|
|
282
|
-
return this._isEffectComplete;
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* Reset the effect
|
|
286
|
-
*/
|
|
287
|
-
onReset() {
|
|
288
|
-
this.streams = [];
|
|
289
|
-
this.characterStates.clear();
|
|
290
|
-
this.animationFrameCount = 0;
|
|
291
|
-
this.nextStreamId = 0;
|
|
292
|
-
this._isEffectComplete = false;
|
|
293
|
-
this.onInitialize();
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
//# sourceMappingURL=binary-path.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"binary-path.js","sourceRoot":"","sources":["../../../src/effects/implementations/binary-path.ts"],"names":[],"mappings":"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"}
|