@@ -284,6 +284,17 @@ impl AgentType {
}
}
+impl From<ExternalAgent> for AgentType {
+ fn from(value: ExternalAgent) -> Self {
+ match value {
+ ExternalAgent::Gemini => Self::Gemini,
+ ExternalAgent::ClaudeCode => Self::ClaudeCode,
+ ExternalAgent::Custom { name, command } => Self::Custom { name, command },
+ ExternalAgent::NativeAgent => Self::NativeAgent,
+ }
+ }
+}
+
impl ActiveView {
pub fn which_font_size_used(&self) -> WhichFontSize {
match self {
@@ -1049,6 +1060,11 @@ impl AgentPanel {
editor
});
+ if self.selected_agent != AgentType::TextThread {
+ self.selected_agent = AgentType::TextThread;
+ self.serialize(cx);
+ }
+
self.set_active_view(
ActiveView::prompt_editor(
context_editor.clone(),
@@ -1140,6 +1156,12 @@ impl AgentPanel {
}
}
+ let selected_agent = ext_agent.into();
+ if this.selected_agent != selected_agent {
+ this.selected_agent = selected_agent;
+ this.serialize(cx);
+ }
+
let thread_view = cx.new(|cx| {
crate::acp::AcpThreadView::new(
server,
@@ -1235,6 +1257,12 @@ impl AgentPanel {
cx,
)
});
+
+ if self.selected_agent != AgentType::TextThread {
+ self.selected_agent = AgentType::TextThread;
+ self.serialize(cx);
+ }
+
self.set_active_view(
ActiveView::prompt_editor(
editor,
@@ -1860,11 +1888,6 @@ impl AgentPanel {
window: &mut Window,
cx: &mut Context<Self>,
) {
- if self.selected_agent != agent {
- self.selected_agent = agent.clone();
- self.serialize(cx);
- }
-
match agent {
AgentType::Zed => {
window.dispatch_action(