* fix(#1772): read full multi-line command in graphify-update hook Gate 2 The PostToolUse hook joined tool_name + newline + tool_input.command and extracted the command with sed -n '2p' — line 2 only. Agent runtimes (Claude Code's Bash tool among them) routinely emit HEAD-advancing commits as multi-line scripts ('cd /path', then 'git add', then 'git commit …'), so line 2 is the 'cd', Gate 2's *"git commit"* match failed, and the rebuild silently no-op'd on real commits despite graphify.auto_update: true. Capture line 2 through EOF (sed -n '2,$p') so the case glob sees the full multi-line command string. Single-line behavior is unchanged (the match only widens); non-HEAD-advancing multi-line commands still no-op cleanly. Regression tests cover multi-line commit/merge/pull dispatch plus a multi-line no-op no-regression guard. * docs(#1772): add changeset fragment for graphify-update multi-line fix * test(#1772): regenerate golden-install-parity fixtures for hook change gsd-graphify-update.sh ships to 9 graphify-aware runtimes; widening the sed range (2p -> 2,$p) shifts its shipped hash. Recapture the 9 affected fixtures via UPDATE_GOLDEN=1 — each changes exactly one line (the hook hash).
This commit is contained in:
@@ -45,7 +45,13 @@ process.stdin.on("end", () => {
|
||||
});
|
||||
' 2>/dev/null || printf '\n')
|
||||
TOOL_NAME=$(printf '%s\n' "$TOOL_INFO" | sed -n '1p')
|
||||
COMMAND=$(printf '%s\n' "$TOOL_INFO" | sed -n '2p')
|
||||
# Capture the FULL command (line 2 through EOF). Agent runtimes routinely emit
|
||||
# HEAD-advancing commits as multi-line scripts (`cd /path` then `git add` then
|
||||
# `git commit …`); reading only line 2 (`sed -n '2p'`) missed a `git commit`
|
||||
# that was not on the first command line and silently no-op'd the rebuild
|
||||
# (#1772). Line 2..EOF preserves embedded newlines; the `case` glob below
|
||||
# matches the substring anywhere in the multi-line string.
|
||||
COMMAND=$(printf '%s\n' "$TOOL_INFO" | sed -n '2,$p')
|
||||
|
||||
[ "$TOOL_NAME" = "Bash" ] || exit 0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user