1pub struct ToolMeta {
2 pub name: &'static str,
3 pub write: bool,
4}
5
6pub const ALL_TOOLS: &[ToolMeta] = &[
7 ToolMeta { name: "create_entities", write: true },
8 ToolMeta { name: "create_relations", write: true },
9 ToolMeta { name: "add_observations", write: true },
10 ToolMeta { name: "delete_entities", write: true },
11 ToolMeta { name: "delete_observations",write: true },
12 ToolMeta { name: "delete_relations", write: true },
13 ToolMeta { name: "read_graph", write: false },
14 ToolMeta { name: "search_nodes", write: false },
15 ToolMeta { name: "open_nodes", write: false },
16 ToolMeta { name: "get_entity", write: false },
17 ToolMeta { name: "graph_stats", write: false },
18 ToolMeta { name: "search_relations", write: false },
19 ToolMeta { name: "find_path", write: false },
20 ToolMeta { name: "compact", write: true },
21 ToolMeta { name: "get_neighbors", write: false },
22 ToolMeta { name: "describe_entity", write: false },
23 ToolMeta { name: "list_entity_types", write: false },
24 ToolMeta { name: "list_relation_types",write: false },
25 ToolMeta { name: "upsert_entities", write: true },
26 ToolMeta { name: "export_graph", write: false },
27 ToolMeta { name: "merge_entities", write: true },
28 ToolMeta { name: "extract_subgraph", write: false },
29 ToolMeta { name: "batch_get_entities",write: false },
30 ToolMeta { name: "find_all_paths", write: false },
31 ToolMeta { name: "entity_exists", write: false },
32 ToolMeta { name: "degree", write: false },
33];
34
35#[inline]
36pub fn tool_exists(name: &str) -> bool {
37 ALL_TOOLS.iter().any(|t| t.name == name)
38}
39
40#[inline]
41pub fn is_write_tool(name: &str) -> bool {
42 ALL_TOOLS.iter().find(|t| t.name == name).map(|t| t.write).unwrap_or(false)
43}
44
45