pub struct NodePartial {
pub messages: Option<Vec<Message>>,
pub extra: Option<FxHashMap<String, Value>>,
pub errors: Option<Vec<ErrorEvent>>,
pub frontier: Option<FrontierCommand>,
}Expand description
Partial state updates returned by node execution.
Represents the changes a node wants to make to the workflow state. All fields are optional, allowing nodes to update only the state aspects they care about. The workflow runtime merges these partial updates.
§Examples
use weavegraph::node::NodePartial;
use weavegraph::message::{Message, Role};
use weavegraph::channels::errors::{ErrorEvent, WeaveError};
use serde_json::json;
use weavegraph::utils::collections::new_extra_map;
// Simple message-only response
let partial = NodePartial::new()
.with_messages(vec![Message::with_role(Role::Assistant, "Done")]);
// Rich response with metadata
let mut extra = new_extra_map();
extra.insert("status".to_string(), json!("success"));
extra.insert("duration_ms".to_string(), json!(150));
let partial = NodePartial::new()
.with_messages(vec![Message::with_role(
Role::Assistant,
"Processing complete",
)])
.with_extra(extra);
// Response with warnings
let errors = vec![ErrorEvent {
error: WeaveError {
message: "Low confidence result".to_string(),
..Default::default()
},
..Default::default()
}];
let partial = NodePartial::new()
.with_messages(vec![Message::with_role(
Role::Assistant,
"Result with warnings",
)])
.with_errors(errors);Fields§
§messages: Option<Vec<Message>>Messages to add to the workflow’s message history.
extra: Option<FxHashMap<String, Value>>Additional key-value data to merge into the workflow’s extra storage.
errors: Option<Vec<ErrorEvent>>Errors to add to the workflow’s error collection.
frontier: Option<FrontierCommand>Frontier commands emitted by the node to influence subsequent routing.
Implementations§
Source§impl NodePartial
impl NodePartial
pub fn new() -> Self
Sourcepub fn with_messages(self, messages: Vec<Message>) -> Self
pub fn with_messages(self, messages: Vec<Message>) -> Self
Create a NodePartial with one or more messages.
Sourcepub fn with_extra(self, extra: FxHashMap<String, Value>) -> Self
pub fn with_extra(self, extra: FxHashMap<String, Value>) -> Self
Create a NodePartial with extra data.
Sourcepub fn with_errors(self, errors: Vec<ErrorEvent>) -> Self
pub fn with_errors(self, errors: Vec<ErrorEvent>) -> Self
Create a NodePartial with one or more errors.
Sourcepub fn with_frontier_replace<I>(self, targets: I) -> Selfwhere
I: IntoIterator<Item = NodeKind>,
pub fn with_frontier_replace<I>(self, targets: I) -> Selfwhere
I: IntoIterator<Item = NodeKind>,
Replace the default frontier with the provided list of targets.
The runner will skip conditional edges for the originating node when a replace command is present.
Sourcepub fn with_frontier_append<I>(self, targets: I) -> Selfwhere
I: IntoIterator<Item = NodeKind>,
pub fn with_frontier_append<I>(self, targets: I) -> Selfwhere
I: IntoIterator<Item = NodeKind>,
Append additional targets to the frontier alongside the default routes.
The default unconditional edges remain in place and the supplied routes are appended in-order for deterministic processing.
Sourcepub fn with_frontier_command(self, command: FrontierCommand) -> Self
pub fn with_frontier_command(self, command: FrontierCommand) -> Self
Attach a pre-built frontier command.
Trait Implementations§
Source§impl Clone for NodePartial
impl Clone for NodePartial
Source§fn clone(&self) -> NodePartial
fn clone(&self) -> NodePartial
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for NodePartial
impl Debug for NodePartial
Source§impl Default for NodePartial
impl Default for NodePartial
Source§fn default() -> NodePartial
fn default() -> NodePartial
Auto Trait Implementations§
impl Freeze for NodePartial
impl RefUnwindSafe for NodePartial
impl Send for NodePartial
impl Sync for NodePartial
impl Unpin for NodePartial
impl UnsafeUnpin for NodePartial
impl UnwindSafe for NodePartial
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> 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 more