@overlordai/worker 1.0.52 → 1.0.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/clean-output-buffer.d.ts +21 -0
- package/dist/clean-output-buffer.d.ts.map +1 -0
- package/dist/clean-output-buffer.js +70 -0
- package/dist/clean-output-buffer.js.map +1 -0
- package/dist/config.d.ts +4 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +54 -39
- package/dist/config.js.map +1 -1
- package/dist/executor/base.executor.d.ts +30 -11
- package/dist/executor/base.executor.d.ts.map +1 -1
- package/dist/executor/base.executor.js +25 -2
- package/dist/executor/base.executor.js.map +1 -1
- package/dist/executor/claude.executor.d.ts +7 -8
- package/dist/executor/claude.executor.d.ts.map +1 -1
- package/dist/executor/claude.executor.js +36 -26
- package/dist/executor/claude.executor.js.map +1 -1
- package/dist/executor/codex.executor.d.ts +7 -8
- package/dist/executor/codex.executor.d.ts.map +1 -1
- package/dist/executor/codex.executor.js +64 -26
- package/dist/executor/codex.executor.js.map +1 -1
- package/dist/executor/cursor.executor.d.ts +6 -7
- package/dist/executor/cursor.executor.d.ts.map +1 -1
- package/dist/executor/cursor.executor.js +12 -22
- package/dist/executor/cursor.executor.js.map +1 -1
- package/dist/executor/custom.executor.d.ts +15 -7
- package/dist/executor/custom.executor.d.ts.map +1 -1
- package/dist/executor/custom.executor.js +25 -28
- package/dist/executor/custom.executor.js.map +1 -1
- package/dist/git-operations.d.ts +14 -12
- package/dist/git-operations.d.ts.map +1 -1
- package/dist/git-operations.js +50 -98
- package/dist/git-operations.js.map +1 -1
- package/dist/git-token-helper.d.ts +27 -0
- package/dist/git-token-helper.d.ts.map +1 -0
- package/dist/git-token-helper.js +114 -0
- package/dist/git-token-helper.js.map +1 -0
- package/dist/healthz.d.ts.map +1 -1
- package/dist/healthz.js +3 -7
- package/dist/healthz.js.map +1 -1
- package/dist/http-post.d.ts +2 -0
- package/dist/http-post.d.ts.map +1 -0
- package/dist/http-post.js +74 -0
- package/dist/http-post.js.map +1 -0
- package/dist/jwt-manager.d.ts +2 -3
- package/dist/jwt-manager.d.ts.map +1 -1
- package/dist/jwt-manager.js +5 -43
- package/dist/jwt-manager.js.map +1 -1
- package/dist/lease-manager.d.ts +4 -1
- package/dist/lease-manager.d.ts.map +1 -1
- package/dist/lease-manager.js +2 -6
- package/dist/lease-manager.js.map +1 -1
- package/dist/main.js +147 -277
- package/dist/main.js.map +1 -1
- package/dist/orphan-reaper.d.ts +1 -1
- package/dist/orphan-reaper.d.ts.map +1 -1
- package/dist/orphan-reaper.js +46 -30
- package/dist/orphan-reaper.js.map +1 -1
- package/dist/pipeline-compiler.d.ts +10 -0
- package/dist/pipeline-compiler.d.ts.map +1 -0
- package/dist/pipeline-compiler.js +179 -0
- package/dist/pipeline-compiler.js.map +1 -0
- package/dist/pipeline-parser.d.ts.map +1 -1
- package/dist/pipeline-parser.js +4 -3
- package/dist/pipeline-parser.js.map +1 -1
- package/dist/pipeline-runner.d.ts +1 -0
- package/dist/pipeline-runner.d.ts.map +1 -1
- package/dist/pipeline-runner.js +37 -27
- package/dist/pipeline-runner.js.map +1 -1
- package/dist/project-mutex.d.ts +1 -0
- package/dist/project-mutex.d.ts.map +1 -1
- package/dist/project-mutex.js +9 -1
- package/dist/project-mutex.js.map +1 -1
- package/dist/pty-manager.d.ts +2 -0
- package/dist/pty-manager.d.ts.map +1 -1
- package/dist/pty-manager.js +68 -42
- package/dist/pty-manager.js.map +1 -1
- package/dist/pty-relay-client.d.ts +38 -0
- package/dist/pty-relay-client.d.ts.map +1 -0
- package/dist/pty-relay-client.js +146 -0
- package/dist/pty-relay-client.js.map +1 -0
- package/dist/pty-stdin-writer.d.ts +11 -0
- package/dist/pty-stdin-writer.d.ts.map +1 -0
- package/dist/pty-stdin-writer.js +22 -0
- package/dist/pty-stdin-writer.js.map +1 -0
- package/dist/ringbuffer.d.ts +2 -0
- package/dist/ringbuffer.d.ts.map +1 -1
- package/dist/ringbuffer.js +10 -1
- package/dist/ringbuffer.js.map +1 -1
- package/dist/stage-monitor.d.ts +72 -0
- package/dist/stage-monitor.d.ts.map +1 -0
- package/dist/stage-monitor.js +234 -0
- package/dist/stage-monitor.js.map +1 -0
- package/dist/task-handler.d.ts +18 -12
- package/dist/task-handler.d.ts.map +1 -1
- package/dist/task-handler.js +298 -78
- package/dist/task-handler.js.map +1 -1
- package/dist/tunnel-manager.d.ts +16 -6
- package/dist/tunnel-manager.d.ts.map +1 -1
- package/dist/tunnel-manager.js +117 -16
- package/dist/tunnel-manager.js.map +1 -1
- package/dist/worker-client.d.ts +16 -7
- package/dist/worker-client.d.ts.map +1 -1
- package/dist/worker-client.js +40 -52
- package/dist/worker-client.js.map +1 -1
- package/dist/workspace-manager.d.ts +1 -0
- package/dist/workspace-manager.d.ts.map +1 -1
- package/dist/workspace-manager.js +102 -82
- package/dist/workspace-manager.js.map +1 -1
- 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
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
|
92
|
-
|
|
93
|
-
|
|
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,
|
|
154
|
-
workerClient?.sendStageConfirmRequest(taskId,
|
|
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 (
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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.
|
|
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:',
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
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
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
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
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
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
|
-
|
|
330
|
-
|
|
263
|
+
jwtRetryCount = 0;
|
|
264
|
+
setDegraded(false);
|
|
331
265
|
}
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
enterDegradedMode();
|
|
266
|
+
else {
|
|
267
|
+
setDegraded(true);
|
|
335
268
|
}
|
|
336
269
|
}
|
|
337
270
|
else {
|
|
338
|
-
|
|
271
|
+
console.warn('JWT renewal failed but token is still valid; will retry next cycle');
|
|
339
272
|
}
|
|
340
273
|
}
|
|
341
|
-
|
|
342
|
-
|
|
274
|
+
finally {
|
|
275
|
+
scheduleJwtRenewal();
|
|
343
276
|
}
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
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:',
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
409
|
-
payload.
|
|
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
|
-
|
|
414
|
-
|
|
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
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
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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"}
|