use super::HandlerContext;
use super::HandlerResult;
use super::ParamStruct;
use super::ResultStruct;
use super::ToolDef;
use super::ToolResult;
use super::handler;
use super::registry;
use crate::error::Result;
pub fn get_all_tool_definitions() -> Vec<ToolDef> { registry::get_all_tool_definitions() }
pub fn extract_parameter_values<T>(context: &HandlerContext) -> Result<T>
where
T: serde::de::DeserializeOwned + schemars::JsonSchema,
{
context.extract_parameter_values()
}
pub fn call_with_typed_params<O, P, F, Fut>(
context: HandlerContext,
f: F,
) -> HandlerResult<'static, ToolResult<O, P>>
where
O: ResultStruct + Send + Sync + 'static,
P: ParamStruct + Clone + for<'de> serde::Deserialize<'de> + Send + 'static,
F: FnOnce(HandlerContext, P) -> Fut + Send + 'static,
Fut: std::future::Future<Output = Result<O>> + Send + 'static,
{
handler::call_with_typed_params(context, f)
}