#!/usr/bin/env bash
set -euo pipefail

SESSION_NAME="${PI_TELEGRAM_SESSION_NAME:-pi-telegram}"
PI_BIN="${PI_TELEGRAM_PI_BIN:-$HOME/.npm-global/bin/pi}"
CWD="${PI_TELEGRAM_CWD:-$HOME}"
AGENT_DIR="${PI_TELEGRAM_AGENT_DIR:-$HOME/pi-config}"
CHECK_INTERVAL="${PI_TELEGRAM_CHECK_INTERVAL_SECONDS:-2}"
SESSION_FILE_STATE="${PI_TELEGRAM_SESSION_FILE_STATE:-$HOME/.pi/agent/pi-telegram-session-path}"
TMUX_BIN="$(command -v tmux)"

if [[ ! -x "$PI_BIN" ]]; then
  echo "pi binary not executable: $PI_BIN" >&2
  exit 1
fi

start_session() {
  "$TMUX_BIN" has-session -t "$SESSION_NAME" 2>/dev/null && return 0
  local session_arg=""
  if [[ -f "$SESSION_FILE_STATE" ]]; then
    local requested_session
    requested_session="$(tr -d '\r' < "$SESSION_FILE_STATE")"
    if [[ -n "$requested_session" && -f "$requested_session" ]]; then
      session_arg="--session '$requested_session'"
    else
      rm -f "$SESSION_FILE_STATE"
    fi
  fi
  "$TMUX_BIN" new-session -d -s "$SESSION_NAME" \
    "cd '$CWD' && env TERM=tmux-256color COLORTERM=truecolor TERM_PROGRAM= PI_CODING_AGENT_DIR='$AGENT_DIR' '$PI_BIN' $session_arg"
}

start_session
while true; do
  start_session
  sleep "$CHECK_INTERVAL"
done
