#!/usr/bin/env bash # Manually control the durable NestQuest development cycle from OpenCode. set -euo pipefail if [[ $# -ne 1 ]]; then echo "usage: nq-cycle start|stop|status" >&2 exit 64 fi unit=nestquest-controller.service controller=/home/overseer/.local/share/nestquest-controller/scripts/nq-controller show_status() { systemctl --user show "$unit" -p ActiveState -p SubState -p UnitFileState if [[ -f /home/overseer/.local/state/nestquest-controller/last-run.json ]]; then python3 -c 'import json,pathlib; p=pathlib.Path.home()/".local/state/nestquest-controller/last-run.json"; d=json.loads(p.read_text()); print("LastTickState="+str(d.get("state","unknown"))); print("LastTickTime="+str(d.get("time","unknown")))' fi } case "$1" in start) systemctl --user start "$unit" show_status if session_status=$("$controller" --check-interactive); then echo "$session_status" if [[ "$session_status" == "interactive NestQuest session open" ]]; then echo "Close the interactive NestQuest OpenCode session to let the controller run its first tick." fi else echo "The controller will wait for OpenCode session detection to recover." fi ;; stop) systemctl --user stop "$unit" show_status ;; status) show_status ;; *) echo "usage: nq-cycle start|stop|status" >&2 exit 64 ;; esac