#!/usr/bin/env bash set -e script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Check which agent commands are available agents=() command -v claude &>/dev/null && agents+=(claude) command -v opencode &>/dev/null && agents+=(opencode) command -v gemini &>/dev/null && agents+=(gemini) if [ ${#agents[@]} -eq 0 ]; then echo "No agent commands found (claude, gemini)" exit 1 fi # Use the current directory (set via display-popup -d) dir="${PWD:-$HOME}" # Use the directory basename as window name window_name=$dir # Create the agent session if it doesn't exist if ! tmux has-session -t agent; then tmux new-session -ds agent -c "$dir" -n "$window_name" "$script_dir/agent-cmd.sh" "${agents[0]}" [ ${#agents[@]} -gt 1 ] && tmux split-window -h -t agent:0 "$script_dir/agent-cmd.sh" "${agents[1]}" # Store the directory in a window option for later matching tmux set-window-option -t agent @agent_dir "$dir" tmux set-option -t agent status off tmux set-option -t agent remain-on-exit on tmux attach-session -t agent exit 0 fi # Search for an existing window with matching directory target_window="" for window_id in $(tmux list-windows -t agent -F '#{window_id}'); do window_dir=$(tmux show-window-option -t "$window_id" -v @agent_dir 2>/dev/null || true) if [ "$window_dir" = "$dir" ]; then target_window="$window_id" break fi done if [ -n "$target_window" ]; then # Select the existing window tmux select-window -t "$target_window" else # Create a new window with agents tmux new-window -t agent -c "$dir" -n "$window_name" "$script_dir/agent-cmd.sh" "${agents[0]}" [ ${#agents[@]} -gt 1 ] && tmux split-window -h -t agent -c "$dir" "$script_dir/agent-cmd.sh" "${agents[1]}" # Store the directory in a window option for later matching tmux set-window-option -t agent @agent_dir "$dir" fi # Attach to the session tmux attach-session -t agent