agentic_evolve_mcp/tools/
evolve_pattern_delete.rs1use std::sync::Arc;
4use tokio::sync::Mutex;
5
6use serde::Deserialize;
7use serde_json::{json, Value};
8
9use crate::session::SessionManager;
10use crate::types::{McpError, McpResult, ToolCallResult, ToolDefinition};
11
12#[derive(Debug, Deserialize)]
13struct DeleteParams {
14 pattern_id: String,
15}
16
17pub fn definition() -> ToolDefinition {
19 ToolDefinition {
20 name: "evolve_pattern_delete".to_string(),
21 description: Some("Delete a pattern by ID".to_string()),
22 input_schema: json!({
23 "type": "object",
24 "properties": {
25 "pattern_id": {
26 "type": "string",
27 "description": "The unique pattern identifier to delete"
28 }
29 },
30 "required": ["pattern_id"]
31 }),
32 }
33}
34
35pub async fn execute(
37 args: Value,
38 session: &Arc<Mutex<SessionManager>>,
39) -> McpResult<ToolCallResult> {
40 let params: DeleteParams =
41 serde_json::from_value(args).map_err(|e| McpError::InvalidParams(e.to_string()))?;
42
43 let mut session = session.lock().await;
44 let pattern = session
45 .delete_pattern(¶ms.pattern_id)
46 .map_err(|e| McpError::AgenticEvolve(e.to_string()))?;
47
48 Ok(ToolCallResult::json(&json!({
49 "deleted": true,
50 "pattern_id": pattern.id.as_str(),
51 "name": pattern.name,
52 "domain": pattern.domain
53 })))
54}