use std::collections::VecDeque;
pub struct OperationState {
pub pending_file_read: bool,
pub reading_file_status: Option<String>,
pub accumulated_tool_calls: Vec<crate::models::ToolCall>,
pub queued_messages: VecDeque<String>,
}
impl OperationState {
pub fn new() -> Self {
Self {
pending_file_read: false,
reading_file_status: None,
accumulated_tool_calls: Vec::new(),
queued_messages: VecDeque::new(),
}
}
pub fn queue_message(&mut self, message: String) {
self.queued_messages.push_back(message);
}
pub fn take_queued_message(&mut self) -> Option<String> {
self.queued_messages.pop_front()
}
pub fn has_queued_message(&self) -> bool {
!self.queued_messages.is_empty()
}
pub fn get_queued_messages(&self) -> &VecDeque<String> {
&self.queued_messages
}
pub fn queued_message_count(&self) -> usize {
self.queued_messages.len()
}
}
impl Default for OperationState {
fn default() -> Self {
Self::new()
}
}