use crate::prompt::PromptDef;
use crate::resource::ResourceDef;
use crate::tool::ToolDef;
#[derive(Debug)]
pub struct AutoTool(fn() -> ToolDef);
impl AutoTool {
#[must_use]
pub const fn new(definition: fn() -> ToolDef) -> Self {
Self(definition)
}
pub(crate) fn definition(&self) -> ToolDef {
(self.0)()
}
}
inventory::collect!(AutoTool);
#[derive(Debug)]
pub struct AutoResource(fn() -> ResourceDef);
impl AutoResource {
#[must_use]
pub const fn new(definition: fn() -> ResourceDef) -> Self {
Self(definition)
}
pub(crate) fn definition(&self) -> ResourceDef {
(self.0)()
}
}
inventory::collect!(AutoResource);
#[derive(Debug)]
pub struct AutoPrompt(fn() -> PromptDef);
impl AutoPrompt {
#[must_use]
pub const fn new(definition: fn() -> PromptDef) -> Self {
Self(definition)
}
pub(crate) fn definition(&self) -> PromptDef {
(self.0)()
}
}
inventory::collect!(AutoPrompt);