mermaid_cli/tui/state/
operation.rs1use std::collections::VecDeque;
6
7pub struct OperationState {
9 pub pending_file_read: bool,
11 pub reading_file_status: Option<String>,
13 pub accumulated_tool_calls: Vec<crate::models::ToolCall>,
15 pub queued_messages: VecDeque<String>,
17}
18
19impl OperationState {
20 pub fn new() -> Self {
22 Self {
23 pending_file_read: false,
24 reading_file_status: None,
25 accumulated_tool_calls: Vec::new(),
26 queued_messages: VecDeque::new(),
27 }
28 }
29
30 pub fn queue_message(&mut self, message: String) {
32 self.queued_messages.push_back(message);
33 }
34
35 pub fn take_queued_message(&mut self) -> Option<String> {
37 self.queued_messages.pop_front()
38 }
39
40 pub fn has_queued_message(&self) -> bool {
42 !self.queued_messages.is_empty()
43 }
44
45 pub fn get_queued_messages(&self) -> &VecDeque<String> {
47 &self.queued_messages
48 }
49
50 pub fn queued_message_count(&self) -> usize {
52 self.queued_messages.len()
53 }
54}
55
56impl Default for OperationState {
57 fn default() -> Self {
58 Self::new()
59 }
60}