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;