import { execSync } from "node:child_process" import { platform } from "node:os" const PORTS = [3001, 3006, 3007, 3008] if (platform() === "win32") { for (const port of PORTS) { try { const out = execSync(`netstat -ano | findstr "LISTENING" | findstr ":${port} "`, { encoding: "utf8", timeout: 5000 }) const lines = out.trim().split("\n").filter(Boolean) for (const line of lines) { const parts = line.trim().split(/\s+/) const pid = parts[parts.length - 1] if (pid) { try { execSync(`taskkill /F /PID ${pid}`, { stdio: "ignore", timeout: 3000 }); console.log(`Freed port ${port} (PID ${pid})`) } catch {} } } } catch {} } } else { for (const port of PORTS) { try { const pid = execSync(`lsof -ti:${port} 2>/dev/null`, { encoding: "utf8", timeout: 5000 }).trim() if (pid) { execSync(`kill -9 ${pid}`, { stdio: "ignore", timeout: 3000 }) console.log(`Freed port ${port} (PID ${pid})`) } } catch {} } }