Skip to main content

simple_agents_workflow/
lib.rs

1//! Workflow IR and validation primitives for SimpleAgents.
2//!
3//! This crate currently provides:
4//! - A minimal canonical workflow IR (`start`, `llm`, `tool`, `condition`, `loop`, `end`)
5//! - Deterministic normalization helpers
6//! - Structural validation with actionable diagnostics
7//! - Runtime execution for the minimal node set
8//! - In-process worker protocol and bounded worker pool primitives
9//! - Worker pool adapter hook for external (for example gRPC) worker clients
10//!
11//! # Example
12//!
13//! ```rust
14//! use simple_agents_workflow::{Node, NodeKind, WorkflowDefinition, validate_and_normalize};
15//!
16//! let workflow = WorkflowDefinition {
17//!     version: "v0".into(),
18//!     name: "hello".into(),
19//!     nodes: vec![
20//!         Node { id: "start".into(), kind: NodeKind::Start { next: "end".into() } },
21//!         Node { id: "end".into(), kind: NodeKind::End },
22//!     ],
23//! };
24//!
25//! let normalized = validate_and_normalize(&workflow).unwrap();
26//! assert_eq!(normalized.name, "hello");
27//! ```
28
29pub mod checkpoint;
30pub mod debug;
31pub mod expressions;
32pub mod ir;
33pub mod observability;
34pub mod recorder;
35pub mod replay;
36pub mod runtime;
37pub mod scheduler;
38pub mod state;
39pub mod trace;
40pub mod validation;
41pub mod visualize;
42pub mod worker;
43pub mod worker_adapter;
44pub mod yaml_runner;
45
46pub use checkpoint::{
47    CheckpointError, CheckpointStore, FilesystemCheckpointStore, WorkflowCheckpoint,
48};
49pub use debug::{
50    inspect_replay_trace, node_timeline, retry_reason_summary, NodeTimelineEntry,
51    ReplayTraceInspection, RetryReasonSummary,
52};
53pub use expressions::{
54    default_expression_engine, evaluate_bool, ExpressionBackend, ExpressionEngine, ExpressionError,
55    ExpressionLimits,
56};
57pub use ir::{MergePolicy, Node, NodeKind, ReduceOperation, RouterRoute, WorkflowDefinition};
58pub use recorder::{TraceRecordError, TraceRecorder};
59pub use replay::{
60    replay_trace, replay_trace_with_options, ReplayCachePolicy, ReplayError, ReplayOptions,
61    ReplayReport, ReplayViolation, ReplayViolationCode,
62};
63pub use runtime::{
64    CancellationSignal, LlmExecutionError, LlmExecutionInput, LlmExecutionOutput, LlmExecutor,
65    NodeExecution, NodeExecutionData, NodeExecutionPolicy, RuntimeSecurityLimits, ScopeAccessError,
66    ToolExecutionError, ToolExecutionInput, ToolExecutor, WorkflowEvent, WorkflowEventKind,
67    WorkflowReplayMode, WorkflowRetryEvent, WorkflowRunResult, WorkflowRuntime,
68    WorkflowRuntimeError, WorkflowRuntimeOptions,
69};
70pub use scheduler::DagScheduler;
71pub use state::{CapabilityToken, ScopedState};
72pub use trace::{
73    TraceEvent, TraceEventKind, TraceSequence, TraceTerminalStatus, WorkflowTrace,
74    WorkflowTraceMetadata,
75};
76pub use validation::{
77    validate_and_normalize, Diagnostic, DiagnosticCode, Severity, ValidationError, ValidationErrors,
78};
79pub use visualize::workflow_to_mermaid;
80pub use worker::{
81    CircuitBreakerHooks, WorkerErrorCode, WorkerHandler, WorkerHealth, WorkerHealthStatus,
82    WorkerOperation, WorkerPool, WorkerPoolClient, WorkerPoolError, WorkerPoolOptions,
83    WorkerProtocolError, WorkerRequest, WorkerResponse, WorkerResult, WorkerSecurityPolicy,
84};
85pub use worker_adapter::WorkerPoolToolExecutor;
86pub use yaml_runner::{
87    run_workflow_yaml, run_workflow_yaml_file, run_workflow_yaml_file_typed,
88    run_workflow_yaml_file_typed_with_custom_worker_and_events_and_options,
89    run_workflow_yaml_file_with_client, run_workflow_yaml_file_with_client_and_custom_worker,
90    run_workflow_yaml_file_with_client_and_custom_worker_and_events,
91    run_workflow_yaml_file_with_client_and_custom_worker_and_events_and_options,
92    run_workflow_yaml_typed, run_workflow_yaml_typed_with_custom_worker_and_events_and_options,
93    run_workflow_yaml_with_client, run_workflow_yaml_with_client_and_custom_worker,
94    run_workflow_yaml_with_client_and_custom_worker_and_events,
95    run_workflow_yaml_with_client_and_custom_worker_and_events_and_options,
96    run_workflow_yaml_with_client_and_custom_worker_and_events_and_options_typed,
97    run_workflow_yaml_with_custom_worker, run_workflow_yaml_with_custom_worker_and_events,
98    run_workflow_yaml_with_custom_worker_and_events_and_options,
99    run_workflow_yaml_with_custom_worker_and_events_and_options_typed, verify_yaml_workflow,
100    yaml_workflow_file_to_mermaid, yaml_workflow_to_ir, yaml_workflow_to_mermaid,
101    NoopYamlWorkflowEventSink, WorkflowMessage, WorkflowMessageRole, WorkflowRunner,
102    YamlLlmExecutionRequest, YamlStepTiming, YamlToIrError, YamlWorkflow,
103    YamlWorkflowCustomWorkerExecutor, YamlWorkflowDiagnostic, YamlWorkflowDiagnosticSeverity,
104    YamlWorkflowEvent, YamlWorkflowEventSink, YamlWorkflowEventType, YamlWorkflowLlmExecutor,
105    YamlWorkflowNodeKind, YamlWorkflowNodeOutputRecord, YamlWorkflowPayloadMode,
106    YamlWorkflowRunError, YamlWorkflowRunOptions, YamlWorkflowRunOutput,
107    YamlWorkflowRunTypedOutput, YamlWorkflowTelemetryConfig, YamlWorkflowTraceContextInput,
108    YamlWorkflowTraceOptions, YamlWorkflowTraceTenantContext, YamlWorkflowTypedEvent,
109    YamlWorkflowTypedEventSink, YamlWorkflowTypedEventSinkAdapter,
110};