Skip to main content

synwire_core/
state.rs

1//! State trait for agent state management.
2
3use serde::{Serialize, de::DeserializeOwned};
4use serde_json::Value;
5
6/// State trait for agent state.
7///
8/// Agents maintain state that can be serialized and deserialized.
9pub trait State: Send + Sync + Clone + Serialize + DeserializeOwned + 'static {
10    /// Serialize state to JSON value.
11    fn to_value(&self) -> Result<Value, Box<dyn std::error::Error + Send + Sync>>;
12
13    /// Deserialize state from JSON value.
14    fn from_value(value: Value) -> Result<Self, Box<dyn std::error::Error + Send + Sync>>;
15}