Commit Graph

12951 Commits

Author SHA1 Message Date
roboomp 8ea64a6a8d fix(mcp): run oauth discovery on reauth when handshake needs no auth
`/mcp reauth <name>` probed the server with `{ oauth: false }` and treated a
successful unauthenticated `initialize` as proof that OAuth was unnecessary,
hard-erroring with "Server connection succeeded without OAuth; reauthorization
is not required." Per the MCP spec a server may allow unauthenticated
`initialize` while requiring a bearer token for `tools/call`, so this left no
way to acquire a credential for such servers.

When the handshake succeeds without an in-band tool challenge, fall back to
`discoverOAuthEndpoints(config.url)` and proceed with the flow if the server
advertises OAuth metadata; only refuse when no OAuth endpoint is discoverable.

Fixes #8922
2026-08-19 09:53:26 +00:00
can1357 d94bdfa1bb test: hardened new spinner and title-latch suites against full-suite pollution
- Exported stopSharedSpinnerTicker() and wired it into InteractiveMode.stop(): a live block missed by per-component stopAnimation kept the shared 80ms interval alive as a lingering event-loop handle; the spinner suite uses it to observe a freshly armed ticker instead of one leaked by earlier files
- Title-disposal tests now save/clear/restore PI_NO_TITLE (main() in ACP/RPC mode sets it process-wide), matching the prewarm and orphan-submit precedent
2026-08-19 03:20:50 +02:00
can1357 aa98ea9ed5 test: settled in-flight auto-title request between orphan-submit iterations
The title latch from PR #8911 dedupes a second title start while one is in flight; the orphan-submit loop implicitly relied on the first mocked request having settled. Drain its promise chain at a macrotask boundary before the next submit.
2026-08-19 02:04:51 +02:00
can1357 3566bd9b41 fix(ai): unified Cursor interaction-query handling after merging #8889 and #8830
- Kept the shared cursor/interaction-query module as the single handler and deleted the duplicate local implementation in cursor.ts
- Added the named webFetchRequestQuery approval case (field 9 is named under the regenerated proto)
- Preserved the deliberate no-fake-VM-success semantics for setupVmEnvironmentArgs (review of #8047)
- Updated the field-9 regression test to assert the named decode of the raw same-field reply, which also pins the LEN-prefix wire framing
2026-08-19 01:47:20 +02:00
can1357 20bd4ab97b chore(changelog): normalized [Unreleased] sections after merges and added missing entries
- Repaired union-merge artifacts in packages/coding-agent/CHANGELOG.md (duplicated 17.3.6/17.3.7 blocks; promoted the new entries back to [Unreleased])
- Added missing [Unreleased] entries for PRs #8833, #8866, #8879, #8903, #8905, #8915, #8916, #8917, #8920, #8923, #8928, #8929, #8937
2026-08-19 01:42:50 +02:00
can1357 e61775a470 fix(coding-agent): mention oauth exemption in apiKey validation error; add validation tests 2026-08-19 01:39:18 +02:00
can1357 539d841b10 Merge PR #8937: fix(coding-agent): allow auth oauth without apiKey in models.yml (@usr-bin-roygbiv) 2026-08-19 01:39:18 +02:00
can1357 17e47b3eb7 Merge PR #8920: fix(compaction): bound summarization input and stop retrying overflow (@PaleRoses)
# Conflicts:
#	packages/agent/src/compaction/compaction.ts
2026-08-19 01:39:07 +02:00
can1357 130cc9c0a3 fix(tui): also accept legacy CSI ~ Shift+Enter form in /tree selector
Mirrors the composer's raw-sequence fallback (editor.ts:1466) so
\x1b[13;2~ triggers summarize-and-switch instead of being dropped as
shift+f3, completing the parity requested in issue #8821.
2026-08-19 01:38:35 +02:00
can1357 f60e32f9b8 Merge PR #8916: fix(tui): treat bare LF as Shift+Enter in the /tree selector (@re2zero) 2026-08-19 01:38:35 +02:00
can1357 fc24a491fb Merge PR #8915: fix(session): only advertise --resume when the session is on disk (@re2zero) 2026-08-19 01:38:35 +02:00
can1357 74366ee996 Merge PR #8911: fix(session): generate titles from /skill invocation args (@qiyi71w) 2026-08-19 01:38:34 +02:00
can1357 195033a432 Merge PR #8909: fix(coding-agent): condition think prelude guidance for subagents (@olegpulatov) 2026-08-19 01:38:34 +02:00
can1357 c57d710a67 Merge PR #8905: Advisor blocker advisories wake a new turn instead of parking in the immune window (@STRML) 2026-08-19 01:38:34 +02:00
can1357 12cfaceef1 Merge PR #8903: fix(discovery): expand extension-package MCP env placeholders (@drycode) 2026-08-19 01:38:34 +02:00
can1357 22439b6be2 Merge PR #8896: fix(settings): hide excluded search providers from summary (@poorpaper) 2026-08-19 01:38:34 +02:00
can1357 0e8c451f66 Merge PR #8889: fix(cursor): answer interactionQuery and resume idle-stall MCP turns (@bnivanov) 2026-08-19 01:37:01 +02:00
can1357 9975e5c70e docs(coding-agent): fix stale worker-cwd comment in js eval process entry
resolveWorkerSpawnCmd no longer pins the host-entry worker cwd to the
install dir; the subprocess inherits the agent cwd (or the package root
under the bun-test fallback). Update the chdir rationale accordingly.
2026-08-19 01:37:01 +02:00
can1357 cad0cdad48 Merge PR #8883: fix(coding-agent): stop pinning worker subprocess cwd to the install dir (@chuzui) 2026-08-19 01:37:01 +02:00
can1357 0128b2e9fc Merge PR #8879: fix(web-search): abort-protect browser fallback setup and teardown (@kimono381) 2026-08-19 01:37:01 +02:00
can1357 cc5068bd17 Merge PR #8872: fix(tui): render xdev tool images inline (@daandden) 2026-08-19 01:37:01 +02:00
can1357 52cc0f43b3 Merge PR #8866: Preserve MCP tools across PlanYolo handoff (@nick-maderight) 2026-08-19 01:37:00 +02:00
can1357 8a74892c3b Merge PR #8864: fix(task): refresh model roles before agent discovery (@z80dev) 2026-08-19 01:37:00 +02:00
can1357 e972bdb4d1 Merge PR #8857: fix(discovery): honor Claude Code enabledPlugins for marketplace plugins (@drycode) 2026-08-19 01:37:00 +02:00
can1357 60079ffaea Merge PR #8849: perf(read): materialize a local file once per read (@alphastorm) 2026-08-19 01:36:59 +02:00
can1357 d6f59e6807 Merge PR #8842: test(lsp): isolate config tests from the developer's user settings (@pedropaulovc) 2026-08-19 01:36:59 +02:00
can1357 edc4f9ecb4 fix: make provider-lock catalog check case-insensitive
The matcher compares selector ids case-insensitively, but the lock's
bundled-catalog lookup was exact-case: Anthropic/Claude-Opus-5 exact-
matched OpenRouter's flat id while getBundledModel("Anthropic", ...)
missed, silently re-enabling the aggregator shadow the lock exists to
prevent. Scan the named provider's bundled ids case-insensitively.
2026-08-19 01:36:59 +02:00
can1357 a4a54a0ff5 Merge PR #8833: fix: provider-qualified model selectors fail closed instead of shadowing to OpenRouter (@STRML) 2026-08-19 01:36:59 +02:00
can1357 9cf0ab1e8a Merge PR #8826: fix: resolve workspace-member imports in installed git-dep monorepo plugins (@sjawhar) 2026-08-19 01:36:59 +02:00
can1357 b3f48dbf6c Merge PR #8806: fix(tests): isolate TUI scrollback tests from terminal multiplexers (@Huang-404-Q) 2026-08-19 01:36:58 +02:00
can1357 dbae69dace Merge PR #8799: fix(tests): stop the checkout location and system zshrc from failing tests (@Huang-404-Q) 2026-08-19 01:36:58 +02:00
can1357 0e66255ee3 Merge PR #8797: fix(tui): show subagent role and generate real HUD labels (@atacolak) 2026-08-19 01:36:58 +02:00
can1357 9b87aee56e Merge PR #8795: fix(tests): stop ANTHROPIC_BASE_URL from failing the Anthropic suites (@Huang-404-Q) 2026-08-19 01:36:58 +02:00
can1357 8b741e5bc8 Merge PR #8785: fix(update): surface actionable message for unsupported proxy schemes (@roboomp) 2026-08-19 01:36:57 +02:00
can1357 71296b3bd4 Merge PR #8781: fix(discovery): expand OpenCode {env:} and {file:} config tokens (@roboomp) 2026-08-19 01:36:57 +02:00
can1357 5bd6af6a0e Merge PR #8776: fix(nix): install writable home-manager config instead of store symlink (@roboomp) 2026-08-19 01:36:57 +02:00
can1357 b1afa289ba Merge PR #8770: fix(tui): prefer macOS file URL over Finder icon bitmap on image paste (@roboomp) 2026-08-19 01:36:57 +02:00
can1357 d4059fe81f Merge PR #8761: fix(coding-agent): keep thinking-loop retries on the same model (@roboomp) 2026-08-19 01:36:56 +02:00
can1357 db2ce42e8e Merge PR #8753: fix(coding-agent): classify destructive rm with long options as critical (@ghosty-11) 2026-08-19 01:36:56 +02:00
can1357 a34fe0b676 Merge PR #8752: fix(tiny): match title stop string against generated tokens only (@alphastorm)
# Conflicts:
#	packages/coding-agent/test/tiny-title-generator.test.ts
2026-08-19 01:36:56 +02:00
can1357 c4b2eddc4e Merge PR #8750: fix(memory): separate extraction instructions from user input (@alphastorm) 2026-08-19 01:36:32 +02:00
can1357 0167a60de5 Merge PR #8741: fix(biome): add .css to default fileTypes for CSS language support (@re2zero) 2026-08-19 01:36:05 +02:00
can1357 2b35d690b0 docs(coding-agent): align resolveUpdateTarget docstring with symlink-gated manager probes 2026-08-19 01:36:05 +02:00
can1357 b4db9c84e7 Merge PR #8734: fix(coding-agent): resolve update target from the running binary, not the PATH launcher (@roboomp) 2026-08-19 01:36:04 +02:00
can1357 b0bfe7e457 Merge PR #8733: fix(tui): consolidate live tool spinner timers into one shared ticker (@roboomp) 2026-08-19 01:36:04 +02:00
can1357 c41f65ec89 Merge PR #8723: fix(launch): scope daemon prune to the daemons container (@roboomp) 2026-08-19 01:36:03 +02:00
can1357 e88fb70afe Merge PR #8720: fix(compaction): honor /clear reset boundary in prepareCompaction (@roboomp) 2026-08-19 01:36:03 +02:00
can1357 a3fc18fd16 Merge PR #8704: fix(cli): exit cleanly after printing shell completions (@czchen) 2026-08-19 01:36:03 +02:00
can1357 43fcfb4475 Merge PR #8688: fix(mcp): preserve image tool results (@roboomp) 2026-08-19 01:36:02 +02:00
can1357 565d53515b feat(coding-agent): added providers.cacheRetention setting for prompt caching
- Add the `providers.cacheRetention` setting to control prompt-cache retention options per request.
- Forward configured cache retention preferences through the settings-aware stream function.
- Update documentation and test coverage for long cache retention behaviors.
2026-08-19 00:56:50 +02:00