pub enum NodeKind {
Agent {
system_prompt: String,
model: String,
tools: Vec<String>,
provider: Option<String>,
},
Tool {
tool_name: String,
},
Router {
max_iterations: u32,
},
Respond,
Supervisor {
system_prompt: String,
model: String,
routes: Vec<SupervisorRoute>,
provider: Option<String>,
},
Parallel,
Join,
Approval {
title: String,
mode: String,
risk_threshold: Option<f64>,
confidence_threshold: Option<f64>,
deadline_ms: Option<u64>,
},
}Expand description
The role a node plays in the graph, plus its per-kind configuration.
Serialised with "kind" as the tag field; variant names are lowercase.
Variants§
Agent
An LLM agent that may invoke tools.
Fields
Tool
A deterministic tool call node.
Router
A routing decision node (loop vs. resolved).
Respond
Terminal node that emits the final reply.
Supervisor
LLM-routing supervisor — picks a branch from its route list.
Requires schemaVersion: 2.
Fields
routes: Vec<SupervisorRoute>Parallel
Fan-out node — spawns one branch per outgoing edge.
Requires schemaVersion: 2.
Join
Fan-in node — waits for all parallel branches to arrive.
Requires schemaVersion: 2.
Approval
Human-in-the-loop approval node. Parks the run awaiting a human decision
(RunStatus::AwaitingInput) and advances along the approved/denied/
timeout edge once decided. The decision itself is supplied by the host’s
ApprovalFn closure.
Requires schemaVersion: 2.
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for NodeKind
impl<'de> Deserialize<'de> for NodeKind
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for NodeKind
impl RefUnwindSafe for NodeKind
impl Send for NodeKind
impl Sync for NodeKind
impl Unpin for NodeKind
impl UnsafeUnpin for NodeKind
impl UnwindSafe for NodeKind
Blanket Implementations§
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request