Skip to main content

ClientReadFile

Struct ClientReadFile 

Source
pub struct ClientReadFile {
    pub extra_roots: Vec<(PathBuf, AccessTier)>,
    pub session_roots: Option<SharedSandboxRoots>,
    /* private fields */
}
Expand description

A tool that reads a file from the ACP client’s buffer (IDE/editor).

The agent calls this when the client has declared fs.readTextFile=true. The tool forwards the read request to the client, which returns the file contents from its unsaved buffer.

If the client returns an error or does not respond within client_read_timeout_ms, the tool falls back to a local filesystem read (S2-E2).

Fields§

§extra_roots: Vec<(PathBuf, AccessTier)>

Additional sandbox roots beyond the primary workspace, each tagged with an access tier.

§session_roots: Option<SharedSandboxRoots>

Session-scoped, runtime-mutable roots (e.g. added via the TUI /add-dir command).

Implementations§

Source§

impl ClientReadFile

Source

pub fn new(workspace: &Path) -> Self

Create a new ClientReadFile tool.

Source

pub fn with_acp_state(self, state: Arc<Mutex<AcpClientFsState>>) -> Self

Set the shared ACP client FS state.

This links the tool to the ACP session manager’s capability state so the tool can determine whether to execute or return an error.

Source

pub fn with_client_read_timeout(self, timeout_ms: u64) -> Self

Set the client read timeout in milliseconds (default 5000).

Source

pub fn with_extra_roots( self, extra: impl IntoIterator<Item = (PathBuf, AccessTier)>, ) -> Self

Append additional allowed sandbox roots.

Source

pub fn with_session_roots_opt(self, slot: Option<SharedSandboxRoots>) -> Self

Convenience: attach the shared slot only when Some.

Trait Implementations§

Source§

impl Tool for ClientReadFile

Source§

fn spec(&self) -> ToolSpec

Source§

fn execute<'life0, 'async_trait>( &'life0 self, arguments: Value, ) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn kind(&self) -> ToolKind

Return the ACP ToolKind for tool_call notifications (Sprint 3). Defaults to ToolKind::Other. Concrete tools override to map to their corresponding ACP category.
Source§

fn side_effect_class(&self) -> ToolSideEffect

Classify this tool’s observable side-effects. Default is the most conservative value (External) so any unannotated tool is treated as risky on resume. Override to ReadOnly or Mutating for built-in tools; MCP tools derive this from their annotations.
Source§

fn is_deferred(&self) -> bool

Return true to send this tool as deferred (name-only) in the initial prompt; the model must call ToolSearch to load its full schema. Default is false (eager). Override in low-frequency tools.
Source§

fn is_readonly(&self) -> bool

Convenience: a tool is read-only iff it classifies as ReadOnly. Used by the parallel-dispatch path in agent.rs. Override only if you have an unusual reason (you almost never should — override side_effect_class instead and let this default through).
Source§

fn is_readonly_for_args(&self, _arguments: &Value) -> bool

Like is_readonly but can inspect the call-time arguments. Read more

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