Commit Graph
2376 Commits
Author SHA1 Message Date
can1357 ffe3b6afd4 fix(coding-agent): rehome TITLE_SYSTEM.md discovery and reload it on cwd change 2026-06-10 09:51:46 +02:00
can1357 95146192e9 fix(coding-agent): evaluate enabledModels globs and fuzzy selectors in the sync ACP filter 2026-06-10 09:51:45 +02:00
can1357 4561cdfbd4 ux(coding-agent/task): reordered live task progress to show finished agents first
- Added a stable progress-ordering helper that moved pending and running agents below completed and failed ones.
- Applied this ordering to top-level and nested live task-progress rendering so finished entries render first.
- Added a renderer test and changelog note covering the finished-before-unfinished progress ordering.
2026-06-10 09:51:43 +02:00
roboomp cafd957f5d fix(providers): disabled ollama thinking for off turns
Propagated explicit thinking-off state through the agent loop so provider requests receive disableReasoning instead of an undefined effort. Added Ollama and agent-session regressions for the :off path.\n\nFixes #2239
2026-06-10 07:41:58 +00:00
can1357 e3501e3f76 chore: fix merge issues 2026-06-10 08:35:51 +02:00
can1357 7205289ece Merge pull request #2201: feat(coding-agent): add title system prompt override 2026-06-10 08:32:10 +02:00
can1357 4a5686a120 Merge pull request #2176: feat(minimizer): deterministic shell-output minimizer 2026-06-10 08:32:10 +02:00
can1357 719875ac9a Merge pull request #2163: fix(tui): omit hidden thinking placeholder 2026-06-10 08:32:10 +02:00
can1357 d080645b94 Merge pull request #2161: fix(cli): reject ambiguous extensions command 2026-06-10 08:32:10 +02:00
can1357 db3a54cbe5 Merge pull request #2108: feat(memory): add runtime API and exact vector index 2026-06-10 08:32:09 +02:00
can1357 11c53051bf Merge pull request #2097: fix(acp): skip permission gate when yolo mode is explicitly enabled 2026-06-10 08:32:09 +02:00
can1357 d30dca302f Merge pull request #2044: fix(coding-agent): apply enabledModels filter to ACP model list 2026-06-10 08:32:09 +02:00
danzaioandcan1357 3e9b5ea796 test(cli): avoid inline import in guard test 2026-06-10 08:31:37 +02:00
danzaioandcan1357 e2c7c45ff8 fix(cli): limit extensions guard to bare command 2026-06-10 08:31:37 +02:00
danzaioandcan1357 da1ad85dbe fix(cli): reject ambiguous extensions command 2026-06-10 08:31:37 +02:00
danzaioandcan1357 e5f37a5585 fix(tui): update hidden thinking expectations 2026-06-10 08:31:35 +02:00
danzaioandcan1357 d16b49efdf fix(tui): omit hidden thinking placeholder 2026-06-10 08:31:35 +02:00
can1357 fdcc689de0 fix(coding-agent): update default title prompt assertion to surviving anchor
The bundled title-system.md was reworded on main (30959d3ad) after this
branch was cut, so the rebased default-prompt test asserted stale wording.
Anchor on the stable set_title instruction instead.

Addresses review feedback on #2201.
2026-06-10 08:31:33 +02:00
can1357 5e7640c237 Revert "Merge pull request #2076: fix(coding-agent): prefer daemonizing CLI clipboards over arboard on Linux"
This reverts commit b3ed88d398, reversing
changes made to 26c6326f52.
2026-06-10 08:31:32 +02:00
DarkPhilosophyandcan1357 b98aea5043 fix(memory): tighten runtime and backend coverage 2026-06-10 08:31:32 +02:00
Adryel Dearoandcan1357 ecbc2a3c15 feat(coding-agent): add configurable title system prompt for sessions
- add discovery of `TITLE_SYSTEM.md` and pass it through interactive startup context
- route custom title prompts to online and local tiny title generators via protocol
- update session-title docs and changelog with override behavior
- add tests for prompt discovery, forwarding, and fallback to bundled title prompts
2026-06-10 08:31:32 +02:00
DarkPhilosophyandcan1357 001c16eaa0 feat(memory): expose runtime to extensions 2026-06-10 08:31:32 +02:00
can1357 3fd09d5770 fix(acp): require explicit yolo opt-in before skipping the client permission gate
The schema default for tools.approvalMode is already "yolo", so checking the
resolved setting alone disabled the ACP permission gate for every
default-config session (17 existing tests in
agent-session-acp-permission.test.ts fail). The skip now requires an
explicitly configured approval mode — the --yolo/--auto-approve runtime
override or a user-set tools.approvalMode — via the new
Settings.isConfigured(), keeping default ACP sessions gated.

Addresses review feedback on #2097.
2026-06-10 08:31:31 +02:00
DarkPhilosophyandcan1357 f04b7a1a33 feat(memory): add runtime API and exact vector index 2026-06-10 08:31:31 +02:00
can1357 19b83bcc1d fix(coding-agent): repair post-rebase blockers in enabledModels ACP filter
- Type test registry mocks as CanonicalModelVariant[] (main's catalog split
  added canonicalId/selector/source to the variant shape; tsgo failed on the
  PR's loose { model } mocks)
- Move the CHANGELOG entry back under [Unreleased] (rebase auto-merge dropped
  it into the released 15.10.2 section)

Addresses review feedback on #2044.
2026-06-10 08:31:30 +02:00
David Andrews (LexGenius.ai)andcan1357 3a73107cce fix(minimizer): address PR 2176 review feedback 2026-06-10 08:31:30 +02:00
58f9e1c5c0 fix: match bare OpenRouter-style model ids in filterAvailableModelsByEnabledPatterns
When a pattern like "qwen/qwen3-coder:exacto" contains "/" but no
recognised provider prefix, findExactModelReferenceMatch fails (it
treats "qwen" as the provider). Fall through to scan available models
by id so the pattern still matches the openrouter-hosted model.

Adds a regression test covering this case.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 08:31:30 +02:00
Theoandcan1357 231cf6eb4b fix review: colon stripping, glob handling, no-match contract, changelog
- Use parseThinkingLevel to validate :suffix before stripping, so
  colon-bearing OpenRouter ids (openrouter/qwen/qwen3-coder:exacto) are
  preserved and matched correctly
- Skip glob patterns instead of early-returning, so mixed glob + exact
  patterns still apply the exact ones; only-globs falls back to all
- Return [] on no-match (consistent with resolveAllowedModels contract)
  instead of the full list, so a typo in enabledModels gives consistent
  signals (session fails to start + picker is hidden)
- Remove double blank line (nit)
- Add CHANGELOG entry
- Add OpenRouter regression test and update no-match expectation
2026-06-10 08:31:30 +02:00
Theoandcan1357 9e28ec4b7e fix: apply enabledModels filter to ACP model list
getAvailableModels() was calling modelRegistry.getAvailable() directly,
which skips the enabledModels setting. The setting was only applied
during session init to pick the starting model, not to the list
advertised to ACP clients (Zed, etc.).

Add filterAvailableModelsByEnabledPatterns() to model-resolver.ts - a
synchronous subset of resolveAllowedModels() that handles the patterns
used in real configs (exact provider/modelId, canonical ids, bare model
ids, thinking-level suffixes). Glob patterns fall back to showing all
models rather than accidentally emptying the picker.

Update getAvailableModels() to call it, so the ACP model dropdown in
Zed (and any other ACP client) respects the users enabledModels config.
2026-06-10 08:31:30 +02:00
can1357 9001ab3732 Merge pull request #2233: fix(hindsight): share project tag across git worktrees 2026-06-10 08:27:00 +02:00
can1357 37a5e8a53e Merge pull request #2214: feat: add RPC subagent subscriptions 2026-06-10 08:27:00 +02:00
can1357 bcf978a266 Merge pull request #2205: feat(models): resolve secrets from commands 2026-06-10 08:26:59 +02:00
can1357 7ce58fe95c Merge pull request #2204: feat(eval): add python interpreter setting 2026-06-10 08:26:59 +02:00
can1357 8245fcf095 Merge pull request #2202: feat(config): add runtime config overlays 2026-06-10 08:26:59 +02:00
can1357 1c69483241 Merge pull request #2186: fix(acp): auto-cancel in-flight turn when new prompt arrives mid-flight 2026-06-10 08:26:59 +02:00
can1357 7916c7b909 Merge pull request #2164: fix(plan): skip confirm for empty plan exit 2026-06-10 08:26:58 +02:00
can1357 8582200019 Merge pull request #2162: docs(models): document oMLX OpenAI-compatible setup 2026-06-10 08:26:58 +02:00
can1357 9fae4fb64d Merge pull request #2160: fix(mcp): accept manual OAuth redirect input 2026-06-10 08:26:58 +02:00
can1357 e19f2f689c Merge pull request #2147: fix(coding-agent): hide secrets in provider requests 2026-06-10 08:26:58 +02:00
can1357 4c71da5ebc Merge pull request #2094: fix(coding-agent): cache status line context usage 2026-06-10 08:26:57 +02:00
can1357 c03075c9ae Merge pull request #2083: fix(coding-agent): broke runaway edit loops and capped bash artifact spew 2026-06-10 08:26:57 +02:00
can1357 b3ed88d398 Merge pull request #2076: fix(coding-agent): prefer daemonizing CLI clipboards over arboard on Linux 2026-06-10 08:26:57 +02:00
can1357 26c6326f52 Merge pull request #2052: fix(acp): emit extension-registered commands in available_commands_update 2026-06-10 08:26:57 +02:00
can1357 af01abef32 Merge pull request #2019: feat(coding-agent): add provider setup command 2026-06-10 08:26:57 +02:00
can1357 5187dc1a7b fix(acp): skip colon-namespaced extension commands shadowed by builtins
parseSlashCommand treats ':' as a name/args separator, so an extension
command like 'model:foo' was advertised in available_commands_update but
dispatched to the '/model' builtin. Filter such names via
isAcpBuiltinShadowedName, and fix the FakeAgentSession prompt stubs in
acp-agent.test.ts to return true now that AgentSession.prompt() reports
whether the agent was invoked (6 tests were failing against the new
early-finish path).

Addresses review feedback on #2052.
2026-06-10 08:26:08 +02:00
416c9947bd fix(acp): finish prompt turn when extension/custom command is handled locally
Extension commands (e.g. /sonnet) and TypeScript custom commands that
consume the input without calling the LLM return early from
session.prompt() with no agent turn. In ACP mode this left the pending
prompt promise unresolved, hanging the client forever.

Change session.prompt() to return Promise<boolean>: true when the LLM
was invoked, false when the command was fully handled locally.
#runPromptOrCommand calls #finishPrompt immediately on a false return so
the ACP turn completes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 08:26:07 +02:00
d8db20cb0d fix(acp): advertise extension commands before custom TS commands
Dispatch in AgentSession runs #tryExecuteExtensionCommand before
#tryExecuteCustomCommand, so the palette must reflect the same order.
Moving the extension-runner block before session.customCommands ensures
that on a name collision the advertised command matches what will
actually execute.

Update the test to assert the extension description wins over the
colliding custom TS description.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 08:26:07 +02:00
0d67407773 fix(acp): address review comments on extension-commands PR
- Update ordering comment in #buildAvailableCommands to document the
  extension tier and explain why skills/custom TS commands intentionally
  shadow extension commands (unlike interactive mode)
- Add CHANGELOG entry under [Unreleased]
- Add regression test: verifies extension commands surface in
  available_commands_update and that a builtin-colliding extension
  command is excluded via the reserved-set, with no duplicates

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 08:26:07 +02:00
can1357 ccf495441a style(coding-agent): drop stray blank line from rebase conflict resolution
Addresses rebase cleanup on #2076.
2026-06-10 08:26:06 +02:00
roboompandcan1357 d4ce2a00cb fix(coding-agent): prefer daemonizing CLI tools over arboard for Linux clipboard
The native arboard backend cannot retain X11 / Wayland selection ownership
after the calling process exits, and for short-lived napi calls it can drop
ownership before any consumer sees the selection — leaving the clipboard
empty even though set_text returned success. tmux + QTerminal made this
visible because OSC 52 is also dropped by libqtermwidget, so both backends
fail and the UI's 'Copied to clipboard' status reads as a lie.

utils/clipboard.ts now:
- Tries wl-copy / xclip / xsel before arboard on Linux. These CLIs fork
  after reading stdin and serve the selection until another app claims it,
  so the payload survives our process exit.
- Honors OMP_CLIPBOARD_COMMAND as a shell-string escape hatch (e.g.
  `xclip -selection clipboard -in -silent`).
- Logs a single warning when every backend fails, so the silent-success
  regression from #2075 cannot recur unnoticed.

Tests assert dispatch order: Linux+X11 prefers xclip, Wayland prefers
wl-copy, xclip→xsel fallback works, all-fail falls back to native,
macOS still goes straight to native, and OMP_CLIPBOARD_COMMAND wins
over the CLI chain.

Fixes #2075
2026-06-10 08:26:05 +02:00