dependabot[bot]
dfddb19fff
build(deps): bump the minor-and-patch group with 6 updates ( #457 )
2026-05-15 12:55:49 -07:00
Alishahryar1
0d0843c1c0
Updated default model
2026-05-13 22:59:04 -07:00
Alishahryar1
f389cf415e
fix: default logs to logs/ and ignore rotations (issue 427)
...
- Default LOG_FILE to logs/server.log in settings and admin config
- Create log parent directories in configure_logging
- Gitignore /logs/, /server.*.log; keep server.log for root override
- Add test for nested log path mkdir
2026-05-13 18:01:54 -07:00
Siarhei Krotau
972bc1661c
feat(providers): add Z.ai Coding Plan provider ( #440 )
2026-05-13 12:02:15 -07:00
Rizki Kotet
32e2e4d755
feat(opencode): integrate OpenCode Zen provider and API key support ( #426 )
2026-05-12 08:44:54 -07:00
Ali Khokhar
615aba6e78
Update README.md
2026-05-11 00:50:17 -07:00
Ali Khokhar
ce0e9c1ff5
Update README.md
2026-05-11 00:44:08 -07:00
Alishahryar1
89f7ed6214
fix(cli): resolve claude command before launch
2026-05-11 00:41:51 -07:00
Alishahryar1
25695077c4
fix(cli): exit fcc-server cleanly on interrupt
2026-05-10 22:47:27 -07:00
Alishahryar1
ca2cf6a6c1
fix(cli): terminate launched process trees
2026-05-10 22:44:07 -07:00
Alishahryar1
05909e9493
Merge branch 'ali/codebase-architectre'
2026-05-10 22:30:44 -07:00
Alishahryar1
2637824a3f
fix(openai): close async client with supported method
2026-05-10 22:30:23 -07:00
Ali Khokhar
fd7dccea46
Update README.md
2026-05-10 22:21:23 -07:00
Alishahryar1
41f2bc71a0
feat(providers): retry all upstream 5xx like 429
...
Generalize retryable_upstream_status to HTTP 500-599 plus 429.
Improve execute_with_retry log label with actual status.
Preserve OpenAI InternalServerError 5xx in map_error after overload check.
Unify native stream send: log via _raise_for_status then optional async aclose.
Add _maybe_await_aclose for httpx doubles in tests.
Rename openai compat retry tests to 5xx; parameterize native/limiter/mapping tests.
2026-05-10 19:56:14 -07:00
Alishahryar1
21ff2137ef
feat(providers): retry upstream HTTP 503 like 429
...
Extend execute_with_retry with retryable_upstream_status for 429/503
shared backoff, reactive block, and TRACE provider.retry.scheduled.
Map InternalServerError(503) to APIError with preserved status.
Native transport closes-and-raises on 503 like 429 for clean retries.
Add NIM/OpenAI-compat and rate limiter tests.
2026-05-10 19:28:32 -07:00
Alishahryar1
29e7714337
feat(logging): structured TRACE events and end-to-end request correlation
...
Add core/trace.py with trace_event, traced_async_stream, and payload snapshots.
Merge TRACE fields into JSON logs; promote claude_session_id, http path/method.
Instrument API, messaging/CLI, and OpenAI-compat/native provider paths.
Harden log sink with enqueue and stdlib intercept re-entrancy guard.
Document behavior in .env.example and README; extend tests.
2026-05-10 18:24:48 -07:00
Nox
1e97dff214
fix: handle disallowed special tokens in tiktoken encoder ( #382 )
...
Co-authored-by: Alishahryar1 <alishahryar2@gmail.com >
2026-05-10 17:30:24 -07:00
Alishahryar1
16242b33a2
docs(readme): link providers, slim model picker section
2026-05-10 16:30:32 -07:00
Alishahryar1
2ea24e2510
Update README
2026-05-10 16:28:18 -07:00
Alishahryar1
2a2f2a2712
Update README
2026-05-10 16:25:53 -07:00
Alishahryar1
083b2161e7
Removed logos from README
2026-05-10 16:17:33 -07:00
Alishahryar1
34aefbdb97
Revise provider quick start docs
2026-05-10 16:14:31 -07:00
Alishahryar1
2c7c8f42f7
Update README section numbering
2026-05-10 16:06:50 -07:00
Alishahryar1
f9fc614563
Allow unauthenticated root probes
2026-05-10 16:03:19 -07:00
Alishahryar1
e386a3c8aa
Improve admin UI setup flow
2026-05-10 15:57:56 -07:00
Ali Khokhar
33de002e04
Update README.md
2026-05-10 03:15:58 -07:00
Ali Khokhar
6ab11a1f2b
Update README.md
2026-05-10 02:56:59 -07:00
Alishahryar1
3d26b4595a
Updated README again and added assets folder
2026-05-10 02:51:32 -07:00
Ali Khokhar
fe502c849d
Update README.md
2026-05-10 02:45:26 -07:00
Alishahryar1
e76bd1fce6
Update README
2026-05-10 02:27:43 -07:00
Alishahryar1
720ec812c6
Update README again
2026-05-10 01:54:19 -07:00
Alishahryar1
cd87bc4402
Update README
2026-05-10 01:49:55 -07:00
Alishahryar1
b9bad70771
log urls at startup
2026-05-10 01:45:04 -07:00
Alishahryar1
d364dbbf48
Updated README
2026-05-10 01:39:26 -07:00
Alishahryar1
8ee72968ed
Initial admin impl
2026-05-10 01:21:16 -07:00
Alishahryar1
de8e902899
Add Claude CLI smoke matrices
2026-05-09 17:27:23 -07:00
Alishahryar1
07497c7ed8
Add NVIDIA NIM CLI smoke matrix and tool schema aliasing
2026-05-09 14:25:50 -07:00
dependabot[bot]
07b30aae31
build(deps): bump the minor-and-patch group with 5 updates ( #389 )
...
Bumps the minor-and-patch group with 5 updates:
| Package | From | To |
| --- | --- | --- |
| [markdown-it-py](https://github.com/executablebooks/markdown-it-py ) |
`4.0.0` | `4.2.0` |
| [pydantic](https://github.com/pydantic/pydantic ) | `2.13.3` | `2.13.4`
|
| [pydantic-settings](https://github.com/pydantic/pydantic-settings ) |
`2.14.0` | `2.14.1` |
| [openai](https://github.com/openai/openai-python ) | `2.33.0` |
`2.36.0` |
| [transformers](https://github.com/huggingface/transformers ) | `5.7.0`
| `5.8.0` |
Updates `markdown-it-py` from 4.0.0 to 4.2.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/executablebooks/markdown-it-py/releases ">markdown-it-py's
releases</a>.</em></p>
<blockquote>
<h2>v4.2.0</h2>
<h2>What's Changed</h2>
<ul>
<li>✨ Add <code>make_fence_rule()</code> factory for configurable fence
markers by <a
href="https://github.com/chrisjsewell "><code>@chrisjsewell</code></a>
in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/394 ">executablebooks/markdown-it-py#394</a></li>
<li>🚀 RELEASE v4.2.0 by <a
href="https://github.com/chrisjsewell "><code>@chrisjsewell</code></a>
in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/395 ">executablebooks/markdown-it-py#395</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/executablebooks/markdown-it-py/compare/v4.1.0...v4.2.0 ">https://github.com/executablebooks/markdown-it-py/compare/v4.1.0...v4.2.0 </a></p>
<h2>v4.1.0</h2>
<h2>What's Changed</h2>
<ul>
<li>✨ Add <code>--stdin</code> option to CLI by <a
href="https://github.com/mcepl "><code>@mcepl</code></a> in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/379 ">executablebooks/markdown-it-py#379</a></li>
<li>Add AGENTS.md and copilot-setup-steps workflow by <a
href="https://github.com/Copilot "><code>@Copilot</code></a> in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/380 ">executablebooks/markdown-it-py#380</a></li>
<li>🔧 Add typing to Scanner by <a
href="https://github.com/Alunderin "><code>@Alunderin</code></a> in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/382 ">executablebooks/markdown-it-py#382</a></li>
<li>👌 Fix quadratic complexity in <code>fragments_join</code> /
<code>text_join</code> by <a
href="https://github.com/petricevich "><code>@petricevich</code></a> in
<a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/389 ">executablebooks/markdown-it-py#389</a></li>
<li>✨ Allow plugins to register inline terminator characters by <a
href="https://github.com/Copilot "><code>@Copilot</code></a> in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/391 ">executablebooks/markdown-it-py#391</a></li>
<li>✨ Add <code>gfm-like2</code> preset with task lists, alerts, and
single-tilde strikethrough by <a
href="https://github.com/chrisjsewell "><code>@chrisjsewell</code></a>
in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/388 ">executablebooks/markdown-it-py#388</a></li>
<li>🔧 Update pre-commit hooks by <a
href="https://github.com/chrisjsewell "><code>@chrisjsewell</code></a>
in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/392 ">executablebooks/markdown-it-py#392</a></li>
<li>🚀 RELEASE v4.1.0 by <a
href="https://github.com/chrisjsewell "><code>@chrisjsewell</code></a>
in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/393 ">executablebooks/markdown-it-py#393</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/mcepl "><code>@mcepl</code></a> made
their first contribution in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/379 ">executablebooks/markdown-it-py#379</a></li>
<li><a href="https://github.com/Copilot "><code>@Copilot</code></a> made
their first contribution in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/380 ">executablebooks/markdown-it-py#380</a></li>
<li><a href="https://github.com/Alunderin "><code>@Alunderin</code></a>
made their first contribution in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/382 ">executablebooks/markdown-it-py#382</a></li>
<li><a
href="https://github.com/petricevich "><code>@petricevich</code></a>
made their first contribution in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/389 ">executablebooks/markdown-it-py#389</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.1.0 ">https://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.1.0 </a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md ">markdown-it-py's
changelog</a>.</em></p>
<blockquote>
<h2>4.2.0 - 2026-05-07</h2>
<ul>
<li>✨ Add <code>make_fence_rule()</code> factory for configurable fence
markers in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/394 ">#394</a></li>
</ul>
<h2>4.1.0 - 2025-05-06</h2>
<ul>
<li>✨ Add <code>gfm-like2</code> preset with task lists, alerts, and
single-tilde strikethrough core plugins in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/388 ">#388</a></li>
<li>✨ Allow plugins to register inline terminator characters in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/391 ">#391</a></li>
<li>👌 Fix quadratic complexity in <code>fragments_join</code> /
<code>text_join</code> in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/389 ">#389</a>,
thanks to <a
href="https://github.com/petricevich "><code>@petricevich</code></a></li>
<li>👌 Add <code>--stdin</code> option to CLI for reading Markdown from
standard input in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/379 ">#379</a>,
thanks to <a
href="https://github.com/mcepl "><code>@mcepl</code></a></li>
<li>🔧 Add typing to Scanner in <a
href="https://redirect.github.com/executablebooks/markdown-it-py/pull/382 ">#382</a>,
thanks to <a
href="https://github.com/Alunderin "><code>@Alunderin</code></a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.1.0 ">https://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.1.0 </a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/executablebooks/markdown-it-py/commit/36c5f547144df2d01970a5792d68c71a3380b227 "><code>36c5f54</code></a>
🚀 RELEASE v4.2.0 (<a
href="https://redirect.github.com/executablebooks/markdown-it-py/issues/395 ">#395</a>)</li>
<li><a
href="https://github.com/executablebooks/markdown-it-py/commit/96cf077ba5a6b3b4b2f862db7e0fc532694a72e9 "><code>96cf077</code></a>
✨ Add <code>make_fence_rule()</code> factory for configurable fence
markers (<a
href="https://redirect.github.com/executablebooks/markdown-it-py/issues/394 ">#394</a>)</li>
<li><a
href="https://github.com/executablebooks/markdown-it-py/commit/3b4ff6ddd368b679643d12debf09e10ef602d4db "><code>3b4ff6d</code></a>
🚀 RELEASE v4.1.0 (<a
href="https://redirect.github.com/executablebooks/markdown-it-py/issues/393 ">#393</a>)</li>
<li><a
href="https://github.com/executablebooks/markdown-it-py/commit/8951f267370b03a26ae88600a6dfc707ea290067 "><code>8951f26</code></a>
🔧 Update pre-commit hooks (<a
href="https://redirect.github.com/executablebooks/markdown-it-py/issues/392 ">#392</a>)</li>
<li><a
href="https://github.com/executablebooks/markdown-it-py/commit/693bb24063b6c658d60c7c14203ac6470387e3c6 "><code>693bb24</code></a>
✨ Add <code>gfm-like2</code> preset with task lists, alerts, and
single-tilde strikethro...</li>
<li><a
href="https://github.com/executablebooks/markdown-it-py/commit/df6fd361099cab7fe0259467c3aaa3f284ec8259 "><code>df6fd36</code></a>
✨ Allow plugins to register inline terminator characters (<a
href="https://redirect.github.com/executablebooks/markdown-it-py/issues/391 ">#391</a>)</li>
<li><a
href="https://github.com/executablebooks/markdown-it-py/commit/d4ea0ca7f44e3ca86c18a87356502c59e5e49ec3 "><code>d4ea0ca</code></a>
👌 Fix quadratic complexity in <code>fragments_join</code> /
<code>text_join</code> (<a
href="https://redirect.github.com/executablebooks/markdown-it-py/issues/389 ">#389</a>)</li>
<li><a
href="https://github.com/executablebooks/markdown-it-py/commit/89331476e44c150bc32e2597a5fae4cd15391167 "><code>8933147</code></a>
🔧 Add typing to Scanner (<a
href="https://redirect.github.com/executablebooks/markdown-it-py/issues/382 ">#382</a>)</li>
<li><a
href="https://github.com/executablebooks/markdown-it-py/commit/2f6ae107ba32e9a7bd2d00134d09a78ec805a6a0 "><code>2f6ae10</code></a>
🔧 Add AGENTS.md and copilot-setup-steps workflow (<a
href="https://redirect.github.com/executablebooks/markdown-it-py/issues/380 ">#380</a>)</li>
<li><a
href="https://github.com/executablebooks/markdown-it-py/commit/49043e4445d233598fb893bed6949f7b25ae4e27 "><code>49043e4</code></a>
Add --stdin option to CLI for reading Markdown from standard input (<a
href="https://redirect.github.com/executablebooks/markdown-it-py/issues/379 ">#379</a>)</li>
<li>See full diff in <a
href="https://github.com/executablebooks/markdown-it-py/compare/v4.0.0...v4.2.0 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `pydantic` from 2.13.3 to 2.13.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pydantic/pydantic/releases ">pydantic's
releases</a>.</em></p>
<blockquote>
<h2>v2.13.4 2026-05-06</h2>
<h2>v2.13.4 (2026-05-06)</h2>
<h3>What's Changed</h3>
<h4>Packaging</h4>
<ul>
<li>Bump libc from 0.2.155 to 0.2.185 by <a
href="https://github.com/Viicos "><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13109 ">#13109</a></li>
<li>Adapt <code>pydantic-core</code> linker flags on macOS by <a
href="https://github.com/washingtoneg "><code>@washingtoneg</code></a>
and <a href="https://github.com/Viicos "><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13147 ">#13147</a></li>
</ul>
<h4>Fixes</h4>
<ul>
<li>Preserve <code>RootModel</code> core metadata by <a
href="https://github.com/Viicos "><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13129 ">#13129</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4 ">https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4 </a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pydantic/pydantic/blob/v2.13.4/HISTORY.md ">pydantic's
changelog</a>.</em></p>
<blockquote>
<h2>v2.13.4 (2026-05-06)</h2>
<p><a
href="https://github.com/pydantic/pydantic/releases/tag/v2.13.4 ">GitHub
release</a></p>
<h3>What's Changed</h3>
<h4>Packaging</h4>
<ul>
<li>Bump libc from 0.2.155 to 0.2.185 by <a
href="https://github.com/Viicos "><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13109 ">#13109</a></li>
<li>Adapt <code>pydantic-core</code> linker flags on macOS by <a
href="https://github.com/washingtoneg "><code>@washingtoneg</code></a>
and <a href="https://github.com/Viicos "><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13147 ">#13147</a></li>
</ul>
<h4>Fixes</h4>
<ul>
<li>Preserve <code>RootModel</code> core metadata by <a
href="https://github.com/Viicos "><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13129 ">#13129</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382 "><code>cf67d4b</code></a>
Fix linting</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662 "><code>f0d8a21</code></a>
Prepare release v2.13.4</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a "><code>5e3fe1d</code></a>
Check for pydantic tag pattern in CI</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686 "><code>7f9edcc</code></a>
Document tagging conventions</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c "><code>b46a0c9</code></a>
Adapt <code>pydantic-core</code> linker flags on macOS</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400 "><code>50629c8</code></a>
Update to PyPy 7.3.22</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725 "><code>8522ebb</code></a>
Preserve <code>RootModel</code> core metadata</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8 "><code>a37f3af</code></a>
Adapt <code>MISSING</code> sentinel test to work with unreleased
<code>typing_extensions</code> ver...</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2 "><code>909259a</code></a>
Remove Logfire example in documentation</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df "><code>2c4174c</code></a>
Bump libc from 0.2.155 to 0.2.185</li>
<li>See full diff in <a
href="https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `pydantic-settings` from 2.14.0 to 2.14.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pydantic/pydantic-settings/releases ">pydantic-settings's
releases</a>.</em></p>
<blockquote>
<h2>v2.14.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump the python-packages group with 4 updates by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/850 ">pydantic/pydantic-settings#850</a></li>
<li>Bump the python-packages group with 5 updates by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/854 ">pydantic/pydantic-settings#854</a></li>
<li>Bump the github-actions group with 3 updates by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/853 ">pydantic/pydantic-settings#853</a></li>
<li>Bump the python-packages group with 2 updates by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/856 ">pydantic/pydantic-settings#856</a></li>
<li>Fix field named <code>cls</code> conflicting with classmethod
parameter by <a
href="https://github.com/hramezani "><code>@hramezani</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/858 ">pydantic/pydantic-settings#858</a></li>
<li>Prepare release 2.14.1 by <a
href="https://github.com/hramezani "><code>@hramezani</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-settings/pull/859 ">pydantic/pydantic-settings#859</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1 ">https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1 </a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/e95c30bec8cfaee88ee275138c064aea97a25bdf "><code>e95c30b</code></a>
Prepare release 2.14.1 (<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/859 ">#859</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/0c8734581b6cf70a995afad603ac456631d00621 "><code>0c87345</code></a>
Fix field named <code>cls</code> conflicting with classmethod parameter
(<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/858 ">#858</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/7bd0072795a800065b42210b6dca90fc9b83daf7 "><code>7bd0072</code></a>
Bump the python-packages group with 2 updates (<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/856 ">#856</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/b03e573d017ed48e1c2774a5e0b715db9766c76b "><code>b03e573</code></a>
Bump the github-actions group with 3 updates (<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/853 ">#853</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/eaa3b434938411ec8a3717ea646614561e713f51 "><code>eaa3b43</code></a>
Bump the python-packages group with 5 updates (<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/854 ">#854</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic-settings/commit/9f95615c24c6813c1d7d203576581a79cb6d9e8e "><code>9f95615</code></a>
Bump the python-packages group with 4 updates (<a
href="https://redirect.github.com/pydantic/pydantic-settings/issues/850 ">#850</a>)</li>
<li>See full diff in <a
href="https://github.com/pydantic/pydantic-settings/compare/v2.14.0...v2.14.1 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `openai` from 2.33.0 to 2.36.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/openai/openai-python/releases ">openai's
releases</a>.</em></p>
<blockquote>
<h2>v2.36.0</h2>
<h2>2.36.0 (2026-05-07)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.35.1...v2.36.0 ">v2.35.1...v2.36.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> manual updates (<a
href="https://github.com/openai/openai-python/commit/13c639cc7d57e4fbd4406563511e15eeb88a54b2 ">13c639c</a>)</li>
<li><strong>api:</strong> realtime 2 (<a
href="https://github.com/openai/openai-python/commit/8fe0ab87e67eeb3cc27426b50093845229520f0e ">8fe0ab8</a>)</li>
</ul>
<h2>v2.35.1</h2>
<h2>2.35.1 (2026-05-06)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.35.0...v2.35.1 ">v2.35.0...v2.35.1</a></p>
<h3>Bug Fixes</h3>
<ul>
<li><strong>api:</strong> fix imagegen <code>size</code> enum regression
(<a
href="https://github.com/openai/openai-python/commit/44846536bc3b02c393daa5bae70a85de04c7f621 ">4484653</a>)</li>
</ul>
<h2>v2.35.0</h2>
<h2>2.35.0 (2026-05-06)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.34.0...v2.35.0 ">v2.34.0...v2.35.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> update image 2 (<a
href="https://github.com/openai/openai-python/commit/0ba55d7569565045426e1587906a70d5682a4bba ">0ba55d7</a>)</li>
<li><strong>api:</strong> manual updates (<a
href="https://github.com/openai/openai-python/commit/72bf67acbc9f030c20db3d5a1a74ea6d67d55f51 ">72bf67a</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>remove legacy python cli (<a
href="https://github.com/openai/openai-python/commit/32f36e447d02c3124af8ab48fcc3537df2fed66e ">32f36e4</a>)</li>
<li>rename legacy python cli entrypoint (<a
href="https://github.com/openai/openai-python/commit/a3b182d6d2c2e6fe1d53ca7550b2d43e0f8b2cd3 ">a3b182d</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li><strong>api:</strong> update top_logprobs parameter description
across chat and responses (<a
href="https://github.com/openai/openai-python/commit/f9d339fcea63feaa1bdf918a4599f2b032c83517 ">f9d339f</a>)</li>
</ul>
<h2>v2.34.0</h2>
<h2>2.34.0 (2026-05-04)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.33.0...v2.34.0 ">v2.33.0...v2.34.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> add external_key_id to projects,
email/metadata params to users, update types (<a
href="https://github.com/openai/openai-python/commit/2d232eebb2fe021bb21f2576b17d1d588f81a608 ">2d232ee</a>)</li>
<li><strong>api:</strong> add support for Admin API Keys per endpoint
(<a
href="https://github.com/openai/openai-python/commit/b8b176af84172f27d2fde8dca062ca4c41f94bf7 ">b8b176a</a>)</li>
<li><strong>api:</strong> admin API updates (<a
href="https://github.com/openai/openai-python/commit/4ae1138ae1f76e81a2267e4deb45b435c10774d5 ">4ae1138</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/openai/openai-python/blob/main/CHANGELOG.md ">openai's
changelog</a>.</em></p>
<blockquote>
<h2>2.36.0 (2026-05-07)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.35.1...v2.36.0 ">v2.35.1...v2.36.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> manual updates (<a
href="https://github.com/openai/openai-python/commit/13c639cc7d57e4fbd4406563511e15eeb88a54b2 ">13c639c</a>)</li>
<li><strong>api:</strong> realtime 2 (<a
href="https://github.com/openai/openai-python/commit/8fe0ab87e67eeb3cc27426b50093845229520f0e ">8fe0ab8</a>)</li>
</ul>
<h2>2.35.1 (2026-05-06)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.35.0...v2.35.1 ">v2.35.0...v2.35.1</a></p>
<h3>Bug Fixes</h3>
<ul>
<li><strong>api:</strong> fix imagegen <code>size</code> enum regression
(<a
href="https://github.com/openai/openai-python/commit/44846536bc3b02c393daa5bae70a85de04c7f621 ">4484653</a>)</li>
</ul>
<h2>2.35.0 (2026-05-06)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.34.0...v2.35.0 ">v2.34.0...v2.35.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> update image 2 (<a
href="https://github.com/openai/openai-python/commit/0ba55d7569565045426e1587906a70d5682a4bba ">0ba55d7</a>)</li>
<li><strong>api:</strong> manual updates (<a
href="https://github.com/openai/openai-python/commit/72bf67acbc9f030c20db3d5a1a74ea6d67d55f51 ">72bf67a</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>remove legacy python cli (<a
href="https://github.com/openai/openai-python/commit/32f36e447d02c3124af8ab48fcc3537df2fed66e ">32f36e4</a>)</li>
<li>rename legacy python cli entrypoint (<a
href="https://github.com/openai/openai-python/commit/a3b182d6d2c2e6fe1d53ca7550b2d43e0f8b2cd3 ">a3b182d</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li><strong>api:</strong> update top_logprobs parameter description
across chat and responses (<a
href="https://github.com/openai/openai-python/commit/f9d339fcea63feaa1bdf918a4599f2b032c83517 ">f9d339f</a>)</li>
</ul>
<h2>2.34.0 (2026-05-04)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.33.0...v2.34.0 ">v2.33.0...v2.34.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> add external_key_id to projects,
email/metadata params to users, update types (<a
href="https://github.com/openai/openai-python/commit/2d232eebb2fe021bb21f2576b17d1d588f81a608 ">2d232ee</a>)</li>
<li><strong>api:</strong> add support for Admin API Keys per endpoint
(<a
href="https://github.com/openai/openai-python/commit/b8b176af84172f27d2fde8dca062ca4c41f94bf7 ">b8b176a</a>)</li>
<li><strong>api:</strong> admin API updates (<a
href="https://github.com/openai/openai-python/commit/4ae1138ae1f76e81a2267e4deb45b435c10774d5 ">4ae1138</a>)</li>
<li><strong>api:</strong> manual updates (<a
href="https://github.com/openai/openai-python/commit/c1870f1b881bb914e4e62a6c8b08d4c2b9a6fd54 ">c1870f1</a>)</li>
<li><strong>api:</strong> manual updates (<a
href="https://github.com/openai/openai-python/commit/f6bb9c7d7bdcc45425d37722358bed097e83d493 ">f6bb9c7</a>)</li>
<li>support setting headers via env (<a
href="https://github.com/openai/openai-python/commit/1e89d8b56aba12f99a8ef2b1b78fdee84751275a ">1e89d8b</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/openai/openai-python/commit/38d75d74a5626472cd7d1be9705ea8aba29a6b22 "><code>38d75d7</code></a>
Merge pull request <a
href="https://redirect.github.com/openai/openai-python/issues/3205 ">#3205</a>
from openai/release-please--branches--main--changes-...</li>
<li><a
href="https://github.com/openai/openai-python/commit/ff683ffbeba94fc01d93966b774c05a3471f2495 "><code>ff683ff</code></a>
release: 2.36.0</li>
<li><a
href="https://github.com/openai/openai-python/commit/8fe0ab87e67eeb3cc27426b50093845229520f0e "><code>8fe0ab8</code></a>
feat(api): realtime 2</li>
<li><a
href="https://github.com/openai/openai-python/commit/13c639cc7d57e4fbd4406563511e15eeb88a54b2 "><code>13c639c</code></a>
feat(api): manual updates</li>
<li><a
href="https://github.com/openai/openai-python/commit/2f1dd2814f8d5af989dfa2077f9f748d94fd472a "><code>2f1dd28</code></a>
codegen metadata</li>
<li><a
href="https://github.com/openai/openai-python/commit/19cda34ccc9fee540bad3523b223da3ae85f273c "><code>19cda34</code></a>
codegen metadata</li>
<li><a
href="https://github.com/openai/openai-python/commit/12fc3e41f28ae433f41a88d71e1a29f6745c7640 "><code>12fc3e4</code></a>
codegen metadata</li>
<li><a
href="https://github.com/openai/openai-python/commit/5e8f09c2c8f65d2e93722270963f4a19a760736f "><code>5e8f09c</code></a>
release: 2.35.1</li>
<li><a
href="https://github.com/openai/openai-python/commit/14b8afce7f17a9748a3d2946eee4d2d0b180e1d8 "><code>14b8afc</code></a>
fix(api): fix imagegen <code>size</code> enum regression</li>
<li><a
href="https://github.com/openai/openai-python/commit/99b9c422f385aa5126b6b525f066a9750e463e1e "><code>99b9c42</code></a>
codegen metadata</li>
<li>Additional commits viewable in <a
href="https://github.com/openai/openai-python/compare/v2.33.0...v2.36.0 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `transformers` from 5.7.0 to 5.8.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/huggingface/transformers/releases ">transformers's
releases</a>.</em></p>
<blockquote>
<h2>Release 5.8.0</h2>
<h1>Release v5.8.0</h1>
<h2>New Model additions</h2>
<h3>DeepSeek-V4</h3>
<!-- raw HTML omitted -->
<p>DeepSeek-V4 is the next-generation MoE (Mixture of Experts) language
model from DeepSeek that introduces several architectural innovations
over DeepSeek-V3. The architecture replaces Multi-head Latent Attention
(MLA) with a hybrid local + long-range attention design, swaps residual
connections for Manifold-Constrained Hyper-Connections (mHC), and
bootstraps the first few MoE layers with a static token-id → expert-id
hash table. This implementation covers DeepSeek-V4-Flash,
DeepSeek-V4-Pro, and their -Base pretrained variants, which share the
same architecture but differ in width, depth, expert count and
weights.</p>
<p><strong>Links:</strong> <a
href="https://huggingface.co/docs/transformers/main/en/model_doc/deepseek_v4 ">Documentation</a>
| <a
href="https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash/blob/main/DeepSeek_V4.pdf ">Paper</a></p>
<ul>
<li>Add DeepSeek V4 (<a
href="https://redirect.github.com/huggingface/transformers/issues/45643 ">#45643</a>)
by <a
href="https://github.com/ArthurZucker "><code>@ArthurZucker</code></a>
in <a
href="https://redirect.github.com/huggingface/transformers/pull/45643 ">#45643</a></li>
</ul>
<h3>Gemma 4 Assistant</h3>
<!-- raw HTML omitted -->
<p>Gemma 4 Assistant is a small, text-only model that enables
speculative decoding for Gemma 4 models using the Multi-Token Prediction
(MTP) method and associated candidate generator. The model shares the
same Gemma4TextModel backbone as other Gemma 4 models but uses KV
sharing throughout the entire model, allowing it to reuse the KV cache
populated by the target model and skip the pre-fill phase entirely. This
architecture includes cross-attention to make the most of the target
model's context, allowing the assistant to accurately predict more
drafted tokens per drafting round.</p>
<p><strong>Links:</strong> <a
href="https://huggingface.co/docs/transformers/main/en/model_doc/gemma4_assistant ">Documentation</a></p>
<ul>
<li>First model (<a
href="https://redirect.github.com/huggingface/transformers/issues/45788 ">#45788</a>)
by <a
href="https://github.com/SindhuRaghuram97 "><code>@SindhuRaghuram97</code></a>
in <a
href="https://redirect.github.com/huggingface/transformers/pull/45788 ">#45788</a></li>
</ul>
<h3>GraniteSpeechPlus</h3>
<!-- raw HTML omitted -->
<p>Granite Speech Plus is a variant of Granite Speech that enhances the
projector by consuming the concatenation of the encoder's final hidden
states with an arbitrary subset of its intermediate hidden states along
the feature dimension. It is a multimodal speech-to-text model that can
transcribe audio, provide speaker annotation and word level timestamps
by responding to text prompts. The model inherits the same architecture
components as Granite Speech including the speech encoder, query
transformer projector, language model, and optional LoRA adapter.</p>
<p><strong>Links:</strong> <a
href="https://huggingface.co/docs/transformers/main/en/model_doc/granite_speech_plus ">Documentation</a></p>
<ul>
<li>Support for a new Granite-Speech-Plus model (<a
href="https://redirect.github.com/huggingface/transformers/issues/45695 ">#45695</a>)
by <a href="https://github.com/zvik "><code>@zvik</code></a> in <a
href="https://redirect.github.com/huggingface/transformers/pull/45695 ">#45695</a></li>
</ul>
<h3>Granite4Vision</h3>
<p>Granite Vision 4.1 is a vision-language model from IBM Research
designed for enterprise-grade document data extraction. It specializes
in chart extraction (Chart2CSV, Chart2Summary, Chart2Code), table
extraction (JSON, HTML, OTSL), and semantic key-value pair extraction.
The model builds on LLaVA-NeXT with architectural innovations including
SigLIP2 Vision Encoder, Window Q-Former Projectors, and DeepStack
Feature Injection with 8 vision-to-LLM injection points.</p>
<p><strong>Links:</strong> <a
href="https://huggingface.co/docs/transformers/main/en/model_doc/granite4_vision ">Documentation</a></p>
<ul>
<li>Add Granite 4.1 Vision (granite4_vision) (<a
href="https://redirect.github.com/huggingface/transformers/issues/45597 ">#45597</a>)
by <a
href="https://github.com/artem-spector "><code>@artem-spector</code></a>
in <a
href="https://redirect.github.com/huggingface/transformers/pull/45597 ">#45597</a></li>
</ul>
<h3>EXAONE-4.5</h3>
<!-- raw HTML omitted -->
<p>EXAONE 4.5 is the first open-weight vision language model developed
by LG AI Research, integrating a dedicated visual encoder into the
existing EXAONE 4.0 framework to expand multimodal capabilities. The
model features 33 billion parameters in total, including 1.2 billion
parameters from the vision encoder, and achieves competitive performance
in general benchmarks while outperforming similar-sized models in
document understanding and Korean contextual reasoning. It builds on
EXAONE 4.0 with key enhancements including an expanded vocabulary of
153,600 tokens, support for up to 256K token context windows, and a
Multi-Token Prediction (MTP) mechanism.</p>
<p><strong>Links:</strong> <a
href="https://huggingface.co/docs/transformers/main/en/model_doc/exaone4_5 ">Documentation</a>
| <a href="https://huggingface.co/papers/2604.08644 ">Paper</a> | <a
href="https://www.lgresearch.ai/blog/view?seq=641 ">Blog Post</a></p>
<ul>
<li>Add EXAONE 4.5 implementations (<a
href="https://redirect.github.com/huggingface/transformers/issues/45471 ">#45471</a>)
by <a href="https://github.com/nuxlear "><code>@nuxlear</code></a> in <a
href="https://redirect.github.com/huggingface/transformers/pull/45471 ">#45471</a></li>
</ul>
<h3>PP-FormulaNet</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/huggingface/transformers/commit/049d2bf1220747b6d39e2a978b9f5fe0defa1dca "><code>049d2bf</code></a>
v5.8.0</li>
<li><a
href="https://github.com/huggingface/transformers/commit/2871cafffb3b221b5f1df7e59033a15a7830309f "><code>2871caf</code></a>
Add Granite 4.1 Vision (granite4_vision) (<a
href="https://redirect.github.com/huggingface/transformers/issues/45597 ">#45597</a>)</li>
<li><a
href="https://github.com/huggingface/transformers/commit/aaec1092d413d0ea7249101ea43f74b5d6d60936 "><code>aaec109</code></a>
fix: correct spelling in continuous_api docstring (<a
href="https://redirect.github.com/huggingface/transformers/issues/45749 ">#45749</a>)</li>
<li><a
href="https://github.com/huggingface/transformers/commit/7050d0e0bf5a97c7c0149c319681601373621eae "><code>7050d0e</code></a>
Fix link to modular transformers documentation (<a
href="https://redirect.github.com/huggingface/transformers/issues/45746 ">#45746</a>)</li>
<li><a
href="https://github.com/huggingface/transformers/commit/df2f2b539902c78db6a0f71fb2c175880e390576 "><code>df2f2b5</code></a>
Gemma4: fix failed test cases (<a
href="https://redirect.github.com/huggingface/transformers/issues/45568 ">#45568</a>)</li>
<li><a
href="https://github.com/huggingface/transformers/commit/2c7d385621c80fee70c1472f3a622fcba2c93fb9 "><code>2c7d385</code></a>
First model (<a
href="https://redirect.github.com/huggingface/transformers/issues/45788 ">#45788</a>)</li>
<li><a
href="https://github.com/huggingface/transformers/commit/a6ccf9354a4b9f6ec8d9c7482ed5e37734b6dbb2 "><code>a6ccf93</code></a>
Fix CI: Allow more artifacts to be download in CI (<a
href="https://redirect.github.com/huggingface/transformers/issues/45785 ">#45785</a>)</li>
<li><a
href="https://github.com/huggingface/transformers/commit/2c432d73c1428640163c0ff3dc29f2fa4890b928 "><code>2c432d7</code></a>
Add <code>concurrency</code> to <code>PR CI</code> workflow file
(<code>pr-ci-caller.yml</code>) (<a
href="https://redirect.github.com/huggingface/transformers/issues/45786 ">#45786</a>)</li>
<li><a
href="https://github.com/huggingface/transformers/commit/3db570f745f9450d8b04c78bda4bacdb333c191a "><code>3db570f</code></a>
Reorder decorators for autodoc and dataclass (<a
href="https://redirect.github.com/huggingface/transformers/issues/45702 ">#45702</a>)</li>
<li><a
href="https://github.com/huggingface/transformers/commit/136befeb03164bd77838560305cecc1c023317e7 "><code>136befe</code></a>
Unwrap <code>text_config</code> in
<code>AutoModelFor*.from_config</code> (<a
href="https://redirect.github.com/huggingface/transformers/issues/45770 ">#45770</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/huggingface/transformers/compare/v5.7.0...v5.8.0 ">compare
view</a></li>
</ul>
</details>
<br />
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
</details>
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-09 02:07:44 -07:00
Alishahryar1
43a3cc941b
Update README
2026-05-09 00:20:14 -07:00
Alishahryar1
b0f5a49cd1
docs: link Wafer provider site
2026-05-08 23:47:35 -07:00
Alishahryar1
5669fb22e1
Merge branch 'ali/add-wafer-provider'
2026-05-08 23:43:35 -07:00
Alishahryar1
5294661aa4
feat: add Wafer provider
2026-05-08 23:43:16 -07:00
Preston Arnold
5706d0029d
Remove redundant powershell command in README ( #354 )
...
`cp` works just fine on powershell. no need.
2026-05-05 21:52:52 -07:00
alex
8687fb3cbb
fix: accept betas body field from Claude Code clients ( #360 )
...
Claude Code newer versions send a `betas` list in the request body (e.g.
"interleaved-thinking-2025-05-14"). This landed in `__pydantic_extra__`
and triggered `_openai_reject_native_only_top_level_fields`, surfacing
as "Invalid request sent to provider." for all OpenAI Chat upstreams
(kimi, nvidia_nim).
Declare `betas` on both `MessagesRequest` and `TokenCountRequest` with
`exclude=True` so it is accepted from clients but never forwarded to any
provider body.
2026-05-05 21:45:15 -07:00
alex
6b8c697f4d
add kimi to readme ( #361 )
2026-05-05 21:41:30 -07:00
Leung Ka Chun
19e08f2da1
fix(deepseek): accept document blocks and normalize tool_result content ( #358 )
...
## What
Fixes the 422 error returned by the proxy when Claude Code v2.1.128+
sends PDF context as Anthropic `document` blocks, plus two related
DeepSeek-only issues uncovered while debugging.
Closes #357 .
## Why
Claude Code now attaches PDFs/files as `document` content blocks. The
`Message.content` union didn't include that variant, so every follow-up
turn after a PDF read returned `422 Unprocessable Content` from the
proxy itself (before the request ever reached DeepSeek).
## Changes
- `api/models/anthropic.py`: new `ContentBlockDocument`, added to
`Message.content` union.
- `providers/deepseek/request.py`:
- `_strip_unsupported_attachment_blocks` — silently drops
`image`/`document` blocks for DeepSeek.
- `_serialize_tool_result_content` + `_normalize_tool_result_content` —
coerces `tool_result.content` to a string per DeepSeek's API contract.
- Hooked into `build_request_body` (strip before validation, normalize
before send).
- `tests/providers/test_deepseek.py`: +4 tests, 1 legacy test updated.
## Verification
- `uv run ruff format` ✅
- `uv run ruff check` ✅
- `uv run ty check` ✅
- `uv run pytest` ✅ (1194 passed)
- Manual: `claude-deepseek` against a PDF no longer 422s.
## Scope / non-goals
- No README change (per CONTRIBUTING).
- Image/document blocks for DeepSeek are stripped, not converted to text
— Claude Code already ships the extracted text in the paired
tool_result.
- No changes to other providers.
---------
Co-authored-by: Alishahryar1 <alishahryar2@gmail.com >
2026-05-05 21:36:38 -07:00
Alishahryar1
3bde98abaf
Raise default timeouts for write and connect
2026-05-05 21:24:47 -07:00
Alishahryar1
89d6a79d12
Update README
2026-05-05 21:19:10 -07:00
alex
c521589817
feat: add Kimi (Moonshot) provider ( #335 )
2026-05-04 18:28:54 -07:00
dependabot[bot]
29c3150ec4
Bump the minor-and-patch group with 3 updates ( #314 )
2026-05-03 14:31:50 -07:00