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//! ## Extended Modules
19//!
20//! - **Terminal** - Terminal I/O, key events, clipboard, colors
21//! - **GPU** - GPU metrics via NVML (utilization, memory, temperature)
22//! - **FsStream** - File streaming with backpressure (tail, chunked reads)
23//! - **NetHttp** - Enhanced HTTP client (retries, streaming, custom options)
24//!
25//! ## Domain Packs
26//!
27//! - **terminal-ui** - Ratatui/TUI widgets and helpers
28//! - **observability** - Logging, tracing, metrics integration
29//! - **k8s** - Kubernetes API bindings
30//! - **mcp** - MCP (Model Context Protocol) helpers
31//!
32//! ## Safety
33//!
34//! All modules follow a default-deny security model:
35//! - Filesystem access requires explicit path allowlists
36//! - Network access requires explicit host allowlists
37//! - Process execution requires explicit permission
38//! - All operations respect configured timeouts
39//!
40//! ## Quick Start
41//!
42//! ```rust,ignore
43//! use fusabi_stdlib_ext::{StdlibRegistry, StdlibConfig};
44//!
45//! // Create registry with default modules
46//! let config = StdlibConfig::default();
47//! let registry = StdlibRegistry::new(config)?;
48//!
49//! // Register modules with an engine
50//! registry.register_all(&mut engine)?;
51//! ```
52
53#![warn(missing_docs)]
54#![warn(rust_2018_idioms)]
55
56mod config;
57mod error;
58mod registry;
59mod safety;
60
61// Core modules
62#[cfg(feature = "process")]
63pub mod process;
64
65#[cfg(feature = "fs")]
66pub mod fs;
67
68#[cfg(feature = "path")]
69pub mod path;
70
71#[cfg(feature = "env")]
72pub mod env;
73
74#[cfg(feature = "format")]
75pub mod format;
76
77#[cfg(feature = "net")]
78pub mod net;
79
80#[cfg(feature = "time")]
81pub mod time;
82
83#[cfg(feature = "metrics")]
84pub mod metrics;
85
86// Extended modules (vNEXT)
87#[cfg(feature = "terminal")]
88pub mod terminal;
89
90#[cfg(feature = "gpu")]
91pub mod gpu;
92
93#[cfg(feature = "fs_stream")]
94pub mod fs_stream;
95
96#[cfg(feature = "net_http")]
97pub mod net_http;
98
99// Domain packs
100#[cfg(feature = "terminal-ui")]
101pub mod terminal_ui;
102
103#[cfg(feature = "observability")]
104pub mod observability;
105
106#[cfg(feature = "k8s")]
107pub mod k8s;
108
109#[cfg(feature = "mcp")]
110pub mod mcp;
111
112pub use config::{StdlibConfig, ModuleConfig};
113pub use error::{Error, Result};
114pub use registry::StdlibRegistry;
115pub use safety::{SafetyConfig, PathAllowlist, HostAllowlist};
116
117/// Crate version for compatibility checks.
118pub const VERSION: &str = env!("CARGO_PKG_VERSION");