Extract 4 self-contained sub-components from MessageInput.tsx:
- SlashCommandPopover (243L): slash command filtering, rendering, selection
- CliToolsPopover (128L): CLI tool selection with search/filter
- ModelSelectorDropdown (150L): provider/model selector dropdown
- EffortSelectorDropdown (75L): thinking effort level selector
All components have clean props interfaces ready for integration.
MessageInput.tsx wiring deferred to follow-up — the file's 1,659 lines
of tightly coupled state make this a careful, incremental process.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>