//! ZCLAW Pipeline Engine //! //! Declarative pipeline system for multi-step automation workflows. //! Pipelines orchestrate Skills and Hands to accomplish complex tasks. //! //! # Architecture //! //! ```text //! User Input → Intent Router → Pipeline v2 → Executor → Presentation //! ↓ ↓ //! Trigger Matching ExecutionContext //! ``` //! //! # Example //! //! ```yaml //! apiVersion: zclaw/v2 //! kind: Pipeline //! metadata: //! name: course-generator //! displayName: 课程生成器 //! category: education //! trigger: //! keywords: [课程, 教程, 学习] //! patterns: //! - "帮我做*课程" //! - "生成{level}级别的{topic}教程" //! params: //! - name: topic //! type: string //! required: true //! label: 课程主题 //! stages: //! - id: outline //! type: llm //! prompt: "为{params.topic}创建课程大纲" //! - id: content //! type: parallel //! each: "${stages.outline.sections}" //! stage: //! type: llm //! prompt: "为章节${item.title}生成内容" //! output: //! type: dynamic //! supported_types: [slideshow, quiz, document] //! ``` pub mod types; pub mod types_v2; pub mod parser; pub mod parser_v2; pub mod state; pub mod executor; pub mod actions; pub mod trigger; pub mod intent; pub mod engine; pub mod presentation; // Glob re-exports with explicit disambiguation for conflicting names pub use types::*; pub use types_v2::*; pub use parser::*; pub use parser_v2::*; pub use state::*; pub use executor::*; pub use trigger::*; pub use intent::*; pub use engine::*; pub use presentation::*; // Explicit re-exports: presentation::* wins for PresentationType/ExportFormat // types_v2::* wins for InputMode, engine::* wins for LoopContext pub use presentation::PresentationType; pub use presentation::ExportFormat; pub use types_v2::InputMode; pub use engine::context::LoopContext; pub use actions::ActionRegistry; pub use actions::{LlmActionDriver, SkillActionDriver, HandActionDriver, OrchestrationActionDriver}; /// Convenience function to parse pipeline YAML (v1) pub fn parse_pipeline_yaml(yaml: &str) -> Result { parser::PipelineParser::parse(yaml) } /// Convenience function to parse pipeline v2 YAML pub fn parse_pipeline_v2_yaml(yaml: &str) -> Result { parser_v2::PipelineParserV2::parse(yaml) }