pub struct AcpShellExecutor { /* private fields */ }Expand description
IDE-proxied shell executor.
Routes bash tool calls to the IDE terminal via ACP terminal/* methods.
Only constructed when the IDE advertises terminal capability.
Implementations§
Source§impl AcpShellExecutor
impl AcpShellExecutor
Sourcepub fn new(
conn: Arc<ConnectionTo<Client>>,
session_id: SessionId,
permission_gate: Option<AcpPermissionGate>,
timeout_secs: u64,
) -> (Self, impl Future<Output = ()>)
pub fn new( conn: Arc<ConnectionTo<Client>>, session_id: SessionId, permission_gate: Option<AcpPermissionGate>, timeout_secs: u64, ) -> (Self, impl Future<Output = ()>)
Create the executor and its background handler future.
Spawn the returned future with tokio::spawn; it drives terminal
create/execute/release requests forwarded from the bash and
bash_stdin tools.
Sourcepub fn with_timeout(
conn: Arc<ConnectionTo<Client>>,
session_id: SessionId,
permission_gate: Option<AcpPermissionGate>,
timeout: Duration,
) -> (Self, impl Future<Output = ()>)
pub fn with_timeout( conn: Arc<ConnectionTo<Client>>, session_id: SessionId, permission_gate: Option<AcpPermissionGate>, timeout: Duration, ) -> (Self, impl Future<Output = ()>)
Create the executor with a configurable command timeout.
Sourcepub fn release_terminal(&self, terminal_id: String)
pub fn release_terminal(&self, terminal_id: String)
Release a terminal by ID after the tool_call_update notification has been sent.
This must be called after the ACP tool_call_update containing
ToolCallContent::Terminal(terminal_id) is emitted so that the IDE can
still display the terminal output when it processes the notification.
Trait Implementations§
Source§impl Clone for AcpShellExecutor
impl Clone for AcpShellExecutor
Source§fn clone(&self) -> AcpShellExecutor
fn clone(&self) -> AcpShellExecutor
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl ToolExecutor for AcpShellExecutor
impl ToolExecutor for AcpShellExecutor
Source§async fn execute(
&self,
_response: &str,
) -> Result<Option<ToolOutput>, ToolError>
async fn execute( &self, _response: &str, ) -> Result<Option<ToolOutput>, ToolError>
Parse
response for fenced tool blocks and execute them. Read moreSource§fn tool_definitions(&self) -> Vec<ToolDef>
fn tool_definitions(&self) -> Vec<ToolDef>
Return the tool definitions this executor can handle. Read more
Source§async fn execute_tool_call(
&self,
call: &ToolCall,
) -> Result<Option<ToolOutput>, ToolError>
async fn execute_tool_call( &self, call: &ToolCall, ) -> Result<Option<ToolOutput>, ToolError>
Source§fn requires_confirmation(&self, _call: &ToolCall) -> bool
fn requires_confirmation(&self, _call: &ToolCall) -> bool
Source§fn execute_tool_call_confirmed(
&self,
call: &ToolCall,
) -> impl Future<Output = Result<Option<ToolOutput>, ToolError>> + Send
fn execute_tool_call_confirmed( &self, call: &ToolCall, ) -> impl Future<Output = Result<Option<ToolOutput>, ToolError>> + Send
Execute a structured tool call bypassing confirmation checks. Read more
Source§fn checkpoint_undo(&self, _n: usize) -> CheckpointActionResult
fn checkpoint_undo(&self, _n: usize) -> CheckpointActionResult
Undo the last
n checkpointed write commands. Read moreSource§fn checkpoint_redo(&self) -> CheckpointActionResult
fn checkpoint_redo(&self) -> CheckpointActionResult
Redo the last undone checkpoint. Read more
Source§fn checkpoint_list(&self) -> CheckpointListResult
fn checkpoint_list(&self) -> CheckpointListResult
List the current undo stack entries and redo depth. Read more
Source§fn is_tool_speculatable(&self, _tool_id: &str) -> bool
fn is_tool_speculatable(&self, _tool_id: &str) -> bool
Whether a tool call can be safely dispatched speculatively (before the LLM finishes). Read more
Source§fn execute_confirmed(
&self,
response: &str,
) -> impl Future<Output = Result<Option<ToolOutput>, ToolError>> + Send
fn execute_confirmed( &self, response: &str, ) -> impl Future<Output = Result<Option<ToolOutput>, ToolError>> + Send
Execute bypassing confirmation checks (called after user approves). Read more
Source§fn set_skill_env(&self, _env: Option<HashMap<String, String>>)
fn set_skill_env(&self, _env: Option<HashMap<String, String>>)
Inject environment variables for the currently active skill. No-op by default. Read more
Source§fn set_effective_trust(&self, _level: SkillTrustLevel)
fn set_effective_trust(&self, _level: SkillTrustLevel)
Set the effective trust level for the currently active skill. No-op by default. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for AcpShellExecutor
impl !UnwindSafe for AcpShellExecutor
impl Freeze for AcpShellExecutor
impl Send for AcpShellExecutor
impl Sync for AcpShellExecutor
impl Unpin for AcpShellExecutor
impl UnsafeUnpin for AcpShellExecutor
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> ErasedToolExecutor for Twhere
T: ToolExecutor,
impl<T> ErasedToolExecutor for Twhere
T: ToolExecutor,
fn execute_erased<'a>( &'a self, response: &'a str, ) -> Pin<Box<dyn Future<Output = Result<Option<ToolOutput>, ToolError>> + Send + 'a>>
fn execute_confirmed_erased<'a>( &'a self, response: &'a str, ) -> Pin<Box<dyn Future<Output = Result<Option<ToolOutput>, ToolError>> + Send + 'a>>
fn tool_definitions_erased(&self) -> Vec<ToolDef>
fn execute_tool_call_erased<'a>( &'a self, call: &'a ToolCall, ) -> Pin<Box<dyn Future<Output = Result<Option<ToolOutput>, ToolError>> + Send + 'a>>
Source§fn execute_tool_call_confirmed_erased<'a>(
&'a self,
call: &'a ToolCall,
) -> Pin<Box<dyn Future<Output = Result<Option<ToolOutput>, ToolError>> + Send + 'a>>
fn execute_tool_call_confirmed_erased<'a>( &'a self, call: &'a ToolCall, ) -> Pin<Box<dyn Future<Output = Result<Option<ToolOutput>, ToolError>> + Send + 'a>>
Required (no default). TrustGateExecutor-style wrappers that override
ToolExecutor::execute_tool_call_confirmed reach it through the blanket impl below.
Other implementors should fall back to
execute_tool_call_erased (normal
enforcement path) unless they need to replicate confirmed-path-specific behavior
(e.g. a fallback that only applies on the unconfirmed path must be mirrored
explicitly, not assumed). See
erased_tool_executor_no_inner_defaults!
for leaf executors with no wrapped inner.Source§fn set_skill_env(&self, env: Option<HashMap<String, String>>)
fn set_skill_env(&self, env: Option<HashMap<String, String>>)
Inject environment variables for the currently active skill. No-op by default.
Source§fn set_effective_trust(&self, level: SkillTrustLevel)
fn set_effective_trust(&self, level: SkillTrustLevel)
Set the effective trust level for the currently active skill. No-op by default.
Source§fn checkpoint_undo_erased(&self, n: usize) -> CheckpointActionResult
fn checkpoint_undo_erased(&self, n: usize) -> CheckpointActionResult
Undo the last
n checkpointed write commands. Read moreSource§fn checkpoint_redo_erased(&self) -> CheckpointActionResult
fn checkpoint_redo_erased(&self) -> CheckpointActionResult
Redo the last undone checkpoint. Read more
Source§fn checkpoint_list_erased(&self) -> CheckpointListResult
fn checkpoint_list_erased(&self) -> CheckpointListResult
List the current undo stack entries and redo depth. Read more
Source§fn is_tool_retryable_erased(&self, tool_id: &str) -> bool
fn is_tool_retryable_erased(&self, tool_id: &str) -> bool
Whether the executor can safely retry this tool call on a transient error.
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§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.
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request