diff --git a/crates/agent_ui/src/agent_configuration/tool_picker.rs b/crates/agent_ui/src/agent_configuration/tool_picker.rs index be6fcb5bd2..9fc1794419 100644 --- a/crates/agent_ui/src/agent_configuration/tool_picker.rs +++ b/crates/agent_ui/src/agent_configuration/tool_picker.rs @@ -173,11 +173,7 @@ impl PickerDelegate for ToolPickerDelegate { } fn can_select(&self, ix: usize, _window: &mut Window, _cx: &mut Context>) -> bool { - let item = &self.filtered_items[ix]; - match item { - PickerItem::Tool { .. } => true, - PickerItem::ContextServer { .. } => false, - } + matches!(self.filtered_items.get(ix), Some(PickerItem::Tool { .. })) } fn placeholder_text(&self, _window: &mut Window, _cx: &mut App) -> Arc { @@ -245,7 +241,9 @@ impl PickerDelegate for ToolPickerDelegate { return; } - let item = &self.filtered_items[self.selected_index]; + let Some(item) = self.filtered_items.get(self.selected_index) else { + return; + }; let PickerItem::Tool { name: tool_name, diff --git a/crates/picker/src/picker.rs b/crates/picker/src/picker.rs index d5220ae14f..78a6837bc1 100644 --- a/crates/picker/src/picker.rs +++ b/crates/picker/src/picker.rs @@ -803,7 +803,8 @@ impl Picker { ix: usize, ) -> impl IntoElement + use { let item_bounds = self.item_bounds.clone(); - let selectable = self.delegate.can_select(ix, window, cx); + let selectable = + ix < self.delegate.match_count() && self.delegate.can_select(ix, window, cx); div() .id(("item", ix))