From 7e852a5dc57778d06d8632ea22782ce627a491dc Mon Sep 17 00:00:00 2001 From: Affaan Mustafa Date: Thu, 12 Feb 2026 13:43:53 -0800 Subject: [PATCH] fix: remove dead export, harden session-aliases, sync .cursor scripts - Remove duplicate getAliasesPath() from utils.js (only used in session-aliases.js which has its own copy) - session-aliases.js: validate cleanupAliases param is a function, check saveAliases return value, guard resolveAlias against empty input - Sync .cursor/skills/strategic-compact/suggest-compact.sh with the fixed main version (CLAUDE_SESSION_ID instead of $$) --- .cursor/skills/strategic-compact/suggest-compact.sh | 4 +++- scripts/lib/session-aliases.js | 10 ++++++++-- scripts/lib/utils.js | 8 -------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.cursor/skills/strategic-compact/suggest-compact.sh b/.cursor/skills/strategic-compact/suggest-compact.sh index ea14920..38f5aa9 100755 --- a/.cursor/skills/strategic-compact/suggest-compact.sh +++ b/.cursor/skills/strategic-compact/suggest-compact.sh @@ -28,7 +28,9 @@ # - Plan has been finalized # Track tool call count (increment in a temp file) -COUNTER_FILE="/tmp/claude-tool-count-$$" +# Use CLAUDE_SESSION_ID for session-specific counter (not $$ which changes per invocation) +SESSION_ID="${CLAUDE_SESSION_ID:-${PPID:-default}}" +COUNTER_FILE="/tmp/claude-tool-count-${SESSION_ID}" THRESHOLD=${COMPACT_THRESHOLD:-50} # Initialize or increment counter diff --git a/scripts/lib/session-aliases.js b/scripts/lib/session-aliases.js index f6172e2..af721bb 100644 --- a/scripts/lib/session-aliases.js +++ b/scripts/lib/session-aliases.js @@ -154,6 +154,8 @@ function saveAliases(aliases) { * @returns {object|null} Alias data or null if not found */ function resolveAlias(alias) { + if (!alias) return null; + // Validate alias name (alphanumeric, dash, underscore) if (!/^[a-zA-Z0-9_-]+$/.test(alias)) { return null; @@ -399,6 +401,10 @@ function getAliasesForSession(sessionPath) { * @returns {object} Cleanup result */ function cleanupAliases(sessionExists) { + if (typeof sessionExists !== 'function') { + return { totalChecked: 0, removed: 0, removedAliases: [], error: 'sessionExists must be a function' }; + } + const data = loadAliases(); const removed = []; @@ -409,8 +415,8 @@ function cleanupAliases(sessionExists) { } } - if (removed.length > 0) { - saveAliases(data); + if (removed.length > 0 && !saveAliases(data)) { + log('[Aliases] Failed to save after cleanup'); } return { diff --git a/scripts/lib/utils.js b/scripts/lib/utils.js index 3cc9dc4..39954f6 100644 --- a/scripts/lib/utils.js +++ b/scripts/lib/utils.js @@ -34,13 +34,6 @@ function getSessionsDir() { return path.join(getClaudeDir(), 'sessions'); } -/** - * Get the session aliases file path - */ -function getAliasesPath() { - return path.join(getClaudeDir(), 'session-aliases.json'); -} - /** * Get the learned skills directory */ @@ -447,7 +440,6 @@ module.exports = { getHomeDir, getClaudeDir, getSessionsDir, - getAliasesPath, getLearnedSkillsDir, getTempDir, ensureDir,