use crate::repl::conversation::ConversationHistory;
use crate::session::DisplayMessage;
#[derive(Clone)]
pub struct SessionState {
pub session_id: String,
pub conversation: ConversationHistory,
pub display_messages: Vec<DisplayMessage>,
pub total_input_tokens: u32,
pub total_output_tokens: u32,
}
impl SessionState {
pub fn new(session_id: String, conversation: ConversationHistory) -> Self {
Self {
session_id,
conversation,
display_messages: Vec::new(),
total_input_tokens: 0,
total_output_tokens: 0,
}
}
pub fn clear(&mut self, new_session_id: String) {
self.session_id = new_session_id;
self.conversation.clear();
self.display_messages.clear();
self.total_input_tokens = 0;
self.total_output_tokens = 0;
}
pub fn add_tokens(&mut self, input_tokens: u32, output_tokens: u32) {
self.total_input_tokens += input_tokens;
self.total_output_tokens += output_tokens;
}
}