mind: remove DMN helper methods, inline field assignments

dmn_sleep/dmn_wake/dmn_pause/cycle_autonomy were just setting two
fields each. Inline the assignments at call sites. cycle_autonomy
moves to event_loop since it's UI state machine logic (deciding
which label to show).

Co-Authored-By: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
Kent Overstreet 2026-04-05 03:46:29 -04:00
parent 556a56035b
commit 84fe757260
2 changed files with 41 additions and 46 deletions

View file

@ -19,7 +19,7 @@ pub mod log;
use anyhow::Result;
use std::sync::Arc;
use std::time::{Duration, Instant};
use std::time::Instant;
use tokio::sync::{mpsc, Mutex};
use crate::agent::{Agent, TurnResult};
@ -158,44 +158,6 @@ impl MindState {
MindCommand::Turn(prompt, StreamTarget::Autonomous)
}
pub fn dmn_sleep(&mut self) {
self.dmn = dmn::State::Resting { since: Instant::now() };
self.dmn_turns = 0;
}
pub fn dmn_wake(&mut self) {
if matches!(self.dmn, dmn::State::Off) {
dmn::set_off(false);
}
self.dmn = dmn::State::Foraging;
self.dmn_turns = 0;
}
pub fn dmn_pause(&mut self) {
self.dmn = dmn::State::Paused;
self.dmn_turns = 0;
}
pub fn cycle_autonomy(&mut self) -> &'static str {
let (new_state, label) = match &self.dmn {
dmn::State::Engaged | dmn::State::Working | dmn::State::Foraging => {
(dmn::State::Resting { since: Instant::now() }, "resting")
}
dmn::State::Resting { .. } => (dmn::State::Paused, "PAUSED"),
dmn::State::Paused => {
dmn::set_off(true);
(dmn::State::Off, "OFF (persists across restarts)")
}
dmn::State::Off => {
dmn::set_off(false);
(dmn::State::Foraging, "foraging")
}
};
self.dmn = new_state;
self.dmn_turns = 0;
label
}
pub fn interrupt(&mut self) {
self.input.clear();
self.dmn = dmn::State::Resting { since: Instant::now() };
@ -265,7 +227,11 @@ impl Mind {
let _ = self.turn_watch.send(false);
}
MindCommand::NewSession => {
self.shared.lock().unwrap().dmn_sleep();
{
let mut s = self.shared.lock().unwrap();
s.dmn = dmn::State::Resting { since: Instant::now() };
s.dmn_turns = 0;
}
let new_log = log::ConversationLog::new(
self.config.session_dir.join("conversation.jsonl"),
).ok();
@ -323,8 +289,6 @@ impl Mind {
});
}
pub async fn shutdown(&mut self) {
if let Some(handle) = self.turn_handle.take() { handle.abort(); }
}