37 lines
957 B
TypeScript
37 lines
957 B
TypeScript
function normalizeProcArg(arg: string): string {
|
|
return arg.replaceAll("\\", "/").toLowerCase();
|
|
}
|
|
|
|
export function parseProcCmdline(raw: string): string[] {
|
|
return raw
|
|
.split("\0")
|
|
.map((entry) => entry.trim())
|
|
.filter(Boolean);
|
|
}
|
|
|
|
export function isGatewayArgv(args: string[], opts?: { allowGatewayBinary?: boolean }): boolean {
|
|
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"))
|
|
);
|
|
}
|