pub struct PreToolUseHookAdapter { /* private fields */ }Expand description
Adapter that implements PreToolUseHook for a single UserHookSpec
whose event is pre_tool_use.
Lifecycle per before_exec call:
- Skip when the matcher rejects the (tool_name, arguments) pair —
Continue(tool_call)with no mutation. - Build a
HookPayloadfrom the tool call. - Run the executor with the spec’s
timeout_ms. - On
Allow, returnContinue(tool_call)unchanged. - On
Mutate { patch }, mergepatch.argumentsintotool_call.argumentsand returnContinue. - On
Block { reason, user_message }, returnBlock—ActAtomshort-circuits the tool call. - On
Error, apply the spec’son_errorpolicy:Block→Block { reason = "hook errored: …" }Warn/Allow→ log +Continue(tool_call)unchanged.
Implementations§
Source§impl PreToolUseHookAdapter
impl PreToolUseHookAdapter
pub fn new(spec: UserHookSpec, executor: Arc<dyn HookExecutor>) -> Self
pub fn with_index( spec: UserHookSpec, executor: Arc<dyn HookExecutor>, index: usize, ) -> Self
Trait Implementations§
Source§impl PreToolUseHook for PreToolUseHookAdapter
impl PreToolUseHook for PreToolUseHookAdapter
fn before_exec<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tool_call: ToolCall,
_tool_def: &'life1 ToolDefinition,
context: &'life2 ToolContext,
) -> Pin<Box<dyn Future<Output = PreToolUseDecision> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Auto Trait Implementations§
impl !RefUnwindSafe for PreToolUseHookAdapter
impl !UnwindSafe for PreToolUseHookAdapter
impl Freeze for PreToolUseHookAdapter
impl Send for PreToolUseHookAdapter
impl Sync for PreToolUseHookAdapter
impl Unpin for PreToolUseHookAdapter
impl UnsafeUnpin for PreToolUseHookAdapter
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request