use agent_contracts::Hooker;
use agent_types::common::BuildError;

use super::builtin::build_builtin_hookers;
#[cfg(feature = "plugin_hook")]
use super::plugin::build_plugin_hookers;

pub(crate) fn build_hookers(
    _plugin_tool_hooker_jsons: &[String],
) -> Result<Vec<Box<dyn Hooker>>, BuildError> {
    let mut hookers = Vec::new();
    hookers.extend(build_builtin_hookers());
    #[cfg(feature = "plugin_hook")]
    hookers.extend(build_plugin_hookers(_plugin_tool_hooker_jsons)?);
    Ok(hookers)
}