1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
//! # Deltaflow
//!
//! The embeddable workflow engine.
//!
//! 
//!
//! Type-safe, Elixir-inspired pipelines that run in your process. No infrastructure required.
//!
//! ## Why Deltaflow?
//!
//! - **Type-safe composition** - Compiler enforces step output matches next step's input
//! - **Elixir-inspired** - Declarative pipelines via method chaining, not scattered callbacks
//! - **Observable by default** - Every run and step recorded for debugging
//! - **Embeddable** - A library, not a service. Runs in your process.
//!
//! ## Quick Start
//!
//! ```rust,ignore
//! use deltaflow::{Pipeline, Step, StepError, RetryPolicy, NoopRecorder};
//!
//! let pipeline = Pipeline::new("my_workflow")
//! .start_with(ParseInput)
//! .then(ProcessData)
//! .then(FormatOutput)
//! .with_retry(RetryPolicy::exponential(3))
//! .with_recorder(NoopRecorder)
//! .build();
//!
//! let result = pipeline.run(input).await?;
//! ```
//!
//! ## Forking and Fan-out
//!
//! Route output to multiple downstream pipelines:
//!
//! ```rust,ignore
//! let pipeline = Pipeline::new("router")
//! .start_with(ValidateStep)
//! .fork_when(|data| data.priority == "high", "fast_track")
//! .fork_when(|data| data.needs_review, "review").desc("needs_review")
//! .fan_out(&["analytics", "archival"])
//! .emit("notifications", |data| vec![Notification::from(data)])
//! .build();
//! ```
//!
//! ## Web Visualizer
//!
//! Use `deltaflow-harness` for interactive pipeline visualization:
//!
//! ```rust,ignore
//! use deltaflow_harness::RunnerHarnessExt;
//!
//! let runner = RunnerBuilder::new(store)
//! .pipeline(my_pipeline)
//! .with_visualizer(3000)
//! .build();
//! ```
//!
//! ## Feature Flags
//!
//! - `sqlite` - Enable SQLite-backed recording and task storage
pub use ;
pub use ;
pub use RetryPolicy;
pub use ;
pub use SqliteRecorder;
pub use ;
pub use ;