fix: display errors when using `opencode run ...` (#751)
parent
562bdb95e2
commit
8322f18e03
|
|
@ -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()
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue