48 lines
1.4 KiB
Bash
48 lines
1.4 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# SessionStart hook — .claude/live/ 전량 로드 (세션 시작 시)
|
||
|
|
# 세션 시작 시점에 모든 live 더미 파일을 읽어서 컨텍스트에 주입
|
||
|
|
# 증분 카운터도 리셋하여 다음 턴부터 증분 추적 시작
|
||
|
|
|
||
|
|
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
||
|
|
[ -z "$REPO_ROOT" ] && exit 0
|
||
|
|
|
||
|
|
LIVE_DIR="$REPO_ROOT/.claude/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"
|
||
|
|
fi
|
||
|
|
|
||
|
|
exit 0
|