mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-02-02 04:33:08 +08:00
- Add session ID to session filenames (Issue #62) - Add getSessionIdShort() helper for unique per-session tracking - Add async hooks documentation with example - Create iterative-retrieval skill for progressive context refinement - Add continuous-learning-v2 skill with instinct-based learning - Add ecc.tools ecosystem section to README - Update skills list in README All 67 tests passing.
86 lines
1.7 KiB
JavaScript
86 lines
1.7 KiB
JavaScript
#!/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,
|
|
readFile,
|
|
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);
|
|
});
|