Skip to main content

HookCallbackMatcher

Struct HookCallbackMatcher 

Source
pub struct HookCallbackMatcher {
    pub name: Option<String>,
    pub matcher: Option<String>,
    pub hooks: Vec<Arc<dyn Fn(HookInput, Option<String>, CancellationToken) -> Pin<Box<dyn Future<Output = Result<HookOutput, HookError>> + Send>> + Send + Sync>>,
    pub timeout: Option<u64>,
    pub requires: Option<HookRequirements>,
}
Expand description

Hook configuration with optional regex matcher pattern.

Groups one or more callbacks with a regex filter. The matcher pattern is tested against the hook’s filter field (typically the tool name for tool-related hooks). If no matcher is set, the hooks run for every event of their type.

§Example

use starpod_hooks::{hook_fn, HookCallbackMatcher, HookOutput};

let matcher = HookCallbackMatcher::new(vec![
    hook_fn(|_input, _id, _cancel| async move {
        Ok(HookOutput::default())
    }),
])
.with_matcher("Bash|Write")
.with_timeout(30);

assert!(matcher.matches("Bash").unwrap());
assert!(!matcher.matches("Read").unwrap());

Fields§

§name: Option<String>

Human-readable name for this hook group (used by circuit breaker and logging).

§matcher: Option<String>

Regex pattern to match against the event’s filter field (e.g., tool name). If None, the hook runs for every event of its type.

§hooks: Vec<Arc<dyn Fn(HookInput, Option<String>, CancellationToken) -> Pin<Box<dyn Future<Output = Result<HookOutput, HookError>> + Send>> + Send + Sync>>

Array of callback functions to execute when the pattern matches.

§timeout: Option<u64>

Timeout in seconds for all hooks in this matcher.

§requires: Option<HookRequirements>

Eligibility requirements (binaries, env vars, OS).

Implementations§

Source§

impl HookCallbackMatcher

Source

pub fn new( hooks: Vec<Arc<dyn Fn(HookInput, Option<String>, CancellationToken) -> Pin<Box<dyn Future<Output = Result<HookOutput, HookError>> + Send>> + Send + Sync>>, ) -> HookCallbackMatcher

Source

pub fn with_name(self, name: impl Into<String>) -> HookCallbackMatcher

Source

pub fn with_matcher(self, matcher: impl Into<String>) -> HookCallbackMatcher

Source

pub fn with_timeout(self, timeout: u64) -> HookCallbackMatcher

Source

pub fn with_requirements( self, requires: HookRequirements, ) -> HookCallbackMatcher

Source

pub fn matches(&self, target: &str) -> Result<bool, HookError>

Check if this matcher applies to the given target string.

Returns Ok(true) if no matcher is set (matches everything) or if the regex pattern matches the target.

Trait Implementations§

Source§

impl Clone for HookCallbackMatcher

Source§

fn clone(&self) -> HookCallbackMatcher

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for HookCallbackMatcher

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: 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: 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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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