BurningTimesAi/scripts/live_inject.sh

57 lines
1.8 KiB
Bash
Raw Permalink Normal View History

#!/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
feat(BT·신설): 조직 신설 Phase 1 — git 저장소 교체 + 중앙 저장소 A안 분리 PD님 2026-04-21 직접 지시 5개 중 1·2·4 이행. ## 집행 내역 1. git remote: NerdNavisAi.git → BurningTimesAi.git 교체 (BT main + 본 worktree) - E:/NerdNavisAi 레포 원격은 원상 유지 (실측 확인) 2. 중앙 저장소 A안 분리: ~/.claude/burningtimes-{live,memory,audit}/ - nerdnavis-* 중앙 저장소에서 cp -r 복사 (원본 미변경) - .junction-marker 내용 BT로 갱신 3. 본 worktree .live junction 재연결 → burningtimes-live 4. audit junction 3종 신설: .burningtimes_{auditor_calls,warning_ignored,bypass_log} 5. scripts·setup 28파일 하드코딩 일괄 치환 (nerdnavis/NerdNavis/너드나비스/NERDNAVIS → burningtimes/BurningTimes/BURNINGTIMES) 6. paths.local.json.template BT 전용 재작성 (Unity·Framework 경로 __TBD__ placeholder) 7. .gitignore: .live.bak_*/ 패턴 추가 ## 보류 항목 (PD 재논의 예정) - 3. memory/org/ 내용 초기화 (PD 지시) - 5. Unity 프로젝트 경로 (PD 신규 경로 제공 전까지) - SKILL.md·CLAUDE.md 조직명 전환 및 P17·P29 처리 - 프로젝트/수상한잡화점/ 등 수상한잡화점 관련 일괄 정리 - 코어코드/NerdNavis.Framework/ → BT-프레임워크 이름 전환 - 공유/조직공지/ 너드나비스 맥락 공지 처리 - .claude/agents/*.md frontmatter skills 참조명 ## 감사 pm-auditor 사전 감사 통과 (Critical 0건, Major 2건 commit 전 정정 완료). 매니페스트: bt-org-split-phase1 (C35-9 PreToolUse 차단 해제). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 15:14:51 +00:00
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