agentic_evolve_mcp/tools/
evolve_optimize.rs1use 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
11pub 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
25pub 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}