From fb9984a774dce2dde7b23a35956cba230995a9be Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 13 Mar 2026 03:09:07 +0000 Subject: [PATCH] fix(memory): stop forcing Windows qmd cmd shims --- src/memory/qmd-process.test.ts | 16 ++++++++++++++++ src/memory/qmd-process.ts | 22 +--------------------- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/memory/qmd-process.test.ts b/src/memory/qmd-process.test.ts index 84237c43c..8f969fb92 100644 --- a/src/memory/qmd-process.test.ts +++ b/src/memory/qmd-process.test.ts @@ -72,4 +72,20 @@ describe("resolveCliSpawnInvocation", () => { }), ).toThrow(/without shell execution/); }); + + it("keeps bare commands bare when no Windows wrapper exists on PATH", () => { + process.env.PATH = originalPath ?? ""; + process.env.PATHEXT = ".CMD;.EXE"; + + const invocation = resolveCliSpawnInvocation({ + command: "qmd", + args: ["query", "hello"], + env: process.env, + packageName: "qmd", + }); + + expect(invocation.command).toBe("qmd"); + expect(invocation.argv).toEqual(["query", "hello"]); + expect(invocation.shell).not.toBe(true); + }); }); diff --git a/src/memory/qmd-process.ts b/src/memory/qmd-process.ts index bb0eea803..5a70cd3c3 100644 --- a/src/memory/qmd-process.ts +++ b/src/memory/qmd-process.ts @@ -1,5 +1,4 @@ import { spawn } from "node:child_process"; -import path from "node:path"; import { materializeWindowsSpawnProgram, resolveWindowsSpawnProgram, @@ -12,25 +11,6 @@ export type CliSpawnInvocation = { windowsHide?: boolean; }; -function resolveWindowsCommandShim(command: string): string { - if (process.platform !== "win32") { - return command; - } - const trimmed = command.trim(); - if (!trimmed) { - return command; - } - const ext = path.extname(trimmed).toLowerCase(); - if (ext === ".cmd" || ext === ".exe" || ext === ".bat") { - return command; - } - const base = path.basename(trimmed).toLowerCase(); - if (base === "qmd" || base === "mcporter") { - return `${trimmed}.cmd`; - } - return command; -} - export function resolveCliSpawnInvocation(params: { command: string; args: string[]; @@ -38,7 +18,7 @@ export function resolveCliSpawnInvocation(params: { packageName: string; }): CliSpawnInvocation { const program = resolveWindowsSpawnProgram({ - command: resolveWindowsCommandShim(params.command), + command: params.command, platform: process.platform, env: params.env, execPath: process.execPath,