fix: improve error handling, fix bugs, and optimize core libraries

utils.js:
- Fix countInFile: enforce global flag on regex to prevent silent
  under-counting (match() without /g returns only first match)
- Add 5s timeout to readStdinJson to prevent hooks hanging forever
- Handle EEXIST race condition in ensureDir
- Pre-compile regex patterns in getGitModifiedFiles to avoid N*M
  compilations and catch invalid patterns before filtering
- Add JSDoc documentation to all improved functions

session-manager.js:
- Fix getSessionById triple file read: pass pre-read content to
  getSessionStats instead of re-reading from disk
- Allow getSessionStats to accept content string directly

session-aliases.js:
- Wrap temp file cleanup in try/catch to prevent cascading errors

check-console-log.js:
- Refactor to use shared utils (isGitRepo, getGitModifiedFiles, log)
  instead of raw execSync calls
- Add exclusion patterns for test files, config files, and scripts/
  where console.log is intentional

session-end.js:
- Log count of skipped unparseable transcript lines for diagnostics

suggest-compact.js:
- Guard against NaN from corrupted counter files

package-manager.js:
- Remove dead fallbackOrder parameter (unused after #162 fix)
This commit is contained in:
Affaan Mustafa
2026-02-12 07:06:53 -08:00
parent b2285e870a
commit 18c5a76a96
7 changed files with 134 additions and 54 deletions

View File

@@ -23,9 +23,9 @@ const {
async function main() {
// Track tool call count (increment in a temp file)
// Use a session-specific counter file based on PID from parent process
// or session ID from environment
const sessionId = process.env.CLAUDE_SESSION_ID || process.ppid || 'default';
// Use a session-specific counter file based on session ID from environment
// or parent PID as fallback
const sessionId = process.env.CLAUDE_SESSION_ID || String(process.ppid) || 'default';
const counterFile = path.join(getTempDir(), `claude-tool-count-${sessionId}`);
const threshold = parseInt(process.env.COMPACT_THRESHOLD || '50', 10);
@@ -34,7 +34,9 @@ async function main() {
// Read existing count or start at 1
const existing = readFile(counterFile);
if (existing) {
count = parseInt(existing.trim(), 10) + 1;
const parsed = parseInt(existing.trim(), 10);
// Guard against NaN from corrupted counter file
count = Number.isFinite(parsed) ? parsed + 1 : 1;
}
// Save updated count