Commit graph

1925 commits

Author SHA1 Message Date
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
Vegard Stikbakke
d92eb8d4b1 feat(ai): enable Fireworks Messages deferred tool loading 2026-09-10 21:18:35 +02:00
David Brailovsky
4bd3f48df0 fix(ai): enable GLM-5.2 reasoning on Mistral
Use reasoning_effort instead of the ignored prompt_mode parameter.

Fixes #9375
2026-09-10 14:31:58 +02:00
David Brailovsky
2e6fe2f988 fix(ai): remove retired GPT-5.4 Codex models
Remove GPT-5.4 and GPT-5.4 mini from the OpenAI Codex catalog and update affected tests.

Fixes #9394
2026-09-10 14:25:55 +02:00
David Brailovsky
12f59336af fix(ai): update DeepSeek Flash catalog
Replace retired Flash aliases with the canonical deepseek-flash model and refresh DeepSeek pricing metadata.

Closes #9423
2026-09-10 14:14:19 +02:00
David Brailovsky
bbb61e34aa fix(ai): send OpenRouter session affinity headers by default
Send x-session-id for OpenRouter Chat Completions and Anthropic Messages requests while preserving explicit opt-out and cache-disabled behavior.

closes #9102
2026-09-10 10:37:44 +02:00
Vegard Stikbakke
519184eb65 fix(ai): accept Fireworks models in adaptive thinking metadata test
Update the catalog-wide assertion for metadata-driven Fireworks support while retaining the model-name restrictions for other providers. Add representative Fireworks models to the expected subset.
2026-09-10 10:31:35 +02:00
Vegard Stikbakke
6b94ae2ece fix(ai): preserve Fireworks thinking and native effort levels
Enable unsigned thinking replay and metadata-driven adaptive effort for Fireworks Messages models, with verified fallbacks for incomplete catalog metadata. Remove redundant GLM 5.2 and Kimi K3 effort aliases and add regression tests.

closes #9323
2026-09-10 09:51:31 +02:00
Vegard Stikbakke
e86102f18f fix(ai): send Codex Off reasoning effort
closes #9191
2026-09-10 09:06:27 +02:00
David Brailovsky
c37b0e03b5 fix: cap agent retry backoff
Add a configurable 60-second default cap for assistant and summarization retry delays across coding-agent and the agent harness.

Fixes #8826
2026-09-09 11:54:56 +02:00