Commit Graph

713 Commits

Author SHA1 Message Date
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
Mario Zechner fbdd46389c feat(ai): add max thinking level 2026-07-09 22:30: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
Mario Zechner cb222bf99d feat(agent): export InMemorySessionStorage and JsonlSessionStorage
Export both session storage implementations from @earendil-works/pi-agent-core
so they can be imported and extended directly instead of via repo workaround.

closes #6435
2026-07-09 10:22:30 +02:00
Mario Zechner dd1c690f36 fix(agent): add session context entry projection 2026-07-08 14:59:16 +02:00
ArcadiaLin 7198e78f99 feat(agent): support custom metadata in jsonl session headers (#6417)
Allow callers to attach an opaque JSON object to the session header so
application context needed to rebuild a harness (for example an agent
profile reference) is readable from the first line alone, without
scanning session entries. The field is optional and ignored by readers
that do not use it; fork inherits the source metadata unless overridden.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 11:18:43 +02:00
Armin Ronacher 351efc828b fix(agent): fail tool calls from length-truncated assistant messages (#6285)
* fix(ai,agent): stop salvaging malformed tool-call argument JSON

Finalized tool-call arguments must strict-parse (allowing only lossless
string-escape repair). When the streamed JSON is truncated or malformed,
the raw JSON is preserved on ToolCall.malformedArguments, arguments
become {}, and the agent loop refuses to execute the call with an error
tool result instead of running it with silently salvaged partial
arguments. Partial parsing is now only used for streaming previews.

* fix(agent): fail tool calls from length-truncated assistant messages

Reverts the malformed-arguments tracking approach in favor of handling
truncation in the agent loop: when an assistant message stops with
"length", all tool calls in it are potentially borked (streamed
arguments are salvage-parsed), so none are executed. Each gets an error
tool result telling the model to re-issue the call, and the loop
continues. No new fields on ToolCall and no provider changes.

fixes #6284
2026-07-07 14:30:31 +02:00
Armin Ronacher 8c0ccd14b3 fix(ai,agent,coding-agent): normalize null message content at ingestion boundaries (#6343)
The Message types require content to always be present, but untyped JS
extension tools, hand-built histories, and old or hand-edited session
files can violate that contract, crashing rendering, compaction, and
provider request conversion with 'content is not iterable'.

Normalize null/missing content to an empty array at the ingestion
boundaries instead of guarding every consumer:

- transformMessages (choke point before every provider request)
- createToolResultMessage in the agent loop
- session entry loading (message and custom_message entries)
- extension custom messages (sendCustomMessage, before_agent_start)
- message_end extension replacements

fixes #6259, fixes #6276
2026-07-06 20:47:08 +02:00
Armin Ronacher 1dac099022 fix(agent): derive short session entry ids from the uuidv7 random tail (closes #6242)
The uuidv7 prefix is timestamp-derived and nearly constant between calls, so slicing the first 8 chars degenerated short ids to full-UUID fallbacks. Regression from 80c918c2 which replaced randomUUID with uuidv7.
2026-07-05 23:35:53 +02:00
Armin Ronacher 478301342b test: use quiet dot reporters and show output only for failing tests
Switch vitest packages (ai, agent, coding-agent) to the dot reporter
with silent: passed-only so passing tests stay quiet while failing
tests still print their console output and full diffs. Add the
github-actions reporter on CI for inline annotations. Switch the tui
node:test runner to the dot reporter as well.
2026-07-05 23:17:17 +02:00
Armin Ronacher 035ea9c856 fix: remove redundant record guards 2026-07-05 18:55:09 +02:00
Vegard Stikbakke f58c115626 fix(coding-agent): serialize split-turn compaction summaries
closes #5536
2026-07-01 15:37:00 +02:00
Vegard Stikbakke 85b7c24741 fix(coding-agent): reject non-positive bash timeouts 2026-07-01 09:03:00 +02:00
Vegard Stikbakke cbcf4e04c3 fix(coding-agent): reject oversized bash timeouts
closes #6181
2026-07-01 08:49:31 +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 fd6659dd5d fix(coding-agent): preserve run prompt during tool refresh
closes #6162
2026-06-30 14:08:48 +02:00
Mat e547bb9f41 fix(coding-agent): refresh session state before next turn 2026-06-30 13:56:04 +02:00
Mario Zechner c29bbc0958 docs(agent): update models phase 9 plan 2026-06-24 14:46:13 +02:00
Armin Ronacher 8277bd6896 Add [Unreleased] section for next cycle 2026-06-23 23:45:39 +02:00
Armin Ronacher 0201806adf Release v0.80.2 2026-06-23 23:45:36 +02:00
Armin Ronacher 9096d5f9a6 docs: update changelog entries 2026-06-23 23:42:02 +02:00
Mario Zechner 49fbe6834f fix(ai): align api key credentials with auth json 2026-06-23 22:29:46 +02:00
Mario Zechner b377623435 Type name change 2026-06-23 22:00:03 +02:00
Armin Ronacher e00074358d Add [Unreleased] section for next cycle 2026-06-23 20:04:12 +02:00
Armin Ronacher 1c4a9ba7c8 Release v0.80.1 2026-06-23 20:04:09 +02:00
Armin Ronacher 86528dd9ee Add [Unreleased] section for next cycle 2026-06-23 19:30:35 +02:00
Armin Ronacher f08e968c83 Release v0.80.0 2026-06-23 19:30:32 +02:00
Armin Ronacher 526351d99a docs: audit unreleased changelogs 2026-06-23 19:25:26 +02:00
Mario Zechner cd95c2749f fix(ai): require OpenAI Responses terminal events 2026-06-23 16:35:45 +02:00
Mario Zechner 129eb460cd feat(ai): complete models runtime migration 2026-06-23 15:29:46 +02:00
Mario Zechner 7fedc3324e Merge pull request #5999 from haoqixu/fix-5996
fix(coding-agent): normalize session names
2026-06-23 15:15:52 +02:00
haoqixu e8ede14f5d fix(agent): normalize session names 2026-06-23 19:36:13 +08:00
Mario Zechner d2677a6314 docs(agent): mark sync models API complete 2026-06-22 15:04:16 +02:00
Mario Zechner abbd911693 Merge main into model-registry 2026-06-22 14:00:18 +02:00
Mario Zechner 717a8f958a fix(ai): revert selective pi-ai base entrypoints 2026-06-22 12:54:32 +02:00
Armin Ronacher 329dceb5f3 Add [Unreleased] section for next cycle 2026-06-22 11:14:46 +02:00
Armin Ronacher 8e1900666f Release v0.79.10 2026-06-22 11:14:43 +02:00
Armin Ronacher b4f31408b6 Add [Unreleased] section for next cycle 2026-06-20 22:15:40 +02:00
Armin Ronacher 615bf2f874 Release v0.79.9 2026-06-20 22:15:37 +02:00
Vegard Stikbakke 1287b69fe0 fix(coding-agent): run legacy WSL bash commands via stdin
closes #5893
2026-06-19 15:08:25 +02:00
Armin Ronacher 56b22768db Add [Unreleased] section for next cycle 2026-06-19 09:53:45 +02:00
Armin Ronacher 8eb9704b3e Release v0.79.8 2026-06-19 09:53:43 +02:00
Armin Ronacher 74677bbfbf docs: audit unreleased changelogs 2026-06-19 09:45:03 +02:00
Armin Ronacher ea65a51a15 fix: update vulnerable dependencies 2026-06-19 00:43:44 +02:00