use serde_json::Value;
#[derive(Debug, Clone)]
pub struct ToolExample {
pub description: String,
pub input: Value,
pub output: Option<String>,
}
pub trait ToolPrompt: Send + Sync {
fn description(&self) -> String;
fn when_to_use(&self) -> String;
fn examples(&self) -> Vec<ToolExample>;
fn important_notes(&self) -> Option<String>;
}
pub trait IntoToolPrompt {
#[allow(clippy::wrong_self_convention)]
fn into_tool_prompt(&self) -> Option<&dyn ToolPrompt>;
}
impl IntoToolPrompt for &dyn ToolPrompt {
fn into_tool_prompt(&self) -> Option<&dyn ToolPrompt> {
Some(*self)
}
}
#[cfg(test)]
#[path = "../../tests/unit/tools/prompt/prompt_test.rs"]
mod tests;