@@ -48,6 +48,8 @@ usage() {
4848 echo " restart Restart the agent"
4949 echo " status Show agent status"
5050 echo " logs Tail agent logs"
51+ echo " attach Attach to a tmux session (default: control-agent)"
52+ echo " sessions List agent tmux and pi sessions"
5153 echo " "
5254 echo -e " ${BOLD} Setup:${RESET} "
5355 echo " setup One-time system setup (user, deps, firewall, systemd)"
@@ -144,6 +146,78 @@ case "${1:-}" in
144146 fi
145147 ;;
146148
149+ sessions)
150+ shift
151+ AGENT_USER=" baudbot_agent"
152+ echo -e " ${BOLD} tmux sessions:${RESET} "
153+ if sudo -u " $AGENT_USER " tmux ls 2> /dev/null; then
154+ :
155+ else
156+ echo " (none)"
157+ fi
158+ echo " "
159+ echo -e " ${BOLD} pi sessions:${RESET} "
160+ PI_SESSIONS_DIR=" /home/$AGENT_USER /.pi/agent/sessions"
161+ if [ -d " $PI_SESSIONS_DIR " ]; then
162+ found=0
163+ for sess_dir in " $PI_SESSIONS_DIR " /* /; do
164+ [ -d " $sess_dir " ] || continue
165+ sess_id=$( basename " $sess_dir " )
166+ name=" "
167+ status=" unknown"
168+ # Check if control socket exists (session is live)
169+ if [ -e " $sess_dir /control.sock" ]; then
170+ status=" running"
171+ elif [ -f " $sess_dir /pid" ]; then
172+ pid=$( cat " $sess_dir /pid" 2> /dev/null || echo " " )
173+ if [ -n " $pid " ] && kill -0 " $pid " 2> /dev/null; then
174+ status=" running"
175+ else
176+ status=" stopped"
177+ fi
178+ else
179+ status=" stopped"
180+ fi
181+ # Try to read session name
182+ if [ -f " $sess_dir /name" ]; then
183+ name=$( cat " $sess_dir /name" 2> /dev/null || echo " " )
184+ fi
185+ if [ -n " $name " ]; then
186+ echo " $name ($sess_id ) [$status ]"
187+ else
188+ echo " $sess_id [$status ]"
189+ fi
190+ found=$(( found + 1 ))
191+ done
192+ if [ " $found " -eq 0 ]; then
193+ echo " (none)"
194+ fi
195+ else
196+ echo " (no sessions directory)"
197+ fi
198+ ;;
199+
200+ attach)
201+ shift
202+ AGENT_USER=" baudbot_agent"
203+ TARGET=" ${1:- } "
204+ if [ -z " $TARGET " ]; then
205+ # Default: attach to first available tmux session
206+ FIRST_SESSION=$( sudo -u " $AGENT_USER " tmux ls -F ' #{session_name}' 2> /dev/null | head -1)
207+ if [ -n " $FIRST_SESSION " ]; then
208+ TARGET=" $FIRST_SESSION "
209+ else
210+ echo " No tmux sessions running. Start the agent first:"
211+ echo " sudo baudbot start"
212+ exit 1
213+ fi
214+ fi
215+ echo " Attaching to tmux session: $TARGET "
216+ echo " Detach with: Ctrl+b, d"
217+ echo " "
218+ exec sudo -u " $AGENT_USER " tmux attach-session -t " $TARGET "
219+ ;;
220+
147221 setup)
148222 shift
149223 require_root " setup"
0 commit comments