mecha10_behavior_runtime/config/mod.rs
1//! Configuration management for behavior trees
2//!
3//! This module provides utilities for loading and validating behavior tree configurations
4//! with support for environment-specific overrides.
5//!
6//! # Configuration Hierarchy
7//!
8//! Behavior configurations follow a three-tier hierarchy:
9//!
10//! 1. **Template** (`behaviors/{name}.json`) - Base behavior definition
11//! 2. **Common** (`configs/common/behaviors/{name}.json`) - Shared overrides
12//! 3. **Environment** (`configs/{env}/behaviors/{name}.json`) - Environment-specific overrides
13//!
14//! # Example Structure
15//!
16//! ```text
17//! my-robot/
18//! ├── behaviors/
19//! │ └── idle_wander.json # Base template
20//! └── configs/
21//! ├── dev/
22//! │ └── behaviors/
23//! │ └── idle_wander.json # Dev overrides (faster tick rate)
24//! ├── production/
25//! │ └── behaviors/
26//! │ └── idle_wander.json # Production overrides (conservative)
27//! └── common/
28//! └── behaviors/
29//! └── idle_wander.json # Shared overrides
30//! ```
31//!
32//! # Usage
33//!
34//! ```rust,ignore
35//! use mecha10_behavior_runtime::config::{load_behavior_config, validate_behavior_config};
36//! use std::path::Path;
37//!
38//! // Load with environment-specific overrides
39//! let config = load_behavior_config(
40//! "idle_wander",
41//! Path::new("/path/to/project"),
42//! "dev"
43//! ).await?;
44//!
45//! // Validate before loading
46//! let registry = NodeRegistry::new();
47//! let result = validate_behavior_config(&config, ®istry)?;
48//! if !result.valid {
49//! for error in result.errors {
50//! eprintln!("Validation error: {}", error);
51//! }
52//! }
53//! ```
54
55mod loader;
56mod types;
57mod validator;
58
59pub use loader::{detect_project_root, get_current_environment, load_behavior_config};
60pub use types::{BehaviorConfig, CompositionConfig, NodeConfig, NodeReference, ParallelPolicyConfig};
61pub use validator::{validate_behavior_config, ValidationResult};