fix: session replays now include mid-turn messages so the full session gets replayed
This commit is contained in:
1 file changed
+36
-1
+36
-1
@@ -1,6 +1,6 @@
|
|||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
|
|
||||||
use crate::client::{Message, MessageRole};
|
use crate::client::{Message, MessageContent, MessageContentToolCalls, MessageRole};
|
||||||
use crate::config::{AppConfig, Session};
|
use crate::config::{AppConfig, Session};
|
||||||
use crate::utils::{dimmed_text, replay_label_text};
|
use crate::utils::{dimmed_text, replay_label_text};
|
||||||
|
|
||||||
@@ -52,9 +52,44 @@ fn render_messages(app: &AppConfig, messages: &[Message]) -> Result<()> {
|
|||||||
println!();
|
println!();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
MessageRole::Tool => {
|
||||||
|
if let MessageContent::ToolCalls(tool_calls) = &message.content {
|
||||||
|
render_tool_call_rounds(app, tool_calls)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn render_tool_call_rounds(app: &AppConfig, tool_calls: &MessageContentToolCalls) -> Result<()> {
|
||||||
|
let mut needs_gap_after_calls = false;
|
||||||
|
if !tool_calls.text.trim().is_empty() {
|
||||||
|
println!("{}", replay_label_text("Assistant:"));
|
||||||
|
app.print_markdown(&tool_calls.text)?;
|
||||||
|
println!();
|
||||||
|
}
|
||||||
|
|
||||||
|
for result in &tool_calls.tool_results {
|
||||||
|
if let Some(text) = result.text.as_deref().filter(|t| !t.trim().is_empty()) {
|
||||||
|
if needs_gap_after_calls {
|
||||||
|
println!();
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("{}", replay_label_text("Assistant:"));
|
||||||
|
app.print_markdown(text)?;
|
||||||
|
println!();
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("{}", dimmed_text(&format!("⚙ {}", result.call.name)));
|
||||||
|
needs_gap_after_calls = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if needs_gap_after_calls {
|
||||||
|
println!();
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
Reference in new issue
Block a user