magi-code 0.63.4

Repository-aware CLI coding agent for terminal work
Documentation
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) enum RunningPromptStatus {
    Running,
    Canceling,
    Canceled,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub(crate) struct RunningPromptState {
    pub(crate) text: String,
    pub(crate) status: RunningPromptStatus,
}

use super::MissionControlState;

impl MissionControlState {
    pub(crate) fn start_running_prompt(&mut self, text: String) {
        self.running_prompt = Some(RunningPromptState {
            text,
            status: RunningPromptStatus::Running,
        });
    }

    pub(crate) fn request_running_prompt_cancel(&mut self) -> Option<String> {
        let running = self.running_prompt.as_mut()?;
        if running.status == RunningPromptStatus::Running {
            running.status = RunningPromptStatus::Canceling;
        }
        Some(running.text.clone())
    }

    pub(crate) fn mark_running_prompt_canceled(&mut self) -> Option<String> {
        let running = self.running_prompt.as_mut()?;
        running.status = RunningPromptStatus::Canceled;
        Some(running.text.clone())
    }

    pub(crate) fn clear_running_prompt(&mut self) {
        self.running_prompt = None;
    }

    pub(crate) fn running_prompt_cancelable(&self) -> bool {
        self.running_prompt
            .as_ref()
            .is_some_and(|running| running.status == RunningPromptStatus::Running)
    }
}