diff options
| author | Kit Langton <[email protected]> | 2026-03-18 20:36:53 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-03-18 20:36:53 -0400 |
| commit | 84e62fc662c00ba87f30e1dddab0474a08db487c (patch) | |
| tree | f4c4fd85a35a7097e4f277c31f98788f2e35ce88 | |
| parent | a7ea93528b83d18823c9bcef55115bd90412e93b (diff) | |
| download | opencode-84e62fc662c00ba87f30e1dddab0474a08db487c.tar.gz opencode-84e62fc662c00ba87f30e1dddab0474a08db487c.zip | |
fix(session): preserve tagged error messages (#18165)
| -rw-r--r-- | packages/opencode/src/session/message-v2.ts | 2 | ||||
| -rw-r--r-- | packages/opencode/src/session/processor.ts | 2 | ||||
| -rw-r--r-- | packages/opencode/test/session/message-v2.test.ts | 12 |
3 files changed, 14 insertions, 2 deletions
diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts index 8e4babd61..41e2d4efc 100644 --- a/packages/opencode/src/session/message-v2.ts +++ b/packages/opencode/src/session/message-v2.ts @@ -956,7 +956,7 @@ export namespace MessageV2 { { cause: e }, ).toObject() case e instanceof Error: - return new NamedError.Unknown({ message: e.toString() }, { cause: e }).toObject() + return new NamedError.Unknown({ message: e instanceof Error ? e.message : String(e) }, { cause: e }).toObject() default: try { const parsed = ProviderError.parseStreamError(e) diff --git a/packages/opencode/src/session/processor.ts b/packages/opencode/src/session/processor.ts index 158b83865..8200dea75 100644 --- a/packages/opencode/src/session/processor.ts +++ b/packages/opencode/src/session/processor.ts @@ -210,7 +210,7 @@ export namespace SessionProcessor { state: { status: "error", input: value.input ?? match.state.input, - error: (value.error as any).toString(), + error: value.error instanceof Error ? value.error.message : String(value.error), time: { start: match.state.time.start, end: Date.now(), diff --git a/packages/opencode/test/session/message-v2.test.ts b/packages/opencode/test/session/message-v2.test.ts index 86c9254f1..0d5b89730 100644 --- a/packages/opencode/test/session/message-v2.test.ts +++ b/packages/opencode/test/session/message-v2.test.ts @@ -4,6 +4,7 @@ import { MessageV2 } from "../../src/session/message-v2" import type { Provider } from "../../src/provider/provider" import { ModelID, ProviderID } from "../../src/provider/schema" import { SessionID, MessageID, PartID } from "../../src/session/schema" +import { Question } from "../../src/question" const sessionID = SessionID.make("session") const providerID = ProviderID.make("test") @@ -915,4 +916,15 @@ describe("session.message-v2.fromError", () => { }, }) }) + + test("serializes tagged errors with their message", () => { + const result = MessageV2.fromError(new Question.RejectedError(), { providerID }) + + expect(result).toStrictEqual({ + name: "UnknownError", + data: { + message: "The user dismissed this question", + }, + }) + }) }) |
