enact-core 0.0.2

Core agent runtime for Enact - Graph-Native AI agents
Documentation
//! Flow - Execution semantics and control flow
//!
//! Flow primitives define HOW execution happens:
//! - Sequential: one after another
//! - Parallel: fan-out, fan-in
//! - Conditional: if/then/else branching
//! - Loop: iteration with exit condition
//!
//! These are NOT agents. They are execution patterns that can compose
//! any Callable (agent, tool, graph node).
//!
//! ## Key Distinction
//!
//! - **Callable**: WHAT runs (agent, tool, function)
//! - **Flow**: HOW it runs (sequential, parallel, conditional)
//!
//! ```text
//! ┌─────────────────────────────────────────────┐
//! │                    Flow                     │
//! │  ┌─────────┐  ┌─────────┐  ┌─────────────┐  │
//! │  │Sequential│  │Parallel │  │Conditional │  │
//! │  └────┬────┘  └────┬────┘  └─────┬───────┘  │
//! │       │            │             │          │
//! │       ▼            ▼             ▼          │
//! │  ┌─────────────────────────────────────┐    │
//! │  │            Callable                 │    │
//! │  │  (Agent, Tool, Function, Graph)     │    │
//! │  └─────────────────────────────────────┘    │
//! └─────────────────────────────────────────────┘
//! ```

mod conditional;
mod parallel;
mod repeat;
mod sequential;

pub use conditional::{
    contains_condition, ends_with_condition, starts_with_condition, Branch, Condition,
    ConditionalFlow,
};
pub use parallel::{FanIn, FanOut, ParallelFlow, ParallelResult};
pub use repeat::{LoopCondition, LoopFlow}; // Renamed from loop.rs to avoid Rust keyword
pub use sequential::SequentialFlow;