qudag_cli/
lib.rs

1#![deny(unsafe_code)]
2#![allow(missing_docs)]
3
4//! Command-line interface for the QuDAG protocol with performance optimizations.
5//!
6//! This module provides a comprehensive CLI for managing QuDAG nodes,
7//! including node operations, peer management, network diagnostics,
8//! and DAG visualization capabilities. Features include:
9//!
10//! - Fast startup with lazy initialization
11//! - Async operation optimization with timeouts and retries
12//! - Resource management and memory tracking
13//! - Performance monitoring and reporting
14//! - Error propagation optimization
15
16pub mod async_optimizations;
17pub mod commands;
18pub mod config;
19pub mod mcp;
20pub mod node_manager;
21pub mod output;
22pub mod peer_manager;
23pub mod performance;
24pub mod rpc;
25pub mod startup;
26
27#[cfg(test)]
28pub mod mocks;
29
30pub use commands::{
31    check_node_connectivity, execute_status_command, show_status, start_node, stop_node,
32    CommandRouter, DagStatistics, MemoryUsage, NetworkStatistics, NodeState, NodeStatusResponse,
33    OutputFormat, PeerStatusInfo, StatusArgs,
34};
35
36pub use config::{NodeConfig, NodeConfigManager};
37
38/// CLI-specific error types
39#[derive(Debug, thiserror::Error)]
40pub enum CliError {
41    #[error("Node error: {0}")]
42    Node(String),
43    #[error("Network error: {0}")]
44    Network(String),
45    #[error("Visualization error: {0}")]
46    Visualization(String),
47    #[error("Configuration error: {0}")]
48    Config(String),
49    #[error("Command error: {0}")]
50    Command(String),
51    #[error("RPC error: {0}")]
52    Rpc(String),
53    #[error("Status error: {0}")]
54    Status(String),
55    #[error("Connection error: {0}")]
56    Connection(String),
57    #[error("Timeout error: {0}")]
58    Timeout(String),
59    #[error("Validation error: {0}")]
60    Validation(String),
61    #[error("Server error: {0}")]
62    Server(String),
63}