Skip to main content

AcpSession

Struct AcpSession 

Source
pub struct AcpSession {
    pub runtime: AgentRuntime,
    pub cwd: PathBuf,
    pub turn: u64,
    pub session_id: SessionId,
    pub transcript: Vec<Message>,
    pub cancel_token: Arc<CancellationToken>,
    pub system_prompt: Option<String>,
    pub mcp_servers: Option<Value>,
    pub client_capabilities: Option<ClientCapabilities>,
    pub acp_state: Arc<Mutex<AcpClientFsState>>,
    pub mcp_child_pids: Vec<u32>,
}
Expand description

State for one active ACP session.

Fields§

§runtime: AgentRuntime

The agent runtime that processes session/prompt requests.

§cwd: PathBuf

The sandbox root for filesystem tools.

§turn: u64

Monotonically-increasing turn counter.

§session_id: SessionId

Session identifier (copied from the manager’s key for convenience).

§transcript: Vec<Message>

Accumulated transcript of messages exchanged so far.

§cancel_token: Arc<CancellationToken>

Cancellation token for the current (or next) agent turn. Fired by session/cancel; observed by the LLM stream loop (tokio::select!) and agent→client RPC calls.

This is an Arc<CancellationToken> to guarantee shared ownership across concurrent tasks (e.g. SSE parse loop and in-flight RPCs). Dropping the AcpSession does NOT cancel the token if other Arc clones exist.

§system_prompt: Option<String>

The original system prompt for this session (used for session/resume).

§mcp_servers: Option<Value>

MCP server configurations (used for session/resume).

§client_capabilities: Option<ClientCapabilities>

Client capabilities declared during initialize (S2-E1/E3). Controls conditional registration of ClientReadFile/ClientWriteFile.

§acp_state: Arc<Mutex<AcpClientFsState>>

Shared ACP client FS state for conditional tool visibility and routing.

§mcp_child_pids: Vec<u32>

MCP child processes managed by this session (for cleanup on close/load/resume).

Implementations§

Source§

impl AcpSession

Source

pub fn refresh_cancel_token(&mut self) -> Arc<CancellationToken> ⓘ

Create a fresh CancellationToken for the next turn and wire it to the agent runtime via set_interrupt_token. Returns an Arc clone of the new token for the caller to hold.

Must be called exactly once per turn, before runtime.run().

Source

pub async fn kill_mcp_children(&mut self)

Kill all tracked MCP child processes using the graceful shutdown protocol (SIGTERM → timeout → SIGKILL). Called during session/close, session/load, session/resume, and client disconnect cleanup.

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<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

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> IntoMaybeUndefined<T> for T

Source§

fn into_maybe_undefined(self) -> MaybeUndefined<T>

Converts this value into a three-state builder argument.
Source§

impl<T> IntoOption<T> for T

Source§

fn into_option(self) -> Option<T>

Converts this value into an optional builder argument.
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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 = !

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

fn try_from(value: U) -> Result<T, !>

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<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