macro_rules! define_hook {
(
$(#[$meta:meta])*
$name:ident, $hook_name:literal => {
payload: $payload:ty,
result: $result:ty $(,)?
}
) => { ... };
}Expand description
Generates a hook type definition and marker struct.
§Usage
ⓘ
define_hook! {
/// Doc comment for the hook.
MyHook, "my_hook" => {
payload: MyPayload,
result: PluginResult<MyPayload>,
}
}This generates a marker struct MyHook implementing HookTypeDef.
Plugins handle it by implementing HookHandler<MyHook>.
§CMF Pattern (one handler, multiple hook names)
For CMF hooks where one handler covers multiple hook names:
ⓘ
define_hook! {
/// CMF message evaluation hook.
CmfHook, "cmf" => {
payload: MessagePayload,
result: PluginResult<MessagePayload>,
}
}
// Register the same handler for multiple names:
// manager.register_handler_for_names::<CmfHook, _>(plugin, config, &[
// "cmf.tool_pre_invoke", "cmf.llm_input", ...
// ]);