Skip to main content

mecha10_behavior_runtime/
lib.rs

1//! Mecha10 Behavior Runtime
2//!
3//! Unified behavior composition system for robotics and AI: behavior logic is Rust code
4
5pub mod actions;
6mod behavior;
7mod composition;
8pub mod config;
9pub mod control;
10mod execution;
11mod loader;
12mod registry;
13mod status;
14#[cfg(test)]
15mod test_helpers;
16
17pub use actions::{
18    register_builtin_actions, CapabilityTaskNode, GoToLocationNode, MoveNode, SensorCheckNode, SetCapabilityTargetNode,
19    SetGoToLocationTargetNode, TimerNode, WanderNode,
20};
21pub use behavior::{boxed_children_mut, BehaviorNode, BehaviorNodeExt, BoxedBehavior, TreeStatusSnapshot};
22pub use composition::{
23    ConditionKind, ConditionNode, ControllerModeKind, CooldownNode, ForceFailureNode, ForceSuccessNode, InverterNode,
24    ParallelNode, ParallelPolicy, RepeatNode, RetryNode, SelectOrNode, SequenceNode, SubsumptionLayer, SubsumptionNode,
25    TimeoutNode, WatchNode, WeightedSelectNode,
26};
27pub use config::{
28    behavior_capabilities_satisfied, detect_project_root, get_current_environment, list_available_behaviors,
29    list_capable_behaviors, load_behavior_config, resolve_behavior_config_path, validate_behavior_composition_json,
30    validate_behavior_config, BehaviorConfig, CompositionConfig, ConditionConfig, ControllerModeKindConfig, NodeConfig,
31    NodeReference, ParallelPolicyConfig, SubsumptionLayerConfig, ValidationResult, WeightedChildConfig,
32};
33pub use control::{PidController, PidGains};
34pub use execution::{BehaviorExecutor, ExecutionContext, ExecutionStats};
35pub use loader::BehaviorLoader;
36pub use registry::NodeRegistry;
37pub use status::NodeStatus;
38
39pub mod hot_reload;
40
41pub use mecha10_core::Context;
42
43pub mod prelude {
44    pub use crate::actions::{
45        CapabilityTaskNode, GoToLocationNode, MoveNode, SensorCheckNode, SetCapabilityTargetNode,
46        SetGoToLocationTargetNode, TimerNode, WanderNode,
47    };
48    pub use crate::behavior::{BehaviorNode, BehaviorNodeExt, BoxedBehavior, TreeStatusSnapshot};
49    pub use crate::composition::{
50        ConditionKind, ConditionNode, ControllerModeKind, CooldownNode, ForceFailureNode, ForceSuccessNode,
51        InverterNode, ParallelNode, ParallelPolicy, RepeatNode, RetryNode, SelectOrNode, SequenceNode,
52        SubsumptionLayer, SubsumptionNode, TimeoutNode, WatchNode, WeightedSelectNode,
53    };
54    pub use crate::config::{
55        BehaviorConfig, CompositionConfig, ConditionConfig, ControllerModeKindConfig, NodeConfig, NodeReference,
56        ParallelPolicyConfig, SubsumptionLayerConfig, WeightedChildConfig,
57    };
58    pub use crate::control::{PidController, PidGains};
59    pub use crate::execution::{BehaviorExecutor, ExecutionContext, ExecutionStats};
60    pub use crate::loader::BehaviorLoader;
61    pub use crate::registry::NodeRegistry;
62    pub use crate::status::NodeStatus;
63    pub use async_trait::async_trait;
64    pub use mecha10_core::Context;
65}