Skip to main content

scud/commands/spawn/tui/components/
mod.rs

1//! TUI components for the swarm monitor
2//!
3//! This module contains reusable UI components for the terminal interface.
4//! Components follow ratatui patterns and can be composed into larger views.
5//!
6//! ## Components
7//!
8//! - **ModelSelector**: For selecting AI models/harnesses when spawning agents
9//! - **AgentSelector**: For selecting and switching between running agents
10//! - **StreamingView**: For displaying streaming output from agents
11//!
12//! ## Usage
13//!
14//! Components are designed to be used with ratatui's `StatefulWidget` pattern:
15//!
16//! ```ignore
17//! use scud_cli::commands::spawn::tui::components::*;
18//!
19//! // Create widget state
20//! let mut state = ModelSelectorState::new(0);
21//!
22//! // Render widget with state
23//! let widget = ModelSelector::new(&models).focused(true);
24//! frame.render_stateful_widget(widget, area, &mut state);
25//!
26//! // Handle input to update state
27//! state.next(models.len());
28//! ```
29
30pub mod agent_selector;
31pub mod model_selector;
32pub mod streaming_view;
33
34// Re-export key types for convenient access
35pub use agent_selector::{
36    AgentBadge, AgentDisplayStatus, AgentInfo, AgentSelector, AgentSelectorState,
37};
38pub use model_selector::{
39    default_models, ModelOption, ModelSelector, ModelSelectorCompact, ModelSelectorState,
40};
41pub use streaming_view::{
42    OutputDisplay, OutputLine, OutputLineType, StreamingView, StreamingViewState,
43    StreamingViewStrings,
44};