-
Notifications
You must be signed in to change notification settings - Fork 0
feat(parallel-agents-ui): scaffold side-bar subagent view #27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
c7b2412
289cd7c
aaeb431
cb926a1
a6bf76b
a00a7f6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,63 @@ | ||
| # Parallel agents UI | ||
|
|
||
| Multiple Zeus subagents run concurrently. Each one needs a visible, cancellable, observable surface — but **never as the editor's primary view**. | ||
|
|
||
| This is the deliberate counter-positioning vs Cursor 3 / Antigravity 2.0 / Windsurf Cascade, all of which made the agent manager the home screen. The market signal (Pragmatic Engineer Feb 2026: Claude Code "most loved" 46%, more than 2× Cursor) says many senior developers prefer agents as a tool, not as their workflow's center. | ||
|
|
||
| ## Where the UI lives | ||
|
|
||
| An **auxiliary bar view** (the right-side container in VS Code's workbench — formally "auxiliary bar"; the "side bar" is the left-side container by VS Code's own naming). Not the activity bar's first slot, not the editor center. Closeable. Reopen via command palette. | ||
|
|
||
| ```text | ||
| ┌──┬───────────────────────────┬─ Parallel agents view ──────────┐ | ||
| │ │ │ ▶ docs-writer streaming… │ | ||
| │A │ Editor (primary) │ tool: read_file │ | ||
| │c │ user code, just like │ ▶ test-writer waiting on │ | ||
| │t │ VS Code │ tool approval │ | ||
| │iv│ │ ▼ security-reviewer done · │ | ||
| │it│ │ 3 findings │ | ||
| │y │ │ findings.md modified │ | ||
| │ │ │ │ | ||
| ├──┴───────────────────────────┴─────────────────────────────────┤ | ||
| │ Status bar ⚡ 2 agents running · $0.41 today · cache: 92% hit │ | ||
| └────────────────────────────────────────────────────────────────┘ | ||
| ↑ status item is always visible; clicking it focuses the | ||
| auxiliary-bar view (right by default, draggable to left). | ||
| The status bar sits at the bottom — below both the editor | ||
| and the auxiliary bar — per VS Code's workbench layout. | ||
| ``` | ||
|
|
||
| ## Behavior | ||
|
|
||
| - New agent: `Ctrl+K Ctrl+N` (chord) opens a quick-pick of skills from `.zeus/skills/`, runs the chosen one. The earlier draft used `Ctrl+Shift+A`, but that clashes with VS Code's `toggleSearchEditorContextLines` in the Search Editor; using a chord keeps the new shortcut out of every default scope | ||
| - Each agent: own subtree in the view with timeline (tool calls, text deltas), final summary, cancel button, "open in chat" button | ||
| - Done agents move to "Recent" collapsed group; never auto-dismissed | ||
| - A finished agent's file edits are surfaced as a diff PR-style review, not auto-applied | ||
| - Notifications: agent completion → optional status bar pulse, no modal | ||
|
|
||
| ## What this UI does **not** do | ||
|
|
||
| - It is **not** the editor home page | ||
| - It does not auto-open on startup unless the user pinned it | ||
| - It does not show a "create a project plan" or "decompose this PRD" prompt | ||
| - It does not encourage running 10 agents at once just because you can | ||
|
|
||
| ## File contracts | ||
|
|
||
| - Source of truth for runnable skills: `.zeus/skills/*.md` (loaded by `feat/agent-sdk`) | ||
| - Source of truth for running agents: `IAgentRuntime` events (from `feat/agent-sdk`) | ||
| - Cost / cache state: subscribed to from `feat/prompt-cache-hud` shared store | ||
|
|
||
| ## Acceptance criteria (real impl) | ||
|
|
||
| - [ ] Quick-pick of skills picks one and starts it | ||
| - [ ] Auxiliary bar shows live tool-call timeline per agent | ||
| - [ ] Cancel works mid-stream | ||
| - [ ] Done agents persist in the view for the session | ||
| - [ ] No auto-open behavior on startup | ||
| - [ ] File edits are shown as diff, never applied without user "Apply" | ||
| - [ ] Keyboard: `Ctrl+K Ctrl+N` new agent, `Ctrl+K Ctrl+A` focus list — both chords, to avoid VS Code defaults (`Ctrl+Shift+A` is `toggleSearchEditorContextLines`; `Ctrl+Shift+L` is `editor.action.selectHighlights`) | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The shortcut
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The risk of an accidental |
||
|
|
||
| ## Status | ||
|
|
||
| Slot reserved at `src/vs/workbench/contrib/parallelAgents/`. | ||
|
kanywst marked this conversation as resolved.
|
||
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,20 @@ | ||||||||||
| # `parallelAgents` contribution | ||||||||||
|
|
||||||||||
| Slot for the auxiliary-bar view that surfaces running and completed subagents. Design: [`docs/zeus-parallel-agents-ui.md`](../../../../../docs/zeus-parallel-agents-ui.md). | ||||||||||
|
|
||||||||||
| The view is deliberately **not** the editor's home surface — Zeus's counter-positioning vs Cursor 3 / Antigravity 2.0 / Windsurf Cascade. | ||||||||||
|
|
||||||||||
| ## Canonical IDs | ||||||||||
|
|
||||||||||
| The view container, view, and command identifiers are exported from [`common/parallelAgents.ts`](./common/parallelAgents.ts): | ||||||||||
|
|
||||||||||
| - `PARALLEL_AGENTS_VIEW_CONTAINER_ID = 'zeus.parallelAgents'` | ||||||||||
| - `PARALLEL_AGENTS_VIEW_ID = 'zeus.parallelAgents.list'` | ||||||||||
| - `PARALLEL_AGENTS_COMMAND_NEW = 'zeus.parallelAgents.new'` | ||||||||||
| - `PARALLEL_AGENTS_COMMAND_FOCUS = 'zeus.parallelAgents.focus'` | ||||||||||
|
Comment on lines
+13
to
+14
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Update the command IDs in the documentation to match the suggested naming convention in the code.
Suggested change
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Skipping for the same reason as the sibling thread on |
||||||||||
|
|
||||||||||
| Other branches (status-bar HUD, command palette, tests) should import these constants rather than retype the string IDs. Default location: right-hand **auxiliary bar**, `hideIfEmpty: true`. The activity bar's first slot is intentionally not taken; the view is opened via command palette or by clicking the agent count in the status bar. | ||||||||||
|
|
||||||||||
| ## Why no `*.contribution.ts` yet | ||||||||||
|
|
||||||||||
| Registering a view container with no view body, or with a view that only renders "loading…", ships a broken UI as soon as this PR lands. The real registration is paired with the runtime stream in `feat/agent-sdk` (#26), where the view becomes interactive on day one and consumes the constants in `common/parallelAgents.ts`. | ||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,18 @@ | ||||||||||
| /*--------------------------------------------------------------------------------------------- | ||||||||||
| * Copyright (c) Microsoft Corporation. All rights reserved. | ||||||||||
| * Licensed under the MIT License. See License.txt in the project root for license information. | ||||||||||
| *--------------------------------------------------------------------------------------------*/ | ||||||||||
|
|
||||||||||
| // Stable identifiers for the parallel-agents auxiliary-bar view. Exported | ||||||||||
| // here (rather than left as strings in the README) so the status-bar item | ||||||||||
| // in feat/prompt-cache-hud, command-palette entries, and tests can all | ||||||||||
| // import a single source of truth without duplicating literals. | ||||||||||
| // | ||||||||||
| // The real view registration lives in feat/agent-sdk; it consumes these | ||||||||||
| // constants when wiring up ViewContainerRegistry / ViewsRegistry. | ||||||||||
|
|
||||||||||
| export const PARALLEL_AGENTS_VIEW_CONTAINER_ID = 'zeus.parallelAgents'; | ||||||||||
| export const PARALLEL_AGENTS_VIEW_ID = 'zeus.parallelAgents.list'; | ||||||||||
|
|
||||||||||
| export const PARALLEL_AGENTS_COMMAND_NEW = 'zeus.parallelAgents.new'; | ||||||||||
| export const PARALLEL_AGENTS_COMMAND_FOCUS = 'zeus.parallelAgents.focus'; | ||||||||||
|
Comment on lines
+17
to
+18
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To align with VS Code's internal naming conventions and reduce the risk of ID collisions, consider adding a
Suggested change
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. VS Code's own conventions don't include a |
||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The shortcut
Ctrl+K Ctrl+N(andCtrl+K Ctrl+Amentioned later) uses a chord where the second key also requires theCtrlmodifier. In VS Code, chords are more commonly implemented asCtrl+K <key>(e.g.,Ctrl+K N). Requiring the modifier for the second key is less common and can be slightly more cumbersome for users. Consider ifCtrl+K NandCtrl+K Awould be more idiomatic.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Both styles are established VS Code conventions — see core defaults
Ctrl+K Ctrl+S(Open Keyboard Shortcuts),Ctrl+K Ctrl+B(Toggle Side Bar),Ctrl+K Ctrl+I(Show Hover),Ctrl+K Ctrl+W(Close All Editors). KeepingCtrl+on the second key matches that family and keeps the cognitive model uniform with the surrounding workbench shortcuts. We'd be the odd one out usingCtrl+K Nhere.