64 lines
2.0 KiB
Rust
64 lines
2.0 KiB
Rust
//! Script primitives for the workflow engine: agent invocation, parallel
|
|
//! execution, pipelines, and phases.
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
/// A workflow script primitive — can be a single agent, a parallel fan-out,
|
|
/// a sequential pipeline, or a named phase.
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub enum ScriptPrimitive {
|
|
/// Run a single agent with the given prompt template.
|
|
Agent(String),
|
|
/// Run a single Hive drone with an explicit node designation and
|
|
/// tool-scope tier.
|
|
///
|
|
/// Used by the Hive's cognitive cycle pipeline, where a drone's
|
|
/// identity is its system-assigned coordinate (e.g. `"Node-0-1"`)
|
|
/// paired with a bounded tool allowlist. `tool_scope` is one of
|
|
/// `"read"`, `"write"`, `"full"` (see
|
|
/// `app::subagent::division::tool_scope`); unrecognized values fall
|
|
/// back to `"read"`.
|
|
ScopedAgent {
|
|
prompt: String,
|
|
node_id: String,
|
|
tool_scope: String,
|
|
},
|
|
/// Execute several primitives concurrently.
|
|
Parallel(Vec<ScriptPrimitive>),
|
|
/// Execute several primitives sequentially, each waiting for the
|
|
/// previous to complete.
|
|
Pipeline(Vec<ScriptPrimitive>),
|
|
/// A named wrapper around another primitive (used for display/tracing).
|
|
Phase {
|
|
name: String,
|
|
script: Box<ScriptPrimitive>,
|
|
},
|
|
}
|
|
|
|
/// Runtime options for a workflow execution.
|
|
#[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,
|
|
}
|
|
}
|
|
}
|
|
|
|
/// A named, versioned workflow script with its primitives and options.
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct WorkflowScript {
|
|
pub name: String,
|
|
pub description: String,
|
|
pub script: ScriptPrimitive,
|
|
pub options: ScriptOptions,
|
|
}
|