Skip to main content

Sop

Struct Sop 

pub struct Sop {
Show 14 fields pub name: String, pub description: String, pub version: String, pub priority: SopPriority, pub execution_mode: SopExecutionMode, pub triggers: Vec<SopTrigger>, pub steps: Vec<SopStep>, pub cooldown_secs: u64, pub max_concurrent: u32, pub location: Option<PathBuf>, pub deterministic: bool, pub admission_policy: SopAdmissionPolicy, pub max_pending_approvals: u32, pub agent: Option<String>,
}
Expand description

A complete Standard Operating Procedure definition.

Fields§

§name: String

Unique procedure name. Doubles as the on-disk directory key, so a rename in the editor moves the SOP’s folder. Must be non-empty.

§description: String

Free-text summary of what the procedure does and when it fires. Shown in the SOP list and header; purely descriptive, never executed.

§version: String

Semantic version string for the procedure definition (e.g. 1.0.0). Bump it when you change step behavior so runs are traceable.

§priority: SopPriority

Scheduling priority when concurrency limits force a choice between runnable procedures: critical, high, normal (default), low.

§execution_mode: SopExecutionMode

How steps are driven: auto, supervised (default), step_by_step, priority_based, or deterministic. deterministic = true forces the last regardless of this field.

§triggers: Vec<SopTrigger>

Signals that start a run. A procedure may bind several triggers; any one firing (subject to its own condition) launches the SOP.

§steps: Vec<SopStep>

Ordered step definitions. This is the body of the procedure; the daemon renumbers and remaps routing refs on save.

§cooldown_secs: u64

Minimum seconds between successive runs of this procedure. 0 (default) disables the cooldown and back-to-back runs are allowed.

§max_concurrent: u32

Maximum simultaneous runs of this one procedure. Excess trigger firings queue or drop per the engine’s concurrency policy. Default 1.

§location: Option<PathBuf>§deterministic: bool

When true, sets execution_mode to Deterministic. Steps execute sequentially without LLM round-trips.

§admission_policy: SopAdmissionPolicy

How to handle a trigger that cannot be admitted immediately because this SOP’s execution slots are full (A2). Default parallel.

§max_pending_approvals: u32

Upper bound on runs of this SOP parked at a HITL approval at once (0 = unlimited). Once reached, further triggers are deferred (surfaced for backpressure/redelivery) rather than silently dropped. Default 0.

§agent: Option<String>

Parent agent alias that owns this procedure. Every execute step runs as this agent unless the step names its own agent override. Required for headless triggers (mqtt, webhook, cron, amqp), which have no ambient agent loop to borrow.

Trait Implementations§

Source§

impl Clone for Sop

Source§

fn clone(&self) -> Sop

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · §

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Sop

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Sop

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl JsonSchema for Sop

Source§

fn schema_name() -> Cow<'static, str>

The name of the generated JSON Schema. Read more
Source§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
Source§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
Source§

fn inline_schema() -> bool

Whether JSON Schemas generated for this type should be included directly in parent schemas, rather than being re-used where possible using the $ref keyword. Read more
Source§

impl Serialize for Sop

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for Sop

§

impl RefUnwindSafe for Sop

§

impl Send for Sop

§

impl Sync for Sop

§

impl Unpin for Sop

§

impl UnsafeUnpin for Sop

§

impl UnwindSafe for Sop

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,