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
package/dist/plugin.js ADDED
@@ -0,0 +1,409 @@
1
+ "use strict";
2
+ // ============================================================================
3
+ // Stelo — Plugin System
4
+ // ============================================================================
5
+ // Plugin discovery, lifecycle management, inter-plugin communication,
6
+ // hook registration, and sandboxed execution for extensibility.
7
+ // ============================================================================
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.plugin = void 0;
10
+ const events_1 = require("./events");
11
+ const logger_1 = require("./logger");
12
+ const _plugins = new Map();
13
+ const _hooks = new Map();
14
+ const _loadOrder = [];
15
+ const _log = logger_1.logger.child('plugin');
16
+ function createPluginAPI(pluginId) {
17
+ const pluginLogger = logger_1.logger.child(`plugin:${pluginId}`);
18
+ const pluginConfig = _plugins.get(pluginId)?.config ?? {};
19
+ return {
20
+ events: events_1.events,
21
+ logger: pluginLogger,
22
+ getPlugin(id) {
23
+ const p = _plugins.get(id);
24
+ if (!p || p.status !== 'active')
25
+ return null;
26
+ return p.exports;
27
+ },
28
+ registerHook(name, fn) {
29
+ if (!_hooks.has(name))
30
+ _hooks.set(name, []);
31
+ _hooks.get(name).push({ pluginId, fn });
32
+ },
33
+ async callHook(name, ...args) {
34
+ const handlers = _hooks.get(name) ?? [];
35
+ const results = [];
36
+ for (const handler of handlers) {
37
+ try {
38
+ results.push(await handler.fn(...args));
39
+ }
40
+ catch (err) {
41
+ pluginLogger.error(`Hook "${name}" failed in plugin ${handler.pluginId}`, err);
42
+ }
43
+ }
44
+ return results;
45
+ },
46
+ getConfig(key, defaultValue) {
47
+ return (key in pluginConfig ? pluginConfig[key] : defaultValue);
48
+ },
49
+ setConfig(key, value) {
50
+ pluginConfig[key] = value;
51
+ const p = _plugins.get(pluginId);
52
+ if (p)
53
+ p.config = pluginConfig;
54
+ },
55
+ };
56
+ }
57
+ function resolveDependencyOrder(pluginIds) {
58
+ const visited = new Set();
59
+ const result = [];
60
+ function visit(id, visiting) {
61
+ if (visited.has(id))
62
+ return;
63
+ if (visiting.has(id)) {
64
+ throw new Error(`Circular plugin dependency detected involving: ${id}`);
65
+ }
66
+ visiting.add(id);
67
+ const plugin = _plugins.get(id);
68
+ if (plugin?.definition.manifest.dependencies) {
69
+ for (const dep of plugin.definition.manifest.dependencies) {
70
+ if (_plugins.has(dep)) {
71
+ visit(dep, visiting);
72
+ }
73
+ else {
74
+ _log.warn(`Plugin "${id}" depends on "${dep}" which is not registered`);
75
+ }
76
+ }
77
+ }
78
+ visiting.delete(id);
79
+ visited.add(id);
80
+ result.push(id);
81
+ }
82
+ // Sort by priority first
83
+ const sorted = [...pluginIds].sort((a, b) => {
84
+ const pa = _plugins.get(a)?.definition.manifest.priority ?? 0;
85
+ const pb = _plugins.get(b)?.definition.manifest.priority ?? 0;
86
+ return pb - pa; // Higher priority first
87
+ });
88
+ for (const id of sorted) {
89
+ visit(id, new Set());
90
+ }
91
+ return result;
92
+ }
93
+ // ── Public API ───────────────────────────────────────────────────────────────
94
+ exports.plugin = {
95
+ /**
96
+ * Register a plugin (does not initialize it yet).
97
+ */
98
+ register(definition) {
99
+ const { id } = definition.manifest;
100
+ if (_plugins.has(id)) {
101
+ throw new Error(`Plugin "${id}" is already registered`);
102
+ }
103
+ _plugins.set(id, {
104
+ definition,
105
+ status: 'registered',
106
+ exports: null,
107
+ config: {},
108
+ });
109
+ events_1.events.emit('plugin.registered', 'plugin', {
110
+ pluginId: id,
111
+ name: definition.manifest.name,
112
+ version: definition.manifest.version,
113
+ }, { source: 'plugin' });
114
+ _log.info('Plugin registered', {
115
+ id,
116
+ name: definition.manifest.name,
117
+ version: definition.manifest.version,
118
+ });
119
+ },
120
+ /**
121
+ * Initialize and activate a specific plugin.
122
+ */
123
+ async activate(pluginId) {
124
+ const p = _plugins.get(pluginId);
125
+ if (!p) {
126
+ _log.error('Plugin not found', undefined, { pluginId });
127
+ return false;
128
+ }
129
+ if (p.status === 'active')
130
+ return true;
131
+ // Check dependencies
132
+ const deps = p.definition.manifest.dependencies ?? [];
133
+ for (const dep of deps) {
134
+ const depPlugin = _plugins.get(dep);
135
+ if (!depPlugin) {
136
+ _log.error(`Dependency "${dep}" not found for plugin "${pluginId}"`);
137
+ p.status = 'error';
138
+ p.errorMessage = `Missing dependency: ${dep}`;
139
+ return false;
140
+ }
141
+ if (depPlugin.status !== 'active') {
142
+ const activated = await exports.plugin.activate(dep);
143
+ if (!activated) {
144
+ p.status = 'error';
145
+ p.errorMessage = `Failed to activate dependency: ${dep}`;
146
+ return false;
147
+ }
148
+ }
149
+ }
150
+ p.status = 'initializing';
151
+ try {
152
+ const api = createPluginAPI(pluginId);
153
+ p.exports = await p.definition.init(api);
154
+ p.status = 'active';
155
+ p.loadedAt = Date.now();
156
+ _loadOrder.push(pluginId);
157
+ events_1.events.emit('plugin.activated', 'plugin', {
158
+ pluginId,
159
+ name: p.definition.manifest.name,
160
+ }, { source: 'plugin' });
161
+ _log.info('Plugin activated', { pluginId });
162
+ return true;
163
+ }
164
+ catch (err) {
165
+ p.status = 'error';
166
+ p.errorMessage = String(err);
167
+ events_1.events.emit('plugin.error', 'plugin', {
168
+ pluginId,
169
+ error: String(err),
170
+ }, { source: 'plugin' });
171
+ _log.error('Plugin activation failed', err, { pluginId });
172
+ return false;
173
+ }
174
+ },
175
+ /**
176
+ * Activate all registered plugins (in dependency order).
177
+ */
178
+ async activateAll() {
179
+ const ids = [..._plugins.keys()].filter((id) => {
180
+ const p = _plugins.get(id);
181
+ return p.status === 'registered' || p.status === 'error';
182
+ });
183
+ let ordered;
184
+ try {
185
+ ordered = resolveDependencyOrder(ids);
186
+ }
187
+ catch (err) {
188
+ _log.error('Failed to resolve dependency order', err);
189
+ return { activated: [], failed: ids };
190
+ }
191
+ const activated = [];
192
+ const failed = [];
193
+ for (const id of ordered) {
194
+ const success = await exports.plugin.activate(id);
195
+ if (success) {
196
+ activated.push(id);
197
+ }
198
+ else {
199
+ failed.push(id);
200
+ }
201
+ }
202
+ return { activated, failed };
203
+ },
204
+ /**
205
+ * Deactivate/unload a plugin.
206
+ */
207
+ async deactivate(pluginId) {
208
+ const p = _plugins.get(pluginId);
209
+ if (!p || p.status === 'unloaded')
210
+ return false;
211
+ try {
212
+ if (p.definition.destroy) {
213
+ await p.definition.destroy();
214
+ }
215
+ p.status = 'unloaded';
216
+ p.exports = null;
217
+ // Remove hooks registered by this plugin
218
+ for (const [name, handlers] of _hooks) {
219
+ _hooks.set(name, handlers.filter((h) => h.pluginId !== pluginId));
220
+ }
221
+ events_1.events.emit('plugin.deactivated', 'plugin', { pluginId }, { source: 'plugin' });
222
+ _log.info('Plugin deactivated', { pluginId });
223
+ return true;
224
+ }
225
+ catch (err) {
226
+ _log.error('Plugin deactivation failed', err, { pluginId });
227
+ p.status = 'error';
228
+ p.errorMessage = String(err);
229
+ return false;
230
+ }
231
+ },
232
+ /**
233
+ * Pause a plugin.
234
+ */
235
+ async pause(pluginId) {
236
+ const p = _plugins.get(pluginId);
237
+ if (!p || p.status !== 'active')
238
+ return false;
239
+ try {
240
+ if (p.definition.onPause) {
241
+ await p.definition.onPause();
242
+ }
243
+ p.status = 'paused';
244
+ events_1.events.emit('plugin.paused', 'plugin', { pluginId }, { source: 'plugin' });
245
+ return true;
246
+ }
247
+ catch (err) {
248
+ _log.error('Plugin pause failed', err, { pluginId });
249
+ return false;
250
+ }
251
+ },
252
+ /**
253
+ * Resume a paused plugin.
254
+ */
255
+ async resume(pluginId) {
256
+ const p = _plugins.get(pluginId);
257
+ if (!p || p.status !== 'paused')
258
+ return false;
259
+ try {
260
+ if (p.definition.onResume) {
261
+ await p.definition.onResume();
262
+ }
263
+ p.status = 'active';
264
+ events_1.events.emit('plugin.resumed', 'plugin', { pluginId }, { source: 'plugin' });
265
+ return true;
266
+ }
267
+ catch (err) {
268
+ _log.error('Plugin resume failed', err, { pluginId });
269
+ return false;
270
+ }
271
+ },
272
+ /**
273
+ * Get a plugin's exported API.
274
+ */
275
+ get(pluginId) {
276
+ const p = _plugins.get(pluginId);
277
+ if (!p || p.status !== 'active')
278
+ return null;
279
+ return p.exports;
280
+ },
281
+ /**
282
+ * Get plugin info.
283
+ */
284
+ getInfo(pluginId) {
285
+ const p = _plugins.get(pluginId);
286
+ if (!p)
287
+ return null;
288
+ return {
289
+ id: p.definition.manifest.id,
290
+ name: p.definition.manifest.name,
291
+ version: p.definition.manifest.version,
292
+ status: p.status,
293
+ description: p.definition.manifest.description,
294
+ author: p.definition.manifest.author,
295
+ tags: p.definition.manifest.tags ?? [],
296
+ loadedAt: p.loadedAt ? new Date(p.loadedAt).toISOString() : undefined,
297
+ errorMessage: p.errorMessage,
298
+ };
299
+ },
300
+ /**
301
+ * List all registered plugins.
302
+ */
303
+ list() {
304
+ return [..._plugins.keys()].map((id) => exports.plugin.getInfo(id));
305
+ },
306
+ /**
307
+ * Check if a plugin is registered.
308
+ */
309
+ has(pluginId) {
310
+ return _plugins.has(pluginId);
311
+ },
312
+ /**
313
+ * Check if a plugin is active.
314
+ */
315
+ isActive(pluginId) {
316
+ return _plugins.get(pluginId)?.status === 'active';
317
+ },
318
+ // ── Hooks ──────────────────────────────────────────────────────────────
319
+ /**
320
+ * Call a named hook registered by any plugin. Returns all results.
321
+ */
322
+ async callHook(name, ...args) {
323
+ const handlers = _hooks.get(name) ?? [];
324
+ const results = [];
325
+ for (const handler of handlers) {
326
+ const p = _plugins.get(handler.pluginId);
327
+ if (p?.status !== 'active')
328
+ continue;
329
+ try {
330
+ results.push(await handler.fn(...args));
331
+ }
332
+ catch (err) {
333
+ _log.error(`Hook "${name}" failed`, err, {
334
+ pluginId: handler.pluginId,
335
+ });
336
+ }
337
+ }
338
+ return results;
339
+ },
340
+ /**
341
+ * List all registered hook names.
342
+ */
343
+ listHooks() {
344
+ return [..._hooks.keys()];
345
+ },
346
+ /**
347
+ * Get all handlers for a specific hook.
348
+ */
349
+ getHookHandlers(name) {
350
+ return (_hooks.get(name) ?? []).map((h) => ({ pluginId: h.pluginId }));
351
+ },
352
+ // ── Plugin Builder ─────────────────────────────────────────────────────
353
+ /**
354
+ * Quick plugin definition builder.
355
+ *
356
+ * @example
357
+ * plugin.register(plugin.define({
358
+ * id: 'my-plugin',
359
+ * name: 'My Plugin',
360
+ * version: '1.0.0',
361
+ * }, async (api) => {
362
+ * api.logger.info('Hello from my plugin!');
363
+ * api.registerHook('transform', (data) => data.toUpperCase());
364
+ * return { greet: () => 'hello!' };
365
+ * }));
366
+ */
367
+ define(manifest, init, options) {
368
+ return {
369
+ manifest,
370
+ init,
371
+ destroy: options?.destroy,
372
+ onPause: options?.onPause,
373
+ onResume: options?.onResume,
374
+ };
375
+ },
376
+ /**
377
+ * Get stats about the plugin system.
378
+ */
379
+ getStats() {
380
+ let active = 0, error = 0;
381
+ for (const p of _plugins.values()) {
382
+ if (p.status === 'active')
383
+ active++;
384
+ if (p.status === 'error')
385
+ error++;
386
+ }
387
+ let hooks = 0;
388
+ for (const handlers of _hooks.values()) {
389
+ hooks += handlers.length;
390
+ }
391
+ return {
392
+ totalPlugins: _plugins.size,
393
+ activePlugins: active,
394
+ errorPlugins: error,
395
+ totalHooks: hooks,
396
+ };
397
+ },
398
+ /** Reset the plugin system (deactivate all, clear state) */
399
+ async reset() {
400
+ // Unload in reverse order
401
+ for (const id of [..._loadOrder].reverse()) {
402
+ await exports.plugin.deactivate(id);
403
+ }
404
+ _plugins.clear();
405
+ _hooks.clear();
406
+ _loadOrder.length = 0;
407
+ },
408
+ };
409
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../ts/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ export interface ProcessInfo {
2
+ /** Process ID */
3
+ pid: number;
4
+ /** Process name */
5
+ name: string;
6
+ /** Window title (from the first window found) */
7
+ title: string;
8
+ /** Window ID */
9
+ windowId: number;
10
+ /** Window bounds */
11
+ bounds: {
12
+ x: number;
13
+ y: number;
14
+ width: number;
15
+ height: number;
16
+ };
17
+ /** Is the window visible? */
18
+ isVisible: boolean;
19
+ /** Is the window minimized? */
20
+ isMinimized: boolean;
21
+ }
22
+ export interface ForegroundChange {
23
+ /** Previous foreground process */
24
+ previous?: ProcessInfo;
25
+ /** Current foreground process */
26
+ current: ProcessInfo;
27
+ /** Timestamp */
28
+ timestamp: string;
29
+ }
30
+ export interface ProcessWatcherOptions {
31
+ /** Poll interval in ms. Default: 500 */
32
+ intervalMs?: number;
33
+ /** Track foreground changes? Default: true */
34
+ trackForeground?: boolean;
35
+ }
36
+ export declare const process_manager: {
37
+ /**
38
+ * List all visible processes (via window enumeration).
39
+ */
40
+ list(): ProcessInfo[];
41
+ /**
42
+ * Find processes by name (case-insensitive partial match).
43
+ */
44
+ findByName(name: string): ProcessInfo[];
45
+ /**
46
+ * Find processes by window title (case-insensitive partial match).
47
+ */
48
+ findByTitle(title: string): ProcessInfo[];
49
+ /**
50
+ * Get the currently focused/foreground process.
51
+ */
52
+ getForeground(): ProcessInfo | null;
53
+ /**
54
+ * Focus a process by name (brings its window to front).
55
+ */
56
+ focus(name: string): boolean;
57
+ /**
58
+ * Focus a process by PID.
59
+ */
60
+ focusByPid(pid: number): boolean;
61
+ /**
62
+ * Close a process window by name.
63
+ */
64
+ close(name: string): boolean;
65
+ /**
66
+ * Wait for a process/window to appear.
67
+ */
68
+ waitFor(name: string, timeoutMs?: number, pollIntervalMs?: number): Promise<ProcessInfo | null>;
69
+ /**
70
+ * Wait for a process to close/disappear.
71
+ */
72
+ waitForClose(name: string, timeoutMs?: number, pollIntervalMs?: number): Promise<boolean>;
73
+ /**
74
+ * Launch a process/application.
75
+ */
76
+ launch(command: string, args?: string[]): Promise<number | null>;
77
+ /**
78
+ * Kill a process by PID.
79
+ */
80
+ kill(pid: number, signal?: string): boolean;
81
+ /**
82
+ * Start monitoring foreground process changes.
83
+ */
84
+ startWatching(options?: ProcessWatcherOptions): void;
85
+ /**
86
+ * Stop monitoring.
87
+ */
88
+ stopWatching(): void;
89
+ /** Is the watcher running? */
90
+ isWatching(): boolean;
91
+ /**
92
+ * Get foreground process change history.
93
+ */
94
+ getForegroundHistory(): ForegroundChange[];
95
+ /**
96
+ * Get how long the current foreground process has been active (ms).
97
+ */
98
+ getForegroundDuration(): number;
99
+ /**
100
+ * Wait until a specific process becomes the foreground window.
101
+ */
102
+ waitForForeground(name: string, timeoutMs?: number, pollIntervalMs?: number): Promise<ProcessInfo | null>;
103
+ /** Reset the module */
104
+ reset(): void;
105
+ };
106
+ //# sourceMappingURL=process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../ts/process.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,iBAAiB;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,6BAA6B;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,iCAAiC;IACjC,OAAO,EAAE,WAAW,CAAC;IACrB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAiCD,eAAO,MAAM,eAAe;IAC1B;;OAEG;YACK,WAAW,EAAE;IAqBrB;;OAEG;qBACc,MAAM,GAAG,WAAW,EAAE;IAOvC;;OAEG;uBACgB,MAAM,GAAG,WAAW,EAAE;IAazC;;OAEG;qBACc,WAAW,GAAG,IAAI;IAanC;;OAEG;gBACS,MAAM,GAAG,OAAO;IAsB5B;;OAEG;oBACa,MAAM,GAAG,OAAO;IAehC;;OAEG;gBACS,MAAM,GAAG,OAAO;IAe5B;;OAEG;kBAEK,MAAM,cACD,MAAM,mBACD,MAAM,GACrB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAc9B;;OAEG;uBAEK,MAAM,cACD,MAAM,mBACD,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC;IAWnB;;OAEG;oBACmB,MAAM,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsBtE;;OAEG;cACO,MAAM,WAAU,MAAM,GAAe,OAAO;IAkBtD;;OAEG;4BACqB,qBAAqB,GAAG,IAAI;IAuCpD;;OAEG;oBACa,IAAI;IAQpB,8BAA8B;kBAChB,OAAO;IAIrB;;OAEG;4BACqB,gBAAgB,EAAE;IAI1C;;OAEG;6BACsB,MAAM;IAM/B;;OAEG;4BAEK,MAAM,cACD,MAAM,mBACD,MAAM,GACrB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAc9B,uBAAuB;aACd,IAAI;CAMd,CAAC"}