Commit Graph

13663 Commits

Author SHA1 Message Date
can1357 4d7e51413b merge PR #5671 via eval/pr-5671: fix(bash): drained piped output before timeout return 2026-07-17 04:37:11 +02:00
can1357 8ac271b90b merge PR #5669 via eval/pr-5669: fix(tui): preserve inline images in scrollback 2026-07-17 04:37:11 +02:00
can1357 5903894e66 merge PR #5668 via eval/pr-5668: fix(session): preserved provider session for titles 2026-07-17 04:37:10 +02:00
can1357 e56ac80b1d merge PR #5667 via eval/pr-5667: fix(extensions): isolated self-scheduled callbacks from killing the session 2026-07-17 04:37:10 +02:00
can1357 3f1f90be3b merge PR #5662 via eval/pr-5662: fix(plan): reapply plan role model when reassigned mid-planning 2026-07-17 04:37:10 +02:00
can1357 004445a954 merge PR #5660 via eval/pr-5660: fix(plugins): preserved commonjs sibling requires 2026-07-17 04:37:10 +02:00
can1357 4205938cec merge PR #5656 via eval/pr-5656: fix(tui): constrained gfm autolinks to valid left boundary 2026-07-17 04:37:09 +02:00
can1357 bcc7d34a9a merge PR #5651 via eval/pr-5651: fix(cursor): gated mounted device execution through approval 2026-07-17 04:37:09 +02:00
can1357 30b9e8c158 merge PR #5641 via eval/pr-5641: fix(coding-agent): migrate legacy nested autoqa/todo settings keys 2026-07-17 04:37:09 +02:00
can1357 2620c18c47 merge PR #5637 via eval/pr-5637: fix(irc): scope mid-park send gate to the owning lifecycle 2026-07-17 04:37:09 +02:00
can1357 731448c53c merge PR #5636 via eval/pr-5636: fix(ai): deferred Cursor completion until protocol end 2026-07-17 04:37:09 +02:00
can1357 daea3ab341 merge PR #5586 via eval/pr-5586: fix(tui): used role tag in model selector status messages 2026-07-17 04:37:08 +02:00
can1357 4ded610d38 merge PR #5500 via eval/pr-5500: fix(review): fall back to per-file API when PR diff exceeds 20k lines 2026-07-17 04:37:08 +02:00
can1357 2b78c6d798 merge PR #5486 via eval/pr-5486: fix(cli): aliased clear to new session 2026-07-17 04:37:08 +02:00
can1357 6d8b7e9953 merge PR #5475 via eval/pr-5475: fix(tui): aligned ask "Other" custom-input chrome to prompt gutter 2026-07-17 04:37:08 +02:00
can1357 1f0a56d6b8 merge PR #5414 via eval/pr-5414: fix(tui): restricted trailing slash re-anchoring 2026-07-17 04:37:08 +02:00
can1357 421584d2d0 test(tui): cover Enter skill draft preservation 2026-07-17 04:26:04 +02:00
can1357 e7737110f0 merge: resolve PR 5414 against current main
# Conflicts:
#	packages/tui/src/autocomplete.ts
#	packages/tui/src/components/editor.ts
#	packages/tui/test/editor-autocomplete-actions.test.ts
2026-07-17 04:25:43 +02:00
can1357 bf068c4228 fix(tui): retain skill stale-prefix guard 2026-07-17 04:24:51 +02:00
can1357 e207a49c18 chore: restore unrelated prompt whitespace 2026-07-17 04:23:43 +02:00
can1357 7b693f3d0b test(cli): cover clear alias collision 2026-07-17 04:23:23 +02:00
can1357 2d41785b3a fix(cursor): prevent duplicate MCP execution 2026-07-17 04:18:20 +02:00
can1357 5d3ad91900 fix(plugins): preserve CommonJS ESM interop 2026-07-17 04:18:10 +02:00
can1357 1713364b25 fix(plan): clear superseded deferred role switches 2026-07-17 04:17:03 +02:00
can1357 f3f5745200 fix(review): guard per-file diff fallback limits 2026-07-17 04:16:46 +02:00
can1357 b0d04e5173 fix(ai): fixed snapshot validation for login-sourced API keys
- Added optional `source?` field with value `'login'` to `apiKeyCredentialSchema` so snapshots accept login-sourced API keys.
- Updated CHANGELOG with a fixed entry describing the correction.
- Added a test verifying that a snapshot containing `source: "login"` passes client wire validation.
2026-07-17 04:15:58 +02:00
can1357 1074332098 fix(task): abort background label generation 2026-07-17 04:15:40 +02:00
can1357 8d9ba57c1a test(bash): keep timeout regression additive 2026-07-17 04:10:28 +02:00
can1357 a140f21995 fix(tui): retain transcript around image overlays 2026-07-17 04:06:39 +02:00
can1357 1424cae066 feat(coding-agent): added id-prefixed wildcard support to retry fallback chains
- Implemented parsing of id-prefixed wildcard keys and entries, allowing provider-specific prefixes in retry fallback configuration.
- Added logic to re-prefix failing model IDs and to match id-prefixed keys, with validation of provider existence.
- Updated settings schema description and changelog, and added tests covering the new behavior.
2026-07-17 03:49:43 +02:00
can1357 6e0b9d34f2 feat(catalog): increased maxTokens to 65,536 for Kimi K2.7-Code models on Fireworks
- Updated models.json to set maxTokens to 65536 for Kimi K2.7-Code entries.
- Adjusted openai-compat logic to use a new 65,536 ceiling for K2.7-Code while preserving the 32,768 cap for older K2 models.
- Modified tests to verify the new token limit and ensure K2.7-Code models are excluded from the older cap.
2026-07-17 03:49:38 +02:00
can1357 c0d0ad7629 merged PR #5538: fix(agent): surface provider stream failures 2026-07-16 18:38:53 +02:00
roboomp e3b117678d fix(session): preserved provider session for titles
- Used the active provider session id for title credential selection.
- Covered explicit provider-session credential stickiness alongside disposal cancellation.
2026-07-16 07:25:06 +00:00
roboomp 3e38a5b514 fix(bash): drained piped output before timeout return
- Delayed reader cancellation so pipeline consumers can flush after producers are terminated.
- Kept the JavaScript watchdog behind bounded native timeout cleanup.
- Added native and executor regressions for timeout-time output draining.

Fixes #5316
2026-07-16 07:22:58 +00:00
roboomp 3cb9258875 fix(session): aborted title generation during dispose
- Routed automatic first-input and replan title requests through AgentSession lifecycle cancellation.
- Propagated disposal aborts to online provider and local tiny-model title generation.
- Added a regression test proving an in-flight title request settles when disposal begins.

Fixes #5666
2026-07-16 07:17:27 +00:00
roboomp 8a61515819 fix(extensions): isolated self-scheduled callbacks from killing the session
Extension-scheduled setInterval/setTimeout/detached callbacks ran outside
the handler-dispatch try/catch, so a throw surfaced as a process-level
uncaughtException and the global postmortem handler tore down the whole
session instead of isolating the misbehaving extension.

- Added ManagedTimers backing sanctioned ctx.setInterval/setTimeout/clearTimer:
  callbacks run with handler-dispatch isolation (throw/rejection logged and
  routed through onError), handles are unref'd, and all are cleared on
  session_shutdown.
- Wired the helpers into ExtensionRunner.createContext and the runner-less
  command-context fallback; onSession now inherits the runner context.
- Documented in-process no-isolation behavior and the managed timers in
  docs/extensions.md and docs/skills/authoring-extensions.md.

Fixes #5664
2026-07-16 07:17:10 +00:00
Jeff Scott Ward 980ba0be8a fix(tui): preserve inline images in scrollback 2026-07-16 03:16:29 -04:00
roboomp 8f15dbf106 fix(plugins): preserved commonjs sibling requires
- Added a graph-owned CommonJS evaluator with shared module.exports and cycle-aware caching.

- Covered sibling require interop across ESM-imported CommonJS modules.

Fixes #5658
2026-07-16 06:11:32 +00:00
roboomp 97649df208 fix(plan): reapply plan role model when reassigned mid-planning
In plan mode the active session model is the plan-role model, but
reassigning that role through the model hub only wrote settings and
never moved the live session onto the new model — planning continued on
the model plan mode was entered with until the next entry.

Subscribe InteractiveMode to onModelRolesChanged and, while plan mode is
active, re-resolve the plan role and switch onto it (deferring to the
next turn boundary when a turn is streaming). Extract the transition
decision into a pure resolvePlanModelTransition() helper with tests.

Fixes #5657
2026-07-16 06:04:18 +00:00
roboomp 83c7e69306 test(plugins): covered native addon commonjs wrapping
- Exercised a graph-owned CommonJS dependency whose native addon require is pinned before synchronous wrapping.

Fixes #5658
2026-07-16 05:58:40 +00:00
roboomp 2cf0c402f9 fix(plugins): refreshed commonjs helpers on reload
- Rebuilt synchronous CommonJS wrappers from current source for every legacy extension load.

- Added a same-process helper edit regression.

Fixes #5658
2026-07-16 05:53:19 +00:00
roboomp 33340f82ce fix(plugins): restored legacy commonjs compatibility
- Added DefaultPackageManager discovery compatibility for legacy extensions.

- Loaded graph-owned CommonJS modules through synchronous default bridges.

Fixes #5658
2026-07-16 05:41:35 +00:00
roboomp 176a3ab400 fix(tui): constrained gfm autolinks to valid left boundary
Marked's bundled url tokenizer fired the www./http(s):///ftp:// extended
autolink after any preceding character, so a local path such as
~/meta/www.share/blog/index.dj was mangled into a http://www.share/... link.

Added an inline tokenizer extension that consumes only the scheme prefix as
literal text when it is glued to an invalid left boundary, letting genuine
autolinks at start-of-line/whitespace/*_~( fall through to marked unchanged.

Fixes #5652
2026-07-16 04:57:14 +00:00
can1357 6ae7cdbf97 feat(ai): added automatic credential rotation for invalidated OAuth tokens
- Implement `isInvalidatedOAuthTokenError` to identify specific upstream auth failures.
- Enable automatic credential rotation in `AuthStorage` and stream retries when an invalidated token is detected.
- Update `proxy.test.ts` to correctly handle `NO_PROXY` and `no_proxy` environment variables during testing.
2026-07-16 05:39:37 +02:00
roboomp 8b0402b32c fix(cursor): gated mounted device execution through approval
Built-in xd:// devices are mounted before the SDK wraps registry tools in ExtensionToolWrapper, so Cursor executed them via tool.execute() without the deny/prompt approval gate that write xd:// enforces. Wrap unwrapped devices in the Cursor resolver, skipping already-wrapped dynamic mounts.

Fixes #5650
2026-07-16 03:31:13 +00:00
roboomp d8aaffa814 fix(cursor): resolved tools against the live model per call
The context refresh captured the run-start model, so mid-run switches into or out of cursor-agent (retry fallback, prewalk, plan-yolo) sent the wrong tool set. Resolve supplemental tools against this.#state.model each call.

Fixes #5650
2026-07-16 03:21:23 +00:00
roboomp 8386ab2c0b fix(cursor): exposed mounted xd devices to cursor-agent
Forwarded the session xd registry into Cursor provider tool contexts.

Routed Cursor MCP execution through the mounted registry fallback and added regression coverage for built-in devices and external MCP tools.

Fixes #5650
2026-07-16 03:15:32 +00:00
can1357 9fd19696e2 chore: bump version to 17.0.1 2026-07-16 04:56:03 +02:00
roboomp ed4ddcba6c fix(session): await session.dispose() on non-interactive exit paths
Print-mode assistant-error/aborted exit, RPC pi.shutdown() and stdin-EOF
shutdowns, and the extension command-context shutdown() called
process.exit() before (or racing) session.dispose(), skipping the bounded
browser reaper (releaseTabsForOwner) installed in dispose(). An OMP-owned
Chromium could survive the parent and reparent to PID 1.

Route all four graceful paths through the idempotent, promise-memoized
session.dispose() and await it before the final exit. The RPC
performShutdown no longer emits session_shutdown directly (dispose() emits
it), avoiding a double emit.

Fixes #5643
2026-07-16 04:29:55 +02:00
can1357 f9977f5c69 fix: reconciled test contracts with merged behavior changes
- google boolean-subschema coercion, column-cap truncation semantics, caller-owned plan-review hide, rebuild image-visibility setting
- added flushPendingCommandOutput and refreshSkills stubs to event-controller and ACP mock contexts
- removed the never-passing acp stdio EOF subprocess test (covered by postmortem-epipe contracts)
2026-07-16 04:27:53 +02:00