magi-code 0.80.1

Repository-aware CLI coding agent for terminal work
Documentation
use super::{
    PICKER_MODAL, draw_modal_panel_with_hotkeys, picker_list_area, picker_modal_list_area,
    render_picker_list,
};
use crate::tui::state::MissionControlState;
use ratatui::{
    Frame,
    layout::Rect,
    text::Line,
    widgets::{ListItem, Paragraph},
};
pub(crate) fn subagents_modal_list_area(area: Rect) -> Option<Rect> {
    picker_modal_list_area(area, "Subagents", 1)
}
pub(in crate::tui::render) fn draw_subagents_modal(
    frame: &mut Frame<'_>,
    area: Rect,
    state: &MissionControlState,
) {
    let Some(m) = &state.modals.subagents_modal else {
        return;
    };
    let theme = state.theme;
    let Some(a) = draw_modal_panel_with_hotkeys(
        frame,
        area,
        "Subagents",
        PICKER_MODAL,
        theme,
        "[Tab] scope • [↑/↓] move • [Enter] toggle",
        Some("[Esc] close"),
    ) else {
        return;
    };
    if a.height == 0 {
        return;
    };
    frame.render_widget(
        Paragraph::new(format!("Scope: {}", m.scope_label)).style(theme.pane()),
        Rect::new(a.x, a.y, a.width, 1),
    );
    let Some(list_area) = picker_list_area(a, 1) else {
        return;
    };
    if m.rows.is_empty() {
        frame.render_widget(
            Paragraph::new("No subagent profiles discovered").style(theme.pane()),
            list_area,
        );
        return;
    }
    let items = m
        .rows
        .iter()
        .map(|r| {
            ListItem::new(Line::from(if r.description.is_empty() {
                format!("{} {}", if r.enabled { "[x]" } else { "[ ]" }, r.id)
            } else {
                format!(
                    "{} {}{}",
                    if r.enabled { "[x]" } else { "[ ]" },
                    r.id,
                    r.description
                )
            }))
        })
        .collect::<Vec<_>>();
    render_picker_list(
        frame,
        list_area,
        items,
        m.selected,
        &state.scroll_views.subagents_modal,
        theme,
    );
}