271c7c23c5
- Remove all background REST API transcript dumps (on_pre_compact.py, capture_compact_summary.py, on_pre_commit.py calls) that were creating noisy session_state and commit_context memories automatically - Rewrite pre-compaction prompt to extract individual durable facts (decisions, learnings, anti-patterns) instead of session summary blobs - Agent now decides what to store, matching openclaw's triage pattern: "Most sessions produce zero memory operations. That is correct." - Fix auto_import.py to search git repo root for CLAUDE.md/AGENTS.md (was only searching plugin cwd, missing files in parent directory) - Fix health check session tracker to check stats file directly instead of depending on CLAUDE_PLUGIN_ROOT env var - Fix session-end report to print in SessionEnd hook (Stop hook output doesn't render on /exit) - Update v2 API endpoint to v3 in git commit capture search - Keep auto_import.py as only direct REST write path (project profiles, idempotent, hash-gated)
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
|