motosan_workflow_runtime/
lib.rs1mod builder;
10pub mod cancel;
11mod execute;
12pub mod file_execution_store;
13pub mod helpers;
14pub mod llm_bridge;
15mod node_acp;
16mod node_agent;
17mod node_condition;
18pub(crate) mod node_dispatch;
19mod node_human;
20mod node_loop;
21mod node_sub_workflow;
22mod node_swarm;
23pub(crate) mod node_transform;
24pub(crate) mod process_cleanup;
25pub mod resume;
26
27#[cfg(feature = "ag-ui")]
28pub mod ag_ui;
29
30#[cfg(feature = "notify-human")]
31pub mod notify_human;
32
33use std::collections::HashMap;
34use std::sync::atomic::AtomicU64;
35use std::sync::Arc;
36
37use tokio::sync::{mpsc, RwLock};
38
39use motosan_workflow_model::{
40 ExecutionStore, HumanInputProvider, LlmClient, ModelPricing, TokenUsage, ToolExecutor,
41 ToolRegistry, WorkflowEvent,
42};
43use motosan_workflow_skill::SkillResolver;
44
45pub use cancel::CancellationToken;
48pub use file_execution_store::FileExecutionStore;
49pub use llm_bridge::{AgentResponse, WorkflowLlmClient};
50pub use resume::{ConditionResumeState, LoopResumeState};
51
52#[cfg(feature = "ag-ui")]
53pub use ag_ui::AgUiAdapter;
54
55#[cfg(feature = "notify-human")]
56pub use notify_human::{NotifyHumanTool, TelegramConfig};
57
58pub struct Runtime {
60 pub(crate) llm_client: Arc<dyn LlmClient>,
61 pub(crate) human_input_provider: Option<Arc<dyn HumanInputProvider>>,
62 pub(crate) skill_resolver: Option<Arc<SkillResolver>>,
63 pub(crate) event_sender: Option<mpsc::UnboundedSender<WorkflowEvent>>,
64 pub(crate) total_tokens: Arc<AtomicU64>,
65 pub(crate) token_budget: Option<u64>,
66 pub(crate) tokens_per_node: Arc<RwLock<HashMap<String, TokenUsage>>>,
67 pub(crate) model_pricing: Option<ModelPricing>,
68 pub(crate) tool_executor: Option<Arc<dyn ToolExecutor>>,
69 pub(crate) tool_registry: Arc<ToolRegistry>,
71 pub(crate) loop_resume: Arc<RwLock<Option<LoopResumeState>>>,
73 pub(crate) cancel_token: CancellationToken,
75 pub(crate) checkpoint_store: Option<Arc<dyn ExecutionStore>>,
77 pub(crate) max_parallel_workers: usize,
79 pub(crate) tool_context: Option<motosan_agent_tool::ToolContext>,
81}