Skip to main content

MessageSendTool

Struct MessageSendTool 

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

The message_send tool: how a run leaves a message for another agent.

Implementations§

Trait Implementations§

Source§

impl Tool for MessageSendTool

Source§

fn read_only(&self) -> bool

True, and it is a decision, not an oversight: sending writes one file into the user’s own owner-only store — nothing leaves the machine, nothing in the workspace changes, and the receiving side re-imposes every gate (its own permissions, interlock, outbox) on whatever the message asks. Requiring approval here would make the unattended draft-and-report shape — the reason this tool exists — impossible in exactly the read-only runs it was designed for, the same reasoning that lets outbox staging skip the approver. The guardrails are the pending cap, the duplicate brake, and the taint stamped on every message by the harness.

Read-only for the approver and permission gate — but not, despite this flag, for the planning phase: sending is a side effect on another agent, and Phase::allows would otherwise admit it because it keys on read_only. call refuses in Phase::Plan explicitly rather than turning the flag off, because turning it off would drag the approver back in and break the unattended shape above.

Source§

fn name(&self) -> &str

Source§

fn description(&self) -> &str

Source§

fn input_schema(&self) -> Value

Source§

fn capabilities(&self) -> Capabilities

Declared risk surface. The default is the conservative one for a tool nobody has classified: assume it does nothing special.
Source§

fn call<'life0, 'life1, 'async_trait>( &'life0 self, input: Value, ctx: &'life1 ToolCtx, ) -> Pin<Box<dyn Future<Output = Result<ToolOutput>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn carried_state(&self) -> Option<CarriedState>

State this tool holds that a compaction must not lose. Read more
Source§

fn denial_remedy(&self) -> Option<String>

How the operator could make a call like the one just refused safe — one sentence appended to a trifecta denial, or None when nothing short of policy would change the answer. Read more
Source§

fn fixed_workspace(&self) -> Option<PathBuf>

The root this tool’s relative paths actually resolve against, when the tool was constructed over a fixed directory rather than following the per-run ToolCtx workspace. Read more
Source§

fn narrows_surface_to(&self) -> Option<Vec<String>>

Tool names this tool is currently restricting the surface to, if it is restricting it at all. Read more
Source§

fn forget_conversation_state(&self)

Drop state that belonged to the conversation that just ended. Read more
Source§

fn spec(&self) -> ToolSpec

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