feat: add team TUI integration — sidebar, header, sync, and team dialog#12732
Open
ugoenyioha wants to merge 4 commits intoanomalyco:devfrom
Open
feat: add team TUI integration — sidebar, header, sync, and team dialog#12732ugoenyioha wants to merge 4 commits intoanomalyco:devfrom
ugoenyioha wants to merge 4 commits intoanomalyco:devfrom
Conversation
Contributor
|
Thanks for your contribution! This PR doesn't have a linked issue. All PRs must reference an existing issue. Please:
See CONTRIBUTING.md for details. |
This was referenced Feb 8, 2026
Contributor
|
The following comment was made by an LLM, it may be inaccurate: No duplicate PRs found |
f61fc2c to
f4eb609
Compare
704f2ec to
5429df4
Compare
cf2bc07 to
956ee21
Compare
- Add agent-teams.mdx documentation page - Update all TUI components to latest dev versions - Sync dialog-team, prompt, sync context, session views
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds TUI integration for agent teams (Fixes #12711). Depends on #12730 and #12731 — merge those first.
This is PR 3/3. It surfaces the team system in the terminal UI — sidebar panels, header badges, status bars, keyboard navigation between teammates, a team dialog, and real-time event synchronization. The LLM creates and manages teams via tools (PR 2); this PR gives the user visibility and navigation.
What's included
Team dialog (
component/dialog-team.tsx— 190 lines)*active,oidle,!interrupted,xshutdown) and agent typemto message (shows toast hint),lto jump to lead session/team/by-session/:sessionIDon openSidebar (
routes/session/sidebar.tsx— +387 lines)Two new sidebar components that appear when a team is active:
TeamLeadSidebar(for the lead session):[awaiting approval],[approved])TeamMemberSidebar(for teammate sessions):formatToolActivity())Helper functions:
memberColor()— consistent color assignment per teammateteamTaskIcon()/teamTaskColor()— status-appropriate icons and colors for taskstruncate()— safe string truncation for sidebar displayformatToolActivity()— extracts last tool call from message parts for activity displayHeader (
routes/session/header.tsx— +159 lines)TeamBadge: Shows team name with active/idle/total member counts (lead view) ormemberName @teamName(teammate view)TeamStatusBar: Persistent bar below header showing all teammates with status icon, model, plan approval state, and current task. Clickable → navigate to teammate session. Shows task progress (completed/total) and delegate mode indicatormemberStatusIcon()— maps status to ASCII iconssidebarVisibleprop to coordinate displaySync store (
context/sync.tsx— +160 lines)teamstore field:{ [sessionID: string]: TeamSyncEntry }with team name, role, members, tasks, delegate stateteam.created— adds lead entry to storeteam.member.spawned— adds member entry + updates lead's member listteam.member.status— updates member status across all sessions in the teamteam.task.updated— reconciles task list for all sessions in the teamteam.task.claimed— updates task assignee and statusteam.cleaned— removes all team entries from storesdk.fetchto/team/by-session/:sessionID)reconcile()from SolidJS for efficient task list updatesSession layout (
routes/session/index.tsx— +181 lines)selectedTeammatesignal for sidebar teammate selectionteamInfo/teamMembersmemos derived from sync storeShift+Up/Shift+Downto cycle through teammates + leadnext teammate,previous teammate,go to lead,delegate to teamcommandsPrompt integration (
component/prompt/index.tsx— +54 lines)selectedTeammate,onTeammateMessageSentteamBusymemo — shows indicator when a team message is being sentteam_messageinstead of normal prompt submissionSDK context (
context/sdk.tsx)fetchpassthrough prop on SDK context — needed for team API calls in direct-RPC mode where barefetch()can't reach the internal serverUser experience
As the lead:
team_create→ header shows team badge, status bar appearsShift+Down/Upto cycle between teammate sessions and review their workCtrl+Tor command palette) shows full overview with clickable navigationAs a teammate:
memberName @teamNamebadgeFiles changed
src/cli/cmd/tui/component/dialog-team.tsxsrc/cli/cmd/tui/routes/session/sidebar.tsxsrc/cli/cmd/tui/routes/session/index.tsxsrc/cli/cmd/tui/context/sync.tsxsrc/cli/cmd/tui/routes/session/header.tsxsrc/cli/cmd/tui/component/prompt/index.tsxsrc/cli/cmd/tui/context/sdk.tsxStack
PR 3/3 — merge in order: