feat: include "reasoning" messages in Rust TUI (#892)

As shown in the screenshot, we now include reasoning messages from the
model in the TUI under the heading "codex reasoning":


![image](https://github.com/user-attachments/assets/d8eb3dc3-2f9f-4e95-847e-d24b421249a8)

To ensure these are visible by default when using `o4-mini`, this also
changes the default value for `summary` (formerly `generate_summary`,
which is deprecated in favor of `summary` according to the docs) from
unset to `"auto"`.
This commit is contained in:
Michael Bolin
2025-05-10 21:43:27 -07:00
committed by GitHub
parent 2b122da087
commit b4785b5f88
9 changed files with 65 additions and 3 deletions

View File

@@ -225,6 +225,10 @@ impl ChatWidget<'_> {
self.conversation_history.add_agent_message(message);
self.request_redraw()?;
}
EventMsg::AgentReasoning { text } => {
self.conversation_history.add_agent_reasoning(text);
self.request_redraw()?;
}
EventMsg::TaskStarted => {
self.bottom_pane.set_task_running(true)?;
self.request_redraw()?;

View File

@@ -174,6 +174,10 @@ impl ConversationHistoryWidget {
self.add_to_history(HistoryCell::new_agent_message(message));
}
pub fn add_agent_reasoning(&mut self, text: String) {
self.add_to_history(HistoryCell::new_agent_reasoning(text));
}
pub fn add_background_event(&mut self, message: String) {
self.add_to_history(HistoryCell::new_background_event(message));
}

View File

@@ -41,6 +41,9 @@ pub(crate) enum HistoryCell {
/// Message from the agent.
AgentMessage { lines: Vec<Line<'static>> },
/// Reasoning event from the agent.
AgentReasoning { lines: Vec<Line<'static>> },
/// An exec tool call that has not finished yet.
ActiveExecCommand {
call_id: String,
@@ -134,6 +137,15 @@ impl HistoryCell {
HistoryCell::AgentMessage { lines }
}
pub(crate) fn new_agent_reasoning(text: String) -> Self {
let mut lines: Vec<Line<'static>> = Vec::new();
lines.push(Line::from("codex reasoning".magenta().italic()));
append_markdown(&text, &mut lines);
lines.push(Line::from(""));
HistoryCell::AgentReasoning { lines }
}
pub(crate) fn new_active_exec_command(call_id: String, command: Vec<String>) -> Self {
let command_escaped = escape_command(&command);
let start = Instant::now();
@@ -363,6 +375,7 @@ impl HistoryCell {
HistoryCell::WelcomeMessage { lines, .. }
| HistoryCell::UserPrompt { lines, .. }
| HistoryCell::AgentMessage { lines, .. }
| HistoryCell::AgentReasoning { lines, .. }
| HistoryCell::BackgroundEvent { lines, .. }
| HistoryCell::ErrorEvent { lines, .. }
| HistoryCell::SessionInfo { lines, .. }