fix(mcp): escaped cmd shim quotes

Escaped literal double quotes with cmd caret syntax before invoking Windows .cmd MCP shims so JSON args cannot break out of the quoted argument.

Refs #2174
This commit is contained in:
roboomp
2026-06-09 08:35:44 +00:00
parent 6b4bcb81e4
commit db351abe49
2 changed files with 38 additions and 13 deletions
@@ -110,23 +110,17 @@ async function resolveWindowsCommandPath(
function quoteCmdArg(value: string): string {
if (value.length === 0) return '""';
let result = '"';
let backslashes = 0;
for (const char of value) {
if (char === "\\") {
backslashes++;
continue;
}
if (char === '"') {
result += "\\".repeat(backslashes * 2 + 1);
result += '"';
backslashes = 0;
continue;
result += '^"';
} else if (char === "^") {
result += "^^";
} else if (char === "%") {
result += "^%";
} else {
result += char;
}
result += "\\".repeat(backslashes);
backslashes = 0;
result += char === "%" ? "^%" : char;
}
result += "\\".repeat(backslashes * 2);
return `${result}"`;
}