Detailed changes
@@ -477,7 +477,7 @@ ztracing_macro = { path = "crates/ztracing_macro" }
# External crates
#
-agent-client-protocol-core = { git = "https://github.com/agentclientprotocol/rust-sdk", rev = "9fa32bb04e301f4be968a372eb5085dc3a86ef3c", features = ["unstable"] }
+agent-client-protocol = { package = "agent-client-protocol-core", git = "https://github.com/agentclientprotocol/rust-sdk", rev = "9fa32bb04e301f4be968a372eb5085dc3a86ef3c", features = ["unstable"] }
aho-corasick = "1.1"
alacritty_terminal = { git = "https://github.com/zed-industries/alacritty", rev = "9d9640d4" }
any_vec = "0.14"
@@ -17,7 +17,7 @@ test-support = ["gpui/test-support", "project/test-support", "dep:parking_lot",
[dependencies]
action_log.workspace = true
-agent-client-protocol-core.workspace = true
+agent-client-protocol.workspace = true
base64.workspace = true
anyhow.workspace = true
buffer_diff.workspace = true
@@ -3,7 +3,7 @@ mod diff;
mod mention;
mod terminal;
use action_log::{ActionLog, ActionLogTelemetry};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::{Context as _, Result, anyhow};
use collections::HashSet;
pub use connection::*;
@@ -1,5 +1,5 @@
use crate::AcpThread;
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::Result;
use chrono::{DateTime, Utc};
use collections::{HashMap, IndexMap};
@@ -1,4 +1,4 @@
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::{Context as _, Result, bail};
use file_icons::FileIcons;
use prompt_store::{PromptId, UserPromptId};
@@ -1,4 +1,4 @@
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::Result;
use futures::{FutureExt as _, future::Shared};
use gpui::{App, AppContext, AsyncApp, Context, Entity, Task};
@@ -14,7 +14,7 @@ path = "src/acp_tools.rs"
doctest = false
[dependencies]
-agent-client-protocol-core.workspace = true
+agent-client-protocol.workspace = true
collections.workspace = true
gpui.workspace = true
language.workspace= true
@@ -1,6 +1,6 @@
use std::{collections::HashSet, fmt::Display, sync::Arc};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use collections::HashMap;
use gpui::{
App, Empty, Entity, EventEmitter, FocusHandle, Focusable, Global, ListAlignment, ListState,
@@ -19,7 +19,7 @@ workspace = true
[dependencies]
acp_thread.workspace = true
action_log.workspace = true
-agent-client-protocol-core.workspace = true
+agent-client-protocol.workspace = true
agent_servers.workspace = true
agent_settings.workspace = true
anyhow.workspace = true
@@ -28,7 +28,7 @@ use acp_thread::{
AcpThread, AgentModelSelector, AgentSessionInfo, AgentSessionList, AgentSessionListRequest,
AgentSessionListResponse, TokenUsageRatio, UserMessageId,
};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::{Context as _, Result, anyhow};
use chrono::{DateTime, Utc};
use collections::{HashMap, HashSet, IndexMap};
@@ -1,6 +1,6 @@
use crate::{AgentMessage, AgentMessageContent, UserMessage, UserMessageContent};
use acp_thread::UserMessageId;
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_settings::AgentProfileId;
use anyhow::{Result, anyhow};
use chrono::{DateTime, Utc};
@@ -1,6 +1,6 @@
use std::{any::Any, rc::Rc, sync::Arc};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_servers::{AgentServer, AgentServerDelegate};
use agent_settings::AgentSettings;
use anyhow::Result;
@@ -3,7 +3,7 @@ use acp_thread::{
AgentConnection, AgentModelGroupName, AgentModelList, PermissionOptions, ThreadStatus,
UserMessageId,
};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_settings::AgentProfileId;
use anyhow::Result;
use client::{Client, UserStore};
@@ -12,7 +12,7 @@ use feature_flags::{
FeatureFlagAppExt as _, StreamingEditFileToolFeatureFlag, UpdatePlanToolFeatureFlag,
};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_settings::{
AgentProfileId, AgentSettings, SUMMARIZE_THREAD_DETAILED_PROMPT, SUMMARIZE_THREAD_PROMPT,
};
@@ -3341,7 +3341,7 @@ where
T::description()
}
- fn kind(&self) -> agent_client_protocol_core::schema::ToolKind {
+ fn kind(&self) -> acp::ToolKind {
T::kind()
}
@@ -1,5 +1,5 @@
use crate::{DbThread, DbThreadMetadata, ThreadsDatabase};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::{Result, anyhow};
use gpui::{App, Context, Entity, Global, Task, prelude::*};
use util::path_list::PathList;
@@ -1,5 +1,5 @@
use crate::{AgentToolOutput, AnyAgentTool, ToolCallEventStream, ToolInput};
-use agent_client_protocol_core::schema::ToolKind;
+use agent_client_protocol::schema as acp;
use anyhow::Result;
use collections::{BTreeMap, HashMap};
use context_server::{ContextServerId, client::NotificationSubscription};
@@ -304,8 +304,8 @@ impl AnyAgentTool for ContextServerTool {
self.tool.description.clone().unwrap_or_default().into()
}
- fn kind(&self) -> ToolKind {
- ToolKind::Other
+ fn kind(&self) -> acp::ToolKind {
+ acp::ToolKind::Other
}
fn initial_title(&self, _input: serde_json::Value, _cx: &mut App) -> SharedString {
@@ -5,7 +5,7 @@ use super::tool_permissions::{
use crate::{
AgentTool, ToolCallEventStream, ToolInput, ToolPermissionDecision, decide_permission_for_paths,
};
-use agent_client_protocol_core::schema::ToolKind;
+use agent_client_protocol::schema as acp;
use agent_settings::AgentSettings;
use futures::FutureExt as _;
use gpui::{App, Entity, Task};
@@ -61,8 +61,8 @@ impl AgentTool for CopyPathTool {
const NAME: &'static str = "copy_path";
- fn kind() -> ToolKind {
- ToolKind::Move
+ fn kind() -> acp::ToolKind {
+ acp::ToolKind::Move
}
fn initial_title(
@@ -198,7 +198,6 @@ impl AgentTool for CopyPathTool {
#[cfg(test)]
mod tests {
use super::*;
- use agent_client_protocol_core::schema as acp;
use fs::Fs as _;
use gpui::TestAppContext;
use project::{FakeFs, Project};
@@ -2,7 +2,7 @@ use super::tool_permissions::{
SensitiveSettingsKind, authorize_symlink_access, canonicalize_worktree_roots,
detect_symlink_escape, sensitive_settings_kind,
};
-use agent_client_protocol_core::schema::ToolKind;
+use agent_client_protocol::schema as acp;
use agent_settings::AgentSettings;
use futures::FutureExt as _;
use gpui::{App, Entity, SharedString, Task};
@@ -52,8 +52,8 @@ impl AgentTool for CreateDirectoryTool {
const NAME: &'static str = "create_directory";
- fn kind() -> ToolKind {
- ToolKind::Read
+ fn kind() -> acp::ToolKind {
+ acp::ToolKind::Read
}
fn initial_title(
@@ -169,7 +169,6 @@ impl AgentTool for CreateDirectoryTool {
#[cfg(test)]
mod tests {
use super::*;
- use agent_client_protocol_core::schema as acp;
use fs::Fs as _;
use gpui::TestAppContext;
use project::{FakeFs, Project};
@@ -6,7 +6,7 @@ use crate::{
AgentTool, ToolCallEventStream, ToolInput, ToolPermissionDecision, decide_permission_for_path,
};
use action_log::ActionLog;
-use agent_client_protocol_core::schema::ToolKind;
+use agent_client_protocol::schema as acp;
use agent_settings::AgentSettings;
use futures::{FutureExt as _, SinkExt, StreamExt, channel::mpsc};
use gpui::{App, AppContext, Entity, SharedString, Task};
@@ -55,8 +55,8 @@ impl AgentTool for DeletePathTool {
const NAME: &'static str = "delete_path";
- fn kind() -> ToolKind {
- ToolKind::Delete
+ fn kind() -> acp::ToolKind {
+ acp::ToolKind::Delete
}
fn initial_title(
@@ -228,7 +228,6 @@ impl AgentTool for DeletePathTool {
#[cfg(test)]
mod tests {
use super::*;
- use agent_client_protocol_core::schema as acp;
use fs::Fs as _;
use gpui::TestAppContext;
use project::{FakeFs, Project};
@@ -1,5 +1,5 @@
use crate::{AgentTool, ToolCallEventStream, ToolInput};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::Result;
use futures::FutureExt as _;
use gpui::{App, Entity, Task};
@@ -6,7 +6,7 @@ use crate::{
edit_agent::{EditAgent, EditAgentOutputEvent, EditFormat},
};
use acp_thread::Diff;
-use agent_client_protocol_core::schema::{self as acp, ToolCallLocation, ToolCallUpdateFields};
+use agent_client_protocol::schema::{self as acp, ToolCallLocation, ToolCallUpdateFields};
use anyhow::{Context as _, Result};
use collections::HashSet;
use futures::{FutureExt as _, StreamExt as _};
@@ -2,7 +2,7 @@ use std::rc::Rc;
use std::sync::Arc;
use std::{borrow::Cow, cell::RefCell};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_settings::AgentSettings;
use anyhow::{Context as _, Result, bail};
use futures::{AsyncReadExt as _, FutureExt as _};
@@ -1,5 +1,5 @@
use crate::{AgentTool, ToolCallEventStream, ToolInput};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::{Result, anyhow};
use futures::FutureExt as _;
use gpui::{App, AppContext, Entity, SharedString, Task};
@@ -1,5 +1,5 @@
use crate::{AgentTool, ToolCallEventStream, ToolInput};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::Result;
use futures::{FutureExt as _, StreamExt};
use gpui::{App, Entity, SharedString, Task};
@@ -3,7 +3,7 @@ use super::tool_permissions::{
resolve_project_path,
};
use crate::{AgentTool, ToolCallEventStream, ToolInput};
-use agent_client_protocol_core::schema::ToolKind;
+use agent_client_protocol::schema as acp;
use anyhow::{Context as _, Result, anyhow};
use gpui::{App, Entity, SharedString, Task};
use project::{Project, ProjectPath, WorktreeSettings};
@@ -127,8 +127,8 @@ impl AgentTool for ListDirectoryTool {
const NAME: &'static str = "list_directory";
- fn kind() -> ToolKind {
- ToolKind::Read
+ fn kind() -> acp::ToolKind {
+ acp::ToolKind::Read
}
fn initial_title(
@@ -267,7 +267,6 @@ impl AgentTool for ListDirectoryTool {
#[cfg(test)]
mod tests {
use super::*;
- use agent_client_protocol_core::schema as acp;
use fs::Fs as _;
use gpui::{TestAppContext, UpdateGlobal};
use indoc::indoc;
@@ -5,7 +5,7 @@ use super::tool_permissions::{
use crate::{
AgentTool, ToolCallEventStream, ToolInput, ToolPermissionDecision, decide_permission_for_paths,
};
-use agent_client_protocol_core::schema::ToolKind;
+use agent_client_protocol::schema as acp;
use agent_settings::AgentSettings;
use futures::FutureExt as _;
use gpui::{App, Entity, SharedString, Task};
@@ -62,8 +62,8 @@ impl AgentTool for MovePathTool {
const NAME: &'static str = "move_path";
- fn kind() -> ToolKind {
- ToolKind::Move
+ fn kind() -> acp::ToolKind {
+ acp::ToolKind::Move
}
fn initial_title(
@@ -205,7 +205,6 @@ impl AgentTool for MovePathTool {
#[cfg(test)]
mod tests {
use super::*;
- use agent_client_protocol_core::schema as acp;
use fs::Fs as _;
use gpui::TestAppContext;
use project::{FakeFs, Project};
@@ -1,6 +1,6 @@
use std::sync::Arc;
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use chrono::{Local, Utc};
use gpui::{App, SharedString, Task};
use schemars::JsonSchema;
@@ -3,7 +3,7 @@ use super::tool_permissions::{
resolve_project_path,
};
use crate::{AgentTool, ToolInput};
-use agent_client_protocol_core::schema::ToolKind;
+use agent_client_protocol::schema as acp;
use futures::FutureExt as _;
use gpui::{App, AppContext as _, Entity, SharedString, Task};
use project::Project;
@@ -43,8 +43,8 @@ impl AgentTool for OpenTool {
const NAME: &'static str = "open";
- fn kind() -> ToolKind {
- ToolKind::Execute
+ fn kind() -> acp::ToolKind {
+ acp::ToolKind::Execute
}
fn initial_title(
@@ -1,5 +1,5 @@
use action_log::ActionLog;
-use agent_client_protocol_core::schema::{self as acp, ToolCallUpdateFields};
+use agent_client_protocol::schema::{self as acp, ToolCallUpdateFields};
use anyhow::{Context as _, Result, anyhow};
use futures::FutureExt as _;
use gpui::{App, Entity, SharedString, Task};
@@ -347,7 +347,7 @@ impl AgentTool for ReadFileTool {
#[cfg(test)]
mod test {
use super::*;
- use agent_client_protocol_core::schema as acp;
+ use agent_client_protocol::schema as acp;
use fs::Fs as _;
use gpui::{AppContext, TestAppContext, UpdateGlobal as _};
use project::{FakeFs, Project};
@@ -3,7 +3,7 @@ use super::tool_permissions::{
canonicalize_worktree_roots, path_has_symlink_escape, resolve_project_path,
sensitive_settings_kind,
};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_settings::AgentSettings;
use collections::FxHashSet;
use futures::FutureExt as _;
@@ -1,4 +1,4 @@
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_settings::AgentSettings;
use collections::FxHashSet;
use futures::FutureExt as _;
@@ -1,5 +1,5 @@
use acp_thread::{SUBAGENT_SESSION_INFO_META_KEY, SubagentSessionInfo};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::Result;
use gpui::{App, SharedString, Task};
use language_model::LanguageModelToolResultContent;
@@ -11,7 +11,7 @@ use crate::{
};
use acp_thread::Diff;
use action_log::ActionLog;
-use agent_client_protocol_core::schema::{self as acp, ToolCallLocation, ToolCallUpdateFields};
+use agent_client_protocol::schema::{self as acp, ToolCallLocation, ToolCallUpdateFields};
use anyhow::{Context as _, Result};
use collections::HashSet;
use futures::FutureExt as _;
@@ -1,4 +1,4 @@
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_settings::AgentSettings;
use anyhow::Result;
use futures::FutureExt as _;
@@ -1,5 +1,5 @@
use crate::{AgentTool, ToolCallEventStream, ToolInput};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use gpui::{App, SharedString, Task};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
@@ -4,7 +4,7 @@ use crate::{
AgentTool, ToolCallEventStream, ToolInput, ToolPermissionDecision,
decide_permission_from_settings,
};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_settings::AgentSettings;
use anyhow::Result;
use cloud_llm_client::WebSearchResponse;
@@ -20,7 +20,7 @@ doctest = false
acp_tools.workspace = true
acp_thread.workspace = true
action_log.workspace = true
-agent-client-protocol-core.workspace = true
+agent-client-protocol.workspace = true
anyhow.workspace = true
async-trait.workspace = true
chrono.workspace = true
@@ -4,8 +4,8 @@ use acp_thread::{
};
use acp_tools::{AcpConnectionRegistry, StreamMessage, StreamMessageDirection};
use action_log::ActionLog;
-use agent_client_protocol_core::schema::{self as acp, ErrorCode};
-use agent_client_protocol_core::{ConnectionTo, Lines};
+use agent_client_protocol::schema::{self as acp, ErrorCode};
+use agent_client_protocol::{Agent, Client, ConnectionTo, JsonRpcResponse, Lines, Responder};
use anyhow::anyhow;
use collections::HashMap;
use feature_flags::{AcpBetaFeatureFlag, FeatureFlagAppExt as _};
@@ -54,7 +54,7 @@ type ForegroundWork = Box<dyn FnOnce(&mut AsyncApp, &ClientContext) + Send>;
pub struct AcpConnection {
id: AgentId,
telemetry_id: SharedString,
- connection: ConnectionTo<agent_client_protocol_core::Agent>,
+ connection: ConnectionTo<Agent>,
sessions: Rc<RefCell<HashMap<acp::SessionId, AcpSession>>>,
auth_methods: Vec<acp::AuthMethod>,
command: AgentServerCommand,
@@ -96,13 +96,13 @@ pub struct AcpSession {
}
pub struct AcpSessionList {
- connection: ConnectionTo<agent_client_protocol_core::Agent>,
+ connection: ConnectionTo<Agent>,
updates_tx: smol::channel::Sender<acp_thread::SessionListUpdate>,
updates_rx: smol::channel::Receiver<acp_thread::SessionListUpdate>,
}
impl AcpSessionList {
- fn new(connection: ConnectionTo<agent_client_protocol_core::Agent>) -> Self {
+ fn new(connection: ConnectionTo<Agent>) -> Self {
let (tx, rx) = smol::channel::unbounded();
Self {
connection,
@@ -337,50 +337,50 @@ impl AcpConnection {
// All handlers forward work to the foreground dispatch channel.
let connection_future = {
let dispatch_tx = dispatch_tx.clone();
- agent_client_protocol_core::Client
+ Client
.builder()
.name("zed")
// --- Request handlers (agentβclient) ---
.on_receive_request(
dispatch_request_handler!(dispatch_tx, handle_request_permission),
- agent_client_protocol_core::on_receive_request!(),
+ agent_client_protocol::on_receive_request!(),
)
.on_receive_request(
dispatch_request_handler!(dispatch_tx, handle_write_text_file),
- agent_client_protocol_core::on_receive_request!(),
+ agent_client_protocol::on_receive_request!(),
)
.on_receive_request(
dispatch_request_handler!(dispatch_tx, handle_read_text_file),
- agent_client_protocol_core::on_receive_request!(),
+ agent_client_protocol::on_receive_request!(),
)
.on_receive_request(
dispatch_request_handler!(dispatch_tx, handle_create_terminal),
- agent_client_protocol_core::on_receive_request!(),
+ agent_client_protocol::on_receive_request!(),
)
.on_receive_request(
dispatch_request_handler!(dispatch_tx, handle_kill_terminal),
- agent_client_protocol_core::on_receive_request!(),
+ agent_client_protocol::on_receive_request!(),
)
.on_receive_request(
dispatch_request_handler!(dispatch_tx, handle_release_terminal),
- agent_client_protocol_core::on_receive_request!(),
+ agent_client_protocol::on_receive_request!(),
)
.on_receive_request(
dispatch_request_handler!(dispatch_tx, handle_terminal_output),
- agent_client_protocol_core::on_receive_request!(),
+ agent_client_protocol::on_receive_request!(),
)
.on_receive_request(
dispatch_request_handler!(dispatch_tx, handle_wait_for_terminal_exit),
- agent_client_protocol_core::on_receive_request!(),
+ agent_client_protocol::on_receive_request!(),
)
// --- Notification handlers (agentβclient) ---
.on_receive_notification(
dispatch_notification_handler!(dispatch_tx, handle_session_notification),
- agent_client_protocol_core::on_receive_notification!(),
+ agent_client_protocol::on_receive_notification!(),
)
.connect_with(
transport,
- move |connection: ConnectionTo<agent_client_protocol_core::Agent>| async move {
+ move |connection: ConnectionTo<Agent>| async move {
connection_tx.send(connection.clone()).ok();
// Keep the connection alive until the transport closes.
futures::future::pending::<Result<(), acp::Error>>().await
@@ -396,7 +396,7 @@ impl AcpConnection {
});
// Wait for the ConnectionTo<Agent> handle.
- let connection: ConnectionTo<agent_client_protocol_core::Agent> = connection_rx
+ let connection: ConnectionTo<Agent> = connection_rx
.await
.context("Failed to receive ACP connection handle")?;
@@ -1465,7 +1465,7 @@ fn config_state(
struct AcpSessionModes {
session_id: acp::SessionId,
- connection: ConnectionTo<agent_client_protocol_core::Agent>,
+ connection: ConnectionTo<Agent>,
state: Rc<RefCell<acp::SessionModeState>>,
}
@@ -1507,14 +1507,14 @@ impl acp_thread::AgentSessionModes for AcpSessionModes {
struct AcpModelSelector {
session_id: acp::SessionId,
- connection: ConnectionTo<agent_client_protocol_core::Agent>,
+ connection: ConnectionTo<Agent>,
state: Rc<RefCell<acp::SessionModelState>>,
}
impl AcpModelSelector {
fn new(
session_id: acp::SessionId,
- connection: ConnectionTo<agent_client_protocol_core::Agent>,
+ connection: ConnectionTo<Agent>,
state: Rc<RefCell<acp::SessionModelState>>,
) -> Self {
Self {
@@ -1580,7 +1580,7 @@ impl acp_thread::AgentModelSelector for AcpModelSelector {
struct AcpSessionConfigOptions {
session_id: acp::SessionId,
- connection: ConnectionTo<agent_client_protocol_core::Agent>,
+ connection: ConnectionTo<Agent>,
state: Rc<RefCell<Vec<acp::SessionConfigOption>>>,
watch_tx: Rc<RefCell<watch::Sender<()>>>,
watch_rx: watch::Receiver<()>,
@@ -1638,16 +1638,13 @@ fn session_thread(
.ok_or_else(|| acp::Error::internal_error().data(format!("unknown session: {session_id}")))
}
-fn respond_err<T: agent_client_protocol_core::JsonRpcResponse + Send + 'static>(
- responder: agent_client_protocol_core::Responder<T>,
- err: acp::Error,
-) {
+fn respond_err<T: JsonRpcResponse + Send + 'static>(responder: Responder<T>, err: acp::Error) {
responder.respond_with_error(err).log_err();
}
fn handle_request_permission(
args: acp::RequestPermissionRequest,
- responder: agent_client_protocol_core::Responder<acp::RequestPermissionResponse>,
+ responder: Responder<acp::RequestPermissionResponse>,
cx: &mut AsyncApp,
ctx: &ClientContext,
) {
@@ -1686,7 +1683,7 @@ fn handle_request_permission(
fn handle_write_text_file(
args: acp::WriteTextFileRequest,
- responder: agent_client_protocol_core::Responder<acp::WriteTextFileResponse>,
+ responder: Responder<acp::WriteTextFileResponse>,
cx: &mut AsyncApp,
ctx: &ClientContext,
) {
@@ -1721,7 +1718,7 @@ fn handle_write_text_file(
fn handle_read_text_file(
args: acp::ReadTextFileRequest,
- responder: agent_client_protocol_core::Responder<acp::ReadTextFileResponse>,
+ responder: Responder<acp::ReadTextFileResponse>,
cx: &mut AsyncApp,
ctx: &ClientContext,
) {
@@ -1903,7 +1900,7 @@ fn handle_session_notification(
fn handle_create_terminal(
args: acp::CreateTerminalRequest,
- responder: agent_client_protocol_core::Responder<acp::CreateTerminalResponse>,
+ responder: Responder<acp::CreateTerminalResponse>,
cx: &mut AsyncApp,
ctx: &ClientContext,
) {
@@ -1966,7 +1963,7 @@ fn handle_create_terminal(
fn handle_kill_terminal(
args: acp::KillTerminalRequest,
- responder: agent_client_protocol_core::Responder<acp::KillTerminalResponse>,
+ responder: Responder<acp::KillTerminalResponse>,
cx: &mut AsyncApp,
ctx: &ClientContext,
) {
@@ -1991,7 +1988,7 @@ fn handle_kill_terminal(
fn handle_release_terminal(
args: acp::ReleaseTerminalRequest,
- responder: agent_client_protocol_core::Responder<acp::ReleaseTerminalResponse>,
+ responder: Responder<acp::ReleaseTerminalResponse>,
cx: &mut AsyncApp,
ctx: &ClientContext,
) {
@@ -2018,7 +2015,7 @@ fn handle_release_terminal(
fn handle_terminal_output(
args: acp::TerminalOutputRequest,
- responder: agent_client_protocol_core::Responder<acp::TerminalOutputResponse>,
+ responder: Responder<acp::TerminalOutputResponse>,
cx: &mut AsyncApp,
ctx: &ClientContext,
) {
@@ -2047,7 +2044,7 @@ fn handle_terminal_output(
fn handle_wait_for_terminal_exit(
args: acp::WaitForTerminalExitRequest,
- responder: agent_client_protocol_core::Responder<acp::WaitForTerminalExitResponse>,
+ responder: Responder<acp::WaitForTerminalExitResponse>,
cx: &mut AsyncApp,
ctx: &ClientContext,
) {
@@ -12,7 +12,7 @@ use http_client::read_no_proxy_from_env;
use project::{AgentId, Project, agent_server_store::AgentServerStore};
use acp_thread::AgentConnection;
-use agent_client_protocol_core::schema::{
+use agent_client_protocol::schema::{
ModelId, SessionConfigId, SessionConfigValueId, SessionModeId,
};
use anyhow::Result;
@@ -1,6 +1,6 @@
use crate::{AgentServer, AgentServerDelegate, load_proxy_env};
use acp_thread::AgentConnection;
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::{Context as _, Result};
use collections::HashSet;
use credentials_provider::CredentialsProvider;
@@ -1,6 +1,6 @@
use crate::{AgentServer, AgentServerDelegate};
use acp_thread::{AcpThread, AgentThreadEntry, ToolCall, ToolCallStatus};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use futures::{FutureExt, StreamExt, channel::mpsc, select};
use gpui::AppContext;
use gpui::{Entity, TestAppContext};
@@ -378,7 +378,7 @@ macro_rules! common_e2e_tests {
async fn tool_call_with_permission(cx: &mut ::gpui::TestAppContext) {
$crate::e2e_tests::test_tool_call_with_permission(
$server,
- ::agent_client_protocol_core::schema::PermissionOptionId::new($allow_option_id),
+ ::agent_client_protocol::schema::PermissionOptionId::new($allow_option_id),
cx,
)
.await;
@@ -12,7 +12,7 @@ workspace = true
path = "src/agent_settings.rs"
[dependencies]
-agent-client-protocol-core.workspace = true
+agent-client-protocol.workspace = true
anyhow.workspace = true
collections.workspace = true
convert_case.workspace = true
@@ -3,7 +3,7 @@ mod agent_profile;
use std::path::{Component, Path};
use std::sync::{Arc, LazyLock};
-use agent_client_protocol_core::schema::ModelId;
+use agent_client_protocol::schema as acp;
use collections::{HashSet, IndexMap};
use fs::Fs;
use gpui::{App, Pixels, px};
@@ -214,10 +214,10 @@ impl AgentSettings {
self.message_editor_min_lines * 2
}
- pub fn favorite_model_ids(&self) -> HashSet<ModelId> {
+ pub fn favorite_model_ids(&self) -> HashSet<acp::ModelId> {
self.favorite_models
.iter()
- .map(|sel| ModelId::new(format!("{}/{}", sel.provider.0, sel.model)))
+ .map(|sel| acp::ModelId::new(format!("{}/{}", sel.provider.0, sel.model)))
.collect()
}
@@ -28,7 +28,7 @@ unit-eval = []
[dependencies]
acp_thread.workspace = true
action_log.workspace = true
-agent-client-protocol-core.workspace = true
+agent-client-protocol.workspace = true
agent.workspace = true
agent_servers.workspace = true
agent_settings.workspace = true
@@ -10,7 +10,7 @@ use std::{
use acp_thread::{AcpThread, MentionUri, ThreadStatus};
use agent::{ContextServerRegistry, SharedThread, ThreadStore};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_servers::AgentServer;
use collections::HashSet;
use db::kvp::{Dismissable, KeyValueStore};
@@ -39,7 +39,7 @@ use std::rc::Rc;
use std::sync::Arc;
use ::ui::IconName;
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_settings::{AgentProfileId, AgentSettings};
use command_palette_hooks::CommandPaletteFilter;
use feature_flags::{AgentV2FeatureFlag, FeatureFlagAppExt as _};
@@ -232,7 +232,7 @@ pub struct NewExternalAgentThread {
#[action(namespace = agent)]
#[serde(deny_unknown_fields)]
pub struct NewNativeAgentThreadFromSummary {
- from_session_id: agent_client_protocol_core::schema::SessionId,
+ from_session_id: acp::SessionId,
}
#[derive(Debug, Default, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)]
@@ -317,7 +317,7 @@ pub enum AgentInitialContent {
title: Option<SharedString>,
},
ContentBlock {
- blocks: Vec<agent_client_protocol_core::schema::ContentBlock>,
+ blocks: Vec<acp::ContentBlock>,
auto_submit: bool,
},
FromExternalSource(ExternalSourcePrompt),
@@ -7,7 +7,7 @@ use std::sync::atomic::AtomicBool;
use crate::DEFAULT_THREAD_TITLE;
use crate::ThreadHistory;
use acp_thread::MentionUri;
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::Result;
use editor::{CompletionProvider, Editor, code_context_menus::COMPLETION_MENU_MAX_WIDTH};
use futures::FutureExt as _;
@@ -1,7 +1,7 @@
use std::{cmp::Reverse, rc::Rc, sync::Arc};
use acp_thread::AgentSessionConfigOptions;
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_servers::AgentServer;
use agent_settings::AgentSettings;
use collections::HashSet;
@@ -7,7 +7,7 @@ use acp_thread::{
use acp_thread::{AgentConnection, Plan};
use action_log::{ActionLog, ActionLogTelemetry, DiffStats};
use agent::{NativeAgentServer, NativeAgentSessionList, SharedThread, ThreadStore};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
#[cfg(test)]
use agent_servers::AgentServerDelegate;
use agent_servers::{AgentServer, GEMINI_TERMINAL_AUTH_METHOD_ID};
@@ -2745,12 +2745,12 @@ fn plan_label_markdown_style(
#[cfg(test)]
pub(crate) mod tests {
+ use acp::SessionId;
use acp_thread::{
AgentSessionList, AgentSessionListRequest, AgentSessionListResponse, StubAgentConnection,
};
use action_log::ActionLog;
use agent::{AgentTool, EditFileTool, FetchTool, TerminalTool, ToolPermissionContext};
- use agent_client_protocol_core::schema::SessionId;
use editor::MultiBufferOffset;
use fs::FakeFs;
use gpui::{EventEmitter, TestAppContext, VisualTestContext};
@@ -2,6 +2,7 @@ use crate::{
DEFAULT_THREAD_TITLE, SelectPermissionGranularity,
agent_configuration::configure_context_server_modal::default_markdown_style,
};
+use agent_client_protocol::schema as acp;
use std::cell::RefCell;
use acp_thread::{ContentBlock, PlanEntry};
@@ -249,13 +250,12 @@ pub struct ThreadView {
pub session_capabilities: SharedSessionCapabilities,
/// Tracks which tool calls have their content/output expanded.
/// Used for showing/hiding tool call results, terminal output, etc.
- pub expanded_tool_calls: HashSet<agent_client_protocol_core::schema::ToolCallId>,
- pub expanded_tool_call_raw_inputs: HashSet<agent_client_protocol_core::schema::ToolCallId>,
+ pub expanded_tool_calls: HashSet<acp::ToolCallId>,
+ pub expanded_tool_call_raw_inputs: HashSet<acp::ToolCallId>,
pub expanded_thinking_blocks: HashSet<(usize, usize)>,
auto_expanded_thinking_block: Option<(usize, usize)>,
user_toggled_thinking_blocks: HashSet<(usize, usize)>,
- pub subagent_scroll_handles:
- RefCell<HashMap<agent_client_protocol_core::schema::SessionId, ScrollHandle>>,
+ pub subagent_scroll_handles: RefCell<HashMap<acp::SessionId, ScrollHandle>>,
pub edits_expanded: bool,
pub plan_expanded: bool,
pub queue_expanded: bool,
@@ -267,12 +267,11 @@ pub struct ThreadView {
pub queued_message_editor_subscriptions: Vec<Subscription>,
pub last_synced_queue_length: usize,
pub turn_fields: TurnFields,
- pub discarded_partial_edits: HashSet<agent_client_protocol_core::schema::ToolCallId>,
+ pub discarded_partial_edits: HashSet<acp::ToolCallId>,
pub is_loading_contents: bool,
pub new_server_version_available: Option<SharedString>,
pub resumed_without_history: bool,
- pub(crate) permission_selections:
- HashMap<agent_client_protocol_core::schema::ToolCallId, PermissionSelection>,
+ pub(crate) permission_selections: HashMap<acp::ToolCallId, PermissionSelection>,
pub resume_thread_metadata: Option<AgentSessionInfo>,
pub _cancel_task: Option<Task<()>>,
_save_task: Option<Task<()>>,
@@ -3,7 +3,7 @@ use std::ops::Range;
use super::thread_history::ThreadHistory;
use acp_thread::{AcpThread, AgentThreadEntry};
use agent::ThreadStore;
-use agent_client_protocol_core::schema::ToolCallId;
+use agent_client_protocol::schema as acp;
use collections::HashMap;
use editor::{Editor, EditorEvent, EditorMode, MinimapVisibility, SizingBehavior};
use gpui::{
@@ -286,9 +286,9 @@ pub struct EntryViewEvent {
}
pub enum ViewEvent {
- NewDiff(ToolCallId),
- NewTerminal(ToolCallId),
- TerminalMovedToBackground(ToolCallId),
+ NewDiff(acp::ToolCallId),
+ NewTerminal(acp::ToolCallId),
+ TerminalMovedToBackground(acp::ToolCallId),
MessageEditorEvent(Entity<MessageEditor>, MessageEditorEvent),
OpenDiffLocation {
path: String,
@@ -465,7 +465,7 @@ mod tests {
use std::sync::Arc;
use acp_thread::{AgentConnection, StubAgentConnection};
- use agent_client_protocol_core::schema as acp;
+ use agent_client_protocol::schema as acp;
use buffer_diff::{DiffHunkStatus, DiffHunkStatusKind};
use editor::RowInfo;
use fs::FakeFs;
@@ -1,7 +1,7 @@
use crate::diagnostics::{DiagnosticsOptions, codeblock_fence_for_path, collect_diagnostics};
use acp_thread::{MentionUri, selection_name};
use agent::{ThreadStore, outline};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_servers::{AgentServer, AgentServerDelegate};
use anyhow::{Context as _, Result, anyhow};
use collections::{HashMap, HashSet};
@@ -11,7 +11,7 @@ use crate::{
};
use acp_thread::MentionUri;
use agent::ThreadStore;
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::{Result, anyhow};
use editor::{
Addon, AnchorRangeExt, ContextMenuOptions, Editor, EditorElement, EditorEvent, EditorMode,
@@ -1905,7 +1905,7 @@ mod tests {
use acp_thread::MentionUri;
use agent::{ThreadStore, outline};
- use agent_client_protocol_core::schema as acp;
+ use agent_client_protocol::schema as acp;
use base64::Engine as _;
use editor::{
AnchorRangeExt as _, Editor, EditorMode, MultiBufferOffset, SelectionEffects,
@@ -1,5 +1,5 @@
use acp_thread::AgentSessionModes;
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_servers::AgentServer;
use agent_settings::AgentSettings;
use fs::Fs;
@@ -1,7 +1,7 @@
use std::{cmp::Reverse, rc::Rc, sync::Arc};
use acp_thread::{AgentModelIcon, AgentModelInfo, AgentModelList, AgentModelSelector};
-use agent_client_protocol_core::schema::ModelId;
+use agent_client_protocol::schema as acp;
use agent_servers::AgentServer;
use agent_settings::AgentSettings;
use anyhow::Result;
@@ -54,7 +54,7 @@ pub struct ModelPickerDelegate {
selected_index: usize,
selected_description: Option<(usize, SharedString, bool)>,
selected_model: Option<AgentModelInfo>,
- favorites: HashSet<ModelId>,
+ favorites: HashSet<acp::ModelId>,
_refresh_models_task: Task<()>,
_settings_subscription: Subscription,
focus_handle: FocusHandle,
@@ -427,7 +427,7 @@ impl PickerDelegate for ModelPickerDelegate {
fn info_list_to_picker_entries(
model_list: AgentModelList,
- favorites: &HashSet<ModelId>,
+ favorites: &HashSet<acp::ModelId>,
) -> Vec<ModelPickerEntry> {
let mut entries = Vec::new();
@@ -533,7 +533,6 @@ async fn fuzzy_search(
#[cfg(test)]
mod tests {
- use agent_client_protocol_core::schema as acp;
use gpui::TestAppContext;
use super::*;
@@ -595,10 +594,10 @@ mod tests {
}
}
- fn create_favorites(models: Vec<&str>) -> HashSet<ModelId> {
+ fn create_favorites(models: Vec<&str>) -> HashSet<acp::ModelId> {
models
.into_iter()
- .map(|m| ModelId::new(m.to_string()))
+ .map(|m| acp::ModelId::new(m.to_string()))
.collect()
}
@@ -794,7 +793,7 @@ mod tests {
#[gpui::test]
fn test_favorites_count_returns_correct_count(_cx: &mut TestAppContext) {
- let empty_favorites: HashSet<ModelId> = HashSet::default();
+ let empty_favorites: HashSet<acp::ModelId> = HashSet::default();
assert_eq!(empty_favorites.len(), 0);
let one_favorite = create_favorites(vec!["model-a"]);
@@ -1,5 +1,5 @@
use acp_thread::{AgentConnection, StubAgentConnection};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_servers::{AgentServer, AgentServerDelegate};
use gpui::{Entity, Task, TestAppContext, VisualTestContext};
use project::AgentId;
@@ -1,5 +1,5 @@
use acp_thread::{AgentSessionInfo, AgentSessionList, AgentSessionListRequest, SessionListUpdate};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use gpui::{App, Task};
use std::rc::Rc;
use ui::prelude::*;
@@ -1,6 +1,6 @@
use acp_thread::AgentSessionListRequest;
use agent::ThreadStore;
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use chrono::Utc;
use collections::HashSet;
use db::kvp::Dismissable;
@@ -2,7 +2,7 @@ use std::{path::Path, sync::Arc};
use acp_thread::AcpThreadEvent;
use agent::{ThreadStore, ZED_AGENT_ID};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::Context as _;
use chrono::{DateTime, Utc};
use collections::{HashMap, HashSet};
@@ -791,7 +791,7 @@ mod tests {
use acp_thread::{AgentConnection, StubAgentConnection};
use action_log::ActionLog;
use agent::DbThread;
- use agent_client_protocol_core::schema as acp;
+ use agent_client_protocol::schema as acp;
use feature_flags::FeatureFlagAppExt;
use gpui::TestAppContext;
use project::FakeFs;
@@ -7,7 +7,7 @@ use crate::thread_metadata_store::{ThreadMetadata, ThreadMetadataStore};
use crate::{Agent, RemoveSelectedThread};
use agent::ThreadStore;
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_settings::AgentSettings;
use chrono::{DateTime, Datelike as _, Local, NaiveDate, TimeDelta, Utc};
use editor::Editor;
@@ -1,7 +1,7 @@
use std::{ops::RangeInclusive, path::PathBuf, time::Duration};
use acp_thread::MentionUri;
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use editor::{Editor, SelectionEffects, scroll::Autoscroll};
use gpui::{
Animation, AnimationExt, AnyView, Context, IntoElement, WeakEntity, Window, pulsating_between,
@@ -15,7 +15,7 @@ path = "src/main.rs"
[dependencies]
acp_thread.workspace = true
agent.workspace = true
-agent-client-protocol-core.workspace = true
+agent-client-protocol.workspace = true
agent_ui.workspace = true
anyhow.workspace = true
clap.workspace = true
@@ -40,7 +40,7 @@ use std::time::{Duration, Instant};
use acp_thread::AgentConnection as _;
use agent::{NativeAgent, NativeAgentConnection, Templates, ThreadStore};
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use anyhow::{Context, Result};
use clap::Parser;
use feature_flags::FeatureFlagAppExt as _;
@@ -18,7 +18,7 @@ default = []
acp_thread.workspace = true
action_log.workspace = true
agent.workspace = true
-agent-client-protocol-core.workspace = true
+agent-client-protocol.workspace = true
agent_settings.workspace = true
agent_ui = { workspace = true, features = ["audio"] }
anyhow.workspace = true
@@ -2,7 +2,7 @@ mod thread_switcher;
use acp_thread::ThreadStatus;
use action_log::DiffStats;
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_settings::AgentSettings;
use agent_ui::thread_metadata_store::{ThreadMetadata, ThreadMetadataStore};
use agent_ui::threads_archive_view::{
@@ -1,5 +1,5 @@
use action_log::DiffStats;
-use agent_client_protocol_core::schema as acp;
+use agent_client_protocol::schema as acp;
use agent_ui::thread_metadata_store::ThreadMetadata;
use gpui::{
Action as _, DismissEvent, Entity, EventEmitter, FocusHandle, Focusable, Modifiers,
@@ -66,7 +66,7 @@ required-features = ["visual-tests"]
acp_tools.workspace = true
activity_indicator.workspace = true
agent.workspace = true
-agent-client-protocol-core.workspace = true
+agent-client-protocol.workspace = true
agent_settings.workspace = true
agent_ui = { workspace = true, features = ["audio"] }
anyhow.workspace = true
@@ -5,6 +5,7 @@ mod reliability;
mod zed;
use agent::{SharedThread, ThreadStore};
+use agent_client_protocol::schema as acp;
use agent_ui::AgentPanel;
use anyhow::{Context as _, Error, Result};
use clap::Parser;
@@ -977,7 +978,7 @@ fn handle_open_request(request: OpenRequest, app_state: Arc<AppState>, cx: &mut
let shared_thread = SharedThread::from_bytes(&response.thread_data)?;
let db_thread = shared_thread.to_db_thread();
- let session_id = agent_client_protocol_core::schema::SessionId::new(session_id);
+ let session_id = acp::SessionId::new(session_id);
let save_session_id = session_id.clone();
@@ -95,7 +95,7 @@ fn main() {
#[cfg(target_os = "macos")]
use {
acp_thread::{AgentConnection, StubAgentConnection},
- agent_client_protocol_core::schema as acp,
+ agent_client_protocol::schema as acp,
agent_servers::{AgentServer, AgentServerDelegate},
anyhow::{Context as _, Result},
assets::Assets,