Fix: usa printf invece di heredoc, estrae JSON con grep -E

This commit is contained in:
2026-05-30 23:32:05 +02:00
parent 370c2967f0
commit e50b1d8f89

View File

@@ -87,29 +87,24 @@ runs:
BODY="$(echo "${{ inputs.issue-body }}" | head -c 10000)"
[ "${#BODY}" -ge 10000 ] && BODY+=$'\n... (troncato)'
read -r -d '' PROMPT << 'PROMPT_EOF' || true
Sei un sistema di triage automatico per repository software.
Analizza la seguente issue e classificala con UNA delle label disponibili:
- "bug": malfunzionamento, errore, crash, anomalia, comportamento inaspettato
- "richiesta": nuova funzionalità, miglioramento, refactoring, ottimizzazione, o dubbio
Rispondi ESCLUSIVAMENTE con un JSON valido su una singola riga, senza nessun altro testo:
{"label":"bug","comment":"Breve analisi in italiano..."}
Titolo: ${{ inputs.issue-title }}
Corpo:
$BODY
PROMPT_EOF
printf -v PROMPT '%s\n\n%s\n\n%s\n\n%s\n\n%s\n\n%s\n\n%s: %s\n%s:\n%s' \
"Sei un sistema di triage automatico per repository software." \
"Analizza la seguente issue e classificala con UNA delle label disponibili:" \
'- "bug": malfunzionamento, errore, crash, anomalia, comportamento inaspettato' \
'- "richiesta": nuova funzionalità, miglioramento, refactoring, ottimizzazione, o dubbio' \
'Rispondi ESCLUSIVAMENTE con un JSON valido su una singola riga, senza nessun altro testo:' \
'{"label":"bug","comment":"Breve analisi in italiano..."}' \
"Titolo" "${{ inputs.issue-title }}" \
"Corpo" "$BODY"
OUTFILE="$GITHUB_WORKSPACE/opencode-triage.txt"
opencode run "$PROMPT" "${MODEL_ARG[@]}" --dangerously-skip-permissions 2>&1 | tee "$OUTFILE"
RESPONSE=$(cat "$OUTFILE")
# Estrai JSON dalla risposta; opencode produce JSON su una riga separata
JSON=$(echo "$RESPONSE" | jq -R 'fromjson? | select(.label and .comment)' 2>/dev/null | head -1)
# Estrai la riga JSON dalla risposta (salta banner ANSI)
JSON_LINE=$(grep -E '^\{"label":"(bug|richiesta)","comment":' "$OUTFILE" | head -1)
if [ -n "$JSON_LINE" ]; then
JSON=$(echo "$JSON_LINE" | jq -c . 2>/dev/null)
fi
if [ -z "$JSON" ] || ! echo "$JSON" | jq empty 2>/dev/null; then
echo "WARN: Impossibile estrarre JSON valido, default a richiesta"