magi-code 0.97.5

Repository-aware CLI coding agent for terminal work
Documentation
use super::*;

pub(crate) fn session_picker_visible_rows(terminal_area: ratatui::layout::Rect) -> usize {
    picker_visible_rows(render::sessions_modal_list_area(terminal_area))
}

pub(crate) fn skills_modal_visible_rows(terminal_area: ratatui::layout::Rect) -> usize {
    picker_visible_rows(render::skills_modal_list_area(terminal_area))
}

pub(crate) fn mcp_modal_visible_rows(terminal_area: ratatui::layout::Rect) -> usize {
    picker_visible_rows(render::mcp_modal_list_area(terminal_area))
}

pub(crate) fn tools_modal_visible_rows(terminal_area: ratatui::layout::Rect) -> usize {
    picker_visible_rows(render::tools_modal_list_area(terminal_area))
}

pub(crate) fn subagents_modal_visible_rows(terminal_area: ratatui::layout::Rect) -> usize {
    picker_visible_rows(render::subagents_modal_list_area(terminal_area))
}

pub(crate) fn model_picker_visible_rows(
    terminal_area: ratatui::layout::Rect,
    has_notice: bool,
) -> usize {
    picker_visible_rows(render::model_picker_list_area(terminal_area, has_notice))
}

pub(crate) fn logout_picker_visible_rows(
    terminal_area: ratatui::layout::Rect,
    has_notice: bool,
) -> usize {
    picker_visible_rows(render::logout_picker_list_area(terminal_area, has_notice))
}

pub(crate) fn codex_refresh_error_message(error: impl std::fmt::Display) -> String {
    let error = error.to_string();
    if error.contains("run /login openai-codex") {
        format!("openai-codex credential refresh failed: {error}")
    } else {
        format!("openai-codex credential refresh failed: {error}; run /login openai-codex")
    }
}

pub(crate) fn next_activity_namespace() -> String {
    let run_id = NEXT_TUI_RUN_ID.fetch_add(1, Ordering::Relaxed);
    format!("run-{run_id}/")
}

pub(crate) fn cached_thinking_levels_for_model(
    paths: &crate::config::McPaths,
    provider: &str,
    model: &str,
    scope: crate::thinking::ThinkingCapabilityScope,
) -> Vec<crate::thinking::ThinkingLevel> {
    let cached = crate::model_catalog::cached_model_thinking_metadata(paths, provider, model);
    crate::thinking::available_thinking_levels(provider, model, cached.as_ref(), scope)
}