6418 Commits
Author SHA1 Message Date
David Brailovsky 5901446094 fix(tui): reduce fuzzy search latency
Use native substring search to find successive fuzzy-match characters while preserving scoring and result ordering.

Closes #9267
2026-09-18 12:47:58 +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
Ramiz Wachtler fe219d7f8d feat(coding-agent): format bash tool durations to support hours, minutes, seconds (#9742) 2026-09-18 12:25:15 +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 13784598d2 fix(coding-agent): suppress repeated Anthropic thinking drop notices
Fixes #9391
2026-09-18 09:58:42 +02:00
David Brailovsky ea9e093516 fix(ai): update tests for current model catalogs 2026-09-18 09:49:53 +02:00
badlogic 328926b30e docs(chord): describe tracker ownership and aliasing as they behave 2026-09-18 00:58:07 +00:00
badlogic c4289b20eb fix(chord): keep tracked paths correct across structural mutation
A wrapper baked its path at creation, so a reference held across a
structural mutation kept addressing its old index: unshift then a write
through a held element edited its neighbour, and a write after a splice
could produce a path the replica cannot resolve. The baseline diff this
tracker replaced was immune, because its dirty paths were only hints and
the ops came from comparing values.

A wrapper now holds a cell (parent link plus segment) and the path is
walked at use time, so renumbering an element corrects every descendant.
pop/shift/unshift/splice and length truncation shift live children by the
delta and mark removed ones dead; sort/reverse/fill/copyWithin relocate
them by identity. Renumbering iterates a set of live cells rather than the
lookup cache, which is keyed by index and can evict a child that is still
held. Writes through an element that left the document mutate it and
record nothing, as plain JS and the baseline diff both do.

One object can occupy several positions in the tree. A wrapper is now
shared per target and holds a cell per position, and a write emits an op
for each, which is what the baseline diff produced for the same shape.
Positions are registered when a path is read, when a tracked value is
assigned elsewhere, and when one is inserted by an array mutator (only the
inserted range is examined; scanning the array made every structural
mutation O(n)). A blocked view of an object gets its own wrapper so the
reserved-key guard cannot be bypassed through a safe alias.

Paths are cached per cell against a counter that only structural mutation
bumps, and the per-write cell walk is skipped until a document actually
aliases something.
2026-09-18 00:32:50 +00:00
Ramiz Wachtler 46c9de402b feat(coding-agent): add event handler unsubscribe (#9630) 2026-09-17 21:44:26 +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 7811394112 docs(coding-agent): update changelog 2026-09-17 17:51:25 +00:00
David Brailovsky a8b3dd1998 fix(coding-agent): fail signal-terminated shell commands
Map signal termination to conventional nonzero exit codes and reject null exit codes from custom shell operations while preserving partial output.

fixes #9577
2026-09-17 17:01:48 +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 4658534986 fix(coding-agent): shorten Anthropic thinking drop notices 2026-09-17 16:38:56 +02:00
Mario Zechner 2c995acf44 feat(chord): replace delta tracker with operation log 2026-09-17 16:36:37 +02:00
Mario Zechner 7e19507681 feat(coding-agent): add experimental micro agent 2026-09-17 16:33:03 +02:00
Mario Zechner 0e19ac1161 Merge remote-tracking branch 'origin/main' into pico 2026-09-17 16:31:25 +02:00
Christian Klotz 5a3a03a7f5 fix(coding-agent): validate eval prompts from transcripts (#9706)
Preserve partial-run usage and session artifacts when post-run validation fails.
2026-09-17 14:12:10 +01:00
Mario Zechner 729d5cb74d docs(agent): finalize Pico5 specification set 2026-09-17 14:57:03 +02:00
Christian Klotz 42cd371ba4 feat(coding-agent): add TUI context footer eval (#9705) 2026-09-17 13:21:31 +01:00
David Brailovsky e98f287ee4 fix(ai): retry Azure peak-load capacity errors
Closes #9669
2026-09-17 12:01:39 +02:00
Mario Zechner 2b04ce27fb docs(agent): refine Pico5 plugin state API 2026-09-17 11:24:54 +02:00
github-actions[bot] 7140838fdd chore: approve contributors from issue #9645 2026-09-17 09:24:25 +00: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
Christian Klotz 509ee2bd0b fix(coding-agent): fail closed on user bash hook errors (#9662)
* fix(coding-agent): fail closed on user bash hook errors

Prevent failed execution-routing hooks from falling back to the local shell.

Fixes #9068

* fix(coding-agent): validate user bash hook results

* docs(coding-agent): clarify user bash result semantics

* docs(coding-agent): streamline user bash semantics

* fix(coding-agent): strengthen user bash regressions

* docs(coding-agent): clarify user bash breaking change
2026-09-16 17:21:17 +01:00
Mario Zechner fde6d778f8 fix(coding-agent): toggle summary entries on click 2026-09-16 18:08:06 +02:00
Armin Ronacher bdee230f1e feat(ai): refresh generated image model catalog 2026-09-16 18:00:42 +02:00
Mario Zechner 01528e2094 Merge remote-tracking branch 'origin/main' into pico 2026-09-16 17:58:54 +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 1247476e6d fix(coding-agent): update eval prompt section markers 2026-09-16 17:47:13 +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
metaist 9b791a4cc1 fix(coding-agent): avoid transcript scans for exact session IDs (#9601)
Fixes #9440
2026-09-16 11:15:16 +02:00
David Brailovsky b03a367a4f feat(coding-agent): allow configuring Anthropic fallback models
Allow models.json overrides to replace or disable server-side fallback metadata.

Fixes #9294
2026-09-16 10:50:24 +02:00
Armin Ronacher 60e7e76bd7 fix(coding-agent): surface clipboard backend failures
closes #9618
2026-09-16 01:29:52 +02:00
Armin Ronacher 3349e1db18 fix(coding-agent): reject unverified local clipboard writes
fixes #9618
2026-09-16 00:08:02 +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
Mario Zechner b02eef4186 docs(agent): specify Pico5 harness API 2026-09-15 19:27:23 +02:00
Christian Klotz d7296c063b feat(coding-agent): isolate documentation lift evals (#9635) 2026-09-15 17:54:18 +01:00
Mario Zechner c8e4a5a552 docs(agent): finalize Pico5 architecture and presentation 2026-09-15 17:36:13 +02:00
Mario Zechner ea7f84678c Merge remote-tracking branch 'origin/main' into pico 2026-09-15 17:17:35 +02:00
Vegard Stikbakke 8a7b0c03df fix(ai): price Bedrock one-hour cache writes
closes #9457
2026-09-15 14:18:15 +02:00
Mario Zechner 56cd5989ea docs(agent): replace obsolete Pico prototypes with Pico5 design 2026-09-15 11:27:53 +02:00
Armin Ronacher f9bcd351dc docs(ai): document Codex WebSocket cleanup 2026-09-14 23:58:15 +02:00
github-actions[bot] 53816d7dcc chore: approve contributors from issue #9440 2026-09-14 15:05:33 +00:00