pub struct ClientWriteFile {
pub extra_roots: Vec<(PathBuf, AccessTier)>,
pub session_roots: Option<SharedSandboxRoots>,
/* private fields */
}Expand description
A tool that writes content to the ACP client’s buffer (IDE/editor).
The agent calls this when the client has declared fs.writeTextFile=true.
The tool sends the file path and content to the client, which updates
its unsaved buffer without writing to disk.
Sandbox escape detection is enforced: the file_path parameter is
checked against the sandbox roots via resolve_within before the
write is sent to the client (S2-E5).
Fields§
§extra_roots: Vec<(PathBuf, AccessTier)>Additional sandbox roots beyond the primary workspace.
session_roots: Option<SharedSandboxRoots>Session-scoped, runtime-mutable roots.
Implementations§
Source§impl ClientWriteFile
impl ClientWriteFile
Sourcepub fn with_acp_state(self, state: Arc<Mutex<AcpClientFsState>>) -> Self
pub fn with_acp_state(self, state: Arc<Mutex<AcpClientFsState>>) -> Self
Set the shared ACP client FS state.
Sourcepub fn with_extra_roots(
self,
extra: impl IntoIterator<Item = (PathBuf, AccessTier)>,
) -> Self
pub fn with_extra_roots( self, extra: impl IntoIterator<Item = (PathBuf, AccessTier)>, ) -> Self
Append additional allowed sandbox roots.
Sourcepub fn with_session_roots_opt(self, slot: Option<SharedSandboxRoots>) -> Self
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 ClientWriteFile
impl Tool for ClientWriteFile
fn spec(&self) -> ToolSpec
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
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
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
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
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).Auto Trait Implementations§
impl !RefUnwindSafe for ClientWriteFile
impl !UnwindSafe for ClientWriteFile
impl Freeze for ClientWriteFile
impl Send for ClientWriteFile
impl Sync for ClientWriteFile
impl Unpin for ClientWriteFile
impl UnsafeUnpin for ClientWriteFile
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoMaybeUndefined<T> for T
impl<T> IntoMaybeUndefined<T> for T
Source§fn into_maybe_undefined(self) -> MaybeUndefined<T>
fn into_maybe_undefined(self) -> MaybeUndefined<T>
Converts this value into a three-state builder argument.
Source§impl<T> IntoOption<T> for T
impl<T> IntoOption<T> for T
Source§fn into_option(self) -> Option<T>
fn into_option(self) -> Option<T>
Converts this value into an optional builder argument.