Commit Graph

1546 Commits

Author SHA1 Message Date
Armin Ronacher 035ea9c856 fix: remove redundant record guards 2026-07-05 18:55:09 +02:00
Vegard Stikbakke ee24a9ec54 feat(ai): refresh generated model catalogs
closes #6256
2026-07-04 06:27:58 +02:00
Vegard Stikbakke d53b567601 fix(ai): retry Cloudflare 524 timeouts
closes #6239
2026-07-03 23:03:35 +02:00
Vegard Stikbakke 8133c94db9 fix(ai): honor server-provided slow_down interval in device-code polling
GitHub's device flow documents slow_down as a rate limit: a poll that
arrives inside the throttle window is answered with slow_down instead of
the token, and the response's interval field reports the new required
minimum ("adds 5 seconds to the last interval"). A client that only
tracks its own +5s increment can stay behind the server's ratcheting
requirement when its timers fire early - common with WSL/VM clock drift
(microsoft/WSL#10006) - so every subsequent poll keeps hitting the rate
limit and login appears to hang forever even after the browser reports
the device as authorized.

Adopt the server-provided interval when a slow_down poll result carries
one, falling back to the RFC 8628 section 3.5 +5s increment otherwise.
GitHub Copilot passes the interval field through.

This restores part of the #1994 mitigations that were lost in the #4788
device-code refactor.

refs #6187
2026-07-03 22:26:12 +02:00
Vegard Stikbakke 23d1462611 fix(ai): rotate stale Codex websocket sessions
closes #6268
2026-07-03 15:30:41 +02:00
Vegard Stikbakke 21cb3807e7 fix(ai): detect DS4 context overflow errors
closes #6262
2026-07-02 20:39:49 +02:00
Vegard Stikbakke 114bacf349 fix(ai): enable Bedrock prompt caching for Claude 5
closes #6235
2026-07-02 11:00:20 +02:00
Vegard Stikbakke e285e90fdb fix(ai): remove Copilot Sonnet 5 fallback in generate-models 2026-07-01 23:01:33 +02:00
Vegard Stikbakke e2ccdc8509 fix(ai): delay Copilot device-code token polling
closes #6187
2026-07-01 13:48:11 +02:00
Vegard Stikbakke 8c9436407c fix(ai): remove stale model metadata fallbacks 2026-07-01 10:53:09 +02:00
Vegard Stikbakke 1da1cdb2fb chore(ai): regenerate models
Picked up upstream models.dev/OpenCode catalog drift while
regenerating for the Fireworks GLM 5.2 Fast fix: Cloudflare AI Gateway
and OpenCode gain Claude Sonnet 5; OpenCode gains Kimi K2.7 Code and
MiniMax-M3; MiniMax model name formatting normalized to MiniMax-Mx.x.
2026-07-01 10:35:38 +02:00
Vegard Stikbakke 844d175eaf fix(ai): align Fireworks GLM 5.2 Fast with GLM 5.2
Broaden the Fireworks GLM 5.2 special-case in generate-models.ts from
an exact id match to a glm-5p2 substring match, so the router variant
accounts/fireworks/routers/glm-5p2-fast also uses the OpenAI-compatible
endpoint and thinkingLevelMap instead of falling back to the default
Anthropic Messages config.

closes #6195
2026-07-01 10:34:46 +02:00
Vegard Stikbakke 1d061b3f45 fix(ai): remove stale model metadata fallbacks 2026-07-01 10:03:26 +02:00
Vegard Stikbakke 4206376410 feat(ai): add Copilot Claude Sonnet 5
closes #6200
2026-07-01 09:57:04 +02:00
Vegard Stikbakke 0ac3cfe09b feat(ai): use zstd compression for codex sse transport 2026-07-01 08:42:46 +02:00
Vegard Stikbakke a3cc169d97 fix(ai): avoid codex user-agent race
The Codex provider previously loaded node:os asynchronously during module evaluation. A fresh process that imports the provider and immediately starts an SSE request can build headers before that promise callback runs, so the first request reports User-Agent: pi (browser) in Node/Bun.

Reproduced against parent fd6659dd with a stubbed-fetch harness: 50/50 immediate first requests reported pi (browser) in both Node and Bun. The same harness on this fix reports the OS-specific user agent 50/50 in both runtimes.

Use process.getBuiltinModule("node:os") behind the existing Node/Bun runtime guard so OS metadata is available synchronously while still avoiding top-level runtime Node builtin imports that break browser/Vite builds.
2026-07-01 08:41:38 +02:00
Mario Zechner dd87c02cbf Add [Unreleased] section for next cycle 2026-06-30 22:29:44 +02:00
Mario Zechner a23abe4a69 Release v0.80.3 2026-06-30 22:29:41 +02:00
Mario Zechner f98a154d87 docs: audit changelog entries 2026-06-30 22:24:42 +02:00
Mario Zechner 5c1a2977bc fix(ai): update generated model catalogue 2026-06-30 22:12:48 +02:00
Vegard Stikbakke 3d6acb37b9 fix(ai): regenerate model catalog
Includes updated Xiaomi MiMo pricing from models.dev. Closes #6138
2026-06-30 08:33:18 +02:00
Mario Zechner 6fbeba51af Merge pull request #5832 from stephanmck/fix/provider-error-body-passthrough-5763
fix(ai): surface provider HTTP error body instead of opaque SDK message
2026-06-29 16:58:24 +02:00
Vegard Stikbakke b91bdd5a3e fix(ai): preserve Z.AI thinking content
closes #6083
2026-06-29 08:40:20 +02:00
Armin Ronacher 54113731b2 fix(ai): use HTTP timeout for Codex SSE headers
Refs #4945
2026-06-28 19:57:47 +02:00
Mario Zechner 09f1059575 fix(ai): clamp streamSimple max tokens
Clamps streamSimple max-token defaults against estimated context, addressing #5595.

closes #6061
2026-06-25 14:10:28 +02:00
Mario Zechner f78b163713 fix(ai): revert minimax max token clamp 2026-06-25 13:36:04 +02:00
Stephan Schneider 62fad94f1a fix(ai): surface provider HTTP error body instead of opaque SDK message
Add a shared normalizeProviderError helper in packages/ai/src/utils/error-body.ts
and route the 8 body-blind / status-only providers through it (amazon-bedrock,
azure-openai-responses, google, google-vertex, images/openrouter,
openai-codex-responses, openai-completions, openai-responses). Non-schema 4xx/5xx
responses from proxies / gateways now show the real reason carried in the response
body alongside the HTTP status, instead of "403 status code (no body)" or
"Unknown: UnknownError".

The helper probes status (statusCode, status, $metadata.httpStatusCode,
$response.statusCode) and body (body, parsed error object, $response.body) across
the Mistral, OpenAI, Google, and Bedrock SDK shapes, truncates the body at a 4000
char cap, and preserves error.message when the SDK already folded the body in
(Anthropic / Google happy path). mistral.ts and anthropic.ts are left untouched.
Provider prefixes and the OpenRouter metadata.raw append are preserved.

closes #5763
2026-06-25 12:07:51 +02:00
Mario Zechner b940c52e7e fix(ai): clamp MiniMax shared budget max tokens
closes #6061
2026-06-25 12:00:37 +02:00
Mario Zechner 8c9dbffa36 fix(ai): preserve responses reasoning for out-of-order items
closes #6009
2026-06-25 11:57:52 +02:00
Mario Zechner 9cd2c81ada fix(ai): regenerate model catalogues 2026-06-25 11:56:33 +02:00
Mario Zechner d7868b0998 feat(ai): add reasoning token counts to Usage
Add optional reasoning?: number to Usage as a subset of output. Populate
for Anthropic (output_tokens_details.thinking_tokens), OpenAI
Responses/Codex/Azure (output_tokens_details.reasoning_tokens), OpenAI
Completions (completion_tokens_details.reasoning_tokens), and Google
Generative AI / Vertex (thoughtsTokenCount). Bedrock Converse and Mistral
do not return a reasoning breakdown, so they stay unset.

closes #6057
2026-06-25 10:35:02 +02:00
Armin Ronacher 371adcf371 fix(coding-agent): retry explicit provider retry errors
closes #6019
2026-06-24 18:14:06 +02:00
Mario Zechner a2e3e9d8b2 Merge pull request #6004 from gukoff/support-azure-foundry-endpoints
feat: Normalize modern Microsoft Foundry Responses API endpoints
2026-06-24 10:38:57 +02:00
Armin Ronacher 8277bd6896 Add [Unreleased] section for next cycle 2026-06-23 23:45:39 +02:00
Armin Ronacher 0201806adf Release v0.80.2 2026-06-23 23:45:36 +02:00
Armin Ronacher 9096d5f9a6 docs: update changelog entries 2026-06-23 23:42:02 +02:00
Mario Zechner e1a2dc04f4 fix(ai): restore detectCompat runtime fallback in openai-completions
refs #6020
2026-06-23 23:29:44 +02:00
Mario Zechner ef231c4910 fix(ai): resolve request-scoped auth before provider calls
closes #6021
2026-06-23 23:27:00 +02:00
Mario Zechner 04fce8099f Merge remote-tracking branch 'origin/main' 2026-06-23 22:30:15 +02:00
Mario Zechner 49fbe6834f fix(ai): align api key credentials with auth json 2026-06-23 22:29:46 +02:00
Armin Ronacher 386d079afa fix(ai): restore legacy compat stream aliases
closes #6016
2026-06-23 22:20:20 +02:00
Mario Zechner 6184307c39 fix(ai): require explicit anthropic compat metadata 2026-06-23 21:04:59 +02:00
Armin Ronacher e00074358d Add [Unreleased] section for next cycle 2026-06-23 20:04:12 +02:00
Armin Ronacher 1c4a9ba7c8 Release v0.80.1 2026-06-23 20:04:09 +02:00
Armin Ronacher 828493b37c fix(ai): unblock release provider tests 2026-06-23 19:57:29 +02:00
Armin Ronacher 86528dd9ee Add [Unreleased] section for next cycle 2026-06-23 19:30:35 +02:00
Armin Ronacher f08e968c83 Release v0.80.0 2026-06-23 19:30:32 +02:00
Armin Ronacher 526351d99a docs: audit unreleased changelogs 2026-06-23 19:25:26 +02:00
Mario Zechner 2be6e67028 docs(ai): document bundling behavior 2026-06-23 16:40:46 +02:00
Mario Zechner cd95c2749f fix(ai): require OpenAI Responses terminal events 2026-06-23 16:35:45 +02:00