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",