#!/bin/bash
# Jarvis Session End Hook — 会話内容をMD保存 + AI要約（バックグラウンド）
# 2026-05-04 軽量保存即時 + AI要約後付け版

set +e

# PATH明示
export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:$HOME/.local/bin:$PATH"

# パス設定
WORKSPACE="/Users/rk/Library/CloudStorage/GoogleDrive-ritsuha1021@gmail.com/マイドライブ/起業フォルダー"
HISTORY_DIR="$WORKSPACE/会話履歴"
LOG_FILE="$HISTORY_DIR/.hook.log"
PROJECT_DIR="$HOME/.claude/projects/-Users-rk-Library-CloudStorage-GoogleDrive-ritsuha1021-gmail-com---------------"

mkdir -p "$HISTORY_DIR"

# === Dashboard mirror を最初に実行(session log有無に依存しない) ===
MIRROR_DST="/Users/rk/jarvis-dashboard-root"
MIRROR_LOG="$HOME/.local/jarvis/mirror.log"
if [ -d "$MIRROR_DST" ]; then
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] mirror start" >> "$MIRROR_LOG"
  cp "$WORKSPACE/司令塔/MEMO.md" "$MIRROR_DST/MEMO.md" 2>> "$MIRROR_LOG"
  cp "$WORKSPACE/司令塔/REMINDER.md" "$MIRROR_DST/REMINDER.md" 2>> "$MIRROR_LOG"
  # 分割part も全ミラー(globで将来part自動対応・2026-06-14 dashboard part2欠落事故対策)
  for p in "$WORKSPACE"/司令塔/REMINDER_part*.md "$WORKSPACE"/司令塔/MEMO_part*.md; do [ -f "$p" ] && cp "$p" "$MIRROR_DST/" 2>> "$MIRROR_LOG"; done
  for d in "事業案" "news-calendar" "clone-jarvis" "auditor" "倫翔" "暦"; do
    if [ -d "$WORKSPACE/$d" ]; then
      rsync -a --delete --exclude='.DS_Store' --exclude='node_modules' --exclude='*.bak_*' \
        "$WORKSPACE/$d/" "$MIRROR_DST/$d/" >> "$MIRROR_LOG" 2>&1
      echo "[$(date '+%Y-%m-%d %H:%M:%S')] rsync $d exit=$?" >> "$MIRROR_LOG"
    fi
  done
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] mirror done" >> "$MIRROR_LOG"
fi

# 直近セッションログ取得 (jsonlが6000+で ls -t *.jsonl は引数長エラー → find使用)
LATEST_LOG=$(find "$PROJECT_DIR" -maxdepth 1 -name "*.jsonl" -type f -print0 2>/dev/null | xargs -0 stat -f "%m %N" 2>/dev/null | sort -rn | head -1 | cut -d' ' -f2-)
if [ -z "$LATEST_LOG" ] || [ ! -f "$LATEST_LOG" ]; then
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] No session log found (mirror was executed)" >> "$LOG_FILE"
  exit 0
fi

SESSION_ID=$(basename "$LATEST_LOG" .jsonl | cut -c1-8)
TODAY=$(date +%Y-%m-%d)
HISTORY_FILE="$HISTORY_DIR/${TODAY}_${SESSION_ID}.md"

echo "[$(date '+%Y-%m-%d %H:%M:%S')] Converting: $SESSION_ID -> $HISTORY_FILE" >> "$LOG_FILE"

# === メタ情報（数値だけ。主題は誤解を招くので載せない）===
TURN_COUNT=$(jq -r '
  select(.type == "user") |
  (if (.message.content | type) == "string" then .message.content
   elif (.message.content | type) == "array" then [.message.content[] | select(.type == "text") | .text] | join("")
   else "" end) as $t |
  select($t != "") |
  select($t | startswith("<system-reminder>") | not) |
  select($t | startswith("<command-") | not) |
  "x"
' "$LATEST_LOG" 2>/dev/null | wc -l | tr -d ' ')

START_TIME=$(jq -r 'select(.timestamp != null) | .timestamp' "$LATEST_LOG" 2>/dev/null | head -1)
END_TIME=$(jq -r 'select(.timestamp != null) | .timestamp' "$LATEST_LOG" 2>/dev/null | tail -1)
LINE_COUNT=$(wc -l < "$LATEST_LOG" | tr -d ' ')

# === MD生成（即時・軽量）===
{
  echo "# 会話履歴 ${TODAY} / セッション ${SESSION_ID}"
  echo ""
  echo "## 🤖 AI要約"
  echo ""
  echo "*無効化済 (2026-05-05・claude -p再帰暴走対策)。要約が必要な時は外部Pythonデーモン経由で別途生成する。*"
  echo ""
  echo "## 📊 メタ情報"
  echo ""
  echo "- **user発言数**: ${TURN_COUNT} 回"
  echo "- **ログ規模**: ${LINE_COUNT} 行"
  echo "- **開始**: ${START_TIME:-不明}"
  echo "- **終了**: ${END_TIME:-不明}"
  echo "- **元ログ**: \`${LATEST_LOG}\`"
  echo "- **保存日時**: $(date '+%Y-%m-%d %H:%M:%S')"
  echo ""
  echo "---"
  echo ""
  echo "## 💬 全文ログ"
  echo ""

  jq -r '
    select(.type == "user" or .type == "assistant") |
    if .type == "user" then
      (
        if (.message.content | type) == "string" then
          .message.content
        elif (.message.content | type) == "array" then
          [.message.content[] | select(.type == "text") | .text] | join("\n")
        else
          ""
        end
      ) as $text |
      if ($text | length) > 0 and ($text | startswith("<system-reminder>") | not) and ($text | startswith("<command-") | not) then
        "### 🟦 User\n\n" + $text + "\n\n---\n"
      else empty
      end
    elif .type == "assistant" then
      (
        if (.message.content | type) == "array" then
          [.message.content[] | select(.type == "text") | .text] | join("\n")
        else
          ""
        end
      ) as $text |
      if ($text | length) > 0 then
        "### 🟧 Assistant\n\n" + $text + "\n\n---\n"
      else empty
      end
    else empty
    end
  ' "$LATEST_LOG" 2>> "$LOG_FILE"

} > "$HISTORY_FILE" 2>> "$LOG_FILE"

SIZE=$(wc -c < "$HISTORY_FILE" 2>/dev/null | tr -d ' ')
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Saved: $HISTORY_FILE (${SIZE} bytes)" >> "$LOG_FILE"

# === AI要約は無効化(2026-05-05) ===
# 旧: nohup "$WORKSPACE/clone-jarvis/jarvis/ai_summary.sh" ... &
# 理由: claude -p の SessionEnd が stop_hook.sh を再呼び出し → 無限自己増殖
# 23時台3121件発火・.hook.log 398MB暴走で確定。代替は外部Pythonデーモン経路(別件Phase 1で再構築)

echo "[$(date '+%Y-%m-%d %H:%M:%S')] Hook completed (AI summary disabled)" >> "$LOG_FILE"
exit 0
