Skip to content

Commit 84e62fc

Browse files
authored
fix(session): preserve tagged error messages (#18165)
1 parent a7ea935 commit 84e62fc

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

packages/opencode/src/session/message-v2.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -956,7 +956,7 @@ export namespace MessageV2 {
956956
{ cause: e },
957957
).toObject()
958958
case e instanceof Error:
959-
return new NamedError.Unknown({ message: e.toString() }, { cause: e }).toObject()
959+
return new NamedError.Unknown({ message: e instanceof Error ? e.message : String(e) }, { cause: e }).toObject()
960960
default:
961961
try {
962962
const parsed = ProviderError.parseStreamError(e)

packages/opencode/src/session/processor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ export namespace SessionProcessor {
210210
state: {
211211
status: "error",
212212
input: value.input ?? match.state.input,
213-
error: (value.error as any).toString(),
213+
error: value.error instanceof Error ? value.error.message : String(value.error),
214214
time: {
215215
start: match.state.time.start,
216216
end: Date.now(),

packages/opencode/test/session/message-v2.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { MessageV2 } from "../../src/session/message-v2"
44
import type { Provider } from "../../src/provider/provider"
55
import { ModelID, ProviderID } from "../../src/provider/schema"
66
import { SessionID, MessageID, PartID } from "../../src/session/schema"
7+
import { Question } from "../../src/question"
78

89
const sessionID = SessionID.make("session")
910
const providerID = ProviderID.make("test")
@@ -915,4 +916,15 @@ describe("session.message-v2.fromError", () => {
915916
},
916917
})
917918
})
919+
920+
test("serializes tagged errors with their message", () => {
921+
const result = MessageV2.fromError(new Question.RejectedError(), { providerID })
922+
923+
expect(result).toStrictEqual({
924+
name: "UnknownError",
925+
data: {
926+
message: "The user dismissed this question",
927+
},
928+
})
929+
})
918930
})

0 commit comments

Comments
 (0)