Commit Graph
5015 Commits
Author SHA1 Message Date
can1357 a9c038818d feat(tools): removed separate selector args from read and grep APIs
- Removed `selector`/`sel` arguments from read and grep tool schemas and related execution arg handling.
- Reworked read and grep path processing to parse line selectors from `path` suffixes instead of separate fields, including inline range propagation.
- Updated delegation and execution call paths (including JS/Python preludes and executor tests) to pass selectors embedded in `path`.
- Updated read/grep prompt docs and changelog for the breaking inline-selector API, and removed obsolete selector-specific tests and expectations.
2026-07-15 00:04:02 +02:00
can1357 0a79dba7f5 test(coding-agent): adapted plugin-install and loader-accent tests to landed behavior changes
- plugin-install-validation mocks now answer the bun pm cache probe that refreshBunGitCache issues before bun update on git re-installs.
- working-accent tests render the loader before asserting accent computation counts: colorizers run lazily at render time since the loader layout cache landed.
2026-07-14 23:43:01 +02:00
can1357 62d0377780 test: hardened dynamic-border and plugin-install tests for full-suite runs 2026-07-14 23:19:45 +02:00
can1357 053272e4e1 fix(test): typed nonvision model-switch content flattening 2026-07-14 23:14:05 +02:00
can1357 984a97fa51 style: formatted evaluator test additions 2026-07-14 23:11:49 +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 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 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 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 69de4b7725 style: formatted history-protocol test imports 2026-07-14 22:59:35 +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 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 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 e49638ddac fix(auth): routed enhanced paste into login prompts
Forwarded OSC 5522 text from the focused login dialog to its credential input and added regression coverage for direct API-key prompts.

Fixes #5394
2026-07-14 20:06:14 +00:00
roboomp a9e6e4e67e fix(bash): aborted isolated shells on cancellation
Route overlapping executions through owned Shell instances so timeout and interrupt paths can explicitly abort native child-process cleanup.

Fixes #5389
2026-07-14 19:57:59 +00:00
roboomp d1bcd5812b fix(tui): anchored kitty images through tmux
- Wrapped every Kitty graphics APC for tmux passthrough, preserved quiet mode across chunks, and enabled placeholder placement when Kitty is explicitly forced.

- Routed Agent Hub transcript images through the shared image budget and terminal image setting.

Fixes #5381
2026-07-14 19:53:12 +00:00
roboomp 5e71fac653 fix(session): retried bare Request was aborted error-stop turns
A stalled or dropped provider stream that surfaces as stopReason:"error"
carrying the bare "Request was aborted" sentinel fell through both retry
gates: #isRetryableReasonlessAbort required stopReason:"aborted", and
#isRetryableError's classifier returns no retriable kinds for the generic
sentinel. The turn died immediately despite retry.enabled.

- Relaxed #isRetryableReasonlessAbort to accept an empty generic-abort
  sentinel turn under stopReason "aborted" or "error", tagging it Abort so
  #handleRetryableError retries it without model fallback.
- Kept the deliberate-abort guards intact: user interrupts and silent aborts
  carry their own markers (not the generic sentinel), and #abortInProgress /
  #isDisposed / #streamingEditAbortTriggered still settle without retry.
- Rewrote the stale fallback test that froze the buggy no-retry behavior to
  assert retry-and-recover for the error-stop sentinel.

Fixes #5375
2026-07-14 19:39:24 +00:00
roboomp 2439f77e70 fix(plugins): refreshed stale bun git cache before reinstall
Fetched current heads and tags into Bun's matching cached bare clone before running bun update.

Added an isolated HTTP git regression covering a moved branch with a stale cache.

Fixes #5401
2026-07-14 19:37:06 +00:00
roboomp 501c3592be fix(session): land tree navigation on /skill: injection node
navigateTree() treated every custom_message entry as a re-editable user
turn, setting the leaf to the injection's parent and dumping the expanded
skill body into the editor. A /skill:<name> invocation is persisted as a
skill-prompt custom_message, so selecting it in /tree dropped the skill off
the active branch. Skip the parent-leaf/editor-prefill path for
skill-prompt entries so the leaf lands on the injection node itself.

Fixes #5374
2026-07-14 19:27:04 +00:00
roboomp 7881fce976 fix(plugins): preserved native commonjs helper loading
Kept synchronous require() targets on Bun’s native loader while retaining hooks for native-addon rewrites.

Added regression coverage for ESM extensions loading CommonJS helper files.

Fixes #5373
2026-07-14 19:22:00 +00:00
roboomp de72e15fa8 fix(tools): accepted empty GitHub search date placeholders
Normalized optional since and until values before enforcing code-search date restrictions.

Covered empty placeholders, real date bounds, and successful validated searches.

Fixes #5370
2026-07-14 19:19:09 +00:00
roboomp 52f9e41304 fix(tui): hand editor tap state to agent hub on double-left open
The empty-editor left-left gesture opens the Agent Hub whenever persisted
or parked subagents exist (intended since f3e372e7b), but the hub's own
close detector starts fresh at 0 with no handoff from the editor's
double-tap detector. The two taps that opened the hub were consumed by the
editor, so a single subsequent left did nothing and the user had to press
left-left again to escape while input and hotkeys stayed disabled.

Thread an armCloseTap option from the gesture through showAgentHub to the
new AgentHubOverlayComponent.armCloseTap(), which seeds the table's
#lastLeftTap so one more left (within the tap window) dismisses the hub.

Fixes #4780
2026-07-14 19:07:04 +00:00
roboomp 06095c1031 fix(models): cleared stale thinking on auto role assignment
- Persisted an explicit inherit override when auto replaces a role's concrete reasoning level.
- Covered the Model Hub DEFAULT assignment flow with a regression test.

Fixes #5326
2026-07-14 19:04:12 +00:00