1use serde_json::Value;
2
3#[allow(dead_code)]
4pub trait HematiteTool {
5 fn name(&self) -> &'static str;
6 fn description(&self) -> &'static str;
7 fn risk_level(&self, args: &serde_json::Value) -> RiskLevel;
8
9 fn estimate_token_cost(&self, args: &Value) -> usize;
11
12 fn security_audit(&self, args: &Value) -> Result<(), String>;
14
15 fn dry_run(&self, args: Value) -> Result<String, String>;
17
18 fn run(&self, args: Value) -> Result<String, String>;
20}
21
22#[derive(Debug, Clone, Copy, PartialEq, Eq)]
23pub enum RiskLevel {
24 Safe,
25 Moderate,
26 High,
27}