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