Commit Graph
9374 Commits
Author SHA1 Message Date
can1357 984a97fa51 style: formatted evaluator test additions 2026-07-14 23:11:49 +02:00
can1357 f2b70eeede chore: normalized changelogs after landing farm fixes 2026-07-14 23:11:24 +02:00
can1357 1ca48393da Merge PR #5503: fix(session): land tree navigation on /skill: injection node (@roboomp) 2026-07-14 23:11:12 +02:00
can1357 ad396fb8fe Merge PR #5529: fix(tools): strip stray leading colon from tool paths (@roboomp) 2026-07-14 23:11:12 +02:00
can1357 5447312c5f Merge PR #5498: fix(tools): accept empty GitHub search date placeholders (@roboomp) 2026-07-14 23:11:12 +02:00
can1357 37b1263a26 Merge PR #5494: fix(eval): delegate Python URI reads to host resolver (@roboomp) 2026-07-14 23:11:12 +02:00
can1357 cda994a435 Merge PR #5504: fix(prompt): restore non-Linux CPU model metadata (@roboomp) 2026-07-14 23:11:11 +02:00
can1357 46e80058ca Merge PR #5440: fix(session): fall back to LLM compaction on manual /compact for text-only models (@roboomp) 2026-07-14 23:11:11 +02:00
can1357 966d467476 Merge PR #5495: fix(tui): guard DynamicBorder against uninitialized module-level theme (@roboomp) 2026-07-14 23:11:10 +02:00
can1357 7de519eabc Merge PR #5499: fix(plugins): preserve native CommonJS helper loading (@roboomp) 2026-07-14 23:11:10 +02:00
can1357 86e0fdf9c3 Merge PR #5492: fix(tui): hand editor tap state to agent hub on double-left open (@roboomp) 2026-07-14 23:11:10 +02:00
can1357 1121a0018d Merge PR #5516: fix(auth): route OSC 5522 paste into login prompts (@roboomp) 2026-07-14 23:11:09 +02:00
can1357 9837e1f88c Merge PR #5491: fix(models): preserve auto role thinking across restart (@roboomp) 2026-07-14 23:11:09 +02:00
can1357 f3a935c3d4 Merge PR #5511: fix(tui): anchor Kitty images through tmux (@roboomp) 2026-07-14 23:11:09 +02:00
can1357 a82e36955f test(agent): cover text-only model image replay 2026-07-14 23:11:09 +02:00
can1357 3a772de879 Merge PR #5518: fix(agent): strip images for non-vision models mid-session (@roboomp) 2026-07-14 23:11:08 +02:00
can1357 a3b4f28078 Merge PR #5506: fix(session): auto-retry bare "Request was aborted" error-stop turns (@roboomp) 2026-07-14 23:11:08 +02:00
can1357 5e8cc40fbe Merge PR #5514: fix(bash): abort isolated shells on cancellation (@roboomp) 2026-07-14 23:11:08 +02:00
can1357 55ad1ff1bc Merge PR #5505: fix(plugins): refresh stale Bun git cache before reinstall (@roboomp) 2026-07-14 23:11:07 +02:00
can1357 6cdefd83e0 Merge PR #5523: fix(coding-agent): accept silent advisor stops with output tokens (@roboomp) 2026-07-14 23:11:07 +02:00
can1357 b76f7aeecf fix(launch): scope batch validation to PTYs 2026-07-14 23:11:07 +02:00
can1357 330744bfeb Merge PR #5520: fix(launch): pass Windows PTY arguments directly (@roboomp) 2026-07-14 23:11:07 +02:00
can1357 69de4b7725 style: formatted history-protocol test imports 2026-07-14 22:59:35 +02:00
can1357 24a441e6b2 chore: normalized changelogs after landing farm fixes 2026-07-14 22:58:49 +02:00
can1357 6b381eb765 Merge PR #5451: fix(eval): honor timeout zero and classify session deadlines (@roboomp) 2026-07-14 22:58:49 +02:00
can1357 3663963b76 Merge PR #5466: fix(tools): gate generate_image behind setting and tool whitelist (@roboomp) 2026-07-14 22:58:48 +02:00
can1357 6f7b2483da fix(internal-urls): ignore non-directory artifact candidates 2026-07-14 22:58:48 +02:00
can1357 ba5c915777 Merge PR #5455: fix(internal-urls): serve history:// transcripts from disk fallback (@roboomp) 2026-07-14 22:58:48 +02:00
can1357 88ab942d9f Merge PR #5478: fix(web-search): stop Perplexity OAuth token leaking to the API-key endpoint (@roboomp) 2026-07-14 22:58:48 +02:00
can1357 1e1569d58e Merge PR #5465: fix(extensions): let tool_result rewrite thrown failure content (@roboomp) 2026-07-14 22:58:48 +02:00
can1357 6f8a3ab94a Merge PR #5458: fix(browser): bound headless browser close to unblock tab cleanup (@roboomp) 2026-07-14 22:58:47 +02:00
can1357 ebe79d6f53 fix(mcp): retain DCR metadata fallback 2026-07-14 22:58:47 +02:00
can1357 80f9329e31 Merge PR #5456: fix(mcp): preserve discovered registration endpoint (@roboomp) 2026-07-14 22:58:47 +02:00
can1357 77cdf1e753 Merge PR #5454: fix(tui): trigger internal-url autocomplete inside slash args (@roboomp) 2026-07-14 22:58:47 +02:00
can1357 413949ccf4 Merge PR #5450: fix(todo): signal removal intent so agent stops rebuilding cleared todos (@roboomp) 2026-07-14 22:58:47 +02:00
can1357 e755fcf983 Merge PR #5469: fix(tui): handle Kitty vim navigation sequences (@roboomp) 2026-07-14 22:58:46 +02:00
can1357 9f17927ee7 Merge PR #5467: fix(cli): flush config JSON output before exit (@roboomp) 2026-07-14 22:58:46 +02:00
can1357 c897f54a07 Merge PR #5459: fix(coding-agent): reject prose thinking session titles (@roboomp) 2026-07-14 22:58:46 +02:00
can1357 c8628d5416 Merge PR #5471: fix(coding-agent): route /guided-goal oneshot through Codex websocket transport (@roboomp) 2026-07-14 22:58:46 +02:00
can1357 52f0d3f9e6 fix(discovery): tolerate malformed plugin cwd 2026-07-14 22:58:46 +02:00
can1357 263eeead04 Merge PR #5481: fix(discovery): resolve relative plugin MCP command/cwd against config dir (@roboomp) 2026-07-14 22:58:45 +02:00
roboomp e0e24efaf6 fix(tools): strip stray leading colon from tool paths
Some models intermittently prefix an otherwise-valid path with a leading
`:` (e.g. `:/abs/path`, `:../rel`). read/edit/grep hard-failed because
resolveToCwd left the colon intact and resolution missed the real file.
The #4618 literal-preferring probe cannot recover it: the literal
`:/abs/path` does not exist on disk, so the peel proceeds to an empty
path.

Strip the mangled prefix in expandPath — the shared resolution funnel for
read (resolveReadPath), grep (resolveToolSearchScope), and edit
(resolvePlanPath) — mirroring the existing @-prefix normalization. The
lookahead only fires before `/`, `~/`, `./`, or `../`, so selector-shaped
tokens like `:raw` are untouched.

Fixes #5508
2026-07-14 20:41:45 +00:00
roboomp eef79705a6 fix(eval): passed js uri selectors separately
- Kept opaque MCP resource paths unchanged during JS pagination.
- Sent JS line ranges through the read tool selector field.
- Covered the shipped JS prelude and updated the changelog.

Fixes #5353
2026-07-14 20:31:58 +00:00
roboomp 1a4c195017 fix(coding-agent): accepted silent advisor stops with output tokens
The advisor runtime rejected every content-less stop completion as a
failed turn, so a deliberate silent review (the documented verifier
behavior) triggered retries and a spurious "unavailable" warning. Only
treat a content-less stop as a failure when it produced no output signal
(zero output and reasoning tokens), so a token-bearing silent stop counts
as a successful silent review.

Fixes #5493
2026-07-14 20:31:21 +00:00
roboomp 9b8ec997b2 fix(coding-agent): reused one codex side session per guided-goal interview
- Minted the guided-goal Codex side session id once per interview in handleGuidedGoalCommand and threaded it through every turn via GuidedGoalTurnOptions.sideSessionId, so a multi-question interview shares a single websocket-only Codex socket instead of opening a fresh one each turn (which could trip websocket_connection_limit_reached and fall back to the rejected SSE path).
- Exported newGuidedGoalSessionId; runGuidedGoalTurn mints its own id only when no side session id is supplied (one-shot callers, tests).
- Added regression coverage asserting the supplied side session id is reused across turns.

Fixes #5304
2026-07-14 20:25:16 +00:00
roboomp 1be025bb72 fix(cursor): propagated returned tool error status
Cursor exec bridges derived failure state only from thrown exceptions, so structured AgentToolResult.isError failures were emitted as successes. Propagate the returned flag through standard and streaming shell execution, with regression coverage for both paths.
2026-07-14 20:20:54 +00:00
roboomp 2bfdf0ab07 fix(eval): passed uri selectors separately
- Kept opaque MCP resource paths unchanged during pagination.
- Sent line ranges through the read tool selector field.
- Covered paged artifact and MCP reads in the Python prelude test.

Fixes #5353
2026-07-14 20:20:42 +00:00
roboomp 90c4726bae fix(launch): passed Windows PTY arguments directly
Added a direct-argv PTY entry point and used it for Windows launch sessions so portable-pty no longer re-quotes cmd.exe command text.

Rejected direct .bat and .cmd applications with guidance to use cmd.exe /c.

Fixes #5416
2026-07-14 20:17:03 +00:00
roboomp c9032e57b5 fix(session): keep explicit /compact snapcompact failing on text-only models
wantsSnapcompact is true for both the default strategy and an explicit
/compact snapcompact mode override. The prior fix downgraded both to LLM
compaction, which silently shipped the transcript to a provider for users
who deliberately requested the local-only no-LLM archive path. Only the
default-configured strategy now falls back; explicit snapcompact keeps
failing locally. Added a regression test for the explicit path.

Fixes #5064
2026-07-14 20:12:24 +00:00
roboomp 00c8e921f6 fix(agent): strip images for non-vision models mid-session
Switching from a vision model to a text-only model kept replaying
historical image content blocks to the new provider, which rejected them
with invalid_argument. The convertToLlm wrapper in sdk.ts only filtered
images when images.blockImages was set, never by model capability, so
the outbound request carried image blocks the active model could not
accept.

Add replaceLlmImagesWithText() to scrub image blocks out of the
already-converted LLM message view, and call it from the sdk wrapper
when the active model's input lacks "image". History on disk keeps its
images; only the provider request is scrubbed, and the check reads the
active model dynamically so a /model switch takes effect next turn.

Fixes #5400
2026-07-14 20:11:25 +00:00