a2c_smcp/lib.rs
1//! # A2C-SMCP Rust SDK
2//!
3//! A Rust implementation of the A2C-SMCP protocol, providing Agent, Computer, and Server
4//! components for building intelligent agent systems with tool execution capabilities.
5//!
6//! ## Features
7//!
8//! - **agent** - Agent client implementation for connecting to SMCP servers
9//! - **computer** - Computer client implementation for managing MCP servers and desktop resources
10//! - **server** - Server implementation with Socket.IO support
11//! - **full** - Enables all features (default when using `--all-features`)
12//!
13//! ## Quick Start
14//!
15//! Add to your `Cargo.toml`:
16//!
17//! ```toml
18//! [dependencies]
19//! a2c-smcp = { version = "0.1.0", features = ["agent", "computer"] }
20//! ```
21//!
22//! ## Example
23//!
24//! ```rust,no_run,ignore
25//! // Add features to your Cargo.toml:
26//! // a2c-smcp = { version = "0.1.0", features = ["agent", "computer"] }
27//!
28//! #[cfg(feature = "agent")]
29//! use a2c_smcp::agent::SmcpAgent;
30//!
31//! #[cfg(feature = "computer")]
32//! use a2c_smcp::computer::SmcpComputer;
33//!
34//! #[tokio::main]
35//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
36//! // Your SMCP application code here
37//! Ok(())
38//! }
39//! ```
40
41// Re-export core protocol types (always available)
42pub use smcp::*;
43
44// Re-export optional components based on features
45#[cfg(feature = "agent")]
46pub use smcp_agent;
47
48#[cfg(feature = "computer")]
49pub use smcp_computer;
50
51#[cfg(feature = "server")]
52pub use smcp_server_core;
53
54#[cfg(feature = "server")]
55pub use smcp_server_hyper;
56
57// Re-export commonly used dependencies for convenience
58pub use serde;
59pub use serde_json;
60pub use thiserror;
61pub use tokio;
62pub use tracing;
63
64#[cfg(test)]
65mod tests {
66 #[test]
67 fn it_works() {
68 let result = 2 + 2;
69 assert_eq!(result, 4);
70 }
71}