Skip to content

Commit 9978859

Browse files
authored
fix: display loading UI after tool execution (#1747)
1 parent 84c4015 commit 9978859

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

  • crates/chat-cli/src/cli/chat

crates/chat-cli/src/cli/chat/mod.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3050,6 +3050,11 @@ impl ChatContext {
30503050
} else {
30513051
self.conversation_state.add_tool_results(tool_results);
30523052
}
3053+
if self.interactive {
3054+
execute!(self.output, cursor::Hide)?;
3055+
execute!(self.output, style::Print("\n"), style::SetAttribute(Attribute::Reset))?;
3056+
self.spinner = Some(Spinner::new(Spinners::Dots, "Thinking...".to_string()));
3057+
}
30533058

30543059
self.send_tool_use_telemetry(telemetry).await;
30553060
return Ok(ChatState::HandleResponseStream(
@@ -3075,6 +3080,19 @@ impl ChatContext {
30753080
let mut tool_uses = Vec::new();
30763081
let mut tool_name_being_recvd: Option<String> = None;
30773082

3083+
if self.interactive && self.spinner.is_some() {
3084+
drop(self.spinner.take());
3085+
queue!(
3086+
self.output,
3087+
style::SetForegroundColor(Color::Reset),
3088+
terminal::Clear(terminal::ClearType::CurrentLine),
3089+
cursor::MoveToColumn(0),
3090+
cursor::Show,
3091+
cursor::MoveUp(1),
3092+
terminal::Clear(terminal::ClearType::CurrentLine),
3093+
)?;
3094+
}
3095+
30783096
loop {
30793097
match parser.recv().await {
30803098
Ok(msg_event) => {

0 commit comments

Comments
 (0)