Struct SopStep
pub struct SopStep {Show 19 fields
pub number: u32,
pub title: String,
pub body: String,
pub suggested_tools: Vec<String>,
pub requires_confirmation: bool,
pub kind: SopStepKind,
pub schema: Option<StepSchema>,
pub scope: Option<StepToolScope>,
pub routing: StepRouting,
pub on_failure: StepFailure,
pub mode: Option<SopExecutionMode>,
pub calls: Vec<PlannedToolCall>,
pub pos: Option<StepPos>,
pub agent: Option<String>,
pub capability: Option<String>,
pub capability_input: Option<Value>,
pub policy: Option<String>,
pub gate_prompt: Option<String>,
pub edit: Option<String>,
}Expand description
A single step in an SOP procedure, parsed from SOP.md.
Fields§
§number: u32Ordinal position of this step within the procedure. Steps run in number order unless routing overrides the sequence; the daemon renumbers on save so gaps and reorders normalize to 1..N.
title: StringShort human label for the step, shown on the canvas node and in the step list. Leave blank and the surface falls back to “untitled”.
body: StringThe step’s instruction body in Markdown. This is the prompt the
running agent executes for the step; bindings like {{steps.N}}
resolve against prior step outputs at run time.
suggested_tools: Vec<String>Advisory tool names surfaced to the agent for this step. Legacy alias
for scope.allow; when step_scope_enforce is off these are hints,
not a hard restriction.
requires_confirmation: boolPause for human confirmation before this step runs. Independent of
checkpoint kind and the SOP-level approval gate; both still apply.
kind: SopStepKindStep kind: execute (default) or checkpoint.
schema: Option<StepSchema>Typed input/output schemas for deterministic data flow validation.
scope: Option<StepToolScope>Tool scope for this step. suggested_tools remains the legacy alias.
routing: StepRoutingConditional routing metadata. Default preserves linear execution.
on_failure: StepFailureFailure handling metadata. Default preserves fail-the-run behavior.
mode: Option<SopExecutionMode>Optional per-step execution mode override.
calls: Vec<PlannedToolCall>Ordered tool calls planned for this step. Args may carry
{{steps.N}} / {{calls.K}} bindings validated at save time.
pos: Option<StepPos>Persisted canvas coordinate, set by dragging the node in the Blueprint editor. Absent until the node is moved; not surfaced in the step form.
agent: Option<String>Agent alias that runs this step. Overrides the SOP’s parent agent when
set; unset inherits the parent. Authored, persisted, and resolved into
the executing action via effective_agent (step override then parent).
Spawning a distinct per-step agent’s own session at execution time is
staged follow-on work; today the resolved alias is stamped on the action
and the active agent loop executes the step body.
capability: Option<String>Capability identifier used when kind = "capability".
capability_input: Option<Value>Capability arguments, serialized as with in TOML/JSON definitions.
policy: Option<String>Approval policy name (a key in [sop.approval].policies) the approval broker
enforces for this step’s gate: required approver group + quorum. None keeps
today’s behavior (approval_mode alone governs, no membership/quorum).
gate_prompt: Option<String>Authored gate-notice template for a HITL step (- prompt: bullet).
{{path.to.field}} placeholders resolve against the step’s piped input
(the trigger payload at step 1, the previous step’s output later) — pure
lookups, no logic. Rendered into the out-of-band approval notice so the
approver sees WHAT they are approving; absent = an automatic summary.
edit: Option<String>Editable-field opt-in for a checkpoint step (- edit: body bullet): the
named field of the piped value an approver may amend before the run
resumes (the gate prompt gains an “Edit” choice). Absent = no editing.
Implementations§
Source§impl SopStep
impl SopStep
pub fn capability_id(&self) -> Option<&str>
pub fn capability_call_input(&self, piped_input: Value) -> Value
pub fn effective_tool_scope(&self) -> Option<StepToolScope>
Trait Implementations§
Source§impl<'de> Deserialize<'de> for SopStep
impl<'de> Deserialize<'de> for SopStep
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<SopStep, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<SopStep, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for SopStep
impl JsonSchema for SopStep
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl Serialize for SopStep
impl Serialize for SopStep
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for SopStep
Auto Trait Implementations§
impl Freeze for SopStep
impl RefUnwindSafe for SopStep
impl Send for SopStep
impl Sync for SopStep
impl Unpin for SopStep
impl UnsafeUnpin for SopStep
impl UnwindSafe for SopStep
Blanket Implementations§
§impl<T> AnyEq for T
impl<T> AnyEq for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more