mirror of
https://github.com/anomalyco/opencode.git
synced 2026-08-24 14:43:37 -04:00
fix(opencode): narrow subagent error details
This commit is contained in:
@@ -211,8 +211,12 @@ export const TaskTool = Tool.define(
|
||||
parts,
|
||||
})
|
||||
if (result.info.role === "assistant" && result.info.error) {
|
||||
const message =
|
||||
"message" in result.info.error.data && typeof result.info.error.data.message === "string"
|
||||
? result.info.error.data.message
|
||||
: result.info.error.name
|
||||
return yield* Effect.fail(
|
||||
new Error(`Subagent failed (task_id: ${nextSession.id}): ${result.info.error.data.message}`),
|
||||
new Error(`Subagent failed (task_id: ${nextSession.id}): ${message}`),
|
||||
)
|
||||
}
|
||||
return result.parts.findLast((item) => item.type === "text")?.text ?? ""
|
||||
|
||||
@@ -300,9 +300,10 @@ describe("tool.task", () => {
|
||||
if (Exit.isSuccess(exit)) throw new Error("expected task failure")
|
||||
const child = (yield* sessions.children(chat.id))[0]
|
||||
expect(child).toBeDefined()
|
||||
expect(Cause.squash(exit.cause).message).toBe(
|
||||
`Subagent failed (task_id: ${child?.id}): Network connection lost`,
|
||||
)
|
||||
const failure = Cause.squash(exit.cause)
|
||||
expect(failure).toBeInstanceOf(Error)
|
||||
if (!(failure instanceof Error)) throw new Error("expected Error defect")
|
||||
expect(failure.message).toBe(`Subagent failed (task_id: ${child?.id}): Network connection lost`)
|
||||
}),
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user