awb-agent-manager 1.6.187 → 1.6.188
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/lib/instance-heartbeat.d.ts +1 -0
- package/dist/lib/instance-heartbeat.js +18 -1
- package/dist/lib/instance-heartbeat.js.map +1 -1
- package/dist/lib/self-update-rollback.d.ts +76 -0
- package/dist/lib/self-update-rollback.js +324 -0
- package/dist/lib/self-update-rollback.js.map +1 -0
- package/dist/lib/self-update.d.ts +50 -1
- package/dist/lib/self-update.js +425 -27
- package/dist/lib/self-update.js.map +1 -1
- package/dist/main.js +22 -1
- package/dist/main.js.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
|
@@ -20,6 +20,7 @@ export interface InstanceMeta {
|
|
|
20
20
|
dispatchSuppressionCountsProvider?: (() => Record<string, number>) | null;
|
|
21
21
|
dispatchBlockCountsProvider?: (() => Record<string, number>) | null;
|
|
22
22
|
spawnFailureProvider?: (() => SpawnFailureSnapshot) | null;
|
|
23
|
+
onFirstPostSuccess?: (() => void) | null;
|
|
23
24
|
}
|
|
24
25
|
export interface ManagedAgentSnapshot {
|
|
25
26
|
liveAgentIds(): string[];
|
|
@@ -10,9 +10,11 @@ export class InstanceHeartbeat {
|
|
|
10
10
|
#startedAt;
|
|
11
11
|
#timer = null;
|
|
12
12
|
#stopped = false;
|
|
13
|
+
#onFirstPostSuccess = null;
|
|
13
14
|
constructor(config, agentId, meta) {
|
|
14
15
|
this.#config = config;
|
|
15
16
|
this.#agentId = agentId;
|
|
17
|
+
this.#onFirstPostSuccess = meta?.onFirstPostSuccess ?? null;
|
|
16
18
|
this.#instanceId = randomUUID();
|
|
17
19
|
this.#startedAt = new Date().toISOString();
|
|
18
20
|
const cliAdapters = Array.isArray(meta?.cliAdapters)
|
|
@@ -202,11 +204,26 @@ export class InstanceHeartbeat {
|
|
|
202
204
|
signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
|
|
203
205
|
});
|
|
204
206
|
if (!resp.ok) {
|
|
205
|
-
if (resp.status === 404)
|
|
207
|
+
if (resp.status === 404) {
|
|
208
|
+
this.#notifyFirstSuccess();
|
|
206
209
|
return;
|
|
210
|
+
}
|
|
207
211
|
throw new Error(`POST /api/agent/instance-heartbeat HTTP ${resp.status}`);
|
|
208
212
|
}
|
|
209
213
|
await resp.text().catch(() => null);
|
|
214
|
+
this.#notifyFirstSuccess();
|
|
215
|
+
}
|
|
216
|
+
#notifyFirstSuccess() {
|
|
217
|
+
const cb = this.#onFirstPostSuccess;
|
|
218
|
+
if (!cb)
|
|
219
|
+
return;
|
|
220
|
+
this.#onFirstPostSuccess = null;
|
|
221
|
+
try {
|
|
222
|
+
cb();
|
|
223
|
+
}
|
|
224
|
+
catch (err) {
|
|
225
|
+
log(`Instance heartbeat: boot-verification callback failed: ${err?.message ?? err}`);
|
|
226
|
+
}
|
|
210
227
|
}
|
|
211
228
|
}
|
|
212
229
|
//# sourceMappingURL=instance-heartbeat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-heartbeat.js","sourceRoot":"","sources":["../../src/lib/instance-heartbeat.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"instance-heartbeat.js","sourceRoot":"","sources":["../../src/lib/instance-heartbeat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export declare const MAX_INSTALL_ATTEMPTS = 3;
|
|
2
|
+
export declare const INSTALL_RETRY_BACKOFFS_MS: readonly number[];
|
|
3
|
+
export declare const BOOT_VERIFY_TIMEOUT_MS: number;
|
|
4
|
+
export declare const MAX_ROLLBACK_ATTEMPTS = 2;
|
|
5
|
+
export type BootVerificationPhase = 'installing' | 'install_failed' | 'install_blocked' | 'awaiting_boot' | 'rolling_back';
|
|
6
|
+
export interface BootVerificationRecord {
|
|
7
|
+
phase: BootVerificationPhase;
|
|
8
|
+
previousVersion: string;
|
|
9
|
+
targetVersion: string;
|
|
10
|
+
bootAttempts: number;
|
|
11
|
+
installFailures: number;
|
|
12
|
+
lastInstallFailureAtMs: number | null;
|
|
13
|
+
rollbackAttempts: number;
|
|
14
|
+
reason: string;
|
|
15
|
+
updatedAtMs: number;
|
|
16
|
+
}
|
|
17
|
+
export interface UpdatePinRecord {
|
|
18
|
+
version: string;
|
|
19
|
+
reason: string;
|
|
20
|
+
pinnedAtMs: number;
|
|
21
|
+
}
|
|
22
|
+
export declare function bootStatePath(dir?: string): string;
|
|
23
|
+
export declare function updatePinPath(dir?: string): string;
|
|
24
|
+
export declare function readBootVerificationRecord(dir?: string): BootVerificationRecord | null;
|
|
25
|
+
export declare function writeBootVerificationRecord(record: BootVerificationRecord, dir?: string): void;
|
|
26
|
+
export declare function clearBootVerificationRecord(dir?: string): void;
|
|
27
|
+
export declare function newInstallRecord(input: {
|
|
28
|
+
previousVersion: string;
|
|
29
|
+
targetVersion: string;
|
|
30
|
+
nowMs: number;
|
|
31
|
+
carryFrom?: BootVerificationRecord | null;
|
|
32
|
+
}): BootVerificationRecord;
|
|
33
|
+
export declare function withInstallFailure(record: BootVerificationRecord, nowMs: number, detail: string, maxAttempts?: number): BootVerificationRecord;
|
|
34
|
+
export declare function withAwaitingBoot(record: BootVerificationRecord, nowMs: number): BootVerificationRecord;
|
|
35
|
+
export declare function withBootAttempt(record: BootVerificationRecord, nowMs: number): BootVerificationRecord;
|
|
36
|
+
export declare function withRollbackAttempt(record: BootVerificationRecord, nowMs: number, detail: string): BootVerificationRecord;
|
|
37
|
+
export declare function readUpdatePin(dir?: string): UpdatePinRecord | null;
|
|
38
|
+
export declare function writeUpdatePin(pin: UpdatePinRecord, dir?: string): void;
|
|
39
|
+
export declare const UPDATE_WINDOW_ENV = "AWB_AGENT_MANAGER_UPDATE_WINDOW";
|
|
40
|
+
export interface MaintenanceWindow {
|
|
41
|
+
startMinute: number;
|
|
42
|
+
endMinute: number;
|
|
43
|
+
}
|
|
44
|
+
export declare function parseMaintenanceWindow(raw?: string | null): MaintenanceWindow | null;
|
|
45
|
+
export declare function isWithinMaintenanceWindow(now: Date, window: MaintenanceWindow | null): boolean;
|
|
46
|
+
export declare function withinMaintenanceWindowNow(now?: Date, raw?: string | null | undefined): boolean;
|
|
47
|
+
export type BootDecisionKind = 'none' | 'arm' | 'install_failed' | 'rollback' | 'pin_only' | 'rollback_landed' | 'rollback_failed' | 'stale';
|
|
48
|
+
export interface BootDecision {
|
|
49
|
+
kind: BootDecisionKind;
|
|
50
|
+
rollbackToVersion: string | null;
|
|
51
|
+
summary: string | null;
|
|
52
|
+
}
|
|
53
|
+
export declare function evaluateBootVerification(input: {
|
|
54
|
+
record: BootVerificationRecord | null;
|
|
55
|
+
currentVersion: string;
|
|
56
|
+
maxRollbackAttempts?: number;
|
|
57
|
+
}): BootDecision;
|
|
58
|
+
export declare function evaluateBootProbe(input: {
|
|
59
|
+
heartbeatOk: boolean;
|
|
60
|
+
elapsedMs: number;
|
|
61
|
+
timeoutMs: number;
|
|
62
|
+
}): 'verified' | 'waiting' | 'failed';
|
|
63
|
+
export interface InstallRetryDecision {
|
|
64
|
+
proceed: boolean;
|
|
65
|
+
stop: boolean;
|
|
66
|
+
waitMs: number | null;
|
|
67
|
+
summary: string | null;
|
|
68
|
+
}
|
|
69
|
+
export declare function evaluateInstallRetryGate(input: {
|
|
70
|
+
installFailures: number;
|
|
71
|
+
lastFailureAtMs: number | null;
|
|
72
|
+
nowMs: number;
|
|
73
|
+
withinWindow: boolean;
|
|
74
|
+
maxAttempts?: number;
|
|
75
|
+
backoffsMs?: readonly number[];
|
|
76
|
+
}): InstallRetryDecision;
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { AGENT_MANAGER_HOME } from './constants.js';
|
|
4
|
+
const BOOT_STATE_FILE = 'self-update-boot.json';
|
|
5
|
+
const PIN_FILE = 'self-update-pin.json';
|
|
6
|
+
export const MAX_INSTALL_ATTEMPTS = 3;
|
|
7
|
+
export const INSTALL_RETRY_BACKOFFS_MS = [5 * 60_000, 15 * 60_000];
|
|
8
|
+
export const BOOT_VERIFY_TIMEOUT_MS = 10 * 60_000;
|
|
9
|
+
export const MAX_ROLLBACK_ATTEMPTS = 2;
|
|
10
|
+
export function bootStatePath(dir = AGENT_MANAGER_HOME) {
|
|
11
|
+
return join(dir, BOOT_STATE_FILE);
|
|
12
|
+
}
|
|
13
|
+
export function updatePinPath(dir = AGENT_MANAGER_HOME) {
|
|
14
|
+
return join(dir, PIN_FILE);
|
|
15
|
+
}
|
|
16
|
+
function readJsonFile(path) {
|
|
17
|
+
try {
|
|
18
|
+
if (!existsSync(path))
|
|
19
|
+
return null;
|
|
20
|
+
return JSON.parse(readFileSync(path, 'utf8'));
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function writeJsonFile(path, value) {
|
|
27
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
28
|
+
writeFileSync(path, `${JSON.stringify(value, null, 2)}\n`, 'utf8');
|
|
29
|
+
}
|
|
30
|
+
const KNOWN_PHASES = [
|
|
31
|
+
'installing',
|
|
32
|
+
'install_failed',
|
|
33
|
+
'install_blocked',
|
|
34
|
+
'awaiting_boot',
|
|
35
|
+
'rolling_back',
|
|
36
|
+
];
|
|
37
|
+
export function readBootVerificationRecord(dir = AGENT_MANAGER_HOME) {
|
|
38
|
+
const raw = readJsonFile(bootStatePath(dir));
|
|
39
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
40
|
+
return null;
|
|
41
|
+
const phase = String(raw.phase ?? '');
|
|
42
|
+
if (!KNOWN_PHASES.includes(phase))
|
|
43
|
+
return null;
|
|
44
|
+
const previousVersion = typeof raw.previousVersion === 'string' ? raw.previousVersion : '';
|
|
45
|
+
const targetVersion = typeof raw.targetVersion === 'string' ? raw.targetVersion : '';
|
|
46
|
+
if (!previousVersion || !targetVersion)
|
|
47
|
+
return null;
|
|
48
|
+
const int = (v) => (Number.isFinite(Number(v)) ? Math.trunc(Number(v)) : 0);
|
|
49
|
+
return {
|
|
50
|
+
phase,
|
|
51
|
+
previousVersion,
|
|
52
|
+
targetVersion,
|
|
53
|
+
bootAttempts: int(raw.bootAttempts),
|
|
54
|
+
installFailures: int(raw.installFailures),
|
|
55
|
+
lastInstallFailureAtMs: raw.lastInstallFailureAtMs === null || raw.lastInstallFailureAtMs === undefined
|
|
56
|
+
? null
|
|
57
|
+
: int(raw.lastInstallFailureAtMs),
|
|
58
|
+
rollbackAttempts: int(raw.rollbackAttempts),
|
|
59
|
+
reason: typeof raw.reason === 'string' ? raw.reason : '',
|
|
60
|
+
updatedAtMs: int(raw.updatedAtMs),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export function writeBootVerificationRecord(record, dir = AGENT_MANAGER_HOME) {
|
|
64
|
+
writeJsonFile(bootStatePath(dir), record);
|
|
65
|
+
}
|
|
66
|
+
export function clearBootVerificationRecord(dir = AGENT_MANAGER_HOME) {
|
|
67
|
+
const path = bootStatePath(dir);
|
|
68
|
+
try {
|
|
69
|
+
if (existsSync(path))
|
|
70
|
+
unlinkSync(path);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function newInstallRecord(input) {
|
|
76
|
+
const carry = input.carryFrom && input.carryFrom.targetVersion === input.targetVersion
|
|
77
|
+
? input.carryFrom
|
|
78
|
+
: null;
|
|
79
|
+
return {
|
|
80
|
+
phase: 'installing',
|
|
81
|
+
previousVersion: input.previousVersion,
|
|
82
|
+
targetVersion: input.targetVersion,
|
|
83
|
+
bootAttempts: 0,
|
|
84
|
+
installFailures: carry?.installFailures ?? 0,
|
|
85
|
+
lastInstallFailureAtMs: carry?.lastInstallFailureAtMs ?? null,
|
|
86
|
+
rollbackAttempts: carry?.rollbackAttempts ?? 0,
|
|
87
|
+
reason: '',
|
|
88
|
+
updatedAtMs: input.nowMs,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export function withInstallFailure(record, nowMs, detail, maxAttempts = MAX_INSTALL_ATTEMPTS) {
|
|
92
|
+
const installFailures = record.installFailures + 1;
|
|
93
|
+
const blocked = installFailures >= maxAttempts;
|
|
94
|
+
return {
|
|
95
|
+
...record,
|
|
96
|
+
phase: blocked ? 'install_blocked' : 'install_failed',
|
|
97
|
+
installFailures,
|
|
98
|
+
lastInstallFailureAtMs: nowMs,
|
|
99
|
+
reason: blocked
|
|
100
|
+
? `v${record.targetVersion} failed to install ${installFailures} time(s) — automatic attempts stopped: ${detail}`
|
|
101
|
+
: `v${record.targetVersion} install attempt ${installFailures} failed: ${detail}`,
|
|
102
|
+
updatedAtMs: nowMs,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
export function withAwaitingBoot(record, nowMs) {
|
|
106
|
+
return { ...record, phase: 'awaiting_boot', bootAttempts: 0, updatedAtMs: nowMs };
|
|
107
|
+
}
|
|
108
|
+
export function withBootAttempt(record, nowMs) {
|
|
109
|
+
return {
|
|
110
|
+
...record,
|
|
111
|
+
phase: 'awaiting_boot',
|
|
112
|
+
bootAttempts: record.bootAttempts + 1,
|
|
113
|
+
updatedAtMs: nowMs,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
export function withRollbackAttempt(record, nowMs, detail) {
|
|
117
|
+
return {
|
|
118
|
+
...record,
|
|
119
|
+
phase: 'rolling_back',
|
|
120
|
+
rollbackAttempts: record.rollbackAttempts + 1,
|
|
121
|
+
reason: detail,
|
|
122
|
+
updatedAtMs: nowMs,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
export function readUpdatePin(dir = AGENT_MANAGER_HOME) {
|
|
126
|
+
const raw = readJsonFile(updatePinPath(dir));
|
|
127
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
128
|
+
return null;
|
|
129
|
+
const version = typeof raw.version === 'string' ? raw.version.trim() : '';
|
|
130
|
+
if (!/^\d+\.\d+\.\d+/.test(version))
|
|
131
|
+
return null;
|
|
132
|
+
return {
|
|
133
|
+
version,
|
|
134
|
+
reason: typeof raw.reason === 'string' ? raw.reason : '',
|
|
135
|
+
pinnedAtMs: Number.isFinite(Number(raw.pinnedAtMs)) ? Math.trunc(Number(raw.pinnedAtMs)) : 0,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
export function writeUpdatePin(pin, dir = AGENT_MANAGER_HOME) {
|
|
139
|
+
writeJsonFile(updatePinPath(dir), pin);
|
|
140
|
+
}
|
|
141
|
+
export const UPDATE_WINDOW_ENV = 'AWB_AGENT_MANAGER_UPDATE_WINDOW';
|
|
142
|
+
export function parseMaintenanceWindow(raw) {
|
|
143
|
+
const v = String(raw ?? '').trim();
|
|
144
|
+
if (!v)
|
|
145
|
+
return null;
|
|
146
|
+
const m = /^(\d{1,2}):(\d{2})\s*-\s*(\d{1,2}):(\d{2})$/.exec(v);
|
|
147
|
+
if (!m)
|
|
148
|
+
return null;
|
|
149
|
+
const toMinute = (h, min) => {
|
|
150
|
+
const hh = Number(h);
|
|
151
|
+
const mm = Number(min);
|
|
152
|
+
if (!Number.isInteger(hh) || !Number.isInteger(mm))
|
|
153
|
+
return null;
|
|
154
|
+
if (hh < 0 || hh > 23 || mm < 0 || mm > 59)
|
|
155
|
+
return null;
|
|
156
|
+
return hh * 60 + mm;
|
|
157
|
+
};
|
|
158
|
+
const startMinute = toMinute(m[1], m[2]);
|
|
159
|
+
const endMinute = toMinute(m[3], m[4]);
|
|
160
|
+
if (startMinute === null || endMinute === null)
|
|
161
|
+
return null;
|
|
162
|
+
if (startMinute === endMinute)
|
|
163
|
+
return null;
|
|
164
|
+
return { startMinute, endMinute };
|
|
165
|
+
}
|
|
166
|
+
export function isWithinMaintenanceWindow(now, window) {
|
|
167
|
+
if (!window)
|
|
168
|
+
return true;
|
|
169
|
+
const minute = now.getHours() * 60 + now.getMinutes();
|
|
170
|
+
const { startMinute, endMinute } = window;
|
|
171
|
+
return startMinute < endMinute
|
|
172
|
+
? minute >= startMinute && minute < endMinute
|
|
173
|
+
: minute >= startMinute || minute < endMinute;
|
|
174
|
+
}
|
|
175
|
+
export function withinMaintenanceWindowNow(now = new Date(), raw = process.env[UPDATE_WINDOW_ENV]) {
|
|
176
|
+
return isWithinMaintenanceWindow(now, parseMaintenanceWindow(raw));
|
|
177
|
+
}
|
|
178
|
+
function bootFailureDecision(record) {
|
|
179
|
+
return {
|
|
180
|
+
kind: 'rollback',
|
|
181
|
+
rollbackToVersion: record.previousVersion,
|
|
182
|
+
summary: `boot verification failed for v${record.targetVersion} ` +
|
|
183
|
+
`(${record.bootAttempts + 1} boot(s), no successful heartbeat) — ` +
|
|
184
|
+
`rolling back to v${record.previousVersion} and pinning it`,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
function armDecision(record) {
|
|
188
|
+
return {
|
|
189
|
+
kind: 'arm',
|
|
190
|
+
rollbackToVersion: null,
|
|
191
|
+
summary: `verifying boot of v${record.targetVersion} — waiting for one successful heartbeat ` +
|
|
192
|
+
`(rollback target v${record.previousVersion})`,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
function staleDecision(record, currentVersion) {
|
|
196
|
+
return {
|
|
197
|
+
kind: 'stale',
|
|
198
|
+
rollbackToVersion: null,
|
|
199
|
+
summary: `discarding stale boot-verification record ` +
|
|
200
|
+
`(recorded v${record.previousVersion}→v${record.targetVersion}, running v${currentVersion})`,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
export function evaluateBootVerification(input) {
|
|
204
|
+
const { record, currentVersion } = input;
|
|
205
|
+
const maxRollbackAttempts = input.maxRollbackAttempts ?? MAX_ROLLBACK_ATTEMPTS;
|
|
206
|
+
if (!record)
|
|
207
|
+
return { kind: 'none', rollbackToVersion: null, summary: null };
|
|
208
|
+
const onTarget = currentVersion === record.targetVersion;
|
|
209
|
+
const onPrevious = currentVersion === record.previousVersion;
|
|
210
|
+
switch (record.phase) {
|
|
211
|
+
case 'install_blocked':
|
|
212
|
+
return { kind: 'none', rollbackToVersion: null, summary: null };
|
|
213
|
+
case 'install_failed':
|
|
214
|
+
if (onTarget)
|
|
215
|
+
return record.bootAttempts >= 1 ? bootFailureDecision(record) : armDecision(record);
|
|
216
|
+
if (onPrevious)
|
|
217
|
+
return { kind: 'none', rollbackToVersion: null, summary: null };
|
|
218
|
+
return staleDecision(record, currentVersion);
|
|
219
|
+
case 'installing':
|
|
220
|
+
if (onTarget)
|
|
221
|
+
return record.bootAttempts >= 1 ? bootFailureDecision(record) : armDecision(record);
|
|
222
|
+
if (onPrevious) {
|
|
223
|
+
return {
|
|
224
|
+
kind: 'install_failed',
|
|
225
|
+
rollbackToVersion: null,
|
|
226
|
+
summary: `install of v${record.targetVersion} did not take effect — ` +
|
|
227
|
+
`still running v${record.previousVersion}; counting an install failure`,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
return staleDecision(record, currentVersion);
|
|
231
|
+
case 'awaiting_boot':
|
|
232
|
+
if (onTarget)
|
|
233
|
+
return record.bootAttempts >= 1 ? bootFailureDecision(record) : armDecision(record);
|
|
234
|
+
if (onPrevious) {
|
|
235
|
+
return {
|
|
236
|
+
kind: 'pin_only',
|
|
237
|
+
rollbackToVersion: record.previousVersion,
|
|
238
|
+
summary: `v${record.targetVersion} was installed but v${record.previousVersion} is running — ` +
|
|
239
|
+
`pinning v${record.previousVersion} without a reinstall`,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
return staleDecision(record, currentVersion);
|
|
243
|
+
case 'rolling_back':
|
|
244
|
+
default:
|
|
245
|
+
if (onPrevious) {
|
|
246
|
+
return {
|
|
247
|
+
kind: 'rollback_landed',
|
|
248
|
+
rollbackToVersion: record.previousVersion,
|
|
249
|
+
summary: `rollback to v${record.previousVersion} landed — channel stays pinned to it`,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
if (onTarget) {
|
|
253
|
+
if (record.rollbackAttempts < maxRollbackAttempts) {
|
|
254
|
+
return {
|
|
255
|
+
kind: 'rollback',
|
|
256
|
+
rollbackToVersion: record.previousVersion,
|
|
257
|
+
summary: `rollback to v${record.previousVersion} did not land ` +
|
|
258
|
+
`(attempt ${record.rollbackAttempts} of ${maxRollbackAttempts}) — retrying`,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
return {
|
|
262
|
+
kind: 'rollback_failed',
|
|
263
|
+
rollbackToVersion: record.previousVersion,
|
|
264
|
+
summary: `rollback to v${record.previousVersion} failed ${record.rollbackAttempts} time(s) — ` +
|
|
265
|
+
`giving up automatic recovery, still running v${record.targetVersion}; ` +
|
|
266
|
+
`channel stays pinned to v${record.previousVersion} (operator action required)`,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
return staleDecision(record, currentVersion);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
export function evaluateBootProbe(input) {
|
|
273
|
+
if (input.heartbeatOk)
|
|
274
|
+
return 'verified';
|
|
275
|
+
return input.elapsedMs >= input.timeoutMs ? 'failed' : 'waiting';
|
|
276
|
+
}
|
|
277
|
+
export function evaluateInstallRetryGate(input) {
|
|
278
|
+
const maxAttempts = input.maxAttempts ?? MAX_INSTALL_ATTEMPTS;
|
|
279
|
+
const backoffs = input.backoffsMs ?? INSTALL_RETRY_BACKOFFS_MS;
|
|
280
|
+
const failures = Math.max(0, input.installFailures);
|
|
281
|
+
if (failures === 0) {
|
|
282
|
+
return { proceed: true, stop: false, waitMs: null, summary: null };
|
|
283
|
+
}
|
|
284
|
+
if (failures >= maxAttempts) {
|
|
285
|
+
return {
|
|
286
|
+
proceed: false,
|
|
287
|
+
stop: true,
|
|
288
|
+
waitMs: null,
|
|
289
|
+
summary: `install retry limit reached (${failures}/${maxAttempts} attempts failed) — ` +
|
|
290
|
+
`this version is marked failed, automatic attempts stopped`,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
if (!input.withinWindow) {
|
|
294
|
+
return {
|
|
295
|
+
proceed: false,
|
|
296
|
+
stop: true,
|
|
297
|
+
waitMs: null,
|
|
298
|
+
summary: `install retry stopped: outside the maintenance window ` +
|
|
299
|
+
`(${failures}/${maxAttempts} attempts used)`,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
const backoffMs = backoffs[failures - 1] ?? backoffs[backoffs.length - 1] ?? 0;
|
|
303
|
+
const since = input.lastFailureAtMs;
|
|
304
|
+
if (since !== null) {
|
|
305
|
+
const elapsed = input.nowMs - since;
|
|
306
|
+
if (elapsed < backoffMs) {
|
|
307
|
+
const waitMs = backoffMs - elapsed;
|
|
308
|
+
return {
|
|
309
|
+
proceed: false,
|
|
310
|
+
stop: false,
|
|
311
|
+
waitMs,
|
|
312
|
+
summary: `install retry backing off ${Math.round(waitMs / 1000)}s more ` +
|
|
313
|
+
`(attempt ${failures + 1} of ${maxAttempts}, backoff ${Math.round(backoffMs / 60_000)}min)`,
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return {
|
|
318
|
+
proceed: true,
|
|
319
|
+
stop: false,
|
|
320
|
+
waitMs: null,
|
|
321
|
+
summary: `install retry ${failures + 1} of ${maxAttempts} (previous attempt failed)`,
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=self-update-rollback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-update-rollback.js","sourceRoot":"","sources":["../../src/lib/self-update-rollback.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { type BootDecisionKind, type UpdatePinRecord } from './self-update-rollback.js';
|
|
1
2
|
export declare const SELF_UPDATE_DRAIN_MAX_WAIT_MS: number;
|
|
2
3
|
export declare const UPDATE_CHANNEL_ENV = "AWB_AGENT_MANAGER_UPDATE_CHANNEL";
|
|
3
4
|
export declare const UPDATE_CHANNEL_OFF = "off";
|
|
4
5
|
export type InstallMode = 'npm-global' | 'unknown';
|
|
5
6
|
export declare function resolveUpdateChannel(raw?: string | null): string;
|
|
6
7
|
export declare function isAutoUpdateDisabled(channel: string): boolean;
|
|
8
|
+
export declare function resolveEffectiveUpdateChannel(channel: string, pin: UpdatePinRecord | null): string;
|
|
7
9
|
export interface UpdateStatus {
|
|
8
10
|
current_version: string;
|
|
9
11
|
latest_version: string | null;
|
|
@@ -24,6 +26,25 @@ export interface SelfUpdateOpts {
|
|
|
24
26
|
noReExec?: boolean;
|
|
25
27
|
countInFlightSessions?: () => number;
|
|
26
28
|
drainMaxWaitMs?: number;
|
|
29
|
+
stateDir?: string;
|
|
30
|
+
withinWindow?: boolean;
|
|
31
|
+
ports?: SelfUpdatePorts;
|
|
32
|
+
}
|
|
33
|
+
export interface EntrypointProbeResult {
|
|
34
|
+
ok: boolean;
|
|
35
|
+
reportedVersion: string | null;
|
|
36
|
+
detail: string;
|
|
37
|
+
}
|
|
38
|
+
export interface SelfUpdatePorts {
|
|
39
|
+
install?: (spec: string) => Promise<{
|
|
40
|
+
ok: boolean;
|
|
41
|
+
detail: string;
|
|
42
|
+
}>;
|
|
43
|
+
verifyProvenance?: (channel: string) => Promise<ProvenanceVerdict>;
|
|
44
|
+
restart?: () => void;
|
|
45
|
+
probe?: (input: {
|
|
46
|
+
expectVersion: string;
|
|
47
|
+
}) => Promise<EntrypointProbeResult>;
|
|
27
48
|
}
|
|
28
49
|
export declare function classifyInstallMode(npmGlobalRoot: string | null): InstallMode;
|
|
29
50
|
export declare function detectInstallMode(): InstallMode;
|
|
@@ -38,6 +59,7 @@ export declare class UpdateChecker {
|
|
|
38
59
|
updateChannel?: string;
|
|
39
60
|
currentVersion?: string;
|
|
40
61
|
countInFlightSessions?: () => number;
|
|
62
|
+
stateDir?: string;
|
|
41
63
|
});
|
|
42
64
|
status(): UpdateStatus;
|
|
43
65
|
setCountInFlightSessions(fn: () => number): void;
|
|
@@ -50,7 +72,9 @@ export declare function runSelfUpdate(opts?: SelfUpdateOpts): Promise<SelfUpdate
|
|
|
50
72
|
export declare function isSystemdReExecPending(): boolean;
|
|
51
73
|
export declare function pendingRestartReason(): 'self_update_restart' | null;
|
|
52
74
|
export declare function _setPendingRestartReasonForTests(reason: 'self_update_restart' | null): void;
|
|
53
|
-
export declare function hasPendingSelfUpdate(
|
|
75
|
+
export declare function hasPendingSelfUpdate(opts?: {
|
|
76
|
+
stateDir?: string;
|
|
77
|
+
}): boolean;
|
|
54
78
|
export interface NpmUpdateGateResult {
|
|
55
79
|
proceed: boolean;
|
|
56
80
|
deferred: boolean;
|
|
@@ -70,4 +94,29 @@ export interface ProvenanceVerdict {
|
|
|
70
94
|
reason: string;
|
|
71
95
|
}
|
|
72
96
|
export declare function parseProvenanceView(stdout: string): ProvenanceVerdict;
|
|
97
|
+
export declare function probeInstalledEntrypoint(input: {
|
|
98
|
+
expectVersion: string;
|
|
99
|
+
entrypoint?: string | null;
|
|
100
|
+
timeoutMs?: number;
|
|
101
|
+
}): Promise<EntrypointProbeResult>;
|
|
102
|
+
export declare function resolveVerifiedRollbackSpec(input: {
|
|
103
|
+
previousVersion: string;
|
|
104
|
+
verifyProvenance: (channel: string) => Promise<ProvenanceVerdict>;
|
|
105
|
+
out: (msg: string) => void;
|
|
106
|
+
bypassed?: boolean;
|
|
107
|
+
}): Promise<string>;
|
|
108
|
+
export interface BootVerificationOutcome {
|
|
109
|
+
kind: BootDecisionKind;
|
|
110
|
+
armed: boolean;
|
|
111
|
+
willReExec: boolean;
|
|
112
|
+
summary: string | null;
|
|
113
|
+
}
|
|
114
|
+
export declare function runBootVerification(opts?: SelfUpdateOpts): Promise<BootVerificationOutcome>;
|
|
115
|
+
export declare function _scheduleRollbackRestartForTests(restart: () => void): void;
|
|
116
|
+
export declare function markBootVerified(opts?: SelfUpdateOpts): boolean;
|
|
117
|
+
export declare function runBootVerificationTimeout(opts?: SelfUpdateOpts & {
|
|
118
|
+
elapsedMs?: number;
|
|
119
|
+
timeoutMs?: number;
|
|
120
|
+
heartbeatEnabled?: boolean;
|
|
121
|
+
}): Promise<BootVerificationOutcome>;
|
|
73
122
|
export declare function restartManager(opts?: SelfUpdateOpts): Promise<SelfUpdateResult>;
|