Commit Graph

804 Commits

Author SHA1 Message Date
David Brailovsky e022eec37d Add [Unreleased] section for next cycle 2026-07-16 16:35:19 +02:00
David Brailovsky fae7176cb9 Release v0.80.8 2026-07-16 16:35:16 +02:00
Armin Ronacher eb793510ad docs: audit unreleased changelogs 2026-07-16 13:58:56 +02:00
Armin Ronacher 97f9978fa6 feat(coding-agent): add model catalog refresh flag 2026-07-16 12:46:49 +02:00
Mario Zechner 5e336cfa80 Merge origin/main into model runtime changes 2026-07-15 13:00:45 +02:00
Mario Zechner cd7cad4ee2 feat(coding-agent): merge origin/main into model runtime facade 2026-07-15 12:25:36 +02:00
Armin Ronacher 9d09075c53 Add [Unreleased] section for next cycle 2026-07-14 18:36:49 +02:00
Armin Ronacher 818d67457c Release v0.80.7 2026-07-14 18:36:46 +02:00
Armin Ronacher 53a087fe82 docs: audit unreleased changelogs 2026-07-14 18:18:05 +02:00
Mario Zechner 9993c96907 feat(coding-agent): replace model registry with model runtime
Move provider auth and OAuth flows onto pi-ai Models, compose models.json and extension overlays through ModelRuntime, and retain ModelRegistry as an extension compatibility facade.
2026-07-14 17:48:45 +02:00
Petr Houška 298665cfb9 fix(ai): support OpenRouter session affinity (#6496)
Fixes #6366
2026-07-13 09:57:53 +02:00
Petr Houška f7b78e2a42 fix(ai): route GitHub Copilot MAI-Code models through /responses endpoint (#6544)
mai-code-1-flash-picker is not accessible via /chat/completions and
must use the Copilot /responses endpoint. Update generate-models.ts to
send mai-* models to the responses API and regenerate the affected
model entry.
2026-07-13 09:56:40 +02:00
Alexey Zaytsev eacaa130ab ai: OpenAI and Codex forced tool calls (#6588)
* feat(ai): support forced OpenAI Codex tool calls

* feat(ai): support OpenAI Responses tool choice
2026-07-13 09:48:33 +02:00
Mark Phelps bdd5c53bcd fix(ai): fall back to ambient Cloudflare account id for key-only credentials (#6292)
Cloudflare Workers AI / AI Gateway resolved provider config from the
credential only, never consulting ambient env for a field the credential
omitted. The coding-agent /login flow stores just the API key, so
CLOUDFLARE_ACCOUNT_ID lives only in the environment; the key-only credential
short-circuited the env lookup, the account id stayed unresolved, and requests
hit the literal {CLOUDFLARE_ACCOUNT_ID} base URL -> 404.

resolveValue now merges per field: prefer the credential value, fall back to
ctx.env(name).

closes #6021

Signed-off-by: Mark Phelps <209477+markphelps@users.noreply.github.com>
Co-authored-by: Mario Zechner <badlogicgames@gmail.com>
2026-07-11 14:30:40 +02:00
Armin Ronacher 4c1861033b docs: audit unreleased changelogs 2026-07-11 00:01:31 +02:00
Armin Ronacher 3d8f74357c feat(ai): support message-anchored tool loading (#6474)
This adds cache-friendly dynamic tool loading anchored to tool results. Purely additive active-tool changes are recorded with `addedToolNames`, allowing supported Anthropic and OpenAI Responses models to load tool definitions at the point they become available instead of placing them in the cached prompt prefix.

It retains safe fallback behavior for unsupported models and non-additive changes but it will wipe caches.
2026-07-10 23:52:54 +02:00
Armin Ronacher 3ea064ea2a fix: support Bedrock API key login 2026-07-10 19:34:11 +02:00
Armin Ronacher 34582ef34b Add [Unreleased] section for next cycle 2026-07-10 01:16:58 +02:00
Armin Ronacher 2b3fda9921 Release v0.80.6 2026-07-10 01:16:55 +02:00
Armin Ronacher 1775fe4c52 docs: audit unreleased changelogs 2026-07-10 01:13:38 +02:00
Armin Ronacher 3664806f2f fix(ai): add GPT-5.4 and GPT-5.5 long-context pricing 2026-07-09 23:13:58 +02:00
Armin Ronacher a9ecf301fb feat(ai): add input-based pricing tiers 2026-07-09 22:44:29 +02:00
Mario Zechner fbdd46389c feat(ai): add max thinking level 2026-07-09 22:30:53 +02:00
Mario Zechner 8973ae28ab fix(ai): ignore stale usage after compaction
closes #6464
2026-07-09 21:44:53 +02:00
Armin Ronacher e3513193bf Add [Unreleased] section for next cycle 2026-07-09 21:04:09 +02:00
Armin Ronacher cc62baa442 Release v0.80.5 2026-07-09 21:04:06 +02:00
Armin Ronacher ef793a983b Add [Unreleased] section for next cycle 2026-07-09 20:53:01 +02:00
Armin Ronacher 912d0953f6 Release v0.80.4 2026-07-09 20:52:57 +02:00
Armin Ronacher bf75b8aa39 docs: audit unreleased changelogs 2026-07-09 20:45:28 +02:00
Armin Ronacher 7df2a94e0f feat(ai): add GPT-5.6 model metadata 2026-07-09 20:32:29 +02:00
Mario Zechner 4285712bae fix(ai): retry Bun socket drops
closes #6431
2026-07-09 11:03:58 +02:00
Mario Zechner 9eedaf8cf3 fix(ai): update GitHub Copilot extended context windows to 1M
Updates GitHub Copilot built-in model metadata so models with GitHub's extended 1M capability use contextWindow 1000000 in Pi, preventing early compaction and under-budgeting for Claude Opus 4.7/4.8 and GPT-5.3 Codex/5.4/5.5.

Verified against raw docs markdown extended-capabilities table and live /models reports.

closes #6439
2026-07-09 10:39:27 +02:00
Vegard Stikbakke cc2db98002 fix(ai): refresh Xiaomi token plan model catalogs
Use the new provider-specific Xiaomi Token Plan catalogs from models.dev instead of cloning the API-billing Xiaomi catalog into every token-plan region. This removes API-billing-only models such as mimo-v2-omni from xiaomi-token-plan-{cn,ams,sgp}.
2026-07-08 10:17:48 +02:00
Samwise Wang 279f53b098 fix(ai): use "(no tool output)" placeholder for empty tool results without images (#6290)
OpenAI Completions and Responses providers unconditionally replaced empty
tool result text with "(see attached image)", even when the result had no
image content. This caused the model to hallucinate image attachments for
commands that produce no output (e.g. curl -s with SSL errors, grep with
no matches, true/false).

Now matches the Google provider behavior: "(see attached image)" is only
used when images are actually present; empty results get "(no tool output)".

Co-authored-by: tzwm <tzwm@users.noreply.github.com>
Co-authored-by: Mario Zechner <badlogicgames@gmail.com>
2026-07-06 21:42:56 +02:00
Armin Ronacher 2e4ad6a094 fix(ai): clamp OpenAI Responses max output token floor
closes #6265
2026-07-06 02:21:15 +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 e2ccdc8509 fix(ai): delay Copilot device-code token polling
closes #6187
2026-07-01 13:48:11 +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 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