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)
}