#!/usr/bin/env bash set -e # Get the directory passed as argument (from #{pane_current_path}) dir="${1:-$HOME}" # Use the directory basename as window name window_name="$(basename "$dir")" session_name="agent" # Create the agent session if it doesn't exist if ! tmux has-session -t "$session_name" 2>/dev/null; then tmux new-session -ds "$session_name" -c "$dir" -n "$window_name" claude # Store the directory in a window option for later matching tmux set-window-option -t "$session_name" @agent_dir "$dir" tmux attach-session -t "$session_name" exit 0 fi # Search for an existing window with matching directory target_window="" while IFS=$'\t' read -r window_id window_dir; do if [ "$window_dir" = "$dir" ]; then target_window="$window_id" break fi done < <(tmux list-windows -t "$session_name" -F '#{window_id} #{@agent_dir}') if [ -n "$target_window" ]; then # Select the existing window tmux select-window -t "$target_window" else # Create a new window with claude tmux new-window -t "$session_name" -n "$window_name" -c "$dir" claude # Store the directory in a window option for later matching tmux set-window-option -t "$session_name" @agent_dir "$dir" fi # Attach to the session tmux attach-session -t "$session_name"