@agent-link/agent 0.1.299 → 0.1.301
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/bootstrap-delegator.js +7 -1
- package/dist/bootstrap-delegator.js.map +1 -1
- package/dist/cli.js +55 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +8 -0
- package/dist/config.js +3 -20
- package/dist/config.js.map +1 -1
- package/dist/connection.d.ts +20 -0
- package/dist/connection.js +38 -3
- package/dist/connection.js.map +1 -1
- package/dist/external-upgrade.d.ts +1 -0
- package/dist/external-upgrade.js +13 -7
- package/dist/external-upgrade.js.map +1 -1
- package/dist/index.js +126 -8
- package/dist/index.js.map +1 -1
- package/dist/launcher-manager.d.ts +7 -1
- package/dist/launcher-manager.js +36 -2
- package/dist/launcher-manager.js.map +1 -1
- package/dist/local-control.d.ts +3 -0
- package/dist/local-control.js.map +1 -1
- package/dist/process-identity.js +1 -1
- package/dist/process-identity.js.map +1 -1
- package/dist/upgrade-job.d.ts +25 -1
- package/dist/upgrade-job.js +89 -8
- package/dist/upgrade-job.js.map +1 -1
- package/dist/upgrade-lock.d.ts +2 -1
- package/dist/upgrade-lock.js +51 -6
- package/dist/upgrade-lock.js.map +1 -1
- package/dist/upgrade-operations.d.ts +20 -0
- package/dist/upgrade-operations.js +538 -0
- package/dist/upgrade-operations.js.map +1 -0
- package/dist/worker-host.d.ts +1 -0
- package/dist/worker-host.js +14 -1
- package/dist/worker-host.js.map +1 -1
- package/dist/worker-upgrade-cli-result.d.ts +10 -0
- package/dist/worker-upgrade-cli-result.js +38 -0
- package/dist/worker-upgrade-cli-result.js.map +1 -0
- package/launcher/launcher.cjs +518 -4
- package/package.json +1 -1
- package/worker/worker.cjs +730 -39
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-upgrade.js","sourceRoot":"","sources":["../src/external-upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,UAAU,GACX,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EACL,UAAU,EACV,cAAc,EACd,gBAAgB,GAEjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uBAAuB,EACvB,cAAc,GAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC9B,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,GAE7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,2BAA2B,GAE5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,GAGnB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"external-upgrade.js","sourceRoot":"","sources":["../src/external-upgrade.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module';
|
|
2
|
-
import { randomUUID } from 'crypto';
|
|
2
|
+
import { createHash, randomUUID } from 'crypto';
|
|
3
3
|
/** Enable timestamped console output — call once at startup for daemon/log mode. */
|
|
4
4
|
export function enableLogTimestamps() {
|
|
5
5
|
for (const [method, level] of [['log', 'INFO'], ['warn', 'WARN'], ['error', 'ERROR'], ['info', 'INFO']]) {
|
|
@@ -10,16 +10,38 @@ export function enableLogTimestamps() {
|
|
|
10
10
|
// Auto-enable timestamps when output is redirected (daemon mode / nohup)
|
|
11
11
|
if (!process.stdout.isTTY)
|
|
12
12
|
enableLogTimestamps();
|
|
13
|
-
import { saveRuntimeState, clearRuntimePid, writePidFile, encodeBase64Url } from './config.js';
|
|
14
|
-
import { beginShutdown,
|
|
13
|
+
import { saveRuntimeState, clearRuntimePid, writePidFile, encodeBase64Url, loadRuntimeState, } from './config.js';
|
|
14
|
+
import { beginShutdown, connectRelay, disconnect, getConnectionStatus, getE2EKey, initializeLocalConnection, sendAndFlush, } from './connection.js';
|
|
15
15
|
import { shutdownScheduler } from './scheduler.js';
|
|
16
16
|
import { createLocalControlService } from './local-control.js';
|
|
17
17
|
import { startLocalControlServer } from './local-control-http.js';
|
|
18
18
|
import { createShutdownCoordinator } from './shutdown-coordinator.js';
|
|
19
19
|
import { authorizeWorkerUpgradeShutdown } from './worker-shutdown-authorization.js';
|
|
20
|
+
import { repairExternalUpgrade, resumeInterruptedUpgrade, runUpgradeRetention, } from './upgrade-operations.js';
|
|
21
|
+
import { loadExternalUpgradeJob } from './upgrade-job.js';
|
|
20
22
|
const require = createRequire(import.meta.url);
|
|
21
23
|
const qrcode = require('qrcode-terminal');
|
|
22
24
|
const processInstanceId = randomUUID();
|
|
25
|
+
function validatedRestoredSessionRegistration(runtime, upgradeJobId) {
|
|
26
|
+
const registration = runtime?.sessionRegistration;
|
|
27
|
+
if (!runtime || !registration || !upgradeJobId || runtime.upgradeJobId !== upgradeJobId) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const job = loadExternalUpgradeJob(upgradeJobId);
|
|
32
|
+
const sessionUrlHash = createHash('sha256').update(runtime.sessionUrl).digest('hex');
|
|
33
|
+
if (registration.previousSessionId !== job.oldRuntime.sessionId
|
|
34
|
+
|| registration.sessionId !== runtime.sessionId
|
|
35
|
+
|| registration.sessionUrlHash !== sessionUrlHash
|
|
36
|
+
|| !Number.isFinite(Date.parse(registration.registeredAt))) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
return registration;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
23
45
|
/** Highlight a URL with bold + underline ANSI codes if stdout supports color. */
|
|
24
46
|
function highlightUrl(url) {
|
|
25
47
|
if (!process.stdout.isTTY)
|
|
@@ -36,10 +58,8 @@ export async function start(config, daemon = false, pidFile, launchSpecPath, lau
|
|
|
36
58
|
.replace(/^wss:/, 'https:')
|
|
37
59
|
.replace(/^ws:/, 'http:');
|
|
38
60
|
try {
|
|
39
|
-
const
|
|
40
|
-
const
|
|
41
|
-
const e2eFragment = e2eKey ? `#/?k=${encodeBase64Url(e2eKey)}` : '';
|
|
42
|
-
const sessionUrl = `${httpBase}/${config.entra ? 'ms' : 's'}/${sessionId}${e2eFragment}`;
|
|
61
|
+
const restoredRuntime = upgradeJobId ? loadRuntimeState() : null;
|
|
62
|
+
const restoredSessionRegistration = validatedRestoredSessionRegistration(restoredRuntime, upgradeJobId);
|
|
43
63
|
const startedAt = new Date().toISOString();
|
|
44
64
|
let controlServer = null;
|
|
45
65
|
const shutdownCoordinator = createShutdownCoordinator({
|
|
@@ -78,7 +98,89 @@ export async function start(config, daemon = false, pidFile, launchSpecPath, lau
|
|
|
78
98
|
requestShutdown: (request) => shutdownCoordinator.request(request),
|
|
79
99
|
authorizeWorkerUpgradeShutdown,
|
|
80
100
|
});
|
|
81
|
-
|
|
101
|
+
initializeLocalConnection(config);
|
|
102
|
+
let recoveryTimer;
|
|
103
|
+
if (upgradeJobId) {
|
|
104
|
+
let resumeCooldownUntil = 0;
|
|
105
|
+
let recoveryBusy = false;
|
|
106
|
+
recoveryTimer = setInterval(async () => {
|
|
107
|
+
if (recoveryBusy)
|
|
108
|
+
return;
|
|
109
|
+
if (Date.now() < resumeCooldownUntil)
|
|
110
|
+
return;
|
|
111
|
+
recoveryBusy = true;
|
|
112
|
+
try {
|
|
113
|
+
if (loadExternalUpgradeJob(upgradeJobId).phase === 'repair-starting') {
|
|
114
|
+
await repairExternalUpgrade();
|
|
115
|
+
if (recoveryTimer)
|
|
116
|
+
clearInterval(recoveryTimer);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const result = resumeInterruptedUpgrade(upgradeJobId);
|
|
120
|
+
if (result === 'terminal' && recoveryTimer)
|
|
121
|
+
clearInterval(recoveryTimer);
|
|
122
|
+
if (result === 'started')
|
|
123
|
+
resumeCooldownUntil = Date.now() + 15_000;
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
console.warn(`[AgentLink] Upgrade recovery watchdog: ${error.message}`);
|
|
127
|
+
}
|
|
128
|
+
finally {
|
|
129
|
+
recoveryBusy = false;
|
|
130
|
+
}
|
|
131
|
+
}, 5000);
|
|
132
|
+
recoveryTimer.unref();
|
|
133
|
+
}
|
|
134
|
+
// An upgrade target must become locally observable even when the relay or
|
|
135
|
+
// Entra is unavailable. The preserved session is replaced after a
|
|
136
|
+
// successful registration, but is sufficient for mandatory local health.
|
|
137
|
+
if (upgradeJobId
|
|
138
|
+
&& restoredRuntime?.sessionId
|
|
139
|
+
&& restoredRuntime.sessionUrl
|
|
140
|
+
&& restoredRuntime.server === config.server) {
|
|
141
|
+
controlServer = await startLocalControlServer(controlService);
|
|
142
|
+
saveRuntimeState({
|
|
143
|
+
pid: process.pid,
|
|
144
|
+
processInstanceId,
|
|
145
|
+
sessionId: restoredRuntime.sessionId,
|
|
146
|
+
sessionUrl: restoredRuntime.sessionUrl,
|
|
147
|
+
server: config.server,
|
|
148
|
+
name: config.name,
|
|
149
|
+
dir: config.dir,
|
|
150
|
+
startedAt,
|
|
151
|
+
agent: config.agent,
|
|
152
|
+
launchSpecPath,
|
|
153
|
+
launchSpecDigest,
|
|
154
|
+
upgradeJobId,
|
|
155
|
+
...(restoredSessionRegistration
|
|
156
|
+
? { sessionRegistration: restoredSessionRegistration }
|
|
157
|
+
: {}),
|
|
158
|
+
controlPlane: controlServer.discovery,
|
|
159
|
+
...(process.env.AGENTLINK_VERSION_STORE_ACTIVE === '1'
|
|
160
|
+
&& process.env.AGENTLINK_SELECTED_VERSION
|
|
161
|
+
? {
|
|
162
|
+
versionStore: {
|
|
163
|
+
active: true,
|
|
164
|
+
selectedVersion: process.env.AGENTLINK_SELECTED_VERSION,
|
|
165
|
+
selectedIntegrity: process.env.AGENTLINK_SELECTED_INTEGRITY,
|
|
166
|
+
},
|
|
167
|
+
}
|
|
168
|
+
: {}),
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
const connection = connectRelay(config);
|
|
172
|
+
const sessionId = await connection;
|
|
173
|
+
const e2eKey = getE2EKey();
|
|
174
|
+
const e2eFragment = e2eKey ? `#/?k=${encodeBase64Url(e2eKey)}` : '';
|
|
175
|
+
const sessionUrl = `${httpBase}/${config.entra ? 'ms' : 's'}/${sessionId}${e2eFragment}`;
|
|
176
|
+
controlServer ??= await startLocalControlServer(controlService);
|
|
177
|
+
const sessionRegistration = getConnectionStatus().sessionRegistration
|
|
178
|
+
?? (restoredSessionRegistration
|
|
179
|
+
&& restoredSessionRegistration.sessionId === sessionId
|
|
180
|
+
&& restoredSessionRegistration.sessionUrlHash
|
|
181
|
+
=== createHash('sha256').update(sessionUrl).digest('hex')
|
|
182
|
+
? restoredSessionRegistration
|
|
183
|
+
: null);
|
|
82
184
|
// Persist runtime state so `agentlink status` can discover the exact process.
|
|
83
185
|
saveRuntimeState({
|
|
84
186
|
pid: process.pid,
|
|
@@ -93,6 +195,7 @@ export async function start(config, daemon = false, pidFile, launchSpecPath, lau
|
|
|
93
195
|
launchSpecPath,
|
|
94
196
|
launchSpecDigest,
|
|
95
197
|
upgradeJobId,
|
|
198
|
+
...(sessionRegistration ? { sessionRegistration } : {}),
|
|
96
199
|
controlPlane: controlServer.discovery,
|
|
97
200
|
...(process.env.AGENTLINK_VERSION_STORE_ACTIVE === '1'
|
|
98
201
|
&& process.env.AGENTLINK_SELECTED_VERSION
|
|
@@ -100,10 +203,25 @@ export async function start(config, daemon = false, pidFile, launchSpecPath, lau
|
|
|
100
203
|
versionStore: {
|
|
101
204
|
active: true,
|
|
102
205
|
selectedVersion: process.env.AGENTLINK_SELECTED_VERSION,
|
|
206
|
+
selectedIntegrity: process.env.AGENTLINK_SELECTED_INTEGRITY,
|
|
103
207
|
},
|
|
104
208
|
}
|
|
105
209
|
: {}),
|
|
106
210
|
});
|
|
211
|
+
const retentionTimer = setTimeout(() => {
|
|
212
|
+
const status = getConnectionStatus();
|
|
213
|
+
if (shutdownCoordinator.status().phase === 'idle'
|
|
214
|
+
&& status.acceptingWork
|
|
215
|
+
&& status.backendReady) {
|
|
216
|
+
try {
|
|
217
|
+
runUpgradeRetention();
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
console.warn(`[AgentLink] Upgrade retention skipped: ${error.message}`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}, 5000);
|
|
224
|
+
retentionTimer.unref();
|
|
107
225
|
console.log('');
|
|
108
226
|
console.log(`[AgentLink] Session URL: ${highlightUrl(sessionUrl)}`);
|
|
109
227
|
qrcode.generate(sessionUrl, { small: true }, (code) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const LAUNCHER_PROTOCOL_VERSION =
|
|
1
|
+
export declare const LAUNCHER_PROTOCOL_VERSION = 2;
|
|
2
2
|
export declare function getLauncherDirectory(): string;
|
|
3
3
|
export declare function getStableLauncherPath(): string;
|
|
4
4
|
export declare function getLauncherProtocolPath(): string;
|
|
@@ -7,3 +7,9 @@ export declare function installStableLauncher(sourcePath?: string): string;
|
|
|
7
7
|
export declare function validateStableLauncher(): string;
|
|
8
8
|
export declare function getAdoptedLauncherPath(): string | null;
|
|
9
9
|
export declare function runStableLauncher(launchSpecPath: string, launcherPath?: string): void;
|
|
10
|
+
export declare function spawnStableLauncher(launchSpecPath: string, options?: {
|
|
11
|
+
upgradeJobId?: string;
|
|
12
|
+
launcherPath?: string;
|
|
13
|
+
onSpawn?: (pid: number) => void;
|
|
14
|
+
recoveryOwner?: 'repair' | 'worker';
|
|
15
|
+
}): number;
|
package/dist/launcher-manager.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { chmodSync, copyFileSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync, } from 'fs';
|
|
2
2
|
import { dirname, join, resolve } from 'path';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
|
-
import { execFileSync } from 'child_process';
|
|
4
|
+
import { execFileSync, spawn } from 'child_process';
|
|
5
5
|
import { CONFIG_DIR } from './config.js';
|
|
6
6
|
import { isVersionStoreAdopted, loadAdoptionState, validateVersionInstallation, } from './version-store.js';
|
|
7
|
-
export const LAUNCHER_PROTOCOL_VERSION =
|
|
7
|
+
export const LAUNCHER_PROTOCOL_VERSION = 2;
|
|
8
8
|
export function getLauncherDirectory() {
|
|
9
9
|
return join(CONFIG_DIR, 'launcher');
|
|
10
10
|
}
|
|
@@ -81,4 +81,38 @@ export function runStableLauncher(launchSpecPath, launcherPath = validateStableL
|
|
|
81
81
|
env: { ...process.env, AGENTLINK_HOME: CONFIG_DIR },
|
|
82
82
|
});
|
|
83
83
|
}
|
|
84
|
+
export function spawnStableLauncher(launchSpecPath, options = {}) {
|
|
85
|
+
const launcherPath = options.launcherPath ?? validateStableLauncher();
|
|
86
|
+
const args = [
|
|
87
|
+
launcherPath,
|
|
88
|
+
'start',
|
|
89
|
+
'--launch-spec',
|
|
90
|
+
resolve(launchSpecPath),
|
|
91
|
+
...(options.upgradeJobId ? ['--upgrade-job', options.upgradeJobId] : []),
|
|
92
|
+
];
|
|
93
|
+
const launcherEnvironment = {
|
|
94
|
+
...process.env,
|
|
95
|
+
AGENTLINK_HOME: CONFIG_DIR,
|
|
96
|
+
};
|
|
97
|
+
delete launcherEnvironment.AGENTLINK_RECOVERY_OWNER;
|
|
98
|
+
delete launcherEnvironment.AGENTLINK_UPGRADE_JOB;
|
|
99
|
+
if (options.upgradeJobId) {
|
|
100
|
+
launcherEnvironment.AGENTLINK_UPGRADE_JOB = options.upgradeJobId;
|
|
101
|
+
if (options.recoveryOwner) {
|
|
102
|
+
launcherEnvironment.AGENTLINK_RECOVERY_OWNER = options.recoveryOwner;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const child = spawn(process.execPath, args, {
|
|
106
|
+
cwd: dirname(resolve(launchSpecPath)),
|
|
107
|
+
detached: true,
|
|
108
|
+
stdio: 'ignore',
|
|
109
|
+
windowsHide: true,
|
|
110
|
+
env: launcherEnvironment,
|
|
111
|
+
});
|
|
112
|
+
if (!child.pid)
|
|
113
|
+
throw new Error('Stable launcher did not return a process ID');
|
|
114
|
+
options.onSpawn?.(child.pid);
|
|
115
|
+
child.unref();
|
|
116
|
+
return child.pid;
|
|
117
|
+
}
|
|
84
118
|
//# sourceMappingURL=launcher-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launcher-manager.js","sourceRoot":"","sources":["../src/launcher-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,MAAM,EACN,aAAa,GACd,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"launcher-manager.js","sourceRoot":"","sources":["../src/launcher-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/local-control.d.ts
CHANGED
|
@@ -28,6 +28,9 @@ export interface ConnectionStatus {
|
|
|
28
28
|
sessionId: string | null;
|
|
29
29
|
workDir: string;
|
|
30
30
|
backend: string;
|
|
31
|
+
backendReady?: boolean;
|
|
32
|
+
entraReady?: boolean;
|
|
33
|
+
sessionRestored?: boolean;
|
|
31
34
|
conversations: number;
|
|
32
35
|
}
|
|
33
36
|
export interface LocalControlStatus {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-control.js","sourceRoot":"","sources":["../src/local-control.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,aAAa;IACb,aAAa;IACb,oBAAoB;IACpB,yBAAyB;CACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"local-control.js","sourceRoot":"","sources":["../src/local-control.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,aAAa;IACb,aAAa;IACb,oBAAoB;IACpB,yBAAyB;CACjB,CAAC;AA8DX,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAExB;IACA;IAFlB,YACkB,MAAc,EACd,IAAY,EAC5B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;QAI5B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAkBD,MAAM,UAAU,yBAAyB,CAAC,IAA6B;IACrE,OAAO;QACL,MAAM;YACJ,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,yBAAyB;gBACrC,YAAY,EAAE,0BAA0B;aACzC,CAAC;QACJ,CAAC;QAED,MAAM;YACJ,OAAO;gBACL,UAAU,EAAE,yBAAyB;gBACrC,YAAY,EAAE,0BAA0B;gBACxC,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACxD,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE;gBAClC,UAAU,EAAE,IAAI,CAAC,mBAAmB,EAAE;gBACtC,MAAM,EAAE;oBACN,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAC1B,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;oBACpB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;oBACtB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ;oBACpC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI;oBACjC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI;oBACxC,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;iBAClD;aACF,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,OAAO;YACd,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;gBAC7E,MAAM,IAAI,iBAAiB,CACzB,GAAG,EACH,cAAc,EACd,gCAAgC,OAAO,CAAC,WAAW,sBAAsB,OAAO,CAAC,GAAG,EAAE,CACvF,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC;oBACzC,MAAM,IAAI,iBAAiB,CACzB,GAAG,EACH,+BAA+B,EAC/B,wDAAwD,CACzD,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC;oBACH,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;gBAC/C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,iBAAiB,CACzB,GAAG,EACH,yBAAyB,EACxB,KAAe,CAAC,OAAO,CACzB,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/process-identity.js
CHANGED
|
@@ -18,7 +18,7 @@ export function lookupProcessStartIdentity(pid, deps = {}) {
|
|
|
18
18
|
const execFile = deps.execFile ?? ((file, args) => execFileSync(file, args, {
|
|
19
19
|
encoding: 'utf8',
|
|
20
20
|
windowsHide: true,
|
|
21
|
-
timeout: 3000,
|
|
21
|
+
timeout: process.platform === 'win32' ? 10_000 : 3000,
|
|
22
22
|
}));
|
|
23
23
|
if (platform === 'linux') {
|
|
24
24
|
let stat;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-identity.js","sourceRoot":"","sources":["../src/process-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAmBlC,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AACxG,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,MAAM,KAAK,GAAG,KAAoD,CAAC;IACnE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,GAAW,EACX,OAA4B,EAAE;IAE9B,UAAU,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAY,EAAE,IAAc,EAAE,EAAE,CAClE,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE;QACvB,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"process-identity.js","sourceRoot":"","sources":["../src/process-identity.ts"],"names":[],"mappings":"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"}
|
package/dist/upgrade-job.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export interface UpgradeJob {
|
|
|
14
14
|
error?: string;
|
|
15
15
|
}
|
|
16
16
|
export declare const EXTERNAL_UPGRADE_PROTOCOL_VERSION = 1;
|
|
17
|
-
export type ExternalUpgradePhase = 'created' | 'worker-starting' | 'worker-ready' | 'shutdown-requested' | 'old-agent-stopped' | 'switching' | 'target-starting' | 'target-
|
|
17
|
+
export type ExternalUpgradePhase = 'created' | 'downloading' | 'verifying' | 'staging' | 'self-checking' | 'worker-starting' | 'worker-ready' | 'shutdown-requested' | 'old-agent-stopped' | 'switching' | 'target-starting' | 'target-local-health' | 'relay-pending' | 'rolling-back' | 'rollback-starting' | 'rollback-local-health' | 'repair-starting' | 'completed' | 'rolled-back' | 'repair-required' | 'failed';
|
|
18
18
|
export interface ProcessIdentity {
|
|
19
19
|
pid: number;
|
|
20
20
|
processStartIdentity: string;
|
|
@@ -38,6 +38,18 @@ export interface ExternalUpgradeJob {
|
|
|
38
38
|
worker?: ProcessIdentity & {
|
|
39
39
|
protocolVersion: 1;
|
|
40
40
|
};
|
|
41
|
+
targetLauncher?: ProcessIdentity;
|
|
42
|
+
rollbackLauncher?: ProcessIdentity;
|
|
43
|
+
targetRuntime?: ProcessIdentity & {
|
|
44
|
+
processInstanceId: string;
|
|
45
|
+
};
|
|
46
|
+
rollbackRuntime?: ProcessIdentity & {
|
|
47
|
+
processInstanceId: string;
|
|
48
|
+
};
|
|
49
|
+
repairLauncher?: ProcessIdentity;
|
|
50
|
+
repairRuntime?: ProcessIdentity & {
|
|
51
|
+
processInstanceId: string;
|
|
52
|
+
};
|
|
41
53
|
restartOwner: 'worker';
|
|
42
54
|
sourceSelection: VersionPointer;
|
|
43
55
|
targetSelection: VersionPointer;
|
|
@@ -48,6 +60,8 @@ export interface ExternalUpgradeJob {
|
|
|
48
60
|
updatedAt: string;
|
|
49
61
|
error: string | null;
|
|
50
62
|
}
|
|
63
|
+
export declare const EXTERNAL_TERMINAL_PHASES: readonly ExternalUpgradePhase[];
|
|
64
|
+
export declare function isExternalUpgradeTerminal(phase: ExternalUpgradePhase): boolean;
|
|
51
65
|
export declare function getUpgradeRoot(): string;
|
|
52
66
|
export declare function getExternalUpgradeJobDirectory(jobId: string): string;
|
|
53
67
|
export declare function getExternalUpgradeJobPath(jobId: string): string;
|
|
@@ -70,7 +84,17 @@ export declare function createExternalUpgradeJob(input: Omit<ExternalUpgradeJob,
|
|
|
70
84
|
export declare function loadExternalUpgradeJob(jobId: string): ExternalUpgradeJob;
|
|
71
85
|
export declare function transitionExternalUpgradeJob(jobId: string, phase: ExternalUpgradePhase, options?: {
|
|
72
86
|
worker?: ExternalUpgradeJob['worker'];
|
|
87
|
+
targetLauncher?: ExternalUpgradeJob['targetLauncher'];
|
|
88
|
+
rollbackLauncher?: ExternalUpgradeJob['rollbackLauncher'];
|
|
89
|
+
targetRuntime?: ExternalUpgradeJob['targetRuntime'];
|
|
90
|
+
rollbackRuntime?: ExternalUpgradeJob['rollbackRuntime'];
|
|
91
|
+
repairLauncher?: ExternalUpgradeJob['repairLauncher'];
|
|
92
|
+
repairRuntime?: ExternalUpgradeJob['repairRuntime'];
|
|
93
|
+
lockNonce?: string;
|
|
94
|
+
clearRepairLauncher?: boolean;
|
|
95
|
+
clearRepairRuntime?: boolean;
|
|
73
96
|
error?: string | null;
|
|
74
97
|
now?: Date;
|
|
75
98
|
}): ExternalUpgradeJob;
|
|
76
99
|
export declare function appendExternalUpgradeEvent(job: ExternalUpgradeJob, code: string, detail?: string): void;
|
|
100
|
+
export declare function markExternalUpgradeRepaired(jobId: string, now?: Date): ExternalUpgradeJob;
|
package/dist/upgrade-job.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { appendFileSync, chmodSync, closeSync, existsSync, fsyncSync, mkdirSync, openSync, readFileSync, renameSync, rmSync, writeFileSync, } from 'fs';
|
|
2
|
-
import { dirname, join, resolve } from 'path';
|
|
2
|
+
import { dirname, isAbsolute, join, relative, resolve } from 'path';
|
|
3
3
|
import { randomUUID } from 'crypto';
|
|
4
4
|
import { CONFIG_DIR } from './config.js';
|
|
5
5
|
import { validateVersionPointer, } from './version-store.js';
|
|
@@ -7,16 +7,37 @@ export const EXTERNAL_UPGRADE_PROTOCOL_VERSION = 1;
|
|
|
7
7
|
const UPGRADE_DIR = join(CONFIG_DIR, 'upgrades');
|
|
8
8
|
const JOB_ID = /^[a-zA-Z0-9-]{1,128}$/;
|
|
9
9
|
const TRANSITIONS = {
|
|
10
|
-
created: ['worker-starting', 'failed'],
|
|
10
|
+
created: ['downloading', 'worker-starting', 'failed'],
|
|
11
|
+
downloading: ['verifying', 'failed'],
|
|
12
|
+
verifying: ['staging', 'failed'],
|
|
13
|
+
staging: ['self-checking', 'failed'],
|
|
14
|
+
'self-checking': ['worker-starting', 'failed'],
|
|
11
15
|
'worker-starting': ['worker-ready', 'failed'],
|
|
12
16
|
'worker-ready': ['shutdown-requested', 'failed'],
|
|
13
17
|
'shutdown-requested': ['old-agent-stopped', 'failed'],
|
|
14
|
-
'old-agent-stopped': ['switching', '
|
|
15
|
-
switching: ['target-starting', '
|
|
16
|
-
'target-starting': ['target-
|
|
17
|
-
'target-
|
|
18
|
+
'old-agent-stopped': ['switching', 'rolling-back', 'repair-required'],
|
|
19
|
+
switching: ['target-starting', 'rolling-back', 'repair-required'],
|
|
20
|
+
'target-starting': ['target-local-health', 'rolling-back', 'repair-required'],
|
|
21
|
+
'target-local-health': ['relay-pending', 'completed', 'rolling-back', 'repair-required'],
|
|
22
|
+
'relay-pending': ['completed', 'rolling-back', 'repair-required'],
|
|
23
|
+
'rolling-back': ['rollback-starting', 'repair-required'],
|
|
24
|
+
'rollback-starting': ['rollback-local-health', 'repair-required'],
|
|
25
|
+
'rollback-local-health': ['rolled-back', 'repair-required'],
|
|
26
|
+
completed: [],
|
|
27
|
+
'rolled-back': [],
|
|
28
|
+
'repair-required': ['repair-starting'],
|
|
29
|
+
'repair-starting': ['rolled-back', 'repair-required'],
|
|
18
30
|
failed: [],
|
|
19
31
|
};
|
|
32
|
+
export const EXTERNAL_TERMINAL_PHASES = [
|
|
33
|
+
'completed',
|
|
34
|
+
'rolled-back',
|
|
35
|
+
'repair-required',
|
|
36
|
+
'failed',
|
|
37
|
+
];
|
|
38
|
+
export function isExternalUpgradeTerminal(phase) {
|
|
39
|
+
return EXTERNAL_TERMINAL_PHASES.includes(phase);
|
|
40
|
+
}
|
|
20
41
|
function requireJobId(jobId) {
|
|
21
42
|
if (!JOB_ID.test(jobId))
|
|
22
43
|
throw new Error(`Invalid upgrade job ID: ${jobId}`);
|
|
@@ -151,6 +172,27 @@ export function validateExternalUpgradeJob(value) {
|
|
|
151
172
|
if (worker && worker.protocolVersion !== EXTERNAL_UPGRADE_PROTOCOL_VERSION) {
|
|
152
173
|
throw new Error('External upgrade worker protocolVersion is unsupported');
|
|
153
174
|
}
|
|
175
|
+
const validateRuntimeIdentity = (value, field) => {
|
|
176
|
+
if (value === undefined)
|
|
177
|
+
return undefined;
|
|
178
|
+
const identity = validateProcessIdentity(value, field);
|
|
179
|
+
return {
|
|
180
|
+
...identity,
|
|
181
|
+
processInstanceId: requireString(value.processInstanceId, `${field}.processInstanceId`),
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
const targetRuntime = validateRuntimeIdentity(job.targetRuntime, 'targetRuntime');
|
|
185
|
+
const rollbackRuntime = validateRuntimeIdentity(job.rollbackRuntime, 'rollbackRuntime');
|
|
186
|
+
const repairRuntime = validateRuntimeIdentity(job.repairRuntime, 'repairRuntime');
|
|
187
|
+
const targetLauncher = job.targetLauncher === undefined
|
|
188
|
+
? undefined
|
|
189
|
+
: validateProcessIdentity(job.targetLauncher, 'targetLauncher');
|
|
190
|
+
const rollbackLauncher = job.rollbackLauncher === undefined
|
|
191
|
+
? undefined
|
|
192
|
+
: validateProcessIdentity(job.rollbackLauncher, 'rollbackLauncher');
|
|
193
|
+
const repairLauncher = job.repairLauncher === undefined
|
|
194
|
+
? undefined
|
|
195
|
+
: validateProcessIdentity(job.repairLauncher, 'repairLauncher');
|
|
154
196
|
const error = job.error;
|
|
155
197
|
if (error !== null && typeof error !== 'string') {
|
|
156
198
|
throw new Error('External upgrade job error must be null or a string');
|
|
@@ -179,6 +221,12 @@ export function validateExternalUpgradeJob(value) {
|
|
|
179
221
|
protocolVersion: 1,
|
|
180
222
|
},
|
|
181
223
|
} : {}),
|
|
224
|
+
...(targetLauncher ? { targetLauncher } : {}),
|
|
225
|
+
...(rollbackLauncher ? { rollbackLauncher } : {}),
|
|
226
|
+
...(targetRuntime ? { targetRuntime } : {}),
|
|
227
|
+
...(rollbackRuntime ? { rollbackRuntime } : {}),
|
|
228
|
+
...(repairLauncher ? { repairLauncher } : {}),
|
|
229
|
+
...(repairRuntime ? { repairRuntime } : {}),
|
|
182
230
|
restartOwner: 'worker',
|
|
183
231
|
sourceSelection: validateVersionPointer(job.sourceSelection),
|
|
184
232
|
targetSelection: validateVersionPointer(job.targetSelection),
|
|
@@ -193,6 +241,11 @@ export function validateExternalUpgradeJob(value) {
|
|
|
193
241
|
|| validated.targetSelection.version !== validated.targetVersion) {
|
|
194
242
|
throw new Error('External upgrade job selections do not match source/target versions');
|
|
195
243
|
}
|
|
244
|
+
const launchSpecRelative = relative(validated.dataRoot, validated.launchSpecPath);
|
|
245
|
+
if (launchSpecRelative.startsWith('..')
|
|
246
|
+
|| isAbsolute(launchSpecRelative)) {
|
|
247
|
+
throw new Error('External upgrade LaunchSpec must remain inside the data root');
|
|
248
|
+
}
|
|
196
249
|
return validated;
|
|
197
250
|
}
|
|
198
251
|
export function createExternalUpgradeJob(input) {
|
|
@@ -233,13 +286,25 @@ export function transitionExternalUpgradeJob(jobId, phase, options = {}) {
|
|
|
233
286
|
if (existing.phase !== phase && !TRANSITIONS[existing.phase].includes(phase)) {
|
|
234
287
|
throw new Error(`Invalid external upgrade transition: ${existing.phase} -> ${phase}`);
|
|
235
288
|
}
|
|
236
|
-
const
|
|
289
|
+
const candidate = {
|
|
237
290
|
...existing,
|
|
238
291
|
phase,
|
|
239
292
|
...(options.worker ? { worker: options.worker } : {}),
|
|
293
|
+
...(options.targetLauncher ? { targetLauncher: options.targetLauncher } : {}),
|
|
294
|
+
...(options.rollbackLauncher ? { rollbackLauncher: options.rollbackLauncher } : {}),
|
|
295
|
+
...(options.targetRuntime ? { targetRuntime: options.targetRuntime } : {}),
|
|
296
|
+
...(options.rollbackRuntime ? { rollbackRuntime: options.rollbackRuntime } : {}),
|
|
297
|
+
...(options.repairLauncher ? { repairLauncher: options.repairLauncher } : {}),
|
|
298
|
+
...(options.repairRuntime ? { repairRuntime: options.repairRuntime } : {}),
|
|
299
|
+
...(options.lockNonce ? { lockNonce: options.lockNonce } : {}),
|
|
240
300
|
...(options.error !== undefined ? { error: options.error } : {}),
|
|
241
301
|
updatedAt: (options.now ?? new Date()).toISOString(),
|
|
242
|
-
}
|
|
302
|
+
};
|
|
303
|
+
if (options.clearRepairLauncher)
|
|
304
|
+
delete candidate.repairLauncher;
|
|
305
|
+
if (options.clearRepairRuntime)
|
|
306
|
+
delete candidate.repairRuntime;
|
|
307
|
+
const updated = validateExternalUpgradeJob(candidate);
|
|
243
308
|
atomicWriteJson(getExternalUpgradeJobPath(jobId), updated);
|
|
244
309
|
atomicWriteJson(join(UPGRADE_DIR, 'latest.json'), updated);
|
|
245
310
|
appendExternalUpgradeEvent(updated, `phase-${phase}`);
|
|
@@ -269,4 +334,20 @@ export function appendExternalUpgradeEvent(job, code, detail) {
|
|
|
269
334
|
mode: 0o600,
|
|
270
335
|
});
|
|
271
336
|
}
|
|
337
|
+
export function markExternalUpgradeRepaired(jobId, now = new Date()) {
|
|
338
|
+
const existing = loadExternalUpgradeJob(jobId);
|
|
339
|
+
if (existing.phase !== 'repair-starting') {
|
|
340
|
+
throw new Error('Only a repair-starting external upgrade can be marked repaired');
|
|
341
|
+
}
|
|
342
|
+
const updated = validateExternalUpgradeJob({
|
|
343
|
+
...existing,
|
|
344
|
+
phase: 'rolled-back',
|
|
345
|
+
updatedAt: now.toISOString(),
|
|
346
|
+
error: null,
|
|
347
|
+
});
|
|
348
|
+
atomicWriteJson(getExternalUpgradeJobPath(jobId), updated);
|
|
349
|
+
atomicWriteJson(join(UPGRADE_DIR, 'latest.json'), updated);
|
|
350
|
+
appendExternalUpgradeEvent(updated, 'repair-completed');
|
|
351
|
+
return updated;
|
|
352
|
+
}
|
|
272
353
|
//# sourceMappingURL=upgrade-job.js.map
|