ACPProtocol

Struct ACPProtocol 

Source
pub struct ACPProtocol { /* private fields */ }
Expand description

ACP protocol handler for iFlow communication

Implements the Agent Client Protocol (ACP) which defines the interaction between GUI applications and AI agents.

Implementations§

Source§

impl ACPProtocol

Source

pub fn new( transport: WebSocketTransport, message_sender: UnboundedSender<Message>, timeout_secs: f64, ) -> Self

Initialize ACP protocol handler

§Arguments
  • transport - WebSocket transport for communication
  • message_sender - Sender for messages to be processed by the client
  • timeout_secs - Timeout in seconds for protocol operations
Source

pub fn is_initialized(&self) -> bool

Check if the protocol has been initialized

§Returns

True if initialized, False otherwise

Source

pub fn is_authenticated(&self) -> bool

Check if the protocol has been authenticated

§Returns

True if authenticated, False otherwise

Source

pub fn set_permission_mode(&mut self, mode: PermissionMode)

Set the permission mode for tool calls

§Arguments
  • mode - The permission mode to use
Source

pub async fn initialize(&mut self, options: &IFlowOptions) -> Result<()>

Initialize the protocol connection

Performs the ACP initialization handshake:

  1. Wait for //ready signal
  2. Send initialize request with optional configs
  3. Process initialize response
§Arguments
  • options - Configuration options
§Returns
  • Ok(()) if initialization was successful
  • Err(IFlowError) if initialization failed
Source

pub async fn authenticate( &mut self, method_id: &str, method_info: Option<HashMap<String, String>>, ) -> Result<()>

Perform authentication if required

This method should be called if initialize() indicates that authentication is needed (isAuthenticated = False).

§Arguments
  • method_id - Authentication method ID
  • method_info - Optional authentication info
§Returns
  • Ok(()) if authentication was successful
  • Err(IFlowError) if authentication failed
Source

pub async fn create_session( &mut self, cwd: &str, mcp_servers: Vec<Value>, ) -> Result<String>

Create a new session

§Arguments
  • cwd - Working directory for the session
  • mcp_servers - MCP servers to connect to
§Returns
  • Ok(String) containing the session ID
  • Err(IFlowError) if session creation failed
Source

pub async fn send_prompt( &mut self, session_id: &str, prompt: &str, ) -> Result<u32>

Send a prompt to the session and wait for response

§Arguments
  • session_id - The session ID from create_session()
  • prompt - The prompt text to send
§Returns
  • Ok(u32) containing the request ID for tracking the message
  • Err(IFlowError) if sending failed
Source

pub async fn close(&mut self) -> Result<()>

Close the protocol connection

Source

pub fn is_connected(&self) -> bool

Check if the protocol is connected

§Returns

True if connected, False otherwise

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,