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 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 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 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 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