Stream the report to the terminal as the writer generates it #5

Merged
schaefera merged 5 commits from worktree-deep-research-streaming into master 2026-08-17 10:48:53 +00:00
Showing only changes of commit 469b7cf8c6 - Show all commits

View file

@ -178,7 +178,6 @@ async fn write_report(
drop(spinner);
let mut report = String::new();
let stdout = std::io::stdout();
while let Some(chunk) = response_stream.next().await {
match chunk? {
@ -187,9 +186,11 @@ async fn write_report(
..
})) => {
report.push_str(&text);
let mut handle = stdout.lock();
write!(handle, "{text}")?;
handle.flush()?;
// Terminal stdout is line-buffered, so a flush is needed here —
// otherwise a chunk without a trailing newline sits in the
// buffer instead of appearing as it streams in.
print!("{text}");
std::io::stdout().flush()?;
}
_ => continue,
}