fastmcp-console 0.6.0

Rich console output for FastMCP servers
Documentation
#![forbid(unsafe_code)]
#![doc = include_str!("../README.md")]

pub mod console;
pub mod detection;
pub mod theme;

pub mod banner;
#[cfg(any(feature = "legacy-2024-11-05", feature = "tasks", feature = "apps"))]
pub mod client;
pub mod diagnostics;
pub mod error;
#[cfg(any(feature = "legacy-2024-11-05", feature = "tasks", feature = "apps"))]
pub mod handlers;
pub mod logging;
pub mod stats;
pub mod status;
#[cfg(any(feature = "legacy-2024-11-05", feature = "tasks", feature = "apps"))]
pub mod tables;
pub mod testing;

pub use console::{UntrustedDisplayText, console};
pub mod config;

#[cfg(any(feature = "legacy-2024-11-05", feature = "tasks", feature = "apps"))]
pub use client::RequestResponseRenderer;
pub use config::ConsoleConfig;
pub use detection::{DisplayContext, is_agent_context, should_enable_rich};
pub use error::ErrorBoundary;
#[cfg(any(feature = "legacy-2024-11-05", feature = "tasks", feature = "apps"))]
pub use handlers::{HandlerRegistryRenderer, ServerCapabilities};
pub use rich_rust;
pub use theme::theme;

#[cfg(test)]
mod feature_surface_tests {
    #[cfg(not(any(feature = "legacy-2024-11-05", feature = "tasks", feature = "apps")))]
    #[test]
    fn empty_graph_exposes_only_generic_console_surface() {
        let console = super::console::FastMcpConsole::with_enabled(false);
        let _ = super::ConsoleConfig::new();
        let _ = super::ErrorBoundary::new(&console);
        let _ = super::logging::RichLoggerBuilder::new();
    }

    #[cfg(any(feature = "legacy-2024-11-05", feature = "tasks", feature = "apps"))]
    #[test]
    fn protocol_rendering_surface_is_enabled_with_a_protocol_feature() {
        let context = super::DisplayContext::new_agent();
        let _ = super::client::ClientInfoRenderer::new(context.clone());
        let _ = super::handlers::HandlerRegistryRenderer::new(context.clone());
        let _ = super::handlers::ServerCapabilities::new();
        let _ = super::tables::ToolTableRenderer::new(context);
    }
}