Commit graph

157 commits

Author SHA1 Message Date
Vegard Stikbakke
46bde88a1c feat(coding-agent): support per-model compaction token budgets
Closes #8133
2026-09-10 08:37:20 +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
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
Ramiz Wachtler
1f78cea7ad
fix(coding-agent): allow extensions to stream from custom providers (#9272)
- fixes #8964
2026-09-07 12:16:12 +02:00
yaogangqiang
e687434a60
fix(coding-agent): reject tree navigation during compaction (#9179)
Fixes #9178
2026-09-07 10:32:10 +02:00
Armin Ronacher
9767ba275f fix(coding-agent): select Radius models after catalog discovery 2026-09-06 00:30:17 +02:00
David Brailovsky
3316c4e35b fix: repair Baseten and coding-agent test checks
Drop the misleading Baseten default-model test and remove a duplicate coding-agent mock declaration rejected by Biome.
2026-09-03 11:40:37 +02:00
wutongyuonce
1a773c8e7a
fix(coding-agent): avoid overwriting imported sessions (#8985) 2026-09-03 10:48:18 +02:00
yaogangqiang
2631b25c34
fix(coding-agent): preserve compaction boundary when forking (#8990)
Fixes #8989
2026-09-03 10:47:40 +02:00
xu0o0
f0592205f8
feat(tui): render relational algebra join symbols & fix(coding-agent): type error in test (#9050)
* feat(tui): render relational algebra join symbols

* fix(coding-agent): update interactive mode test fixture
2026-09-03 10:45:02 +02:00
David Brailovsky
f41f80466e fix(coding-agent): update interactive mode test fixture 2026-09-03 09:53:14 +02:00
David Brailovsky
bea67d90d1 fix(coding-agent): cancel compaction on session abort
Include compaction and branch summarization in session idle tracking so abort waits for cancellation to settle.\n\nfixes #8920
2026-09-03 09:41:55 +02:00
Ramiz Wachtler
f2a6227899
feat(coding-agent): adjust TUI selections in thinking-mode, models and scoped models (#8900)
* fix(coding-agent): keep selector status markers visible

- place status markers before labels
- strike unavailable scoped models and update tests

* fix(coding-agent): align scoped model toggle behavior

- show checks for the all-enabled state
- toggle individual models consistently and add coverage

* docs(coding-agent): add changelog entry

* fix(coding-agent): keep trust marker visible while browsing

- move the saved marker before the trust option
- update tests and changelog

* fix(coding-agent): mark per-model thinking overrides

- add the leading level marker
- update tests and changelog
2026-09-01 11:02:53 +02:00
yaogangqiang
afda4d6202
fix(agent): stop prepared tools after preflight abort (#8936)
fixes #8935

Co-authored-by: yaogangqiang <yaogangqiang@kanyun.com>
2026-09-01 11:00:51 +02:00
yaogangqiang
56c6fb33c4
fix(coding-agent): settle active turn before in-memory fork (#8937)
Fixes #8724

Co-authored-by: yaogangqiang <yaogangqiang@kanyun.com>
2026-09-01 10:58:20 +02:00
David Brailovsky
e54d45d119
docs(coding-agent): remove issue-specific regression test placement rule (#8775) 2026-08-28 16:39:28 +02:00
David Brailovsky
56700d42ed
fix(coding-agent): compact before post-tool model requests (#8782)
Run next-turn preparation only when the agent loop continues, allowing threshold compaction before the next provider request. Restore interactive progress when the same run resumes.

Closes #6879

Important to notice:
this changes when prepareNextTurn & prepareNextTurnWithContext are invoked:
the now run only when a next turn actually happens, and after shouldStopAfterTurn.
2026-08-28 13:40:59 +02:00
Vegard Stikbakke
b07e17faa2 fix(coding-agent): preserve partial Bash output when toggling thinking
closes #8611
2026-08-26 14:27:21 +02:00
Vegard Stikbakke
7af2d27dce fix(coding-agent): prevent Windows taskkill spawn crashes
closes #6596
2026-08-26 10:33:45 +02:00
Mario Zechner
240eb29c41 fix(coding-agent): append run-time custom messages after the turn's tool results
Extension messages sent with triggerTurn: false while the agent was
running were pushed into agent state and the session tree immediately,
landing between an assistant tool call and its result. Providers that
validate message order reject the replayed history. Queue them during
the run and append at turn_end, mirroring recordBashResult.

closes #8537
2026-08-25 12:14:10 +02:00
Vegard Stikbakke
97fa14e39c fix(coding-agent): reject truncated compaction summaries closes #7048 2026-08-24 13:08:30 +02:00
Armin Ronacher
80e62761f7
feat(coding-agent): add optional PowerShell tool (#8512) 2026-08-24 12:27:03 +02:00
yaogangqiang
a69bef789b
fix(coding-agent): discard failed extension factory state (#8424) 2026-08-23 12:39:42 +02:00
Armin Ronacher
74786a748f fix(coding-agent): support -- end-of-options, closes #7269 2026-08-22 23:16:40 +02:00
Cristina Poncela Cubeiro
5133c9284f chore(settings-selector): get rid of --default and global model
ctrl+s is enough, there goes my joy
2026-08-20 13:30:47 +02:00
Cristina Poncela Cubeiro
2ff8ba6223
fix(coding-agent): keep model and thinking level changes session scoped (#8356)
* fix(coding-agent): keep model and thinking level changes session scoped

* fix(coding-agent): persist requested default thinking level

* feat: --default arg to persist

* fix

* fix(coding-agent): keep model and thinking level changes session scoped

* fix: make default thinking level per model show list of models

* cleanup export
2026-08-19 16:48:29 +02:00
Armin Ronacher
1355cd36e0 fix(coding-agent): normalize UTF-8 BOMs in text inputs
closes #8337
2026-08-19 14:11:02 +02:00
Vegard Stikbakke
4495469a5e fix(coding-agent): compact without provider usage
closes #8328
2026-08-19 13:44:22 +02:00
Vegard Stikbakke
678f0af30d fix(coding-agent): show startup diagnostics in TUI
fixes #7829
2026-08-19 13:07:57 +02:00
Christian Klotz
830a0a59e9
fix(coding-agent): expose tool metadata at stream start (#7953)
* fix(coding-agent): expose tool metadata at stream start

* fix(coding-agent): centralize message update serialization
2026-08-19 12:24:30 +02:00
Mario Zechner
c061328981 fix(coding-agent): load extensions in Node SEA hosts, closes #8237 2026-08-18 16:48:18 +02:00
Vegard Stikbakke
ef8dc7385b feat(coding-agent): centralize compaction summary requests 2026-08-18 14:19:01 +02:00
Vegard Stikbakke
8af7690c4f fix(coding-agent): skip trusted subagent prompts
closes #8261
2026-08-18 09:26:07 +02:00
Armin Ronacher
b82a374c7d fix(coding-agent): reduce redundant slow tests 2026-08-17 22:57:18 +02:00
Cristina Poncela Cubeiro
a6b1dbceb1
fix(extensions): emit compaction failed for extensions (#8241)
* fix(extensions): emit compaction failed

* changelog yeet
2026-08-17 13:10:08 +02:00
Vegard Stikbakke
c7c763f5c4 fix(coding-agent): clarify truncated recovery failure
closes #8130
2026-08-17 11:03:07 +02:00
Armin Ronacher
7d8c11d37f fix(coding-agent): share concurrent model catalog refreshes 2026-08-13 09:43:36 +02:00
Christian Klotz
c93ea6ccf0
fix(coding-agent): preserve usage in streaming events (#7982)
Fixes #7911
2026-08-13 00:32:26 +03:00
Duncan Ogilvie
b987ead358
feat(agent): expose expandPromptTemplates in sendUserMessage (#7857) 2026-08-11 11:14:28 +02:00
Armin Ronacher
666d8972ff fix(coding-agent): preserve TUI wrapper routing (closes #7731) 2026-08-07 00:40:44 +02:00
muyiyr
1eb988cfe8
feat(agent): allow blocked tool calls to terminate (#7715)
Closes #5998
2026-08-06 17:14:48 +02:00
Ted
6ca423447f
event bus leak fix (#7656) 2026-08-05 22:23:44 +02:00
Armin Ronacher
3852cb2b81 fix(coding-agent): send prompts queued during compaction 2026-08-05 21:20:44 +02:00
Vegard Stikbakke
97f0ccdd96 fix(coding-agent): recursively merge nested settings, closes #7572 2026-08-04 13:04:02 +02:00
Vegard Stikbakke
18d65de623 fix(coding-agent): preserve Copilot summary endpoint
closes #6768
2026-08-04 11:00:30 +02:00
Petr Houška
523b5a4917
fix(coding-agent): normalize find root results (#7569)
Relativize absolute find results with path.relative() instead of slicing
at searchPath.length + 1. path.resolve() keeps the trailing separator for
root paths (POSIX / and Windows bare drive roots like I:\), so the slice
dropped the first character of the first path segment. Preserve directory
markers using platform-aware separators so Windows paths do not gain "//"
and valid POSIX backslashes remain unchanged.

This also avoids treating sibling paths with a shared prefix as children.
Relative results returned by custom glob operations now pass through
unchanged instead of being resolved against process.cwd(), which produced
invalid paths whenever cwd differed from the search path.

Fixes #6104
2026-08-04 00:05:48 +02:00
Mario Zechner
fed6009cc9 fix(coding-agent): make model refresh cancellation caller-owned
Add generation-safe catalog publication, cancellable auth and storage operations, locally consistent credential mutations, and cache-first interactive model flows.
2026-08-04 00:03:52 +02:00
muyiyr
da66636cc4
fix(coding-agent): discover sessions through symlinked directories (#7552)
fixes #7497
2026-08-03 18:34:12 +02:00
Christian Klotz
a4475344fb
fix(coding-agent): make JSON streaming output linear (#7394)
Fixes #7290

Co-authored-by: Mario Zechner <badlogicgames@gmail.com>
2026-08-03 18:33:22 +02:00
David Brailovsky
32850ef7c5
fix(coding-agent): resume after context-limited length stops (#7540)
* fix(coding-agent): resume after context-limited length stops

Treat length stops as context overflow when prompt usage is within 1% of
Pi's configured context window. Include cache-write tokens in that usage
and allow non-zero output because OpenAI may emit reasoning tokens before
returning an incomplete response.

After compaction, remove any retryable error or truncated-length assistant
message restored from persisted session history so the interrupted agent
turn can continue.

This is specifically for handling this case for openai models:
https://developers.openai.com/api/docs/guides/reasoning

> If the generated tokens reach the context window limit or the max_output_tokens value you’ve set, you’ll receive a response with a status of incomplete and incomplete_details with reason set to max_output_tokens. This might occur before any visible output tokens are produced, meaning you could incur costs for input and reasoning tokens without receiving a visible response.

This detection currently assumes the reported prompt usage is within 1% of
the context window configured in Pi. Its reliability therefore depends on
Pi's model contextWindow metadata matching the provider's effective limit.

Maybe we should consider treating OpenAI incomplete responses as requiring compaction
regardless of the local context-window estimate?

fixes #7020

* fix(coding-agent): recover truncated responses after compaction

Classify length stops by comparing provider-reported output usage with the model's intended output limit. Compact and retry once when generation ends below that limit, avoiding unreliable context-window estimates while preserving genuine max-output stops.

Normalize OpenAI Responses incomplete reasons so only max_output_tokens is treated as a length stop. Preserve qualified provider reasons for diagnostics, surface other reasons as errors, and use neutral truncation wording in the TUI.
2026-08-03 18:07:53 +02:00