summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAiden Cline <[email protected]>2025-07-08 10:38:11 -0500
committerGitHub <[email protected]>2025-07-08 10:38:11 -0500
commit8322f18e0339fa015346c6700b4e71d2b193b402 (patch)
tree9c346dcef55a061cc34ab01fcf946288aa53b17b
parent562bdb95e2e2503a0b1ff73a3fa565d705a8e412 (diff)
downloadopencode-8322f18e0339fa015346c6700b4e71d2b193b402.tar.gz
opencode-8322f18e0339fa015346c6700b4e71d2b193b402.zip
fix: display errors when using `opencode run ...` (#751)
-rw-r--r--packages/opencode/src/cli/cmd/run.ts15
-rw-r--r--packages/opencode/src/session/index.ts2
2 files changed, 17 insertions, 0 deletions
diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts
index 453b273d0..218e1ea8f 100644
--- a/packages/opencode/src/cli/cmd/run.ts
+++ b/packages/opencode/src/cli/cmd/run.ts
@@ -125,6 +125,20 @@ export const RunCommand = cmd({
}
})
+ let errorMsg: string | undefined
+ Bus.subscribe(Session.Event.Error, async (evt) => {
+ const { sessionID, error } = evt.properties
+ if (sessionID !== session.id || !error) return
+ let err = String(error.name)
+
+ if ("data" in error && error.data && "message" in error.data) {
+ err = error.data.message
+ }
+ errorMsg = errorMsg ? errorMsg + "\n" + err : err
+
+ UI.error(err)
+ })
+
const result = await Session.chat({
sessionID: session.id,
providerID,
@@ -140,6 +154,7 @@ export const RunCommand = cmd({
if (isPiped) {
const match = result.parts.findLast((x) => x.type === "text")
if (match) process.stdout.write(match.text)
+ if (errorMsg) process.stdout.write(errorMsg)
}
UI.empty()
})
diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts
index 614e7e5a8..41454307c 100644
--- a/packages/opencode/src/session/index.ts
+++ b/packages/opencode/src/session/index.ts
@@ -99,6 +99,7 @@ export namespace Session {
Error: Bus.event(
"session.error",
z.object({
+ sessionID: z.string().optional(),
error: MessageV2.Assistant.shape.error,
}),
),
@@ -727,6 +728,7 @@ export namespace Session {
next.error = new NamedError.Unknown({ message: JSON.stringify(e) }, { cause: e })
}
Bus.publish(Event.Error, {
+ sessionID: next.sessionID,
error: next.error,
})
}