Commit Graph

611 Commits

Author SHA1 Message Date
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