openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
45 lines (44 loc) • 1.56 kB
JavaScript
import { a as normalizeLowercaseStringOrEmpty } from "./string-coerce-mnp54Vah.js";
import { l as normalizeStringEntries } from "./string-normalization-WNUDCpXX.js";
//#region src/infra/gateway-process-argv.ts
function normalizeProcArg(arg) {
return normalizeLowercaseStringOrEmpty(arg.replaceAll("\\", "/"));
}
function parseProcCmdline(raw) {
return normalizeStringEntries(raw.split("\0"));
}
/**
* Parse a Windows command line string into argv-style tokens,
* handling double-quoted paths (e.g. `"C:\Program Files\node.exe" gateway run`).
*/
function parseWindowsCmdline(raw) {
const args = [];
let current = "";
let inQuote = false;
for (const char of raw) if (char === "\"") inQuote = !inQuote;
else if (char === " " && !inQuote) {
if (current) {
args.push(current);
current = "";
}
} else current += char;
if (current) args.push(current);
return args;
}
function isGatewayArgv(args, opts) {
const normalized = args.map(normalizeProcArg);
if (!normalized.includes("gateway")) return false;
const entryCandidates = [
"dist/index.js",
"dist/entry.js",
"openclaw.mjs",
"scripts/run-node.mjs",
"src/entry.ts",
"src/index.ts"
];
if (normalized.some((arg) => entryCandidates.some((entry) => arg.endsWith(entry)))) return true;
const exe = (normalized[0] ?? "").replace(/\.(bat|cmd|exe)$/i, "");
return exe.endsWith("/openclaw") || exe === "openclaw" || opts?.allowGatewayBinary === true && exe.endsWith("/openclaw-gateway");
}
//#endregion
export { parseProcCmdline as n, parseWindowsCmdline as r, isGatewayArgv as t };