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}