#!/bin/bash

# ==========================================
# AnyRouter 稳定性拨测脚本 (Monitor)
# ==========================================

# 1. 配置检测命令
# 假设你的命令是 'claude'，如果是 'claude-code' 或其他别名请修改此处
CLAUDE_CMD="claude"

# 2. 检测用的 Prompt
PROMPT="are you ok"

# 3. iTerm2 通知函数
# 参考: https://iterm2.com/documentation-escape-codes.html
function send_iterm_notification {
  local msg="$1"
  # \033]9; 是 iTerm2 发送通知的转义序列，\007 是结束符
  printf "\033]9;%s\007" "$msg"
}

# 4. 获取当前时间
function timestamp {
  date "+%Y-%m-%d %H:%M:%S"
}

echo "Starting monitoring for anyrouter.top via '$CLAUDE_CMD'..."
echo "Press [CTRL+C] to stop."
echo "--------------------------------------------------------"

while true; do
  CURRENT_TIME=$(timestamp)
  echo -n "[$CURRENT_TIME] Probing... "

  # 执行命令，捕获输出 (2>&1 将错误也捕获，防止刷屏)
  # 使用 timeout 防止卡死 (macOS 默认 coreutils 可能没有 timeout，这里用 perl 实现简单的超时保护)
  # 如果你安装了 gtimeout (brew install coreutils)，可以直接用: gtimeout 10s $CLAUDE_CMD ...

  # 这里直接执行，假设 claude 命令自身有超时机制或不会无限挂起
  RESPONSE=$($CLAUDE_CMD "$PROMPT" 2>&1)
  echo $RESPONSE
  EXIT_CODE=$?

  if [ $EXIT_CODE -eq 0 ]; then
    # 简单的关键字检查，防止 HTTP 200 但是内容是报错
    if [[ "$RESPONSE" == *"Error"* || "$RESPONSE" == *"Connection failed"* ]]; then
      echo -e "\033[0;31mFAILED (Content Error)\033[0m"
    else
      echo -e "\033[0;32mSUCCESS\033[0m"
      echo "   > Response: ${RESPONSE:0:50}..." # 只打印前50个字符

      # *** 发送 iTerm2 通知 ***
      send_iterm_notification "✅ AnyRouter Restore: Claude is responding!"
    fi
  else
    echo -e "\033[0;31mFAILED (Exit Code $EXIT_CODE)\033[0m"
    # 可选：失败时打印错误日志
    # echo "   > Error: $RESPONSE"
  fi

  # 等待 60 秒
  sleep 60
done
