Commit Graph
9801 Commits
Author SHA1 Message Date
can1357 9c1facec10 test(browser): cover attached tab navigation 2026-07-31 19:41:44 +02:00
can1357 6da7648262 Merge PR #7005: fix(tools): navigate to the requested url when opening an attached browser tab (@terrxo) 2026-07-31 19:41:44 +02:00
can1357 e9dda1f867 chore: applied biome formatting to merged pull request sources 2026-07-31 19:32:42 +02:00
can1357 dcf0fd3f3a Merge PR #7111: fix(web-search): honor lang: directive in DuckDuckGo kl param (@roboomp)
# Conflicts:
#	packages/coding-agent/src/web/search/providers/duckduckgo.ts
2026-07-31 19:30:18 +02:00
can1357 bd96752b83 fix(rpc): serialize IRC wake finalization 2026-07-31 19:28:43 +02:00
can1357 e02510f8c9 Merge PR #7108: fix(rpc): restore frames for IRC-revived subagents (@roboomp) 2026-07-31 19:28:42 +02:00
can1357 1f4312bfcb Merge PR #7100: fix(commit): load extension-provided models (@roboomp) 2026-07-31 19:28:42 +02:00
can1357 977b5d4281 Merge PR #7079: acp: wire ctx.ui.editor through elicitFromAcpClient (@marton78) 2026-07-31 19:28:41 +02:00
can1357 7205ed78c1 Merge PR #7069: fix(coding-agent): prevent stale LSP batch writes (@Ant39140) 2026-07-31 19:27:35 +02:00
can1357 4ab609a0e7 fix(secrets): redact lazily resolved key before credentials 2026-07-31 19:27:35 +02:00
can1357 371a2349aa Merge PR #7067: fix(secrets): exact-match edits failing on files with credential-shaped tokens (@iacore) 2026-07-31 19:27:35 +02:00
can1357 c458b6e4bc fix(session): suppressed cross-loop duplicate dead-end warning after context reconstruction
- #7163's context-token anchoring re-triggered #7153's dead-end warning on
  the pre-prompt pass; a one-shot marker now spans agent loops and re-arms
  only when a persisted cut point appears.
- Updated scrollback tests to the Alt+L display-reset binding main adopted.
2026-07-31 19:23:33 +02:00
can1357 7c0ba657d5 Merge PR #7141: fix(bash): scope shell snapshots per uid so shared-/tmp accounts don't EACCES (@dangreco) 2026-07-31 19:16:57 +02:00
can1357 03c923d376 Merge PR #7140: fix(agent): suppress redundant xd:// mount notice after catalog rebuild (@roboomp) 2026-07-31 19:16:57 +02:00
can1357 2a89eec73e Merge PR #7135: fix(telemetry): merge OTEL_RESOURCE_ATTRIBUTES into export resource (@roboomp) 2026-07-31 19:16:57 +02:00
can1357 71c6585bb4 Merge PR #7129: perf(tui): batch persistence work off the render path (@wolfiesch) 2026-07-31 19:16:56 +02:00
can1357 305ad95a20 fix(task): guard deferred launch work 2026-07-31 19:16:56 +02:00
can1357 fbedf80b01 Merge PR #7124: perf(task): defer subagent launch setup (@wolfiesch) 2026-07-31 19:16:56 +02:00
can1357 48fce3aa85 fix(web-search): scope DuckDuckGo dates to metadata 2026-07-31 19:16:52 +02:00
can1357 060ae77d21 Merge PR #7122: fix(web-search): extract duckduckgo result timestamps for date bounds (@roboomp)
# Conflicts:
#	packages/coding-agent/src/web/search/providers/duckduckgo.ts
#	packages/coding-agent/test/tools/web-search-duckduckgo.test.ts
2026-07-31 19:16:52 +02:00
can1357 af2e2bf05c Merge PR #7121: fix(search): paginate DuckDuckGo HTML results (@roboomp) 2026-07-31 19:14:47 +02:00
can1357 8f6305f772 fix(tools): preserve read continuation notice when spilling 2026-07-31 19:14:47 +02:00
can1357 ce6c57acb0 Merge PR #7117: fix(coding-agent): spill oversized read results to artifacts (@wolfiesch) 2026-07-31 19:14:46 +02:00
can1357 78825403ad fix(coding-agent): replay queued appearance changes 2026-07-31 19:08:17 +02:00
can1357 540e8f5797 Merge PR #7188: fix(coding-agent): preserve scrollback on appearance changes (@Sairen777)
# Conflicts:
#	packages/coding-agent/src/modes/controllers/input-controller.ts
2026-07-31 19:08:16 +02:00
can1357 95f5dc8011 Merge PR #7192: fix(coding-agent): reload MCP servers on /reload-plugins (@roboomp) 2026-07-31 19:07:28 +02:00
can1357 fdc430f450 Merge PR #7178: fix(web-search): surface xai-oauth support in Grok search provider label (@smoldrago) 2026-07-31 19:07:18 +02:00
can1357 3411bc3c8d Merge PR #7177: fix(coding-agent): keep ExtensionContext.cwd live across /move (@KennethHoff) 2026-07-31 19:07:18 +02:00
can1357 80a46c2d4c fix(coding-agent): avoid splitting parameter expansions 2026-07-31 19:07:18 +02:00
can1357 969b4a34a5 Merge PR #7176: fix(coding-agent): inspect compound Bash commands in interceptor (@Vincent-Huang-2000) 2026-07-31 19:07:18 +02:00
can1357 32748807a7 Merge PR #7175: fix(coding-agent): re-export compact from legacy pi shim (@roboomp) 2026-07-31 19:07:17 +02:00
can1357 3a68ce7eb0 Merge PR #7167: fix(cli): generate titles for positional initial messages (@roboomp) 2026-07-31 19:07:17 +02:00
can1357 21b1d4d4d2 Merge PR #7165: fix(tui): format selector keybinding hints (@roboomp) 2026-07-31 19:07:16 +02:00
can1357 bf08e12629 Merge PR #7163: fix(session): reconstruct context without prompt usage (@harshav167) 2026-07-31 19:07:16 +02:00
can1357 71244aec4b Merge PR #7161: fix(tui): contain synchronous image conversion failures (@roboomp) 2026-07-31 19:07:16 +02:00
can1357 da3b5bd65a Merge PR #7153: fix(session): stop repeated mid-turn compaction dead ends (@roboomp) 2026-07-31 19:07:15 +02:00
roboomp 62d7a7c5c9 fix(coding-agent): clear stale MCP prompts on reload
MCPManager.disconnectAll clears connections without notifying the session's
prompt-command consumer, so removed or disabled prompt servers left stale
/server:prompt commands after /reload-plugins and /mcp reload.

Clear the session MCP prompt-command registry immediately after disconnect and
before asynchronous rediscovery. Newly loaded prompts repopulate it through
the existing manager callback. Extend the reload regression coverage.

Fixes #7189
2026-07-31 16:48:36 +00:00
roboomp 95744328ef fix(coding-agent): honor mcp.enableProjectConfig on reload
reloadServers() rediscovered MCP with no options, so loadAllMCPConfigs
defaulted enableProjectConfig to true — /reload-plugins (and /mcp reload)
could start project .mcp.json servers a user opted out of.

Derive discovery filters (enableProjectConfig, filterExa, filterBrowser)
from ctx.settings before reconnecting, matching startup discovery. Added a
regression test asserting the opt-out is forwarded.

Fixes #7189
2026-07-31 16:41:08 +00:00
roboomp c7fb9140fb fix(coding-agent): reload MCP servers on /reload-plugins
/reload-plugins documents MCP in its reload scope but the TUI handler only
reset skill/command/capability caches and never reconnected MCP servers or
refreshed the session MCP tool registry, so .mcp.json edits stayed inactive
until process restart.

Route the TUI reload pipeline through a shared reloadTuiPluginState() helper
that also runs the disconnect/rediscover/refreshMCPTools path used by
/mcp reload, exposed as MCPCommandController.reloadServers().

Fixes #7189
2026-07-31 16:33:28 +00:00
Kenneth Hoff ae08bd57cb fix(coding-agent): keep ExtensionContext.cwd live across /move
ExtensionRunner cached cwd from its constructor argument, which is set
once at session start. /move (SessionManager.moveTo) relocates the
active session's directory, but ExtensionRunner never re-read it, so
every ExtensionContext built afterwards (tool calls, hooks, slash
commands) kept reporting the pre-move directory for the rest of the
session -- observed while building an extension that tracks the
session's git worktree via ctx.cwd.

Turn cwd into a getter over this.sessionManager.getCwd() instead of a
constructor-time snapshot. Session-scoped, not the process-global
project directory: the interactive /move handler happens to also
chdir the process (command-controller.ts -> applyCwdChange ->
setProjectDir), but moveTo() itself never touches that global, so a
programmatic AgentSession.moveSession()/SessionManager.moveTo() call,
a collab guest adopting a host's session cwd without chdir'ing, or an
SDK/ACP session opened via createAgentSession({ cwd }) with a cwd that
differs from the process's own would all still observe a stale
ctx.cwd under a getProjectDir()-based getter. Reading the runner's own
sessionManager -- already held for other purposes -- covers every one
of these instead of just the single-session interactive case.

The constructor parameter is kept (renamed _initialCwd, documented as
ignored) so the two existing call sites don't need touching.

Added a regression test constructing a real ExtensionRunner over an
in-memory SessionManager, relocating it via SessionManager.moveTo(),
and asserting both runner.cwd and createContext().cwd observe the new
directory.
2026-07-31 15:13:37 +02:00
Vincent Huang 296ece7ea5 fix(coding-agent): handle input fd redirects in interceptor 2026-08-01 00:34:19 +12:00
roboomp 922e7a58ef fix(coding-agent): re-export compact from legacy pi shim
Legacy pi extensions import `compact` from the `@earendil-works/pi-coding-agent`
package root (aliased to the legacy shim). It lives in
`@oh-my-pi/pi-agent-core/compaction` (same module as the already-bridged
`estimateTokens`) and the coding-agent barrel does not forward it, so the shim's
`export * from "../index"` left it off the surface and a named import failed
Bun's static export check during plugin validation
(`omp plugin install npm:pi-claude-bridge`).

`keyHint` (also named in the report) already resolves via the modes/components
barrel, so only `compact` needed bridging.

Fixes #7174
2026-07-31 12:07:44 +00:00
Vincent Huang 270590c225 fix(coding-agent): avoid splitting Bash redirection operators 2026-07-31 23:51:18 +12:00
Vincent Huang edb0deebb4 fix(coding-agent): inspect compound Bash commands in interceptor rules
Match interceptor regexes against conservative, raw shell command segments
in addition to the complete command, so anchored rules can detect commands
after &&, ||, ;, |, &, and newlines without treating quoted or escaped text
as commands.

Add extractFlatShellCommandSegments() to preserve source text for
user-configured regexes, unlike the token-based approval matcher.
Add skipShellWord() and environment-assignment stripping so rules can match
commands prefixed with NAME=value assignments. Preserve the original command
in interception errors after extracting a leading cd command.
2026-07-31 23:26:43 +12:00
smoldrago 6c367fd0bc fix(web-search): surface xai-oauth support in Grok search provider label 2026-07-31 13:20:03 +02:00
roboomp 19818fd8fb fix(cli): skipped titles for positional extension commands
Applied the extension-command eligibility check inside the shared AgentSession title gate so editor and CLI bootstrap submissions cannot diverge.

Added direct regression coverage for programmatic startup submissions.

Fixes #7166
2026-07-31 10:34:46 +00:00
roboomp 223122d6b0 fix(cli): generated titles for positional initial messages
Moved automatic title eligibility and persistence into AgentSession so editor and CLI bootstrap submissions share one path.

Added a PTY regression probe covering the positional-message launch flow.

Fixes #7166
2026-07-31 10:28:48 +00:00
Harsha Vardhan 66a7126b5b fix(session): reconstruct context without prompt usage 2026-07-31 20:10:01 +10:00
roboomp a60f1efa96 fix(tui): formatted selector keybinding hints
Routed copy selector and ask dialog hints through the shared human-readable key formatter and covered both rendered surfaces.

Fixes #7164
2026-07-31 10:06:46 +00:00
roboomp b9b60545ab fix(tui): contained synchronous image conversion failures
- Centralized PNG conversion behind an async boundary so constructor and encoder throws become promise rejections.
- Kept live and restored Kitty image rendering interactive by omitting failed conversions.
- Added regressions for both tool-result render paths.

Fixes #7160
2026-07-31 09:44:07 +00:00