Skip to main content

agentic_evolve_mcp/tools/
evolve_pattern_delete.rs

1//! Tool: evolve_pattern_delete — Delete a pattern by ID.
2
3use 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
17/// Return the tool definition for evolve_pattern_delete.
18pub 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
35/// Execute the evolve_pattern_delete tool.
36pub 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(&params.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}