pub struct PlanModeExecutor { /* private fields */ }Expand description
Wraps an ErasedToolExecutor for Plan permission mode.
Exposes the real tool catalog via tool_definitions_erased() so the LLM can
reference existing tools in its plan, but blocks all execution methods with
ToolError::Blocked. This implements read-only planning: the agent sees what
tools exist but cannot invoke them.
Implementations§
Source§impl PlanModeExecutor
impl PlanModeExecutor
Sourcepub fn new(inner: Arc<dyn ErasedToolExecutor>) -> Self
pub fn new(inner: Arc<dyn ErasedToolExecutor>) -> Self
Wrap inner with plan-mode restrictions.
Trait Implementations§
Source§impl ErasedToolExecutor for PlanModeExecutor
impl ErasedToolExecutor for PlanModeExecutor
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>>
Plan mode blocks all execution, confirmed or not — reuse the same block as the
unconfirmed path rather than forwarding to inner.
Source§fn set_effective_trust(&self, level: SkillTrustLevel)
fn set_effective_trust(&self, level: SkillTrustLevel)
Read-only in plan mode: trust level is metadata, not an execution capability, so it is safe (and necessary for parity with other read paths) to forward.
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 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 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§fn requires_confirmation_erased(&self, _call: &ToolCall) -> bool
fn requires_confirmation_erased(&self, _call: &ToolCall) -> bool
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
Auto Trait Implementations§
impl !RefUnwindSafe for PlanModeExecutor
impl !UnwindSafe for PlanModeExecutor
impl Freeze for PlanModeExecutor
impl Send for PlanModeExecutor
impl Sync for PlanModeExecutor
impl Unpin for PlanModeExecutor
impl UnsafeUnpin for PlanModeExecutor
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> 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> 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