mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-02-15 02:43:20 +08:00
- evaluate-session.js: || 10 → ?? 10 for min_session_length (0 is valid) - pre-compact.js: *.tmp → *-session.tmp to match only session files - 11 new tests: config loading (min=0, null, custom path, invalid JSON), session-end update path (timestamp, template replace, preserve content), pre-compact glob specificity, extractSessionSummary edge cases
49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* PreCompact Hook - Save state before context compaction
|
|
*
|
|
* Cross-platform (Windows, macOS, Linux)
|
|
*
|
|
* Runs before Claude compacts context, giving you a chance to
|
|
* preserve important state that might get lost in summarization.
|
|
*/
|
|
|
|
const path = require('path');
|
|
const {
|
|
getSessionsDir,
|
|
getDateTimeString,
|
|
getTimeString,
|
|
findFiles,
|
|
ensureDir,
|
|
appendFile,
|
|
log
|
|
} = require('../lib/utils');
|
|
|
|
async function main() {
|
|
const sessionsDir = getSessionsDir();
|
|
const compactionLog = path.join(sessionsDir, 'compaction-log.txt');
|
|
|
|
ensureDir(sessionsDir);
|
|
|
|
// Log compaction event with timestamp
|
|
const timestamp = getDateTimeString();
|
|
appendFile(compactionLog, `[${timestamp}] Context compaction triggered\n`);
|
|
|
|
// If there's an active session file, note the compaction
|
|
const sessions = findFiles(sessionsDir, '*-session.tmp');
|
|
|
|
if (sessions.length > 0) {
|
|
const activeSession = sessions[0].path;
|
|
const timeStr = getTimeString();
|
|
appendFile(activeSession, `\n---\n**[Compaction occurred at ${timeStr}]** - Context was summarized\n`);
|
|
}
|
|
|
|
log('[PreCompact] State saved before compaction');
|
|
process.exit(0);
|
|
}
|
|
|
|
main().catch(err => {
|
|
console.error('[PreCompact] Error:', err.message);
|
|
process.exit(0);
|
|
});
|