pforge_config/
lib.rs

1//! # pforge-config
2//!
3//! Configuration parsing and validation for pforge MCP servers.
4//!
5//! This crate provides YAML-based configuration with compile-time type safety
6//! and comprehensive validation.
7//!
8//! ## Quick Start
9//!
10//! ```rust
11//! use pforge_config::{parse_config_from_str, validate_config};
12//!
13//! let yaml = r#"
14//! forge:
15//!   name: my-server
16//!   version: 0.1.0
17//!   transport: stdio
18//!
19//! tools:
20//!   - type: native
21//!     name: greet
22//!     description: "Greet a person"
23//!     handler:
24//!       path: "handlers::greet"
25//!     params: {}
26//! "#;
27//!
28//! let config = parse_config_from_str(yaml).expect("valid config");
29//! validate_config(&config).expect("validation passes");
30//!
31//! assert_eq!(config.forge.name, "my-server");
32//! assert_eq!(config.tools.len(), 1);
33//! ```
34//!
35//! ## Validation Rules
36//!
37//! - Tool names must be unique
38//! - Native handlers must have valid handler paths (format: `module::function`)
39//! - All required fields must be present
40//! - Transport type must be valid (stdio, sse, websocket)
41
42pub mod error;
43pub mod parser;
44pub mod types;
45pub mod validator;
46
47pub use error::{ConfigError, Result};
48pub use parser::{parse_config, parse_config_from_str};
49pub use types::*;
50pub use validator::validate_config;