magi-code 0.96.1

Repository-aware CLI coding agent for terminal work
Documentation
use super::{PICKER_MODAL, draw_modal_panel_with_hotkeys};
use crate::tui::state::MissionControlState;
use ratatui::{
    Frame,
    layout::Rect,
    widgets::{Paragraph, Wrap},
};

pub(super) fn draw_bash_approval(frame: &mut Frame<'_>, area: Rect, state: &MissionControlState) {
    let Some(approval) = &state.modals.bash_approval else {
        return;
    };
    let Some(text_area) = draw_modal_panel_with_hotkeys(
        frame,
        area,
        "Bash Protection",
        PICKER_MODAL,
        state.theme,
        "[Enter/a] allow",
        Some("[Esc/d] deny"),
    ) else {
        return;
    };
    let request = &approval.request;
    let command = crate::output::sanitize_display_text(&request.command);
    let probabilities = request
        .probabilities
        .iter()
        .map(|(level, probability)| format!("{level}: {probability:.2}"))
        .collect::<Vec<_>>()
        .join(", ");
    let text = format!(
        "Jev flagged this command.\n\nRisk: {:.2}  Confidence: {:.2}\nProbabilities: {probabilities}\n\n{command}",
        request.score, request.confidence,
    );
    frame.render_widget(
        Paragraph::new(text)
            .style(state.theme.pane())
            .wrap(Wrap { trim: false }),
        text_area,
    );
}