Commit Graph

3479 Commits

Author SHA1 Message Date
can1357 f5476d25b4 fix(coding-agent): stop anchoring auto-continue prompt on stale 'Next Steps'
The autoContinue post-compaction prompt echoed the summary's '## Next
Steps' heading, but that section is generated only from the compacted
tail; the kept ~20k recent tokens are not fed to the summarizer. When
the user pivoted within the kept window, 'Continue if you have next
steps.' anchored the model on the now-outdated plan instead of the
latest intent.

Move the prompt to prompts/system/auto-continue.md (per AGENTS.md
no-inline-prompts rule) and rewrite it to direct the model to re-read
the kept recent messages and follow the user's most recent request,
explicitly allowing it to stop when nothing remains.

Fixes #840
2026-04-30 04:51:19 +02:00
can1357 a2f508faac fix(coding-agent): resolve junctions/symlinks when classifying omp update target
isPathInDirectory only normalized strings via path.resolve, so on Windows
when Bun is installed via Scoop (~/.bun is a junction to scoop\persist\
Oven-sh.Bun\.bun) the omp path from $which and the bunBinDir from
'bun pm bin -g' compared as different directories, causing 'omp update'
to take the binary-swap path instead of 'bun install -g' and fail with
EPERM unlinking omp.exe.bak (Bun has the running exe open). Layer
fs.realpathSync.native on top of the existing lexical guard, resolving
the file's parent dir so non-existent target paths still fall through.

Fixes #845
2026-04-30 04:41:36 +02:00
Can Bölük 74b828e42e Merge pull request #833 from HabibPro1999/feat/provider-response-hook
Add provider response extension hook
2026-04-30 03:57:45 +02:00
HabibPro1999 e069ec0a8f feat(coding-agent): add provider response hook 2026-04-30 03:52:52 +02:00
can1357 fd44728d6e fix(coding-agent/session): resolved local:// files for streaming edit cache operations
- Added a shared session path resolver that maps local:// URLs through local-protocol options, skips other internal schemes, and returns an absolute filesystem path for real files.
- Updated streaming-edit pre-cache and post-edit cache invalidation to use the shared resolver, preventing internal-scheme assertions while keeping filesystem-based flow for local plan files.
- Extended streaming-edit tests to confirm local:// plan edits complete without panicking and that auto-generated checks receive resolved absolute paths.
2026-04-30 03:48:36 +02:00
can1357 90fabf6d4f feat(coding-agent): added batch PR handling to pr_view and pr_diff
- Added support for batch PR operations by accepting `pr` as string or array and dropping `worktree` input.
- Updated `pr_view` and `pr_diff` to normalize PR IDs, process multiple PRs in parallel, and emit combined summaries.
- Refactored checkout into `checkoutPullRequest`, added repo-locking, fixed worktree paths, and summary metadata outputs.
- Updated `remote.add` handling with URL-aware idempotency and per-repo queueing for serialized git mutations.
- Added temp-home test scaffolding and expanded tests for batched PR flows and remote add conflict/no-op cases.
2026-04-30 03:48:25 +02:00
can1357 e46b32133e refactor(tui): replaced hand-rolled LRU map with lru-cache package
- Removed custom delete-then-reinsert Map implementation.
- Added lru-cache dependency and switched to LRUCache from lru-cache/raw.
2026-04-30 03:45:55 +02:00
Can Bölük ada51dfc49 Merge pull request #819 from metaphorics/fix/precache-local-url-panic
fix(coding-agent): skip streaming pre-cache for internal-scheme URLs
2026-04-30 03:40:44 +02:00
Can Bölük 55aab2815a Merge pull request #821 from metaphorics/perf/sessiontree-dedupe-context-build
perf(coding-agent): dedupe buildSessionContext walk on session-tree navigation
2026-04-30 03:40:20 +02:00
Can Bölük 57e912e462 Merge pull request #822 from metaphorics/perf/markdown-global-render-cache
perf(tui): module-level LRU for Markdown render cache
2026-04-30 03:39:59 +02:00
Can Bölük 103baacb7d Merge pull request #824 from mouyase/feat/searxng-basic-auth
feat(coding-agent/web): support SearXNG Basic auth
2026-04-30 03:35:00 +02:00
can1357 b6bcdbf6f1 test(coding-agent): align task.simple description assertions with compressed prompt
The task description prompt was compressed in c6cab807d — the explicit 'Current input mode' and 'Every assignment must stand on its own.' phrasings are gone. Replace those literal-string assertions with checks against the rendered mode-dependent content that actually differentiates the modes ('context` or `assignment`' for schema-free, 'each `assignment`' for independent). Mode-driven schema differences remain covered by the surrounding parameter-bullet assertions.
2026-04-30 03:05:21 +02:00
can1357 49e62f117f chore: bump version to 14.5.9 2026-04-30 02:50:53 +02:00
can1357 c6cab807d5 feat: compressed prompts slightly 2026-04-30 02:50:42 +02:00
can1357 ae3417fc3b refactor(coding-agent/tools): simplified debug schema metadata definitions
- Removed example and verbose description metadata from many debug tool schema properties while preserving field types and names.
- Simplified Enum declarations for `action` and `access_type` by using direct enum lists.
- Normalized several numeric and string field definitions in the schema without changing parameter names.
2026-04-30 02:38:27 +02:00
can1357 1f2c3de38f feat(coding-agent/tools): limited recipe prompt tasks to first 20 entries
- Added a PROMPT_TASK_LIMIT constant set to 20 in the recipe runner model.
- Updated buildPromptModel to include only the first 20 tasks from each runner when generating prompt tasks.
- Added an optional hiddenTaskCount field to PromptRunnerModel to represent truncated tasks.
2026-04-30 02:38:06 +02:00
can1357 f8be2ceda5 feat(coding-agent): added /context command flow for interactive dispatch
- Added a `/context` slash command flow from registry to interactive-mode command dispatch.
- Added `handleContextCommand()` to the mode context interface and command-controller wiring.
- Added context usage breakdown utilities, cell allocation, and 20x10 usage rendering for token categories.
- Reworked compaction token estimation to use tokenizer counts, role aggregation, image token estimates, and fallback handling.
- Exported `resolveThresholdTokens()` as a public compaction helper.
2026-04-30 02:26:04 +02:00
can1357 863560ffb6 fix(coding-agent/edit): added atom range-repair and multi-section preflight checks
- Allowed bare `LidA..LidB` to recover a missing-range-delete typo and accepted `|` as a legacy range replacement separator while validating ranges and replacement text.
- Enabled indented hashline statements to parse as replacement edits and added a preflight pass that validates all atom sections before any file write occurs.
- Updated hash-mismatch messaging, prompt wording, and tests to reflect hash-only rebase candidates and the new range/section behaviors.
2026-04-30 00:43:27 +02:00
can1357 222e1cd348 feat(edit): enabled Lid= and LidA..LidB replacements to support backslash continuation
- Updated the Atom grammar to parse replacement blocks via a set block rule that no longer targets range replacements only.
- Extended continuation preprocessing to allow backslash lines after single-line replace operations (including legacy `@` and `|` forms) while preserving the active-replacement check.
- Added tests and prompt documentation for single-line continuation cases and for rejection of backslash-like text outside an active replacement.
2026-04-30 00:05:37 +02:00
can1357 c124c74b5d fix(pi-natives/shell): ensured OK output for successful empty minimization
- Added `with_text` to keep minimized output byte counters consistent when replacing output text.
- Wrapped successful pipeline and overlay minimizer results with a post-step that emits `OK\n` when the transform empties output on success.
- Added tests to confirm successful empty-output minimization becomes `OK\n` and failures keep empty output.
2026-04-30 00:01:46 +02:00
can1357 47dab9ee97 feat: added atom-mode Lid range edits and hashline shifted-hash recovery
- Added atom edit support for Lid ranges, before-anchor inserts, and no-op Lid=TEXT success handling.
- Expanded hashline recovery to scan shifted hashes, match unique alternates, and emit ±5 anchor-shift hints.
- Added edit failure categorization with per-category counts, percentages, and detailed report lines.
- Added regression coverage for shifted-hash recovery, range continuation, cursor shorthand, and split-file atom ops.
2026-04-29 23:51:22 +02:00
can1357 d2eec2e1d6 feat(coding-agent/tools): added per-task working directories to recipe command resolution
- Resolved recipe operations now return a command plus optional working directory, and the shell tool path forwards both values when executing.
- Updated the package runner to assign task-local `cwd` entries for workspace scripts instead of embedding workspace command prefixes.
- Adjusted renderer wiring and tests to use the new `cwdFromOp` helper and assert task object shapes with preserved `cwd` values.
2026-04-29 23:47:47 +02:00
can1357 cb2119ef4d feat(coding-agent/lsp): added symbol occurrence selectors via #N suffix
- Parsed symbol occurrences inline via a new `name#N` symbol spec and defaulted missing occurrences to 1.
- Updated LSP symbol column resolution to derive occurrence from the symbol spec, removing the separate occurrence argument.
- Synchronized prompts, tool schema rendering, and regression tests to document and verify `#N` occurrence selection instead of a standalone occurrence field.
2026-04-29 23:37:39 +02:00
can1357 afb5f1f8a0 refactor(coding-agent/tools): renamed run_command tool to recipe across coding-agent tools
- Updated the tool configuration key and labels from runCommand to recipe, including its settings UI schema.
- Renamed the run_command tool implementation, prompts, and test wiring to recipe and updated tool registry and renderer registrations.
- Adjusted auto-included tool behavior and availability checks to use the recipe name and recipe.enabled setting.
2026-04-29 21:54:14 +02:00
can1357 0b3c03189b feat(coding-agent/modes): enabled /loop to use the next user prompt for repeating iterations
- Updated loop command handling to toggle `/loop` without a prompt argument and prompt for the next user input to start repeating.
- Stored each user-submitted prompt as the active loop prompt while loop mode is enabled so iterations auto-resubmit that input after each yield.
- Introduced `pauseLoop` behavior to clear the captured loop prompt and cancel pending auto-submit when Escape is pressed, while `handleLoopCommand` now no longer disables mode automatically with arguments.
2026-04-29 21:42:03 +02:00
can1357 a188651f63 fix(coding-agent/session): skipped empty thinking entries when formatting session dumps
- Updated `formatSessionDumpText` to skip `thinking` entries with empty or whitespace-only content.
- Prevented empty `<thinking>` sections from being emitted in session dump output.
2026-04-29 20:43:29 +02:00
Can Bölük 6924cf67b8 fix(coding-agent): swapped atom cursor marker semantics for ^ and $
- Reversed atom mode parsing of cursor anchors so "^" now resolved to BOF and "$" to EOF.
- Updated the atom command documentation and examples to reflect the corrected BOF/EOF markers.
- Adjusted parser tests to expect prepend via "^" and append via "$" with corresponding cursor kinds.
2026-04-29 20:18:27 +02:00
can1357 e019c6aa93 chore: bump version to 14.5.8 2026-04-29 19:42:54 +02:00
can1357 5cd1f361c9 fix(coding-agent/tools): kept root package scripts un-namespaced in runner
- Root package tasks were set to use `namespaced: false` when collected.
- Updated the workspace test to expect `root` instead of `root-app/root` in the tool description.
- Added an assertion that executing `op: "root"` returns root output text directly.
2026-04-29 19:41:20 +02:00
can1357 65507f343e fix(coding-agent/modes): preserved editor drafts for local message_start deliveries
- Tracked locally submitted user signatures for both optimistic and streamed-queue submissions in interactive-mode context state.
- Updated user message_start handling to avoid re-clearing the editor and re-adding chat for locally originated messages.
- Cleared consumed local signatures on queued-message restore and added tests for queued, external, and optimistic message_start editor behavior.
2026-04-29 19:39:26 +02:00
can1357 4ed18a97cc feat(tools): introduced run_command tool API with op-based task routing
- Renamed legacy `just` tool/config wiring to `run_command` and `runCommand.enabled`, replacing the old `just` prompt.
- Added `RunCommandTool` plus prompt and renderer registration so clients use the new `run_command` API.
- Implemented `op`-based runner/task resolution with new runner metadata for Just, Package, Cargo, Make, and Task with error handling.
- Refactored Bash shell rendering helpers and added run-command tests for detection and execution routing behavior.
2026-04-29 19:38:57 +02:00
can1357 40971d9675 feat(coding-agent): marked custom Anthropic models as OAuth-shaped by default
- Added an `isOAuth` model flag and passed it through Anthropic stream calls to force OAuth-shaped request options.
- Extended model-registry config handling with an `auth: oauth` mode and default `isOAuth` resolution for `anthropic-messages` providers while allowing explicit `apiKey` auth to remain unset.
- Added tests covering OAuth defaults and opt-outs for Anthropic and non-Anthropic custom providers.
2026-04-29 19:07:53 +02:00
can1357 e097ad7dba feat(coding-agent/tools): added just tool support for project recipe execution
- Added a new `just` tool that validates availability of a `just` binary, loads a local justfile, and executes user-specified recipes.
- Registered and exposed `JustTool` through exports, the builtin tool map, and availability checks controlled by `just.enabled` setting.
- Updated tool selection to auto-include `just` when `bash` is requested and tool settings allow it.
2026-04-29 18:57:37 +02:00
can1357 2965efac70 feat(coding-agent): added configurable loop mode actions for /loop iterations
- Added a new `loop.mode` enum setting and UI option entries for prompt, compact, and reset behaviors.
- Updated interactive mode's loop auto-submit flow to execute selected compact or reset actions before re-submitting the prompt.
- Registered a new `just.enabled` setting in the tools settings schema.
2026-04-29 18:55:03 +02:00
can1357 6f9079e354 chore: bump version to 14.5.7 2026-04-29 18:07:23 +02:00
can1357 8c8633ed17 fix(coding-agent): ignored stale OLD payload in atom delete anchors
- Atom edit application stopped throwing when a `-Lid|OLD` delete anchor's OLD payload mismatched the current line.
- Delete hunks now ignore the OLD payload and rely on Lid hash anchoring for validation and rebasing.
- Atom edge-case tests were updated to verify mismatched OLD payloads are now accepted when hashes still match.
2026-04-29 18:07:09 +02:00
can1357 4f45cf1fb4 feat(coding-agent/modes): added loop mode command and status-line mode segment support
- Added loop-mode command handling in interactive mode, including enable/disable toggling, repeated auto-submission scheduling, and Escape-based cancellation.
- Propagated loop mode state to the status line via a renamed `mode` segment that now renders plan or loop status, and updated presets/theme assets for the new loop icon.
- Migrated persisted status-line segment usage from `plan_mode` to `mode` in configuration defaults and normalization so legacy settings continue to load.
2026-04-29 16:55:14 +02:00
Can Bölük 95c4d21882 Merge branch 'main' into fix-ctrl-enter 2026-04-29 16:46:38 +02:00
can1357 d459b667cc chore: bump version to 14.5.6 2026-04-29 16:29:53 +02:00
can1357 81e7911ca8 fix(coding-agent): allowed multi-anchor atom edits to auto-rebase with warnings
- Removed the guard that rejected edits when multiple mutating anchors were auto-rebased in atom anchor validation.
- Updated atom hash-mismatch tests to show multiple set and delete anchors can rebase together and still return warning messages.
2026-04-29 16:27:08 +02:00
can1357 8098026377 fix: system prompt regressions from 416c5494f 2026-04-29 16:26:59 +02:00
Can Bölük 7f24cb67a3 test(coding-agent): apply biome formatting 2026-04-29 06:35:00 +02:00
Can Bölük 51047564a5 test(coding-agent): align test path expectations with formatPathRelativeToCwd output 2026-04-29 06:24:32 +02:00
Can Bölük 7f5b450511 test(coding-agent): use long lines so byte limit triggers in read tool truncation test 2026-04-29 06:01:19 +02:00
can1357 e217788208 chore: bump version to 14.5.5 2026-04-29 05:39:05 +02:00
can1357 85d676c664 chore: reformat 2026-04-29 05:38:51 +02:00
Can Bölük c9355a493e fix(coding-agent/edit): fixed atom parser handling for op-prefixed lines and split delete runs
- Auto-split `+@Lid` and `+-Lid` lines in `parseDiffLine` into their intended op plus a blank insert.
- Split non-contiguous delete runs into contiguous sub-runs in `normalizeHunks` and attached inserts to the last run.
- Added regression coverage for op-prefixed auto-splitting and non-contiguous delete insertion placement.
2026-04-29 05:29:44 +02:00
can1357 e8734205ec fix(coding-agent): resolved duplicate atom diff lines during auto-fix
- Rejected malformed atom diff lines (orphan '-' and unrecognized ops) with parse errors.
- Tracked mutating set/delete anchors during validation and errored when multiple stale anchors required auto-rebase.
- Added duplicate-line auto-fix in applyAtomEdits when bracket balance restores, emitting Auto-fixed warnings.
- Updated atom prompts/changelog and expanded tests for unknown ops, auto-rebase, and duplicate-line handling.
2026-04-29 04:51:56 +02:00
can1357 712f69b823 feat(coding-agent): enabled subagents to share parent local:// protocol options
- Added a localProtocolOptions field to session and executor option types for configurable local:// behavior.
- Passed localProtocolOptions through to LocalProtocolHandler creation and subagent session bootstrap.
- Propagated parent session local protocol settings from TaskTool so subprocess subagents share the same local:// artifacts and session context.
2026-04-29 04:36:11 +02:00
can1357 bcecd23eda chore: bump version to 14.5.4 2026-04-29 01:31:51 +02:00