Format a tool call as the equivalent `atomic query` CLI command.
(name: &str, args: &serde_json::Value)
| 1105 | |
| 1106 | /// Format a tool call as the equivalent `atomic query` CLI command. |
| 1107 | fn format_tool_as_command(name: &str, args: &serde_json::Value) -> String { |
| 1108 | match name { |
| 1109 | "kg_search" => { |
| 1110 | let query = args["query"].as_str().unwrap_or("?"); |
| 1111 | let limit = args["limit"].as_u64().unwrap_or(10); |
| 1112 | format!("atomic query search \"{}\" -k {}", query, limit) |
| 1113 | } |
| 1114 | "kg_neighbors" => { |
| 1115 | let id = args["node_id"].as_str().unwrap_or("?"); |
| 1116 | let depth = args["depth"].as_u64().unwrap_or(1); |
| 1117 | format!("atomic query neighbors \"{}\" -d {}", id, depth) |
| 1118 | } |
| 1119 | "read_file" => { |
| 1120 | let path = args["path"].as_str().unwrap_or("?"); |
| 1121 | match (args["start_line"].as_u64(), args["end_line"].as_u64()) { |
| 1122 | (Some(s), Some(e)) => format!("read_file {} L{}-{}", path, s, e), |
| 1123 | (Some(s), None) => format!("read_file {} L{}+", path, s), |
| 1124 | _ => format!("read_file {}", path), |
| 1125 | } |
| 1126 | } |
| 1127 | "code_search" => { |
| 1128 | let pattern = args["pattern"].as_str().unwrap_or("?"); |
| 1129 | let mut cmd = format!("atomic query code \"{}\"", pattern); |
| 1130 | if let Some(t) = args["file_type"].as_str() { |
| 1131 | cmd.push_str(&format!(" -t {}", t)); |
| 1132 | } |
| 1133 | if let Some(g) = args["path_filter"].as_str() { |
| 1134 | cmd.push_str(&format!(" -g {}", g)); |
| 1135 | } |
| 1136 | cmd |
| 1137 | } |
| 1138 | "list_entities" => { |
| 1139 | let path = args["path"].as_str().unwrap_or("?"); |
| 1140 | format!("atomic query entities {}", path) |
| 1141 | } |
| 1142 | "vault_read" => { |
| 1143 | let path = args["path"].as_str().unwrap_or("?"); |
| 1144 | format!("atomic vault show {}", path) |
| 1145 | } |
| 1146 | _ => format!("{}({})", name, args), |
| 1147 | } |
| 1148 | } |
| 1149 | |
| 1150 | /// Truncate a tool result to [`MAX_TOOL_RESULT_BYTES`]. |
| 1151 | fn truncate_result(s: &str) -> String { |
no test coverage detected