From 054f8483075266fe49763d662a05c6e73f1eeb5d Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 6 Mar 2026 01:30:12 -0500 Subject: [PATCH] fix(opencode): honor nothrow on spawn errors --- packages/opencode/src/util/process.ts | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/opencode/src/util/process.ts b/packages/opencode/src/util/process.ts index 1549be0b6c..473ee27dc9 100644 --- a/packages/opencode/src/util/process.ts +++ b/packages/opencode/src/util/process.ts @@ -118,12 +118,20 @@ export namespace Process { if (!proc.stdout || !proc.stderr) throw new Error("Process output not available") - const [code, stdout, stderr] = await Promise.all([proc.exited, buffer(proc.stdout), buffer(proc.stderr)]) - const out = { - code, - stdout, - stderr, - } + const out = await Promise.all([proc.exited, buffer(proc.stdout), buffer(proc.stderr)]) + .then(([code, stdout, stderr]) => ({ + code, + stdout, + stderr, + })) + .catch((err: unknown) => { + if (!opts.nothrow) throw err + return { + code: 1, + stdout: Buffer.alloc(0), + stderr: Buffer.from(err instanceof Error ? err.message : String(err)), + } + }) if (out.code === 0 || opts.nothrow) return out throw new RunFailedError(cmd, out.code, out.stdout, out.stderr) }