Commit graph

5669 commits

Author SHA1 Message Date
Armin Ronacher
107d79f110 Release v0.85.0 2026-09-04 11:57:38 +02:00
Armin Ronacher
1148f7958c docs: audit unreleased changelogs 2026-09-04 11:28:00 +02:00
David Brailovsky
744a94d7d4 fix(coding-agent): use current Copilot model in registry test 2026-09-04 11:19:20 +02:00
David Brailovsky
ef41a24b39 fix(ai): keep Copilot tests aligned with current model catalog
Derive catalog-sensitive test IDs from generated models and update tool-call normalization coverage to GPT-5.5.
2026-09-04 11:15:20 +02:00
Armin Ronacher
2d41163332 fix(tui): make fullscreen transcript search scale linearly 2026-09-04 10:22:04 +02:00
Milosz Jankiewicz
0dbf2b76fe
fix(ai): remove Grok Build 0.1 from built-in xAI model catalog (#9093)
Add grok-build-0.1 to XAI_BUILTIN_EXCLUDED_MODEL_IDS so the generated xAI
catalog only lists grok-4.3, grok-4.5 and grok-4.6. Update the exclusion
test and drop the thinking-level assertion for the removed model.

Co-authored-by: Jaaneek <Jaaneek@users.noreply.github.com>
2026-09-04 10:18:26 +02:00
Stickman Charles
6aedd1066e
fix(coding-agent): download statically linked musl builds of fd and ripgrep on Linux (#9070) 2026-09-04 00:17:51 +02:00
Qiaochu Hu
c2d3dc55b0
fix(agent): map signal-killed processes to non-zero exit codes (#8994)
waitForChildProcess resolved null for the exit code when a child was killed by a signal (e.g. OOM killer), and exec mapped it with code ?? 0, so the bash tool treated killed commands as successful.

Track the termination signal and fall back to the shell convention of 128 + signal number (137 for SIGKILL) when no exit code is available.

fixes #8992

closes #8882
2026-09-04 00:06:16 +02:00
Cristina Poncela Cubeiro
457ae8c79c
feat(tui): alt mode scrollbar but prettier (#8801) 2026-09-04 00:05:47 +02:00
Armin Ronacher
79680533c6 feat(tui): add clickable jump-to-end indicator to fullscreen transcript
Adds TuiAltScreenOptions.scrollToEndIndicator, composited onto the last
row of the follow-end primary scroll view while it is scrolled up. A left
press on the label resumes end-following. Minimal rebuild of #9080.
2026-09-03 22:54:59 +02:00
Cristina Poncela Cubeiro
1d9787c11f
feat(tui): prettier Working... spinner (#8799) 2026-09-03 20:34:04 +02:00
Vegard Stikbakke
e44d75c20a fix(coding-agent): raise branch summary output cap
closes #8845
2026-09-03 15:14:51 +02:00
Cristina Poncela Cubeiro
7d399e7be8
feat(tui): search improvements (#8800) 2026-09-03 15:09:51 +02:00
Armin Ronacher
0fdec07ba3 fix(ai): preserve provider thinking level in frames 2026-09-03 14:26:49 +02:00
Armin Ronacher
8b5899dce2 fix(ai): restore stream compatibility 2026-09-03 13:53:57 +02:00
David Brailovsky
265a33393e fix(ai): add Qwen3.8 Flash to individual token plan
Derive Token Plan reasoning effort levels directly from models.dev metadata, retaining fallbacks for GLM-5 and GLM-5.1.

fixes #9021
2026-09-03 12:34:53 +02:00
Vegard Stikbakke
007c0be640 docs(tui): clarify standalone renderer configuration
Follow-up to c505f4c19.
2026-09-03 12:03:59 +02:00
Anton Geraschenko
c505f4c198
fix(tui): remove coding-agent config reads from pi-tui
Fixes #8698
2026-09-03 11:59:14 +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
David Brailovsky
64eeb82a46 fix(ai): process unterminated Codex SSE terminal events
Flush the SSE decoder at EOF and treat the residual buffer as a complete frame.

fixes #9047
2026-09-03 11:26:39 +02:00
Maximo Guk
55adba4f24
Replace the AI Gateway binding shim with a plain binding fetch (#8287)
createGatewayBindingFetch (0.84.2) translated requests from a gateway
HTTPS prefix into the AI binding's universal endpoint, building the
[{provider, endpoint, headers, query}] envelope by splicing the request
body into a JSON string. The gateway now serves its provider-native
passthrough over the binding at
/ai-gateway/gateways/{gateway}/{provider}/..., the HTTPS path minus the
account id, so a model can simply name that route as its baseUrl and
there is nothing left to translate.
2026-09-03 11:11:19 +02:00
Panoplos
22940a62f5
fix(ai): keep Baseten GLM-5.2 text-only (#8293) 2026-09-03 11:10:33 +02:00
Alexey Zaytsev
1d6dbf9e3d
fix(coding-agent): keep skills available with bash-only tools (#8552) 2026-09-03 11:08:26 +02:00
wutongyuonce
6f35de5b59
fix(coding-agent): isolate concurrent session shares (#8613) 2026-09-03 11:05:41 +02:00
wutongyuonce
c6b00676b8
fix(coding-agent): scan past non-EXIF APP1 segments (#8616) 2026-09-03 11:02:39 +02:00
Terminator666666
57e53b0d79
fix(coding-agent): resolve fd/rg release versions without the GitHub API (#8708)
The fd/ripgrep auto-download resolved the latest version through
api.github.com, which shares the anonymous API quota (60 requests/hour
per IP). Behind shared egress IPs (corporate proxies, CI runners, NAT)
that quota is permanently exhausted by unrelated traffic, so the
download failed with 'GitHub API error: 403' on every launch while the
actual release download endpoint would have worked fine.

Resolve the version from the /releases/latest web redirect instead: it
carries the tag in the Location header, is not subject to the API
quota, and lives on the same origin as the binary download itself. The
redirect body is discarded so the connection can be reused, and the
pinned fd version on darwin/x64 now skips the lookup entirely.

Also improve download failure diagnostics: status messages include the
error cause chain so transport errors surface their actionable detail
instead of a bare 'fetch failed', and HTTP download errors include the
failing URL.

Fixes #8594

Co-authored-by: Terminator666666 <Terminator666666@users.noreply.github.com>
2026-09-03 10:59:04 +02:00
Julien Barbay
2b768ba42c
feat(coding-agent): ingest external entries in in-memory sessions (#8980)
* feat(coding-agent): ingest external entries in in-memory sessions

SessionManager.inMemory() takes the entries to start from, so a session
held outside the filesystem can be resumed as it was stored.

Replaying through appendMessage/appendCompaction cannot do this: ids are
minted fresh, so every stored firstKeptEntryId, targetId and fromId has to
be remapped, timestamps are rewritten, and parentId always comes from the
current leaf, so a branched tree needs the original branch() choreography
reproduced call by call.

The entry-adoption half of _setSessionFile becomes _loadEntries, which the
constructor also uses when there are entries but no file. Entries carrying
a session header keep it; without one, the header comes from the options
and the entries become its body.

* fix(coding-agent): carry the stored version through restored entries

inMemory() took SessionEntry[], which excludes SessionHeader, so an
external store could not pass the header it saved and the header branch of
_loadEntries was unreachable through the public API. A restore therefore
always synthesised a current-version header, and the migration that ran
next read that header and skipped: a v2 session kept its hookMessage roles
forever.

Widening to FileEntry[] lets the stored header through, version included.
Migration moves inside the header branch, where a version exists to compare
against; without a header the entries are adopted as current-version, which
is the only thing they can mean.
2026-09-03 10:49:41 +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
Armin Ronacher
bf157122af fix(ai): remove unnecessary Chord dependency 2026-09-03 10:21:43 +02:00
David Brailovsky
9f74575f79 Merge remote-tracking branch 'origin/main' into dev 2026-09-03 09:59:09 +02:00
David Brailovsky
8c08d0645a Merge remote-tracking branch 'origin/main' into dev 2026-09-03 07:58:51 +00: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
Mario Zechner
4e69b0c280 feat(ai): preserve Anthropic per-turn thinking effort
Route eligible OpenRouter Claude models through the native Messages API and surface provider thinking-drop diagnostics.
2026-09-02 21:39:29 +02:00
Armin Ronacher
e7b47bd7de fix: resolve plugin and conformance tests from source 2026-09-02 20:40:35 +02:00
Mario Zechner
e26afb63a4 fix(agent): retain settled tools until placement 2026-09-02 17:53:25 +02:00
David Brailovsky
e266507b60 fix(coding-agent): remove duplicate auto retry event type
fixes #8783
2026-09-02 15:06:59 +02:00
David Brailovsky
e583b290a6 fix: remove misleading write byte counts
The write tools reported UTF-16 code units as bytes. Remove the count from success messages instead of scanning content again.

Closes #8979
2026-09-02 15:06:06 +02:00
Ramiz Wachtler
8d1b1178cd
docs(coding-agent): clarify session-scoped model/thinking-level changes (#9009)
- fixes #8976
2026-09-02 14:53:49 +02:00
David Brailovsky
1e4fbe3847 fix(ai): use completions API for all Fireworks GLM models
Route every GLM model through the OpenAI-compatible completions API.

Closes #8978
2026-09-02 14:34:16 +02:00
David Brailovsky
69afa10503 fix(ai): route GitHub Copilot Fable 5 through Anthropic Messages
closes #8961
2026-09-02 14:22:56 +02:00
AppleDannyClegg
256f63024d
feat(ai): add vllmPriority compat flag for vLLM scheduler priority (#9004)
OpenAI-compatible providers can now send vLLM's top-level 'priority'
request field (lower value = earlier handling, server default 0),
which matters when vLLM runs with --scheduling-policy priority and a
box serves both interactive and background/batch work: setting
vllmPriority on a background model defers its long prefills behind
interactive sessions.

- types.ts: OpenAICompletionsCompat.vllmPriority?: number (off by default)
- openai-completions.ts: resolved through getCompat, injected in buildParams
- model-config.ts: models.json schema accepts compat.vllmPriority
- test: priority sent when set, omitted otherwise

Co-authored-by: Daniel-Clegg <daniel.clegg@civica.co.uk>
2026-09-02 14:20:07 +02:00
Qiaochu Hu
ebc3744909
fix(agent): surface proxy stream EOF without terminal event as an error (#8997)
streamProxy dropped a final SSE event that was not newline-terminated
(the residual line buffer was never flushed after the read loop) and
called stream.end() without a result when no done/error event had been
seen, leaving EventStream.result() pending forever. Consumers like
agentLoop awaiting response.result() hung indefinitely when the server
closed the connection mid-response.

Flush the decoder and process the residual buffer after EOF, and push a
synthesized error event when the stream ended without a terminal event.

fixes #8996
2026-09-02 14:16:03 +02:00
Mario Zechner
6e8b9c8ea6 Handoff for tool settlemenet 2026-09-02 12:22:26 +02:00
Mario Zechner
7123410467 Merge branch 'main' into dev 2026-09-02 12:21:58 +02:00
David Brailovsky
96317e50b8 fix(ai): bump claude code user agent version 2026-09-02 09:37:37 +02:00
Vegard Stikbakke
23842b1e69 fix(coding-agent): tunnel proxied HTTP requests
closes #8134
2026-09-02 09:23:23 +02:00
Mario Zechner
d14d6b2232 fix(agent): finalize bounded shell output integration 2026-09-01 18:16:25 +02:00