// Helper function to create a sequence node from a variable argument list.
// This wraps the sequence_node constructor for improved ergonomics.

///|
pub fn make_sequence(children : Array[Node]) -> Node {
  sequence_node(children)
}

// Helper function to create a selector node from an array of children.

///|
pub fn make_selector(children : Array[Node]) -> Node {
  selector_node(children)
}

// Helper function to create a parallel node with SuccessAll policy.

///|
pub fn make_parallel_all(children : Array[Node]) -> Node {
  parallel_node(children, ParallelPolicy::SuccessAll)
}

// Helper function to create a parallel node with SuccessOne policy.

///|
pub fn make_parallel_one(children : Array[Node]) -> Node {
  parallel_node(children, ParallelPolicy::SuccessOne)
}

// create_always_success creates a leaf node that always succeeds.

///|
pub fn create_always_success() -> Node {
  action_node(fn(_) { Status::BTSuccess })
}

// create_always_failure creates a leaf node that always fails.

///|
pub fn create_always_failure() -> Node {
  action_node(fn(_) { Status::BTFailure })
}

// create_always_running creates a leaf node that always returns Running.

///|
pub fn create_always_running() -> Node {
  action_node(fn(_) { Status::BTRunning })
}