summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/opencode/src/session/prompt.ts18
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,