From a08f521b0260e6a395cfadc2a7b34185012dae97 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Mon, 13 Apr 2026 01:54:22 -0400 Subject: [PATCH] defs.rs: convert run_agent query to use RPC Uses memory_rpc("memory_query", ...) instead of direct search::run_query. Removes now-unused crate::search import. Co-Authored-By: Proof of Concept --- src/subconscious/defs.rs | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/subconscious/defs.rs b/src/subconscious/defs.rs index 4b8aa96..1dce9ac 100644 --- a/src/subconscious/defs.rs +++ b/src/subconscious/defs.rs @@ -16,7 +16,6 @@ use crate::graph::Graph; use crate::neuro::{consolidation_priority, ReplayItem}; -use crate::search; use crate::store::Store; use serde::Deserialize; @@ -620,19 +619,21 @@ pub fn run_agent( ) -> Result { let graph = store.build_graph(); - // Run the query if present + // Run the query if present, via RPC let keys = if !def.query.is_empty() { - let mut stages = crate::query_parser::parse_stages(&def.query)?; - let has_limit = stages.iter().any(|s| - matches!(s, search::Stage::Transform(search::Transform::Limit(_)))); - if !has_limit { - // Request extra results to compensate for exclusion filtering - let padded = count + exclude.len().min(100); - stages.push(search::Stage::Transform(search::Transform::Limit(padded))); - } - let results = search::run_query(&stages, vec![], &graph, store, false, count + exclude.len().min(100)); - let filtered: Vec = results.into_iter() - .map(|(k, _)| k) + let padded = count + exclude.len().min(100); + let query = if def.query.contains("limit:") { + def.query.clone() + } else { + format!("{} | limit:{}", def.query, padded) + }; + let result = crate::mcp_server::memory_rpc( + "memory_query", + serde_json::json!({"query": query}), + ).map_err(|e| e.to_string())?; + let filtered: Vec = result.lines() + .filter(|l| !l.is_empty() && *l != "no results") + .map(|s| s.to_string()) .filter(|k| !exclude.contains(k)) .take(count) .collect();