diff options
| author | spoj <[email protected]> | 2025-12-10 14:01:56 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-12-10 00:01:56 -0600 |
| commit | 301f1a191b5526658d3cca28b44b948e1ea0cf66 (patch) | |
| tree | 6b3d75f75e89e781e2a16d21b9891ea9fe8feb8c | |
| parent | d149c25aaba0dd171bb7e8bc713d1257c0a4e107 (diff) | |
| download | opencode-301f1a191b5526658d3cca28b44b948e1ea0cf66.tar.gz opencode-301f1a191b5526658d3cca28b44b948e1ea0cf66.zip | |
fix: add Windows support for shell mode (! command) (#5311)
| -rw-r--r-- | packages/opencode/src/session/prompt.ts | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 10520338c..bb6bce7a6 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -1231,8 +1231,12 @@ export namespace SessionPrompt { }, } await Session.updatePart(part) - const shell = process.env["SHELL"] ?? "bash" - const shellName = path.basename(shell) + const shell = + process.env["SHELL"] ?? + (process.platform === "win32" + ? process.env["COMSPEC"] || "cmd.exe" + : "bash") + const shellName = path.basename(shell).toLowerCase() const invocations: Record<string, { args: string[] }> = { nu: { @@ -1262,6 +1266,14 @@ export namespace SessionPrompt { `, ], }, + // Windows cmd.exe + "cmd.exe": { + args: ["/c", input.command], + }, + // Windows PowerShell + "powershell.exe": { + args: ["-NoProfile", "-Command", input.command], + }, // Fallback: any shell that doesn't match those above "": { args: ["-c", "-l", `${input.command}`], @@ -1273,7 +1285,7 @@ export namespace SessionPrompt { const proc = spawn(shell, args, { cwd: Instance.directory, - detached: true, + detached: process.platform !== "win32", stdio: ["ignore", "pipe", "pipe"], env: { ...process.env, |
