diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index c92d3ac79..10bc4245a 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -1252,7 +1252,9 @@ export namespace SessionPrompt { } await Session.updatePart(part) const shell = Shell.preferred() - const shellName = path.basename(shell).toLowerCase() + const shellName = ( + process.platform === "win32" ? path.win32.basename(shell, ".exe") : path.basename(shell) + ).toLowerCase() const invocations: Record = { nu: { @@ -1282,12 +1284,12 @@ export namespace SessionPrompt { `, ], }, - // Windows cmd.exe - "cmd.exe": { + // Windows cmd + cmd: { args: ["/c", input.command], }, // Windows PowerShell - "powershell.exe": { + powershell: { args: ["-NoProfile", "-Command", input.command], }, pwsh: { diff --git a/packages/opencode/src/shell/shell.ts b/packages/opencode/src/shell/shell.ts index ade3e99e3..2e8d48bfd 100644 --- a/packages/opencode/src/shell/shell.ts +++ b/packages/opencode/src/shell/shell.ts @@ -61,7 +61,7 @@ export namespace Shell { export const acceptable = lazy(() => { const s = process.env.SHELL - if (s && !BLACKLIST.has(path.basename(s))) return s + if (s && !BLACKLIST.has(process.platform === "win32" ? path.win32.basename(s) : path.basename(s))) return s return fallback() }) }