BurningTimesAi/scripts/live_session_load.sh

64 lines
2.0 KiB
Bash
Raw Normal View History

#!/bin/bash
# SessionStart 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/.nerdnavis_throttle"
mkdir -p "$THROTTLE_DIR" 2>/dev/null
OUTPUT=""
TOTAL_CHARS=0
MAX_CHARS=8000
FILE_COUNT=0
for LIVE_FILE in "$LIVE_DIR"/*.md "$LIVE_DIR"/*.json; do
[ ! -f "$LIVE_FILE" ] && continue
BASENAME=$(basename "$LIVE_FILE")
[ "$BASENAME" = "README.md" ] && continue
CONTENT=$(head -c $MAX_CHARS "$LIVE_FILE" 2>/dev/null)
CHARS=${#CONTENT}
if [ "$CHARS" -gt 0 ] && [ $((TOTAL_CHARS + CHARS)) -lt $MAX_CHARS ]; then
OUTPUT="$OUTPUT
[LIVE:$BASENAME]
$CONTENT
"
TOTAL_CHARS=$((TOTAL_CHARS + CHARS + 30))
FILE_COUNT=$((FILE_COUNT + 1))
# 증분 카운터를 현재 줄 수로 설정 (다음 턴부터 증분 추적)
FILE_HASH=$(echo "$LIVE_FILE" | sha1sum 2>/dev/null | cut -d' ' -f1)
TOTAL_LINES=$(wc -l < "$LIVE_FILE" 2>/dev/null || echo 0)
echo "$TOTAL_LINES" > "$THROTTLE_DIR/live_lastline_$FILE_HASH"
fi
done
if [ "$FILE_COUNT" -gt 0 ]; then
echo "📝 [Live 세션 로드] ${FILE_COUNT}개 더미 파일:$OUTPUT"
# 원본이 새로 로드되었으므로 더미 파일 자동 비우기 (README.md 제외)
CLEANED=0
for LIVE_FILE in "$LIVE_DIR"/*.md "$LIVE_DIR"/*.json; do
[ ! -f "$LIVE_FILE" ] && continue
BASENAME=$(basename "$LIVE_FILE")
[ "$BASENAME" = "README.md" ] && continue
rm -f "$LIVE_FILE" 2>/dev/null && CLEANED=$((CLEANED + 1))
done
# 증분 카운터도 정리
rm -f "$THROTTLE_DIR"/live_lastline_* 2>/dev/null
if [ "$CLEANED" -gt 0 ]; then
echo "🧹 [Live 정리] ${CLEANED}개 더미 파일 자동 삭제 완료 (원본 로드됨)"
fi
fi
exit 0