Skip to main content

HookManager

Struct HookManager 

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

Manages a collection of hooks and executes them in order.

Hooks are executed in priority order (lower priority runs first). If any hook returns Skip, SkipWith, or Abort, execution stops.

§Example

use liteforge::hooks::{Hook, HookContext, HookResult, HookManager, HookEvent};

struct LogHook;
impl Hook for LogHook {
    fn name(&self) -> &str { "log" }
    fn on_before_tool_call(&self, ctx: &HookContext) -> HookResult {
        println!("Tool call: {:?}", ctx.data);
        HookResult::Continue
    }
}

let mut manager = HookManager::new();
manager.register(Box::new(LogHook));

let ctx = HookContext::new(HookEvent::BeforeToolCall);
let result = manager.run(&ctx);
assert!(result.should_continue());

Implementations§

Source§

impl HookManager

Source

pub fn new() -> Self

Create a new empty hook manager.

Source

pub fn register(&self, hook: Box<dyn Hook>)

Register a hook.

Source

pub fn unregister(&self, name: &str) -> bool

Unregister a hook by name.

Returns true if a hook was removed.

Source

pub fn run(&self, ctx: &HookContext) -> HookResult

Run all hooks for an event.

Hooks are executed in priority order. Execution stops if any hook returns Skip, SkipWith, or Abort.

Source

pub fn run_mut(&self, ctx: &mut HookContext) -> HookResult

Run hooks with mutable context, allowing hooks to modify data.

If a hook returns ContinueWith, the context data is updated before calling the next hook.

Source

pub fn len(&self) -> usize

Get the number of registered hooks.

Source

pub fn is_empty(&self) -> bool

Check if no hooks are registered.

Source

pub fn hook_names(&self) -> Vec<String>

Get the names of all registered hooks.

Source

pub fn clear(&self)

Clear all hooks.

Trait Implementations§

Source§

impl Default for HookManager

Source§

fn default() -> Self

Returns the “default value” for a type. 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> 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> 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, 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