From 271e09adccf0fb7e6f5e7ee09975a2b7297a4bf3 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sat, 11 Apr 2026 20:53:29 -0400 Subject: [PATCH] fix: run_one_agent uses memory tools as base, not filter When def.tools was non-empty, it was filtering to ONLY those tools instead of using memory tools as base + adding extras. This broke digest agent (and any agent with explicit tools list) by removing all 13 base memory tools. Fixed to match the pattern in unconscious.rs: - base = memory_tools() - extras from journal_tools() if listed in def.tools Co-Authored-By: Proof of Concept --- src/agent/oneshot.rs | 19 +++++++++++++------ src/subconscious/agents/journal.agent | 2 +- .../agents/subconscious-journal.agent | 2 +- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/agent/oneshot.rs b/src/agent/oneshot.rs index 9a2fed9..8f4fd3d 100644 --- a/src/agent/oneshot.rs +++ b/src/agent/oneshot.rs @@ -307,14 +307,21 @@ pub fn run_one_agent( defs::run_agent(store, &def, effective_count, &Default::default())? }; - // Filter tools based on agent def, add filesystem output tool - let all_tools = super::tools::memory_and_journal_tools(); + // Base memory tools + extras from agent def (matching unconscious.rs pattern) + let base_tools = super::tools::memory::memory_tools().to_vec(); + let extra_tools = super::tools::memory::journal_tools().to_vec(); let mut effective_tools: Vec = if def.tools.is_empty() { - all_tools.to_vec() + let mut all = base_tools; + all.extend(extra_tools); + all } else { - all_tools.into_iter() - .filter(|t| def.tools.iter().any(|w| w == &t.name)) - .collect() + let mut tools = base_tools; + for name in &def.tools { + if let Some(t) = extra_tools.iter().find(|t| t.name == *name) { + tools.push(t.clone()); + } + } + tools }; effective_tools.push(super::tools::Tool { name: "output", diff --git a/src/subconscious/agents/journal.agent b/src/subconscious/agents/journal.agent index 9181344..8bbdf66 100644 --- a/src/subconscious/agents/journal.agent +++ b/src/subconscious/agents/journal.agent @@ -1,4 +1,4 @@ -{"agent":"journal","query":"","count":1,"tools":["journal_tail","journal_new","journal_update","memory_link_add","memory_search","memory_render","memory_used","memory_query"]} +{"agent":"journal","query":"","count":1,"tools":["journal_tail","journal_new","journal_update"]} You are {assistant_name}'s episodic memory. Your job is to witness. diff --git a/src/subconscious/agents/subconscious-journal.agent b/src/subconscious/agents/subconscious-journal.agent index 26d79e0..5cb28d9 100644 --- a/src/subconscious/agents/subconscious-journal.agent +++ b/src/subconscious/agents/subconscious-journal.agent @@ -1,4 +1,4 @@ -{"agent":"subconscious-journal","count":1,"tools":["journal_tail","journal_new","journal_update","memory_link_add","memory_search","memory_render","memory_used","memory_query"]} +{"agent":"subconscious-journal","count":1,"tools":["journal_tail","journal_new","journal_update"]} You are {assistant_name}'s episodic memory. Your job is to witness.