use serde::Serialize;
pub enum ParamType {
String,
Integer,
Number,
Boolean,
}
impl Serialize for ParamType {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: serde::Serializer {
match &self {
ParamType::String => serializer.serialize_str("string"),
ParamType::Integer => serializer.serialize_str("integer"),
ParamType::Number => serializer.serialize_str("number"),
ParamType::Boolean => serializer.serialize_str("boolean"),
}
}
}
pub struct ToolParam {
pub name: String,
pub description: String,
pub data_type: ParamType,
pub required: bool,
}
pub struct ToolSpec {
pub name: String,
pub description: String,
pub params: Vec<ToolParam>,
}
pub enum ToolChoice {
None,
Auto,
CallOne,
Force(String)
}