Commit 7d6f815
den
fix: gracefully handle deactivated_workspace by removing only the dead workspace entry
- Add isDeactivatedWorkspaceError() detector in fetch-helpers.ts that
matches HTTP 402 + detail.code/error.code === 'deactivated_workspace'
- On deactivated_workspace response: flag the specific workspace entry
(keyed by organizationId > accountId > refreshToken), remove it from
rotation and failover to the next healthy workspace/account
- Preserve sibling workspaces sharing the same refreshToken — only the
dead workspace-entry is removed, not the entire user
- Extend codex-health deep probe to flag deactivated workspaces using
the same identity key (not refreshToken) so multi-workspace users
aren't penalized for a single bad workspace
- Add test: handleErrorResponse normalizes 402 deactivated_workspace
- Add test: plugin removes only the dead workspace and succeeds on the
live sibling in the same request1 parent dffb51a commit 7d6f815
5 files changed
Lines changed: 307 additions & 15 deletions
File tree
- lib/request
- test
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
| 131 | + | |
131 | 132 | | |
132 | 133 | | |
133 | 134 | | |
| |||
183 | 184 | | |
184 | 185 | | |
185 | 186 | | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
186 | 208 | | |
187 | 209 | | |
188 | 210 | | |
| |||
2358 | 2380 | | |
2359 | 2381 | | |
2360 | 2382 | | |
| 2383 | + | |
| 2384 | + | |
| 2385 | + | |
| 2386 | + | |
| 2387 | + | |
| 2388 | + | |
| 2389 | + | |
| 2390 | + | |
| 2391 | + | |
| 2392 | + | |
| 2393 | + | |
| 2394 | + | |
| 2395 | + | |
| 2396 | + | |
| 2397 | + | |
| 2398 | + | |
| 2399 | + | |
| 2400 | + | |
| 2401 | + | |
| 2402 | + | |
| 2403 | + | |
| 2404 | + | |
| 2405 | + | |
| 2406 | + | |
| 2407 | + | |
| 2408 | + | |
| 2409 | + | |
| 2410 | + | |
| 2411 | + | |
| 2412 | + | |
| 2413 | + | |
| 2414 | + | |
| 2415 | + | |
| 2416 | + | |
| 2417 | + | |
| 2418 | + | |
| 2419 | + | |
| 2420 | + | |
| 2421 | + | |
| 2422 | + | |
| 2423 | + | |
| 2424 | + | |
| 2425 | + | |
| 2426 | + | |
| 2427 | + | |
| 2428 | + | |
| 2429 | + | |
| 2430 | + | |
| 2431 | + | |
| 2432 | + | |
| 2433 | + | |
| 2434 | + | |
| 2435 | + | |
| 2436 | + | |
| 2437 | + | |
| 2438 | + | |
2361 | 2439 | | |
2362 | 2440 | | |
2363 | 2441 | | |
| |||
2964 | 3042 | | |
2965 | 3043 | | |
2966 | 3044 | | |
| 3045 | + | |
| 3046 | + | |
| 3047 | + | |
2967 | 3048 | | |
2968 | 3049 | | |
2969 | 3050 | | |
| |||
3115 | 3196 | | |
3116 | 3197 | | |
3117 | 3198 | | |
3118 | | - | |
| 3199 | + | |
3119 | 3200 | | |
3120 | 3201 | | |
3121 | 3202 | | |
| |||
3194 | 3275 | | |
3195 | 3276 | | |
3196 | 3277 | | |
3197 | | - | |
3198 | | - | |
3199 | | - | |
3200 | | - | |
3201 | | - | |
3202 | | - | |
3203 | | - | |
| 3278 | + | |
| 3279 | + | |
| 3280 | + | |
| 3281 | + | |
| 3282 | + | |
| 3283 | + | |
| 3284 | + | |
| 3285 | + | |
| 3286 | + | |
| 3287 | + | |
| 3288 | + | |
| 3289 | + | |
| 3290 | + | |
| 3291 | + | |
| 3292 | + | |
| 3293 | + | |
| 3294 | + | |
| 3295 | + | |
| 3296 | + | |
| 3297 | + | |
| 3298 | + | |
| 3299 | + | |
| 3300 | + | |
| 3301 | + | |
| 3302 | + | |
3204 | 3303 | | |
3205 | 3304 | | |
3206 | 3305 | | |
| |||
3210 | 3309 | | |
3211 | 3310 | | |
3212 | 3311 | | |
3213 | | - | |
| 3312 | + | |
3214 | 3313 | | |
3215 | 3314 | | |
3216 | 3315 | | |
| |||
3228 | 3327 | | |
3229 | 3328 | | |
3230 | 3329 | | |
3231 | | - | |
| 3330 | + | |
3232 | 3331 | | |
3233 | 3332 | | |
3234 | 3333 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
279 | 279 | | |
280 | 280 | | |
281 | 281 | | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
282 | 311 | | |
283 | 312 | | |
284 | 313 | | |
| |||
730 | 759 | | |
731 | 760 | | |
732 | 761 | | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
| 765 | + | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
733 | 777 | | |
734 | 778 | | |
735 | 779 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
12 | 13 | | |
13 | 14 | | |
14 | 15 | | |
| |||
21 | 22 | | |
22 | 23 | | |
23 | 24 | | |
24 | | - | |
25 | | - | |
26 | | - | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
| |||
487 | 488 | | |
488 | 489 | | |
489 | 490 | | |
490 | | - | |
491 | | - | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
492 | 506 | | |
493 | 507 | | |
494 | 508 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| 27 | + | |
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
| |||
0 commit comments