1pub mod capabilities;
40pub mod client_v2;
41pub mod jsonrpc;
42pub mod session;
43
44pub mod client;
46pub mod discovery;
47pub mod error;
48pub mod messages;
49
50pub use capabilities::{
52 AgentCapabilities, AgentFeatures, AgentInfo as AgentInfoV2, AuthCredentials, AuthMethod,
53 AuthRequirements, AuthenticateParams, AuthenticateResult, ClientCapabilities, ClientInfo,
54 FilesystemCapabilities, InitializeParams, InitializeResult, PROTOCOL_VERSION,
55 SUPPORTED_VERSIONS, TerminalCapabilities, ToolCapability, UiCapabilities,
56};
57pub use client_v2::{AcpClientV2, AcpClientV2Builder};
58pub use jsonrpc::{JSONRPC_VERSION, JsonRpcError, JsonRpcId, JsonRpcRequest, JsonRpcResponse};
59pub use session::{
60 AcpSession, ConversationTurn, PermissionOption, PromptContent, RequestPermissionParams,
61 RequestPermissionResult, SessionCancelParams, SessionLoadParams, SessionLoadResult,
62 SessionNewParams, SessionNewResult, SessionPromptParams, SessionPromptResult, SessionState,
63 SessionUpdate, SessionUpdateNotification, ToolCallRecord, TurnStatus,
64};
65
66#[deprecated(since = "0.60.0", note = "Use AcpClientV2 for ACP protocol compliance")]
68pub use client::{AcpClient, AcpClientBuilder};
69pub use discovery::{AgentInfo, AgentRegistry};
70pub use error::{AcpError, AcpResult};
71#[deprecated(since = "0.60.0", note = "Use jsonrpc module types instead")]
72pub use messages::{AcpMessage, AcpRequest, AcpResponse};
73
74use agent_client_protocol::AgentSideConnection;
75use std::sync::{Arc, OnceLock};
76
77static ACP_CONNECTION: OnceLock<Arc<AgentSideConnection>> = OnceLock::new();
78
79pub fn register_acp_connection(
84 connection: Arc<AgentSideConnection>,
85) -> Result<(), Arc<AgentSideConnection>> {
86 ACP_CONNECTION.set(connection)
87}
88
89pub fn acp_connection() -> Option<Arc<AgentSideConnection>> {
91 ACP_CONNECTION.get().cloned()
92}