open-agents-ai 0.186.46 → 0.186.48
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/index.js +112 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -8706,9 +8706,10 @@ process.on('unhandledRejection', (reason) => {
|
|
|
8706
8706
|
});
|
|
8707
8707
|
// Derive node specialties from model mix
|
|
8708
8708
|
var _capSpecialties = [...new Set(_capEnriched.map(function(m) { return m.specialty; }))];
|
|
8709
|
-
// Total VRAM from GPU metrics
|
|
8710
|
-
var
|
|
8711
|
-
var
|
|
8709
|
+
// Total VRAM from GPU metrics (nested under .gpu object)
|
|
8710
|
+
var _capGpu = _capMetrics && _capMetrics.gpu ? _capMetrics.gpu : {};
|
|
8711
|
+
var _capTotalVram = _capGpu.vramTotalMB || 0;
|
|
8712
|
+
var _capAvailVram = _capTotalVram > 0 ? Math.max(0, _capTotalVram - (_capGpu.vramUsedMB || 0)) : 0;
|
|
8712
8713
|
|
|
8713
8714
|
var announcement = {
|
|
8714
8715
|
type: 'capacity.announcement',
|
|
@@ -299202,6 +299203,110 @@ function isDockerAvailable() {
|
|
|
299202
299203
|
return false;
|
|
299203
299204
|
}
|
|
299204
299205
|
}
|
|
299206
|
+
function isDockerInstalled() {
|
|
299207
|
+
try {
|
|
299208
|
+
execSync35("docker --version", { stdio: "pipe", timeout: 5e3 });
|
|
299209
|
+
return true;
|
|
299210
|
+
} catch {
|
|
299211
|
+
return false;
|
|
299212
|
+
}
|
|
299213
|
+
}
|
|
299214
|
+
async function ensureDocker() {
|
|
299215
|
+
if (isDockerAvailable()) {
|
|
299216
|
+
return { ok: true, message: "Docker is available" };
|
|
299217
|
+
}
|
|
299218
|
+
if (isDockerInstalled()) {
|
|
299219
|
+
return {
|
|
299220
|
+
ok: false,
|
|
299221
|
+
message: "Docker CLI is installed but the daemon is not running. Start it with: sudo systemctl start docker"
|
|
299222
|
+
};
|
|
299223
|
+
}
|
|
299224
|
+
const platform6 = process.platform;
|
|
299225
|
+
if (platform6 !== "linux") {
|
|
299226
|
+
return {
|
|
299227
|
+
ok: false,
|
|
299228
|
+
message: `Docker not found. Install manually: https://docs.docker.com/get-docker/ (${platform6})`
|
|
299229
|
+
};
|
|
299230
|
+
}
|
|
299231
|
+
try {
|
|
299232
|
+
console.log("[oa-docker] Docker not found. Installing via get.docker.com...");
|
|
299233
|
+
execSync35("curl -fsSL https://get.docker.com | sh", {
|
|
299234
|
+
stdio: "inherit",
|
|
299235
|
+
timeout: 3e5
|
|
299236
|
+
});
|
|
299237
|
+
const user = process.env["USER"] || process.env["LOGNAME"];
|
|
299238
|
+
if (user) {
|
|
299239
|
+
try {
|
|
299240
|
+
execSync35(`sudo usermod -aG docker ${user}`, { stdio: "pipe" });
|
|
299241
|
+
} catch {
|
|
299242
|
+
}
|
|
299243
|
+
}
|
|
299244
|
+
try {
|
|
299245
|
+
execSync35("sudo systemctl start docker", { stdio: "pipe", timeout: 15e3 });
|
|
299246
|
+
} catch {
|
|
299247
|
+
}
|
|
299248
|
+
try {
|
|
299249
|
+
execSync35("nvidia-smi", { stdio: "pipe", timeout: 5e3 });
|
|
299250
|
+
const runtimes = execSync35("docker info --format '{{json .Runtimes}}'", {
|
|
299251
|
+
stdio: "pipe",
|
|
299252
|
+
timeout: 5e3
|
|
299253
|
+
}).toString();
|
|
299254
|
+
if (!runtimes.includes("nvidia")) {
|
|
299255
|
+
console.log("[oa-docker] NVIDIA GPU detected. Installing nvidia-container-toolkit...");
|
|
299256
|
+
try {
|
|
299257
|
+
execSync35(`
|
|
299258
|
+
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg 2>/dev/null
|
|
299259
|
+
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list > /dev/null 2>&1
|
|
299260
|
+
sudo apt-get update -qq 2>/dev/null && sudo apt-get install -y -qq nvidia-container-toolkit 2>/dev/null || ( sudo dnf install -y nvidia-container-toolkit 2>/dev/null || sudo yum install -y nvidia-container-toolkit 2>/dev/null || true )
|
|
299261
|
+
sudo nvidia-ctk runtime configure --runtime=docker 2>/dev/null
|
|
299262
|
+
sudo systemctl restart docker 2>/dev/null
|
|
299263
|
+
`, { stdio: "pipe", timeout: 12e4 });
|
|
299264
|
+
console.log("[oa-docker] nvidia-container-toolkit installed. GPU passthrough enabled.");
|
|
299265
|
+
} catch {
|
|
299266
|
+
console.log("[oa-docker] nvidia-container-toolkit install failed \u2014 GPU passthrough unavailable. Install manually: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html");
|
|
299267
|
+
}
|
|
299268
|
+
}
|
|
299269
|
+
} catch {
|
|
299270
|
+
}
|
|
299271
|
+
if (isDockerAvailable()) {
|
|
299272
|
+
return { ok: true, message: "Docker installed and running" };
|
|
299273
|
+
}
|
|
299274
|
+
return {
|
|
299275
|
+
ok: false,
|
|
299276
|
+
message: "Docker installed but daemon not reachable. You may need to log out and back in, or run: sudo systemctl start docker"
|
|
299277
|
+
};
|
|
299278
|
+
} catch (err) {
|
|
299279
|
+
return {
|
|
299280
|
+
ok: false,
|
|
299281
|
+
message: `Docker auto-install failed: ${err instanceof Error ? err.message : String(err)}. Install manually: https://docs.docker.com/get-docker/`
|
|
299282
|
+
};
|
|
299283
|
+
}
|
|
299284
|
+
}
|
|
299285
|
+
async function ensureNvidiaToolkit() {
|
|
299286
|
+
try {
|
|
299287
|
+
execSync35("nvidia-smi --query-gpu=name --format=csv,noheader", { stdio: "pipe", timeout: 5e3 });
|
|
299288
|
+
} catch {
|
|
299289
|
+
return { ok: false, message: "No NVIDIA GPU detected (nvidia-smi not found)" };
|
|
299290
|
+
}
|
|
299291
|
+
if (hasNvidiaGpu()) {
|
|
299292
|
+
return { ok: true, message: "nvidia-container-toolkit already configured" };
|
|
299293
|
+
}
|
|
299294
|
+
if (process.platform !== "linux") {
|
|
299295
|
+
return { ok: false, message: "Auto-install only supported on Linux. Install manually: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html" };
|
|
299296
|
+
}
|
|
299297
|
+
try {
|
|
299298
|
+
execSync35(`
|
|
299299
|
+
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg 2>/dev/null
|
|
299300
|
+
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list > /dev/null 2>&1
|
|
299301
|
+
sudo apt-get update -qq 2>/dev/null && sudo apt-get install -y -qq nvidia-container-toolkit 2>/dev/null || ( sudo dnf install -y nvidia-container-toolkit 2>/dev/null || sudo yum install -y nvidia-container-toolkit 2>/dev/null || true )
|
|
299302
|
+
sudo nvidia-ctk runtime configure --runtime=docker 2>/dev/null
|
|
299303
|
+
sudo systemctl restart docker 2>/dev/null
|
|
299304
|
+
`, { stdio: "pipe", timeout: 12e4 });
|
|
299305
|
+
return { ok: true, message: "nvidia-container-toolkit installed and configured" };
|
|
299306
|
+
} catch (err) {
|
|
299307
|
+
return { ok: false, message: `nvidia-container-toolkit install failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
299308
|
+
}
|
|
299309
|
+
}
|
|
299205
299310
|
function isOaImageBuilt() {
|
|
299206
299311
|
try {
|
|
299207
299312
|
const out = execSync35(`docker images -q ${OA_IMAGE}:${OA_IMAGE_TAG}`, {
|
|
@@ -300159,7 +300264,10 @@ async function handleV1Run(req2, res) {
|
|
|
300159
300264
|
const sandbox = requestBody["sandbox"] || activeProfile?.sandbox || process.env["OA_DEFAULT_SANDBOX"] || "none";
|
|
300160
300265
|
if (sandbox === "container") {
|
|
300161
300266
|
if (!isDockerAvailable()) {
|
|
300162
|
-
|
|
300267
|
+
ensureDocker().then(() => ensureNvidiaToolkit().catch(() => {
|
|
300268
|
+
})).catch(() => {
|
|
300269
|
+
});
|
|
300270
|
+
jsonResponse(res, 503, { error: "Container sandbox unavailable", message: "Docker not found. Auto-installing in background \u2014 retry in ~3 minutes. Or install manually: https://docs.docker.com/get-docker/" });
|
|
300163
300271
|
return;
|
|
300164
300272
|
}
|
|
300165
300273
|
if (!isOaImageBuilt()) {
|
package/package.json
CHANGED