Skip to main content

EnterPlanModeTool

Struct EnterPlanModeTool 

Source
pub struct EnterPlanModeTool { /* private fields */ }
Expand description

Tool that switches the agent into read-only planning mode.

Once entered, any non-readonly tool call (except exit_plan_mode) is blocked with an error message. The agent should use read tools to explore the codebase, then call exit_plan_mode with its markdown plan.

When a PermissionsConfig is provided, the tool also checks which tools are in Plan mode and includes that information in the response, guiding the agent to focus on those tools during planning.

Implementations§

Source§

impl EnterPlanModeTool

Source

pub fn new(gate: Arc<PlanApprovalGate>) -> Self

Create a new EnterPlanModeTool sharing the given gate.

Source

pub fn with_permissions(self, permissions: Arc<PermissionsConfig>) -> Self

Attach a permissions config so the tool can report which tools are in Plan mode.

Trait Implementations§

Source§

impl Tool for EnterPlanModeTool

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 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_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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: 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: 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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