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

@@ -156,11 +156,12 @@ function getAvailablePackageManagers() {
* 5. Global user preference (in ~/.claude/package-manager.json)
* 6. Default to npm (no child processes spawned)
*
* @param {object} options - { projectDir, fallbackOrder }
* @param {object} options - Options
* @param {string} options.projectDir - Project directory to detect from (default: cwd)
* @returns {object} - { name, config, source }
*/
function getPackageManager(options = {}) {
const { projectDir = process.cwd(), fallbackOrder = DETECTION_PRIORITY } = options;
const { projectDir = process.cwd() } = options;
// 1. Check environment variable
const envPm = process.env.CLAUDE_PACKAGE_MANAGER;