Commit 26dc319
committed
refactor(provider, message-v2): unify SSEStallError on MessageV2 schema
Drop the duplicate `class SSEStallError extends Error` from provider.ts
and have wrapSSE() throw `MessageV2.SSEStallError` (the schema-backed
error) directly. Spike confirmed identity survives in-process rethrow
paths (throw/catch, AbortController.abort, AbortSignal.any composition,
ReadableStream.cancel, Promise.reject, end-to-end wrapSSE shape — 6/6).
Kept hasSSEStallCause + SSE_STALL_MESSAGE_RE (hardened in F4) as the
cross-realm safety net. The substring fallback defends rethrow paths
that strip Error name/_tag (vendor SDK rewrapping, structured-clone
boundaries) and is independent of which class is thrown.
Added extractStallMessage() helper because the schema-error class sets
`.message` to its tag (via `super(tag, options)`), so fromError can no
longer copy `.message` directly when the input is already a schema
instance — must read `.data.message`. Walks cause chain so nested
wrappers still produce the original timing text.
Updated test files to construct `MessageV2.SSEStallError` directly
instead of the deleted runtime class.
Net delta: -11 / +40 LOC. Eliminates one of two SSEStallError classes;
remaining duplication is the substring fallback regex which intentionally
defends a different threat model than the class identity.
Addresses audit finding F9 (codex-5.3 diamond review, 2026-04-22).1 parent c105c60 commit 26dc319
5 files changed
Lines changed: 50 additions & 19 deletions
File tree
- packages/opencode
- src
- provider
- session
- test
- provider
- session
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
32 | 36 | | |
33 | 37 | | |
34 | 38 | | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | 39 | | |
44 | 40 | | |
45 | 41 | | |
| |||
77 | 73 | | |
78 | 74 | | |
79 | 75 | | |
80 | | - | |
| 76 | + | |
81 | 77 | | |
82 | 78 | | |
83 | 79 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
12 | 15 | | |
13 | 16 | | |
14 | 17 | | |
| |||
1092 | 1095 | | |
1093 | 1096 | | |
1094 | 1097 | | |
| 1098 | + | |
| 1099 | + | |
| 1100 | + | |
| 1101 | + | |
| 1102 | + | |
| 1103 | + | |
| 1104 | + | |
| 1105 | + | |
| 1106 | + | |
| 1107 | + | |
| 1108 | + | |
| 1109 | + | |
| 1110 | + | |
| 1111 | + | |
| 1112 | + | |
| 1113 | + | |
| 1114 | + | |
| 1115 | + | |
| 1116 | + | |
| 1117 | + | |
| 1118 | + | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
1095 | 1122 | | |
1096 | 1123 | | |
1097 | 1124 | | |
| |||
1144 | 1171 | | |
1145 | 1172 | | |
1146 | 1173 | | |
1147 | | - | |
| 1174 | + | |
1148 | 1175 | | |
1149 | 1176 | | |
1150 | 1177 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
| 3 | + | |
3 | 4 | | |
4 | 5 | | |
5 | 6 | | |
| |||
51 | 52 | | |
52 | 53 | | |
53 | 54 | | |
54 | | - | |
| 55 | + | |
55 | 56 | | |
56 | 57 | | |
57 | 58 | | |
| |||
62 | 63 | | |
63 | 64 | | |
64 | 65 | | |
65 | | - | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
66 | 76 | | |
67 | 77 | | |
68 | 78 | | |
| |||
Lines changed: 2 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | 3 | | |
5 | 4 | | |
6 | 5 | | |
| |||
40 | 39 | | |
41 | 40 | | |
42 | 41 | | |
43 | | - | |
| 42 | + | |
44 | 43 | | |
45 | 44 | | |
46 | 45 | | |
| |||
52 | 51 | | |
53 | 52 | | |
54 | 53 | | |
55 | | - | |
| 54 | + | |
56 | 55 | | |
57 | 56 | | |
58 | 57 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
9 | 8 | | |
10 | 9 | | |
11 | 10 | | |
| |||
236 | 235 | | |
237 | 236 | | |
238 | 237 | | |
239 | | - | |
| 238 | + | |
240 | 239 | | |
241 | 240 | | |
242 | 241 | | |
| |||
0 commit comments