File tree Expand file tree Collapse file tree 2 files changed +17
-2
lines changed
Expand file tree Collapse file tree 2 files changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -279,8 +279,23 @@ if [ -n "$SQUISH_BIN" ]; then
279279 squish_stderr=$( cat /tmp/squish_stderr.txt 2> /dev/null)
280280 rm -f /tmp/squish_response.txt /tmp/squish_stderr.txt
281281
282- # Extract content field from JSON response with sed — no Python
283- commit_message=$( printf ' %s' " $raw_response " | sed ' s/.*"content":"\([^"]*\)".*/\1/' | sed ' s/^[[:space:]]*//;s/[[:space:]]*$//' )
282+ # Extract content from JSON robustly, then strip any CoT tags.
283+ # Prefer jq when available; keep a shell-only fallback.
284+ if command -v jq > /dev/null 2>&1 ; then
285+ commit_message=$( printf ' %s' " $raw_response " | jq -r ' .choices[0].message.content // .message.content // empty' 2> /dev/null)
286+ else
287+ commit_message=$( printf ' %s' " $raw_response " | sed -n ' s/.*"content":"\([^"]*\)".*/\1/p' )
288+ commit_message=${commit_message// \\ n/ $' \n ' }
289+ commit_message=${commit_message// \\ r/ $' \r ' }
290+ commit_message=${commit_message// \\ t/ $' \t ' }
291+ commit_message=${commit_message// \\\/ / \/ }
292+ commit_message=${commit_message// \\\" / \" }
293+ commit_message=${commit_message// \\ u003c/ <}
294+ commit_message=${commit_message// \\ u003e/ >}
295+ fi
296+
297+ # Remove <think>...</think> even when it spans multiple lines.
298+ commit_message=$( printf ' %s' " $commit_message " | perl -0777 -pe ' s#<think>.*?</think>\s*##gs' | sed ' s/^[[:space:]]*//;s/[[:space:]]*$//' )
284299
285300 print_info " squish exit code: ${CYAN} $exit_code ${NC} "
286301 if [ -n " $commit_message " ]; then
You can’t perform that action at this time.
0 commit comments