#!/usr/bin/env node /** * Stop Hook (Session End) - Persist learnings when session ends * * Cross-platform (Windows, macOS, Linux) * * Runs when Claude session ends. Creates/updates session log file * with timestamp for continuity tracking. */ const path = require('path'); const fs = require('fs'); const { getSessionsDir, getDateString, getTimeString, getSessionIdShort, ensureDir, writeFile, replaceInFile, log } = require('../lib/utils'); async function main() { const sessionsDir = getSessionsDir(); const today = getDateString(); const shortId = getSessionIdShort(); // Include session ID in filename for unique per-session tracking const sessionFile = path.join(sessionsDir, `${today}-${shortId}-session.tmp`); ensureDir(sessionsDir); const currentTime = getTimeString(); // If session file exists for today, update the end time if (fs.existsSync(sessionFile)) { const success = replaceInFile( sessionFile, /\*\*Last Updated:\*\*.*/, `**Last Updated:** ${currentTime}` ); if (success) { log(`[SessionEnd] Updated session file: ${sessionFile}`); } } else { // Create new session file with template const template = `# Session: ${today} **Date:** ${today} **Started:** ${currentTime} **Last Updated:** ${currentTime} --- ## Current State [Session context goes here] ### Completed - [ ] ### In Progress - [ ] ### Notes for Next Session - ### Context to Load \`\`\` [relevant files] \`\`\` `; writeFile(sessionFile, template); log(`[SessionEnd] Created session file: ${sessionFile}`); } process.exit(0); } main().catch(err => { console.error('[SessionEnd] Error:', err.message); process.exit(0); });