instar 0.9.63 → 0.9.64
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/core/AutoUpdater.d.ts +10 -43
- package/dist/core/AutoUpdater.d.ts.map +1 -1
- package/dist/core/AutoUpdater.js +36 -257
- package/dist/core/AutoUpdater.js.map +1 -1
- package/dist/lifeline/ServerSupervisor.d.ts +33 -10
- package/dist/lifeline/ServerSupervisor.d.ts.map +1 -1
- package/dist/lifeline/ServerSupervisor.js +188 -59
- package/dist/lifeline/ServerSupervisor.js.map +1 -1
- package/package.json +1 -1
|
@@ -59,7 +59,6 @@ export declare class AutoUpdater {
|
|
|
59
59
|
private lastError;
|
|
60
60
|
private pendingUpdate;
|
|
61
61
|
private isApplying;
|
|
62
|
-
private loopNotified;
|
|
63
62
|
private stateDir;
|
|
64
63
|
private stateFile;
|
|
65
64
|
private liveConfig;
|
|
@@ -95,39 +94,20 @@ export declare class AutoUpdater {
|
|
|
95
94
|
*/
|
|
96
95
|
private tick;
|
|
97
96
|
/**
|
|
98
|
-
*
|
|
97
|
+
* Request a restart from the supervisor by writing a signal file.
|
|
99
98
|
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
* 2. Send SIGTERM to ourselves to trigger graceful shutdown.
|
|
99
|
+
* The AutoUpdater's job ends here — the supervisor handles the actual restart.
|
|
100
|
+
* This eliminates the entire category of self-restart bugs (PATH mismatch,
|
|
101
|
+
* launchd confusion, binary resolution failures, restart loops).
|
|
104
102
|
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
103
|
+
* Signal file: state/restart-requested.json
|
|
104
|
+
* The supervisor polls this file during health checks and performs the restart.
|
|
107
105
|
*
|
|
108
|
-
* If
|
|
109
|
-
*
|
|
110
|
-
*
|
|
106
|
+
* If no supervisor is running (standalone foreground mode), the server logs
|
|
107
|
+
* a notice that a restart is needed. This is strictly better than attempting
|
|
108
|
+
* self-restart, which can loop or leave the port bound.
|
|
111
109
|
*/
|
|
112
|
-
|
|
113
|
-
* Find the best available binary path for restart.
|
|
114
|
-
* Tries multiple strategies, from most reliable to least:
|
|
115
|
-
*
|
|
116
|
-
* 1. `npm bin -g` — the actual global bin directory npm uses
|
|
117
|
-
* 2. `which instar` — PATH-based lookup (excludes npx cache and local node_modules)
|
|
118
|
-
* 3. `npm prefix -g` + `/bin/instar` — prefix-based lookup
|
|
119
|
-
* 4. `npm root -g` + `/instar/dist/cli.js` — direct module entry point (nuclear option)
|
|
120
|
-
* 5. `process.argv` fallback — only if not from npx cache or local node_modules
|
|
121
|
-
*
|
|
122
|
-
* Returns { bin, method } or null if no viable path found.
|
|
123
|
-
*/
|
|
124
|
-
private findBestBinary;
|
|
125
|
-
private selfRestart;
|
|
126
|
-
/**
|
|
127
|
-
* Check if this server process is managed by macOS launchd.
|
|
128
|
-
* If so, we can just exit and launchd will restart us.
|
|
129
|
-
*/
|
|
130
|
-
private isLaunchdManaged;
|
|
110
|
+
private requestRestart;
|
|
131
111
|
/**
|
|
132
112
|
* Send a notification via Telegram (if configured).
|
|
133
113
|
* Falls back to console logging if Telegram is not available.
|
|
@@ -138,10 +118,6 @@ export declare class AutoUpdater {
|
|
|
138
118
|
* Prefers the dedicated Agent Updates topic (informational), falls back to Agent Attention.
|
|
139
119
|
*/
|
|
140
120
|
private getNotificationTopicId;
|
|
141
|
-
/**
|
|
142
|
-
* Get the server port from the update checker config (for notification messages).
|
|
143
|
-
*/
|
|
144
|
-
private getPort;
|
|
145
121
|
/**
|
|
146
122
|
* Check if an upgrade guide exists for the given version.
|
|
147
123
|
* This is used to decide whether to promise a "what's new" summary
|
|
@@ -149,15 +125,6 @@ export declare class AutoUpdater {
|
|
|
149
125
|
* we can keep.
|
|
150
126
|
*/
|
|
151
127
|
private hasUpgradeGuide;
|
|
152
|
-
/**
|
|
153
|
-
* Write a flag file to signal the lifeline supervisor that the server
|
|
154
|
-
* is about to restart for an update. The supervisor checks this flag
|
|
155
|
-
* before firing "server down" alerts, preventing unnecessary noise.
|
|
156
|
-
*
|
|
157
|
-
* The flag has a 3-minute TTL — if the replacement server doesn't
|
|
158
|
-
* come up by then, it's a real problem and alerts should fire.
|
|
159
|
-
*/
|
|
160
|
-
private writeUpdateRestartFlag;
|
|
161
128
|
private loadState;
|
|
162
129
|
private saveState;
|
|
163
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoUpdater.d.ts","sourceRoot":"","sources":["../../src/core/AutoUpdater.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"AutoUpdater.d.ts","sourceRoot":"","sources":["../../src/core/AutoUpdater.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mDAAmD;IACnD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mFAAmF;IACnF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qCAAqC;IACrC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qDAAqD;IACrD,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,4BAA4B;IAC5B,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACpC,sDAAsD;IACtD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,wBAAwB;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAA2B;gBAG3C,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,iBAAiB,EAC1B,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,EACjC,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI;IAoBhC;;;OAGG;IACH,KAAK,IAAI,IAAI;IAkBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAOZ;;OAEG;IACH,SAAS,IAAI,iBAAiB;IAY9B;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAI5C;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;;OAGG;YACW,IAAI;IAwFlB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,cAAc;IAuBtB;;;OAGG;YACW,MAAM;IAoBpB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAQ9B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,SAAS;CAsBlB"}
|
package/dist/core/AutoUpdater.js
CHANGED
|
@@ -17,10 +17,8 @@
|
|
|
17
17
|
* server process and exit. The new process binds to the port after
|
|
18
18
|
* the old one releases it during shutdown.
|
|
19
19
|
*/
|
|
20
|
-
import { spawn, execFileSync } from 'node:child_process';
|
|
21
20
|
import fs from 'node:fs';
|
|
22
21
|
import path from 'node:path';
|
|
23
|
-
import { DegradationReporter } from '../monitoring/DegradationReporter.js';
|
|
24
22
|
export class AutoUpdater {
|
|
25
23
|
updateChecker;
|
|
26
24
|
telegram;
|
|
@@ -33,7 +31,6 @@ export class AutoUpdater {
|
|
|
33
31
|
lastError = null;
|
|
34
32
|
pendingUpdate = null;
|
|
35
33
|
isApplying = false;
|
|
36
|
-
loopNotified = false;
|
|
37
34
|
stateDir;
|
|
38
35
|
stateFile;
|
|
39
36
|
liveConfig = null;
|
|
@@ -61,20 +58,8 @@ export class AutoUpdater {
|
|
|
61
58
|
if (this.interval)
|
|
62
59
|
return;
|
|
63
60
|
const intervalMs = this.config.checkIntervalMinutes * 60 * 1000;
|
|
64
|
-
// Detect stale binary sources — npx cache and local node_modules don't update
|
|
65
|
-
// when we run npm install -g, causing restart loops. Auto-apply still works
|
|
66
|
-
// (installs globally), but auto-restart would loop if we can't find the global binary.
|
|
67
|
-
// We now have robust binary resolution (findBestBinary), so we only disable
|
|
68
|
-
// auto-restart for npx — local installs can restart via global binary resolution.
|
|
69
|
-
const scriptPath = process.argv[1] || '';
|
|
70
|
-
const runningFromNpx = scriptPath.includes('.npm/_npx') || scriptPath.includes('/_npx/');
|
|
71
|
-
if (runningFromNpx) {
|
|
72
|
-
this.config.autoRestart = false;
|
|
73
|
-
console.warn('[AutoUpdater] Running from npx cache. Auto-restart disabled — updates will be applied globally.\n' +
|
|
74
|
-
'[AutoUpdater] The server will use the new version on next restart.');
|
|
75
|
-
}
|
|
76
61
|
console.log(`[AutoUpdater] Started (every ${this.config.checkIntervalMinutes}m, ` +
|
|
77
|
-
`autoApply: ${this.config.autoApply}
|
|
62
|
+
`autoApply: ${this.config.autoApply})`);
|
|
78
63
|
// Run first check after a short delay (don't block startup)
|
|
79
64
|
setTimeout(() => this.tick(), 10_000);
|
|
80
65
|
// Then run periodically
|
|
@@ -167,28 +152,6 @@ export class AutoUpdater {
|
|
|
167
152
|
console.log(`[AutoUpdater] Update available: ${info.currentVersion} → ${info.latestVersion}`);
|
|
168
153
|
this.pendingUpdate = info.latestVersion;
|
|
169
154
|
this.saveState();
|
|
170
|
-
// Guard: prevent restart loops when the running binary doesn't pick up updates.
|
|
171
|
-
// This happens when running from npx cache, a local install, or any location
|
|
172
|
-
// that npm install -g doesn't update. After applying v0.9.3, the restarted
|
|
173
|
-
// process still reads its old package.json → detects v0.9.3 as "new" → applies
|
|
174
|
-
// again → restarts again → infinite loop.
|
|
175
|
-
if (this.lastAppliedVersion === info.latestVersion) {
|
|
176
|
-
console.log(`[AutoUpdater] v${info.latestVersion} was already applied in a previous cycle. ` +
|
|
177
|
-
`The running binary didn't pick up the update — attempting recovery restart.`);
|
|
178
|
-
// The previous restart spawned from a stale binary. Try once more with
|
|
179
|
-
// aggressive path resolution. If this fails, accept current state — never
|
|
180
|
-
// ask the user to run a command.
|
|
181
|
-
if (!this.loopNotified) {
|
|
182
|
-
this.loopNotified = true;
|
|
183
|
-
await this.notify(`Update to v${info.latestVersion} was installed but the restart loaded a stale binary. ` +
|
|
184
|
-
`Attempting recovery restart from the correct path...`);
|
|
185
|
-
await new Promise(r => setTimeout(r, 2000));
|
|
186
|
-
this.selfRestart();
|
|
187
|
-
}
|
|
188
|
-
this.pendingUpdate = null;
|
|
189
|
-
this.saveState();
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
155
|
// Step 2: Auto-apply if configured
|
|
193
156
|
if (!this.config.autoApply) {
|
|
194
157
|
// Notify with actionable instructions — don't leave the user hanging
|
|
@@ -217,28 +180,20 @@ export class AutoUpdater {
|
|
|
217
180
|
this.pendingUpdate = null;
|
|
218
181
|
this.saveState();
|
|
219
182
|
console.log(`[AutoUpdater] Updated: v${result.previousVersion} → v${result.newVersion}`);
|
|
220
|
-
// Step 5: Notify via Telegram
|
|
221
|
-
// Don't promise a summary unless an upgrade guide exists for the new version.
|
|
222
|
-
// Versions without guides in upgrades/ will never trigger the upgrade-notify session,
|
|
223
|
-
// so promising a summary creates a broken commitment.
|
|
224
|
-
const restartNote = result.restartNeeded && this.config.autoRestart
|
|
225
|
-
? ' Restarting now to pick up the changes.'
|
|
226
|
-
: result.restartNeeded
|
|
227
|
-
? ' A restart is needed to use the new version.'
|
|
228
|
-
: '';
|
|
229
|
-
// Only promise a summary if an upgrade guide exists for the new version.
|
|
230
|
-
// Without a guide, the upgrade-notify session has nothing to report — don't
|
|
231
|
-
// make a promise we can't keep.
|
|
183
|
+
// Step 5: Notify via Telegram
|
|
232
184
|
const guideExists = this.hasUpgradeGuide(result.newVersion);
|
|
233
185
|
const summaryNote = guideExists
|
|
234
186
|
? ` I'll send you a summary of what's new once I'm back up.`
|
|
235
187
|
: '';
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
188
|
+
if (result.restartNeeded) {
|
|
189
|
+
await this.notify(`Just updated to v${result.newVersion}. Restarting to pick up the changes.${summaryNote}`);
|
|
190
|
+
// Step 6: Request restart from supervisor (don't self-restart)
|
|
239
191
|
// Brief delay to let the Telegram notification send
|
|
240
192
|
await new Promise(r => setTimeout(r, 2000));
|
|
241
|
-
this.
|
|
193
|
+
this.requestRestart(result.newVersion);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
await this.notify(`Just updated to v${result.newVersion}.${summaryNote}`);
|
|
242
197
|
}
|
|
243
198
|
}
|
|
244
199
|
catch (err) {
|
|
@@ -249,179 +204,40 @@ export class AutoUpdater {
|
|
|
249
204
|
}
|
|
250
205
|
}
|
|
251
206
|
/**
|
|
252
|
-
*
|
|
253
|
-
*
|
|
254
|
-
* Strategy:
|
|
255
|
-
* 1. Spawn a shell that waits 2 seconds (for port release), then
|
|
256
|
-
* starts the new server version using the same CLI arguments.
|
|
257
|
-
* 2. Send SIGTERM to ourselves to trigger graceful shutdown.
|
|
207
|
+
* Request a restart from the supervisor by writing a signal file.
|
|
258
208
|
*
|
|
259
|
-
* The
|
|
260
|
-
* the
|
|
209
|
+
* The AutoUpdater's job ends here — the supervisor handles the actual restart.
|
|
210
|
+
* This eliminates the entire category of self-restart bugs (PATH mismatch,
|
|
211
|
+
* launchd confusion, binary resolution failures, restart loops).
|
|
261
212
|
*
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
* manager handles restart automatically after we exit.
|
|
265
|
-
*/
|
|
266
|
-
/**
|
|
267
|
-
* Find the best available binary path for restart.
|
|
268
|
-
* Tries multiple strategies, from most reliable to least:
|
|
269
|
-
*
|
|
270
|
-
* 1. `npm bin -g` — the actual global bin directory npm uses
|
|
271
|
-
* 2. `which instar` — PATH-based lookup (excludes npx cache and local node_modules)
|
|
272
|
-
* 3. `npm prefix -g` + `/bin/instar` — prefix-based lookup
|
|
273
|
-
* 4. `npm root -g` + `/instar/dist/cli.js` — direct module entry point (nuclear option)
|
|
274
|
-
* 5. `process.argv` fallback — only if not from npx cache or local node_modules
|
|
213
|
+
* Signal file: state/restart-requested.json
|
|
214
|
+
* The supervisor polls this file during health checks and performs the restart.
|
|
275
215
|
*
|
|
276
|
-
*
|
|
216
|
+
* If no supervisor is running (standalone foreground mode), the server logs
|
|
217
|
+
* a notice that a restart is needed. This is strictly better than attempting
|
|
218
|
+
* self-restart, which can loop or leave the port bound.
|
|
277
219
|
*/
|
|
278
|
-
|
|
279
|
-
const
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
return { bin: candidate, method: 'npm-bin-g' };
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
catch { /* npm bin -g failed */ }
|
|
292
|
-
// Strategy 2: which instar (excludes stale sources)
|
|
293
|
-
try {
|
|
294
|
-
const which = execFileSync('which', ['instar'], {
|
|
295
|
-
encoding: 'utf-8',
|
|
296
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
297
|
-
}).trim();
|
|
298
|
-
if (which && !isStaleSource(which)) {
|
|
299
|
-
return { bin: which, method: 'which' };
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
catch { /* not found in PATH */ }
|
|
303
|
-
// Strategy 3: npm prefix -g + /bin/instar
|
|
304
|
-
try {
|
|
305
|
-
const npmPrefix = execFileSync('npm', ['prefix', '-g'], {
|
|
306
|
-
encoding: 'utf-8',
|
|
307
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
308
|
-
}).trim();
|
|
309
|
-
const candidate = path.join(npmPrefix, 'bin', 'instar');
|
|
310
|
-
if (fs.existsSync(candidate) && !isStaleSource(candidate)) {
|
|
311
|
-
return { bin: candidate, method: 'npm-prefix-g' };
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
catch { /* @silent-fallback-ok — npm prefix, try next strategy */ }
|
|
315
|
-
// Strategy 4: Nuclear — find the installed package's main entry point directly.
|
|
316
|
-
// This bypasses the bin symlink and runs the module's CLI entry with node.
|
|
317
|
-
try {
|
|
318
|
-
const globalRoot = execFileSync('npm', ['root', '-g'], {
|
|
319
|
-
encoding: 'utf-8',
|
|
320
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
321
|
-
}).trim();
|
|
322
|
-
const mainEntry = path.join(globalRoot, 'instar', 'dist', 'cli.js');
|
|
323
|
-
if (fs.existsSync(mainEntry)) {
|
|
324
|
-
return { bin: mainEntry, method: 'npm-root-g-direct', useNode: true };
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
catch { // @silent-fallback-ok — npm root lookup, try next strategy
|
|
328
|
-
}
|
|
329
|
-
// Strategy 5: process.argv fallback — only if it's not from a stale source
|
|
330
|
-
const scriptPath = process.argv[1] || '';
|
|
331
|
-
if (scriptPath && !isStaleSource(scriptPath)) {
|
|
332
|
-
return { bin: scriptPath, method: 'process-argv', useNode: true };
|
|
333
|
-
}
|
|
334
|
-
return null;
|
|
335
|
-
}
|
|
336
|
-
selfRestart() {
|
|
337
|
-
console.log('[AutoUpdater] Initiating self-restart...');
|
|
338
|
-
const cliArgs = process.argv.slice(2); // skip node + script path
|
|
339
|
-
const quotedArgs = cliArgs.map(a => `'${a.replace(/'/g, "'\\''")}'`).join(' ');
|
|
340
|
-
// Check if we're managed by launchd or systemd — if so, just exit cleanly
|
|
341
|
-
// and let the service manager handle the restart.
|
|
342
|
-
//
|
|
343
|
-
// IMPORTANT: When the server is started by the lifeline supervisor (with --no-telegram),
|
|
344
|
-
// it runs in a tmux session — NOT directly under launchd. The lifeline process is
|
|
345
|
-
// launchd-managed, but the server is supervisor-managed. Calling process.exit(0) here
|
|
346
|
-
// would kill the server, and launchd wouldn't restart it (it only watches the lifeline).
|
|
347
|
-
// The supervisor would eventually notice and restart, but only after the update-restart
|
|
348
|
-
// flag expires (3 min) — causing unnecessary downtime and restart loops.
|
|
349
|
-
const supervisorManaged = process.argv.includes('--no-telegram');
|
|
350
|
-
const managedByLaunchd = !supervisorManaged && (!!process.env.LAUNCHED_BY_LAUNCHD || this.isLaunchdManaged());
|
|
351
|
-
const managedBySystemd = !supervisorManaged && !!process.env.INVOCATION_ID; // systemd sets this
|
|
352
|
-
if (managedByLaunchd || managedBySystemd) {
|
|
353
|
-
const manager = managedByLaunchd ? 'launchd' : 'systemd';
|
|
354
|
-
console.log(`[AutoUpdater] Managed by ${manager} — exiting for automatic restart.`);
|
|
355
|
-
this.writeUpdateRestartFlag();
|
|
356
|
-
// Just exit — the service manager will restart us from the updated binary
|
|
357
|
-
process.exit(0);
|
|
358
|
-
return; // unreachable but makes TypeScript happy
|
|
359
|
-
}
|
|
360
|
-
// Find the best binary path
|
|
361
|
-
const found = this.findBestBinary();
|
|
362
|
-
let cmd;
|
|
363
|
-
if (found) {
|
|
364
|
-
console.log(`[AutoUpdater] Found binary via ${found.method}: ${found.bin}`);
|
|
365
|
-
const quotedBin = `'${found.bin.replace(/'/g, "'\\''")}'`;
|
|
366
|
-
if (found.useNode) {
|
|
367
|
-
cmd = `sleep 2 && exec ${process.execPath} ${quotedBin} ${quotedArgs}`;
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
cmd = `sleep 2 && exec ${quotedBin} ${quotedArgs}`;
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
else {
|
|
374
|
-
// All strategies failed — this is extremely rare. Log it but don't ask the user.
|
|
375
|
-
console.error('[AutoUpdater] Cannot find any viable binary path for restart.');
|
|
376
|
-
console.error('[AutoUpdater] Update was applied globally. The server will pick it up on next manual restart.');
|
|
377
|
-
// Do NOT ask the user to run commands. Just log and continue running.
|
|
378
|
-
return;
|
|
379
|
-
}
|
|
220
|
+
requestRestart(newVersion) {
|
|
221
|
+
const flagPath = path.join(this.stateDir, 'state', 'restart-requested.json');
|
|
222
|
+
const data = {
|
|
223
|
+
requestedAt: new Date().toISOString(),
|
|
224
|
+
requestedBy: 'auto-updater',
|
|
225
|
+
targetVersion: newVersion,
|
|
226
|
+
previousVersion: this.updateChecker.getInstalledVersion(),
|
|
227
|
+
expiresAt: new Date(Date.now() + 10 * 60 * 1000).toISOString(), // 10 min TTL
|
|
228
|
+
pid: process.pid,
|
|
229
|
+
};
|
|
380
230
|
try {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
cwd: process.cwd(),
|
|
388
|
-
env: process.env,
|
|
389
|
-
});
|
|
390
|
-
child.unref();
|
|
391
|
-
console.log('[AutoUpdater] Replacement process spawned. Shutting down...');
|
|
392
|
-
// Trigger graceful shutdown (the SIGTERM handler in server.ts will clean up)
|
|
393
|
-
process.kill(process.pid, 'SIGTERM');
|
|
231
|
+
const dir = path.dirname(flagPath);
|
|
232
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
233
|
+
const tmpPath = `${flagPath}.${process.pid}.tmp`;
|
|
234
|
+
fs.writeFileSync(tmpPath, JSON.stringify(data, null, 2));
|
|
235
|
+
fs.renameSync(tmpPath, flagPath);
|
|
236
|
+
console.log(`[AutoUpdater] Restart requested — supervisor will handle (target: v${newVersion})`);
|
|
394
237
|
}
|
|
395
238
|
catch (err) {
|
|
396
|
-
console.error(`[AutoUpdater]
|
|
397
|
-
console.error('[AutoUpdater] Update was applied but manual restart is needed.');
|
|
398
|
-
DegradationReporter.getInstance().report({
|
|
399
|
-
feature: 'AutoUpdater.selfRestart',
|
|
400
|
-
primary: 'Restart agent after auto-update',
|
|
401
|
-
fallback: 'Old code continues running until manual restart',
|
|
402
|
-
reason: `Why: ${err instanceof Error ? err.message : String(err)}`,
|
|
403
|
-
impact: 'Updated code not active — agent runs stale version',
|
|
404
|
-
});
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
/**
|
|
408
|
-
* Check if this server process is managed by macOS launchd.
|
|
409
|
-
* If so, we can just exit and launchd will restart us.
|
|
410
|
-
*/
|
|
411
|
-
isLaunchdManaged() {
|
|
412
|
-
if (process.platform !== 'darwin')
|
|
413
|
-
return false;
|
|
414
|
-
try {
|
|
415
|
-
// Look for an instar plist in LaunchAgents
|
|
416
|
-
const plistDir = path.join(process.env.HOME || '', 'Library', 'LaunchAgents');
|
|
417
|
-
if (!fs.existsSync(plistDir))
|
|
418
|
-
return false;
|
|
419
|
-
const files = fs.readdirSync(plistDir);
|
|
420
|
-
return files.some(f => f.startsWith('ai.instar.') && f.endsWith('.plist'));
|
|
421
|
-
}
|
|
422
|
-
catch {
|
|
423
|
-
// @silent-fallback-ok — launchd check returns false
|
|
424
|
-
return false;
|
|
239
|
+
console.error(`[AutoUpdater] Failed to write restart request: ${err}`);
|
|
240
|
+
console.error('[AutoUpdater] Update was applied but a manual restart is needed.');
|
|
425
241
|
}
|
|
426
242
|
}
|
|
427
243
|
/**
|
|
@@ -455,14 +271,6 @@ export class AutoUpdater {
|
|
|
455
271
|
|| this.state.get('agent-attention-topic')
|
|
456
272
|
|| 0;
|
|
457
273
|
}
|
|
458
|
-
/**
|
|
459
|
-
* Get the server port from the update checker config (for notification messages).
|
|
460
|
-
*/
|
|
461
|
-
getPort() {
|
|
462
|
-
// The port is available on the UpdateChecker config but not exposed.
|
|
463
|
-
// Use a reasonable default — agents can find their port from config.
|
|
464
|
-
return 4040;
|
|
465
|
-
}
|
|
466
274
|
// ── Upgrade guide detection ─────────────────────────────────────────
|
|
467
275
|
/**
|
|
468
276
|
* Check if an upgrade guide exists for the given version.
|
|
@@ -483,35 +291,6 @@ export class AutoUpdater {
|
|
|
483
291
|
return false;
|
|
484
292
|
}
|
|
485
293
|
}
|
|
486
|
-
// ── Update restart flag ────────────────────────────────────────────
|
|
487
|
-
/**
|
|
488
|
-
* Write a flag file to signal the lifeline supervisor that the server
|
|
489
|
-
* is about to restart for an update. The supervisor checks this flag
|
|
490
|
-
* before firing "server down" alerts, preventing unnecessary noise.
|
|
491
|
-
*
|
|
492
|
-
* The flag has a 3-minute TTL — if the replacement server doesn't
|
|
493
|
-
* come up by then, it's a real problem and alerts should fire.
|
|
494
|
-
*/
|
|
495
|
-
writeUpdateRestartFlag() {
|
|
496
|
-
const flagPath = path.join(this.stateDir, 'state', 'update-restart.json');
|
|
497
|
-
const data = {
|
|
498
|
-
pid: process.pid,
|
|
499
|
-
startedAt: new Date().toISOString(),
|
|
500
|
-
targetVersion: this.lastAppliedVersion ?? 'unknown',
|
|
501
|
-
expiresAt: new Date(Date.now() + 3 * 60 * 1000).toISOString(),
|
|
502
|
-
};
|
|
503
|
-
try {
|
|
504
|
-
const dir = path.dirname(flagPath);
|
|
505
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
506
|
-
const tmpPath = `${flagPath}.${process.pid}.tmp`;
|
|
507
|
-
fs.writeFileSync(tmpPath, JSON.stringify(data, null, 2));
|
|
508
|
-
fs.renameSync(tmpPath, flagPath);
|
|
509
|
-
console.log('[AutoUpdater] Wrote update-restart flag (expires in 3 min)');
|
|
510
|
-
}
|
|
511
|
-
catch (err) {
|
|
512
|
-
console.error(`[AutoUpdater] Failed to write update-restart flag: ${err}`);
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
294
|
// ── State persistence ──────────────────────────────────────────────
|
|
516
295
|
loadState() {
|
|
517
296
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoUpdater.js","sourceRoot":"","sources":["../../src/core/AutoUpdater.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AutoUpdater.js","sourceRoot":"","sources":["../../src/core/AutoUpdater.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,13 @@
|
|
|
6
6
|
*
|
|
7
7
|
* The supervisor spawns the server in a tmux session (same as `instar server start`)
|
|
8
8
|
* and monitors it via health checks.
|
|
9
|
+
*
|
|
10
|
+
* RESTART ARCHITECTURE (v0.9.63):
|
|
11
|
+
* The server NEVER restarts itself. When the AutoUpdater installs an update,
|
|
12
|
+
* it writes a `restart-requested.json` flag. The supervisor detects this flag
|
|
13
|
+
* during its health check polling and performs a graceful restart. This eliminates
|
|
14
|
+
* the entire category of self-restart bugs (PATH mismatch, launchd confusion,
|
|
15
|
+
* binary resolution failures, restart loops).
|
|
9
16
|
*/
|
|
10
17
|
import { EventEmitter } from 'node:events';
|
|
11
18
|
export interface SupervisorEvents {
|
|
@@ -38,6 +45,10 @@ export declare class ServerSupervisor extends EventEmitter {
|
|
|
38
45
|
private readonly circuitBreakerThreshold;
|
|
39
46
|
private readonly circuitBreakerWindowMs;
|
|
40
47
|
private circuitBroken;
|
|
48
|
+
private circuitBreakerTrippedAt;
|
|
49
|
+
private circuitBreakerRetryCount;
|
|
50
|
+
private readonly circuitBreakerRetryIntervalMs;
|
|
51
|
+
private readonly maxCircuitBreakerRetries;
|
|
41
52
|
private lastCrashOutput;
|
|
42
53
|
constructor(options: {
|
|
43
54
|
projectDir: string;
|
|
@@ -71,22 +82,37 @@ export declare class ServerSupervisor extends EventEmitter {
|
|
|
71
82
|
circuitBroken: boolean;
|
|
72
83
|
totalFailures: number;
|
|
73
84
|
lastCrashOutput: string;
|
|
85
|
+
circuitBreakerRetryCount: number;
|
|
86
|
+
maxCircuitBreakerRetries: number;
|
|
74
87
|
};
|
|
75
88
|
/**
|
|
76
89
|
* Reset the circuit breaker — allows restart attempts to resume.
|
|
77
90
|
* Call this after fixing the underlying issue (e.g., via /lifeline restart).
|
|
78
91
|
*/
|
|
79
92
|
resetCircuitBreaker(): void;
|
|
93
|
+
/**
|
|
94
|
+
* Gracefully restart the server: capture output, kill tmux session,
|
|
95
|
+
* clean up child processes, then spawn fresh.
|
|
96
|
+
*
|
|
97
|
+
* Used by: restart-request handling (auto-update), /lifeline restart command.
|
|
98
|
+
*/
|
|
99
|
+
performGracefulRestart(reason: string): Promise<boolean>;
|
|
80
100
|
private spawnServer;
|
|
81
101
|
private isServerSessionAlive;
|
|
82
102
|
private startHealthChecks;
|
|
83
103
|
private stopHealthChecks;
|
|
84
104
|
private checkHealth;
|
|
105
|
+
/**
|
|
106
|
+
* Check if the server (AutoUpdater) has requested a restart.
|
|
107
|
+
* Called during the health check loop. If a valid request exists,
|
|
108
|
+
* initiate a graceful restart of the server tmux session.
|
|
109
|
+
*/
|
|
110
|
+
private checkRestartRequest;
|
|
85
111
|
private handleUnhealthy;
|
|
86
112
|
/**
|
|
87
|
-
* Capture
|
|
88
|
-
*
|
|
89
|
-
*
|
|
113
|
+
* Capture crash output from multiple sources:
|
|
114
|
+
* 1. tmux pane capture (last 50 lines of terminal output)
|
|
115
|
+
* 2. stderr crash log file (tee'd from server process)
|
|
90
116
|
*/
|
|
91
117
|
private captureCrashOutput;
|
|
92
118
|
/**
|
|
@@ -95,13 +121,10 @@ export declare class ServerSupervisor extends EventEmitter {
|
|
|
95
121
|
*/
|
|
96
122
|
private cleanupChildProcesses;
|
|
97
123
|
/**
|
|
98
|
-
* Check
|
|
99
|
-
*
|
|
100
|
-
*/
|
|
101
|
-
private isPlannedRestart;
|
|
102
|
-
/**
|
|
103
|
-
* Clear the update-restart flag after the server comes back healthy.
|
|
124
|
+
* Check for the legacy update-restart.json flag (written by old AutoUpdater versions).
|
|
125
|
+
* New versions write restart-requested.json instead, handled by checkRestartRequest().
|
|
104
126
|
*/
|
|
105
|
-
private
|
|
127
|
+
private isLegacyPlannedRestart;
|
|
128
|
+
private clearLegacyRestartFlag;
|
|
106
129
|
}
|
|
107
130
|
//# sourceMappingURL=ServerSupervisor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerSupervisor.d.ts","sourceRoot":"","sources":["../../src/lifeline/ServerSupervisor.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ServerSupervisor.d.ts","sourceRoot":"","sources":["../../src/lifeline/ServerSupervisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,13 @@
|
|
|
6
6
|
*
|
|
7
7
|
* The supervisor spawns the server in a tmux session (same as `instar server start`)
|
|
8
8
|
* and monitors it via health checks.
|
|
9
|
+
*
|
|
10
|
+
* RESTART ARCHITECTURE (v0.9.63):
|
|
11
|
+
* The server NEVER restarts itself. When the AutoUpdater installs an update,
|
|
12
|
+
* it writes a `restart-requested.json` flag. The supervisor detects this flag
|
|
13
|
+
* during its health check polling and performs a graceful restart. This eliminates
|
|
14
|
+
* the entire category of self-restart bugs (PATH mismatch, launchd confusion,
|
|
15
|
+
* binary resolution failures, restart loops).
|
|
9
16
|
*/
|
|
10
17
|
import { execFileSync, spawnSync } from 'node:child_process';
|
|
11
18
|
import { EventEmitter } from 'node:events';
|
|
@@ -35,12 +42,16 @@ export class ServerSupervisor extends EventEmitter {
|
|
|
35
42
|
consecutiveFailures = 0; // Hysteresis: require 2 consecutive failures before marking unhealthy
|
|
36
43
|
unhealthyThreshold = 2;
|
|
37
44
|
stateDir;
|
|
38
|
-
// Circuit breaker —
|
|
45
|
+
// Circuit breaker — give up after too many total failures, but retry periodically
|
|
39
46
|
totalFailures = 0;
|
|
40
47
|
totalFailureWindowStart = 0;
|
|
41
|
-
circuitBreakerThreshold = 20; // Total failures before
|
|
48
|
+
circuitBreakerThreshold = 20; // Total failures before tripping
|
|
42
49
|
circuitBreakerWindowMs = 60 * 60_000; // 1-hour window
|
|
43
50
|
circuitBroken = false;
|
|
51
|
+
circuitBreakerTrippedAt = 0;
|
|
52
|
+
circuitBreakerRetryCount = 0;
|
|
53
|
+
circuitBreakerRetryIntervalMs = 30 * 60_000; // 30 min between retries
|
|
54
|
+
maxCircuitBreakerRetries = 3; // Try 3 times before truly giving up
|
|
44
55
|
lastCrashOutput = ''; // Last captured crash output for diagnostics
|
|
45
56
|
constructor(options) {
|
|
46
57
|
super();
|
|
@@ -118,6 +129,8 @@ export class ServerSupervisor extends EventEmitter {
|
|
|
118
129
|
circuitBroken: this.circuitBroken,
|
|
119
130
|
totalFailures: this.totalFailures,
|
|
120
131
|
lastCrashOutput: this.lastCrashOutput,
|
|
132
|
+
circuitBreakerRetryCount: this.circuitBreakerRetryCount,
|
|
133
|
+
maxCircuitBreakerRetries: this.maxCircuitBreakerRetries,
|
|
121
134
|
};
|
|
122
135
|
}
|
|
123
136
|
/**
|
|
@@ -126,27 +139,70 @@ export class ServerSupervisor extends EventEmitter {
|
|
|
126
139
|
*/
|
|
127
140
|
resetCircuitBreaker() {
|
|
128
141
|
this.circuitBroken = false;
|
|
142
|
+
this.circuitBreakerTrippedAt = 0;
|
|
143
|
+
this.circuitBreakerRetryCount = 0;
|
|
129
144
|
this.totalFailures = 0;
|
|
130
145
|
this.totalFailureWindowStart = 0;
|
|
131
146
|
this.restartAttempts = 0;
|
|
132
147
|
this.maxRetriesExhaustedAt = 0;
|
|
133
148
|
console.log('[Supervisor] Circuit breaker reset');
|
|
134
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Gracefully restart the server: capture output, kill tmux session,
|
|
152
|
+
* clean up child processes, then spawn fresh.
|
|
153
|
+
*
|
|
154
|
+
* Used by: restart-request handling (auto-update), /lifeline restart command.
|
|
155
|
+
*/
|
|
156
|
+
async performGracefulRestart(reason) {
|
|
157
|
+
console.log(`[Supervisor] Graceful restart initiated: ${reason}`);
|
|
158
|
+
this.emit('serverRestarting', 0);
|
|
159
|
+
if (this.tmuxPath && this.isServerSessionAlive()) {
|
|
160
|
+
this.captureCrashOutput();
|
|
161
|
+
this.cleanupChildProcesses();
|
|
162
|
+
try {
|
|
163
|
+
// Send C-c for graceful shutdown
|
|
164
|
+
execFileSync(this.tmuxPath, ['send-keys', '-t', `=${this.serverSessionName}:`, 'C-c'], {
|
|
165
|
+
stdio: 'ignore', timeout: 5000,
|
|
166
|
+
});
|
|
167
|
+
await new Promise(r => setTimeout(r, 3000));
|
|
168
|
+
// Force kill if still alive
|
|
169
|
+
if (this.isServerSessionAlive()) {
|
|
170
|
+
execFileSync(this.tmuxPath, ['kill-session', '-t', `=${this.serverSessionName}`], {
|
|
171
|
+
stdio: 'ignore',
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
catch { /* ignore */ }
|
|
176
|
+
}
|
|
177
|
+
// Wait for port release
|
|
178
|
+
await new Promise(r => setTimeout(r, 2000));
|
|
179
|
+
// Spawn fresh server — uses the updated binary since spawnServer resolves
|
|
180
|
+
// cli.js relative to import.meta.url (the globally installed package)
|
|
181
|
+
this.restartAttempts = 0;
|
|
182
|
+
return this.spawnServer();
|
|
183
|
+
}
|
|
135
184
|
spawnServer() {
|
|
136
185
|
if (!this.tmuxPath)
|
|
137
186
|
return false;
|
|
138
187
|
try {
|
|
139
|
-
// Get the instar CLI path
|
|
188
|
+
// Get the instar CLI path — resolves from the lifeline's installed location,
|
|
189
|
+
// which is always the globally installed package (updated by npm install -g)
|
|
140
190
|
const cliPath = new URL('../cli.js', import.meta.url).pathname;
|
|
191
|
+
// Stderr capture: tee to crash log file for fast-exit diagnostics
|
|
192
|
+
const crashLogDir = this.stateDir ? path.join(this.stateDir, 'logs') : '/tmp';
|
|
193
|
+
try {
|
|
194
|
+
fs.mkdirSync(crashLogDir, { recursive: true });
|
|
195
|
+
}
|
|
196
|
+
catch { /* ignore */ }
|
|
197
|
+
const crashLogPath = path.join(crashLogDir, 'server-stderr.log');
|
|
141
198
|
// --no-telegram: lifeline owns the Telegram connection, server should not poll
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
.join(' ');
|
|
199
|
+
const quotedCli = cliPath.replace(/'/g, "'\\''");
|
|
200
|
+
const nodeCmd = `'node' '${quotedCli}' 'server' 'start' '--foreground' '--no-telegram' 2> >(tee '${crashLogPath}' >&2)`;
|
|
145
201
|
execFileSync(this.tmuxPath, [
|
|
146
202
|
'new-session', '-d',
|
|
147
203
|
'-s', this.serverSessionName,
|
|
148
204
|
'-c', this.projectDir,
|
|
149
|
-
nodeCmd,
|
|
205
|
+
`bash`, '-c', nodeCmd,
|
|
150
206
|
], { stdio: 'ignore' });
|
|
151
207
|
console.log(`[Supervisor] Server started in tmux session: ${this.serverSessionName}`);
|
|
152
208
|
this.isRunning = true;
|
|
@@ -178,19 +234,25 @@ export class ServerSupervisor extends EventEmitter {
|
|
|
178
234
|
this.healthCheckInterval = setInterval(async () => {
|
|
179
235
|
// Skip health checks during startup grace period — server needs time to boot
|
|
180
236
|
if (this.spawnedAt > 0 && (Date.now() - this.spawnedAt) < this.startupGraceMs) {
|
|
237
|
+
// But still check for restart requests during grace period
|
|
238
|
+
this.checkRestartRequest();
|
|
181
239
|
return;
|
|
182
240
|
}
|
|
183
241
|
try {
|
|
184
242
|
const healthy = await this.checkHealth();
|
|
185
243
|
if (healthy) {
|
|
186
244
|
if (!this.isRunning) {
|
|
187
|
-
this.clearPlannedRestartFlag();
|
|
188
245
|
this.emit('serverUp');
|
|
189
246
|
}
|
|
190
247
|
this.isRunning = true;
|
|
191
248
|
this.lastHealthy = Date.now();
|
|
192
249
|
this.restartAttempts = 0;
|
|
193
250
|
this.consecutiveFailures = 0;
|
|
251
|
+
// If circuit breaker was tripped and we recovered, reset it
|
|
252
|
+
if (this.circuitBroken) {
|
|
253
|
+
console.log('[Supervisor] Server recovered after circuit breaker — resetting');
|
|
254
|
+
this.resetCircuitBreaker();
|
|
255
|
+
}
|
|
194
256
|
}
|
|
195
257
|
else {
|
|
196
258
|
this.consecutiveFailures++;
|
|
@@ -205,6 +267,8 @@ export class ServerSupervisor extends EventEmitter {
|
|
|
205
267
|
this.handleUnhealthy();
|
|
206
268
|
}
|
|
207
269
|
}
|
|
270
|
+
// Check for restart requests from the server (e.g., auto-updater)
|
|
271
|
+
this.checkRestartRequest();
|
|
208
272
|
}, 10_000); // Check every 10 seconds
|
|
209
273
|
}
|
|
210
274
|
stopHealthChecks() {
|
|
@@ -231,27 +295,87 @@ export class ServerSupervisor extends EventEmitter {
|
|
|
231
295
|
return false;
|
|
232
296
|
}
|
|
233
297
|
}
|
|
298
|
+
// ── Restart request handling ──────────────────────────────────────
|
|
299
|
+
/**
|
|
300
|
+
* Check if the server (AutoUpdater) has requested a restart.
|
|
301
|
+
* Called during the health check loop. If a valid request exists,
|
|
302
|
+
* initiate a graceful restart of the server tmux session.
|
|
303
|
+
*/
|
|
304
|
+
checkRestartRequest() {
|
|
305
|
+
if (!this.stateDir)
|
|
306
|
+
return;
|
|
307
|
+
const flagPath = path.join(this.stateDir, 'state', 'restart-requested.json');
|
|
308
|
+
try {
|
|
309
|
+
if (!fs.existsSync(flagPath))
|
|
310
|
+
return;
|
|
311
|
+
const data = JSON.parse(fs.readFileSync(flagPath, 'utf-8'));
|
|
312
|
+
// Check TTL
|
|
313
|
+
if (data.expiresAt && new Date(data.expiresAt).getTime() < Date.now()) {
|
|
314
|
+
try {
|
|
315
|
+
fs.unlinkSync(flagPath);
|
|
316
|
+
}
|
|
317
|
+
catch { /* ignore */ }
|
|
318
|
+
console.log('[Supervisor] Expired restart request — ignoring');
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
console.log(`[Supervisor] Restart requested by ${data.requestedBy} for v${data.targetVersion}`);
|
|
322
|
+
// Clear the flag BEFORE restarting to prevent re-triggering
|
|
323
|
+
try {
|
|
324
|
+
fs.unlinkSync(flagPath);
|
|
325
|
+
}
|
|
326
|
+
catch { /* ignore */ }
|
|
327
|
+
// Also clean up legacy flag if present
|
|
328
|
+
this.clearLegacyRestartFlag();
|
|
329
|
+
// Initiate graceful restart
|
|
330
|
+
this.performGracefulRestart(`update to v${data.targetVersion}`);
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
// Malformed flag — clean up
|
|
334
|
+
try {
|
|
335
|
+
fs.unlinkSync(flagPath);
|
|
336
|
+
}
|
|
337
|
+
catch { /* ignore */ }
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
// ── Unhealthy handling ──────────────────────────────────────────
|
|
234
341
|
handleUnhealthy() {
|
|
235
|
-
// Circuit breaker —
|
|
236
|
-
if (this.circuitBroken)
|
|
342
|
+
// Circuit breaker — periodic retry instead of permanent death
|
|
343
|
+
if (this.circuitBroken) {
|
|
344
|
+
if (this.circuitBreakerRetryCount >= this.maxCircuitBreakerRetries) {
|
|
345
|
+
return; // Truly given up — needs manual intervention
|
|
346
|
+
}
|
|
347
|
+
const elapsed = Date.now() - this.circuitBreakerTrippedAt;
|
|
348
|
+
const nextRetryAt = this.circuitBreakerRetryIntervalMs * (this.circuitBreakerRetryCount + 1);
|
|
349
|
+
if (elapsed >= nextRetryAt) {
|
|
350
|
+
this.circuitBreakerRetryCount++;
|
|
351
|
+
console.log(`[Supervisor] Circuit breaker retry ${this.circuitBreakerRetryCount}/${this.maxCircuitBreakerRetries}`);
|
|
352
|
+
this.emit('serverRestarting', this.circuitBreakerRetryCount);
|
|
353
|
+
// Kill existing session if alive
|
|
354
|
+
if (this.tmuxPath && this.isServerSessionAlive()) {
|
|
355
|
+
this.captureCrashOutput();
|
|
356
|
+
this.cleanupChildProcesses();
|
|
357
|
+
try {
|
|
358
|
+
execFileSync(this.tmuxPath, ['kill-session', '-t', `=${this.serverSessionName}`], {
|
|
359
|
+
stdio: 'ignore',
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
catch { /* ignore */ }
|
|
363
|
+
}
|
|
364
|
+
this.spawnServer();
|
|
365
|
+
}
|
|
237
366
|
return;
|
|
238
|
-
|
|
239
|
-
//
|
|
240
|
-
|
|
241
|
-
// immediately instead of waiting for the flag to expire.
|
|
242
|
-
if (this.isPlannedRestart()) {
|
|
367
|
+
}
|
|
368
|
+
// Check for legacy planned restart flag (backward compatibility with old AutoUpdater)
|
|
369
|
+
if (this.isLegacyPlannedRestart()) {
|
|
243
370
|
if (!this.isServerSessionAlive()) {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
console.log('[Supervisor] Planned restart detected — server session dead. Respawning immediately.');
|
|
247
|
-
this.clearPlannedRestartFlag();
|
|
371
|
+
console.log('[Supervisor] Legacy planned restart detected — server session dead. Respawning.');
|
|
372
|
+
this.clearLegacyRestartFlag();
|
|
248
373
|
this.consecutiveFailures = 0;
|
|
249
374
|
this.spawnServer();
|
|
250
375
|
return;
|
|
251
376
|
}
|
|
252
|
-
console.log('[Supervisor] Health check failed but update-restart flag is active — suppressing alert');
|
|
377
|
+
console.log('[Supervisor] Health check failed but legacy update-restart flag is active — suppressing alert');
|
|
253
378
|
this.consecutiveFailures = 0;
|
|
254
|
-
// Reset grace period so the replacement process has time to start
|
|
255
379
|
this.spawnedAt = Date.now();
|
|
256
380
|
return;
|
|
257
381
|
}
|
|
@@ -268,27 +392,26 @@ export class ServerSupervisor extends EventEmitter {
|
|
|
268
392
|
this.totalFailures = 0;
|
|
269
393
|
}
|
|
270
394
|
this.totalFailures++;
|
|
271
|
-
// Circuit breaker: too many total failures in the window →
|
|
395
|
+
// Circuit breaker: too many total failures in the window → trip (but with periodic retry)
|
|
272
396
|
if (this.totalFailures >= this.circuitBreakerThreshold) {
|
|
273
397
|
this.circuitBroken = true;
|
|
274
|
-
|
|
398
|
+
this.circuitBreakerTrippedAt = Date.now();
|
|
399
|
+
this.circuitBreakerRetryCount = 0;
|
|
400
|
+
console.error(`[Supervisor] CIRCUIT BREAKER: ${this.totalFailures} failures in ${Math.round(this.circuitBreakerWindowMs / 60000)}m window. Will retry every ${this.circuitBreakerRetryIntervalMs / 60000}m (${this.maxCircuitBreakerRetries}x).`);
|
|
275
401
|
console.error(`[Supervisor] Last crash output:\n${this.lastCrashOutput}`);
|
|
276
402
|
this.emit('circuitBroken', this.totalFailures, this.lastCrashOutput);
|
|
277
403
|
return;
|
|
278
404
|
}
|
|
279
405
|
// After max retries exhausted, wait for cooldown before trying again.
|
|
280
|
-
// This prevents permanent death from transient issues (port conflicts, etc.)
|
|
281
406
|
if (this.restartAttempts >= this.maxRestartAttempts) {
|
|
282
407
|
if (this.maxRetriesExhaustedAt === 0) {
|
|
283
408
|
this.maxRetriesExhaustedAt = Date.now();
|
|
284
409
|
console.error(`[Supervisor] Max restart attempts (${this.maxRestartAttempts}) reached. Cooling down for ${this.retryCooldownMs / 1000}s before retrying.`);
|
|
285
410
|
}
|
|
286
411
|
if ((Date.now() - this.maxRetriesExhaustedAt) >= this.retryCooldownMs) {
|
|
287
|
-
// Cooldown elapsed — reset and try again
|
|
288
412
|
console.log(`[Supervisor] Cooldown elapsed. Resetting restart counter.`);
|
|
289
413
|
this.restartAttempts = 0;
|
|
290
414
|
this.maxRetriesExhaustedAt = 0;
|
|
291
|
-
// Fall through to the restart logic below
|
|
292
415
|
}
|
|
293
416
|
else {
|
|
294
417
|
return; // Still cooling down
|
|
@@ -314,25 +437,42 @@ export class ServerSupervisor extends EventEmitter {
|
|
|
314
437
|
this.spawnServer();
|
|
315
438
|
}, delay);
|
|
316
439
|
}
|
|
440
|
+
// ── Crash diagnostics ──────────────────────────────────────────
|
|
317
441
|
/**
|
|
318
|
-
* Capture
|
|
319
|
-
*
|
|
320
|
-
*
|
|
442
|
+
* Capture crash output from multiple sources:
|
|
443
|
+
* 1. tmux pane capture (last 50 lines of terminal output)
|
|
444
|
+
* 2. stderr crash log file (tee'd from server process)
|
|
321
445
|
*/
|
|
322
446
|
captureCrashOutput() {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
447
|
+
// Try tmux pane capture first
|
|
448
|
+
if (this.tmuxPath) {
|
|
449
|
+
try {
|
|
450
|
+
const output = execFileSync(this.tmuxPath, [
|
|
451
|
+
'capture-pane', '-t', `=${this.serverSessionName}:`, '-p', '-S', '-50',
|
|
452
|
+
], { encoding: 'utf-8', timeout: 5000 });
|
|
453
|
+
if (output.trim()) {
|
|
454
|
+
this.lastCrashOutput = output.trim();
|
|
455
|
+
console.log(`[Supervisor] Crash output from tmux:\n${this.lastCrashOutput.slice(-500)}`);
|
|
456
|
+
return;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
catch { // @silent-fallback-ok — capture may fail if session already dead
|
|
332
460
|
}
|
|
333
461
|
}
|
|
334
|
-
|
|
335
|
-
|
|
462
|
+
// Fallback: read the stderr crash log
|
|
463
|
+
if (this.stateDir) {
|
|
464
|
+
const crashLogPath = path.join(this.stateDir, 'logs', 'server-stderr.log');
|
|
465
|
+
try {
|
|
466
|
+
if (fs.existsSync(crashLogPath)) {
|
|
467
|
+
const content = fs.readFileSync(crashLogPath, 'utf-8');
|
|
468
|
+
const last500 = content.slice(-500).trim();
|
|
469
|
+
if (last500) {
|
|
470
|
+
this.lastCrashOutput = last500;
|
|
471
|
+
console.log(`[Supervisor] Crash output from stderr log:\n${last500}`);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
catch { /* ignore */ }
|
|
336
476
|
}
|
|
337
477
|
}
|
|
338
478
|
/**
|
|
@@ -343,15 +483,12 @@ export class ServerSupervisor extends EventEmitter {
|
|
|
343
483
|
if (!this.tmuxPath)
|
|
344
484
|
return;
|
|
345
485
|
try {
|
|
346
|
-
// Get the pane PID of the server tmux session
|
|
347
486
|
const panePid = execFileSync(this.tmuxPath, [
|
|
348
487
|
'list-panes', '-t', `=${this.serverSessionName}`, '-F', '#{pane_pid}',
|
|
349
488
|
], { encoding: 'utf-8', timeout: 5000 }).trim().split('\n')[0];
|
|
350
489
|
if (!panePid)
|
|
351
490
|
return;
|
|
352
|
-
// Find all descendant processes
|
|
353
491
|
const descendants = shellExec(`pgrep -P ${panePid} 2>/dev/null; pgrep -g ${panePid} 2>/dev/null`).trim().split('\n').filter(Boolean).map(Number).filter(n => !isNaN(n));
|
|
354
|
-
// Deduplicate
|
|
355
492
|
const unique = [...new Set(descendants)].filter(pid => pid !== parseInt(panePid));
|
|
356
493
|
if (unique.length > 0) {
|
|
357
494
|
console.log(`[Supervisor] Cleaning up ${unique.length} child process(es) before restart: ${unique.join(', ')}`);
|
|
@@ -359,15 +496,12 @@ export class ServerSupervisor extends EventEmitter {
|
|
|
359
496
|
try {
|
|
360
497
|
process.kill(pid, 'SIGTERM');
|
|
361
498
|
}
|
|
362
|
-
catch {
|
|
363
|
-
// Already dead
|
|
364
|
-
}
|
|
499
|
+
catch { /* already dead */ }
|
|
365
500
|
}
|
|
366
|
-
// Give them a moment, then SIGKILL any survivors
|
|
367
501
|
setTimeout(() => {
|
|
368
502
|
for (const pid of unique) {
|
|
369
503
|
try {
|
|
370
|
-
process.kill(pid, 0);
|
|
504
|
+
process.kill(pid, 0);
|
|
371
505
|
process.kill(pid, 'SIGKILL');
|
|
372
506
|
}
|
|
373
507
|
catch { /* dead */ }
|
|
@@ -376,15 +510,14 @@ export class ServerSupervisor extends EventEmitter {
|
|
|
376
510
|
}
|
|
377
511
|
}
|
|
378
512
|
catch { // @silent-fallback-ok — cleanup is best-effort
|
|
379
|
-
// Best effort
|
|
380
513
|
}
|
|
381
514
|
}
|
|
382
|
-
// ──
|
|
515
|
+
// ── Legacy flag handling (backward compatibility) ──────────────
|
|
383
516
|
/**
|
|
384
|
-
* Check
|
|
385
|
-
*
|
|
517
|
+
* Check for the legacy update-restart.json flag (written by old AutoUpdater versions).
|
|
518
|
+
* New versions write restart-requested.json instead, handled by checkRestartRequest().
|
|
386
519
|
*/
|
|
387
|
-
|
|
520
|
+
isLegacyPlannedRestart() {
|
|
388
521
|
if (!this.stateDir)
|
|
389
522
|
return false;
|
|
390
523
|
const flagPath = path.join(this.stateDir, 'state', 'update-restart.json');
|
|
@@ -393,7 +526,6 @@ export class ServerSupervisor extends EventEmitter {
|
|
|
393
526
|
return false;
|
|
394
527
|
const data = JSON.parse(fs.readFileSync(flagPath, 'utf-8'));
|
|
395
528
|
if (data.expiresAt && new Date(data.expiresAt).getTime() < Date.now()) {
|
|
396
|
-
// Expired — clean up and treat as unplanned failure
|
|
397
529
|
try {
|
|
398
530
|
fs.unlinkSync(flagPath);
|
|
399
531
|
}
|
|
@@ -406,17 +538,14 @@ export class ServerSupervisor extends EventEmitter {
|
|
|
406
538
|
return false;
|
|
407
539
|
}
|
|
408
540
|
}
|
|
409
|
-
|
|
410
|
-
* Clear the update-restart flag after the server comes back healthy.
|
|
411
|
-
*/
|
|
412
|
-
clearPlannedRestartFlag() {
|
|
541
|
+
clearLegacyRestartFlag() {
|
|
413
542
|
if (!this.stateDir)
|
|
414
543
|
return;
|
|
415
544
|
const flagPath = path.join(this.stateDir, 'state', 'update-restart.json');
|
|
416
545
|
try {
|
|
417
546
|
if (fs.existsSync(flagPath)) {
|
|
418
547
|
fs.unlinkSync(flagPath);
|
|
419
|
-
console.log('[Supervisor] Cleared update-restart flag
|
|
548
|
+
console.log('[Supervisor] Cleared legacy update-restart flag');
|
|
420
549
|
}
|
|
421
550
|
}
|
|
422
551
|
catch { /* ignore */ }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerSupervisor.js","sourceRoot":"","sources":["../../src/lifeline/ServerSupervisor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ServerSupervisor.js","sourceRoot":"","sources":["../../src/lifeline/ServerSupervisor.ts"],"names":[],"mappings":"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"}
|