From e50b1d8f898b215928707900e5c24af96cbb577e Mon Sep 17 00:00:00 2001 From: alberto Date: Sat, 30 May 2026 23:32:05 +0200 Subject: [PATCH] Fix: usa printf invece di heredoc, estrae JSON con grep -E --- triage-issue/action.yml | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/triage-issue/action.yml b/triage-issue/action.yml index a6bf667..06893e2 100644 --- a/triage-issue/action.yml +++ b/triage-issue/action.yml @@ -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"