#!/usr/bin/env bash
# logs.sh — sigue los logs de agentes (logs/<agent>/YYYY-MM-DD.jsonl)
#
# Uso:
#   ./dev-scripts/server/logs.sh                 # tail -f de todos los agentes (hoy)
#   ./dev-scripts/server/logs.sh assistant-bot   # tail -f de un agente específico
#   ./dev-scripts/server/logs.sh assistant-bot 100  # últimas 100 líneas

source "$(dirname "$0")/../_common.sh"

LOG_DIR="logs"
AGENT_ID="${1:-}"
LINES="${2:-50}"

if [[ ! -d "$LOG_DIR" ]]; then
  fail "No hay logs todavía — inicia el launcher primero"
fi

TODAY="$(date -u +%Y-%m-%d)"

if [[ -n "$AGENT_ID" ]]; then
  # Logs de un agente específico
  LOG_FILE="$LOG_DIR/$AGENT_ID/$TODAY.jsonl"
  if [[ ! -f "$LOG_FILE" ]]; then
    # Try to find the latest log file for this agent
    LATEST="$(ls -t "$LOG_DIR/$AGENT_ID/"*.jsonl 2>/dev/null | head -1)"
    if [[ -z "$LATEST" ]]; then
      fail "No hay logs para $AGENT_ID"
    fi
    LOG_FILE="$LATEST"
  fi
  info "Siguiendo logs: $LOG_FILE"
  dim "  Ctrl+C para salir"
  echo ""
  tail -n "$LINES" -f "$LOG_FILE"
else
  # Logs de todos los agentes (archivos de hoy)
  FILES=$(find "$LOG_DIR" -name "$TODAY.jsonl" 2>/dev/null)
  if [[ -z "$FILES" ]]; then
    # Fallback: latest file from each agent
    FILES=""
    for d in "$LOG_DIR"/*/; do
      LATEST="$(ls -t "$d"*.jsonl 2>/dev/null | head -1)"
      [[ -n "$LATEST" ]] && FILES="$FILES $LATEST"
    done
  fi
  if [[ -z "$FILES" ]]; then
    fail "No hay logs todavía — inicia el launcher primero"
  fi
  info "Siguiendo logs de todos los agentes (hoy: $TODAY)"
  dim "  Ctrl+C para salir"
  echo ""
  # shellcheck disable=SC2086
  tail -n "$LINES" -f $FILES
fi
