magi-code 0.61.0

Repository-aware CLI coding agent for terminal work
Documentation
use super::*;
use crate::output::{
    ActivityEvent, ActivityId, ActivityKind, ActivityMetadata, ActivityStatus, OutputEvent,
    ToolDisplaySummary, ToolStatus,
};
use ratatui::{backend::TestBackend, buffer::Buffer, style::Modifier};

use super::test_support::{find_text, find_text_in_area};

const TEST_PICKER_VISIBLE_ROWS: usize = crate::tui::input::DEFAULT_PICKER_VISIBLE_ROWS as usize;

fn rendered_text_in_area(buffer: &Buffer, area: Rect) -> String {
    let mut rendered = String::new();
    for y in area.y..area.y + area.height {
        for x in area.x..area.x + area.width {
            rendered.push_str(buffer[(x, y)].symbol());
        }
        rendered.push('\n');
    }
    rendered
}

fn assert_square_corners(buffer: &Buffer, area: Rect) {
    assert_eq!(buffer[(area.x, area.y)].symbol(), "");
    assert_eq!(buffer[(area.x + area.width - 1, area.y)].symbol(), "");
    assert_eq!(buffer[(area.x, area.y + area.height - 1)].symbol(), "");
    assert_eq!(
        buffer[(area.x + area.width - 1, area.y + area.height - 1)].symbol(),
        ""
    );
}

fn state_with_autocomplete() -> MissionControlState {
    let mut state = MissionControlState {
        input: "/n".to_string(),
        prompt_cursor: 2,
        focus_pane: crate::tui::state::TuiFocusPane::Prompt,
        ..Default::default()
    };
    state.recompute_autocomplete(&[
        crate::tui::state::AutocompleteCandidate::slash_command("new", "start a new session"),
        crate::tui::state::AutocompleteCandidate::slash_command("quit", "exit magi-code"),
    ]);
    state
}

mod activity;
mod help;
mod layout;
mod misc;
mod modals;
mod prompt;
mod transcript;