vx_core/
lib.rs

1//! # vx-core
2//!
3//! Core abstractions and interfaces for the vx universal tool manager.
4//!
5//! This crate provides essential abstractions following SOLID principles:
6//! - **Single Responsibility**: Each module has one clear purpose
7//! - **Open/Closed**: Extensible through traits, closed for modification
8//! - **Interface Segregation**: Small, focused interfaces
9//! - **Dependency Inversion**: Depend on abstractions, not concretions
10//!
11//! ## Design Philosophy
12//!
13//! Following the principle of "interfaces over implementations", vx-core provides
14//! only the essential abstractions. Concrete implementations live in separate crates.
15//!
16//! ## Example
17//!
18//! ```rust,no_run
19//! use vx_core::{ToolManager, ExecutionContext, VxResult};
20//!
21//! async fn example(manager: &dyn ToolManager) -> VxResult<()> {
22//!     let available = manager.is_available("node").await?;
23//!     if available {
24//!         let context = ExecutionContext::default();
25//!         manager.execute("node", &context).await?;
26//!     }
27//!     Ok(())
28//! }
29//! ```
30
31// Core abstractions - the only module we need
32pub mod core;
33
34// Re-export everything from core for convenience
35pub use core::*;