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

# ────────────────────────────────────────────
# tail_logs.sh — ログリアルタイム監視
# ────────────────────────────────────────────

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LOG_DIR="$SCRIPT_DIR/logs"

CYAN='\033[0;36m'; YELLOW='\033[1;33m'; BOLD='\033[1m'; RESET='\033[0m'

TARGET="${1:-daemon}"

case "$TARGET" in
  daemon)
    FILE="$LOG_DIR/daemon.log"
    LABEL="daemon.log（標準ログ）"
    ;;
  tokens)
    FILE="$LOG_DIR/tokens.jsonl"
    LABEL="tokens.jsonl（トークン消費ログ）"
    ;;
  events)
    FILE="$LOG_DIR/events.jsonl"
    LABEL="events.jsonl（イベントログ）"
    ;;
  dry_run|dry-run)
    FILE="$LOG_DIR/dry_run.log"
    LABEL="dry_run.log（dry-runログ）"
    ;;
  *)
    echo -e "${YELLOW}使い方: ./tail_logs.sh [daemon|tokens|events|dry_run]${RESET}"
    echo ""
    echo "  daemon   — 標準ログ（デフォルト）"
    echo "  tokens   — トークン消費 JSONL（jq があれば整形）"
    echo "  events   — イベントログ JSONL（speak/silent/error）"
    echo "  dry_run  — dry-run モードのログ"
    exit 1
    ;;
esac

if [[ ! -f "$FILE" ]]; then
  echo -e "${YELLOW}⚠️  ファイルが存在しません: $FILE${RESET}"
  echo "Daemon を起動してからもう一度試してください。"
  exit 1
fi

echo -e "${BOLD}════ tail -f: $LABEL ════${RESET}"
echo -e "${CYAN}Ctrl+C で終了${RESET}"
echo ""

# JSONL ファイルは jq があれば整形
if [[ "$TARGET" == "tokens" || "$TARGET" == "events" ]] && command -v jq &>/dev/null; then
  tail -f "$FILE" | while IFS= read -r line; do
    echo "$line" | jq . 2>/dev/null || echo "$line"
  done
else
  tail -f "$FILE"
fi
