pub struct ToolImpl {
pub def: ToolDef,
pub exec: Option<AsyncToolExec>,
pub exec_sync: Option<SyncToolExec>,
pub sanitize_errors: bool,
}Expand description
Complete tool: definition + sync/async exec functions.
Implements Builtin so it can be registered directly in a Bash
interpreter or used inside a ScriptedTool.
§Example
use bashkit_scripted_tool::{ToolDef, ToolImpl};
let tool = ToolImpl::new(
ToolDef::new("greet", "Greet a user")
.with_schema(serde_json::json!({
"type": "object",
"properties": { "name": {"type": "string"} }
})),
)
.with_exec_sync(|args| {
let name = args.param_str("name").unwrap_or("world");
Ok(format!("hello {name}\n"))
});Fields§
§def: ToolDefTool metadata (name, description, schema, tags).
exec: Option<AsyncToolExec>Async exec (preferred when running in async context).
exec_sync: Option<SyncToolExec>Sync exec (preferred when running in sync context).
sanitize_errors: boolWhether callback error strings are sanitized before script-visible stderr.
Implementations§
Source§impl ToolImpl
impl ToolImpl
Sourcepub fn with_exec_sync(
self,
f: impl Fn(&ToolArgs) -> Result<String, String> + Send + Sync + 'static,
) -> Self
pub fn with_exec_sync( self, f: impl Fn(&ToolArgs) -> Result<String, String> + Send + Sync + 'static, ) -> Self
Set the sync exec function.
Sourcepub fn sanitize_errors(self, sanitize: bool) -> Self
pub fn sanitize_errors(self, sanitize: bool) -> Self
Control whether callback errors are sanitized before reaching stderr.
Default: true, replacing callback Err(String) with
"<tool>: callback failed\n" to avoid exposing host-side secrets,
paths, connection strings, or stack traces to untrusted scripts.
Set to false only when callers are trusted and raw diagnostics are safe.
Trait Implementations§
Source§impl Builtin for ToolImpl
impl Builtin for ToolImpl
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: Context<'life1>,
) -> Pin<Box<dyn Future<Output = Result<ExecResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: Context<'life1>,
) -> Pin<Box<dyn Future<Output = Result<ExecResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute the builtin command. Read more
Source§fn execution_plan<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_ctx: &'life1 Context<'life2>,
) -> Pin<Box<dyn Future<Output = Result<Option<ExecutionPlan>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn execution_plan<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_ctx: &'life1 Context<'life2>,
) -> Pin<Box<dyn Future<Output = Result<Option<ExecutionPlan>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Return an execution plan for sub-command execution. Read more
Source§fn llm_hint(&self) -> Option<&'static str>
fn llm_hint(&self) -> Option<&'static str>
Optional short hint for LLM system prompts. Read more
Source§fn reset_session_state(&self)
fn reset_session_state(&self)
Clear hidden per-instance state that must not survive snapshot restore. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for ToolImpl
impl !UnwindSafe for ToolImpl
impl Freeze for ToolImpl
impl Send for ToolImpl
impl Sync for ToolImpl
impl Unpin for ToolImpl
impl UnsafeUnpin for ToolImpl
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