Skip to main content

PluginToolAdapter

Struct PluginToolAdapter 

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

An AgentTool backed by a plugin’s 4-function handle. One adapter is built per registered tool (schema copied from the registration) and inserted into the session’s tool set in B2.

Holds a clone of the session’s PluginKeepalive so the cdylib that owns handle’s fn pointers stays mapped for as long as the adapter (and thus any in-flight execute) may call them. Without this the Library could drop (unload the cdylib) while a fn pointer is still callable → UAF. The keepalive is Arc-shared with every other adapter built from the same session, so the last drop — which can only happen once the harness’s tool vec drops — unloads.

Implementations§

Source§

impl PluginToolAdapter

Source

pub fn new( schema: Tool, handle: PluginToolHandle, keepalive: Arc<PluginKeepalive>, ) -> Self

Build an adapter from the registered schema + handle + the session’s keepalive. label defaults to the tool name. The keepalive clone keeps the owning cdylib mapped for the adapter’s lifetime.

Trait Implementations§

Source§

impl AgentTool for PluginToolAdapter

Source§

fn schema(&self) -> &Tool

The provider-facing tool definition (name, description, parameters schema).
Source§

fn label(&self) -> &str

Human-readable label for UI display.
Source§

fn execution_mode(&self) -> ToolExecutionMode

Per-tool execution-mode override. Sequential forces one-at-a-time for the whole batch when any tool in it returns Sequential; Parallel (default) allows concurrency.
Source§

fn execute<'life0, 'life1, 'async_trait>( &'life0 self, tool_call_id: &'life1 str, params: Value, signal: CancellationToken, on_update: Arc<dyn Fn(ToolResultPartial) + Send + Sync>, ) -> Pin<Box<dyn Future<Output = Result<AgentToolResult, AgentError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Execute the tool call. Throw via Err(AgentError) on failure — the loop encodes the error message into an error ToolResultMessage. Read more
Source§

fn prepare_arguments(&self, args: Value) -> Result<Value, AgentError>

Optional compatibility shim for raw tool-call arguments before schema validation. Default is identity. Mirrors TS prepareArguments.

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

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> MaybeSendSync for T

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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