@overlordai/worker 1.0.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.
Files changed (109) hide show
  1. package/dist/ansi-stripper.d.ts +11 -0
  2. package/dist/ansi-stripper.d.ts.map +1 -0
  3. package/dist/ansi-stripper.js +19 -0
  4. package/dist/ansi-stripper.js.map +1 -0
  5. package/dist/capability-detector.d.ts +5 -0
  6. package/dist/capability-detector.d.ts.map +1 -0
  7. package/dist/capability-detector.js +43 -0
  8. package/dist/capability-detector.js.map +1 -0
  9. package/dist/config.d.ts +27 -0
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/config.js +144 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/executor/base.executor.d.ts +55 -0
  14. package/dist/executor/base.executor.d.ts.map +1 -0
  15. package/dist/executor/base.executor.js +30 -0
  16. package/dist/executor/base.executor.js.map +1 -0
  17. package/dist/executor/claude.executor.d.ts +23 -0
  18. package/dist/executor/claude.executor.d.ts.map +1 -0
  19. package/dist/executor/claude.executor.js +106 -0
  20. package/dist/executor/claude.executor.js.map +1 -0
  21. package/dist/executor/codex.executor.d.ts +20 -0
  22. package/dist/executor/codex.executor.d.ts.map +1 -0
  23. package/dist/executor/codex.executor.js +51 -0
  24. package/dist/executor/codex.executor.js.map +1 -0
  25. package/dist/executor/cursor.executor.d.ts +19 -0
  26. package/dist/executor/cursor.executor.d.ts.map +1 -0
  27. package/dist/executor/cursor.executor.js +46 -0
  28. package/dist/executor/cursor.executor.js.map +1 -0
  29. package/dist/executor/custom.executor.d.ts +21 -0
  30. package/dist/executor/custom.executor.d.ts.map +1 -0
  31. package/dist/executor/custom.executor.js +57 -0
  32. package/dist/executor/custom.executor.js.map +1 -0
  33. package/dist/executor/executor.factory.d.ts +9 -0
  34. package/dist/executor/executor.factory.d.ts.map +1 -0
  35. package/dist/executor/executor.factory.js +29 -0
  36. package/dist/executor/executor.factory.js.map +1 -0
  37. package/dist/git-operations.d.ts +23 -0
  38. package/dist/git-operations.d.ts.map +1 -0
  39. package/dist/git-operations.js +94 -0
  40. package/dist/git-operations.js.map +1 -0
  41. package/dist/hardware.d.ts +14 -0
  42. package/dist/hardware.d.ts.map +1 -0
  43. package/dist/hardware.js +92 -0
  44. package/dist/hardware.js.map +1 -0
  45. package/dist/healthz.d.ts +14 -0
  46. package/dist/healthz.d.ts.map +1 -0
  47. package/dist/healthz.js +104 -0
  48. package/dist/healthz.js.map +1 -0
  49. package/dist/jwt-manager.d.ts +23 -0
  50. package/dist/jwt-manager.d.ts.map +1 -0
  51. package/dist/jwt-manager.js +169 -0
  52. package/dist/jwt-manager.js.map +1 -0
  53. package/dist/lease-manager.d.ts +17 -0
  54. package/dist/lease-manager.d.ts.map +1 -0
  55. package/dist/lease-manager.js +62 -0
  56. package/dist/lease-manager.js.map +1 -0
  57. package/dist/main.d.ts +3 -0
  58. package/dist/main.d.ts.map +1 -0
  59. package/dist/main.js +497 -0
  60. package/dist/main.js.map +1 -0
  61. package/dist/orphan-reaper.d.ts +6 -0
  62. package/dist/orphan-reaper.d.ts.map +1 -0
  63. package/dist/orphan-reaper.js +148 -0
  64. package/dist/orphan-reaper.js.map +1 -0
  65. package/dist/pipeline-parser.d.ts +14 -0
  66. package/dist/pipeline-parser.d.ts.map +1 -0
  67. package/dist/pipeline-parser.js +183 -0
  68. package/dist/pipeline-parser.js.map +1 -0
  69. package/dist/pipeline-runner.d.ts +120 -0
  70. package/dist/pipeline-runner.d.ts.map +1 -0
  71. package/dist/pipeline-runner.js +568 -0
  72. package/dist/pipeline-runner.js.map +1 -0
  73. package/dist/project-mutex.d.ts +14 -0
  74. package/dist/project-mutex.d.ts.map +1 -0
  75. package/dist/project-mutex.js +25 -0
  76. package/dist/project-mutex.js.map +1 -0
  77. package/dist/pty-manager.d.ts +50 -0
  78. package/dist/pty-manager.d.ts.map +1 -0
  79. package/dist/pty-manager.js +203 -0
  80. package/dist/pty-manager.js.map +1 -0
  81. package/dist/ringbuffer.d.ts +22 -0
  82. package/dist/ringbuffer.d.ts.map +1 -0
  83. package/dist/ringbuffer.js +57 -0
  84. package/dist/ringbuffer.js.map +1 -0
  85. package/dist/safe-env.d.ts +6 -0
  86. package/dist/safe-env.d.ts.map +1 -0
  87. package/dist/safe-env.js +19 -0
  88. package/dist/safe-env.js.map +1 -0
  89. package/dist/stage-detector.d.ts +62 -0
  90. package/dist/stage-detector.d.ts.map +1 -0
  91. package/dist/stage-detector.js +140 -0
  92. package/dist/stage-detector.js.map +1 -0
  93. package/dist/task-handler.d.ts +56 -0
  94. package/dist/task-handler.d.ts.map +1 -0
  95. package/dist/task-handler.js +296 -0
  96. package/dist/task-handler.js.map +1 -0
  97. package/dist/tunnel-manager.d.ts +34 -0
  98. package/dist/tunnel-manager.d.ts.map +1 -0
  99. package/dist/tunnel-manager.js +165 -0
  100. package/dist/tunnel-manager.js.map +1 -0
  101. package/dist/worker-client.d.ts +62 -0
  102. package/dist/worker-client.d.ts.map +1 -0
  103. package/dist/worker-client.js +303 -0
  104. package/dist/worker-client.js.map +1 -0
  105. package/dist/workspace-manager.d.ts +51 -0
  106. package/dist/workspace-manager.d.ts.map +1 -0
  107. package/dist/workspace-manager.js +276 -0
  108. package/dist/workspace-manager.js.map +1 -0
  109. package/package.json +30 -0
package/dist/main.js ADDED
@@ -0,0 +1,497 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ const http = __importStar(require("node:http"));
38
+ const https = __importStar(require("node:https"));
39
+ const config_1 = require("./config");
40
+ const hardware_1 = require("./hardware");
41
+ const capability_detector_1 = require("./capability-detector");
42
+ const jwt_manager_1 = require("./jwt-manager");
43
+ const worker_client_1 = require("./worker-client");
44
+ const lease_manager_1 = require("./lease-manager");
45
+ const orphan_reaper_1 = require("./orphan-reaper");
46
+ const task_handler_1 = require("./task-handler");
47
+ const healthz_1 = require("./healthz");
48
+ const workspace_manager_1 = require("./workspace-manager");
49
+ const pty_manager_1 = require("./pty-manager");
50
+ const tunnel_manager_1 = require("./tunnel-manager");
51
+ const protocol_1 = require("@overlordai/protocol");
52
+ const JWT_RENEWAL_CHECK_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes
53
+ /**
54
+ * Tracks whether the worker is in degraded mode.
55
+ * In degraded mode the worker stops accepting new tasks,
56
+ * completes currently running tasks, logs warnings,
57
+ * and continues attempting JWT renewal until it succeeds.
58
+ */
59
+ let degradedMode = false;
60
+ function isDegraded() {
61
+ return degradedMode;
62
+ }
63
+ function enterDegradedMode() {
64
+ if (!degradedMode) {
65
+ degradedMode = true;
66
+ console.warn('[DEGRADED] Worker entering degraded mode: JWT expired or renewal failed. Refusing new tasks.');
67
+ }
68
+ }
69
+ function exitDegradedMode() {
70
+ if (degradedMode) {
71
+ degradedMode = false;
72
+ console.log('[DEGRADED] Worker exiting degraded mode: JWT renewed successfully. Resuming normal operation.');
73
+ }
74
+ }
75
+ async function main() {
76
+ console.log('Overlord Worker starting...');
77
+ // 1. Load configuration
78
+ const config = config_1.WorkerConfig.load();
79
+ // 2. Detect hardware
80
+ const hardware = (0, hardware_1.collectHardwareInfo)();
81
+ console.log(`Hardware: ${hardware.cpuCores} cores, ${hardware.memoryGb.toFixed(1)} GB RAM, os=${hardware.os}`);
82
+ // 3. Detect agent capabilities
83
+ const capabilities = capability_detector_1.CapabilityDetector.detect();
84
+ console.log(`Capabilities: ${capabilities.join(', ') || 'none'}`);
85
+ // 4. JWT manager
86
+ const jwtManager = new jwt_manager_1.JwtManager(config.dataDir);
87
+ const jwtValid = jwtManager.load();
88
+ // 5. Registration flow: if no valid JWT, register with worker token or recover
89
+ if (!jwtValid && config.workerToken) {
90
+ console.log('No valid JWT found, registering with worker token...');
91
+ try {
92
+ const jwt = await registerWorker(hardware, capabilities, config);
93
+ jwtManager.save(jwt);
94
+ console.log('Registration successful, JWT saved');
95
+ }
96
+ catch (err) {
97
+ console.error('Registration failed:', err instanceof Error ? err.message : err);
98
+ // Fall through to recovery if possible
99
+ if (config.machineId && config.recoverySecret) {
100
+ console.log('Attempting recovery with recovery secret...');
101
+ try {
102
+ const jwt = await recoverWorker(config);
103
+ jwtManager.save(jwt);
104
+ console.log('Recovery successful, JWT saved');
105
+ }
106
+ catch (recErr) {
107
+ console.error('Recovery also failed:', recErr instanceof Error ? recErr.message : recErr);
108
+ console.error('Worker cannot start without a valid JWT. Exiting.');
109
+ process.exit(1);
110
+ }
111
+ }
112
+ else {
113
+ console.error('Worker cannot start without a valid JWT. Exiting.');
114
+ process.exit(1);
115
+ }
116
+ }
117
+ }
118
+ else if (!jwtValid && config.machineId && config.recoverySecret) {
119
+ console.log('No valid JWT and no worker token, attempting recovery...');
120
+ try {
121
+ const jwt = await recoverWorker(config);
122
+ jwtManager.save(jwt);
123
+ console.log('Recovery successful, JWT saved');
124
+ }
125
+ catch (err) {
126
+ console.error('Recovery failed:', err instanceof Error ? err.message : err);
127
+ console.error('Worker cannot start without a valid JWT. Exiting.');
128
+ process.exit(1);
129
+ }
130
+ }
131
+ else if (!jwtValid) {
132
+ console.error('No valid JWT, no worker token, and no recovery secret configured. Exiting.');
133
+ process.exit(1);
134
+ }
135
+ // 6. Lease manager
136
+ const leaseManager = new lease_manager_1.LeaseManager();
137
+ // 7. Instantiate WorkspaceManager and PtyManager
138
+ const workspaceManager = new workspace_manager_1.WorkspaceManager({
139
+ workspaceRoot: config.workspaceRoot,
140
+ sshKeyPath: config.sshKeyPath || undefined,
141
+ });
142
+ const ptyManager = new pty_manager_1.PtyManager();
143
+ // 7b. Tunnel manager
144
+ const tunnelManager = new tunnel_manager_1.TunnelManager();
145
+ // 8. Task handler with progress/ack callbacks (wired up after workerClient is created)
146
+ let workerClient = null;
147
+ const taskHandler = new task_handler_1.TaskHandler(config, (taskId, stage, status, message) => {
148
+ workerClient?.sendProgress(taskId, stage, status, message);
149
+ }, (msgId, payload) => {
150
+ workerClient?.sendAck(msgId, payload);
151
+ }, (taskId, stageIndex, mode, timeout, prompt, choices) => {
152
+ workerClient?.sendStageConfirmRequest(taskId, stageIndex, mode, timeout, prompt, choices);
153
+ }, workspaceManager, ptyManager, leaseManager);
154
+ // 9. Handlers for incoming dispatcher frames
155
+ const handlers = {
156
+ onExecute: (frame) => {
157
+ if (isDegraded()) {
158
+ console.warn(`[DEGRADED] Rejecting task ${frame.taskId}: worker is in degraded mode (JWT expired)`);
159
+ workerClient?.sendAck(frame.msgId, { status: 'rejected', reason: 'worker_degraded' });
160
+ return;
161
+ }
162
+ taskHandler.handleExecute(frame);
163
+ },
164
+ onCancel: (frame) => {
165
+ taskHandler.handleCancel(frame);
166
+ },
167
+ onCleanupWorkspace: (frame) => {
168
+ taskHandler.handleCleanupWorkspace(frame);
169
+ },
170
+ onResume: (frame) => {
171
+ taskHandler.handleResume(frame);
172
+ },
173
+ onServerShuttingDown: () => {
174
+ console.log('Server shutting down, will reconnect...');
175
+ },
176
+ onRecoverySecretBootstrap: (frame) => {
177
+ config.persist('OVERLORD_RECOVERY_SECRET', frame.recoverySecret);
178
+ workerClient?.sendRecoverySecretAck();
179
+ console.log('Recovery secret saved');
180
+ },
181
+ onHeartbeatAck: () => {
182
+ leaseManager.refreshLease();
183
+ },
184
+ onStartTunnel: async (frame) => {
185
+ console.log(`Starting tunnel for task ${frame.taskId}, workspace: ${frame.workspacePath}`);
186
+ try {
187
+ const tunnelUrl = await tunnelManager.start(frame.taskId, frame.workspacePath);
188
+ workerClient?.sendAck(frame.msgId, { status: 'ok', tunnelUrl });
189
+ }
190
+ catch (err) {
191
+ const message = err instanceof Error ? err.message : String(err);
192
+ console.error(`Failed to start tunnel for task ${frame.taskId}:`, message);
193
+ workerClient?.sendAck(frame.msgId, { status: 'error', error: message });
194
+ }
195
+ },
196
+ onStopTunnel: async (frame) => {
197
+ console.log(`Stopping tunnel for task ${frame.taskId}, reason: ${frame.reason}`);
198
+ try {
199
+ await tunnelManager.stop(frame.taskId);
200
+ workerClient?.sendAck(frame.msgId, { status: 'ok' });
201
+ }
202
+ catch (err) {
203
+ const message = err instanceof Error ? err.message : String(err);
204
+ console.error(`Failed to stop tunnel for task ${frame.taskId}:`, message);
205
+ workerClient?.sendAck(frame.msgId, { status: 'error', error: message });
206
+ }
207
+ },
208
+ onStageConfirmResponse: (frame) => {
209
+ taskHandler.handleStageConfirmResponse(frame.taskId, frame.stageIndex, frame.result);
210
+ },
211
+ onConnected: () => {
212
+ // Send reconnect frame with active task statuses
213
+ const statuses = taskHandler.getActiveTaskStatuses();
214
+ if (statuses.length > 0) {
215
+ workerClient?.sendReconnect(statuses);
216
+ }
217
+ },
218
+ onDisconnected: () => {
219
+ console.log('Disconnected from dispatcher');
220
+ },
221
+ };
222
+ // 10. Create worker client
223
+ workerClient = new worker_client_1.WorkerClient({
224
+ overlordHost: config.overlordHost,
225
+ machineId: config.machineId,
226
+ getToken: () => jwtManager.getToken(),
227
+ getCapabilities: () => capabilities,
228
+ getActiveSlots: () => taskHandler.getActiveTaskCount(),
229
+ }, handlers);
230
+ // 11. Start lease manager
231
+ leaseManager.start();
232
+ // 11b. Wire up lease event listeners
233
+ leaseManager.on('leaseExpired', () => {
234
+ console.warn('[LEASE] Execution lease expired — pipeline will suspend before irreversible stages');
235
+ });
236
+ leaseManager.on('leaseRestored', () => {
237
+ console.log('[LEASE] Execution lease restored');
238
+ });
239
+ // 12. Health check server
240
+ const healthzServer = new healthz_1.HealthzServer(() => ({
241
+ wsConnected: workerClient?.isConnected() ?? false,
242
+ activeTasks: taskHandler.getActiveTaskCount(),
243
+ jwtRemainingMs: (() => {
244
+ const payload = jwtManager.getPayload();
245
+ return payload ? (payload.exp * 1000 - Date.now()) : 0;
246
+ })(),
247
+ }));
248
+ healthzServer.start();
249
+ // 13. Reap orphaned processes
250
+ orphan_reaper_1.OrphanReaper.reap();
251
+ // 14. JWT renewal timer: check every 5 min, renew when <= 24h remaining
252
+ // Enter degraded mode if JWT is expired and renewal fails;
253
+ // exit degraded mode once renewal succeeds.
254
+ const jwtRenewalTimer = setInterval(async () => {
255
+ try {
256
+ if (jwtManager.needsRenewal()) {
257
+ console.log('JWT nearing expiry, renewing...');
258
+ await jwtManager.refresh(config.overlordHost, config.machineId);
259
+ console.log('JWT renewed successfully');
260
+ exitDegradedMode();
261
+ }
262
+ else if (jwtManager.isExpired()) {
263
+ // JWT already expired but needsRenewal didn't trigger (shouldn't happen, defensive)
264
+ enterDegradedMode();
265
+ }
266
+ }
267
+ catch (err) {
268
+ console.error('JWT renewal failed:', err instanceof Error ? err.message : err);
269
+ if (jwtManager.isExpired()) {
270
+ // Attempt re-registration or recovery before entering degraded mode
271
+ if (config.workerToken) {
272
+ try {
273
+ console.log('JWT expired and refresh failed, attempting re-registration...');
274
+ const jwt = await registerWorker(hardware, capabilities, config);
275
+ jwtManager.save(jwt);
276
+ console.log('Re-registration successful, JWT saved');
277
+ exitDegradedMode();
278
+ }
279
+ catch (regErr) {
280
+ console.error('Re-registration also failed:', regErr instanceof Error ? regErr.message : regErr);
281
+ // Try recovery as last resort
282
+ if (config.machineId && config.recoverySecret) {
283
+ try {
284
+ console.log('Attempting recovery with recovery secret...');
285
+ const jwt = await recoverWorker(config);
286
+ jwtManager.save(jwt);
287
+ console.log('Recovery successful, JWT saved');
288
+ exitDegradedMode();
289
+ }
290
+ catch (recErr) {
291
+ console.error('Recovery also failed:', recErr instanceof Error ? recErr.message : recErr);
292
+ enterDegradedMode();
293
+ }
294
+ }
295
+ else {
296
+ enterDegradedMode();
297
+ }
298
+ }
299
+ }
300
+ else if (config.machineId && config.recoverySecret) {
301
+ try {
302
+ console.log('JWT expired and refresh failed, attempting recovery...');
303
+ const jwt = await recoverWorker(config);
304
+ jwtManager.save(jwt);
305
+ console.log('Recovery successful, JWT saved');
306
+ exitDegradedMode();
307
+ }
308
+ catch (recErr) {
309
+ console.error('Recovery failed:', recErr instanceof Error ? recErr.message : recErr);
310
+ enterDegradedMode();
311
+ }
312
+ }
313
+ else {
314
+ enterDegradedMode();
315
+ }
316
+ }
317
+ else {
318
+ console.warn('JWT renewal failed but token is still valid; will retry next cycle');
319
+ }
320
+ }
321
+ }, JWT_RENEWAL_CHECK_INTERVAL_MS);
322
+ if (jwtRenewalTimer.unref) {
323
+ jwtRenewalTimer.unref();
324
+ }
325
+ // 15. Periodic expired workspace cleanup (every hour)
326
+ const workspaceCleanupTimer = setInterval(async () => {
327
+ try {
328
+ await workspaceManager.cleanupExpired(new Set(taskHandler.getActiveTaskIds()));
329
+ }
330
+ catch (err) {
331
+ console.error('Expired workspace cleanup failed:', err instanceof Error ? err.message : err);
332
+ }
333
+ }, 60 * 60 * 1000);
334
+ if (workspaceCleanupTimer.unref) {
335
+ workspaceCleanupTimer.unref();
336
+ }
337
+ // 16. Connect to dispatcher
338
+ workerClient.connect();
339
+ console.log('Worker started');
340
+ // Graceful shutdown
341
+ const shutdown = async (signal) => {
342
+ console.log(`Received ${signal}, draining...`);
343
+ clearInterval(jwtRenewalTimer);
344
+ clearInterval(workspaceCleanupTimer);
345
+ // Stop accepting new tasks
346
+ workerClient?.disconnect();
347
+ // Wait for active tasks to finish (with 30s timeout)
348
+ const drainTimeout = setTimeout(() => {
349
+ console.warn('Drain timeout reached, forcing exit');
350
+ process.exit(1);
351
+ }, 30_000);
352
+ if (drainTimeout.unref)
353
+ drainTimeout.unref();
354
+ await taskHandler.waitForActiveTasks();
355
+ clearTimeout(drainTimeout);
356
+ // Cleanup
357
+ tunnelManager.stopAll();
358
+ leaseManager.stop();
359
+ healthzServer.stop();
360
+ process.exit(0);
361
+ };
362
+ process.on('SIGINT', () => { shutdown('SIGINT').catch(err => { console.error('Shutdown error:', err); process.exit(1); }); });
363
+ process.on('SIGTERM', () => { shutdown('SIGTERM').catch(err => { console.error('Shutdown error:', err); process.exit(1); }); });
364
+ }
365
+ /**
366
+ * Register this worker with the Overlord server using the worker token.
367
+ * Returns the JWT on success.
368
+ */
369
+ async function registerWorker(hardware, capabilities, config) {
370
+ const os = await import('node:os');
371
+ const payload = {
372
+ token: config.workerToken,
373
+ machineName: config.machineName || os.hostname(),
374
+ host: os.hostname(),
375
+ port: 0,
376
+ os: hardware.os,
377
+ cpuCores: hardware.cpuCores,
378
+ memoryGb: hardware.memoryGb,
379
+ capabilities,
380
+ tags: [],
381
+ protocolVersion: protocol_1.PROTOCOL_VERSION,
382
+ };
383
+ if (config.machineId) {
384
+ payload.machineId = config.machineId;
385
+ }
386
+ const body = JSON.stringify(payload);
387
+ const url = new URL('/api/workers/register', config.overlordHost);
388
+ return new Promise((resolve, reject) => {
389
+ const mod = url.protocol === 'https:' ? https : http;
390
+ const req = mod.request({
391
+ hostname: url.hostname,
392
+ port: url.port,
393
+ path: url.pathname,
394
+ method: 'POST',
395
+ headers: {
396
+ 'Content-Type': 'application/json',
397
+ 'Content-Length': Buffer.byteLength(body).toString(),
398
+ },
399
+ }, (res) => {
400
+ const chunks = [];
401
+ res.on('data', (chunk) => chunks.push(chunk));
402
+ res.on('end', () => {
403
+ const responseBody = Buffer.concat(chunks).toString('utf-8');
404
+ if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
405
+ try {
406
+ const data = JSON.parse(responseBody);
407
+ // Persist machineId from registration response
408
+ if (data.machineId) {
409
+ config.persist('OVERLORD_MACHINE_ID', data.machineId);
410
+ }
411
+ // Persist recoverySecret if provided
412
+ if (data.recoverySecret) {
413
+ config.persist('OVERLORD_RECOVERY_SECRET', data.recoverySecret);
414
+ }
415
+ resolve(data.jwt);
416
+ }
417
+ catch {
418
+ reject(new Error(`Invalid registration response: ${responseBody}`));
419
+ }
420
+ }
421
+ else {
422
+ reject(new Error(`Registration failed: HTTP ${res.statusCode} - ${responseBody}`));
423
+ }
424
+ });
425
+ });
426
+ req.setTimeout(30_000, () => {
427
+ req.destroy();
428
+ reject(new Error('Request timed out'));
429
+ });
430
+ req.on('error', reject);
431
+ req.write(body);
432
+ req.end();
433
+ });
434
+ }
435
+ /**
436
+ * Recover this worker using the recovery secret when JWT is expired
437
+ * and the enrollment token has been consumed.
438
+ * Returns the new JWT on success.
439
+ */
440
+ async function recoverWorker(config) {
441
+ const os = await import('node:os');
442
+ const payload = JSON.stringify({
443
+ machineId: config.machineId,
444
+ machineName: config.machineName || os.hostname(),
445
+ recoverySecret: config.recoverySecret,
446
+ });
447
+ const url = new URL('/api/workers/recover', config.overlordHost);
448
+ return new Promise((resolve, reject) => {
449
+ const mod = url.protocol === 'https:' ? https : http;
450
+ const req = mod.request({
451
+ hostname: url.hostname,
452
+ port: url.port,
453
+ path: url.pathname,
454
+ method: 'POST',
455
+ headers: {
456
+ 'Content-Type': 'application/json',
457
+ 'Content-Length': Buffer.byteLength(payload).toString(),
458
+ },
459
+ }, (res) => {
460
+ const chunks = [];
461
+ res.on('data', (chunk) => chunks.push(chunk));
462
+ res.on('end', () => {
463
+ const responseBody = Buffer.concat(chunks).toString('utf-8');
464
+ if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
465
+ try {
466
+ const data = JSON.parse(responseBody);
467
+ if (data.machineId) {
468
+ config.persist('OVERLORD_MACHINE_ID', data.machineId);
469
+ }
470
+ if (data.recoverySecret) {
471
+ config.persist('OVERLORD_RECOVERY_SECRET', data.recoverySecret);
472
+ }
473
+ resolve(data.jwt);
474
+ }
475
+ catch {
476
+ reject(new Error(`Invalid recovery response: ${responseBody}`));
477
+ }
478
+ }
479
+ else {
480
+ reject(new Error(`Recovery failed: HTTP ${res.statusCode} - ${responseBody}`));
481
+ }
482
+ });
483
+ });
484
+ req.setTimeout(30_000, () => {
485
+ req.destroy();
486
+ reject(new Error('Request timed out'));
487
+ });
488
+ req.on('error', reject);
489
+ req.write(payload);
490
+ req.end();
491
+ });
492
+ }
493
+ main().catch((err) => {
494
+ console.error('Worker fatal error:', err);
495
+ process.exit(1);
496
+ });
497
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAAkC;AAClC,kDAAoC;AACpC,qCAAwC;AACxC,yCAAiD;AACjD,+DAA2D;AAC3D,+CAA2C;AAC3C,mDAA+C;AAE/C,mDAA+C;AAC/C,mDAA+C;AAC/C,iDAA6C;AAC7C,uCAA0C;AAC1C,2DAAuD;AACvD,+CAA2C;AAC3C,qDAAiD;AACjD,mDAAwD;AAGxD,MAAM,6BAA6B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAEjE;;;;;GAKG;AACH,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB,SAAS,UAAU;IACjB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,IAAI,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;IAC/G,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,YAAY,EAAE,CAAC;QACjB,YAAY,GAAG,KAAK,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,+FAA+F,CAAC,CAAC;IAC/G,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,wBAAwB;IACxB,MAAM,MAAM,GAAG,qBAAY,CAAC,IAAI,EAAE,CAAC;IAEnC,qBAAqB;IACrB,MAAM,QAAQ,GAAG,IAAA,8BAAmB,GAAE,CAAC;IACvC,OAAO,CAAC,GAAG,CACT,aAAa,QAAQ,CAAC,QAAQ,WAAW,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,QAAQ,CAAC,EAAE,EAAE,CAClG,CAAC;IAEF,+BAA+B;IAC/B,MAAM,YAAY,GAAG,wCAAkB,CAAC,MAAM,EAAE,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;IAElE,iBAAiB;IACjB,MAAM,UAAU,GAAG,IAAI,wBAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAEnC,+EAA+E;IAC/E,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YACjE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChF,uCAAuC;YACvC,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;gBAC3D,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;oBACxC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;gBAChD,CAAC;gBAAC,OAAO,MAAM,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBAC1F,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;oBACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACxE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;YACxC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,mBAAmB;IACnB,MAAM,YAAY,GAAG,IAAI,4BAAY,EAAE,CAAC;IAExC,iDAAiD;IACjD,MAAM,gBAAgB,GAAG,IAAI,oCAAgB,CAAC;QAC5C,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,SAAS;KAC3C,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,wBAAU,EAAE,CAAC;IAEpC,qBAAqB;IACrB,MAAM,aAAa,GAAG,IAAI,8BAAa,EAAE,CAAC;IAE1C,uFAAuF;IACvF,IAAI,YAAY,GAAwB,IAAI,CAAC;IAE7C,MAAM,WAAW,GAAG,IAAI,0BAAW,CACjC,MAAM,EACN,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;QACjC,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC,EACD,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACjB,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,EACD,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;QACrD,YAAY,EAAE,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5F,CAAC,EACD,gBAAgB,EAChB,UAAU,EACV,YAAY,CACb,CAAC;IAEF,6CAA6C;IAC7C,MAAM,QAAQ,GAAyB;QACrC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,IAAI,UAAU,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,MAAM,4CAA4C,CAAC,CAAC;gBACpG,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACtF,OAAO;YACT,CAAC;YACD,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAClB,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5B,WAAW,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAClB,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,oBAAoB,EAAE,GAAG,EAAE;YACzB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACzD,CAAC;QACD,yBAAyB,EAAE,CAAC,KAAK,EAAE,EAAE;YACnC,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;YACjE,YAAY,EAAE,qBAAqB,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACvC,CAAC;QACD,cAAc,EAAE,GAAG,EAAE;YACnB,YAAY,CAAC,YAAY,EAAE,CAAC;QAC9B,CAAC;QACD,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7B,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,CAAC,MAAM,gBAAgB,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;YAC3F,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC/E,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAClE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,OAAO,CAAC,KAAK,CAAC,mCAAmC,KAAK,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC;gBAC3E,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QACD,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,CAAC,MAAM,aAAa,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACjF,IAAI,CAAC;gBACH,MAAM,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACvC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,OAAO,CAAC,KAAK,CAAC,kCAAkC,KAAK,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC;gBAC1E,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QACD,sBAAsB,EAAE,CAAC,KAAK,EAAE,EAAE;YAChC,WAAW,CAAC,0BAA0B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvF,CAAC;QACD,WAAW,EAAE,GAAG,EAAE;YAChB,iDAAiD;YACjD,MAAM,QAAQ,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;YACrD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,YAAY,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QACD,cAAc,EAAE,GAAG,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC;IAEF,2BAA2B;IAC3B,YAAY,GAAG,IAAI,4BAAY,CAC7B;QACE,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE;QACrC,eAAe,EAAE,GAAG,EAAE,CAAC,YAAY;QACnC,cAAc,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,kBAAkB,EAAE;KACvD,EACD,QAAQ,CACT,CAAC;IAEF,0BAA0B;IAC1B,YAAY,CAAC,KAAK,EAAE,CAAC;IAErB,qCAAqC;IACrC,YAAY,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACnC,OAAO,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACrG,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACpC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,MAAM,aAAa,GAAG,IAAI,uBAAa,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,KAAK;QACjD,WAAW,EAAE,WAAW,CAAC,kBAAkB,EAAE;QAC7C,cAAc,EAAE,CAAC,GAAG,EAAE;YACpB,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;YACxC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,EAAE;KACL,CAAC,CAAC,CAAC;IACJ,aAAa,CAAC,KAAK,EAAE,CAAC;IAEtB,8BAA8B;IAC9B,4BAAY,CAAC,IAAI,EAAE,CAAC;IAEpB,wEAAwE;IACxE,+DAA+D;IAC/D,gDAAgD;IAChD,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC7C,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;gBAC/C,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;gBAChE,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;gBACxC,gBAAgB,EAAE,CAAC;YACrB,CAAC;iBAAM,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC;gBAClC,oFAAoF;gBACpF,iBAAiB,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/E,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC3B,oEAAoE;gBACpE,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;oBACvB,IAAI,CAAC;wBACH,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;wBAC7E,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;wBACjE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACrB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;wBACrD,gBAAgB,EAAE,CAAC;oBACrB,CAAC;oBAAC,OAAO,MAAM,EAAE,CAAC;wBAChB,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;wBACjG,8BAA8B;wBAC9B,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;4BAC9C,IAAI,CAAC;gCACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;gCAC3D,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;gCACxC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gCACrB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;gCAC9C,gBAAgB,EAAE,CAAC;4BACrB,CAAC;4BAAC,OAAO,MAAM,EAAE,CAAC;gCAChB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gCAC1F,iBAAiB,EAAE,CAAC;4BACtB,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,iBAAiB,EAAE,CAAC;wBACtB,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;oBACrD,IAAI,CAAC;wBACH,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;wBACtE,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;wBACxC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACrB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;wBAC9C,gBAAgB,EAAE,CAAC;oBACrB,CAAC;oBAAC,OAAO,MAAM,EAAE,CAAC;wBAChB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;wBACrF,iBAAiB,EAAE,CAAC;oBACtB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,iBAAiB,EAAE,CAAC;gBACtB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;IACH,CAAC,EAAE,6BAA6B,CAAC,CAAC;IAClC,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;QAC1B,eAAe,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,sDAAsD;IACtD,MAAM,qBAAqB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACnD,IAAI,CAAC;YACH,MAAM,gBAAgB,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACnB,IAAI,qBAAqB,CAAC,KAAK,EAAE,CAAC;QAChC,qBAAqB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,4BAA4B;IAC5B,YAAY,CAAC,OAAO,EAAE,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE9B,oBAAoB;IACpB,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;QACxC,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,eAAe,CAAC,CAAC;QAC/C,aAAa,CAAC,eAAe,CAAC,CAAC;QAC/B,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAErC,2BAA2B;QAC3B,YAAY,EAAE,UAAU,EAAE,CAAC;QAE3B,qDAAqD;QACrD,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,IAAI,YAAY,CAAC,KAAK;YAAE,YAAY,CAAC,KAAK,EAAE,CAAC;QAE7C,MAAM,WAAW,CAAC,kBAAkB,EAAE,CAAC;QACvC,YAAY,CAAC,YAAY,CAAC,CAAC;QAE3B,UAAU;QACV,aAAa,CAAC,OAAO,EAAE,CAAC;QACxB,YAAY,CAAC,IAAI,EAAE,CAAC;QACpB,aAAa,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9H,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClI,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAC3B,QAAsB,EACtB,YAAsB,EACtB,MAAoB;IAEpB,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,OAAO,GAA4B;QACvC,KAAK,EAAE,MAAM,CAAC,WAAW;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,QAAQ,EAAE;QAChD,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE;QACnB,IAAI,EAAE,CAAC;QACP,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,YAAY;QACZ,IAAI,EAAE,EAAE;QACR,eAAe,EAAE,2BAAgB;KAClC,CAAC;IACF,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACvC,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAErC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAElE,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CACrB;YACE,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,QAAQ;YAClB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;aACrD;SACF,EACD,CAAC,GAAG,EAAE,EAAE;YACN,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;oBACpE,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAgE,CAAC;wBACrG,+CAA+C;wBAC/C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;4BACnB,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;wBACxD,CAAC;wBACD,qCAAqC;wBACrC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;4BACxB,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;wBAClE,CAAC;wBACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpB,CAAC;oBAAC,MAAM,CAAC;wBACP,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC,CAAC;oBACtE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,UAAU,MAAM,YAAY,EAAE,CAAC,CAAC,CAAC;gBACrF,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QACF,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE;YAC1B,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,aAAa,CAAC,MAAoB;IAC/C,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,QAAQ,EAAE;QAChD,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAEjE,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CACrB;YACE,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,QAAQ;YAClB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE;aACxD;SACF,EACD,CAAC,GAAG,EAAE,EAAE;YACN,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;oBACpE,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAgE,CAAC;wBACrG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;4BACnB,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;wBACxD,CAAC;wBACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;4BACxB,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;wBAClE,CAAC;wBACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpB,CAAC;oBAAC,MAAM,CAAC;wBACP,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,UAAU,MAAM,YAAY,EAAE,CAAC,CAAC,CAAC;gBACjF,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QACF,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE;YAC1B,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare class OrphanReaper {
2
+ static reap(): void;
3
+ private static reapLinux;
4
+ private static reapDarwin;
5
+ }
6
+ //# sourceMappingURL=orphan-reaper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orphan-reaper.d.ts","sourceRoot":"","sources":["../src/orphan-reaper.ts"],"names":[],"mappings":"AAQA,qBAAa,YAAY;IACvB,MAAM,CAAC,IAAI,IAAI,IAAI;IAiBnB,OAAO,CAAC,MAAM,CAAC,SAAS;IAmCxB,OAAO,CAAC,MAAM,CAAC,UAAU;CAiD1B"}