instar 0.9.78 → 0.9.79
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/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +2 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/core/AutoUpdater.d.ts +44 -1
- package/dist/core/AutoUpdater.d.ts.map +1 -1
- package/dist/core/AutoUpdater.js +190 -16
- package/dist/core/AutoUpdater.js.map +1 -1
- package/dist/core/UpdateGate.d.ts +98 -0
- package/dist/core/UpdateGate.d.ts.map +1 -0
- package/dist/core/UpdateGate.js +138 -0
- package/dist/core/UpdateGate.js.map +1 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +46 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
package/dist/core/AutoUpdater.js
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import fs from 'node:fs';
|
|
21
21
|
import path from 'node:path';
|
|
22
|
+
import { UpdateGate } from './UpdateGate.js';
|
|
22
23
|
export class AutoUpdater {
|
|
23
24
|
updateChecker;
|
|
24
25
|
telegram;
|
|
@@ -34,6 +35,15 @@ export class AutoUpdater {
|
|
|
34
35
|
stateDir;
|
|
35
36
|
stateFile;
|
|
36
37
|
liveConfig = null;
|
|
38
|
+
// Update coalescing — batch rapid-fire publishes into a single restart
|
|
39
|
+
applyTimer = null;
|
|
40
|
+
pendingUpdateDetectedAt = null;
|
|
41
|
+
coalescingUntil = null;
|
|
42
|
+
// Session-aware restart gating
|
|
43
|
+
gate;
|
|
44
|
+
sessionManager = null;
|
|
45
|
+
sessionMonitor = null;
|
|
46
|
+
deferralTimer = null;
|
|
37
47
|
constructor(updateChecker, state, stateDir, config, telegram, liveConfig) {
|
|
38
48
|
this.updateChecker = updateChecker;
|
|
39
49
|
this.state = state;
|
|
@@ -46,7 +56,10 @@ export class AutoUpdater {
|
|
|
46
56
|
autoApply: config?.autoApply ?? true,
|
|
47
57
|
autoRestart: config?.autoRestart ?? true,
|
|
48
58
|
notificationTopicId: config?.notificationTopicId ?? 0,
|
|
59
|
+
applyDelayMinutes: config?.applyDelayMinutes ?? 5,
|
|
60
|
+
preRestartDelaySecs: config?.preRestartDelaySecs ?? 60,
|
|
49
61
|
};
|
|
62
|
+
this.gate = new UpdateGate();
|
|
50
63
|
// Load persisted state (survives restarts)
|
|
51
64
|
this.loadState();
|
|
52
65
|
}
|
|
@@ -74,11 +87,22 @@ export class AutoUpdater {
|
|
|
74
87
|
clearInterval(this.interval);
|
|
75
88
|
this.interval = null;
|
|
76
89
|
}
|
|
90
|
+
if (this.applyTimer) {
|
|
91
|
+
clearTimeout(this.applyTimer);
|
|
92
|
+
this.applyTimer = null;
|
|
93
|
+
this.coalescingUntil = null;
|
|
94
|
+
}
|
|
95
|
+
if (this.deferralTimer) {
|
|
96
|
+
clearTimeout(this.deferralTimer);
|
|
97
|
+
this.deferralTimer = null;
|
|
98
|
+
}
|
|
99
|
+
this.gate.reset();
|
|
77
100
|
}
|
|
78
101
|
/**
|
|
79
102
|
* Get current auto-updater status.
|
|
80
103
|
*/
|
|
81
104
|
getStatus() {
|
|
105
|
+
const gateStatus = this.gate.getStatus();
|
|
82
106
|
return {
|
|
83
107
|
running: this.interval !== null,
|
|
84
108
|
lastCheck: this.lastCheck,
|
|
@@ -87,6 +111,11 @@ export class AutoUpdater {
|
|
|
87
111
|
config: { ...this.config },
|
|
88
112
|
pendingUpdate: this.pendingUpdate,
|
|
89
113
|
lastError: this.lastError,
|
|
114
|
+
coalescingUntil: this.coalescingUntil,
|
|
115
|
+
pendingUpdateDetectedAt: this.pendingUpdateDetectedAt,
|
|
116
|
+
deferralReason: gateStatus.deferralReason,
|
|
117
|
+
deferralElapsedMinutes: gateStatus.deferralElapsedMinutes,
|
|
118
|
+
maxDeferralHours: gateStatus.maxDeferralHours,
|
|
90
119
|
};
|
|
91
120
|
}
|
|
92
121
|
/**
|
|
@@ -95,6 +124,14 @@ export class AutoUpdater {
|
|
|
95
124
|
setTelegram(telegram) {
|
|
96
125
|
this.telegram = telegram;
|
|
97
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Set session dependencies for session-aware restart gating.
|
|
129
|
+
* May be wired after construction (like Telegram).
|
|
130
|
+
*/
|
|
131
|
+
setSessionDeps(sessionManager, sessionMonitor) {
|
|
132
|
+
this.sessionManager = sessionManager;
|
|
133
|
+
this.sessionMonitor = sessionMonitor ?? null;
|
|
134
|
+
}
|
|
98
135
|
/**
|
|
99
136
|
* Re-read dynamic config values from disk via LiveConfig.
|
|
100
137
|
* Sessions or external edits may have changed them since startup.
|
|
@@ -130,7 +167,11 @@ export class AutoUpdater {
|
|
|
130
167
|
}
|
|
131
168
|
/**
|
|
132
169
|
* One tick of the update loop.
|
|
133
|
-
* Check →
|
|
170
|
+
* Check → detect update → start coalescing timer → apply after delay.
|
|
171
|
+
*
|
|
172
|
+
* The coalescing timer handles rapid-fire publishes: if 0.9.74, 0.9.75,
|
|
173
|
+
* and 0.9.76 are published within 10 minutes, we apply only 0.9.76.
|
|
174
|
+
* Each new version resets the timer.
|
|
134
175
|
*/
|
|
135
176
|
async tick() {
|
|
136
177
|
if (this.isApplying) {
|
|
@@ -146,51 +187,111 @@ export class AutoUpdater {
|
|
|
146
187
|
this.lastError = null;
|
|
147
188
|
if (!info.updateAvailable) {
|
|
148
189
|
this.pendingUpdate = null;
|
|
190
|
+
this.pendingUpdateDetectedAt = null;
|
|
191
|
+
this.coalescingUntil = null;
|
|
192
|
+
if (this.applyTimer) {
|
|
193
|
+
clearTimeout(this.applyTimer);
|
|
194
|
+
this.applyTimer = null;
|
|
195
|
+
}
|
|
149
196
|
this.saveState();
|
|
150
197
|
return;
|
|
151
198
|
}
|
|
152
199
|
console.log(`[AutoUpdater] Update available: ${info.currentVersion} → ${info.latestVersion}`);
|
|
200
|
+
// Track first detection time (don't reset on subsequent detections of newer versions)
|
|
201
|
+
if (!this.pendingUpdateDetectedAt) {
|
|
202
|
+
this.pendingUpdateDetectedAt = new Date().toISOString();
|
|
203
|
+
}
|
|
153
204
|
this.pendingUpdate = info.latestVersion;
|
|
154
|
-
this.saveState();
|
|
155
205
|
// Step 2: Auto-apply if configured
|
|
156
206
|
if (!this.config.autoApply) {
|
|
207
|
+
this.saveState();
|
|
157
208
|
// Notify with actionable instructions — don't leave the user hanging
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
`
|
|
209
|
+
// Only notify once per detected version (avoid spam on every tick)
|
|
210
|
+
if (!this.coalescingUntil) {
|
|
211
|
+
await this.notify(`There's a new version available (v${info.latestVersion}). I'm currently on v${info.currentVersion}.\n\n` +
|
|
212
|
+
`Auto-updates are off. Just say "update" or "apply the update" and I'll handle it. ` +
|
|
213
|
+
`Or to turn on auto-updates so this happens automatically, say "turn on auto-updates".`);
|
|
214
|
+
// Set coalescingUntil as a "notified" marker to prevent re-notification
|
|
215
|
+
this.coalescingUntil = 'notified';
|
|
216
|
+
}
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
// Step 3: Start or reset coalescing timer
|
|
220
|
+
const delayMs = this.config.applyDelayMinutes * 60_000;
|
|
221
|
+
if (delayMs <= 0) {
|
|
222
|
+
// No coalescing — apply immediately (legacy behavior)
|
|
223
|
+
this.saveState();
|
|
224
|
+
await this.applyPendingUpdate();
|
|
161
225
|
return;
|
|
162
226
|
}
|
|
163
|
-
//
|
|
227
|
+
// Reset the coalescing timer (new version detected, wait for more)
|
|
228
|
+
if (this.applyTimer) {
|
|
229
|
+
clearTimeout(this.applyTimer);
|
|
230
|
+
console.log(`[AutoUpdater] Coalescing: timer reset — newer version v${info.latestVersion} detected`);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
console.log(`[AutoUpdater] Coalescing: waiting ${this.config.applyDelayMinutes}m before applying v${info.latestVersion}`);
|
|
234
|
+
}
|
|
235
|
+
this.coalescingUntil = new Date(Date.now() + delayMs).toISOString();
|
|
236
|
+
this.saveState();
|
|
237
|
+
this.applyTimer = setTimeout(async () => {
|
|
238
|
+
this.applyTimer = null;
|
|
239
|
+
this.coalescingUntil = null;
|
|
240
|
+
await this.applyPendingUpdate();
|
|
241
|
+
}, delayMs);
|
|
242
|
+
this.applyTimer.unref(); // Don't prevent process exit
|
|
243
|
+
}
|
|
244
|
+
catch (err) {
|
|
245
|
+
this.isApplying = false;
|
|
246
|
+
this.lastError = err instanceof Error ? err.message : String(err);
|
|
247
|
+
this.saveState();
|
|
248
|
+
console.error(`[AutoUpdater] Tick error: ${this.lastError}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Apply the pending update after coalescing delay.
|
|
253
|
+
* Extracted from tick() so it can be called by the coalescing timer
|
|
254
|
+
* and by manual trigger (POST /updates/apply).
|
|
255
|
+
*/
|
|
256
|
+
async applyPendingUpdate() {
|
|
257
|
+
if (this.isApplying) {
|
|
258
|
+
console.log('[AutoUpdater] Skipping apply — already in progress');
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
if (!this.pendingUpdate) {
|
|
262
|
+
console.log('[AutoUpdater] No pending update to apply');
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
const targetVersion = this.pendingUpdate;
|
|
266
|
+
try {
|
|
164
267
|
this.isApplying = true;
|
|
165
|
-
console.log(`[AutoUpdater] Applying update to v${
|
|
268
|
+
console.log(`[AutoUpdater] Applying update to v${targetVersion}...`);
|
|
166
269
|
const result = await this.updateChecker.applyUpdate();
|
|
167
270
|
this.isApplying = false;
|
|
168
271
|
if (!result.success) {
|
|
169
272
|
this.lastError = result.message;
|
|
170
273
|
this.saveState();
|
|
171
274
|
console.error(`[AutoUpdater] Update failed: ${result.message}`);
|
|
172
|
-
await this.notify(`Heads up — I tried to update to v${
|
|
275
|
+
await this.notify(`Heads up — I tried to update to v${targetVersion} but it didn't work out. ` +
|
|
173
276
|
`I'm still running fine on v${result.previousVersion}, so nothing's broken. ` +
|
|
174
277
|
`I'll try again next cycle.`);
|
|
175
278
|
return;
|
|
176
279
|
}
|
|
177
|
-
//
|
|
280
|
+
// Update succeeded
|
|
178
281
|
this.lastApply = new Date().toISOString();
|
|
179
282
|
this.lastAppliedVersion = result.newVersion;
|
|
180
283
|
this.pendingUpdate = null;
|
|
284
|
+
this.pendingUpdateDetectedAt = null;
|
|
285
|
+
this.coalescingUntil = null;
|
|
181
286
|
this.saveState();
|
|
182
287
|
console.log(`[AutoUpdater] Updated: v${result.previousVersion} → v${result.newVersion}`);
|
|
183
|
-
//
|
|
288
|
+
// Notify via Telegram
|
|
184
289
|
const guideExists = this.hasUpgradeGuide(result.newVersion);
|
|
185
290
|
const summaryNote = guideExists
|
|
186
291
|
? ` I'll send you a summary of what's new once I'm back up.`
|
|
187
292
|
: '';
|
|
188
293
|
if (result.restartNeeded) {
|
|
189
|
-
await this.
|
|
190
|
-
// Step 6: Request restart from supervisor (don't self-restart)
|
|
191
|
-
// Brief delay to let the Telegram notification send
|
|
192
|
-
await new Promise(r => setTimeout(r, 2000));
|
|
193
|
-
this.requestRestart(result.newVersion);
|
|
294
|
+
await this.gatedRestart(result.newVersion, summaryNote);
|
|
194
295
|
}
|
|
195
296
|
else {
|
|
196
297
|
await this.notify(`Just updated to v${result.newVersion}.${summaryNote}`);
|
|
@@ -200,8 +301,75 @@ export class AutoUpdater {
|
|
|
200
301
|
this.isApplying = false;
|
|
201
302
|
this.lastError = err instanceof Error ? err.message : String(err);
|
|
202
303
|
this.saveState();
|
|
203
|
-
console.error(`[AutoUpdater]
|
|
304
|
+
console.error(`[AutoUpdater] Apply error: ${this.lastError}`);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Attempt restart with session-aware gating.
|
|
309
|
+
* If sessions are active, defers and retries on a timer.
|
|
310
|
+
* After max deferral, restarts regardless with warnings.
|
|
311
|
+
*/
|
|
312
|
+
async gatedRestart(newVersion, summaryNote) {
|
|
313
|
+
// If no session manager is wired, skip gating
|
|
314
|
+
if (!this.sessionManager) {
|
|
315
|
+
await this.notify(`Just updated to v${newVersion}. Restarting to pick up the changes.${summaryNote}`);
|
|
316
|
+
await new Promise(r => setTimeout(r, 2000));
|
|
317
|
+
this.requestRestart(newVersion);
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
const result = this.gate.canRestart(this.sessionManager, this.sessionMonitor);
|
|
321
|
+
if (result.unresponsiveSessions?.length) {
|
|
322
|
+
console.log(`[AutoUpdater] Unresponsive sessions (not blocking): ${result.unresponsiveSessions.join(', ')}`);
|
|
323
|
+
}
|
|
324
|
+
if (result.allowed) {
|
|
325
|
+
// Clear any deferral timer
|
|
326
|
+
if (this.deferralTimer) {
|
|
327
|
+
clearTimeout(this.deferralTimer);
|
|
328
|
+
this.deferralTimer = null;
|
|
329
|
+
}
|
|
330
|
+
// Check if there are still running sessions (idle/unresponsive — not blocking)
|
|
331
|
+
const runningSessions = this.sessionManager.listRunningSessions();
|
|
332
|
+
const hasRunningSessions = runningSessions.length > 0;
|
|
333
|
+
if (result.reason?.includes('Max deferral')) {
|
|
334
|
+
await this.notify(`Update to v${newVersion} was deferred for active sessions, but the maximum wait has been reached. Restarting now.${summaryNote}`);
|
|
335
|
+
}
|
|
336
|
+
else if (hasRunningSessions) {
|
|
337
|
+
// Sessions exist but aren't blocking — send pre-restart notification
|
|
338
|
+
const delaySecs = this.config.preRestartDelaySecs;
|
|
339
|
+
await this.notify(`Just updated to v${newVersion}. Server restarting in ${delaySecs} seconds. ` +
|
|
340
|
+
`${runningSessions.length} session(s) will resume after restart.${summaryNote}`);
|
|
341
|
+
// Give sessions a moment to checkpoint
|
|
342
|
+
if (delaySecs > 0) {
|
|
343
|
+
console.log(`[AutoUpdater] Pre-restart delay: ${delaySecs}s for ${runningSessions.length} session(s)`);
|
|
344
|
+
await new Promise(r => setTimeout(r, delaySecs * 1000));
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
await this.notify(`Just updated to v${newVersion}. Restarting to pick up the changes.${summaryNote}`);
|
|
349
|
+
}
|
|
350
|
+
await new Promise(r => setTimeout(r, 2000));
|
|
351
|
+
this.requestRestart(newVersion);
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
// Sessions are blocking — defer
|
|
355
|
+
console.log(`[AutoUpdater] Restart deferred: ${result.reason}. Will retry in ${Math.round((result.retryInMs ?? 300_000) / 60_000)}m`);
|
|
356
|
+
// Send warnings at thresholds
|
|
357
|
+
if (this.gate.shouldSendFinalWarning()) {
|
|
358
|
+
await this.notify(`Update to v${newVersion} installed. Server will restart in ~5 minutes regardless of active sessions.`);
|
|
359
|
+
}
|
|
360
|
+
else if (this.gate.shouldSendFirstWarning()) {
|
|
361
|
+
await this.notify(`Update to v${newVersion} installed but restart is being deferred for ${result.blockingSessions?.length} active session(s). ` +
|
|
362
|
+
`Will force restart in ~30 minutes if sessions don't finish.`);
|
|
363
|
+
}
|
|
364
|
+
// Schedule retry
|
|
365
|
+
if (this.deferralTimer) {
|
|
366
|
+
clearTimeout(this.deferralTimer);
|
|
204
367
|
}
|
|
368
|
+
this.deferralTimer = setTimeout(async () => {
|
|
369
|
+
this.deferralTimer = null;
|
|
370
|
+
await this.gatedRestart(newVersion, summaryNote);
|
|
371
|
+
}, result.retryInMs ?? 300_000);
|
|
372
|
+
this.deferralTimer.unref();
|
|
205
373
|
}
|
|
206
374
|
/**
|
|
207
375
|
* Request a restart from the supervisor by writing a signal file.
|
|
@@ -302,6 +470,10 @@ export class AutoUpdater {
|
|
|
302
470
|
this.lastAppliedVersion = data.lastAppliedVersion ?? null;
|
|
303
471
|
this.lastError = data.lastError ?? null;
|
|
304
472
|
this.pendingUpdate = data.pendingUpdate ?? null;
|
|
473
|
+
this.pendingUpdateDetectedAt = data.pendingUpdateDetectedAt ?? null;
|
|
474
|
+
// Don't restore coalescingUntil — the timer is in-memory only.
|
|
475
|
+
// On restart, if there's still a pendingUpdate, the next tick()
|
|
476
|
+
// will re-detect it and start a fresh coalescing timer.
|
|
305
477
|
}
|
|
306
478
|
}
|
|
307
479
|
catch {
|
|
@@ -317,6 +489,8 @@ export class AutoUpdater {
|
|
|
317
489
|
lastAppliedVersion: this.lastAppliedVersion,
|
|
318
490
|
lastError: this.lastError,
|
|
319
491
|
pendingUpdate: this.pendingUpdate,
|
|
492
|
+
pendingUpdateDetectedAt: this.pendingUpdateDetectedAt,
|
|
493
|
+
coalescingUntil: this.coalescingUntil,
|
|
320
494
|
savedAt: new Date().toISOString(),
|
|
321
495
|
};
|
|
322
496
|
// Atomic write
|
|
@@ -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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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UpdateGate — Session-aware restart gating.
|
|
3
|
+
*
|
|
4
|
+
* Checks whether it's safe to restart the server for an update.
|
|
5
|
+
* Only 'healthy' (actively producing output) sessions block restarts.
|
|
6
|
+
* 'unresponsive', 'idle', and 'dead' sessions don't — blocking an update
|
|
7
|
+
* for a broken session serves no user interest.
|
|
8
|
+
*
|
|
9
|
+
* Maximum deferral: 4 hours. After that, restart regardless with advance warnings.
|
|
10
|
+
*/
|
|
11
|
+
export interface SessionInfo {
|
|
12
|
+
name: string;
|
|
13
|
+
topicId?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface SessionHealthEntry {
|
|
16
|
+
topicId: number;
|
|
17
|
+
sessionName: string;
|
|
18
|
+
status: string;
|
|
19
|
+
idleMinutes: number;
|
|
20
|
+
}
|
|
21
|
+
export interface GateResult {
|
|
22
|
+
allowed: boolean;
|
|
23
|
+
reason?: string;
|
|
24
|
+
retryInMs?: number;
|
|
25
|
+
/** Sessions that are actively blocking the restart */
|
|
26
|
+
blockingSessions?: string[];
|
|
27
|
+
/** Sessions that are unresponsive (warned but not blocking) */
|
|
28
|
+
unresponsiveSessions?: string[];
|
|
29
|
+
}
|
|
30
|
+
export interface UpdateGateConfig {
|
|
31
|
+
/** Maximum hours to defer a restart for active sessions. Default: 4 */
|
|
32
|
+
maxDeferralHours?: number;
|
|
33
|
+
/** Minutes before forced restart to send first warning. Default: 30 */
|
|
34
|
+
firstWarningMinutes?: number;
|
|
35
|
+
/** Minutes before forced restart to send final warning. Default: 5 */
|
|
36
|
+
finalWarningMinutes?: number;
|
|
37
|
+
/** How often to re-check sessions during deferral, in ms. Default: 5 * 60_000 (5 min) */
|
|
38
|
+
retryIntervalMs?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface UpdateGateStatus {
|
|
41
|
+
/** Whether a restart is currently being deferred */
|
|
42
|
+
deferring: boolean;
|
|
43
|
+
/** When deferral started */
|
|
44
|
+
deferralStartedAt: string | null;
|
|
45
|
+
/** How long we've been deferring, in minutes */
|
|
46
|
+
deferralElapsedMinutes: number;
|
|
47
|
+
/** Max deferral before forced restart */
|
|
48
|
+
maxDeferralHours: number;
|
|
49
|
+
/** Reason for current deferral */
|
|
50
|
+
deferralReason: string | null;
|
|
51
|
+
/** Whether the first warning (T-30min) has been sent */
|
|
52
|
+
firstWarningSent: boolean;
|
|
53
|
+
/** Whether the final warning (T-5min) has been sent */
|
|
54
|
+
finalWarningSent: boolean;
|
|
55
|
+
}
|
|
56
|
+
/** Minimal interface for SessionManager — only what we need */
|
|
57
|
+
export interface SessionManagerLike {
|
|
58
|
+
listRunningSessions(): SessionInfo[];
|
|
59
|
+
}
|
|
60
|
+
/** Minimal interface for SessionMonitor — only what we need */
|
|
61
|
+
export interface SessionMonitorLike {
|
|
62
|
+
getStatus(): {
|
|
63
|
+
sessionHealth: SessionHealthEntry[];
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export declare class UpdateGate {
|
|
67
|
+
private config;
|
|
68
|
+
private deferralStartedAt;
|
|
69
|
+
private deferralReason;
|
|
70
|
+
private firstWarningSent;
|
|
71
|
+
private finalWarningSent;
|
|
72
|
+
constructor(config?: UpdateGateConfig);
|
|
73
|
+
/**
|
|
74
|
+
* Check if it's safe to restart now.
|
|
75
|
+
*
|
|
76
|
+
* Returns { allowed: true } if restart can proceed.
|
|
77
|
+
* Returns { allowed: false, retryInMs, reason } if sessions are blocking.
|
|
78
|
+
*/
|
|
79
|
+
canRestart(sessionManager: SessionManagerLike, sessionMonitor?: SessionMonitorLike | null): GateResult;
|
|
80
|
+
/**
|
|
81
|
+
* Get current gate status for observability.
|
|
82
|
+
*/
|
|
83
|
+
getStatus(): UpdateGateStatus;
|
|
84
|
+
/**
|
|
85
|
+
* Whether the first warning (T-30min before forced restart) should fire.
|
|
86
|
+
* Caller checks this and sends the notification, then it won't fire again.
|
|
87
|
+
*/
|
|
88
|
+
shouldSendFirstWarning(): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Whether the final warning (T-5min before forced restart) should fire.
|
|
91
|
+
*/
|
|
92
|
+
shouldSendFinalWarning(): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Reset deferral state (called after restart proceeds or update is cancelled).
|
|
95
|
+
*/
|
|
96
|
+
reset(): void;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=UpdateGate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpdateGate.d.ts","sourceRoot":"","sources":["../../src/core/UpdateGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,+DAA+D;IAC/D,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sEAAsE;IACtE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yFAAyF;IACzF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,gDAAgD;IAChD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yCAAyC;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wDAAwD;IACxD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uDAAuD;IACvD,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,+DAA+D;AAC/D,MAAM,WAAW,kBAAkB;IACjC,mBAAmB,IAAI,WAAW,EAAE,CAAC;CACtC;AAED,+DAA+D;AAC/D,MAAM,WAAW,kBAAkB;IACjC,SAAS,IAAI;QACX,aAAa,EAAE,kBAAkB,EAAE,CAAC;KACrC,CAAC;CACH;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,CAAC,EAAE,gBAAgB;IASrC;;;;;OAKG;IACH,UAAU,CACR,cAAc,EAAE,kBAAkB,EAClC,cAAc,CAAC,EAAE,kBAAkB,GAAG,IAAI,GACzC,UAAU;IAiFb;;OAEG;IACH,SAAS,IAAI,gBAAgB;IAa7B;;;OAGG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UpdateGate — Session-aware restart gating.
|
|
3
|
+
*
|
|
4
|
+
* Checks whether it's safe to restart the server for an update.
|
|
5
|
+
* Only 'healthy' (actively producing output) sessions block restarts.
|
|
6
|
+
* 'unresponsive', 'idle', and 'dead' sessions don't — blocking an update
|
|
7
|
+
* for a broken session serves no user interest.
|
|
8
|
+
*
|
|
9
|
+
* Maximum deferral: 4 hours. After that, restart regardless with advance warnings.
|
|
10
|
+
*/
|
|
11
|
+
export class UpdateGate {
|
|
12
|
+
config;
|
|
13
|
+
deferralStartedAt = null;
|
|
14
|
+
deferralReason = null;
|
|
15
|
+
firstWarningSent = false;
|
|
16
|
+
finalWarningSent = false;
|
|
17
|
+
constructor(config) {
|
|
18
|
+
this.config = {
|
|
19
|
+
maxDeferralHours: config?.maxDeferralHours ?? 4,
|
|
20
|
+
firstWarningMinutes: config?.firstWarningMinutes ?? 30,
|
|
21
|
+
finalWarningMinutes: config?.finalWarningMinutes ?? 5,
|
|
22
|
+
retryIntervalMs: config?.retryIntervalMs ?? 5 * 60_000,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if it's safe to restart now.
|
|
27
|
+
*
|
|
28
|
+
* Returns { allowed: true } if restart can proceed.
|
|
29
|
+
* Returns { allowed: false, retryInMs, reason } if sessions are blocking.
|
|
30
|
+
*/
|
|
31
|
+
canRestart(sessionManager, sessionMonitor) {
|
|
32
|
+
const sessions = sessionManager.listRunningSessions();
|
|
33
|
+
// No sessions → restart immediately
|
|
34
|
+
if (sessions.length === 0) {
|
|
35
|
+
this.reset();
|
|
36
|
+
return { allowed: true };
|
|
37
|
+
}
|
|
38
|
+
// Check session health if monitor is available
|
|
39
|
+
const health = sessionMonitor?.getStatus().sessionHealth ?? [];
|
|
40
|
+
const healthMap = new Map(health.map(h => [h.sessionName, h]));
|
|
41
|
+
const activeSessions = [];
|
|
42
|
+
const unresponsiveSessions = [];
|
|
43
|
+
for (const session of sessions) {
|
|
44
|
+
const h = healthMap.get(session.name);
|
|
45
|
+
if (!h) {
|
|
46
|
+
// No health data — be conservative, treat as active
|
|
47
|
+
activeSessions.push(session.name);
|
|
48
|
+
}
|
|
49
|
+
else if (h.status === 'healthy') {
|
|
50
|
+
activeSessions.push(session.name);
|
|
51
|
+
}
|
|
52
|
+
else if (h.status === 'unresponsive') {
|
|
53
|
+
unresponsiveSessions.push(session.name);
|
|
54
|
+
}
|
|
55
|
+
// 'idle' and 'dead' sessions don't block
|
|
56
|
+
}
|
|
57
|
+
// No active sessions → restart (idle/dead/unresponsive don't block)
|
|
58
|
+
if (activeSessions.length === 0) {
|
|
59
|
+
this.reset();
|
|
60
|
+
return {
|
|
61
|
+
allowed: true,
|
|
62
|
+
unresponsiveSessions: unresponsiveSessions.length > 0 ? unresponsiveSessions : undefined,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
// Active sessions exist — start or continue deferral
|
|
66
|
+
if (!this.deferralStartedAt) {
|
|
67
|
+
this.deferralStartedAt = Date.now();
|
|
68
|
+
}
|
|
69
|
+
const elapsedMs = Date.now() - this.deferralStartedAt;
|
|
70
|
+
const maxDeferralMs = this.config.maxDeferralHours * 60 * 60_000;
|
|
71
|
+
const remainingMs = maxDeferralMs - elapsedMs;
|
|
72
|
+
this.deferralReason = `${activeSessions.length} active session(s): ${activeSessions.join(', ')}`;
|
|
73
|
+
// Check if max deferral exceeded → force restart
|
|
74
|
+
if (remainingMs <= 0) {
|
|
75
|
+
console.log(`[UpdateGate] Max deferral (${this.config.maxDeferralHours}h) exceeded — forcing restart`);
|
|
76
|
+
this.reset();
|
|
77
|
+
return {
|
|
78
|
+
allowed: true,
|
|
79
|
+
reason: `Max deferral exceeded (${this.config.maxDeferralHours}h)`,
|
|
80
|
+
blockingSessions: activeSessions,
|
|
81
|
+
unresponsiveSessions: unresponsiveSessions.length > 0 ? unresponsiveSessions : undefined,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Check warning thresholds
|
|
85
|
+
const remainingMinutes = remainingMs / 60_000;
|
|
86
|
+
if (remainingMinutes <= this.config.finalWarningMinutes && !this.finalWarningSent) {
|
|
87
|
+
this.finalWarningSent = true;
|
|
88
|
+
}
|
|
89
|
+
if (remainingMinutes <= this.config.firstWarningMinutes && !this.firstWarningSent) {
|
|
90
|
+
this.firstWarningSent = true;
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
allowed: false,
|
|
94
|
+
reason: this.deferralReason,
|
|
95
|
+
retryInMs: this.config.retryIntervalMs,
|
|
96
|
+
blockingSessions: activeSessions,
|
|
97
|
+
unresponsiveSessions: unresponsiveSessions.length > 0 ? unresponsiveSessions : undefined,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get current gate status for observability.
|
|
102
|
+
*/
|
|
103
|
+
getStatus() {
|
|
104
|
+
const elapsedMs = this.deferralStartedAt ? Date.now() - this.deferralStartedAt : 0;
|
|
105
|
+
return {
|
|
106
|
+
deferring: this.deferralStartedAt !== null,
|
|
107
|
+
deferralStartedAt: this.deferralStartedAt ? new Date(this.deferralStartedAt).toISOString() : null,
|
|
108
|
+
deferralElapsedMinutes: Math.round(elapsedMs / 60_000),
|
|
109
|
+
maxDeferralHours: this.config.maxDeferralHours,
|
|
110
|
+
deferralReason: this.deferralReason,
|
|
111
|
+
firstWarningSent: this.firstWarningSent,
|
|
112
|
+
finalWarningSent: this.finalWarningSent,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Whether the first warning (T-30min before forced restart) should fire.
|
|
117
|
+
* Caller checks this and sends the notification, then it won't fire again.
|
|
118
|
+
*/
|
|
119
|
+
shouldSendFirstWarning() {
|
|
120
|
+
return this.firstWarningSent;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Whether the final warning (T-5min before forced restart) should fire.
|
|
124
|
+
*/
|
|
125
|
+
shouldSendFinalWarning() {
|
|
126
|
+
return this.finalWarningSent;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Reset deferral state (called after restart proceeds or update is cancelled).
|
|
130
|
+
*/
|
|
131
|
+
reset() {
|
|
132
|
+
this.deferralStartedAt = null;
|
|
133
|
+
this.deferralReason = null;
|
|
134
|
+
this.firstWarningSent = false;
|
|
135
|
+
this.finalWarningSent = false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=UpdateGate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpdateGate.js","sourceRoot":"","sources":["../../src/core/UpdateGate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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"}
|