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
//! Binding Module - Data binding between tasks.
//!
//! Handles `with:` block data binding:
//! - `entry`: YAML types (BindingSpec/BindingEntry + WithSpec/WithEntry)
//! - `resolve`: Runtime resolution (ResolvedBindings) with lazy support
//! - `template`: Template substitution (`{{with.alias}}`)
//! - `jsonpath`: RFC 9535 JSONPath via serde_json_path
//! - `types`: Core types (BindingPath, BindingSource, PathSegment, BindingType)
//! - `transform`: 27 built-in transforms with pipe chains
//!
//! Unified `with:` syntax (eager resolution):
//! ```yaml
//! with:
//! forecast: weather.summary # Simple path
//! temp: weather.data.temp ?? 20 # With numeric default
//! name: user.name ?? "Anonymous" # With string default (quoted)
//! cfg: settings ?? {"debug": false} # With object default
//! ```
//!
//! Extended syntax for lazy bindings:
//! ```yaml
//! with:
//! lazy_val:
//! path: future.result
//! lazy: true # Deferred resolution
//! lazy_with_default:
//! path: optional.value
//! lazy: true
//! default: "fallback"
//! ```
//!
//! Data flow:
//! ```text
//! YAML `with:` block → BindingSpec (entry)
//! ↓
//! ┌───────┴───────┐
//! ▼ ▼
//! Eager (lazy=false) Lazy (lazy=true)
//! resolve now store Pending
//! │ │
//! ▼ ▼
//! ResolvedBindings (Resolved | Pending)
//! ↓
//! Template substitution
//! (resolves Pending on access)
//! ↓
//! Resolved prompt
//! ```
// Re-export public types
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use validate_task_id;