#![allow(missing_docs, clippy::assign_op_pattern)]
use cognis_core::{Extensions, Message};
use cognis_graph::GraphState;
#[derive(GraphState, Clone, Default, Debug, serde::Serialize)]
pub struct AgentState {
#[reducer(append)]
pub messages: Vec<Message>,
#[reducer(add)]
pub iterations: u32,
pub extras: Extensions,
}
#[cfg(test)]
mod tests {
use super::*;
use cognis_graph::GraphState as GraphStateTrait;
#[test]
fn append_messages() {
let mut s = AgentState::default();
s.apply(AgentStateUpdate {
messages: vec![Message::human("hi"), Message::ai("hello")],
iterations: 0,
});
assert_eq!(s.messages.len(), 2);
assert_eq!(s.iterations, 0);
}
#[test]
fn iterations_add() {
let mut s = AgentState::default();
s.apply(AgentStateUpdate {
messages: vec![],
iterations: 1,
});
s.apply(AgentStateUpdate {
messages: vec![],
iterations: 2,
});
assert_eq!(s.iterations, 3);
}
}