use std::{path::Path, rc::Rc}; use agent_client_protocol as acp; use anyhow::Result; use gpui::{AsyncApp, Entity, Task}; use project::Project; use ui::App; use crate::AcpThread; pub trait AgentConnection { fn name(&self) -> &'static str; fn new_thread( self: Rc, project: Entity, cwd: &Path, cx: &mut AsyncApp, ) -> Task>>; fn authenticate(&self, cx: &mut App) -> Task>; fn prompt(&self, params: acp::PromptToolArguments, cx: &mut App) -> Task>; fn cancel(&self, session_id: &acp::SessionId, cx: &mut App); }