Node

Struct Node 

Source
pub struct Node { /* private fields */ }
Expand description

A clonable handle to a workflow with lazy loading and shared reads.

Implementations§

Source§

impl Node

Source

pub fn new(inference: Arc<Inference>) -> Self

Creates a new Node in the Pending state with the given Inference.

Source

pub fn init_new(reference: Arc<Reference>, inference: Arc<Inference>) -> Self

Source

pub fn init_default(reference: Arc<Reference>) -> Self

Source

pub fn parse(input: &str) -> Result<Self>

Source

pub fn init(&self, reference: Arc<Reference>)

Initializes the Node in the Unloaded state with the given Reference.

Source

pub fn reference(&self) -> Result<Arc<Reference>>

Source

pub fn inference(&self) -> Arc<Inference>

Returns the inference characteristic for this workflow.

The model provides an abstraction to decouple inference from reliance on a specific underlying model. The model performance characteristic reflects one of six specializations:

  • Fast - optimized for speed and low latency
  • Standard - balanced performance for general use
  • Thinking - optimized for complex reasoning
  • Extraction - optimized for a large context window
  • Instruct - optimized for closely following instructions
  • Coder - optimized for programming tasks

The pattern provides an abstraction for different kinds of workflow tasks.

  • Evaluate - non-agentic workflow evaluation
  • Inference - general inference pattern
  • Search - search extraction pattern
  • Summarize - map-reduce pattern
  • Compose - ReAct composer pattern for accurate annotation based document editing (Crate markdown)
  • Debate - debate pattern where two agents each make an assessment; a third judge scores resolution.
Source

pub fn get_workflow(&self) -> Result<Arc<Workflow>>

Gets the workflow for read-only access, loading it with Workflow::load_new if needed.

Uses a double-checked lock: fast RwLock read when loaded, upgrades to write lock to perform a single load on transition from Unloaded. Panics on poisoned locks.

Source

pub fn get_workflow_like(&self) -> Result<Arc<dyn WorkflowLike>>

Returns the workflow as Arc<dyn WorkflowLike>.

Source

pub fn get_workflow_mut(&self) -> Result<Workflow>

Returns an owned Workflow for mutation.

Source

pub fn set_workflow(&self, workflow: Workflow)

Atomically replace the old workflow with the new workflow.

Sets state to Loaded with a new shared snapshot. Panics on poisoned lock.

Source

pub fn compact(&self)

Source

pub fn save_all(&self) -> Result<()>

Recursively saves all workflows and instances within this node’s workflow hierarchy.

This method saves the current workflow if it has pending changes, then recursively saves all child nodes and instances. It handles both loaded and unloaded workflows to ensure comprehensive state persistence.

§Returns

Ok(()) if all save operations complete successfully, or an error if any workflow or instance fails to save.

§Behavior
  • Saves the current workflow if it has pending changes (is_touched())
  • Recursively saves all child nodes in the workflow
  • Saves all instances within the workflow
  • Handles unloaded workflows by checking if they need saving
  • Fails fast on any save error to maintain consistency
Source

pub fn print(&self, writer: &mut Writer)

Trait Implementations§

Source§

impl Clone for Node

Source§

fn clone(&self) -> Node

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Node

Source§

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

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

impl Default for Node

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Display for Node

Source§

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

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

impl PartialEq for Node

Source§

fn eq(&self, other: &Self) -> bool

Equality is based on shared internal Arc identity, not workflow content.

1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl WriterLike for Node

Source§

fn write(&self, writer: &mut Writer)

Serialize this expression with the given Writer.
Source§

fn to_stringized(&self) -> String

Return a string representation (raw unsafe output).
Source§

fn to_sanitized(&self) -> String

Return a sanitized string representation (escaped for safe output).
Source§

fn to_expressionized(&self) -> String

Return a sanitized string representation (escaped for safe output).

Auto Trait Implementations§

§

impl Freeze for Node

§

impl RefUnwindSafe for Node

§

impl Send for Node

§

impl Sync for Node

§

impl Unpin for Node

§

impl UnwindSafe for Node

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> 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.

§

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> 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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
§

impl<T> ToStringFallible for T
where T: Display,

§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

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<T> ErasedDestructor for T
where T: 'static,