#!/usr/bin/env bash
# skill-usage-logger.sh: Claude Code PostToolUse hook
# Skill 도구 호출 시 skill-usage.jsonl에 자동 기록

# 실패해도 절대 훅을 차단하지 않음 (exit 0 보장)
trap 'exit 0' ERR

# stdout/stderr 리다이렉션 차단 방지
set +e

# stdin에서 JSON 읽기
INPUT=$(cat)

# tool_name 확인 (Skill 도구가 아니면 종료)
if command -v jq &>/dev/null; then
  TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name // "unknown"' 2>/dev/null) || TOOL_NAME="unknown"
else
  TOOL_NAME=$(echo "$INPUT" | grep -o '"tool_name":"[^"]*"' | head -1 | cut -d'"' -f4) || TOOL_NAME="unknown"
fi

if [[ "$TOOL_NAME" != "Skill" ]]; then
  exit 0
fi

# 필드 추출
if command -v jq &>/dev/null; then
  SKILL_ID=$(echo "$INPUT" | jq -r '.tool_input.skill // ""' 2>/dev/null) || SKILL_ID=""
  CWD=$(echo "$INPUT" | jq -r '.cwd // "unknown"' 2>/dev/null) || CWD="unknown"
  SESSION_ID=$(echo "$INPUT" | jq -r '.session_id // "unknown"' 2>/dev/null) || SESSION_ID="unknown"
else
  # jq 없을 때 grep 폴백
  SKILL_ID=$(echo "$INPUT" | grep -o '"skill":"[^"]*"' | head -1 | cut -d'"' -f4) || SKILL_ID=""
  CWD=$(echo "$INPUT" | grep -o '"cwd":"[^"]*"' | head -1 | cut -d'"' -f4) || CWD="unknown"
  SESSION_ID=$(echo "$INPUT" | grep -o '"session_id":"[^"]*"' | head -1 | cut -d'"' -f4) || SESSION_ID="unknown"
fi

# SKILL_ID가 비어 있으면 종료
if [[ -z "$SKILL_ID" ]]; then
  exit 0
fi

# 봇 식별 (BOT_ID 설정)
if [[ -f "/home/jay/.claude/hooks/lib/detect-bot.sh" ]]; then
  source /home/jay/.claude/hooks/lib/detect-bot.sh "$CWD"
else
  BOT_ID="unknown"
fi

# BOT_ID → team_id 매핑 (동적)
if [[ "$BOT_ID" == "anu" ]]; then
    TEAM_ID="anu-system"
elif [[ "$BOT_ID" == dev* ]]; then
    # dev1 → dev1-team, dev2 → dev2-team, ... (dev4~dev8 포함 자동 처리)
    TEAM_ID="${BOT_ID}-team"
else
    TEAM_ID="unknown"
fi

# 타임스탬프 (ISO 8601)
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%S")

# 출력 경로 결정: 테스트 시 SKILL_USAGE_JSONL_OVERRIDE 환경변수로 오버라이드 가능
if [[ -n "${SKILL_USAGE_JSONL_OVERRIDE:-}" ]]; then
  JSONL_PATH="$SKILL_USAGE_JSONL_OVERRIDE"
else
  JSONL_PATH="/home/jay/workspace/dashboard/data/skill-usage.jsonl"
fi

# 디렉토리 없으면 생성
mkdir -p "$(dirname "$JSONL_PATH")" 2>/dev/null || true

# JSONL 레코드 append
printf '{"skill_id":"%s","team_id":"%s","task_id":"","session_type":"hook","timestamp":"%s"}\n' \
  "$SKILL_ID" "$TEAM_ID" "$TIMESTAMP" >> "$JSONL_PATH" 2>/dev/null || true

exit 0
