1021 Commits
Author SHA1 Message Date
Ramiz Wachtler e40126f578 fix(coding-agent): reject invalid --mode values
fixes #9045
2026-09-22 08:29:57 +02:00
Armin Ronacher 1a584a7a56 feat(ai,coding-agent): add Grok 4.7 support 2026-09-22 00:07:34 +02:00
Armin Ronacher eaf72ed4d8 fix(coding-agent): update stale test expectations 2026-09-21 18:26:29 +02:00
Armin Ronacher aef5fc429b fix(coding-agent): keep prompt and tool state across context handlers (#9846)
Since 0.86 the prompt and tool declarations live in transcript system
messages, so a context handler that filters or slices messages could drop
them. After extension-driven compaction this sent requests without built-in
tools and made Codex emit raw tool-call text.

context handlers now see the conversation only. An unchanged list keeps the
transcript as is; a changed list gets the replayed prompt sections and tool
declarations as one leading system message. Handler-added system messages
are kept after it.

Add context_with_system, which runs after every context handler on the full
transcript and sends its result verbatim, for extensions that need to edit
system messages per request. Dropping the leading system message is reported
as an extension error.

closes #9789, closes #9822
2026-09-21 17:14:22 +02:00
Mario Zechner 466db0fecd feat: add canonical session context boundaries
Make SessionManager projections authoritative for provider requests, add append-only context edits and actionable turn boundaries, and preserve existing queue scheduling during continuation and recovery.
2026-09-21 16:59:20 +02:00
Mario Zechner 10d1ad621f feat: add transactional replicated state 2026-09-21 16:07:59 +02:00
Christian KlotzandGeet Khosla b6419322e6 fix(coding-agent): report invalid prompt frontmatter (#9830)
Fixes #9354

Co-authored-by: Geet Khosla <geetkhosla@gmail.com>
2026-09-21 15:22:17 +02:00
David Brailovsky 47a18e37b1 fix: require complete GIF image signatures
Require GIF87a or GIF89a headers to avoid classifying text files beginning with GIF as images.

Fixes #9755
2026-09-21 10:30:42 +02:00
Armin Ronacher 63787ee6ba feat(coding-agent): identify extensions in crash stacks 2026-09-21 01:00:43 +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 3390bd9363 fix(coding-agent): skip late cache warming refreshes 2026-09-20 15:53:22 +02:00
Armin Ronacher 6dff740fab fix(coding-agent): restore OSC 52 clipboard fallback for headless sessions
3349e1db1 (#9618) limited OSC 52 to SSH/mosh so a desktop terminal that ignores
it no longer reports a false success. That also disabled the only clipboard
route for containers and WSL without WSLg, which have no display to gate on.

Emit OSC 52 again on display-less Linux. On WSL, write the Windows clipboard
through PowerShell (verified, no OSC 52 size cap), preferring OSC 52 in
Windows Terminal where it is known to work. Desktop sessions with a display
still report the failure.

closes #9688
2026-09-20 12:42:15 +02:00
Armin Ronacher d875512cc4 fix(coding-agent): suppress bug hints for expected failures 2026-09-20 12:06:14 +02:00
Armin Ronacher d1230ea200 fix(coding-agent): preserve multiline bug descriptions 2026-09-20 01:40:27 +02:00
Armin Ronacher dfbf793b78 feat(coding-agent): load session picker progressively 2026-09-20 00:48:26 +02:00
梧桐雨andArmin Ronacher 21b8cc1a4b fix(coding-agent): ignore stale tool image conversions (#8743)
Co-authored-by: Armin Ronacher <armin.ronacher@active-4.com>
2026-09-20 00:38:42 +02:00
Armin Ronacher 40c256cccb feat(coding-agent): defer extension loader dependencies
Load ordinary jiti lazily on Node while retaining jiti/static for Bun and SEA binaries. This closes #9540.
2026-09-19 23:25:47 +02:00
Armin Ronacher c596d09d9c feat(coding-agent): add prompt cache warming (#9668) 2026-09-19 21:18:15 +02:00
Armin Ronacher 4d38031fbd feat(ai): ship Radius model catalog 2026-09-19 19:23:31 +02:00
Armin Ronacher de2de549bc fix(coding-agent): close compaction cancellation races
Closes #9340 and closes #9777.
2026-09-19 19:18:18 +02:00
Armin Ronacher 3c75b27479 feat(coding-agent): add bug reporting 2026-09-19 17:55:49 +02:00
David Brailovsky 1e39862f67 fix(coding-agent): detect llama.cpp chat-template thinking
Inspect loaded models through /props and configure boolean thinking levels for templates supporting enable_thinking.

Fixes #9528
2026-09-18 14:54:17 +02:00
Vegard Stikbakke 8bdcd4498a fix(coding-agent): compact oversized trailing tool results
Fall back to the latest safe assistant boundary when trailing tool results exceed the retained-token budget, allowing older history to compact before the next provider request.

Closes #9740
2026-09-18 13:38:30 +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 13784598d2 fix(coding-agent): suppress repeated Anthropic thinking drop notices
Fixes #9391
2026-09-18 09:58:42 +02: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 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 4658534986 fix(coding-agent): shorten Anthropic thinking drop notices 2026-09-17 16:38:56 +02:00
Mario Zechner 0e19ac1161 Merge remote-tracking branch 'origin/main' into pico 2026-09-17 16:31:25 +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 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
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
Vegard Stikbakke 46bde88a1c feat(coding-agent): support per-model compaction token budgets
Closes #8133
2026-09-10 08:37:20 +02:00
Christian Klotz f3564a1d41 docs: validate documentation navigation and reachability (#9380)
* feat: use docs manifest for documentation evals

* feat: support nested documentation navigation

* docs(coding-agent): validate documentation reachability

* docs(coding-agent): remove catalog schema version
2026-09-09 17:34:42 +02:00
David Brailovsky acaa253cc8 fix(coding-agent): validate extension tool parameter schemas
Reject malformed extension tools during registration instead of allowing them to break provider request serialization.

Fixes #9300
2026-09-09 12:15:18 +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
David Brailovsky 6160683a4a fix(coding-agent): await queue operations in concurrent tests
Account for asynchronous input handlers before asserting queued message state.
2026-09-08 17:30:54 +02:00
David Brailovsky faa9863cb8 fix(coding-agent): run input handlers for queued messages
Apply input extension transforms and handling to direct steering and follow-up messages while preserving their input source.

Fixes #8718
2026-09-08 17:18:37 +02:00
Armin Ronacher 4a6ed01945 fix(coding-agent): update runtime dependencies (#9341) 2026-09-08 16:04:35 +02:00
Vegard Stikbakke c1d4c80111 fix(coding-agent): embed all session status spinners in the editor border 2026-09-07 15:31:00 +02:00
Ramiz Wachtler aa23e784c6 fix(coding-agent): update repository links to "earendil-works/pi" (#9278)
- update repository links in prompts, docs, and code to use `earendil-works/pi` instead of `earendil-works/pi-mono`
2026-09-07 14:09:39 +02:00
Vegard Stikbakke 47acd8e6cf fix(coding-agent): preserve active operation UI during tree navigation
Follow-up to e687434a6.

Recheck compaction state after navigation dialogs and response cancellation before replacing status indicators or escape handlers. Document navigation conflicts and add regression coverage.
2026-09-07 12:59:20 +02:00