fusabi_stdlib_ext/lib.rs
1//! # fusabi-stdlib-ext
2//!
3//! Extended standard library modules and domain packs for Fusabi.
4//!
5//! This crate provides optional stdlib modules that extend Fusabi's capabilities:
6//!
7//! ## Core Modules
8//!
9//! - **Process** - Execute system processes with timeout and environment control
10//! - **Fs** - Filesystem operations (read, write, list, glob)
11//! - **Path** - Path manipulation (join, normalize, resolve)
12//! - **Env** - Environment variable access
13//! - **Format** - String formatting (sprintf, templating)
14//! - **Net** - Network operations (HTTP requests)
15//! - **Time** - Time and duration utilities
16//! - **Metrics** - Counter, gauge, histogram primitives
17//!
18//! ## Domain Packs
19//!
20//! - **terminal-ui** - Ratatui/TUI widgets and helpers
21//! - **observability** - Logging, tracing, metrics integration
22//! - **k8s** - Kubernetes API bindings
23//! - **mcp** - MCP (Model Context Protocol) helpers
24//!
25//! ## Safety
26//!
27//! All modules follow a default-deny security model:
28//! - Filesystem access requires explicit path allowlists
29//! - Network access requires explicit host allowlists
30//! - Process execution requires explicit permission
31//! - All operations respect configured timeouts
32//!
33//! ## Quick Start
34//!
35//! ```rust,ignore
36//! use fusabi_stdlib_ext::{StdlibRegistry, StdlibConfig};
37//!
38//! // Create registry with default modules
39//! let config = StdlibConfig::default();
40//! let registry = StdlibRegistry::new(config)?;
41//!
42//! // Register modules with an engine
43//! registry.register_all(&mut engine)?;
44//! ```
45
46#![warn(missing_docs)]
47#![warn(rust_2018_idioms)]
48
49mod config;
50mod error;
51mod registry;
52mod safety;
53
54// Core modules
55#[cfg(feature = "process")]
56pub mod process;
57
58#[cfg(feature = "fs")]
59pub mod fs;
60
61#[cfg(feature = "path")]
62pub mod path;
63
64#[cfg(feature = "env")]
65pub mod env;
66
67#[cfg(feature = "format")]
68pub mod format;
69
70#[cfg(feature = "net")]
71pub mod net;
72
73#[cfg(feature = "time")]
74pub mod time;
75
76#[cfg(feature = "metrics")]
77pub mod metrics;
78
79// Domain packs
80#[cfg(feature = "terminal-ui")]
81pub mod terminal_ui;
82
83#[cfg(feature = "observability")]
84pub mod observability;
85
86#[cfg(feature = "k8s")]
87pub mod k8s;
88
89#[cfg(feature = "mcp")]
90pub mod mcp;
91
92pub use config::{StdlibConfig, ModuleConfig};
93pub use error::{Error, Result};
94pub use registry::StdlibRegistry;
95pub use safety::{SafetyConfig, PathAllowlist, HostAllowlist};
96
97/// Crate version for compatibility checks.
98pub const VERSION: &str = env!("CARGO_PKG_VERSION");