dejadb_core/format/tool_schema/
gemini.rs1use serde_json::{json, Value};
9
10use crate::error::Result;
11use crate::types::Tool;
12
13use super::definition_parts;
14
15pub fn render(action: &Tool) -> Result<Value> {
16 let (name, description, parameters) = definition_parts(action)?;
17 Ok(json!({
18 "name": name,
19 "description": description,
20 "parameters": parameters,
21 }))
22}
23
24#[cfg(test)]
25mod tests {
26 use super::super::tests::sample_def;
27 use super::*;
28
29 #[test]
30 fn shape_matches_gemini_wire() {
31 let v = render(&sample_def()).unwrap();
32 assert_eq!(v["name"], "slack_post_message");
33 assert_eq!(v["parameters"]["type"], "object");
34 assert!(v.get("input_schema").is_none());
36 }
37}