stelo 1.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.
Files changed (141) hide show
  1. package/LICENSE +184 -0
  2. package/README.md +853 -0
  3. package/dist/accessibility.d.ts +227 -0
  4. package/dist/accessibility.d.ts.map +1 -0
  5. package/dist/accessibility.js +602 -0
  6. package/dist/accessibility.js.map +1 -0
  7. package/dist/agent.d.ts +870 -0
  8. package/dist/agent.d.ts.map +1 -0
  9. package/dist/agent.js +1107 -0
  10. package/dist/agent.js.map +1 -0
  11. package/dist/audio-stream.d.ts +114 -0
  12. package/dist/audio-stream.d.ts.map +1 -0
  13. package/dist/audio-stream.js +167 -0
  14. package/dist/audio-stream.js.map +1 -0
  15. package/dist/clipboard.d.ts +99 -0
  16. package/dist/clipboard.d.ts.map +1 -0
  17. package/dist/clipboard.js +352 -0
  18. package/dist/clipboard.js.map +1 -0
  19. package/dist/config.d.ts +183 -0
  20. package/dist/config.d.ts.map +1 -0
  21. package/dist/config.js +477 -0
  22. package/dist/config.js.map +1 -0
  23. package/dist/context.d.ts +213 -0
  24. package/dist/context.d.ts.map +1 -0
  25. package/dist/context.js +387 -0
  26. package/dist/context.js.map +1 -0
  27. package/dist/cortex.d.ts +548 -0
  28. package/dist/cortex.d.ts.map +1 -0
  29. package/dist/cortex.js +1479 -0
  30. package/dist/cortex.js.map +1 -0
  31. package/dist/errors.d.ts +133 -0
  32. package/dist/errors.d.ts.map +1 -0
  33. package/dist/errors.js +278 -0
  34. package/dist/errors.js.map +1 -0
  35. package/dist/events.d.ts +227 -0
  36. package/dist/events.d.ts.map +1 -0
  37. package/dist/events.js +429 -0
  38. package/dist/events.js.map +1 -0
  39. package/dist/executor.d.ts +212 -0
  40. package/dist/executor.d.ts.map +1 -0
  41. package/dist/executor.js +545 -0
  42. package/dist/executor.js.map +1 -0
  43. package/dist/index.d.ts +69 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +167 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/integration.d.ts +159 -0
  48. package/dist/integration.d.ts.map +1 -0
  49. package/dist/integration.js +533 -0
  50. package/dist/integration.js.map +1 -0
  51. package/dist/keyboard.d.ts +276 -0
  52. package/dist/keyboard.d.ts.map +1 -0
  53. package/dist/keyboard.js +404 -0
  54. package/dist/keyboard.js.map +1 -0
  55. package/dist/logger.d.ts +198 -0
  56. package/dist/logger.d.ts.map +1 -0
  57. package/dist/logger.js +516 -0
  58. package/dist/logger.js.map +1 -0
  59. package/dist/middleware.d.ts +183 -0
  60. package/dist/middleware.d.ts.map +1 -0
  61. package/dist/middleware.js +493 -0
  62. package/dist/middleware.js.map +1 -0
  63. package/dist/monitor.d.ts +136 -0
  64. package/dist/monitor.d.ts.map +1 -0
  65. package/dist/monitor.js +341 -0
  66. package/dist/monitor.js.map +1 -0
  67. package/dist/mouse.d.ts +290 -0
  68. package/dist/mouse.d.ts.map +1 -0
  69. package/dist/mouse.js +466 -0
  70. package/dist/mouse.js.map +1 -0
  71. package/dist/plugin.d.ts +157 -0
  72. package/dist/plugin.d.ts.map +1 -0
  73. package/dist/plugin.js +409 -0
  74. package/dist/plugin.js.map +1 -0
  75. package/dist/process.d.ts +106 -0
  76. package/dist/process.d.ts.map +1 -0
  77. package/dist/process.js +326 -0
  78. package/dist/process.js.map +1 -0
  79. package/dist/recorder.d.ts +100 -0
  80. package/dist/recorder.d.ts.map +1 -0
  81. package/dist/recorder.js +258 -0
  82. package/dist/recorder.js.map +1 -0
  83. package/dist/safety.d.ts +59 -0
  84. package/dist/safety.d.ts.map +1 -0
  85. package/dist/safety.js +98 -0
  86. package/dist/safety.js.map +1 -0
  87. package/dist/scheduler.d.ts +152 -0
  88. package/dist/scheduler.d.ts.map +1 -0
  89. package/dist/scheduler.js +615 -0
  90. package/dist/scheduler.js.map +1 -0
  91. package/dist/screen.d.ts +96 -0
  92. package/dist/screen.d.ts.map +1 -0
  93. package/dist/screen.js +154 -0
  94. package/dist/screen.js.map +1 -0
  95. package/dist/session.d.ts +209 -0
  96. package/dist/session.d.ts.map +1 -0
  97. package/dist/session.js +479 -0
  98. package/dist/session.js.map +1 -0
  99. package/dist/stream.d.ts +168 -0
  100. package/dist/stream.d.ts.map +1 -0
  101. package/dist/stream.js +298 -0
  102. package/dist/stream.js.map +1 -0
  103. package/dist/telemetry.d.ts +223 -0
  104. package/dist/telemetry.d.ts.map +1 -0
  105. package/dist/telemetry.js +433 -0
  106. package/dist/telemetry.js.map +1 -0
  107. package/dist/types.d.ts +165 -0
  108. package/dist/types.d.ts.map +1 -0
  109. package/dist/types.js +8 -0
  110. package/dist/types.js.map +1 -0
  111. package/dist/utils/bezier.d.ts +51 -0
  112. package/dist/utils/bezier.d.ts.map +1 -0
  113. package/dist/utils/bezier.js +117 -0
  114. package/dist/utils/bezier.js.map +1 -0
  115. package/dist/utils/helpers.d.ts +90 -0
  116. package/dist/utils/helpers.d.ts.map +1 -0
  117. package/dist/utils/helpers.js +143 -0
  118. package/dist/utils/helpers.js.map +1 -0
  119. package/dist/utils/index.d.ts +4 -0
  120. package/dist/utils/index.d.ts.map +1 -0
  121. package/dist/utils/index.js +18 -0
  122. package/dist/utils/index.js.map +1 -0
  123. package/dist/validation.d.ts +254 -0
  124. package/dist/validation.d.ts.map +1 -0
  125. package/dist/validation.js +478 -0
  126. package/dist/validation.js.map +1 -0
  127. package/dist/vision.d.ts +719 -0
  128. package/dist/vision.d.ts.map +1 -0
  129. package/dist/vision.js +1197 -0
  130. package/dist/vision.js.map +1 -0
  131. package/dist/window.d.ts +80 -0
  132. package/dist/window.d.ts.map +1 -0
  133. package/dist/window.js +170 -0
  134. package/dist/window.js.map +1 -0
  135. package/dist/workflow.d.ts +224 -0
  136. package/dist/workflow.d.ts.map +1 -0
  137. package/dist/workflow.js +578 -0
  138. package/dist/workflow.js.map +1 -0
  139. package/index.d.ts +840 -0
  140. package/index.js +495 -0
  141. package/package.json +91 -0
@@ -0,0 +1,433 @@
1
+ "use strict";
2
+ // ============================================================================
3
+ // Stelo — Telemetry & Observability
4
+ // ============================================================================
5
+ // Enterprise-grade monitoring, metrics, and event hooks for production systems.
6
+ // ============================================================================
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.CircuitBreaker = exports.telemetry = void 0;
9
+ exports.getCircuitBreakers = getCircuitBreakers;
10
+ // Internal state
11
+ let telemetryEnabled = false;
12
+ let metricsEnabled = false;
13
+ const eventHandlers = [];
14
+ const metricsHandlers = [];
15
+ const operationTimings = [];
16
+ const startTime = Date.now();
17
+ let totalOps = 0;
18
+ let successOps = 0;
19
+ let failureOps = 0;
20
+ /**
21
+ * Generate a unique event ID
22
+ */
23
+ function generateEventId() {
24
+ return `ax-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
25
+ }
26
+ /**
27
+ * Telemetry system for enterprise observability
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * import { telemetry } from 'stelo';
32
+ *
33
+ * // Enable telemetry
34
+ * telemetry.enable();
35
+ *
36
+ * // Subscribe to events
37
+ * telemetry.onEvent((event) => {
38
+ * console.log(`[${event.severity}] ${event.operation}: ${event.success}`);
39
+ * });
40
+ *
41
+ * // Get performance metrics
42
+ * const metrics = telemetry.getMetrics();
43
+ * console.log(`Ops/sec: ${metrics.opsPerSecond}`);
44
+ *
45
+ * // Run health checks
46
+ * const health = await telemetry.healthCheck();
47
+ * console.log(`System status: ${health.status}`);
48
+ * ```
49
+ */
50
+ exports.telemetry = {
51
+ /**
52
+ * Enable telemetry collection
53
+ */
54
+ enable() {
55
+ telemetryEnabled = true;
56
+ },
57
+ /**
58
+ * Disable telemetry collection
59
+ */
60
+ disable() {
61
+ telemetryEnabled = false;
62
+ },
63
+ /**
64
+ * Check if telemetry is enabled
65
+ */
66
+ isEnabled() {
67
+ return telemetryEnabled;
68
+ },
69
+ /**
70
+ * Enable metrics collection
71
+ */
72
+ enableMetrics() {
73
+ metricsEnabled = true;
74
+ },
75
+ /**
76
+ * Disable metrics collection
77
+ */
78
+ disableMetrics() {
79
+ metricsEnabled = false;
80
+ },
81
+ /**
82
+ * Subscribe to telemetry events
83
+ */
84
+ onEvent(handler) {
85
+ eventHandlers.push(handler);
86
+ return () => {
87
+ const idx = eventHandlers.indexOf(handler);
88
+ if (idx >= 0)
89
+ eventHandlers.splice(idx, 1);
90
+ };
91
+ },
92
+ /**
93
+ * Subscribe to periodic metrics updates
94
+ */
95
+ onMetrics(handler) {
96
+ metricsHandlers.push(handler);
97
+ return () => {
98
+ const idx = metricsHandlers.indexOf(handler);
99
+ if (idx >= 0)
100
+ metricsHandlers.splice(idx, 1);
101
+ };
102
+ },
103
+ /**
104
+ * Emit a telemetry event
105
+ * @internal Used by Stelo internals
106
+ */
107
+ emit(category, operation, success, options) {
108
+ if (!telemetryEnabled && !metricsEnabled)
109
+ return;
110
+ totalOps++;
111
+ if (success) {
112
+ successOps++;
113
+ }
114
+ else {
115
+ failureOps++;
116
+ }
117
+ if (options?.durationMs !== undefined) {
118
+ operationTimings.push(options.durationMs);
119
+ // Keep only last 1000 timings for percentile calculations
120
+ if (operationTimings.length > 1000) {
121
+ operationTimings.shift();
122
+ }
123
+ }
124
+ if (!telemetryEnabled)
125
+ return;
126
+ const event = {
127
+ id: generateEventId(),
128
+ timestamp: new Date().toISOString(),
129
+ severity: options?.severity ?? (success ? 'info' : 'error'),
130
+ category,
131
+ operation,
132
+ success,
133
+ durationMs: options?.durationMs,
134
+ error: options?.error,
135
+ metadata: options?.metadata,
136
+ };
137
+ for (const handler of eventHandlers) {
138
+ try {
139
+ handler(event);
140
+ }
141
+ catch {
142
+ // Telemetry handlers should not throw
143
+ }
144
+ }
145
+ },
146
+ /**
147
+ * Get current performance metrics
148
+ */
149
+ getMetrics() {
150
+ const sorted = [...operationTimings].sort((a, b) => a - b);
151
+ const avgDuration = sorted.length > 0
152
+ ? sorted.reduce((a, b) => a + b, 0) / sorted.length
153
+ : 0;
154
+ const p95Idx = Math.floor(sorted.length * 0.95);
155
+ const p99Idx = Math.floor(sorted.length * 0.99);
156
+ const uptimeMs = Date.now() - startTime;
157
+ const opsPerSecond = uptimeMs > 0 ? (totalOps / uptimeMs) * 1000 : 0;
158
+ return {
159
+ totalOperations: totalOps,
160
+ successCount: successOps,
161
+ failureCount: failureOps,
162
+ avgDurationMs: Math.round(avgDuration * 100) / 100,
163
+ p95DurationMs: sorted[p95Idx] ?? 0,
164
+ p99DurationMs: sorted[p99Idx] ?? 0,
165
+ opsPerSecond: Math.round(opsPerSecond * 100) / 100,
166
+ activeCircuitBreakers: circuitBreakers
167
+ .filter((cb) => cb.isOpen())
168
+ .map((cb) => cb.name),
169
+ uptimeMs,
170
+ };
171
+ },
172
+ /**
173
+ * Run system health checks
174
+ */
175
+ async healthCheck() {
176
+ const checks = [];
177
+ const native = require('../index.js');
178
+ // Check 1: Native bindings available
179
+ const bindingStart = performance.now();
180
+ try {
181
+ const platform = native.getPlatform();
182
+ checks.push({
183
+ name: 'native_bindings',
184
+ status: platform ? 'pass' : 'fail',
185
+ message: `Platform: ${platform}`,
186
+ durationMs: Math.round(performance.now() - bindingStart),
187
+ });
188
+ }
189
+ catch (e) {
190
+ checks.push({
191
+ name: 'native_bindings',
192
+ status: 'fail',
193
+ message: e instanceof Error ? e.message : 'Unknown error',
194
+ durationMs: Math.round(performance.now() - bindingStart),
195
+ });
196
+ }
197
+ // Check 2: Screen capture available
198
+ const screenStart = performance.now();
199
+ try {
200
+ const size = native.screenGetSize();
201
+ checks.push({
202
+ name: 'screen_capture',
203
+ status: size.width > 0 ? 'pass' : 'warn',
204
+ message: `Screen: ${size.width}x${size.height}`,
205
+ durationMs: Math.round(performance.now() - screenStart),
206
+ });
207
+ }
208
+ catch (e) {
209
+ checks.push({
210
+ name: 'screen_capture',
211
+ status: 'fail',
212
+ message: e instanceof Error ? e.message : 'Unknown error',
213
+ durationMs: Math.round(performance.now() - screenStart),
214
+ });
215
+ }
216
+ // Check 3: Mouse access
217
+ const mouseStart = performance.now();
218
+ try {
219
+ const pos = native.mouseGetPosition();
220
+ checks.push({
221
+ name: 'mouse_access',
222
+ status: 'pass',
223
+ message: `Position: ${pos.x}, ${pos.y}`,
224
+ durationMs: Math.round(performance.now() - mouseStart),
225
+ });
226
+ }
227
+ catch (e) {
228
+ checks.push({
229
+ name: 'mouse_access',
230
+ status: 'fail',
231
+ message: e instanceof Error ? e.message : 'Unknown error',
232
+ durationMs: Math.round(performance.now() - mouseStart),
233
+ });
234
+ }
235
+ // Check 4: Safety system
236
+ const safetyStart = performance.now();
237
+ try {
238
+ const stopped = native.safetyIsStopped();
239
+ checks.push({
240
+ name: 'safety_system',
241
+ status: stopped ? 'warn' : 'pass',
242
+ message: stopped ? 'Emergency stop active' : 'Operational',
243
+ durationMs: Math.round(performance.now() - safetyStart),
244
+ });
245
+ }
246
+ catch (e) {
247
+ checks.push({
248
+ name: 'safety_system',
249
+ status: 'fail',
250
+ message: e instanceof Error ? e.message : 'Unknown error',
251
+ durationMs: Math.round(performance.now() - safetyStart),
252
+ });
253
+ }
254
+ // Check 5: Error rate
255
+ const errorRate = totalOps > 0 ? failureOps / totalOps : 0;
256
+ checks.push({
257
+ name: 'error_rate',
258
+ status: errorRate > 0.1 ? 'fail' : errorRate > 0.01 ? 'warn' : 'pass',
259
+ message: `${(errorRate * 100).toFixed(2)}% failure rate`,
260
+ durationMs: 0,
261
+ });
262
+ // Determine overall status
263
+ const hasFailure = checks.some((c) => c.status === 'fail');
264
+ const hasWarn = checks.some((c) => c.status === 'warn');
265
+ return {
266
+ status: hasFailure ? 'unhealthy' : hasWarn ? 'degraded' : 'healthy',
267
+ checks,
268
+ timestamp: new Date().toISOString(),
269
+ };
270
+ },
271
+ /**
272
+ * Reset all metrics
273
+ */
274
+ resetMetrics() {
275
+ totalOps = 0;
276
+ successOps = 0;
277
+ failureOps = 0;
278
+ operationTimings.length = 0;
279
+ },
280
+ /**
281
+ * Wrap an operation with telemetry tracking
282
+ */
283
+ track(category, operation, fn, metadata) {
284
+ const start = performance.now();
285
+ try {
286
+ const result = fn();
287
+ const durationMs = performance.now() - start;
288
+ this.emit(category, operation, true, { durationMs, metadata });
289
+ return result;
290
+ }
291
+ catch (e) {
292
+ const durationMs = performance.now() - start;
293
+ const error = e instanceof Error ? e : new Error(String(e));
294
+ this.emit(category, operation, false, {
295
+ durationMs,
296
+ error: {
297
+ code: 'OPERATION_FAILED',
298
+ message: error.message,
299
+ recoverable: true,
300
+ },
301
+ metadata,
302
+ });
303
+ throw e;
304
+ }
305
+ },
306
+ /**
307
+ * Wrap an async operation with telemetry tracking
308
+ */
309
+ async trackAsync(category, operation, fn, metadata) {
310
+ const start = performance.now();
311
+ try {
312
+ const result = await fn();
313
+ const durationMs = performance.now() - start;
314
+ this.emit(category, operation, true, { durationMs, metadata });
315
+ return result;
316
+ }
317
+ catch (e) {
318
+ const durationMs = performance.now() - start;
319
+ const error = e instanceof Error ? e : new Error(String(e));
320
+ this.emit(category, operation, false, {
321
+ durationMs,
322
+ error: {
323
+ code: 'OPERATION_FAILED',
324
+ message: error.message,
325
+ recoverable: true,
326
+ },
327
+ metadata,
328
+ });
329
+ throw e;
330
+ }
331
+ },
332
+ };
333
+ /**
334
+ * Circuit breaker for fault tolerance
335
+ */
336
+ class CircuitBreaker {
337
+ name;
338
+ state = 'closed';
339
+ failureCount = 0;
340
+ successCount = 0;
341
+ lastFailureTime = 0;
342
+ failureThreshold;
343
+ resetTimeoutMs;
344
+ successThreshold;
345
+ constructor(name, options) {
346
+ this.name = name;
347
+ this.failureThreshold = options?.failureThreshold ?? 5;
348
+ this.resetTimeoutMs = options?.resetTimeoutMs ?? 30_000;
349
+ this.successThreshold = options?.successThreshold ?? 2;
350
+ circuitBreakers.push(this);
351
+ }
352
+ /**
353
+ * Get current circuit state
354
+ */
355
+ getState() {
356
+ if (this.state === 'open') {
357
+ if (Date.now() - this.lastFailureTime >= this.resetTimeoutMs) {
358
+ this.state = 'half-open';
359
+ this.successCount = 0;
360
+ }
361
+ }
362
+ return this.state;
363
+ }
364
+ /**
365
+ * Check if circuit is open (blocking)
366
+ */
367
+ isOpen() {
368
+ return this.getState() === 'open';
369
+ }
370
+ /**
371
+ * Record a successful operation
372
+ */
373
+ recordSuccess() {
374
+ if (this.getState() === 'half-open') {
375
+ this.successCount++;
376
+ if (this.successCount >= this.successThreshold) {
377
+ this.state = 'closed';
378
+ this.failureCount = 0;
379
+ }
380
+ }
381
+ else if (this.state === 'closed') {
382
+ this.failureCount = 0;
383
+ }
384
+ }
385
+ /**
386
+ * Record a failed operation
387
+ */
388
+ recordFailure() {
389
+ this.failureCount++;
390
+ this.lastFailureTime = Date.now();
391
+ if (this.getState() === 'half-open') {
392
+ this.state = 'open';
393
+ }
394
+ else if (this.failureCount >= this.failureThreshold) {
395
+ this.state = 'open';
396
+ }
397
+ }
398
+ /**
399
+ * Execute an operation with circuit breaker protection
400
+ */
401
+ async execute(fn) {
402
+ if (this.isOpen()) {
403
+ throw new Error(`Circuit breaker '${this.name}' is open`);
404
+ }
405
+ try {
406
+ const result = await fn();
407
+ this.recordSuccess();
408
+ return result;
409
+ }
410
+ catch (e) {
411
+ this.recordFailure();
412
+ throw e;
413
+ }
414
+ }
415
+ /**
416
+ * Force reset the circuit breaker
417
+ */
418
+ reset() {
419
+ this.state = 'closed';
420
+ this.failureCount = 0;
421
+ this.successCount = 0;
422
+ }
423
+ }
424
+ exports.CircuitBreaker = CircuitBreaker;
425
+ // Global registry of circuit breakers
426
+ const circuitBreakers = [];
427
+ /**
428
+ * Get all registered circuit breakers
429
+ */
430
+ function getCircuitBreakers() {
431
+ return [...circuitBreakers];
432
+ }
433
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../ts/telemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ /** Mouse button identifiers */
2
+ export type MouseButton = 'left' | 'right' | 'middle';
3
+ /** Scroll direction */
4
+ export type ScrollDirection = 'up' | 'down' | 'left' | 'right';
5
+ /** Movement curve types for smooth mouse movement */
6
+ export type CurveType = 'linear' | 'bezier' | 'ease-in-out' | 'ease-in' | 'ease-out' | 'humanized';
7
+ /** 2D point with integer coordinates */
8
+ export interface Point {
9
+ x: number;
10
+ y: number;
11
+ }
12
+ /** Screen/display dimensions */
13
+ export interface ScreenSize {
14
+ width: number;
15
+ height: number;
16
+ }
17
+ /** RGB pixel color */
18
+ export interface PixelColor {
19
+ r: number;
20
+ g: number;
21
+ b: number;
22
+ hex: string;
23
+ }
24
+ /** Display/monitor information */
25
+ export interface DisplayInfo {
26
+ id: number;
27
+ x: number;
28
+ y: number;
29
+ width: number;
30
+ height: number;
31
+ isPrimary: boolean;
32
+ scaleFactor: number;
33
+ name: string;
34
+ }
35
+ /** Window information */
36
+ export interface WindowInfo {
37
+ id: number;
38
+ title: string;
39
+ x: number;
40
+ y: number;
41
+ width: number;
42
+ height: number;
43
+ isVisible: boolean;
44
+ isMinimized: boolean;
45
+ processId: number;
46
+ processName: string;
47
+ processPath: string;
48
+ }
49
+ /** Screen capture result */
50
+ export interface ScreenCapture {
51
+ /** Raw RGBA pixel data */
52
+ data: Buffer;
53
+ width: number;
54
+ height: number;
55
+ }
56
+ /** Rectangular region */
57
+ export interface Region {
58
+ x: number;
59
+ y: number;
60
+ width: number;
61
+ height: number;
62
+ }
63
+ /** Options for smooth mouse movement */
64
+ export interface SmoothMoveOptions {
65
+ /** Duration in milliseconds (default: 500) */
66
+ duration?: number;
67
+ /** Interpolation curve type (default: 'bezier') */
68
+ curve?: CurveType;
69
+ /** Steps per second — higher = smoother (default: 120) */
70
+ stepsPerSecond?: number;
71
+ }
72
+ /** Options for humanized mouse movement */
73
+ export interface HumanizedMoveOptions {
74
+ /** Duration in milliseconds (default: 800) */
75
+ duration?: number;
76
+ /** Random deviation amount 0.0–1.0 (default: 0.5) */
77
+ jitter?: number;
78
+ /** Enable overshoot and correction (default: true) */
79
+ overshoot?: boolean;
80
+ }
81
+ /** Options for text typing */
82
+ export interface TypeOptions {
83
+ /** Delay between characters in ms (default: 20) */
84
+ delay?: number;
85
+ }
86
+ /** Options for humanized typing */
87
+ export interface HumanizedTypeOptions {
88
+ /** Minimum delay between characters in ms (default: 30) */
89
+ minDelay?: number;
90
+ /** Maximum delay between characters in ms (default: 120) */
91
+ maxDelay?: number;
92
+ }
93
+ /** Options for dragging */
94
+ export interface DragOptions {
95
+ /** Mouse button to use (default: 'left') */
96
+ button?: MouseButton;
97
+ /** Duration of the drag movement in ms (default: 500) */
98
+ duration?: number;
99
+ }
100
+ /** Automation event for recording/playback */
101
+ export type AutomationEvent = {
102
+ type: 'mouseMove';
103
+ x: number;
104
+ y: number;
105
+ timestamp: number;
106
+ } | {
107
+ type: 'mouseClick';
108
+ button: MouseButton;
109
+ x: number;
110
+ y: number;
111
+ timestamp: number;
112
+ } | {
113
+ type: 'mouseDown';
114
+ button: MouseButton;
115
+ x: number;
116
+ y: number;
117
+ timestamp: number;
118
+ } | {
119
+ type: 'mouseUp';
120
+ button: MouseButton;
121
+ x: number;
122
+ y: number;
123
+ timestamp: number;
124
+ } | {
125
+ type: 'mouseScroll';
126
+ amount: number;
127
+ direction: ScrollDirection;
128
+ timestamp: number;
129
+ } | {
130
+ type: 'keyPress';
131
+ key: string;
132
+ timestamp: number;
133
+ } | {
134
+ type: 'keyDown';
135
+ key: string;
136
+ timestamp: number;
137
+ } | {
138
+ type: 'keyUp';
139
+ key: string;
140
+ timestamp: number;
141
+ } | {
142
+ type: 'typeText';
143
+ text: string;
144
+ timestamp: number;
145
+ } | {
146
+ type: 'delay';
147
+ duration: number;
148
+ };
149
+ /** Recording playback options */
150
+ export interface PlaybackOptions {
151
+ /** Playback speed multiplier (default: 1.0) */
152
+ speed?: number;
153
+ /** Number of times to replay (default: 1) */
154
+ repeat?: number;
155
+ }
156
+ /** Safety configuration */
157
+ export interface SafetyConfig {
158
+ /** Enable failsafe corners (default: true) */
159
+ failsafe?: boolean;
160
+ /** Failsafe corner threshold in pixels (default: 5) */
161
+ failsafeThreshold?: number;
162
+ /** Maximum actions per second (0 = unlimited) */
163
+ rateLimit?: number;
164
+ }
165
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../ts/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ // ============================================================================
3
+ // Stelo — TypeScript Type Definitions
4
+ // ============================================================================
5
+ // All public types for the Stelo automation framework.
6
+ // ============================================================================
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../ts/types.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,sCAAsC;AACtC,+EAA+E;AAC/E,uDAAuD;AACvD,+EAA+E"}
@@ -0,0 +1,51 @@
1
+ export interface BezierPoint {
2
+ x: number;
3
+ y: number;
4
+ }
5
+ export interface CubicBezierOptions {
6
+ /** Number of sample points along the curve (default: 100) */
7
+ steps?: number;
8
+ }
9
+ /**
10
+ * Pure-TypeScript bezier curve utilities for path planning, easing, and
11
+ * visualization. These complement the native Rust bezier implementation
12
+ * used for actual mouse movement.
13
+ */
14
+ export declare const bezier: {
15
+ /**
16
+ * Evaluate a cubic bezier curve at parameter t ∈ [0, 1].
17
+ */
18
+ cubic(p0: BezierPoint, p1: BezierPoint, p2: BezierPoint, p3: BezierPoint, t: number): BezierPoint;
19
+ /**
20
+ * Evaluate a quadratic bezier curve at parameter t ∈ [0, 1].
21
+ */
22
+ quadratic(p0: BezierPoint, p1: BezierPoint, p2: BezierPoint, t: number): BezierPoint;
23
+ /**
24
+ * Sample a cubic bezier curve and return an array of evenly-spaced points.
25
+ */
26
+ sampleCubic(p0: BezierPoint, p1: BezierPoint, p2: BezierPoint, p3: BezierPoint, options?: CubicBezierOptions): BezierPoint[];
27
+ /**
28
+ * Compute the approximate arc length of a cubic bezier by summing segment distances.
29
+ */
30
+ arcLength(p0: BezierPoint, p1: BezierPoint, p2: BezierPoint, p3: BezierPoint, samples?: number): number;
31
+ /**
32
+ * Generate random control points for a cubic bezier between two endpoints.
33
+ * Useful for creating natural-looking mouse movement curves.
34
+ */
35
+ randomControlPoints(start: BezierPoint, end: BezierPoint, spread?: number): {
36
+ p1: BezierPoint;
37
+ p2: BezierPoint;
38
+ };
39
+ /**
40
+ * Standard CSS-style cubic-bezier easing function.
41
+ * Returns y for a given x ∈ [0, 1] using Newton's method.
42
+ */
43
+ cssEasing(x1: number, y1: number, x2: number, y2: number, t: number): number;
44
+ /** Predefined easing: ease-in */
45
+ easeIn(t: number): number;
46
+ /** Predefined easing: ease-out */
47
+ easeOut(t: number): number;
48
+ /** Predefined easing: ease-in-out */
49
+ easeInOut(t: number): number;
50
+ };
51
+ //# sourceMappingURL=bezier.d.ts.map