summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorKit Langton <[email protected]>2026-03-18 20:36:53 -0400
committerGitHub <[email protected]>2026-03-18 20:36:53 -0400
commit84e62fc662c00ba87f30e1dddab0474a08db487c (patch)
treef4c4fd85a35a7097e4f277c31f98788f2e35ce88 /packages
parenta7ea93528b83d18823c9bcef55115bd90412e93b (diff)
downloadopencode-84e62fc662c00ba87f30e1dddab0474a08db487c.tar.gz
opencode-84e62fc662c00ba87f30e1dddab0474a08db487c.zip
fix(session): preserve tagged error messages (#18165)
Diffstat (limited to 'packages')
-rw-r--r--packages/opencode/src/session/message-v2.ts2
-rw-r--r--packages/opencode/src/session/processor.ts2
-rw-r--r--packages/opencode/test/session/message-v2.test.ts12
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",
+ },
+ })
+ })
})