Files
gemini-cli/plans/TASK-04.md
Taylor Mullen 1c5646b68d feat(cli): implement startup team selection dialog and UI integration
- Add TeamSelectionDialog component for team discovery UX
- Intercept startup flow in AppContainer to show team selection if needed
- Update DialogManager to orchestrate team selection UI
- Add handleTeamSelect and isTeamSelectionActive to UI contexts
- Fix pre-existing StyledLine compilation error in TableRenderer
- Refactor promptProvider-teams.test.ts to resolve type errors
- Add unit tests for TeamSelectionDialog
- Fix ESLint warnings for exhaustive-deps in AppContainer
- Resolve syntax corruptions in AppContainer.tsx and DialogManager.tsx
2026-04-01 15:58:16 -07:00

40 lines
1.5 KiB
Markdown

# TASK-04: CLI UX: Startup Team Selection Dialog
## Objective
Introduce a selection dialog during the CLI startup process to allow users to
choose an agent team, browse existing teams, or create new ones.
## Implementation Details
### 1. New UI Component (`packages/cli/src/ui/components/TeamSelectionDialog.tsx`)
- [ ] Create a new React/Ink component that displays a list of available teams.
- [ ] Options should include:
- [ ] Specific discovered teams (name + description).
- [ ] "No Team" (continue as individual agent).
- [ ] "Browse Team Marketplace" (placeholder for MVP).
- [ ] "Create New Team" (placeholder for MVP).
- [ ] Use `SelectInput` from `@inkjs/select-input` for selection.
### 2. Startup Flow (`packages/cli/src/ui/AppContainer.tsx`)
- [ ] Add state: `isTeamSelectionActive: boolean`.
- [ ] In `useEffect` or `useLayoutEffect` that runs once after initialization:
- [ ] If multiple teams are available and no active team is set in the
session/config:
- [ ] Set `isTeamSelectionActive(true)`.
- [ ] Intercept the render flow:
- [ ] If `isTeamSelectionActive`, render the `TeamSelectionDialog`.
- [ ] Implement `handleTeamSelect(teamName: string | undefined)`:
- [ ] Call `config.setActiveTeam(teamName)`.
- [ ] Set `isTeamSelectionActive(false)`.
## Verification
- Manual verification of the startup screen.
- Test selection of a team and confirm the CLI proceeds to the main chat.
- Test the "No Team" option.
- Verify that if only one team exists, the dialog can be bypassed (optional UX
polish).