Commit Graph
1337 Commits
Author SHA1 Message Date
can1357 ac3d779fad merge PR #5592 via eval/pr-5592: feat(warp): emit native CLI-agent events 2026-07-17 05:29:29 +02:00
can1357 dee89ed5ae fix(warp): settle deferred handoffs 2026-07-17 05:25:05 +02:00
can1357 b4e46f8fc6 fix(session): tolerated partial extension runners in dispose
Managed-timer cleanup from #5667 is now optional-called so host or test
facades implementing only the dispatch surface do not throw during
dispose; aligned the selector fallback status expectation with #5586's
role-tag casing.
2026-07-17 05:23:00 +02:00
can1357 86b6265ef5 Merge branch 'sweep/2026-07-17' into eval/pr-5592
# Conflicts:
#	packages/coding-agent/test/agent-session-checkpoint-rewind-branch.test.ts
2026-07-17 05:22:52 +02:00
can1357 f36394ef55 style: fixed formatting in merged test and session files 2026-07-17 05:02:31 +02:00
can1357 11a879e993 merge PR #5463 via eval/pr-5463: fix(advisor): anchor context maintenance on provider usage
Semantic merge with #5734 (delivered-prefix reconciliation) and #5748
(fallback chains): kept the coalescing round cap and wip threading,
adopted bounded cursor-preserving maintenance resets and overflow
recovery, and gated late-arrival consumption on coalescing rounds so
both suites' backlog and preserved-updates contracts hold.
2026-07-17 04:55:49 +02:00
can1357 6f42a4375f merge PR #5748 via eval/pr-5748: fix(advisor): apply configured fallback chains 2026-07-17 04:45:46 +02:00
can1357 05e1314bd9 merge PR #5760 via eval/pr-5760: fix(coding-agent): restored xdev for explicit tool sessions
Resolved plan-mode exit overlap with #5662 (kept restore/rollback
structure, routed pending-switch clearing through
clearPendingPlanModelSwitch) and unioned additive test blocks with
#5672/#5662.
2026-07-17 04:42:10 +02:00
can1357 658438b352 merge PR #5747 via eval/pr-5747: fix(session): retained bash ownership across session/branch transitions 2026-07-17 04:40:04 +02:00
can1357 fd6f2e0b94 merge PR #5721 via eval/pr-5721: fix(coding-agent): stop post-turn maintenance turns
Resolved sdk.ts overlap with #5651 (kept getCursorTools alongside the
extracted transformToolCallArguments) and beginDispose overlap with
#5668 (kept both title-generation and autolearn-capture aborts).
2026-07-17 04:40:03 +02:00
can1357 2104c16ec2 merge PR #5686 via eval/pr-5686: fix(cursor): wire advisor tools through the cursor exec bridge
Union-resolved test conflict with PR #5651's mounted-tool bridge tests;
extended the local BlockState helper with resolvedMcpToolCallIds added
by #5651's exec-resolved stamping.
2026-07-17 04:39:06 +02:00
can1357 57ff8a8d25 merge PR #5683 via eval/pr-5683: style(session): satisfy xdev rewind checks 2026-07-17 04:37:12 +02:00
can1357 3489ac46ca merge PR #5672 via eval/pr-5672: fix(session): honored quiet startup for xdev notices 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 f5a52963a7 fix(coding-agent): isolate auto-learn capture lifecycle 2026-07-17 04:07:05 +02:00
can1357 5b781090ae fix(cursor): resolve advisor deletes from live cwd 2026-07-17 04:05: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
Victor Araújo 51ac313a63 fix(coding-agent): rolled back failed tool refreshes 2026-07-16 21:17:28 -03:00
Victor Araújo 0a4b26570f fix(coding-agent): made tool restoration transactional 2026-07-16 20:51:40 -03:00
Victor Araújo c01faf1cf5 fix(coding-agent): gated startup xdev mounts 2026-07-16 20:36:06 -03:00
Victor Araújo c60c182d8b fix(coding-agent): preserved mounted tool safeguards 2026-07-16 20:23:32 -03:00
Victor Araújo 68d905af04 fix(coding-agent): required built-in xdev reader 2026-07-16 20:09:39 -03:00
Victor Araújo 0f5ba296b8 fix(coding-agent): cleared PlanYolo state before restore 2026-07-16 19:57:28 -03:00
Victor Araújo 8d06327127 fix(coding-agent): preserved xdev mode transitions 2026-07-16 19:45:01 -03:00
Victor Araújo 5704c75081 fix(coding-agent): required built-in xdev transport 2026-07-16 19:40:12 -03:00
Victor Araújo 63886e8e2a fix(coding-agent): respected runtime tool selection 2026-07-16 19:30:05 -03:00
Victor Araújo 2f6316319f fix(coding-agent): preserved xdev transport capabilities 2026-07-16 19:16:21 -03:00
Victor Araújo 2e95b90366 fix(coding-agent): centralized xdev transport lifecycle 2026-07-16 19:10:37 -03:00
Victor Araújo 6e86dc7b19 fix(coding-agent): preserved xdev presentation state 2026-07-16 19:01:18 -03:00
Victor Araújo 323ef8ec73 fix(coding-agent): restored xdev for explicit tools 2026-07-16 18:41:58 -03:00
roboomp 203b959056 fix(advisor): restored primary after fallback cooldown
- Retained the advisor's original selector and thinking level while progressing through fallback candidates.
- Restored the configured primary before later advisor turns once its selector cooldown expired.
- Covered quota fallback restoration under the default cooldown-expiry policy.
2026-07-16 20:08:51 +00:00
roboomp e6de8142fe fix(session): retained bash ownership across session/branch transitions
Late user-initiated bash results and minimized-output artifacts were
recorded against whichever session or branch was active when execution
finished, not the one that started it. executeBash() awaited the result
then wrote through the mutable live sessionManager, while pending bash
messages carried no session/branch ownership and the minimized-output
callback used the live manager. A session change during execution
redirected transcript entries and artifacts to the replacement session
or branch, and a dropped session could be recreated by a straggler.

Capture a bash ownership target when execution starts and transition it
whenever the active session or transcript leaf changes. Late results and
minimized artifacts route to the originating session/branch (via a
detached clone when the file changed, or an off-leaf branch append when
the leaf moved), are discarded for an intentional drop, and ownership is
released on failed transitions. RPC dispatch concurrency and immediate
abort_bash behavior are unchanged.

Fixes #5743
2026-07-16 19:56:27 +00:00
roboomp 777e5e0982 fix(advisor): applied configured fallback chains
- Switched advisor turns to the next configured model after provider quota or rate-limit failures.
- Emitted fallback applied and succeeded lifecycle events without reporting advisor unavailability after recovery.
- Added an end-to-end advisor quota fallback regression test.

Fixes #5740
2026-07-16 19:56:24 +00:00
roboomp e518bc22c4 fix(coding-agent): stopped post-turn maintenance turns
- Prevented compaction from reopening a settled terminal answer unless queued work or an active goal remains.
- Ran auto-learn capture in an abortable detached agent with constrained tools and isolated provider state.
- Replaced primary-turn capture coverage with private-capture regression tests.

Fixes #5715
2026-07-16 14:55:27 +00:00
robomp-bot 06f1f092a0 fix(coding-agent): mark TTSR and rewind continuations 2026-07-16 22:14:53 +09:00
robomp-bot 8a6017847b fix(coding-agent): mark session_stop continuations as willContinue 2026-07-16 20:35:01 +09:00
robomp-bot c972e44be8 fix(coding-agent): skip Warp stop when agent_end will continue 2026-07-16 20:00:45 +09:00
lycaon 9331b95eee style(session): satisfy xdev rewind checks 2026-07-16 04:49:05 -06:00
roboomp 1824faf21e fix(advisor): recognized authorized cursor deletes
Cursor synthesizes an executed native delete as a tool call named delete. When write or edit enabled native deletion, the advisor quarantine allowlist still omitted that synthetic name and rolled back the completed turn.

Add delete to the allowlist from the same mutation-capability boolean that enables native deletion, with regression coverage for the quarantine path.

Fixes #5680
2026-07-16 10:46:42 +00:00
lycaon 2e5fe68d63 test(session): harden xdev rewind coverage 2026-07-16 04:45:37 -06:00
roboomp 05af550d81 fix(cursor): gated native delete for read-only advisors
CursorExecHandlers.executeDelete removes files directly via fs.rmSync,
bypassing the tool map that every other exec handler consults. A background
advisor with the default read-only set (advise/read/grep/glob) could delete
workspace files from a Cursor deleteArgs frame despite holding no mutating
tool.

Add an allowNativeDelete option (default allowed, preserving the primary
agent's behavior) and set it for the advisor only when it was granted a
file-mutating tool (write/edit).

Fixes #5680
2026-07-16 10:37:25 +00:00
roboomp 0b709eff29 fix(cursor): wired advisor tools through the cursor exec bridge
The built-in advisor runs in its own Agent that was constructed without
cursorExecHandlers. On the Cursor provider every tool executes server-side
and is dispatched back through the client's exec handlers, so each advisor
tool call — including the MCP advise tool — came back toolNotFound and no
advice was ever routed. Same advisor worked on every other provider.

Build a Cursor exec bridge over each advisor's granted tool set and pass it
(plus a live cwd resolver) when constructing the advisor Agent, mirroring the
primary agent's bridge. The advisor-layer analog of #5650/#5651.

Fixes #5680
2026-07-16 10:25:16 +00:00
lycaon b26481bb7f fix(session): recognize xdev checkpoint and rewind results 2026-07-16 03:53:01 -06:00
roboomp d815a43895 fix(session): honored quiet startup for xdev notices
- Suppressed user-visible xd:// mount notices when startup.quiet is enabled.
- Preserved hidden model-facing mount delta steering.
- Added regression coverage for both behaviors.

Fixes #5670
2026-07-16 07:25:27 +00: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 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
roboompandcan1357 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 1e85462cff fix: reconciled merged sources with current main APIs
- restored capability reset import in agent-session refreshSkills
- fixed renamed credential entry reference in auth-storage org fields
- aligned xai web-search fetch mock and refresh-race test with current typings
2026-07-16 03:58:41 +02:00