1pub mod expr;
6pub mod handler_output;
7pub mod metadata;
8pub mod registry;
9pub mod runner;
10pub mod schema;
11pub mod step_runner;
12pub mod validator;
13
14use schema::PipelineDef;
15
16pub fn load(yaml: &str) -> Result<PipelineDef, serde_saphyr::Error> {
18 serde_saphyr::from_str(yaml)
19}
20
21pub fn load_file(path: impl AsRef<std::path::Path>) -> Result<PipelineDef, LoadError> {
23 let contents = std::fs::read_to_string(path)?;
24 Ok(serde_saphyr::from_str(&contents)?)
25}
26
27#[derive(Debug, thiserror::Error)]
28pub enum LoadError {
29 #[error("IO error: {0}")]
30 Io(#[from] std::io::Error),
31 #[error("YAML parse error: {0}")]
32 Yaml(#[from] serde_saphyr::Error),
33}
34
35pub use handler_output::HandlerOutput;
36pub use metadata::{
37 ArgSchema, ArgSpec, ArgType, Capability, HandlerMetadata, RiskLevel, SideEffect,
38};
39pub use registry::HandlerRegistry;
40pub use runner::Runner;
41pub use step_runner::{RunnerCapability, StepContext, StepOutput, StepRunner, StepRunnerRegistry};
42pub use validator::{
43 DiagnosticSeverity, ValidationDiagnostic, ValidationReport, validate_pipeline,
44};