UNPKG

naisys

Version:

NAISYS - Autonomous AI agent runner with built-in context management and cost tracking

78 lines 2.38 kB
import { execSync } from "node:child_process"; import { readFileSync } from "node:fs"; import os from "node:os"; function detectPlatform() { const p = os.platform(); if (p === "darwin") return "macos"; if (p === "win32") return "windows"; if (process.env.WSL_DISTRO_NAME) return "wsl"; return "linux"; } function readOsRelease() { try { const text = readFileSync("/etc/os-release", "utf-8"); const out = {}; for (const line of text.split("\n")) { const eq = line.indexOf("="); if (eq === -1) continue; const key = line.slice(0, eq); let value = line.slice(eq + 1); if (value.startsWith('"') && value.endsWith('"')) { value = value.slice(1, -1); } out[key] = value; } return out; } catch { return null; } } function detectOsVersion(platform) { if (platform === "macos") { try { const productVersion = execSync("sw_vers -productVersion", { encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"], }) .toString() .trim(); return `macOS ${productVersion}`; } catch { return os.release(); } } if (platform === "windows") { // os.version() returns e.g. "Microsoft Windows 11 Pro" return os.version() || `Windows ${os.release()}`; } // linux or wsl const rel = readOsRelease(); const distro = rel?.PRETTY_NAME || rel?.NAME || "Linux"; if (platform === "wsl") { const wslDistro = process.env.WSL_DISTRO_NAME; return wslDistro ? `${distro} (WSL: ${wslDistro})` : `${distro} (WSL)`; } return distro; } function detectShell(platform) { // Mirrors apps/naisys/src/services/shellPlatform.ts: native Windows uses PowerShell, // everything else (including WSL) uses bash. return platform === "windows" ? "powershell" : "bash"; } export function detectHostEnvironment() { const platform = detectPlatform(); return { platform, osVersion: detectOsVersion(platform), shell: detectShell(platform), arch: os.arch(), nodeVersion: process.version, }; } //# sourceMappingURL=hostEnvironment.js.map