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.
All fields are optional; nodes update only the aspects of state they care about. The workflow runtime merges these partial updates at each barrier.
§Example
use weavegraph::node::NodePartial;
use weavegraph::message::{Message, Role};
use serde_json::json;
use weavegraph::utils::collections::new_extra_map;
let mut extra = new_extra_map();
extra.insert("status".to_string(), json!("success"));
let partial = NodePartial::new()
.with_messages(vec![Message::with_role(Role::Assistant, "Done")])
.with_extra(extra);Fields§
§messages: Option<Vec<Message>>Messages to append to the workflow’s message history.
extra: Option<FxHashMap<String, Value>>Key-value data to merge into the workflow’s extra storage.
errors: Option<Vec<ErrorEvent>>Errors to record in the workflow’s error collection.
frontier: Option<FrontierCommand>Frontier command to influence subsequent routing.
Implementations§
Source§impl NodePartial
impl NodePartial
Sourcepub fn with_messages(self, messages: Vec<Message>) -> Self
pub fn with_messages(self, messages: Vec<Message>) -> Self
Set the messages to append.
Sourcepub fn with_extra(self, extra: FxHashMap<String, Value>) -> Self
pub fn with_extra(self, extra: FxHashMap<String, Value>) -> Self
Set the extra data to merge.
Sourcepub fn with_typed_extra<T: Serialize>(
self,
key: StateKey<T>,
value: T,
) -> Result<Self, StateSlotError>
pub fn with_typed_extra<T: Serialize>( self, key: StateKey<T>, value: T, ) -> Result<Self, StateSlotError>
Insert a typed value into this partial’s extra updates.
The value is serialized to JSON and stored under the key returned by
StateKey::storage_key. Any existing value at the same storage key
is replaced.
Sourcepub fn with_errors(self, errors: Vec<ErrorEvent>) -> Self
pub fn with_errors(self, errors: Vec<ErrorEvent>) -> Self
Set the errors to record.
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 targets.
The runner skips 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 default routes.
Default unconditional edges remain in place; 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.
Sourcepub fn clear_extra_keys<I, S>(self, keys: I) -> Self
pub fn clear_extra_keys<I, S>(self, keys: I) -> Self
Sourcepub fn clear_typed_extra_key<T>(self, key: StateKey<T>) -> Self
pub fn clear_typed_extra_key<T>(self, key: StateKey<T>) -> Self
Write a null marker for a single typed extra key.
Typed companion to clear_extra_keys. The storage
key is derived from the StateKey’s (namespace, name, schema_version) triple.
§Example
use weavegraph::node::NodePartial;
use weavegraph::state::{StateKey, StateLifecycle};
const CURRENT_EVENT: StateKey<u64> =
StateKey::new("wq", "event", 1).invocation_scoped();
let partial = NodePartial::new().clear_typed_extra_key(CURRENT_EVENT);Trait Implementations§
Source§impl Clone for NodePartial
impl Clone for NodePartial
Source§fn clone(&self) -> NodePartial
fn clone(&self) -> NodePartial
1.0.0 (const: unstable) · 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