cpex_core/hooks/mod.rs
1// Location: ./crates/cpex-core/src/hooks/mod.rs
2// Copyright 2025
3// SPDX-License-Identifier: Apache-2.0
4// Authors: Teryl Taylor
5//
6// Hook system.
7//
8// Provides the core abstractions for defining and dispatching hooks:
9//
10// - [`HookTypeDef`] — marker trait associating a typed payload + result with a hook name.
11// - [`PluginPayload`] — base trait for all hook payloads (mirrors Python's PluginPayload).
12// - [`PluginResult`] — result type with separate payload and extension modifications.
13// - [`Extensions`] — capability-gated extension view passed to handlers.
14// - [`define_hook!`] — macro for declaring new hook types with handler traits.
15// - [`hook_names`] / [`cmf_hook_names`] — string constants for built-in hooks.
16//
17// Hook types are open — hosts define their own using define_hook! alongside the built-ins.
18
19pub mod adapter;
20pub mod macros;
21pub mod metadata;
22pub mod payload;
23pub mod trait_def;
24pub mod types;
25
26// Re-export core types at the hooks level
27pub use adapter::TypedHandlerAdapter;
28pub use metadata::{
29 lookup as lookup_hook_metadata, register_hook_metadata, HookMetadata, HookPhase,
30};
31pub use payload::{Extensions, PluginPayload};
32pub use trait_def::{HookHandler, HookTypeDef, PluginResult};
33pub use types::{builtin_hook_types, hook_type_from_str, HookType};