Commit 6c1086f
authored
feat: add reasoning support across all providers (#81)
## Summary
- Add reasoning/thinking output to every provider that previously lacked
it
- OpenAI Chat Completions: `reasoning_content` field on message +
streaming deltas
- Gemini: `thought: true` text parts before answer parts
- Bedrock InvokeModel: Anthropic-style `thinking` content blocks
- Bedrock Converse: `reasoningContent` blocks in Converse format
- Ollama: `reasoning_content` on both `/api/chat` and `/api/generate`
(streaming + non-streaming)
Existing `TextResponse.reasoning` fixture field now produces correct
provider-native reasoning output on all endpoints. No fixture format
changes, no router changes, no new types.
## Test plan
- [ ] 22 new tests in `reasoning-all-providers.test.ts` covering all 5
providers
- [ ] Each provider tested for streaming + non-streaming with reasoning
present and absent
- [ ] Unit tests for `buildBedrockStreamTextEvents` reasoning event
structure
- [ ] Full test suite passes (2048 tests, 0 failures)
- [ ] Lint and format clean
🤖 Generated with [Claude Code](https://claude.com/claude-code)8 files changed
Lines changed: 974 additions & 30 deletions
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
156 | 156 | | |
157 | 157 | | |
158 | 158 | | |
159 | | - | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
160 | 168 | | |
161 | 169 | | |
162 | 170 | | |
163 | 171 | | |
164 | | - | |
| 172 | + | |
165 | 173 | | |
166 | 174 | | |
167 | 175 | | |
| |||
368 | 376 | | |
369 | 377 | | |
370 | 378 | | |
371 | | - | |
| 379 | + | |
372 | 380 | | |
373 | 381 | | |
374 | 382 | | |
| |||
578 | 586 | | |
579 | 587 | | |
580 | 588 | | |
581 | | - | |
| 589 | + | |
582 | 590 | | |
583 | 591 | | |
584 | 592 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
198 | 198 | | |
199 | 199 | | |
200 | 200 | | |
201 | | - | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
202 | 208 | | |
203 | 209 | | |
204 | 210 | | |
205 | 211 | | |
206 | | - | |
| 212 | + | |
207 | 213 | | |
208 | 214 | | |
209 | 215 | | |
| |||
422 | 428 | | |
423 | 429 | | |
424 | 430 | | |
425 | | - | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
426 | 436 | | |
427 | 437 | | |
428 | 438 | | |
| |||
468 | 478 | | |
469 | 479 | | |
470 | 480 | | |
| 481 | + | |
471 | 482 | | |
472 | 483 | | |
473 | 484 | | |
| |||
476 | 487 | | |
477 | 488 | | |
478 | 489 | | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
479 | 518 | | |
480 | 519 | | |
481 | | - | |
| 520 | + | |
482 | 521 | | |
483 | 522 | | |
484 | 523 | | |
485 | 524 | | |
486 | 525 | | |
487 | 526 | | |
488 | 527 | | |
489 | | - | |
| 528 | + | |
490 | 529 | | |
491 | 530 | | |
492 | 531 | | |
493 | 532 | | |
494 | 533 | | |
495 | 534 | | |
496 | 535 | | |
497 | | - | |
| 536 | + | |
498 | 537 | | |
499 | 538 | | |
500 | 539 | | |
| |||
738 | 777 | | |
739 | 778 | | |
740 | 779 | | |
741 | | - | |
| 780 | + | |
742 | 781 | | |
743 | 782 | | |
744 | 783 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| 39 | + | |
39 | 40 | | |
40 | 41 | | |
41 | 42 | | |
| |||
187 | 188 | | |
188 | 189 | | |
189 | 190 | | |
190 | | - | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
191 | 196 | | |
192 | 197 | | |
193 | | - | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
194 | 214 | | |
195 | 215 | | |
196 | 216 | | |
| |||
215 | 235 | | |
216 | 236 | | |
217 | 237 | | |
218 | | - | |
| 238 | + | |
219 | 239 | | |
220 | 240 | | |
221 | 241 | | |
| |||
276 | 296 | | |
277 | 297 | | |
278 | 298 | | |
279 | | - | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
280 | 306 | | |
281 | 307 | | |
282 | 308 | | |
283 | | - | |
| 309 | + | |
284 | 310 | | |
285 | 311 | | |
286 | 312 | | |
| |||
533 | 559 | | |
534 | 560 | | |
535 | 561 | | |
536 | | - | |
| 562 | + | |
537 | 563 | | |
538 | 564 | | |
539 | 565 | | |
540 | | - | |
| 566 | + | |
541 | 567 | | |
542 | 568 | | |
543 | 569 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
66 | 71 | | |
67 | 72 | | |
68 | 73 | | |
| |||
76 | 81 | | |
77 | 82 | | |
78 | 83 | | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
79 | 98 | | |
80 | 99 | | |
81 | 100 | | |
| |||
183 | 202 | | |
184 | 203 | | |
185 | 204 | | |
186 | | - | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
187 | 210 | | |
188 | 211 | | |
189 | 212 | | |
| |||
192 | 215 | | |
193 | 216 | | |
194 | 217 | | |
195 | | - | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
196 | 224 | | |
197 | 225 | | |
198 | 226 | | |
| |||
0 commit comments