Commit graph

1934 commits

Author SHA1 Message Date
Armin Ronacher
0aec9f5a7e fix(ai): merge main into codex-alignment 2026-09-22 15:50:14 +02:00
Armin Ronacher
5d55f8fbd4 fix(ai): keep Codex request identity provider-scoped 2026-09-22 11:08:43 +02:00
Armin Ronacher
26c12a2f83 fix(ai): harden Codex request identity handling 2026-09-22 08:35:40 +02:00
Armin Ronacher
1a584a7a56 feat(ai,coding-agent): add Grok 4.7 support 2026-09-22 00:07:34 +02:00
David Brailovsky
1b6ddca87c fix(ai): omit empty text parts from multimodal user messages
Prevent OpenAI-compatible providers from rejecting image-only prompts.

Fixes #9797
2026-09-21 21:48:11 +02:00
Armin Ronacher
4c8eb393c7 Add [Unreleased] section for next cycle 2026-09-21 18:31:58 +02:00
Armin Ronacher
16787ad5b2 Release v0.87.0 2026-09-21 18:31:52 +02:00
Armin Ronacher
89cc42d304 fix(ai): align Codex request attribution 2026-09-21 18:10:05 +02:00
Armin Ronacher
8bfef4de88 fix(ai): update strict mode test expectations 2026-09-21 09:39:21 +02:00
Armin Ronacher
890f920884 fix(ai): default unknown providers to non-strict tools (closes #9816) 2026-09-21 01:14:53 +02:00
Armin Ronacher
f5c946480c feat(ai,coding-agent): add image input limits (closes #9631) 2026-09-20 22:59:16 +02:00
Armin Ronacher
19451accde Add [Unreleased] section for next cycle 2026-09-20 13:04:18 +02:00
Armin Ronacher
13cbf77df2 Release v0.86.1 2026-09-20 13:04:11 +02:00
Armin Ronacher
68f98022e3 docs: audit Cerebras fix changelog entries 2026-09-20 13:00:29 +02:00
EdenGottlieb
af7359b904
fix(ai): exclude Cerebras from supportsStrictMode (#9804)
Make strict mode as unsupported in cerebras, as mixed strict/unstrict tool usage doesn't work (400 from API), and extensions may define both strict and unstrict tools
2026-09-20 12:52:18 +02:00
Armin Ronacher
0e283203c7 fix(ai): detect z.ai prompt-too-long errors
closes #9805
2026-09-20 12:46:49 +02:00
Armin Ronacher
ee2df312e5 docs: audit post-release changelog entries 2026-09-20 12:15:11 +02:00
Alexey Zaytsev
b73412a378
feat(ai,coding-agent): add Meta provider with Muse subscription OAuth (#9096)
Device authorization flow against auth.meta.com mints a Model API key via the Muse Code key-mint endpoint. Identity token stored as refresh, minted key as access; daily re-mint via the standard OAuth scheduler. Identity is non-renewable (no refresh grant), so mint 401/403 directs to /login meta. Models sourced from models.dev; default muse-spark-1.3.
2026-09-20 11:13:43 +02:00
Armin Ronacher
50d766cba2 Add [Unreleased] section for next cycle 2026-09-20 01:00:48 +02:00
Armin Ronacher
ecac0a9c4e Release v0.86.0 2026-09-20 01:00:41 +02:00
Armin Ronacher
12032deb70 docs: complete unreleased changelog audit 2026-09-20 00:55:19 +02:00
Armin Ronacher
c596d09d9c
feat(coding-agent): add prompt cache warming (#9668) 2026-09-19 21:18:15 +02:00
Armin Ronacher
7d5eb0ee3b fix(ai): mock Radius in model generation tests 2026-09-19 19:41:20 +02:00
Armin Ronacher
eba619879c docs: audit unreleased changelogs 2026-09-19 19:33:31 +02:00
Armin Ronacher
4d38031fbd feat(ai): ship Radius model catalog 2026-09-19 19:23:31 +02:00
David Brailovsky
e4ce7b449f fix(ai): update Kimi model catalog source 2026-09-18 16:04:16 +02:00
Mario Zechner
eed5263cdd Merge remote-tracking branch 'origin/main' into HEAD 2026-09-18 12:33:14 +02:00
Mario Zechner
cf8d5fac30 feat(agent): add Pico storage foundation 2026-09-18 12:32:00 +02:00
David Brailovsky
661619e872 fix(ai): scope bodyless overflow errors to Cerebras
closes #9482
2026-09-18 11:15:48 +02:00
Vegard Stikbakke
bb0f4aa602 fix(ai): preserve DeepSeek V4 effort metadata
closes #9485
2026-09-18 10:43:20 +02:00
David Brailovsky
ea9e093516 fix(ai): update tests for current model catalogs 2026-09-18 09:49:53 +02:00
Armin Ronacher
16292398af fix(coding-agent): send forced system prompts without recording them
Remove SystemMessage.replace. A prompt forced from before_agent_start is a rendering
of the current prompt for the run, not conversation state: persisting it as a
replacing system message wrote the full prompt and tool list on every change,
lost the structured sections while forced, and disabled mid-conversation system
messages for the rest of the session once a replacement existed.

The transcript now always records section patches. AgentSession wraps
transformContext and, when a forced prompt is active, collapses the system
messages into one head carrying the forced text and the current tools. Providers
receive the same request as before; nothing is persisted and the projection ends
with the run.

The evals harness validated the without_docs variant from the transcript, which
relied on the persisted replacement. Its transform extension now records the
prompt it forced and validates that instead.
2026-09-17 20:02:23 +02:00
David Brailovsky
3955b27a1d fix(ai): preserve Vercel AI Gateway unsigned thinking
Enable empty-signature thinking replay for all generated Vercel AI Gateway models.

closes #9676
2026-09-17 16:43:24 +02:00
David Brailovsky
e98f287ee4 fix(ai): retry Azure peak-load capacity errors
Closes #9669
2026-09-17 12:01:39 +02:00
David Brailovsky
e5d18382a2 fix(ai): retry Cloudflare 520 responses
closes #9627
2026-09-17 10:39:48 +02:00
David Brailovsky
1283afd0d0 fix(ai): preserve thinking replay through renamed Anthropic models
Keep the requested model ID on assistant messages and record the
provider-reported model separately, while retaining fallback pricing.

Fixes #9188
2026-09-17 10:26:03 +02:00
David Brailovsky
16235fd935 fix(ai): avoid unsupported Gemini thinking levels
Use each model's supported levels when disabling or selecting Gemini thinking.

Fixes #9455
2026-09-17 10:08:36 +02:00
Armin Ronacher
e4c75a7322 fix(coding-agent): replace the system prompt when a handler forces it
Add SystemMessage.replace: replaying a system message with the flag discards the
accumulated prompt content, sections, and tools before applying it, and providers
collapse the transcript into one leading system message whenever a later message
replaces it.

A forced prompt from before_agent_start is opaque, so it is persisted as a replace
message holding the text in content with no sections (the agent loop fills in the
full tool set). Leaving force mode persists another replace message with the
structured sections. Previously the forced prompt became a preamble section patch,
so models with native mid-conversation system messages kept the original prompt
as their leading system prompt and received the forced one as a later update.
2026-09-16 23:35:01 +02:00
Armin Ronacher
bdee230f1e feat(ai): refresh generated image model catalog 2026-09-16 18:00:42 +02:00
David Brailovsky
aa50fe778a fix(ai): derive Google thinking levels from models.dev
Extract Google catalog processing and apply models.dev reasoning effort
metadata directly for Google, Vertex, and OpenCode models. Keep the
provider-specific Gemma 4 toggle mapping.
2026-09-16 17:49:44 +02:00
Armin Ronacher
9e05370b29
Mid conversation system messages (#9548)
This change makes system prompt text and tool changes part of the transcript rather than silently rewriting its starting conditions. This lets Pi record when instructions changed or tools became available, restore that state after resuming or navigating branches, and preserve cached prompt prefixes where the upstream supports it.
2026-09-16 15:54:07 +02:00
David Brailovsky
6671c60476 fix(ai): send Baseten session affinity headers
Enable session affinity for cataloged Baseten models so related requests reach the same replica and benefit from prompt caching.

Closes #9629
2026-09-16 12:11:16 +02:00
Christian Klotz
4c2d91339a
fix(coding-agent): export extension event hook types (#9642)
* fix(coding-agent): export extension event hook types

Fixes #9511

* fix(ai): stabilize Bedrock cache cost regression

* fix(ai): honor Bedrock profile pricing in cache test
2026-09-15 22:47:59 +01:00
Vegard Stikbakke
8a7b0c03df fix(ai): price Bedrock one-hour cache writes
closes #9457
2026-09-15 14:18:15 +02:00
Armin Ronacher
f9bcd351dc docs(ai): document Codex WebSocket cleanup 2026-09-14 23:58:15 +02:00
Vegard Stikbakke
ceea48f5d5 Revert "fix(ci): Fix a broken test"
This reverts commit 71dca871bc.
2026-09-14 10:28:54 +02:00
Vegard Stikbakke
0c7bb7c5c7 fix(ai): identify Responses error providers
closes #9298
2026-09-14 10:14:48 +02:00
Armin Ronacher
71dca871bc fix(ci): Fix a broken test 2026-09-11 19:42:45 +02:00
Vegard Stikbakke
713bdf38d5 Revert "fix(ai): update stale DeepSeek Flash test model IDs"
This reverts commit e8413008cd.
2026-09-11 15:08:41 +02:00
Mario Zechner
e8413008cd fix(ai): update stale DeepSeek Flash test model IDs 2026-09-11 11:49:52 +02:00