diff --git a/src/cli/graph.rs b/src/cli/graph.rs index 84c508e..89840cd 100644 --- a/src/cli/graph.rs +++ b/src/cli/graph.rs @@ -101,56 +101,17 @@ pub fn cmd_normalize_strengths(apply: bool) -> Result<(), String> { Ok(()) } -pub fn cmd_spread(keys: &[String], max_results: usize) -> Result<(), String> { - if keys.is_empty() { - return Err("spread requires at least one seed key".into()); - } - - let store = store::Store::load()?; - let graph = graph::build_graph_fast(&store); - let params = store.params(); - - let seeds: Vec<(String, f64)> = keys.iter() - .filter_map(|k| { - let resolved = store.resolve_key(k).ok()?; - Some((resolved, 1.0)) - }) - .collect(); - - if seeds.is_empty() { - return Err("no valid seed keys found".into()); - } - - let results = crate::search::spreading_activation( - &seeds, &graph, &store, - params.max_hops, params.edge_decay, params.min_activation, - ); - - let seed_keys: std::collections::HashSet<&str> = seeds.iter() - .map(|(k, _)| k.as_str()) - .collect(); - - for (key, score) in results.iter() - .filter(|(k, _)| !seed_keys.contains(k.as_str())) - .take(max_results) - { - println!(" {:.2} {}", score, key); - } - - Ok(()) -} - pub fn cmd_link(key: &[String]) -> Result<(), String> { if key.is_empty() { return Err("link requires a key".into()); } let key = key.join(" "); - let store = store::Store::load()?; - let resolved = store.resolve_key(&key)?; - let g = store.build_graph(); - println!("Neighbors of '{}':", resolved); - crate::query_parser::run_query(&store, &g, - &format!("neighbors('{}') | select strength,clustering_coefficient", resolved)) + let result = crate::mcp_server::memory_rpc( + "memory_links", + serde_json::json!({"key": key}), + ).map_err(|e| e.to_string())?; + print!("{}", result); + Ok(()) } pub fn cmd_link_add(source: &str, target: &str, _reason: &[String]) -> Result<(), String> { diff --git a/src/main.rs b/src/main.rs index e5dad7d..c93732e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -214,14 +214,6 @@ enum GraphCmd { /// Node key key: Vec, }, - /// Find related nodes via spreading activation from seed nodes - Spread { - /// Seed node keys - keys: Vec, - /// Maximum results (default: 20) - #[arg(short = 'n', default_value_t = 20)] - max_results: usize, - }, /// Add a link between two nodes #[command(name = "link-add")] LinkAdd { @@ -479,7 +471,6 @@ impl Run for GraphCmd { fn run(self) -> Result<(), String> { match self { Self::Link { key } => cli::graph::cmd_link(&key), - Self::Spread { keys, max_results } => cli::graph::cmd_spread(&keys, max_results), Self::LinkAdd { source, target, reason } => cli::graph::cmd_link_add(&source, &target, &reason), Self::LinkSet { source, target, strength }