#!/usr/bin/env bash
# pre-compact-diary.sh: PostToolUse 훅
# Compact 도구 호출 감지 시 최소한의 자동 다이어리 엔트리를 생성한다.
# 저장 경로: /home/jay/.claude/memory/diary/YYYY-MM-DD-session-NN.md
#
# 기존 pre-compact-backup.sh와 독립적으로 동작 (충돌 없음)

# 실패해도 절대 훅을 차단하지 않음
trap 'exit 0' ERR
set +e

# stdin에서 JSON 읽기 (PostToolUse 훅 입력)
INPUT=$(cat)

# tool_name 추출
if command -v jq &>/dev/null; then
  TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name // ""' 2>/dev/null) || TOOL_NAME=""
else
  TOOL_NAME=$(echo "$INPUT" | grep -o '"tool_name":"[^"]*"' | head -1 | cut -d'"' -f4) || TOOL_NAME=""
fi

# Compact 관련 도구가 아니면 종료
case "$TOOL_NAME" in
  *[Cc]ompact*) ;;
  *) exit 0 ;;
esac

# 다이어리 디렉토리 설정
DIARY_DIR="/home/jay/.claude/memory/diary"
mkdir -p "$DIARY_DIR" 2>/dev/null || exit 0

# 오늘 날짜
TODAY=$(date +"%Y-%m-%d")

# 세션 번호 자동 증가 (같은 날짜 파일 확인)
EXISTING_COUNT=$(ls -1 "$DIARY_DIR"/${TODAY}-session-*.md 2>/dev/null | wc -l)
NEXT_N=$((EXISTING_COUNT + 1))
SESSION_NUM=$(printf "%02d" "$NEXT_N")

# 출력 파일 경로
DIARY_FILE="${DIARY_DIR}/${TODAY}-session-${SESSION_NUM}.md"

# cwd 추출 (team/task 힌트로 활용)
if command -v jq &>/dev/null; then
  CWD=$(echo "$INPUT" | jq -r '.cwd // "unknown"' 2>/dev/null) || CWD="unknown"
else
  CWD=$(echo "$INPUT" | grep -o '"cwd":"[^"]*"' | head -1 | cut -d'"' -f4) || CWD="unknown"
fi

# 현재 시각
NOW=$(date +"%Y-%m-%dT%H:%M:%S")

# 다이어리 엔트리 생성 (최소 메타데이터만 포함)
cat > "$DIARY_FILE" << EOF
---
date: "${TODAY}"
session: ${NEXT_N}
team_id: "unknown"
task_id: "unknown"
tags: [auto-compact, pre-compact]
auto_generated: true
generated_at: "${NOW}"
cwd: "${CWD}"
---
## 수행한 작업
- 컨텍스트 압축(Compact) 전 자동 저장된 엔트리

## 피드백 및 수정 지시
- (자동 생성 — 상세 내용 없음)

## 설계 결정 및 이유
- (자동 생성 — 상세 내용 없음)

## 실수 및 원인
- (자동 생성 — 상세 내용 없음)

## 반복 패턴
- (자동 생성 — 상세 내용 없음)
EOF

# stderr로 로그 출력 (디버깅용)
echo "pre-compact diary saved: ${DIARY_FILE}" >&2

exit 0
