diff --git a/scripts/suggest-optimize.sh b/scripts/suggest-optimize.sh index bb8bcba..e063d43 100755 --- a/scripts/suggest-optimize.sh +++ b/scripts/suggest-optimize.sh @@ -39,6 +39,15 @@ TRANSCRIPT_PATH=$(echo "$INPUT" | jq -r '.transcript_path // empty' 2>/dev/null if [ -z "$TRANSCRIPT_PATH" ] || [ ! -f "$TRANSCRIPT_PATH" ]; then exit 0 fi +TRANSCRIPT_DIR=$(dirname "$TRANSCRIPT_PATH") + +# --- Cheap gate: skip if HEAD hasn't changed since last check --- +CURRENT_HEAD=$(git rev-parse HEAD 2>/dev/null) || exit 0 +LAST_HEAD_FILE="$TRANSCRIPT_DIR/codeflash-last-head" +if [ -f "$LAST_HEAD_FILE" ] && [ "$(cat "$LAST_HEAD_FILE")" = "$CURRENT_HEAD" ]; then + exit 0 +fi +echo "$CURRENT_HEAD" > "$LAST_HEAD_FILE" # Get the transcript file's creation (birth) time as the session start timestamp. # This predates any commits Claude could have made in this session. @@ -79,8 +88,6 @@ if echo "$CHANGED_COMMITS" | grep -qE '\.(js|ts|jsx|tsx)$'; then fi # Dedup: don't trigger twice for the same set of changes across sessions. -# Use the project directory from transcript_path for state storage. -TRANSCRIPT_DIR=$(dirname "$TRANSCRIPT_PATH") SEEN_MARKER="$TRANSCRIPT_DIR/codeflash-seen" COMMIT_HASH=$(git log --after="@$SESSION_START" --pretty=format:%H -- '*.py' '*.js' '*.ts' '*.jsx' '*.tsx' 2>/dev/null | shasum -a 256 | cut -d' ' -f1)