38 lines
859 B
Rust
38 lines
859 B
Rust
use serde::{Deserialize, Serialize};
|
|||
|
|
|
||
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||
|
|
pub enum ScriptPrimitive {
|
||
|
|
Agent(String),
|
||
|
|
Parallel(Vec<ScriptPrimitive>),
|
||
|
|
Pipeline(Vec<ScriptPrimitive>),
|
||
|
|
Phase {
|
||
|
|
name: String,
|
||
|
|
script: Box<ScriptPrimitive>,
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||
|
|
pub struct ScriptOptions {
|
||
|
|
pub max_concurrency: usize,
|
||
|
|
pub continue_on_error: bool,
|
||
|
|
pub timeout_ms: Option<u64>,
|
||
|
|
}
|
||
|
|
|
||
|
|
impl Default for ScriptOptions {
|
||
|
|
fn default() -> Self {
|
||
|
|
ScriptOptions {
|
||
|
|
max_concurrency: 5,
|
||
|
|
continue_on_error: false,
|
||
|
|
timeout_ms: None,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||
|
|
pub struct WorkflowScript {
|
||
|
|
pub name: String,
|
||
|
|
pub description: String,
|
||
|
|
pub script: ScriptPrimitive,
|
||
|
|
pub options: ScriptOptions,
|
||
|
|
}
|