#!/bin/bash
# UserPromptSubmit hook — .claude/live/ 증분 읽기 + 컨텍스트 주입
# 세션 중 반영 불가 파일의 변경분을 실시간 주입
# 증분 방식: 마지막 읽은 줄 이후 추가분만 출력

REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0

LIVE_DIR="$REPO_ROOT/.live"
[ ! -d "$LIVE_DIR" ] && exit 0

THROTTLE_DIR="$HOME/.claude/.burningtimes_throttle"
mkdir -p "$THROTTLE_DIR" 2>/dev/null

OUTPUT=""
TOTAL_CHARS=0
MAX_CHARS=8000  # 10,000자 한도에서 기존 hook 여유분 확보

for LIVE_FILE in "$LIVE_DIR"/*.md "$LIVE_DIR"/*.json; do
  [ ! -f "$LIVE_FILE" ] && continue
  BASENAME=$(basename "$LIVE_FILE")
  [ "$BASENAME" = "README.md" ] && continue  # README는 스킵

  # 파일별 마지막 읽은 줄 번호 추적
  FILE_HASH=$(echo "$LIVE_FILE" | sha1sum 2>/dev/null | cut -d' ' -f1)
  LAST_LINE_FILE="$THROTTLE_DIR/live_lastline_$FILE_HASH"
  LAST_LINE=$(cat "$LAST_LINE_FILE" 2>/dev/null || echo 0)
  TOTAL_LINES=$(wc -l < "$LIVE_FILE" 2>/dev/null || echo 0)

  # 새 줄이 추가된 경우에만 출력
  if [ "$TOTAL_LINES" -gt "$LAST_LINE" ]; then
    NEW_CONTENT=$(tail -n +$((LAST_LINE + 1)) "$LIVE_FILE" 2>/dev/null)
    NEW_CHARS=${#NEW_CONTENT}

    # 한도 체크
    if [ $((TOTAL_CHARS + NEW_CHARS)) -lt $MAX_CHARS ]; then
      OUTPUT="$OUTPUT
[LIVE:$BASENAME] 변경분 (${LAST_LINE}줄 이후):
$NEW_CONTENT
"
      TOTAL_CHARS=$((TOTAL_CHARS + NEW_CHARS + 50))  # 헤더 여유
      echo "$TOTAL_LINES" > "$LAST_LINE_FILE"
    else
      OUTPUT="$OUTPUT
[LIVE:$BASENAME] ⚠️ 증분 크기 초과 — Read 도구로 직접 확인 필요
"
    fi
  fi
done

# 출력이 있을 때만 주입
if [ -n "$OUTPUT" ] && [ "$TOTAL_CHARS" -gt 0 ]; then
  echo "📝 [Live 증분 동기화]$OUTPUT"
fi

exit 0
