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

@ -331,15 +331,24 @@ pub async fn run(
let _ = ui_tx.send(UiMessage::Info(format!("DMN: {:?} ({}/{})", s.dmn, s.dmn_turns, s.max_dmn_turns)));
}
"/sleep" => {
shared_mind.lock().unwrap().dmn_sleep();
let mut s = shared_mind.lock().unwrap();
s.dmn = crate::mind::dmn::State::Resting { since: std::time::Instant::now() };
s.dmn_turns = 0;
let _ = ui_tx.send(UiMessage::Info("DMN sleeping.".into()));
}
"/wake" => {
shared_mind.lock().unwrap().dmn_wake();
let mut s = shared_mind.lock().unwrap();
if matches!(s.dmn, crate::mind::dmn::State::Off) {
crate::mind::dmn::set_off(false);
}
s.dmn = crate::mind::dmn::State::Foraging;
s.dmn_turns = 0;
let _ = ui_tx.send(UiMessage::Info("DMN foraging.".into()));
}
"/pause" => {
shared_mind.lock().unwrap().dmn_pause();
let mut s = shared_mind.lock().unwrap();
s.dmn = crate::mind::dmn::State::Paused;
s.dmn_turns = 0;
let _ = ui_tx.send(UiMessage::Info("DMN paused.".into()));
}
"/score" => { let _ = mind_tx.send(MindCommand::Score); }
@ -379,7 +388,29 @@ pub async fn run(
HotkeyAction::KillProcess => cmd_kill_processes(&agent, &ui_tx).await,
HotkeyAction::Interrupt => { let _ = mind_tx.send(MindCommand::Interrupt); }
HotkeyAction::CycleAutonomy => {
let label = shared_mind.lock().unwrap().cycle_autonomy();
let mut s = shared_mind.lock().unwrap();
let label = match &s.dmn {
crate::mind::dmn::State::Engaged | crate::mind::dmn::State::Working | crate::mind::dmn::State::Foraging => {
s.dmn = crate::mind::dmn::State::Resting { since: std::time::Instant::now() };
"resting"
}
crate::mind::dmn::State::Resting { .. } => {
s.dmn = crate::mind::dmn::State::Paused;
"PAUSED"
}
crate::mind::dmn::State::Paused => {
crate::mind::dmn::set_off(true);
s.dmn = crate::mind::dmn::State::Off;
"OFF (persists across restarts)"
}
crate::mind::dmn::State::Off => {
crate::mind::dmn::set_off(false);
s.dmn = crate::mind::dmn::State::Foraging;
"foraging"
}
};
s.dmn_turns = 0;
drop(s);
let _ = ui_tx.send(UiMessage::Info(format!("DMN → {} (Ctrl+P to cycle)", label)));
}
HotkeyAction::AdjustSampling(param, delta) => cmd_adjust_sampling(&agent, param, delta),