diff --git a/src/mind/unconscious.rs b/src/mind/unconscious.rs index 82e8128..1799100 100644 --- a/src/mind/unconscious.rs +++ b/src/mind/unconscious.rs @@ -102,11 +102,15 @@ impl Unconscious { } /// Toggle an agent on/off by name. Returns new enabled state. + /// If enabling, immediately spawns the agent if it's not running. pub fn toggle(&mut self, name: &str) -> Option { - let agent = self.agents.iter_mut().find(|a| a.name == name)?; - agent.enabled = !agent.enabled; - let new_state = agent.enabled; + let idx = self.agents.iter().position(|a| a.name == name)?; + self.agents[idx].enabled = !self.agents[idx].enabled; + let new_state = self.agents[idx].enabled; self.save_enabled(); + if new_state && !self.agents[idx].is_running() { + self.spawn_agent(idx); + } Some(new_state) }