limit_cli/tui/mod.rs
1//! TUI (Terminal User Interface) module for limit-cli
2//!
3//! This module provides a rich terminal interface for interacting with the Limit AI agent.
4//!
5//! # Architecture
6//!
7//! The TUI system is organized into several components:
8//!
9//! - **State**: Core state types (`TuiState`, `FileAutocompleteState`)
10//! - **Bridge**: Connection between agent and UI (`TuiBridge`)
11//! - **App**: Main application loop (`TuiApp`)
12//! - **Input**: Input handling (`InputHandler`, `InputEditor`, `ClipboardHandler`)
13//! - **Activity**: Activity message formatting
14//! - **Autocomplete**: File autocomplete management
15//! - **InputQueue**: Message queue for async operations
16//!
17//! # Example
18//!
19//! ```no_run
20//! use limit_cli::tui::app::{TuiBridge, TuiApp};
21//! use limit_cli::agent_bridge::AgentBridge;
22//! use limit_llm::{Config, ProviderConfig, CompactionSettings, CacheSettings};
23//! use tokio::sync::mpsc;
24//! use std::collections::HashMap;
25//!
26//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
27//! // Create config
28//! let mut providers = HashMap::new();
29//! providers.insert("anthropic".to_string(), ProviderConfig {
30//! api_key: Some("test-key".to_string()),
31//! model: "claude-3-5-sonnet-20241022".to_string(),
32//! base_url: None,
33//! max_tokens: 4096,
34//! timeout: 60,
35//! max_iterations: 100,
36//! thinking_enabled: false,
37//! clear_thinking: true,
38//! });
39//! let config = Config {
40//! provider: "anthropic".to_string(),
41//! providers,
42//! browser: limit_llm::BrowserConfigSection::default(),
43//! compaction: CompactionSettings::default(),
44//! cache: CacheSettings::default(),
45//! };
46//!
47//! // Create agent bridge and event channel
48//! let (tx, rx) = mpsc::unbounded_channel();
49//! let bridge = AgentBridge::new(config)?;
50//!
51//! // Create TUI bridge
52//! let tui_bridge = TuiBridge::new(bridge, rx)?;
53//!
54//! // Run TUI app
55//! let mut app = TuiApp::new(tui_bridge)?;
56//! app.run()?;
57//! # Ok(())
58//! # }
59//! ```
60
61mod state;
62
63pub mod activity;
64pub mod app;
65pub mod autocomplete;
66pub mod bridge;
67pub mod commands;
68pub mod input;
69pub mod input_queue;
70pub mod ui;
71
72// Re-export public API
73pub use input::InputHandler;
74pub use input_queue::InputQueue;
75pub use state::{FileAutocompleteState, TuiState, MAX_PASTE_SIZE};