Просмотр исходного кода

fix: ensure shell cmds can be properly aborted (#2339)

Aiden Cline 5 месяцев назад
Родитель
Сommit
029612d8d5
1 измененных файлов с 6 добавлено и 0 удалено
  1. 6 0
      packages/opencode/src/session/index.ts

+ 6 - 0
packages/opencode/src/session/index.ts

@@ -1141,6 +1141,7 @@ export namespace Session {
     const proc = spawn(shell, args, {
     const proc = spawn(shell, args, {
       cwd: app.path.cwd,
       cwd: app.path.cwd,
       signal: abort.signal,
       signal: abort.signal,
+      detached: true,
       stdio: ["ignore", "pipe", "pipe"],
       stdio: ["ignore", "pipe", "pipe"],
       env: {
       env: {
         ...process.env,
         ...process.env,
@@ -1148,6 +1149,11 @@ export namespace Session {
       },
       },
     })
     })
 
 
+    abort.signal.addEventListener("abort", () => {
+      if (!proc.pid) return
+      process.kill(-proc.pid)
+    })
+
     let output = ""
     let output = ""
 
 
     proc.stdout?.on("data", (chunk) => {
     proc.stdout?.on("data", (chunk) => {