Skip to main content

agentic_evolve_mcp/tools/
evolve_optimize.rs

1//! Tool: evolve_optimize — Optimize pattern storage.
2
3use std::sync::Arc;
4use tokio::sync::Mutex;
5
6use serde_json::{json, Value};
7
8use crate::session::SessionManager;
9use crate::types::{McpError, McpResult, ToolCallResult, ToolDefinition};
10
11/// Return the tool definition for evolve_optimize.
12pub fn definition() -> ToolDefinition {
13    ToolDefinition {
14        name: "evolve_optimize".to_string(),
15        description: Some(
16            "Optimize pattern storage by applying decay, promotions, and cache cleanup".to_string(),
17        ),
18        input_schema: json!({
19            "type": "object",
20            "properties": {}
21        }),
22    }
23}
24
25/// Execute the evolve_optimize tool.
26pub async fn execute(
27    _args: Value,
28    session: &Arc<Mutex<SessionManager>>,
29) -> McpResult<ToolCallResult> {
30    let mut session = session.lock().await;
31    let summary = session
32        .optimize()
33        .map_err(|e| McpError::AgenticEvolve(e.to_string()))?;
34
35    Ok(ToolCallResult::json(&json!({
36        "patterns_total": summary.patterns_total,
37        "duplicates_found": summary.duplicates_found,
38        "prunable": summary.prunable,
39        "decay_healthy": summary.decay_healthy,
40        "decay_decaying": summary.decay_decaying,
41        "decay_critical": summary.decay_critical,
42        "patterns_decayed": summary.patterns_decayed,
43        "patterns_promoted": summary.patterns_promoted,
44        "patterns_demoted": summary.patterns_demoted,
45        "cache_cleared": summary.cache_cleared
46    })))
47}