43 lines
1.4 KiB
Bash
Executable File
43 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Hook: SessionEnd
|
|
#
|
|
# Fires when session actually terminates (after Stop).
|
|
# Last-chance capture: if on_stop.sh background REST call didn't complete,
|
|
# this fires a synchronous capture attempt.
|
|
#
|
|
# Input: JSON on stdin with session_id, transcript_path, cwd, reason
|
|
# Output: ignored (session is ending)
|
|
|
|
set -uo pipefail
|
|
|
|
if [ -n "${MEM0_DEBUG:-}" ]; then
|
|
mkdir -p "$HOME/.mem0" && exec 2>>"$HOME/.mem0/hooks.log"
|
|
fi
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
|
|
INPUT=$(cat)
|
|
REASON=$(echo "$INPUT" | jq -r '.reason // "other"' 2>/dev/null || echo "other")
|
|
SESSION_ID=$(echo "$INPUT" | jq -r '.session_id // ""' 2>/dev/null || echo "")
|
|
|
|
# Print session-end report (last chance — Stop hook output may not render on /exit)
|
|
REPORT=$(python3 "$SCRIPT_DIR/session_stats.py" report 2>/dev/null || echo "")
|
|
if [ -n "$REPORT" ] && [ "$REPORT" != "Session: no memory operations." ]; then
|
|
echo ""
|
|
echo "---"
|
|
echo "mem0 $REPORT"
|
|
echo "---"
|
|
|
|
# Append to persistent session log
|
|
mkdir -p "$HOME/.mem0" 2>/dev/null || true
|
|
echo "$(date -u +%Y-%m-%dT%H:%M:%SZ) | $REPORT" >> "$HOME/.mem0/session-log.md" 2>/dev/null || true
|
|
fi
|
|
|
|
# Telemetry (fire-and-forget — session dying, best-effort)
|
|
python3 "$SCRIPT_DIR/telemetry.py" session_end --reason="$REASON" 2>/dev/null &
|
|
|
|
# Clean up old capture markers (> 7 days)
|
|
find "$HOME/.mem0" -name ".captured_*" -mtime +7 -delete 2>/dev/null || true
|
|
|
|
exit 0
|