Commit Graph

9413 Commits

Author SHA1 Message Date
can1357 9afedb591e feat(coding-agent): added opt-in task prewalk and tightened --tools and xdev behavior
- Added a `task.prewalk` option (default `false`), removed default task `prewalk` flags, and updated prewalk resolution so bunded generic task execution only prewalks when explicitly enabled.
- Enforced strict `--tools` validation in CLI parsing, making unknown tool names fail fast with `CliUsageError` instead of being silently filtered.
- Migrated legacy discovery settings (`tools.discoveryMode`, `tools.essentialOverride`, MCP discovery keys) into updated `tools.xdev` handling with preserved explicit override behavior.
- Hardened xdev/ACP execution flow by capping `docsAll` payloads with overflow listing and remapping `xd://` dispatches/approval gating for correct execute/read behavior and reduced duplicate prompts.
2026-07-15 18:39:36 +02:00
can1357 4da1bbf9ea Merge remote-tracking branch 'origin/farm/80b5de49/plan-mode-reentry-anchor-new-request' 2026-07-15 15:34:06 +02:00
can1357 84d873f2ca Merge remote-tracking branch 'origin/farm/ceed3a6a/compiled-appserver-extension-exit' 2026-07-15 15:31:51 +02:00
can1357 5ff277349c refactor(coding-agent): consolidated tool surface onto xd:// devices and hub
- Added the `xd://` virtual device protocol (`internal-urls/xd-protocol.ts`, `tools/xdev.ts`): tools declaring `loadMode: "discoverable"` are unmounted from the request tools array and driven via `read xd://` (list/docs+schema) and `write xd://<tool>` (execute), gated by the `tools.xdev` setting (default on) and inlined into the system prompt.
- Merged the `irc`, `job`, and `launch` tools into a single `hub` tool (`tools/hub/`, `async/job-manager.ts`): messaging keeps `send`/`inbox`/`list`, job control maps to `wait`/`cancel`/`jobs`, process supervision keeps `start`/`logs`/`stop`/`restart`/`describe` with `ps`, and the unified `wait` races background jobs against peer messages; SDK `IrcTool`/`JobTool`/`LaunchTool` are replaced by `HubTool`.
- Removed the hidden `resolve` tool in favor of the `xd://resolve`/`xd://reject`/`xd://propose` resolution devices, auto-including `write` whenever a deferrable tool or plan mode is present.
- Removed the BM25 tool-discovery system: the `search_tool_bm25` tool, the `tool-discovery` module, the `tools.discoveryMode`/`mcp.discoveryMode`/`mcp.discoveryDefaultServers`/`tools.essentialOverride` settings, per-tool MCP selection, and the `mcp_tool_selection` message type.
- Unified tool presentation on `ToolLoadMode` (`essential`|`discoverable`), replacing the custom-tool `xdev?: boolean` opt-out; custom, extension, MCP, RPC host, image-generation, and TTS tools now default to `discoverable`, and added a `satisfies` predicate to `SoftToolRequirement`.
- Removed the standalone `ssh` command tool and `ssh/ssh-executor` (the `ssh://` read/write/search protocol stays), and made `--tools` address hidden built-ins.
- Updated collab-web to render `xd://` dispatches and `hub` op families, dropped the `search_tool_bm25`/`ssh`/`report-finding` renderers, refreshed tool docs and prompts, and migrated the affected tests and changelogs.
2026-07-15 15:16:29 +02:00
can1357 f75c97773d fix(coding-agent): renamed project-context wrapper to <repo-rules>
- Renamed the system prompt's project-context section wrapper from `<context>` to `<repo-rules>` in `project-prompt.md`, so it no longer collides with the `task` tool's `context` parameter under in-band XML tool dialects.
- Updated `snapcompact-inline`'s context-section strip pattern to match `<repo-rules>`.
- Updated the `snapcompact-inline` test fixture to the new wrapper.
- Changelog entry for this rename rides with the fused device-migration commit (adjacent changelog lines).
2026-07-15 15:15:46 +02:00
can1357 d50cc4e2d3 feat(coding-agent): made hashline seen-line guard opt-in via edit.enforceSeenLines
- Added the `enforceSeenLines` option to hashline `PatcherOptions` (defaults `true`); the seen-line guard in `Patcher` now runs only when enabled.
- Added the `edit.enforceSeenLines` coding-agent setting (default off) and wired it through `edit/hashline/execute.ts` into the `Patcher`.
- Stopped `file-snapshot-store` excluding column-clipped (>512-char) lines from a snapshot's seen set, so single-line edits on long lines apply without a full-width re-read.
- Updated `seen-line-guard` tests and the hashline/coding-agent changelogs.
2026-07-15 15:15:08 +02:00
roboomp faf4890b08 fix(plan-mode): anchored re-entry on the new request
The re-entry system prompt led with "Read the existing plan" and its
"different task -> overwrite it" step contradicted the planExists guidance
("leave that plan in place and start a fresh file"). Weak models fixated on
reconciling the incomplete old plan and dropped the new request entirely.

- Rewrote the Re-entry procedure in plan-mode-active.md to treat the new
  request as the primary input and the old plan as reference only, and to
  fold corrections for unfinished old work INTO the new plan rather than
  substituting them for the new request.
- Aligned the "different task" branch with the planExists section (fresh
  file, no overwrite), removing the contradiction.
- Added reentry-prompt.test.ts asserting the anchoring contract and the
  absence of the contradiction.

Fixes #5576
2026-07-15 12:35:54 +00:00
can1357 b52c798025 feat(coding-agent/discovery): set builtin discovery rules to interruptMode never
- Added `interruptMode: never` to all updated Go, Rust, and TypeScript built-in discovery rule files.
- Changed `ts-no-inline-cast-access.md` from `interruptMode: tool-only` to `interruptMode: never`.
2026-07-15 14:34:38 +02:00
can1357 71f29e17c9 fix(coding-agent): kept cleanup tail out of plan-mode execution specs
- Added a `plan-mode-active.md` directive barring changelog/release notes, doc updates, formatter/linter runs, and scaffolding removal as plan steps, so plan mode stops enumerating the mechanical cleanup tail that runs automatically after the change works.
- Clarified that behavior-defining tests and the end-to-end proof stay in the **Verification** section rather than being dropped as cleanup.
2026-07-15 13:23:17 +02:00
can1357 f3aad14ee9 fix(tui): restored compact editor border by default
- Restored the compact two-row `Editor` layout by default and gated the dedicated IME-safe bottom border behind `setImeSafeCursorLayout()`.
- Added `tui.imeSafeCursor` as an opt-in appearance setting and applied it to initial and replacement editors.
- Added regression coverage for compact default rendering while retaining terminal-local IME preedit protection.
- Updated the TUI changelog for the opt-in compatibility layout.
2026-07-15 13:16:07 +02:00
can1357 282b69a36a Merge remote-tracking branch 'origin/farm/9e36cbc8/render-inline-markdown-list-items' 2026-07-15 12:56:50 +02:00
roboomp 24960899ac fix(coding-agent): lazily loaded compiled extension modules
Generated per-module loaders instead of eagerly evaluating the entire bundled compatibility graph during extension bootstrap.

This prevents appserver startup from cycling through its own retained command modules before the Unix socket is created.

Fixes #5568
2026-07-15 10:54:13 +00:00
roboomp 09d2d2db33 fix(export): rendered inline markdown in list items
- Parsed nested marked text tokens through the inline parser.
- Added browser-template regression coverage for ordered, unordered, and nested lists.

Fixes #5567
2026-07-15 10:45:50 +00:00
can1357 b51fd7f06d Merge remote-tracking branch 'origin/farm/58511219/fix-bash-process-substitution-hang' 2026-07-15 12:38:47 +02:00
roboomp 8eb9b6d251 fix(shell): materialized process substitution fds for builtins
- Rewrote logical /dev/fd operands to live OS descriptors before invoking in-process uutils.
- Added regression coverage for diff reading two process substitutions.

Fixes #5557
2026-07-15 10:04:00 +00:00
can1357 2134526b7d Merge remote-tracking branch 'origin/farm/f9161653/fix-prewalk-completion-loop' 2026-07-15 11:16:53 +02:00
roboomp 7b07ad7d6a fix(prewalk): rearmed continuation after tool progress
Each tool-result turn now re-arms one text-only continuation while prewalk is pending. Consecutive prose replies without intervening tool progress terminate naturally, preserving multi-step plan detours without restoring the completion loop.

Fixes #5551
2026-07-15 08:44:54 +00:00
roboomp b993c0d10c fix(prewalk): make continuation net one-shot
A prose plan and a bash-only completion are structurally identical after any pre-implementation tool detour, so the net now stays armed across every such turn and fires exactly once on the first text-only reply. This bridges read/record/bash detours before the plan while bounding a genuine no-edit completion to a single continuation instead of looping.

Fixes #5551
2026-07-15 08:38:00 +00:00
can1357 ef7141b500 Merge remote-tracking branch 'origin/farm/f9161653/fix-prewalk-completion-loop' 2026-07-15 10:28:14 +02:00
roboomp cefa91494f fix(prewalk): keep continuation armed across todo turns
The continuation net now stays armed across a todo-only turn and disarms only when a non-planning tool runs without a prose plan, so the normal plan-nudge to todo to prose to edit flow still reaches implementation while a bash-only completion no longer loops.

Fixes #5551
2026-07-15 08:28:14 +00:00
roboomp 2fe124987b fix(prewalk): stopped completion turn loop
Limited the hidden continuation safety net to the assistant turn immediately following the plan nudge, so later bash-only completion ends normally.

Added regression coverage for commit-style flows that never call edit or write.

Fixes #5551
2026-07-15 08:15:28 +00:00
can1357 e542f762ca fix(pi-shell): mapped BrokenPipe stdout errors to silent fd exit code 141
- Updated `run_fd_sync` to handle `io::ErrorKind::BrokenPipe` by returning exit code `141` without writing an error message.
- Added a regression test that verifies `fd` exits with `141` and empty stderr when stdout is closed early (e.g. `fd ... | head` scenario).
- Recorded the broken-pipe behavior fix in `packages/coding-agent/CHANGELOG.md`.
2026-07-15 10:09:41 +02:00
can1357 e4bbe34f61 config(coding-agent/config): disabled astGrep tool by default
- Set `astGrep.enabled` to `false` in the settings schema so it starts disabled.
2026-07-15 10:04:13 +02:00
can1357 404ebb0fb0 Merge remote-tracking branch 'origin/farm/ae7a5593/ttsr-inline-regex-flags-and-scope-quoting' 2026-07-15 09:54:46 +02:00
roboomp 02efdee788 fix(omfg): compiled generated-rule conditions via inline-flag helper
The /omfg generated-rule path validated conditions with raw new RegExp in normalizeConditionRegex and isValidRegexCondition, so a generated rule with a leading (?i)/(?m)/(?s) inline flag was rejected as "Invalid condition regex" before reaching TtsrManager.addRule. Route all three validation sites through compileRuleCondition.

Fixes #4796
2026-07-15 06:45:41 +00:00
can1357 c32ea55ba3 fix(coding-agent): kept todo active for prewalk subagents and fixed prewalk gate deadlock
- Updated prewalk gating in `AgentSession` to key the todo gate on active tools instead of registry presence, so deactivated todo tools no longer block prewalk handoff.
- Changed subprocess tool filtering so `todo` is stripped for normal subagents but retained when prewalk is armed, and propagated the prewalk state through tool-session setup.
- Added regression tests for restricted active-tool slates and prewalk/non-prewalk subagent tool propagation to verify todo is handled correctly in each case.
2026-07-15 05:45:59 +02:00
can1357 b31eccbc21 feat(coding-agent): added todo batching guidance and armed prewalk when option is set
- Updated system and todo prompt templates to require batching todo tool calls with real action calls instead of sending them alone.
- Passed a new `prewalkArmed` session flag in `createAgentSession`, set from whether `prewalk` was supplied.
2026-07-15 05:44:23 +02:00
can1357 af1832af1b feat(coding-agent/prompts): refined tool prompts for shell, browser, and eval workflows
- Simplified `bash` guidance to tighten allowed command patterns, pipeline limits, and launch-based process handling.
- Reworked `browser` instructions into grouped helper sections while preserving selector restrictions and key action semantics.
- Harmonized `eval`, `irc`, `read`, and `todo` prompt wording around state reuse, messaging, selector formats, and task operations.
2026-07-15 03:28:21 +02:00
can1357 425e583ae0 feat(coding-agent): added support for task-agent field and model resolution
- Added schema and type updates for task-agent fields and model resolver settings.
- Extended discovery helper logic to carry resolved task-agent metadata through execution setup.
- Updated task/agent registration and execution paths to use the new capability/field data.
- Expanded test coverage for agent-field parsing, model resolution, and executor prewalk behavior.
2026-07-15 00:50:55 +02:00
roboomp ea320d745b fix(bash): resolved nested internal URLs
- Tracked quote context independently inside command substitutions.
- Covered unquoted skill URLs nested under outer double quotes.

Fixes #5535
2026-07-14 22:21:53 +00:00
can1357 55f5ebec49 chore: reformat 2026-07-15 00:08:50 +02:00
can1357 7d02778c60 chore: bump version to 16.5.2 2026-07-15 00:04:32 +02:00
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 4114d280bd fix(coding-agent/advisor): treated zero-content advisor stop turns as valid review completions
- Replaced the advisor turn validation to raise errors only when a turn has no assistant response at all, instead of treating a content-less `stop` as a failure.
- Kept zero-content silent reviews from entering the retry/rollback/warn path by no longer raising "Advisor unavailable" for completed empty-stop turns.
- Updated advisor runtime tests and changelog language to assert and document that consecutive zero-usage silent turns now succeed without notifications.
2026-07-14 23:36:08 +02:00
can1357 ff117fd107 chore: cleanup changelogs 2026-07-14 23:32:10 +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 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