Skip to content

Add an Agent Inbox catch-up action - #335344

Draft
Megan Rogge (meganrogge) wants to merge 2 commits into
mainfrom
agents/agent-inbox-hackathon
Draft

Add an Agent Inbox catch-up action#335344
Megan Rogge (meganrogge) wants to merge 2 commits into
mainfrom
agents/agent-inbox-hackathon

Conversation

@meganrogge

Copy link
Copy Markdown
Collaborator

Summary

Adds a focused Catch Up on Agents action to the Agents window so users can quickly triage work across sessions.

The Agent Inbox prioritizes:

  • sessions that need input
  • sessions with failing CI
  • failed sessions
  • completed unread sessions that are ready to review
  • sessions that are still running

Selecting a result opens that session, while modifier-click behavior can open it to the side. The action reuses the existing provider-neutral session model, blocked-session CI detection, status icons, and quick-pick presentation. It is hidden when AI features are disabled.

Validation

  • npm run typecheck-client
  • npm run valid-layers-check
  • focused Sessions Catch Up, picker, and action tests
  • targeted ESLint and formatter verification
  • git diff --check

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 9600876a-8143-4338-b588-d956e3ada89b
Copilot AI balanced review requested due to automatic review settings September 9, 2026 19:57
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 9600876a-8143-4338-b588-d956e3ada89b

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

One or more issues must be addressed before approval.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review tier: Lite
Findings: 1 Medium severity

New issues introduced by this change (1)
Severity Finding
Medium severity src/​vs/​sessions/​contrib/​sessions/​browser/​sessionsCatchUp.ts — The new action's accept path is not covered by a focused test: normal open, background accept, and…
What changed in this PR

Adds an AI-gated Agent Inbox quick-pick action for triaging sessions.

Changes:

  • Groups sessions by attention priority and status.
  • Reuses shared session quick-pick presentation.
  • Adds menu registration and grouping tests.
File Description
src/​vs/​sessions/​contrib/​sessions/​test/​browser/​sessionsCatchUp.test.ts Updated as part of this pull request.
src/​vs/​sessions/​contrib/​sessions/​browser/​sessionsPicker.ts Updated as part of this pull request.
src/​vs/​sessions/​contrib/​sessions/​browser/​sessionsCatchUp.ts Updated as part of this pull request.
src/​vs/​sessions/​contrib/​sessions/​browser/​sessionsActions.ts Updated as part of this pull request.
src/​vs/​sessions/​contrib/​sessions/​browser/​sessions.contribution.ts Updated as part of this pull request.
Suppressed comments (2)

src/vs/sessions/contrib/sessions/browser/sessionsCatchUp.ts:165

  • The modifier/background opening path is duplicated from sessionsActions.ts (openSelected). Please extract the shared operation and use it from both pickers; otherwise a later change to side placement, activation, or preserveFocus can make the two session pickers behave differently.
				return;
			}
			const toSide = picker.keyMods.ctrlCmd || picker.keyMods.alt;
			if (toSide && activeSessionId !== undefined && selected.session.sessionId !== activeSessionId) {
				sessionsService.insertAt(selected.session, activeSessionId, 'right', !event.inBackground);

src/vs/sessions/contrib/sessions/browser/sessionsCatchUp.ts:163

  • The side-open branch bypasses the SessionsService open lifecycle by calling insertAt directly. Unlike openSession/openSessionToSide, this does not resolve superseded resources or run provider prepareSessionForOpen (and can also leave a custom view mounted), so modifier-opening a legacy or not-yet-prepared session can mount the wrong/uninitialized facade. Please add/use an anchored side-open path that performs the normal resolution and preparation before inserting beside the active session.
			const toSide = picker.keyMods.ctrlCmd || picker.keyMods.alt;

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +156 to +165
disposables.add(picker.onDidAccept(event => {
const selected = picker.selectedItems[0];
if (!selected || selected.kind !== 'session') {
return;
}
const toSide = picker.keyMods.ctrlCmd || picker.keyMods.alt;
if (toSide && activeSessionId !== undefined && selected.session.sessionId !== activeSessionId) {
sessionsService.insertAt(selected.session, activeSessionId, 'right', !event.inBackground);
} else {
void sessionsService.openSession(selected.session.resource, { preserveFocus: event.inBackground, source: 'sessionsList' }).catch(onUnexpectedError);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants