diff --git a/data/scripts/o b/data/scripts/o index 4849abb..c765609 100755 --- a/data/scripts/o +++ b/data/scripts/o @@ -422,22 +422,29 @@ cmd_tui() { tmux set-option -t "$tmux_session" status-right "starting... | %H:%M" tmux set-option -t "$tmux_session" status-right-length 64 - # Subscribe to state events for this agent only - echo "session.${s}.agent.${a}.state" | ollie-9p rdwrs event 2>/dev/null | while read -r topic state; do - bg="" - case "$state" in - idle) bg="colour70" ;; - calling*) bg="colour214" ;; - thinking) bg="colour33" ;; - paused) bg="colour245" ;; - *) bg="default" ;; - esac - tmux set-option -t "$tmux_session" status-right-style "fg=default,bg=$bg" 2>/dev/null - status=$(ollie-9p read "${PREFIX}/status" 2>/dev/null | head -n1) - tmux set-option -t "$tmux_session" status-right "${status:-$state} | %H:%M" 2>/dev/null - done & - local bg_pid=$! - trap "kill $bg_pid 2>/dev/null" EXIT + # Get session and agent IDs for event subscription + local sess_id agent_id + sess_id=$(ollie-9p read "session/idx" 2>/dev/null | awk -F'\t' -v name="$s" '$2 == name { print $1; exit }') + agent_id=$(ollie-9p read "session/$s/agent/idx" 2>/dev/null | awk -F'\t' -v name="$a" '$3 == name { print $2; exit }') + + if [[ -n "$sess_id" && -n "$agent_id" ]]; then + # Subscribe to state events for this agent + echo "session.${sess_id}.agent.${agent_id}.state" | ollie-9p rdwrs event 2>/dev/null | while read -r topic state; do + bg="" + case "$state" in + idle) bg="colour70" ;; + calling*) bg="colour214" ;; + thinking) bg="colour33" ;; + paused) bg="colour245" ;; + *) bg="default" ;; + esac + tmux set-option -t "$tmux_session" status-right-style "fg=default,bg=$bg" 2>/dev/null + status=$(ollie-9p read "${PREFIX}/status" 2>/dev/null | head -n1) + tmux set-option -t "$tmux_session" status-right "${status:-$state} | %H:%M" 2>/dev/null + done & + local bg_pid=$! + trap "kill $bg_pid 2>/dev/null" EXIT + fi tmux select-pane -t "${tmux_session}:0.1" exec tmux attach -t "$tmux_session"