@overlordai/worker 1.0.53 → 1.0.55

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/clean-output-buffer.d.ts +21 -0
  2. package/dist/clean-output-buffer.d.ts.map +1 -0
  3. package/dist/clean-output-buffer.js +70 -0
  4. package/dist/clean-output-buffer.js.map +1 -0
  5. package/dist/config.d.ts +4 -4
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +54 -39
  8. package/dist/config.js.map +1 -1
  9. package/dist/executor/base.executor.d.ts +30 -11
  10. package/dist/executor/base.executor.d.ts.map +1 -1
  11. package/dist/executor/base.executor.js +25 -2
  12. package/dist/executor/base.executor.js.map +1 -1
  13. package/dist/executor/claude.executor.d.ts +7 -8
  14. package/dist/executor/claude.executor.d.ts.map +1 -1
  15. package/dist/executor/claude.executor.js +36 -26
  16. package/dist/executor/claude.executor.js.map +1 -1
  17. package/dist/executor/codex.executor.d.ts +7 -8
  18. package/dist/executor/codex.executor.d.ts.map +1 -1
  19. package/dist/executor/codex.executor.js +64 -26
  20. package/dist/executor/codex.executor.js.map +1 -1
  21. package/dist/executor/cursor.executor.d.ts +6 -7
  22. package/dist/executor/cursor.executor.d.ts.map +1 -1
  23. package/dist/executor/cursor.executor.js +12 -22
  24. package/dist/executor/cursor.executor.js.map +1 -1
  25. package/dist/executor/custom.executor.d.ts +15 -7
  26. package/dist/executor/custom.executor.d.ts.map +1 -1
  27. package/dist/executor/custom.executor.js +25 -28
  28. package/dist/executor/custom.executor.js.map +1 -1
  29. package/dist/git-operations.d.ts +14 -12
  30. package/dist/git-operations.d.ts.map +1 -1
  31. package/dist/git-operations.js +50 -98
  32. package/dist/git-operations.js.map +1 -1
  33. package/dist/git-token-helper.d.ts +27 -0
  34. package/dist/git-token-helper.d.ts.map +1 -0
  35. package/dist/git-token-helper.js +114 -0
  36. package/dist/git-token-helper.js.map +1 -0
  37. package/dist/healthz.d.ts.map +1 -1
  38. package/dist/healthz.js +3 -7
  39. package/dist/healthz.js.map +1 -1
  40. package/dist/http-post.d.ts +2 -0
  41. package/dist/http-post.d.ts.map +1 -0
  42. package/dist/http-post.js +74 -0
  43. package/dist/http-post.js.map +1 -0
  44. package/dist/jwt-manager.d.ts +2 -3
  45. package/dist/jwt-manager.d.ts.map +1 -1
  46. package/dist/jwt-manager.js +5 -43
  47. package/dist/jwt-manager.js.map +1 -1
  48. package/dist/lease-manager.d.ts +4 -1
  49. package/dist/lease-manager.d.ts.map +1 -1
  50. package/dist/lease-manager.js +2 -6
  51. package/dist/lease-manager.js.map +1 -1
  52. package/dist/main.js +147 -277
  53. package/dist/main.js.map +1 -1
  54. package/dist/orphan-reaper.d.ts +1 -1
  55. package/dist/orphan-reaper.d.ts.map +1 -1
  56. package/dist/orphan-reaper.js +46 -30
  57. package/dist/orphan-reaper.js.map +1 -1
  58. package/dist/pipeline-compiler.d.ts +10 -0
  59. package/dist/pipeline-compiler.d.ts.map +1 -0
  60. package/dist/pipeline-compiler.js +179 -0
  61. package/dist/pipeline-compiler.js.map +1 -0
  62. package/dist/pipeline-parser.d.ts.map +1 -1
  63. package/dist/pipeline-parser.js +4 -3
  64. package/dist/pipeline-parser.js.map +1 -1
  65. package/dist/pipeline-runner.d.ts +1 -0
  66. package/dist/pipeline-runner.d.ts.map +1 -1
  67. package/dist/pipeline-runner.js +37 -27
  68. package/dist/pipeline-runner.js.map +1 -1
  69. package/dist/project-mutex.d.ts +1 -0
  70. package/dist/project-mutex.d.ts.map +1 -1
  71. package/dist/project-mutex.js +9 -1
  72. package/dist/project-mutex.js.map +1 -1
  73. package/dist/pty-manager.d.ts +2 -0
  74. package/dist/pty-manager.d.ts.map +1 -1
  75. package/dist/pty-manager.js +68 -42
  76. package/dist/pty-manager.js.map +1 -1
  77. package/dist/pty-relay-client.d.ts +38 -0
  78. package/dist/pty-relay-client.d.ts.map +1 -0
  79. package/dist/pty-relay-client.js +146 -0
  80. package/dist/pty-relay-client.js.map +1 -0
  81. package/dist/pty-stdin-writer.d.ts +11 -0
  82. package/dist/pty-stdin-writer.d.ts.map +1 -0
  83. package/dist/pty-stdin-writer.js +22 -0
  84. package/dist/pty-stdin-writer.js.map +1 -0
  85. package/dist/ringbuffer.d.ts +2 -0
  86. package/dist/ringbuffer.d.ts.map +1 -1
  87. package/dist/ringbuffer.js +10 -1
  88. package/dist/ringbuffer.js.map +1 -1
  89. package/dist/stage-monitor.d.ts +72 -0
  90. package/dist/stage-monitor.d.ts.map +1 -0
  91. package/dist/stage-monitor.js +234 -0
  92. package/dist/stage-monitor.js.map +1 -0
  93. package/dist/task-handler.d.ts +18 -12
  94. package/dist/task-handler.d.ts.map +1 -1
  95. package/dist/task-handler.js +298 -78
  96. package/dist/task-handler.js.map +1 -1
  97. package/dist/tunnel-manager.d.ts +16 -6
  98. package/dist/tunnel-manager.d.ts.map +1 -1
  99. package/dist/tunnel-manager.js +117 -16
  100. package/dist/tunnel-manager.js.map +1 -1
  101. package/dist/worker-client.d.ts +16 -7
  102. package/dist/worker-client.d.ts.map +1 -1
  103. package/dist/worker-client.js +40 -52
  104. package/dist/worker-client.js.map +1 -1
  105. package/dist/workspace-manager.d.ts +1 -0
  106. package/dist/workspace-manager.d.ts.map +1 -1
  107. package/dist/workspace-manager.js +102 -82
  108. package/dist/workspace-manager.js.map +1 -1
  109. package/package.json +4 -2
package/dist/main.js CHANGED
@@ -1,44 +1,11 @@
1
1
  #!/usr/bin/env node
2
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
3
  Object.defineProperty(exports, "__esModule", { value: true });
37
- const http = __importStar(require("node:http"));
38
- const https = __importStar(require("node:https"));
4
+ const protocol_1 = require("@overlordai/protocol");
39
5
  const config_1 = require("./config");
40
6
  const hardware_1 = require("./hardware");
41
7
  const capability_detector_1 = require("./capability-detector");
8
+ const http_post_1 = require("./http-post");
42
9
  const jwt_manager_1 = require("./jwt-manager");
43
10
  const worker_client_1 = require("./worker-client");
44
11
  const lease_manager_1 = require("./lease-manager");
@@ -48,30 +15,49 @@ const healthz_1 = require("./healthz");
48
15
  const workspace_manager_1 = require("./workspace-manager");
49
16
  const pty_manager_1 = require("./pty-manager");
50
17
  const tunnel_manager_1 = require("./tunnel-manager");
51
- const protocol_1 = require("@overlordai/protocol");
52
18
  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;
19
+ let degraded = false;
20
+ function setDegraded(value) {
21
+ if (degraded === value)
22
+ return;
23
+ degraded = value;
24
+ if (value) {
66
25
  console.warn('[DEGRADED] Worker entering degraded mode: JWT expired or renewal failed. Refusing new tasks.');
67
26
  }
68
- }
69
- function exitDegradedMode() {
70
- if (degradedMode) {
71
- degradedMode = false;
27
+ else {
72
28
  console.log('[DEGRADED] Worker exiting degraded mode: JWT renewed successfully. Resuming normal operation.');
73
29
  }
74
30
  }
31
+ /**
32
+ * Attempt to acquire a JWT via registration (if workerToken is available)
33
+ * or recovery (if workerId + recoverySecret are available).
34
+ * Returns the JWT string on success, or null if all methods fail.
35
+ */
36
+ async function acquireJwt(config, hardware, capabilities) {
37
+ if (config.workerToken) {
38
+ console.log('Attempting registration with worker token...');
39
+ try {
40
+ const jwt = await registerWorker(hardware, capabilities, config);
41
+ console.log('Registration successful, JWT saved');
42
+ return jwt;
43
+ }
44
+ catch (err) {
45
+ console.error('Registration failed:', (0, protocol_1.getErrorMessage)(err));
46
+ }
47
+ }
48
+ if (config.workerId && config.recoverySecret) {
49
+ console.log('Attempting recovery with recovery secret...');
50
+ try {
51
+ const jwt = await recoverWorker(config);
52
+ console.log('Recovery successful, JWT saved');
53
+ return jwt;
54
+ }
55
+ catch (err) {
56
+ console.error('Recovery failed:', (0, protocol_1.getErrorMessage)(err));
57
+ }
58
+ }
59
+ return null;
60
+ }
75
61
  async function main() {
76
62
  // eslint-disable-next-line @typescript-eslint/no-require-imports
77
63
  const { version } = require('../package.json');
@@ -88,51 +74,13 @@ async function main() {
88
74
  const jwtManager = new jwt_manager_1.JwtManager(config.dataDir);
89
75
  const jwtValid = jwtManager.load();
90
76
  // 5. Registration flow: if no valid JWT, register with worker token or recover
91
- if (!jwtValid && config.workerToken) {
92
- console.log('No valid JWT found, registering with worker token...');
93
- try {
94
- const jwt = await registerWorker(hardware, capabilities, config);
95
- jwtManager.save(jwt);
96
- console.log('Registration successful, JWT saved');
97
- }
98
- catch (err) {
99
- console.error('Registration failed:', err instanceof Error ? err.message : err);
100
- // Fall through to recovery if possible
101
- if (config.machineId && config.recoverySecret) {
102
- console.log('Attempting recovery with recovery secret...');
103
- try {
104
- const jwt = await recoverWorker(config);
105
- jwtManager.save(jwt);
106
- console.log('Recovery successful, JWT saved');
107
- }
108
- catch (recErr) {
109
- console.error('Recovery also failed:', recErr instanceof Error ? recErr.message : recErr);
110
- console.error('Worker cannot start without a valid JWT. Exiting.');
111
- process.exit(1);
112
- }
113
- }
114
- else {
115
- console.error('Worker cannot start without a valid JWT. Exiting.');
116
- process.exit(1);
117
- }
118
- }
119
- }
120
- else if (!jwtValid && config.machineId && config.recoverySecret) {
121
- console.log('No valid JWT and no worker token, attempting recovery...');
122
- try {
123
- const jwt = await recoverWorker(config);
124
- jwtManager.save(jwt);
125
- console.log('Recovery successful, JWT saved');
126
- }
127
- catch (err) {
128
- console.error('Recovery failed:', err instanceof Error ? err.message : err);
77
+ if (!jwtValid) {
78
+ const jwt = await acquireJwt(config, hardware, capabilities);
79
+ if (!jwt) {
129
80
  console.error('Worker cannot start without a valid JWT. Exiting.');
130
81
  process.exit(1);
131
82
  }
132
- }
133
- else if (!jwtValid) {
134
- console.error('No valid JWT, no worker token, and no recovery secret configured. Exiting.');
135
- process.exit(1);
83
+ jwtManager.save(jwt);
136
84
  }
137
85
  // 6. Lease manager
138
86
  const leaseManager = new lease_manager_1.LeaseManager();
@@ -150,28 +98,22 @@ async function main() {
150
98
  workerClient?.sendProgress(taskId, stage, status, message);
151
99
  }, (msgId, payload) => {
152
100
  workerClient?.sendAck(msgId, payload);
153
- }, (taskId, stageIndex, mode, timeout, prompt, choices) => {
154
- workerClient?.sendStageConfirmRequest(taskId, stageIndex, mode, timeout, prompt, choices);
155
- }, workspaceManager, ptyManager, leaseManager);
101
+ }, (taskId, stageName, timeout, prompt) => {
102
+ workerClient?.sendStageConfirmRequest(taskId, stageName, timeout, prompt);
103
+ }, workspaceManager, ptyManager, leaseManager, () => jwtManager.getToken());
156
104
  // 9. Handlers for incoming dispatcher frames
157
105
  const handlers = {
158
106
  onExecute: (frame) => {
159
- if (isDegraded()) {
107
+ if (degraded) {
160
108
  console.warn(`[DEGRADED] Rejecting task ${frame.taskId}: worker is in degraded mode (JWT expired)`);
161
109
  workerClient?.sendAck(frame.msgId, { status: 'rejected', reason: 'worker_degraded' });
162
110
  return;
163
111
  }
164
112
  taskHandler.handleExecute(frame);
165
113
  },
166
- onCancel: (frame) => {
167
- taskHandler.handleCancel(frame);
168
- },
169
- onCleanupWorkspace: (frame) => {
170
- taskHandler.handleCleanupWorkspace(frame);
171
- },
172
- onResume: (frame) => {
173
- taskHandler.handleResume(frame);
174
- },
114
+ onCancel: (frame) => taskHandler.handleCancel(frame),
115
+ onCleanupWorkspace: (frame) => taskHandler.handleCleanupWorkspace(frame),
116
+ onResume: (frame) => taskHandler.handleResume(frame),
175
117
  onServerShuttingDown: () => {
176
118
  console.log('Server shutting down, will reconnect...');
177
119
  },
@@ -190,7 +132,7 @@ async function main() {
190
132
  workerClient?.sendAck(frame.msgId, { status: 'ok', tunnelUrl });
191
133
  }
192
134
  catch (err) {
193
- const message = err instanceof Error ? err.message : String(err);
135
+ const message = (0, protocol_1.getErrorMessage)(err);
194
136
  console.error(`Failed to start tunnel for task ${frame.taskId}:`, message);
195
137
  workerClient?.sendAck(frame.msgId, { status: 'error', error: message });
196
138
  }
@@ -202,13 +144,13 @@ async function main() {
202
144
  workerClient?.sendAck(frame.msgId, { status: 'ok' });
203
145
  }
204
146
  catch (err) {
205
- const message = err instanceof Error ? err.message : String(err);
147
+ const message = (0, protocol_1.getErrorMessage)(err);
206
148
  console.error(`Failed to stop tunnel for task ${frame.taskId}:`, message);
207
149
  workerClient?.sendAck(frame.msgId, { status: 'error', error: message });
208
150
  }
209
151
  },
210
152
  onStageConfirmResponse: (frame) => {
211
- taskHandler.handleStageConfirmResponse(frame.taskId, frame.stageIndex, frame.result);
153
+ taskHandler.handleStageConfirmResponse(frame.taskId, frame.stageName, frame.approved);
212
154
  },
213
155
  onConnected: () => {
214
156
  // Always send reconnect frame so server can reconcile lost tasks
@@ -229,7 +171,7 @@ async function main() {
229
171
  workerClient?.connect();
230
172
  }
231
173
  catch (err) {
232
- console.error('Re-registration failed:', err instanceof Error ? err.message : err);
174
+ console.error('Re-registration failed:', (0, protocol_1.getErrorMessage)(err));
233
175
  console.error('Generate a new worker token and run: overlord setup worker');
234
176
  process.exitCode = 1;
235
177
  }
@@ -243,14 +185,25 @@ async function main() {
243
185
  // 10. Create worker client
244
186
  workerClient = new worker_client_1.WorkerClient({
245
187
  overlordHost: config.overlordHost,
246
- machineId: config.machineId,
188
+ workerId: config.workerId,
247
189
  workerVersion: version,
248
190
  cpuModel: hardware.cpuModel,
249
191
  maxSlots: config.maxSlots,
250
192
  getToken: () => jwtManager.getToken(),
251
193
  getCapabilities: () => capabilities,
252
194
  getActiveSlots: () => taskHandler.getActiveTaskCount(),
195
+ getActiveTunnels: () => tunnelManager.getActiveTunnels(),
253
196
  }, handlers);
197
+ // 10b. Wire TunnelManager events to WorkerClient
198
+ tunnelManager.on('tunnel_started', (taskId, tunnelUrl) => {
199
+ workerClient?.sendTunnelStarted(taskId, tunnelUrl);
200
+ });
201
+ tunnelManager.on('tunnel_closed', (taskId, reason) => {
202
+ workerClient?.sendTunnelClosed(taskId, reason);
203
+ });
204
+ tunnelManager.on('tunnel_crashed', (taskId, error, willRetry) => {
205
+ workerClient?.sendTunnelCrashed(taskId, error, willRetry);
206
+ });
254
207
  // 11. Start lease manager
255
208
  leaseManager.start();
256
209
  // 11b. Wire up lease event listeners
@@ -272,87 +225,68 @@ async function main() {
272
225
  healthzServer.start();
273
226
  // 13. Reap orphaned processes
274
227
  orphan_reaper_1.OrphanReaper.reap();
275
- // 14. JWT renewal timer: check every 5 min, renew when <= 24h remaining
228
+ // 14. JWT renewal timer: check every 5 min (with exponential backoff on failure),
229
+ // renew when <= 24h remaining.
276
230
  // Enter degraded mode if JWT is expired and renewal fails;
277
231
  // exit degraded mode once renewal succeeds.
278
- const jwtRenewalTimer = setInterval(async () => {
279
- try {
280
- if (jwtManager.needsRenewal()) {
281
- console.log('JWT nearing expiry, renewing...');
282
- await jwtManager.refresh(config.overlordHost, config.machineId);
283
- console.log('JWT renewed successfully');
284
- exitDegradedMode();
285
- }
286
- else if (jwtManager.isExpired()) {
287
- // JWT already expired but needsRenewal didn't trigger (shouldn't happen, defensive)
288
- enterDegradedMode();
232
+ let jwtRetryCount = 0;
233
+ const JWT_MAX_RETRIES = 20;
234
+ let jwtRenewalTimerRef = null;
235
+ const scheduleJwtRenewal = () => {
236
+ const interval = jwtRetryCount === 0
237
+ ? JWT_RENEWAL_CHECK_INTERVAL_MS
238
+ : Math.min(JWT_RENEWAL_CHECK_INTERVAL_MS * Math.pow(2, jwtRetryCount), 30 * 60_000);
239
+ const timer = setTimeout(async () => {
240
+ try {
241
+ if (jwtManager.needsRenewal()) {
242
+ console.log('JWT nearing expiry, renewing...');
243
+ await jwtManager.refresh(config.overlordHost, config.workerId);
244
+ console.log('JWT renewed successfully');
245
+ jwtRetryCount = 0;
246
+ setDegraded(false);
247
+ }
248
+ else if (jwtManager.isExpired()) {
249
+ setDegraded(true);
250
+ }
289
251
  }
290
- }
291
- catch (err) {
292
- console.error('JWT renewal failed:', err instanceof Error ? err.message : err);
293
- if (jwtManager.isExpired()) {
294
- // Attempt re-registration or recovery before entering degraded mode
295
- if (config.workerToken) {
296
- try {
297
- console.log('JWT expired and refresh failed, attempting re-registration...');
298
- const jwt = await registerWorker(hardware, capabilities, config);
299
- jwtManager.save(jwt);
300
- console.log('Re-registration successful, JWT saved');
301
- exitDegradedMode();
302
- }
303
- catch (regErr) {
304
- console.error('Re-registration also failed:', regErr instanceof Error ? regErr.message : regErr);
305
- // Try recovery as last resort
306
- if (config.machineId && config.recoverySecret) {
307
- try {
308
- console.log('Attempting recovery with recovery secret...');
309
- const jwt = await recoverWorker(config);
310
- jwtManager.save(jwt);
311
- console.log('Recovery successful, JWT saved');
312
- exitDegradedMode();
313
- }
314
- catch (recErr) {
315
- console.error('Recovery also failed:', recErr instanceof Error ? recErr.message : recErr);
316
- enterDegradedMode();
317
- }
318
- }
319
- else {
320
- enterDegradedMode();
321
- }
322
- }
252
+ catch (err) {
253
+ jwtRetryCount++;
254
+ console.error(`JWT renewal failed (attempt ${jwtRetryCount}):`, (0, protocol_1.getErrorMessage)(err));
255
+ if (jwtRetryCount >= JWT_MAX_RETRIES) {
256
+ console.error(`JWT renewal failed ${JWT_MAX_RETRIES} times. Manual intervention may be required. Worker will continue in degraded mode.`);
323
257
  }
324
- else if (config.machineId && config.recoverySecret) {
325
- try {
326
- console.log('JWT expired and refresh failed, attempting recovery...');
327
- const jwt = await recoverWorker(config);
258
+ if (jwtManager.isExpired()) {
259
+ console.log('JWT expired and refresh failed, attempting re-registration or recovery...');
260
+ const jwt = await acquireJwt(config, hardware, capabilities);
261
+ if (jwt) {
328
262
  jwtManager.save(jwt);
329
- console.log('Recovery successful, JWT saved');
330
- exitDegradedMode();
263
+ jwtRetryCount = 0;
264
+ setDegraded(false);
331
265
  }
332
- catch (recErr) {
333
- console.error('Recovery failed:', recErr instanceof Error ? recErr.message : recErr);
334
- enterDegradedMode();
266
+ else {
267
+ setDegraded(true);
335
268
  }
336
269
  }
337
270
  else {
338
- enterDegradedMode();
271
+ console.warn('JWT renewal failed but token is still valid; will retry next cycle');
339
272
  }
340
273
  }
341
- else {
342
- console.warn('JWT renewal failed but token is still valid; will retry next cycle');
274
+ finally {
275
+ scheduleJwtRenewal();
343
276
  }
344
- }
345
- }, JWT_RENEWAL_CHECK_INTERVAL_MS);
346
- if (jwtRenewalTimer.unref) {
347
- jwtRenewalTimer.unref();
348
- }
277
+ }, interval);
278
+ if (timer.unref)
279
+ timer.unref();
280
+ jwtRenewalTimerRef = timer;
281
+ };
282
+ scheduleJwtRenewal();
349
283
  // 15. Periodic expired workspace cleanup (every hour)
350
284
  const workspaceCleanupTimer = setInterval(async () => {
351
285
  try {
352
286
  await workspaceManager.cleanupExpired(new Set(taskHandler.getActiveTaskIds()));
353
287
  }
354
288
  catch (err) {
355
- console.error('Expired workspace cleanup failed:', err instanceof Error ? err.message : err);
289
+ console.error('Expired workspace cleanup failed:', (0, protocol_1.getErrorMessage)(err));
356
290
  }
357
291
  }, 60 * 60 * 1000);
358
292
  if (workspaceCleanupTimer.unref) {
@@ -362,12 +296,21 @@ async function main() {
362
296
  workerClient.connect();
363
297
  console.log('Worker started');
364
298
  // Graceful shutdown
299
+ let shutdownInProgress = false;
365
300
  const shutdown = async (signal) => {
301
+ if (shutdownInProgress)
302
+ return;
303
+ shutdownInProgress = true;
366
304
  console.log(`Received ${signal}, draining...`);
367
- clearInterval(jwtRenewalTimer);
305
+ if (jwtRenewalTimerRef)
306
+ clearTimeout(jwtRenewalTimerRef);
368
307
  clearInterval(workspaceCleanupTimer);
369
308
  // Stop accepting new tasks
370
309
  workerClient?.disconnect();
310
+ // Stop tunnels before waiting for tasks
311
+ tunnelManager.stopAll();
312
+ // Cancel all active tasks
313
+ await taskHandler.cancelAllTasks();
371
314
  // Wait for active tasks to finish (with 30s timeout)
372
315
  const drainTimeout = setTimeout(() => {
373
316
  console.warn('Drain timeout reached, forcing exit');
@@ -378,7 +321,6 @@ async function main() {
378
321
  await taskHandler.waitForActiveTasks();
379
322
  clearTimeout(drainTimeout);
380
323
  // Cleanup
381
- tunnelManager.stopAll();
382
324
  leaseManager.stop();
383
325
  healthzServer.stop();
384
326
  process.exit(0);
@@ -386,6 +328,22 @@ async function main() {
386
328
  process.on('SIGINT', () => { shutdown('SIGINT').catch(err => { console.error('Shutdown error:', err); process.exit(1); }); });
387
329
  process.on('SIGTERM', () => { shutdown('SIGTERM').catch(err => { console.error('Shutdown error:', err); process.exit(1); }); });
388
330
  }
331
+ /**
332
+ * Parse a registration/recovery response and persist workerId + recoverySecret.
333
+ */
334
+ function parseAndPersistAuthResponse(responseBody, config, label) {
335
+ const data = JSON.parse(responseBody);
336
+ if (!data.jwt) {
337
+ throw new Error(`Invalid ${label} response: missing jwt`);
338
+ }
339
+ if (data.workerId) {
340
+ config.persist('OVERLORD_WORKER_ID', data.workerId);
341
+ }
342
+ if (data.recoverySecret) {
343
+ config.persist('OVERLORD_RECOVERY_SECRET', data.recoverySecret);
344
+ }
345
+ return data.jwt;
346
+ }
389
347
  /**
390
348
  * Register this worker with the Overlord server using the worker token.
391
349
  * Returns the JWT on success.
@@ -394,7 +352,7 @@ async function registerWorker(hardware, capabilities, config) {
394
352
  const os = await import('node:os');
395
353
  const payload = {
396
354
  token: config.workerToken,
397
- machineName: config.machineName || os.hostname(),
355
+ workerName: config.workerName || os.hostname(),
398
356
  host: os.hostname(),
399
357
  port: 0,
400
358
  os: hardware.os,
@@ -405,57 +363,12 @@ async function registerWorker(hardware, capabilities, config) {
405
363
  tags: [],
406
364
  protocolVersion: protocol_1.PROTOCOL_VERSION,
407
365
  };
408
- if (config.machineId) {
409
- payload.machineId = config.machineId;
366
+ if (config.workerId) {
367
+ payload.workerId = config.workerId;
410
368
  }
411
- const body = JSON.stringify(payload);
412
369
  const url = new URL('/api/workers/register', config.overlordHost);
413
- return new Promise((resolve, reject) => {
414
- const mod = url.protocol === 'https:' ? https : http;
415
- const req = mod.request({
416
- hostname: url.hostname,
417
- port: url.port,
418
- path: url.pathname,
419
- method: 'POST',
420
- headers: {
421
- 'Content-Type': 'application/json',
422
- 'Content-Length': Buffer.byteLength(body).toString(),
423
- },
424
- }, (res) => {
425
- const chunks = [];
426
- res.on('data', (chunk) => chunks.push(chunk));
427
- res.on('end', () => {
428
- const responseBody = Buffer.concat(chunks).toString('utf-8');
429
- if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
430
- try {
431
- const data = JSON.parse(responseBody);
432
- // Persist machineId from registration response
433
- if (data.machineId) {
434
- config.persist('OVERLORD_MACHINE_ID', data.machineId);
435
- }
436
- // Persist recoverySecret if provided
437
- if (data.recoverySecret) {
438
- config.persist('OVERLORD_RECOVERY_SECRET', data.recoverySecret);
439
- }
440
- resolve(data.jwt);
441
- }
442
- catch {
443
- reject(new Error(`Invalid registration response: ${responseBody}`));
444
- }
445
- }
446
- else {
447
- reject(new Error(`Registration failed: HTTP ${res.statusCode} - ${responseBody}`));
448
- }
449
- });
450
- });
451
- req.setTimeout(30_000, () => {
452
- req.destroy();
453
- reject(new Error('Request timed out'));
454
- });
455
- req.on('error', reject);
456
- req.write(body);
457
- req.end();
458
- });
370
+ const responseBody = await (0, http_post_1.httpPostJson)(url, JSON.stringify(payload));
371
+ return parseAndPersistAuthResponse(responseBody, config, 'registration');
459
372
  }
460
373
  /**
461
374
  * Recover this worker using the recovery secret when JWT is expired
@@ -464,56 +377,13 @@ async function registerWorker(hardware, capabilities, config) {
464
377
  */
465
378
  async function recoverWorker(config) {
466
379
  const os = await import('node:os');
467
- const payload = JSON.stringify({
468
- machineId: config.machineId,
469
- machineName: config.machineName || os.hostname(),
470
- recoverySecret: config.recoverySecret,
471
- });
472
380
  const url = new URL('/api/workers/recover', config.overlordHost);
473
- return new Promise((resolve, reject) => {
474
- const mod = url.protocol === 'https:' ? https : http;
475
- const req = mod.request({
476
- hostname: url.hostname,
477
- port: url.port,
478
- path: url.pathname,
479
- method: 'POST',
480
- headers: {
481
- 'Content-Type': 'application/json',
482
- 'Content-Length': Buffer.byteLength(payload).toString(),
483
- },
484
- }, (res) => {
485
- const chunks = [];
486
- res.on('data', (chunk) => chunks.push(chunk));
487
- res.on('end', () => {
488
- const responseBody = Buffer.concat(chunks).toString('utf-8');
489
- if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
490
- try {
491
- const data = JSON.parse(responseBody);
492
- if (data.machineId) {
493
- config.persist('OVERLORD_MACHINE_ID', data.machineId);
494
- }
495
- if (data.recoverySecret) {
496
- config.persist('OVERLORD_RECOVERY_SECRET', data.recoverySecret);
497
- }
498
- resolve(data.jwt);
499
- }
500
- catch {
501
- reject(new Error(`Invalid recovery response: ${responseBody}`));
502
- }
503
- }
504
- else {
505
- reject(new Error(`Recovery failed: HTTP ${res.statusCode} - ${responseBody}`));
506
- }
507
- });
508
- });
509
- req.setTimeout(30_000, () => {
510
- req.destroy();
511
- reject(new Error('Request timed out'));
512
- });
513
- req.on('error', reject);
514
- req.write(payload);
515
- req.end();
516
- });
381
+ const responseBody = await (0, http_post_1.httpPostJson)(url, JSON.stringify({
382
+ workerId: config.workerId,
383
+ workerName: config.workerName || os.hostname(),
384
+ recoverySecret: config.recoverySecret,
385
+ }));
386
+ return parseAndPersistAuthResponse(responseBody, config, 'recovery');
517
387
  }
518
388
  main().catch((err) => {
519
389
  console.error('Worker fatal error:', err);
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}