Commit Graph
9801 Commits
Author SHA1 Message Date
robomp-bot 88cbd85b11 fix(warp): handle session_branch event in emitter reset path 2026-07-16 00:23:52 +09:00
robomp-bot a2d881b688 fix(warp): refresh session identity safely 2026-07-16 00:23:52 +09:00
robomp-bot 54373c92ec test(warp): stub isInsideTmux in permission_request test 2026-07-16 00:23:52 +09:00
robomp-bot 664c80256a test(warp): assert exact permission_request OSC body
Parse the OSC 777 JSON payload and compare the full object so invented tool_input or args fields fail. ToolApprovalRequestedEvent exposes no args.
2026-07-16 00:23:52 +09:00
robomp-bot 4c161cd0ec test(warp): cover native event protocol 2026-07-16 00:10:00 +09:00
robomp-bot 342345b388 feat(warp): bridge TUI session events 2026-07-16 00:10:00 +09:00
robomp-bot c3f117afd6 feat(warp): add CLI-agent OSC emitter 2026-07-16 00:10:00 +09:00
Mathews-Tom d30377f82a fix(coding-agent): require successful prewalk todo 2026-07-15 20:18:05 +05:30
Mathews-Tom 7cd07bf681 fix(coding-agent): resolve CI regressions 2026-07-15 20:07:53 +05:30
Mathews-Tom 6cb27f7945 fix(coding-agent): restore live tool contracts 2026-07-15 20:07:33 +05:30
serverinspector d52084f536 fix(browser): observe raw promises before target close 2026-07-15 14:35:44 +00:00
roboomp 344762eecc fix(tui): used role tag in model selector status messages
Model selector status messages (assign, clear, fallback-chain) interpolated
`roleInfo?.name ?? role`, showing the display name ("Fast"/"Thinking") instead
of the tag ("SMOL"/"SLOW"). Aligned them with the rest of the TUI
(model-browser.ts, model-hub.ts) which use `info.tag ?? info.name ?? role`.

Fixes #5585
2026-07-15 14:29:02 +00:00
roboomp d3d21e3b4a fix(task): kept async job status while forwarding subagent progress
forwardSyncProgress copied the subagent's initial pending snapshot over the job-owned running status via a wholesale Object.assign, reverting mixed-split job rows to pending. Forward only the live metric fields (resolved model, reasoning, counters, recent activity) and leave status/identity to the job body.

Fixes #5060
2026-07-15 13:58:16 +00:00
roboomp 8621b0459d fix(tui): showed task job model badges
Forwarded async task progress metadata into job snapshots so polling rows can render the effective resolved model and reasoning selector.

Added focused renderer coverage for enabled, disabled, malformed, and bash job rows.

Fixes #5060
2026-07-15 13:58:16 +00:00
Mathews-Tom 80549af7d5 Merge remote-tracking branch 'upstream/main' into feat/secret-friendly-names 2026-07-15 19:20:02 +05:30
Mathews-Tom 46a3c0b711 Merge remote-tracking branch 'upstream/main' into feat/error-notify 2026-07-15 19:19:28 +05:30
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
pppobear f9459bf462 fix(tui): stabilize streamed table scrollback 2026-07-15 20:13:09 +08: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
roboomp 4b3ec660f3 fix(catalog): disabled eager streaming for custom anthropic
Defaulted eager tool input streaming to the canonical Anthropic API while allowing explicit models.yml opt-in for compatible proxies.

Fixes #5572
2026-07-15 11:20:12 +00: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
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
roboomp 0d0df064e0 fix(discovery): gated cwd-based command rooting to codex importer
The previous follow-up rooted path-like commands at the resolved cwd in
the shared resolvePluginStdioPaths helper, which regressed plugin
.mcp.json semantics: plugin commands are relative to the plugin package
root, so a plugin shipping ./bin/server with cwd="work" would resolve to
<pkg>/work/bin/server and ENOENT. Add a commandBase parameter defaulting
to "config-dir" (the plugin contract) and pass "cwd" only from the Codex
importer, where the OS resolves the relative command against the spawned
process cwd.

Fixes #5561
2026-07-15 10:05:08 +00:00
roboomp e88c45f063 fix(discovery): resolved plugin stdio command against rooted cwd
resolvePluginStdioPaths resolved a path-like command against the config
directory unconditionally, but the stdio transport spawns the subprocess
with the rooted cwd as its process cwd, so the OS resolves a relative
command from there. For cwd="server", command="./bin/mcp" that meant OMP
looked for <configDir>/bin/mcp instead of <configDir>/server/bin/mcp.
Root cwd first, then resolve path-like commands from that rooted cwd,
falling back to configDir only when no cwd is set.

Fixes #5561
2026-07-15 09:56:18 +00:00
roboomp d6683c351a fix(discovery): rooted codex toml mcp command/cwd at config dir
The Codex config.toml importer copied only command/args/url into the
returned MCPServer, dropping cwd and leaving relative command values
verbatim. MCP stdio spawning resolved those against the session cwd, so
the bundled Codex Computer Use server (relative command, cwd = ".") failed
with ENOENT. Route command/cwd through resolvePluginStdioPaths against the
config directory, matching the claude-plugins/omp-plugins fix in #5481.

Fixes #5561
2026-07-15 09:43:46 +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 c8975cda59 fix(session): skipped remote streaming edit pre-cache
Used centralized internal-URL detection so filesystem-only streaming edit work does not resolve ssh:// paths through the cwd.

Added a replace-mode regression covering controlled tool dispatch for an ssh:// path.

Fixes #5552
2026-07-15 08:20:51 +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 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
oldschoola 596a20517f fix: render bash timeout with warning border instead of error
Bash command timeouts now render with a warning (yellow) border instead
of an error (red) border, reflecting that the timeout ran its course
rather than the command failing.

The timeout is no longer thrown as a ToolError — instead #buildCompletedResult
returns a non-throwing error result (isError=true, keeping the model-facing
contract) with details.timedOut=true. The renderer reads this flag to pick
state="warning" (yellow) instead of state="error" (red).

The timedOut flag is propagated from bash-executor.ts, which now sets
timedOut=true on timeout return paths and leaves it unset on user-abort
paths. This distinguishes timeouts from user Esc-cancels — previously both
returned cancelled=true with no way to tell them apart in bash.ts.
2026-07-14 20:21:59 -07:00
DarkPhilosophy 1151c4f6fc fix(advisor): share usage-limit classification 2026-07-15 05:04:27 +03:00
DarkPhilosophy 4a0ba05fe8 fix(advisor): ignore stale quota hooks 2026-07-15 04:42:37 +03: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
DarkPhilosophy a5b4832cc0 fix(advisor): align quota retry handling 2026-07-15 04:05:59 +03:00
DarkPhilosophy 0a9a5aa186 Merge remote-tracking branch 'can1357/main' into feat/advisor-per-agent-toggle
# Conflicts:
#	packages/coding-agent/src/advisor/runtime.ts
2026-07-15 03:32:11 +03:00