@amd-gaia/gaia 0.1.1 → 0.2.0
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/CHANGELOG.md +154 -3
- package/README.md +36 -11
- package/SKILL.md +164 -40
- package/SPEC.md +159 -15
- package/binaries.lock.json +25 -25
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +146 -21
- package/dist/cli.js.map +1 -1
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +9 -0
- package/dist/errors.js.map +1 -1
- package/dist/fetch.d.ts +5 -4
- package/dist/fetch.d.ts.map +1 -1
- package/dist/fetch.js +174 -22
- package/dist/fetch.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/lifecycle.d.ts +22 -5
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +257 -41
- package/dist/lifecycle.js.map +1 -1
- package/package.json +1 -1
package/dist/lifecycle.js
CHANGED
|
@@ -19,14 +19,16 @@
|
|
|
19
19
|
* REST surface without a daemon.
|
|
20
20
|
*/
|
|
21
21
|
import { spawn, spawnSync } from "node:child_process";
|
|
22
|
+
import crypto from "node:crypto";
|
|
22
23
|
import fs from "node:fs";
|
|
24
|
+
import net from "node:net";
|
|
23
25
|
import path from "node:path";
|
|
24
|
-
import { BinaryNotFoundError, HealthTimeoutError, HttpError, VersionMismatchError, } from "./errors.js";
|
|
26
|
+
import { BinaryNotFoundError, HealthTimeoutError, HttpError, IntegrityError, MalformedResponseError, PortInUseError, SidecarExitedError, VersionMismatchError, } from "./errors.js";
|
|
25
27
|
import { createLogger } from "./logger.js";
|
|
26
|
-
import { currentPlatformKey } from "./platform.js";
|
|
28
|
+
import { currentPlatformKey, isPlaceholderSha, loadLock, resolveEntry, } from "./platform.js";
|
|
27
29
|
const log = createLogger("lifecycle");
|
|
28
30
|
export const DEFAULT_HOST = "127.0.0.1";
|
|
29
|
-
/** Matches `
|
|
31
|
+
/** Matches `gaia_agent.server.DEFAULT_PORT`. NEVER 4001 (repo-reserved). */
|
|
30
32
|
export const DEFAULT_PORT = 8141;
|
|
31
33
|
/** Repo-wide reserved port. Nothing here may ever bind it. */
|
|
32
34
|
export const RESERVED_PORT = 4001;
|
|
@@ -46,8 +48,49 @@ export function sidecarExecutableName(platform = process.platform) {
|
|
|
46
48
|
export function tuiExecutableName(platform = process.platform) {
|
|
47
49
|
return platform === "win32" ? "gaia-tui.exe" : "gaia-tui";
|
|
48
50
|
}
|
|
51
|
+
/** SHA-256 of a file, read in chunks so a ~200MB binary is not buffered whole. */
|
|
52
|
+
function fileSha256Sync(filePath) {
|
|
53
|
+
const hash = crypto.createHash("sha256");
|
|
54
|
+
const buf = Buffer.allocUnsafe(1 << 20);
|
|
55
|
+
const fd = fs.openSync(filePath, "r");
|
|
56
|
+
try {
|
|
57
|
+
for (;;) {
|
|
58
|
+
const n = fs.readSync(fd, buf, 0, buf.length, null);
|
|
59
|
+
if (n === 0)
|
|
60
|
+
break;
|
|
61
|
+
hash.update(buf.subarray(0, n));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
fs.closeSync(fd);
|
|
66
|
+
}
|
|
67
|
+
return hash.digest("hex");
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Re-verify an on-disk binary against the lock. `fetch.ts` calls the SHA verify
|
|
71
|
+
* "the security boundary"; this keeps that true for the resolve→spawn path,
|
|
72
|
+
* which is exported and whose cache path is guessable.
|
|
73
|
+
*/
|
|
74
|
+
function verifyAgainstLock(full, component, lock) {
|
|
75
|
+
const platformKey = currentPlatformKey();
|
|
76
|
+
const entry = resolveEntry(lock ?? loadLock(), component, platformKey);
|
|
77
|
+
if (isPlaceholderSha(entry.sha256)) {
|
|
78
|
+
throw new IntegrityError(`binaries.lock.json has a placeholder sha256 for ${component}/'${platformKey}', ` +
|
|
79
|
+
`so ${full} cannot be verified and must not be spawned. Install a released ` +
|
|
80
|
+
"@amd-gaia/gaia, or pass { verify: false } if you built this binary yourself.");
|
|
81
|
+
}
|
|
82
|
+
const actual = fileSha256Sync(full);
|
|
83
|
+
if (actual.toLowerCase() !== entry.sha256.toLowerCase()) {
|
|
84
|
+
throw new IntegrityError(`SHA-256 mismatch for the ${component} binary at ${full}:\n` +
|
|
85
|
+
` expected ${entry.sha256}\n` +
|
|
86
|
+
` actual ${actual}\n` +
|
|
87
|
+
"Refusing to spawn a binary that does not match binaries.lock.json. " +
|
|
88
|
+
"Re-run `npx @amd-gaia/gaia fetch --force` to reinstall it; if it persists, " +
|
|
89
|
+
"report it at https://github.com/amd/gaia/issues.");
|
|
90
|
+
}
|
|
91
|
+
}
|
|
49
92
|
/** Resolve a fetched binary's path, failing loudly if it is not there. */
|
|
50
|
-
function resolveIn(opts, fallback, what) {
|
|
93
|
+
function resolveIn(opts, component, fallback, what) {
|
|
51
94
|
if (!opts?.resourcesDir) {
|
|
52
95
|
throw new TypeError("resolve requires { resourcesDir }");
|
|
53
96
|
}
|
|
@@ -56,13 +99,15 @@ function resolveIn(opts, fallback, what) {
|
|
|
56
99
|
throw new BinaryNotFoundError(`${what} binary not found at ${full} (platform ${currentPlatformKey()}). ` +
|
|
57
100
|
"Run the fetch step first: `npx @amd-gaia/gaia fetch`.");
|
|
58
101
|
}
|
|
102
|
+
if (opts.verify ?? true)
|
|
103
|
+
verifyAgainstLock(full, component, opts.lock);
|
|
59
104
|
return full;
|
|
60
105
|
}
|
|
61
106
|
export function resolveSidecarPath(opts) {
|
|
62
|
-
return resolveIn(opts, sidecarExecutableName(), "gaia-agent sidecar");
|
|
107
|
+
return resolveIn(opts, "sidecar", sidecarExecutableName(), "gaia-agent sidecar");
|
|
63
108
|
}
|
|
64
109
|
export function resolveTuiPath(opts) {
|
|
65
|
-
return resolveIn(opts, tuiExecutableName(), "gaia-tui");
|
|
110
|
+
return resolveIn(opts, "tui", tuiExecutableName(), "gaia-tui");
|
|
66
111
|
}
|
|
67
112
|
// --- Auto-cleanup: reap orphaned sidecars when the parent process goes away ---
|
|
68
113
|
// The sidecar is spawned detached (its own process group), so a parent Ctrl+C,
|
|
@@ -73,6 +118,15 @@ export function resolveTuiPath(opts) {
|
|
|
73
118
|
const liveSidecars = new Set();
|
|
74
119
|
let cleanupInstalled = false;
|
|
75
120
|
const CLEANUP_SIGNALS = ["SIGINT", "SIGTERM", "SIGHUP"];
|
|
121
|
+
/** stderr from an exit handler: console.error can be async on a piped stderr. */
|
|
122
|
+
function writeStderrSync(msg) {
|
|
123
|
+
try {
|
|
124
|
+
fs.writeSync(2, msg.endsWith("\n") ? msg : `${msg}\n`);
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
/* stderr unavailable */
|
|
128
|
+
}
|
|
129
|
+
}
|
|
76
130
|
function killTreeSync(sidecar) {
|
|
77
131
|
const { child } = sidecar;
|
|
78
132
|
if (child.pid === undefined)
|
|
@@ -81,14 +135,30 @@ function killTreeSync(sidecar) {
|
|
|
81
135
|
return;
|
|
82
136
|
try {
|
|
83
137
|
if (process.platform === "win32") {
|
|
84
|
-
spawnSync("taskkill", ["/PID", String(child.pid), "/T", "/F"], {
|
|
138
|
+
const r = spawnSync("taskkill", ["/PID", String(child.pid), "/T", "/F"], {
|
|
139
|
+
stdio: ["ignore", "ignore", "pipe"],
|
|
140
|
+
encoding: "utf8",
|
|
141
|
+
});
|
|
142
|
+
// A refusal ("Access is denied") leaves the port held; say so now rather
|
|
143
|
+
// than let it surface as an unexplained bind failure on the next run.
|
|
144
|
+
if (r.error || r.status !== 0) {
|
|
145
|
+
writeStderrSync(`[gaia:lifecycle] ERROR taskkill /PID ${child.pid} /T /F failed ` +
|
|
146
|
+
`(${r.error ? r.error.message : `exit ${String(r.status)}`}): ` +
|
|
147
|
+
`${(r.stderr ?? "").trim() || "(no output)"}. ` +
|
|
148
|
+
`Kill pid ${child.pid} manually or port ${sidecar.port} stays bound.`);
|
|
149
|
+
}
|
|
85
150
|
}
|
|
86
151
|
else {
|
|
87
152
|
process.kill(-child.pid, "SIGKILL");
|
|
88
153
|
}
|
|
89
154
|
}
|
|
90
|
-
catch {
|
|
91
|
-
|
|
155
|
+
catch (e) {
|
|
156
|
+
const code = e.code;
|
|
157
|
+
if (code === "ESRCH")
|
|
158
|
+
return; // already gone — the outcome we wanted
|
|
159
|
+
writeStderrSync(`[gaia:lifecycle] ERROR could not kill the sidecar process group ` +
|
|
160
|
+
`${String(child.pid)}: ${e.message}. ` +
|
|
161
|
+
`Kill it manually or port ${sidecar.port} stays bound.`);
|
|
92
162
|
}
|
|
93
163
|
}
|
|
94
164
|
function reapAllSync() {
|
|
@@ -108,30 +178,40 @@ function crashHandler(err) {
|
|
|
108
178
|
}
|
|
109
179
|
process.exit(1);
|
|
110
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* True when ours is the only listener for `event`, i.e. nothing else in this
|
|
183
|
+
* process handles it and the process is therefore going down.
|
|
184
|
+
*
|
|
185
|
+
* Reaping is only ours to do in that case: a host with its own handler keeps
|
|
186
|
+
* running, and killing its sidecar would turn an exception it handled into an
|
|
187
|
+
* unexplained ECONNREFUSED on its next request.
|
|
188
|
+
*/
|
|
189
|
+
function weOwnTheExit(event) {
|
|
190
|
+
return process.listenerCount(event) === 1;
|
|
191
|
+
}
|
|
111
192
|
function installCleanupHandlers() {
|
|
112
193
|
if (cleanupInstalled)
|
|
113
194
|
return;
|
|
114
195
|
cleanupInstalled = true;
|
|
196
|
+
// The backstop: whatever route the process takes out, this runs.
|
|
115
197
|
process.on("exit", reapAllSync);
|
|
198
|
+
// crashHandler reaps before it exits, so the guard is the whole handler.
|
|
116
199
|
process.on("uncaughtException", (err) => {
|
|
117
|
-
|
|
118
|
-
if (process.listenerCount("uncaughtException") === 1)
|
|
200
|
+
if (weOwnTheExit("uncaughtException"))
|
|
119
201
|
crashHandler(err);
|
|
120
202
|
});
|
|
121
203
|
process.on("unhandledRejection", (err) => {
|
|
122
|
-
|
|
123
|
-
if (process.listenerCount("unhandledRejection") === 1)
|
|
204
|
+
if (weOwnTheExit("unhandledRejection"))
|
|
124
205
|
crashHandler(err);
|
|
125
206
|
});
|
|
126
207
|
for (const sig of CLEANUP_SIGNALS) {
|
|
127
208
|
const handler = () => {
|
|
209
|
+
if (!weOwnTheExit(sig))
|
|
210
|
+
return;
|
|
128
211
|
reapAllSync();
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
process.removeListener(sig, handler);
|
|
133
|
-
process.kill(process.pid, sig);
|
|
134
|
-
}
|
|
212
|
+
// Restore the default disposition and re-raise so we still terminate.
|
|
213
|
+
process.removeListener(sig, handler);
|
|
214
|
+
process.kill(process.pid, sig);
|
|
135
215
|
};
|
|
136
216
|
process.on(sig, handler);
|
|
137
217
|
}
|
|
@@ -177,9 +257,16 @@ export function spawnSidecar(opts) {
|
|
|
177
257
|
registerForCleanup(sidecar);
|
|
178
258
|
return sidecar;
|
|
179
259
|
}
|
|
180
|
-
async function getJson(url, timeoutMs) {
|
|
260
|
+
async function getJson(url, timeoutMs, signal) {
|
|
181
261
|
const controller = new AbortController();
|
|
182
262
|
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
263
|
+
// Link the caller's signal so an in-flight probe aborts the moment the
|
|
264
|
+
// process being probed dies, rather than at the next poll.
|
|
265
|
+
const onAbort = () => controller.abort();
|
|
266
|
+
if (signal?.aborted)
|
|
267
|
+
controller.abort();
|
|
268
|
+
else
|
|
269
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
183
270
|
try {
|
|
184
271
|
const res = await fetch(url, {
|
|
185
272
|
headers: { accept: "application/json" },
|
|
@@ -188,15 +275,26 @@ async function getJson(url, timeoutMs) {
|
|
|
188
275
|
const text = await res.text();
|
|
189
276
|
if (!res.ok)
|
|
190
277
|
throw new HttpError(res.status, url, text);
|
|
191
|
-
|
|
278
|
+
try {
|
|
279
|
+
return JSON.parse(text);
|
|
280
|
+
}
|
|
281
|
+
catch (e) {
|
|
282
|
+
// A proxy or captive portal answering 200 with HTML lands here; a bare
|
|
283
|
+
// SyntaxError would escape the CLI's GaiaError branch as a raw stack.
|
|
284
|
+
throw new MalformedResponseError(`${url} returned HTTP ${res.status} but its body is not JSON ` +
|
|
285
|
+
`(${e.message}). First 200 bytes: ${JSON.stringify(text.slice(0, 200))}. ` +
|
|
286
|
+
"Something other than the gaia sidecar is answering that address — " +
|
|
287
|
+
"check for a proxy on the port, or point at the right host/port.");
|
|
288
|
+
}
|
|
192
289
|
}
|
|
193
290
|
finally {
|
|
194
291
|
clearTimeout(timer);
|
|
292
|
+
signal?.removeEventListener("abort", onAbort);
|
|
195
293
|
}
|
|
196
294
|
}
|
|
197
295
|
/** `GET /health` — liveness only; it does not mean a model is loaded. */
|
|
198
|
-
export function health(baseUrl, timeoutMs = 1000) {
|
|
199
|
-
return getJson(`${baseUrl}/health`, timeoutMs);
|
|
296
|
+
export function health(baseUrl, timeoutMs = 1000, signal) {
|
|
297
|
+
return getJson(`${baseUrl}/health`, timeoutMs, signal);
|
|
200
298
|
}
|
|
201
299
|
/** `GET /version` — the contract probe (`{ apiVersion, agentVersion }`). */
|
|
202
300
|
export function version(baseUrl, timeoutMs = 5000) {
|
|
@@ -213,14 +311,20 @@ export async function waitForHealth(baseUrl, opts = {}) {
|
|
|
213
311
|
const deadline = Date.now() + timeoutMs;
|
|
214
312
|
let lastErr = "";
|
|
215
313
|
let attempts = 0;
|
|
314
|
+
// Re-checked after every await, not just at the top of the loop: a probe that
|
|
315
|
+
// races the process's death would otherwise report a foreign server's health.
|
|
316
|
+
const throwIfAborted = () => {
|
|
317
|
+
if (!opts.signal?.aborted)
|
|
318
|
+
return;
|
|
319
|
+
throw new HealthTimeoutError(`health wait for ${baseUrl} was aborted after ${attempts} probe(s) ` +
|
|
320
|
+
"(the process being probed exited).");
|
|
321
|
+
};
|
|
216
322
|
while (Date.now() < deadline) {
|
|
217
|
-
|
|
218
|
-
throw new HealthTimeoutError(`health wait for ${baseUrl} was aborted after ${attempts} probe(s) ` +
|
|
219
|
-
"(the process being probed exited).");
|
|
220
|
-
}
|
|
323
|
+
throwIfAborted();
|
|
221
324
|
attempts++;
|
|
222
325
|
try {
|
|
223
|
-
const h = await health(baseUrl, intervalMs * 4);
|
|
326
|
+
const h = await health(baseUrl, intervalMs * 4, opts.signal);
|
|
327
|
+
throwIfAborted();
|
|
224
328
|
if (h.status === "ok") {
|
|
225
329
|
log.debug(`sidecar healthy after ${attempts} probe(s)`);
|
|
226
330
|
return;
|
|
@@ -228,9 +332,11 @@ export async function waitForHealth(baseUrl, opts = {}) {
|
|
|
228
332
|
lastErr = `unexpected health status: ${JSON.stringify(h)}`;
|
|
229
333
|
}
|
|
230
334
|
catch (e) {
|
|
335
|
+
throwIfAborted();
|
|
231
336
|
lastErr = e.message;
|
|
232
337
|
}
|
|
233
338
|
await sleep(intervalMs);
|
|
339
|
+
throwIfAborted();
|
|
234
340
|
}
|
|
235
341
|
throw new HealthTimeoutError(`the gaia sidecar at ${baseUrl} did not become healthy within ${timeoutMs}ms ` +
|
|
236
342
|
`(${attempts} probes). Last error: ${lastErr}. ` +
|
|
@@ -269,8 +375,8 @@ export async function checkVersion(baseUrl, opts = {}) {
|
|
|
269
375
|
*/
|
|
270
376
|
export async function shutdown(sidecar, timeoutMs = 5000) {
|
|
271
377
|
const { child } = sidecar;
|
|
272
|
-
liveSidecars.delete(sidecar); // an explicit shutdown owns the lifecycle now
|
|
273
378
|
if (child.exitCode !== null || child.signalCode !== null || child.pid === undefined) {
|
|
379
|
+
liveSidecars.delete(sidecar);
|
|
274
380
|
log.debug("shutdown: sidecar already exited");
|
|
275
381
|
return;
|
|
276
382
|
}
|
|
@@ -279,11 +385,29 @@ export async function shutdown(sidecar, timeoutMs = 5000) {
|
|
|
279
385
|
const exited = new Promise((resolve) => {
|
|
280
386
|
child.once("exit", () => resolve());
|
|
281
387
|
});
|
|
388
|
+
// Why the kill was refused, kept for the throw below — "Access is denied" is
|
|
389
|
+
// the difference between "retry" and "run this elevated".
|
|
390
|
+
let killDiagnostic = "";
|
|
282
391
|
if (process.platform === "win32") {
|
|
283
392
|
const killer = spawn("taskkill", ["/PID", String(pid), "/T", "/F"], {
|
|
284
|
-
stdio: "ignore",
|
|
393
|
+
stdio: ["ignore", "ignore", "pipe"],
|
|
394
|
+
});
|
|
395
|
+
let taskkillErr = "";
|
|
396
|
+
killer.stderr?.on("data", (d) => {
|
|
397
|
+
taskkillErr += String(d);
|
|
398
|
+
});
|
|
399
|
+
killer.on("error", (e) => {
|
|
400
|
+
killDiagnostic = `taskkill could not be launched: ${e.message}`;
|
|
401
|
+
log.error(killDiagnostic);
|
|
402
|
+
});
|
|
403
|
+
killer.on("exit", (code) => {
|
|
404
|
+
if (code === 0)
|
|
405
|
+
return;
|
|
406
|
+
killDiagnostic =
|
|
407
|
+
`taskkill /PID ${pid} /T /F exited ${String(code)}: ` +
|
|
408
|
+
`${taskkillErr.trim() || "(no output)"}`;
|
|
409
|
+
log.error(killDiagnostic);
|
|
285
410
|
});
|
|
286
|
-
killer.on("error", (e) => log.error(`taskkill failed: ${e.message}`));
|
|
287
411
|
}
|
|
288
412
|
else {
|
|
289
413
|
try {
|
|
@@ -319,36 +443,128 @@ export async function shutdown(sidecar, timeoutMs = 5000) {
|
|
|
319
443
|
// Bound the final wait too. On Windows there is no second escalation after
|
|
320
444
|
// taskkill, so an unbounded await here would hang Ctrl+C forever.
|
|
321
445
|
if ((await raceExit(timeoutMs)) === "timeout") {
|
|
322
|
-
|
|
323
|
-
|
|
446
|
+
// Deliberately still registered: the process-exit reaper is the last
|
|
447
|
+
// chance to reap a survivor, and de-registering here would orphan it.
|
|
448
|
+
throw new Error(`the gaia sidecar (pid ${pid}) did not exit after a forced kill` +
|
|
449
|
+
(killDiagnostic ? ` (${killDiagnostic})` : "") +
|
|
450
|
+
". Kill it manually — " +
|
|
324
451
|
(process.platform === "win32"
|
|
325
452
|
? `taskkill /PID ${pid} /T /F`
|
|
326
453
|
: `kill -9 -${pid}`) +
|
|
327
|
-
` — or
|
|
454
|
+
` — or port ${sidecar.port} stays bound.`);
|
|
328
455
|
}
|
|
329
456
|
}
|
|
457
|
+
liveSidecars.delete(sidecar);
|
|
330
458
|
log.info("sidecar shut down");
|
|
331
459
|
}
|
|
332
460
|
/**
|
|
333
|
-
*
|
|
334
|
-
*
|
|
335
|
-
*
|
|
461
|
+
* Refuse a handle whose own child is dead. A healthy `/health` proves *something*
|
|
462
|
+
* owns the port — this proves it is ours. Without it a second `gaia serve` would
|
|
463
|
+
* print a ready URL for a server it cannot shut down.
|
|
464
|
+
*/
|
|
465
|
+
function assertOurs(sidecar) {
|
|
466
|
+
const { child } = sidecar;
|
|
467
|
+
if (child.exitCode === null && child.signalCode === null)
|
|
468
|
+
return;
|
|
469
|
+
throw new SidecarExitedError(`the gaia sidecar we spawned exited (code=${String(child.exitCode)} ` +
|
|
470
|
+
`signal=${String(child.signalCode)}) while ${sidecar.baseUrl}/health still ` +
|
|
471
|
+
`answered — another process is already bound to port ${sidecar.port}, most ` +
|
|
472
|
+
"likely an instance you started earlier. Stop it (" +
|
|
473
|
+
(process.platform === "win32"
|
|
474
|
+
? `netstat -ano | findstr :${sidecar.port}`
|
|
475
|
+
: `lsof -i :${sidecar.port}`) +
|
|
476
|
+
") or start on a different port with --port. Re-run with DEBUG=gaia to see " +
|
|
477
|
+
"the sidecar's own output.");
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Decide what a dead child actually means, by asking who owns the port now.
|
|
481
|
+
*
|
|
482
|
+
* The health wait aborts the instant our child exits, so on a fast machine that
|
|
483
|
+
* abort can beat a healthy reply from an incumbent — and then a port conflict
|
|
484
|
+
* reports as a plain timeout. Re-probing settles which failure this is instead
|
|
485
|
+
* of letting the race name it. Silent when our child is alive, or when nothing
|
|
486
|
+
* answers: that is a genuine timeout and the caller rethrows it.
|
|
487
|
+
*/
|
|
488
|
+
async function assertNotAForeignServer(sidecar) {
|
|
489
|
+
const { child } = sidecar;
|
|
490
|
+
if (child.exitCode === null && child.signalCode === null)
|
|
491
|
+
return;
|
|
492
|
+
try {
|
|
493
|
+
if ((await health(sidecar.baseUrl, 1_000)).status !== "ok")
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
catch {
|
|
497
|
+
return; // nothing is listening — our sidecar simply died
|
|
498
|
+
}
|
|
499
|
+
assertOurs(sidecar); // something else owns the port; throws SidecarExitedError
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* True when something is already listening on host:port.
|
|
503
|
+
*
|
|
504
|
+
* A TCP connect, not a `/health` probe: ANY listener makes our bind fail, and
|
|
505
|
+
* the incumbent need not be a GAIA sidecar. Unreachable-in-time counts as free —
|
|
506
|
+
* this exists to turn a confusing failure into a clear one early, and the
|
|
507
|
+
* spawn + health wait remains the actual gate.
|
|
508
|
+
*/
|
|
509
|
+
function portInUse(host, port, timeoutMs = 500) {
|
|
510
|
+
return new Promise((resolve) => {
|
|
511
|
+
const socket = net.connect({ host, port });
|
|
512
|
+
const settle = (inUse) => {
|
|
513
|
+
socket.destroy();
|
|
514
|
+
resolve(inUse);
|
|
515
|
+
};
|
|
516
|
+
socket.setTimeout(timeoutMs, () => settle(false));
|
|
517
|
+
socket.once("connect", () => settle(true));
|
|
518
|
+
socket.once("error", () => settle(false)); // ECONNREFUSED — nothing there
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* Spawn → wait for health → assert the child is still ours → (optionally)
|
|
523
|
+
* version-check. On any failure the sidecar is shut down before rethrowing, so a
|
|
524
|
+
* failed start never leaks a process.
|
|
525
|
+
*
|
|
526
|
+
* The port is checked BEFORE the spawn. Without that, the frozen sidecar spends
|
|
527
|
+
* seconds unpacking before it even attempts its bind, while an incumbent answers
|
|
528
|
+
* `/health` in milliseconds — so the health wait succeeds, the still-unpacking
|
|
529
|
+
* child looks alive, and we would hand back a handle for a server we do not own.
|
|
530
|
+
* `assertOurs` / `assertNotAForeignServer` stay as backstops for the narrower
|
|
531
|
+
* race where something binds after this check.
|
|
336
532
|
*/
|
|
337
533
|
export async function startSidecar(opts) {
|
|
534
|
+
const host = opts.host ?? DEFAULT_HOST;
|
|
535
|
+
const port = opts.port ?? DEFAULT_PORT;
|
|
536
|
+
if (await portInUse(host, port)) {
|
|
537
|
+
throw new PortInUseError(`port ${port} on ${host} is already in use, so the gaia sidecar cannot bind ` +
|
|
538
|
+
"it. Most likely an instance you started earlier is still running. Find it " +
|
|
539
|
+
"with " +
|
|
540
|
+
(process.platform === "win32"
|
|
541
|
+
? `\`netstat -ano | findstr :${port}\``
|
|
542
|
+
: `\`lsof -i :${port}\``) +
|
|
543
|
+
`, then stop it — or start on a different port with --port. Nothing was ` +
|
|
544
|
+
"spawned.");
|
|
545
|
+
}
|
|
338
546
|
const sidecar = spawnSidecar(opts);
|
|
339
547
|
// A sidecar that dies immediately (missing runtime lib, port already bound)
|
|
340
548
|
// must not make the caller wait out the full health timeout.
|
|
341
549
|
const died = new AbortController();
|
|
342
550
|
sidecar.child.once("exit", () => died.abort());
|
|
343
551
|
try {
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
552
|
+
try {
|
|
553
|
+
await waitForHealth(sidecar.baseUrl, {
|
|
554
|
+
timeoutMs: opts.healthTimeoutMs,
|
|
555
|
+
signal: died.signal,
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
catch (e) {
|
|
559
|
+
await assertNotAForeignServer(sidecar);
|
|
560
|
+
throw e;
|
|
561
|
+
}
|
|
562
|
+
assertOurs(sidecar);
|
|
348
563
|
if (opts.verifyVersion ?? true) {
|
|
349
564
|
await checkVersion(sidecar.baseUrl, {
|
|
350
565
|
expectedApiVersion: opts.expectedApiVersion,
|
|
351
566
|
});
|
|
567
|
+
assertOurs(sidecar);
|
|
352
568
|
}
|
|
353
569
|
return sidecar;
|
|
354
570
|
}
|
package/dist/lifecycle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amd-gaia/gaia",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "One command to run GAIA: fetches and SHA-256 verifies the flagship agent sidecar and the terminal UI, then launches them. Runs 100% locally on AMD Ryzen AI.",
|
|
6
6
|
"author": "AMD AI Group",
|