mod alongside;
mod compete;
mod conditional;
mod delegate;
mod escalation;
mod executor;
mod loop_pattern;
mod parallel;
mod sequence;
mod supervisor;
mod workflow;
pub use alongside::*;
pub use compete::*;
pub use conditional::*;
pub use delegate::*;
pub use escalation::*;
pub use executor::*;
pub use loop_pattern::*;
pub use parallel::*;
pub use sequence::*;
pub use supervisor::*;
pub use workflow::*;
pub fn get_executor(pattern: &crate::FlowPattern) -> Box<dyn PatternExecutor> {
match pattern {
crate::FlowPattern::Sequence { .. } => Box::new(SequenceExecutor::new()),
crate::FlowPattern::Parallel { .. } => Box::new(ParallelExecutor::new()),
crate::FlowPattern::Conditional { .. } => Box::new(ConditionalExecutor::new()),
crate::FlowPattern::Loop { .. } => Box::new(LoopExecutor::new()),
crate::FlowPattern::Delegate { .. } => Box::new(DelegateExecutor::new()),
crate::FlowPattern::Supervisor { .. } => Box::new(SupervisorExecutor::new()),
crate::FlowPattern::Compete { .. } => Box::new(CompeteExecutor::new()),
crate::FlowPattern::Escalation { .. } => Box::new(EscalationExecutor::new()),
crate::FlowPattern::Alongside { .. } => Box::new(AlongsideExecutor::new()),
crate::FlowPattern::Workflow { .. } => Box::new(WorkflowExecutor::new()),
}
}