turbomcp_client/plugins/
mod.rs

1//! Plugin system for TurboMCP client
2//!
3//! Provides an extensible plugin architecture with lifecycle hooks and middleware patterns
4//! for extending client functionality. Plugins can intercept requests and responses,
5//! handle custom methods, and add features like metrics, retries, and caching.
6//!
7//! ## Architecture
8//!
9//! The plugin system follows a middleware pattern where plugins are executed in order:
10//!
11//! ```text
12//! Request → Plugin 1 → Plugin 2 → Plugin N → Server
13//!          ↓            ↓           ↓
14//! Response ← Plugin 1 ← Plugin 2 ← Plugin N ← Server
15//! ```
16//!
17//! ## Core Components
18//!
19//! - **ClientPlugin**: Core trait defining plugin lifecycle and hooks
20//! - **PluginRegistry**: Manages plugin registration, ordering, and execution
21//! - **RequestContext/ResponseContext**: Context objects passed to plugins
22//! - **Example Plugins**: MetricsPlugin, RetryPlugin, CachePlugin
23//!
24//! ## Usage
25//!
26//! ```rust,no_run
27//! use turbomcp_client::plugins::{PluginRegistry, MetricsPlugin, PluginConfig};
28//! use std::sync::Arc;
29//!
30//! async fn example() -> Result<(), Box<dyn std::error::Error>> {
31//!     let mut registry = PluginRegistry::new();
32//!
33//!     // Register built-in plugins
34//!     let metrics = Arc::new(MetricsPlugin::new(PluginConfig::Metrics));
35//!     registry.register_plugin(metrics).await?;
36//!     Ok(())
37//! }
38//! ```
39
40pub mod core;
41pub mod examples;
42pub mod macros;
43pub mod middleware;
44pub mod registry;
45
46// Re-export core types for public API
47pub use core::{
48    ClientPlugin, PluginConfig, PluginContext, PluginError, PluginResult, RequestContext,
49    ResponseContext,
50};
51
52pub use registry::PluginRegistry;
53
54pub use examples::{
55    CacheConfig, CachePlugin, MetricsData, MetricsPlugin, RetryConfig, RetryPlugin,
56};
57
58pub use middleware::{MiddlewareChain, MiddlewareResult, RequestMiddleware, ResponseMiddleware};