codetether_agent/tui/ui/chat_view/
entries.rs1use ratatui::text::Line;
4
5use crate::tui::color_palette::ColorPalette;
6use crate::tui::message_formatter::MessageFormatter;
7use crate::tui::ui::tool_panel::{RenderEntry, build_tool_activity_panel, render_chat_message};
8
9use super::entry_result::EntryAppendResult;
10use super::separator::push_separator;
11
12pub fn append_entries(
22 lines: &mut Vec<Line<'static>>,
23 entries: &[RenderEntry<'_>],
24 separator_width: usize,
25 panel_width: usize,
26 tool_preview_scroll: usize,
27 formatter: &MessageFormatter,
28 palette: &ColorPalette,
29) -> EntryAppendResult {
30 let mut tool_preview_max_scroll = 0;
31 for (idx, entry) in entries.iter().enumerate() {
32 if idx > 0 {
33 push_separator(lines, entry, separator_width);
34 }
35 if !entry.tool_activity.is_empty() {
36 let panel =
37 build_tool_activity_panel(&entry.tool_activity, tool_preview_scroll, panel_width);
38 tool_preview_max_scroll = tool_preview_max_scroll.max(panel.max_scroll);
39 lines.extend(panel.lines);
40 if entry.message.is_some() {
41 lines.push(Line::from(""));
42 }
43 }
44 if let Some(message) = entry.message {
45 render_chat_message(lines, message, formatter, palette);
46 lines.push(Line::from(""));
47 }
48 }
49 EntryAppendResult {
50 tool_preview_max_scroll,
51 }
52}