magi-code 0.63.1

Repository-aware CLI coding agent for terminal work
Documentation
mod copy_mapping;
mod projection;
mod visual_lines;

#[cfg(test)]
pub(crate) use copy_mapping::visual_text;
pub(crate) use copy_mapping::{
    activity_button_for_visual_cell, text_position_for_visual_cell, visual_text_for_width,
};
pub(crate) use projection::{TranscriptActivityLink, TranscriptCard};
#[cfg(test)]
pub(crate) use projection::{
    TranscriptCardRole, TranscriptCardStatus, project_cards, project_entry_count_for_test,
    reset_project_entry_count_for_test,
};
#[cfg(test)]
pub(crate) use visual_lines::visual_lines;
pub(crate) use visual_lines::{
    TranscriptVisualLine, VisibleTranscriptLines, cached_visual_lines_ref, rendered_line_text,
    visible_scrollback_lines, visible_scrollback_visual_lines, visible_tail_lines,
    visual_line_rows,
};

#[cfg(test)]
pub(crate) use crate::{
    output::{ActivityId, ActivityStatus},
    rendering::plain_projection,
    tui::{state::MissionControlState, theme::MATRIX_GREEN},
};
#[cfg(test)]
pub(crate) use ratatui::{
    style::Modifier,
    text::{Line, Span},
};
#[cfg(test)]
pub(crate) use unicode_width::UnicodeWidthStr;

#[cfg(test)]
fn bounded_lines(text: &str, max_lines: usize) -> String {
    projection::bounded_lines(text, max_lines)
}

#[cfg(test)]
fn transcript_status_from_activity(status: ActivityStatus) -> TranscriptCardStatus {
    projection::transcript_status_from_activity(status)
}

#[cfg(test)]
fn status_mark(status: TranscriptCardStatus) -> &'static str {
    visual_lines::status_mark(status)
}

#[cfg(test)]
fn wrap_spans_to_width(spans: Vec<Span<'static>>, max_width: usize) -> Vec<Vec<Span<'static>>> {
    visual_lines::wrap_spans_to_width(spans, max_width)
}

#[cfg(test)]
fn spans_text(spans: &[Span<'static>]) -> String {
    visual_lines::spans_text(spans)
}

#[cfg(test)]
fn spans_display_width(spans: &[Span<'static>]) -> usize {
    visual_lines::spans_display_width(spans)
}

pub(crate) const CARD_LAYOUT_MIN_WIDTH: u16 = 48;
pub(super) const TOOL_PREVIEW_LINES: usize = 4;
pub(super) const BASH_MODE_RESPONSE_TITLE: &str = "Bash Mode Response";
pub(super) const ACTIVITY_BUTTON_LABEL: &str = "[view-activity]";
pub(super) const TRANSCRIPT_VIEWPORT_OVERSCAN_ROWS: usize = 2;
pub(super) const PREVIEW_LINE_MAX_DISPLAY_WIDTH: usize = 240;

#[cfg(test)]
#[path = "../transcript_cards_tests.rs"]
mod tests;