@kya-os/cli 1.1.0 → 1.2.0
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/dist/commands/build.d.ts +5 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +173 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +9 -31
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/claim.d.ts +7 -1
- package/dist/commands/claim.d.ts.map +1 -1
- package/dist/commands/claim.js +196 -44
- package/dist/commands/claim.js.map +1 -1
- package/dist/commands/demo.d.ts +10 -0
- package/dist/commands/demo.d.ts.map +1 -0
- package/dist/commands/demo.js +584 -0
- package/dist/commands/demo.js.map +1 -0
- package/dist/commands/dev.d.ts +5 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +111 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/doctor.d.ts +11 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +530 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/env.d.ts +1 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +113 -15
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/identity.d.ts +14 -0
- package/dist/commands/identity.d.ts.map +1 -0
- package/dist/commands/identity.js +204 -0
- package/dist/commands/identity.js.map +1 -0
- package/dist/commands/init.d.ts +6 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +86 -670
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/receipts.d.ts +11 -0
- package/dist/commands/receipts.d.ts.map +1 -0
- package/dist/commands/receipts.js +179 -0
- package/dist/commands/receipts.js.map +1 -0
- package/dist/commands/register.d.ts +15 -0
- package/dist/commands/register.d.ts.map +1 -0
- package/dist/commands/register.js +220 -0
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/rotate.d.ts +7 -1
- package/dist/commands/rotate.d.ts.map +1 -1
- package/dist/commands/rotate.js +149 -109
- package/dist/commands/rotate.js.map +1 -1
- package/dist/commands/start.d.ts +5 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +129 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +9 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +177 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/verify.d.ts +22 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +491 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/components/claim-experience.d.ts +21 -0
- package/dist/components/claim-experience.d.ts.map +1 -0
- package/dist/components/claim-experience.js +138 -0
- package/dist/components/claim-experience.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.js +8 -8
- package/dist/effects/cli-integration.js.map +1 -1
- package/dist/effects/config.d.ts +86 -10
- package/dist/effects/config.d.ts.map +1 -1
- package/dist/effects/config.js +201 -18
- package/dist/effects/config.js.map +1 -1
- 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/blackhole.d.ts +98 -0
- package/dist/effects/implementations/blackhole.d.ts.map +1 -0
- package/dist/effects/implementations/blackhole.js +421 -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/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 +34 -0
- package/dist/effects/index.d.ts.map +1 -0
- package/dist/effects/index.js +114 -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/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.js +154 -19
- package/dist/utils/env-manager.d.ts +6 -7
- package/dist/utils/env-manager.d.ts.map +1 -1
- package/dist/utils/env-manager.js +52 -40
- package/dist/utils/env-manager.js.map +1 -1
- package/dist/utils/identity-manager.d.ts +41 -0
- package/dist/utils/identity-manager.d.ts.map +1 -0
- package/dist/utils/identity-manager.js +159 -0
- package/dist/utils/identity-manager.js.map +1 -0
- package/dist/utils/kta-api.d.ts +67 -0
- package/dist/utils/kta-api.d.ts.map +1 -0
- package/dist/utils/kta-api.js +137 -0
- package/dist/utils/kta-api.js.map +1 -0
- package/package.json +8 -7
- package/dist/utils/validation.d.ts +0 -101
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -109
- package/dist/utils/validation.js.map +0 -1
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Motion Path Engine for Terminal Effects
|
|
3
|
+
* Provides sophisticated character movement with paths, waypoints, and bezier curves
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Motion path for character movement
|
|
7
|
+
*/
|
|
8
|
+
export class Path {
|
|
9
|
+
constructor(id, speed = 1, easingFn) {
|
|
10
|
+
this.waypoints = [];
|
|
11
|
+
this.segments = [];
|
|
12
|
+
this._isLooping = false;
|
|
13
|
+
this._speed = 1;
|
|
14
|
+
/** Current position along the path (0-1) */
|
|
15
|
+
this.progress = 0;
|
|
16
|
+
/** Current segment index */
|
|
17
|
+
this.currentSegmentIndex = 0;
|
|
18
|
+
/** Time spent at current waypoint (for holds) */
|
|
19
|
+
this.holdTimeElapsed = 0;
|
|
20
|
+
/** Total path distance */
|
|
21
|
+
this.totalDistance = 0;
|
|
22
|
+
this.id = id;
|
|
23
|
+
this._speed = speed;
|
|
24
|
+
this._easingFn = easingFn;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Add a waypoint to the path
|
|
28
|
+
*/
|
|
29
|
+
newWaypoint(coord, waypointId, bezierControl, holdTime) {
|
|
30
|
+
const waypoint = {
|
|
31
|
+
id: waypointId || `wp_${this.waypoints.length}`,
|
|
32
|
+
coordinate: coord,
|
|
33
|
+
bezierControl,
|
|
34
|
+
holdTime,
|
|
35
|
+
};
|
|
36
|
+
this.waypoints.push(waypoint);
|
|
37
|
+
this.recalculateSegments();
|
|
38
|
+
return waypoint;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Recalculate segments when waypoints change
|
|
42
|
+
*/
|
|
43
|
+
recalculateSegments() {
|
|
44
|
+
this.segments = [];
|
|
45
|
+
this.totalDistance = 0;
|
|
46
|
+
for (let i = 0; i < this.waypoints.length - 1; i++) {
|
|
47
|
+
const start = this.waypoints[i];
|
|
48
|
+
const end = this.waypoints[i + 1];
|
|
49
|
+
let distance;
|
|
50
|
+
let curvePoints;
|
|
51
|
+
if (end.bezierControl) {
|
|
52
|
+
// Calculate bezier curve
|
|
53
|
+
curvePoints = this.calculateBezierPoints(start.coordinate, end.bezierControl, end.coordinate, 20 // Resolution
|
|
54
|
+
);
|
|
55
|
+
distance = this.calculatePathDistance(curvePoints);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// Simple linear distance
|
|
59
|
+
distance = this.calculateDistance(start.coordinate, end.coordinate);
|
|
60
|
+
}
|
|
61
|
+
const segment = {
|
|
62
|
+
start,
|
|
63
|
+
end,
|
|
64
|
+
distance,
|
|
65
|
+
curvePoints,
|
|
66
|
+
};
|
|
67
|
+
this.segments.push(segment);
|
|
68
|
+
this.totalDistance += distance;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Calculate bezier curve points
|
|
73
|
+
*/
|
|
74
|
+
calculateBezierPoints(start, control, end, resolution) {
|
|
75
|
+
const points = [];
|
|
76
|
+
for (let i = 0; i <= resolution; i++) {
|
|
77
|
+
const t = i / resolution;
|
|
78
|
+
const x = Math.round((1 - t) * (1 - t) * start.x +
|
|
79
|
+
2 * (1 - t) * t * control.x +
|
|
80
|
+
t * t * end.x);
|
|
81
|
+
const y = Math.round((1 - t) * (1 - t) * start.y +
|
|
82
|
+
2 * (1 - t) * t * control.y +
|
|
83
|
+
t * t * end.y);
|
|
84
|
+
points.push({ x, y });
|
|
85
|
+
}
|
|
86
|
+
return points;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Calculate distance between two coordinates
|
|
90
|
+
*/
|
|
91
|
+
calculateDistance(a, b) {
|
|
92
|
+
return Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Calculate total distance along a path of points
|
|
96
|
+
*/
|
|
97
|
+
calculatePathDistance(points) {
|
|
98
|
+
let distance = 0;
|
|
99
|
+
for (let i = 0; i < points.length - 1; i++) {
|
|
100
|
+
distance += this.calculateDistance(points[i], points[i + 1]);
|
|
101
|
+
}
|
|
102
|
+
return distance;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Set looping behavior
|
|
106
|
+
*/
|
|
107
|
+
setLooping(isLooping) {
|
|
108
|
+
this._isLooping = isLooping;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Set speed
|
|
112
|
+
*/
|
|
113
|
+
setSpeed(speed) {
|
|
114
|
+
this._speed = speed;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get position at current progress
|
|
118
|
+
*/
|
|
119
|
+
getCurrentPosition() {
|
|
120
|
+
if (this.waypoints.length === 0) {
|
|
121
|
+
return { x: 0, y: 0 };
|
|
122
|
+
}
|
|
123
|
+
if (this.waypoints.length === 1) {
|
|
124
|
+
return { ...this.waypoints[0].coordinate };
|
|
125
|
+
}
|
|
126
|
+
if (this.currentSegmentIndex >= this.segments.length) {
|
|
127
|
+
return { ...this.waypoints[this.waypoints.length - 1].coordinate };
|
|
128
|
+
}
|
|
129
|
+
const segment = this.segments[this.currentSegmentIndex];
|
|
130
|
+
const segmentProgress = this.getSegmentProgress();
|
|
131
|
+
if (segment.curvePoints) {
|
|
132
|
+
// Bezier curve interpolation
|
|
133
|
+
const pointIndex = Math.floor(segmentProgress * (segment.curvePoints.length - 1));
|
|
134
|
+
const localProgress = (segmentProgress * (segment.curvePoints.length - 1)) % 1;
|
|
135
|
+
if (pointIndex >= segment.curvePoints.length - 1) {
|
|
136
|
+
return { ...segment.curvePoints[segment.curvePoints.length - 1] };
|
|
137
|
+
}
|
|
138
|
+
const p1 = segment.curvePoints[pointIndex];
|
|
139
|
+
const p2 = segment.curvePoints[pointIndex + 1];
|
|
140
|
+
return {
|
|
141
|
+
x: Math.round(p1.x + (p2.x - p1.x) * localProgress),
|
|
142
|
+
y: Math.round(p1.y + (p2.y - p1.y) * localProgress),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// Linear interpolation
|
|
147
|
+
const p1 = segment.start.coordinate;
|
|
148
|
+
const p2 = segment.end.coordinate;
|
|
149
|
+
return {
|
|
150
|
+
x: Math.round(p1.x + (p2.x - p1.x) * segmentProgress),
|
|
151
|
+
y: Math.round(p1.y + (p2.y - p1.y) * segmentProgress),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get progress within current segment (0-1)
|
|
157
|
+
*/
|
|
158
|
+
getSegmentProgress() {
|
|
159
|
+
if (this.segments.length === 0)
|
|
160
|
+
return 0;
|
|
161
|
+
let distanceCovered = this.progress * this.totalDistance;
|
|
162
|
+
// Find which segment we're in
|
|
163
|
+
for (let i = 0; i < this.segments.length; i++) {
|
|
164
|
+
if (distanceCovered <= this.segments[i].distance) {
|
|
165
|
+
return distanceCovered / this.segments[i].distance;
|
|
166
|
+
}
|
|
167
|
+
distanceCovered -= this.segments[i].distance;
|
|
168
|
+
}
|
|
169
|
+
return 1;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Update motion progress
|
|
173
|
+
*/
|
|
174
|
+
update(deltaTime) {
|
|
175
|
+
if (this.waypoints.length < 2)
|
|
176
|
+
return;
|
|
177
|
+
// Handle waypoint holds
|
|
178
|
+
const currentWaypoint = this.waypoints[Math.min(Math.floor(this.progress * this.waypoints.length), this.waypoints.length - 1)];
|
|
179
|
+
if (currentWaypoint.holdTime && this.holdTimeElapsed < currentWaypoint.holdTime) {
|
|
180
|
+
this.holdTimeElapsed += deltaTime;
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
// Reset hold time when moving to next waypoint
|
|
184
|
+
if (this.holdTimeElapsed > 0) {
|
|
185
|
+
this.holdTimeElapsed = 0;
|
|
186
|
+
}
|
|
187
|
+
// Calculate progress increment
|
|
188
|
+
const distancePerMs = (this._speed * 50) / 1000; // 50 units per second at speed 1
|
|
189
|
+
const progressIncrement = distancePerMs * deltaTime / this.totalDistance;
|
|
190
|
+
this.progress += progressIncrement;
|
|
191
|
+
// Apply easing if configured
|
|
192
|
+
if (this._easingFn) {
|
|
193
|
+
this.progress = this._easingFn(Math.min(this.progress, 1));
|
|
194
|
+
}
|
|
195
|
+
// Handle completion and looping
|
|
196
|
+
if (this.progress >= 1) {
|
|
197
|
+
if (this._isLooping) {
|
|
198
|
+
this.progress = this.progress % 1;
|
|
199
|
+
this.currentSegmentIndex = 0;
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
this.progress = 1;
|
|
203
|
+
this.currentSegmentIndex = this.segments.length - 1;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
// Update current segment index
|
|
208
|
+
let distanceCovered = this.progress * this.totalDistance;
|
|
209
|
+
for (let i = 0; i < this.segments.length; i++) {
|
|
210
|
+
if (distanceCovered <= this.segments[i].distance) {
|
|
211
|
+
this.currentSegmentIndex = i;
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
distanceCovered -= this.segments[i].distance;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Reset the path
|
|
220
|
+
*/
|
|
221
|
+
reset() {
|
|
222
|
+
this.progress = 0;
|
|
223
|
+
this.currentSegmentIndex = 0;
|
|
224
|
+
this.holdTimeElapsed = 0;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Check if path is complete
|
|
228
|
+
*/
|
|
229
|
+
isComplete() {
|
|
230
|
+
return !this._isLooping && this.progress >= 1;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Get waypoint count
|
|
234
|
+
*/
|
|
235
|
+
getWaypointCount() {
|
|
236
|
+
return this.waypoints.length;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Get total path distance
|
|
240
|
+
*/
|
|
241
|
+
getTotalDistance() {
|
|
242
|
+
return this.totalDistance;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Motion event types
|
|
247
|
+
*/
|
|
248
|
+
export var MotionEvent;
|
|
249
|
+
(function (MotionEvent) {
|
|
250
|
+
MotionEvent["PATH_COMPLETE"] = "path_complete";
|
|
251
|
+
MotionEvent["PATH_ACTIVATED"] = "path_activated";
|
|
252
|
+
MotionEvent["WAYPOINT_REACHED"] = "waypoint_reached";
|
|
253
|
+
MotionEvent["SEGMENT_ENTERED"] = "segment_entered";
|
|
254
|
+
})(MotionEvent || (MotionEvent = {}));
|
|
255
|
+
/**
|
|
256
|
+
* Character motion manager
|
|
257
|
+
*/
|
|
258
|
+
export class CharacterMotion {
|
|
259
|
+
// private _lastWaypointId: string = ""; // Reserved for future use
|
|
260
|
+
constructor(initialPosition) {
|
|
261
|
+
this.paths = new Map();
|
|
262
|
+
this.activePath = null;
|
|
263
|
+
this.lastUpdateTime = 0;
|
|
264
|
+
this.eventHandlers = [];
|
|
265
|
+
this.currentPosition = { ...initialPosition };
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Create a new path
|
|
269
|
+
*/
|
|
270
|
+
newPath(pathId, speed = 1, easingFn) {
|
|
271
|
+
const path = new Path(pathId, speed, easingFn);
|
|
272
|
+
this.paths.set(pathId, path);
|
|
273
|
+
return path;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Get a path by ID
|
|
277
|
+
*/
|
|
278
|
+
queryPath(pathId) {
|
|
279
|
+
return this.paths.get(pathId);
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Activate a path
|
|
283
|
+
*/
|
|
284
|
+
activatePath(path) {
|
|
285
|
+
if (this.activePath && this.activePath !== path) {
|
|
286
|
+
this.triggerEvent(MotionEvent.PATH_COMPLETE, this.activePath.id);
|
|
287
|
+
}
|
|
288
|
+
this.activePath = path;
|
|
289
|
+
this.lastUpdateTime = Date.now();
|
|
290
|
+
path.reset();
|
|
291
|
+
this.triggerEvent(MotionEvent.PATH_ACTIVATED, path.id);
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Set position directly
|
|
295
|
+
*/
|
|
296
|
+
setCoordinate(coord) {
|
|
297
|
+
this.currentPosition = { ...coord };
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Update motion and get current position
|
|
301
|
+
*/
|
|
302
|
+
update() {
|
|
303
|
+
if (!this.activePath) {
|
|
304
|
+
return this.currentPosition;
|
|
305
|
+
}
|
|
306
|
+
const currentTime = Date.now();
|
|
307
|
+
const deltaTime = currentTime - this.lastUpdateTime;
|
|
308
|
+
this.lastUpdateTime = currentTime;
|
|
309
|
+
// Update path progress
|
|
310
|
+
this.activePath.update(deltaTime);
|
|
311
|
+
// Get new position
|
|
312
|
+
const newPosition = this.activePath.getCurrentPosition();
|
|
313
|
+
this.currentPosition = newPosition;
|
|
314
|
+
// Check for path completion
|
|
315
|
+
if (this.activePath.isComplete()) {
|
|
316
|
+
this.triggerEvent(MotionEvent.PATH_COMPLETE, this.activePath.id);
|
|
317
|
+
}
|
|
318
|
+
return this.currentPosition;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Register an event handler
|
|
322
|
+
*/
|
|
323
|
+
registerEvent(event, pathId, callback, waypointId) {
|
|
324
|
+
this.eventHandlers.push({ event, pathId, waypointId, callback });
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Trigger an event
|
|
328
|
+
*/
|
|
329
|
+
triggerEvent(event, pathId, waypointId) {
|
|
330
|
+
for (const handler of this.eventHandlers) {
|
|
331
|
+
if (handler.event === event &&
|
|
332
|
+
handler.pathId === pathId &&
|
|
333
|
+
(!waypointId || handler.waypointId === waypointId)) {
|
|
334
|
+
handler.callback();
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Reset all paths
|
|
340
|
+
*/
|
|
341
|
+
reset() {
|
|
342
|
+
this.paths.forEach(path => path.reset());
|
|
343
|
+
this.activePath = null;
|
|
344
|
+
this.lastUpdateTime = 0;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Get current position
|
|
348
|
+
*/
|
|
349
|
+
getCurrentPosition() {
|
|
350
|
+
return { ...this.currentPosition };
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
//# sourceMappingURL=motion-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-engine.js","sourceRoot":"","sources":["../../src/effects/motion-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safety wrapper for effect execution with fallback mechanisms
|
|
3
|
+
* Ensures effects never break core CLI functionality
|
|
4
|
+
*/
|
|
5
|
+
import { Effect, EffectResult, SafetyConfig, PerformanceMetrics } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Safe executor for effects with comprehensive error handling
|
|
8
|
+
*/
|
|
9
|
+
export declare class SafeEffectExecutor {
|
|
10
|
+
private config;
|
|
11
|
+
private terminalCapabilities?;
|
|
12
|
+
private metrics;
|
|
13
|
+
constructor(config?: Partial<SafetyConfig>);
|
|
14
|
+
/**
|
|
15
|
+
* Execute an effect with safety mechanisms
|
|
16
|
+
*/
|
|
17
|
+
execute(effect: Effect, text: string, effectConfig?: any): Promise<EffectResult>;
|
|
18
|
+
/**
|
|
19
|
+
* Execute the effect and collect frames
|
|
20
|
+
*/
|
|
21
|
+
private executeEffect;
|
|
22
|
+
/**
|
|
23
|
+
* Execute fallback rendering
|
|
24
|
+
*/
|
|
25
|
+
private executeFallback;
|
|
26
|
+
/**
|
|
27
|
+
* Determine if we should use fallback based on environment
|
|
28
|
+
*/
|
|
29
|
+
private shouldUseFallback;
|
|
30
|
+
/**
|
|
31
|
+
* Update performance metrics
|
|
32
|
+
*/
|
|
33
|
+
private updateMetrics;
|
|
34
|
+
/**
|
|
35
|
+
* Get current performance metrics
|
|
36
|
+
*/
|
|
37
|
+
getMetrics(): PerformanceMetrics;
|
|
38
|
+
/**
|
|
39
|
+
* Reset performance metrics
|
|
40
|
+
*/
|
|
41
|
+
resetMetrics(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Create a wrapped effect executor for easy usage
|
|
44
|
+
*/
|
|
45
|
+
static wrap(effect: Effect, config?: Partial<SafetyConfig>): (text: string, effectConfig?: any) => Promise<EffectResult>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Global effect executor instance
|
|
49
|
+
*/
|
|
50
|
+
export declare const defaultExecutor: SafeEffectExecutor;
|
|
51
|
+
/**
|
|
52
|
+
* Execute an effect safely with default configuration
|
|
53
|
+
*/
|
|
54
|
+
export declare function executeSafely(effect: Effect, text: string, effectConfig?: any): Promise<EffectResult>;
|
|
55
|
+
//# sourceMappingURL=safe-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-executor.d.ts","sourceRoot":"","sources":["../../src/effects/safe-executor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAgDpB;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,oBAAoB,CAAC,CAAuB;IACpD,OAAO,CAAC,OAAO,CAMb;gBAEU,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAI9C;;OAEG;IACG,OAAO,CACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,YAAY,GAAE,GAAQ,GACrB,OAAO,CAAC,YAAY,CAAC;IAkDxB;;OAEG;YACW,aAAa;IA8B3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAwBvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,UAAU,IAAI,kBAAkB;IAIhC;;OAEG;IACH,YAAY,IAAI,IAAI;IAUpB;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC7B,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,YAAY,CAAC;CAO/D;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,oBAA2B,CAAC;AAExD;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,GAAG,GACjB,OAAO,CAAC,YAAY,CAAC,CAEvB"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safety wrapper for effect execution with fallback mechanisms
|
|
3
|
+
* Ensures effects never break core CLI functionality
|
|
4
|
+
*/
|
|
5
|
+
import { detectTerminalCapabilities } from "./utils.js";
|
|
6
|
+
const DEFAULT_SAFETY_CONFIG = {
|
|
7
|
+
maxExecutionTime: 3000, // 3 seconds
|
|
8
|
+
maxMemoryUsage: 50, // 50MB
|
|
9
|
+
enableMonitoring: true,
|
|
10
|
+
forceFallback: false,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Creates a timeout promise that rejects after specified milliseconds
|
|
14
|
+
*/
|
|
15
|
+
function timeout(ms) {
|
|
16
|
+
return new Promise((_, reject) => {
|
|
17
|
+
setTimeout(() => reject(new Error(`Timeout after ${ms}ms`)), ms);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Monitors memory usage during effect execution
|
|
22
|
+
*/
|
|
23
|
+
class MemoryMonitor {
|
|
24
|
+
constructor(maxMemoryMB) {
|
|
25
|
+
this.initialMemory = process.memoryUsage().heapUsed;
|
|
26
|
+
this.maxMemory = maxMemoryMB * 1024 * 1024; // Convert MB to bytes
|
|
27
|
+
}
|
|
28
|
+
check() {
|
|
29
|
+
const currentMemory = process.memoryUsage().heapUsed;
|
|
30
|
+
const usedMemory = currentMemory - this.initialMemory;
|
|
31
|
+
if (usedMemory > this.maxMemory) {
|
|
32
|
+
throw new Error(`Memory limit exceeded: ${Math.round(usedMemory / 1024 / 1024)}MB used`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
getUsage() {
|
|
36
|
+
const currentMemory = process.memoryUsage().heapUsed;
|
|
37
|
+
return (currentMemory - this.initialMemory) / 1024 / 1024; // Return in MB
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Safe executor for effects with comprehensive error handling
|
|
42
|
+
*/
|
|
43
|
+
export class SafeEffectExecutor {
|
|
44
|
+
constructor(config = {}) {
|
|
45
|
+
this.metrics = {
|
|
46
|
+
frameCount: 0,
|
|
47
|
+
totalDuration: 0,
|
|
48
|
+
averageFrameTime: 0,
|
|
49
|
+
maxFrameTime: 0,
|
|
50
|
+
memoryUsage: 0,
|
|
51
|
+
};
|
|
52
|
+
this.config = { ...DEFAULT_SAFETY_CONFIG, ...config };
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Execute an effect with safety mechanisms
|
|
56
|
+
*/
|
|
57
|
+
async execute(effect, text, effectConfig = {}) {
|
|
58
|
+
// Check if we should force fallback
|
|
59
|
+
if (this.config.forceFallback || this.shouldUseFallback()) {
|
|
60
|
+
return this.executeFallback(effect, text);
|
|
61
|
+
}
|
|
62
|
+
const memoryMonitor = new MemoryMonitor(this.config.maxMemoryUsage);
|
|
63
|
+
const startTime = Date.now();
|
|
64
|
+
try {
|
|
65
|
+
// Initialize effect
|
|
66
|
+
effect.initialize(text, effectConfig);
|
|
67
|
+
// Execute with timeout protection
|
|
68
|
+
const frames = await Promise.race([
|
|
69
|
+
this.executeEffect(effect, memoryMonitor),
|
|
70
|
+
timeout(this.config.maxExecutionTime).then(() => {
|
|
71
|
+
throw new Error("Effect execution timeout");
|
|
72
|
+
}),
|
|
73
|
+
]);
|
|
74
|
+
const duration = Date.now() - startTime;
|
|
75
|
+
if (this.config.enableMonitoring) {
|
|
76
|
+
this.updateMetrics(duration, memoryMonitor.getUsage());
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
success: true,
|
|
80
|
+
frames,
|
|
81
|
+
duration,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
// Log error for debugging but don't expose to user
|
|
86
|
+
if (process.env.DEBUG) {
|
|
87
|
+
console.error("Effect execution failed:", error);
|
|
88
|
+
}
|
|
89
|
+
// Fall back to plain text
|
|
90
|
+
return this.executeFallback(effect, text, error);
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
// Always cleanup
|
|
94
|
+
try {
|
|
95
|
+
effect.cleanup();
|
|
96
|
+
}
|
|
97
|
+
catch (cleanupError) {
|
|
98
|
+
// Ignore cleanup errors
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Execute the effect and collect frames
|
|
104
|
+
*/
|
|
105
|
+
async executeEffect(effect, memoryMonitor) {
|
|
106
|
+
const frames = [];
|
|
107
|
+
const frameStartTimes = [];
|
|
108
|
+
while (!effect.isComplete()) {
|
|
109
|
+
const frameStart = Date.now();
|
|
110
|
+
// Check memory usage
|
|
111
|
+
memoryMonitor.check();
|
|
112
|
+
// Render frame
|
|
113
|
+
const frame = await effect.render();
|
|
114
|
+
frames.push(...frame);
|
|
115
|
+
const frameTime = Date.now() - frameStart;
|
|
116
|
+
frameStartTimes.push(frameTime);
|
|
117
|
+
if (frameTime > this.metrics.maxFrameTime) {
|
|
118
|
+
this.metrics.maxFrameTime = frameTime;
|
|
119
|
+
}
|
|
120
|
+
this.metrics.frameCount++;
|
|
121
|
+
}
|
|
122
|
+
return frames;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Execute fallback rendering
|
|
126
|
+
*/
|
|
127
|
+
executeFallback(effect, text, error) {
|
|
128
|
+
try {
|
|
129
|
+
effect.initialize(text, { noColor: true });
|
|
130
|
+
const frames = effect.renderFallback();
|
|
131
|
+
return {
|
|
132
|
+
success: true,
|
|
133
|
+
frames,
|
|
134
|
+
error,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
catch (fallbackError) {
|
|
138
|
+
// Ultimate fallback - just return the original text
|
|
139
|
+
return {
|
|
140
|
+
success: false,
|
|
141
|
+
frames: [text],
|
|
142
|
+
error: error || fallbackError,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Determine if we should use fallback based on environment
|
|
148
|
+
*/
|
|
149
|
+
shouldUseFallback() {
|
|
150
|
+
// Force fallback in CI environments
|
|
151
|
+
if (process.env.CI || process.env.NO_EFFECTS) {
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
// Lazy load terminal capabilities
|
|
155
|
+
if (!this.terminalCapabilities) {
|
|
156
|
+
this.terminalCapabilities = detectTerminalCapabilities();
|
|
157
|
+
}
|
|
158
|
+
// Use fallback if terminal doesn't support colors or is non-interactive
|
|
159
|
+
// At this point, terminalCapabilities is guaranteed to be defined
|
|
160
|
+
return (!this.terminalCapabilities.supportsColor ||
|
|
161
|
+
!this.terminalCapabilities.isInteractive);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Update performance metrics
|
|
165
|
+
*/
|
|
166
|
+
updateMetrics(duration, memoryUsage) {
|
|
167
|
+
this.metrics.totalDuration += duration;
|
|
168
|
+
this.metrics.memoryUsage = Math.max(this.metrics.memoryUsage, memoryUsage);
|
|
169
|
+
this.metrics.averageFrameTime =
|
|
170
|
+
this.metrics.totalDuration / Math.max(this.metrics.frameCount, 1);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get current performance metrics
|
|
174
|
+
*/
|
|
175
|
+
getMetrics() {
|
|
176
|
+
return { ...this.metrics };
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Reset performance metrics
|
|
180
|
+
*/
|
|
181
|
+
resetMetrics() {
|
|
182
|
+
this.metrics = {
|
|
183
|
+
frameCount: 0,
|
|
184
|
+
totalDuration: 0,
|
|
185
|
+
averageFrameTime: 0,
|
|
186
|
+
maxFrameTime: 0,
|
|
187
|
+
memoryUsage: 0,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Create a wrapped effect executor for easy usage
|
|
192
|
+
*/
|
|
193
|
+
static wrap(effect, config) {
|
|
194
|
+
const executor = new SafeEffectExecutor(config);
|
|
195
|
+
return async (text, effectConfig) => {
|
|
196
|
+
return executor.execute(effect, text, effectConfig);
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Global effect executor instance
|
|
202
|
+
*/
|
|
203
|
+
export const defaultExecutor = new SafeEffectExecutor();
|
|
204
|
+
/**
|
|
205
|
+
* Execute an effect safely with default configuration
|
|
206
|
+
*/
|
|
207
|
+
export async function executeSafely(effect, text, effectConfig) {
|
|
208
|
+
return defaultExecutor.execute(effect, text, effectConfig);
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=safe-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-executor.js","sourceRoot":"","sources":["../../src/effects/safe-executor.ts"],"names":[],"mappings":"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"}
|