diff --git a/crates/agent/src/active_thread.rs b/crates/agent/src/active_thread.rs index ebad961a71c8a145b57dbf7b56defccfdf0a4c8d..62cd1b8712ea9cae4a6fa3e0c828f7351fc2852e 100644 --- a/crates/agent/src/active_thread.rs +++ b/crates/agent/src/active_thread.rs @@ -1017,6 +1017,15 @@ impl ActiveThread { self.play_notification_sound(cx); self.show_notification("Waiting for tool confirmation", IconName::Info, window, cx); } + ThreadEvent::ToolUseLimitReached => { + self.play_notification_sound(cx); + self.show_notification( + "Consecutive tool use limit reached.", + IconName::Warning, + window, + cx, + ); + } ThreadEvent::StreamedAssistantText(message_id, text) => { if let Some(rendered_message) = self.rendered_messages_by_id.get_mut(&message_id) { rendered_message.append_text(text, cx); diff --git a/crates/agent/src/agent_diff.rs b/crates/agent/src/agent_diff.rs index c1c2ed87bb1f1bb50a3f3b6a019763bd757b0032..c01c7e85cd1a353b29a7bc5c7674555e14ba5fdf 100644 --- a/crates/agent/src/agent_diff.rs +++ b/crates/agent/src/agent_diff.rs @@ -1372,6 +1372,7 @@ impl AgentDiff { | ThreadEvent::ToolFinished { .. } | ThreadEvent::CheckpointChanged | ThreadEvent::ToolConfirmationNeeded + | ThreadEvent::ToolUseLimitReached | ThreadEvent::CancelEditing => {} } } diff --git a/crates/agent/src/thread.rs b/crates/agent/src/thread.rs index 0b0308340ca601effd92aa688cbbc9e1e7bda38e..f907766759d54bc2250ee8820c961958feafb30d 100644 --- a/crates/agent/src/thread.rs +++ b/crates/agent/src/thread.rs @@ -1673,6 +1673,7 @@ impl Thread { } CompletionRequestStatus::ToolUseLimitReached => { thread.tool_use_limit_reached = true; + cx.emit(ThreadEvent::ToolUseLimitReached); } } } @@ -2843,6 +2844,7 @@ pub enum ThreadEvent { }, CheckpointChanged, ToolConfirmationNeeded, + ToolUseLimitReached, CancelEditing, CompletionCanceled, } diff --git a/crates/eval/src/example.rs b/crates/eval/src/example.rs index 5615179036fd568d17855d6132addaa8f26b5742..dc384668c33fcee4f1d0ba4e6634787dc50a1b6f 100644 --- a/crates/eval/src/example.rs +++ b/crates/eval/src/example.rs @@ -246,6 +246,7 @@ impl ExampleContext { | ThreadEvent::StreamedAssistantThinking(_, _) | ThreadEvent::UsePendingTools { .. } | ThreadEvent::CompletionCanceled => {} + ThreadEvent::ToolUseLimitReached => {} ThreadEvent::ToolFinished { tool_use_id, pending_tool_use,