pub struct DeferredExtensionTool { /* private fields */ }Expand description
A dormant, manifest-declared extension tool. Registered like any live
tool (stable ext:<plugin>:<name> identity, schema, digest — so wire
resolution, discovery, exact grants, and the execution gate all work
unchanged), but its implementation is DEFERRED: executing it requires
the session extension-runtime lease capability (lease lifecycle
commit), which starts only the OWNING extension after the execution
gate has already authorized the call. Without that capability it fails
typed and spawns nothing.
Implementations§
Source§impl DeferredExtensionTool
impl DeferredExtensionTool
pub fn plugin_id(&self) -> &str
pub fn tool_name(&self) -> &str
Sourcepub fn expected_digest(&self) -> &SchemaDigest
pub fn expected_digest(&self) -> &SchemaDigest
Digest of the pinned declaration — equal by construction to this tool’s catalog record digest.
Trait Implementations§
Source§impl Tool for DeferredExtensionTool
impl Tool for DeferredExtensionTool
Source§fn origin(&self) -> ToolOrigin
fn origin(&self) -> ToolOrigin
Runtime-origin identity used for catalog provenance. Conservative by
default: tools that declare nothing are
Unknown (fail-closed source
trust), and tools that declare an owning extension classify as
extension-provided. Built-in implementations override this explicitly.Source§fn description(&self) -> &str
fn description(&self) -> &str
Human-readable description sent to the model.
Source§fn parameters(&self) -> Value
fn parameters(&self) -> Value
JSON Schema for the tool’s parameters.
Source§fn execute<'life0, 'async_trait>(
&'life0 self,
params: Value,
ctx: ToolContext,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn execute<'life0, 'async_trait>(
&'life0 self,
params: Value,
ctx: ToolContext,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Execute the tool with the given parameters.
Source§fn execute_rich<'life0, 'async_trait>(
&'life0 self,
params: Value,
ctx: ToolContext,
) -> Pin<Box<dyn Future<Output = Result<ToolOutput>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn execute_rich<'life0, 'async_trait>(
&'life0 self,
params: Value,
ctx: ToolContext,
) -> Pin<Box<dyn Future<Output = Result<ToolOutput>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Structured variant of
Tool::execute. DEFAULTED — existing tools
keep returning String via execute and never see this. Tools that
need to place non-text content blocks (images) into the model history
override this and make execute delegate to it. Read moreSource§fn extension_id(&self) -> Option<&str>
fn extension_id(&self) -> Option<&str>
Owning extension id for tools registered by an extension. Built-in tools return
None.Source§fn effect(&self) -> ToolEffect
fn effect(&self) -> ToolEffect
Conservative effect class (Task 24, spec §8.2). The default keeps
unknown/dynamic tools
NonIdempotent — serialized execution;
implementations opt IN to weaker classes explicitly.Source§fn concurrency_key(&self, _validated_input: &Value) -> Option<ConcurrencyKey>
fn concurrency_key(&self, _validated_input: &Value) -> Option<ConcurrencyKey>
Key resolution derived from validated input.
Serialize explicitly
fails closed into the global mutation lane; None is the conservative
default for tools with no key support.Auto Trait Implementations§
impl Freeze for DeferredExtensionTool
impl RefUnwindSafe for DeferredExtensionTool
impl Send for DeferredExtensionTool
impl Sync for DeferredExtensionTool
impl Unpin for DeferredExtensionTool
impl UnsafeUnpin for DeferredExtensionTool
impl UnwindSafe for DeferredExtensionTool
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.