Skip to main content

AgentState

Struct AgentState 

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

Shared state that persists across graph execution. All nodes can read and write to this state.

Implementations§

Source§

impl AgentState

Source

pub fn new() -> Self

Create a new empty state

Source

pub fn with_limits(limits: StateLimits) -> Self

Create a new empty state with explicit limits.

Source

pub fn with_data(data: HashMap<String, Value>) -> Self

Create state with initial data

Source

pub fn with_data_and_limits( data: HashMap<String, Value>, limits: StateLimits, ) -> Self

Create state with initial data and explicit limits.

Source

pub async fn register_reducer( &self, key: impl Into<String>, reducer: impl Reducer + 'static, )

Register a reducer for a specific state key. When set() is called on this key and a value already exists, the reducer is used to combine old and new values.

Source

pub async fn get<T>(&self, key: &str) -> Result<T>

Get a value from state (type-safe)

Source

pub async fn get_opt<T>(&self, key: &str) -> Result<Option<T>>

Try to get a value (returns None if missing)

Source

pub async fn set<T>(&self, key: &str, value: T) -> Result<()>
where T: Serialize,

Set a value in state (type-safe). If a reducer is registered for this key and a value already exists, the reducer is used to combine old and new values.

Source

pub async fn set_raw(&self, key: &str, value: Value) -> Result<()>

Set a raw JSON value without applying reducers.

Source

pub async fn apply_reducer( &self, key: &str, current: &Value, new: &Value, ) -> Result<Value>

Apply a reducer to combine current and new values for a key. If no reducer is registered, returns the new value (last-write-wins).

Source

pub async fn update<T, F>(&self, key: &str, f: F) -> Result<()>
where T: DeserializeOwned + Serialize, F: FnOnce(T) -> T,

Update a value using a closure

Source

pub async fn contains(&self, key: &str) -> bool

Check if a key exists

Source

pub async fn remove(&self, key: &str) -> Option<Value>

Remove a key

Source

pub async fn keys(&self) -> Vec<String>

Get all keys

Source

pub async fn snapshot(&self) -> StateSnapshot

Create a snapshot of current state

Source

pub async fn save_to_history(&self)

Save current state to history

Source

pub async fn restore(&self, snapshot: &StateSnapshot)

Restore state from snapshot

Source

pub async fn get_history(&self) -> Vec<StateSnapshot>

Get state history

Source

pub async fn export(&self) -> HashMap<String, Value>

Export state as HashMap for serialization

Source

pub async fn transaction(&self) -> StateTransaction

Begin a transaction. Captures a snapshot so changes can be rolled back.

Source

pub async fn fork(&self) -> AgentState

Create an independent deep copy of this state for parallel branches. The forked state has its own data storage but shares the same reducers.

Trait Implementations§

Source§

impl Clone for AgentState

Source§

fn clone(&self) -> AgentState

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

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

Performs copy-assignment from source. Read more
Source§

impl Debug for AgentState

Source§

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

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

impl Default for AgentState

Source§

fn default() -> Self

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

Auto Trait Implementations§

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.

Source§

impl<T> Instrument for T

Source§

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

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

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

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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