name: Issue Validation on: issues: types: [opened] permissions: issues: write models: read jobs: validate-issue: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #v4.2.2 - name: Get issue templates id: get-templates run: | # Read the issue templates if [ -f ".github/ISSUE_TEMPLATE/01-bug-report.md" ]; then echo "bug-template-exists=true" >> $GITHUB_OUTPUT fi if [ -f ".github/ISSUE_TEMPLATE/02-feature-request.md" ]; then echo "feature-template-exists=true" >> $GITHUB_OUTPUT fi - name: Create issue analysis prompt id: create-prompt env: ISSUE_TITLE: ${{ github.event.issue.title }} ISSUE_BODY: ${{ github.event.issue.body }} ISSUE_LABELS: ${{ join(github.event.issue.labels.*.name, ', ') }} run: | cat > issue_analysis.txt << EOF ## Issue Content to Analyze: **Title:** $ISSUE_TITLE **Body:** $ISSUE_BODY **Labels:** $ISSUE_LABELS EOF - name: Validate issue with AI id: validate uses: actions/ai-inference@9693b137b6566bb66055a713613bf4f0493701eb # v1.2.3 with: prompt-file: issue_analysis.txt system-prompt: | You are an issue validation assistant for Donut Browser, an anti-detect browser. Analyze the provided issue content and determine if it contains sufficient information based on these requirements: **For Bug Reports, the issue should include:** 1. Clear description of the problem 2. Steps to reproduce the issue (numbered list preferred) 3. Expected vs actual behavior 4. Environment information (OS, browser version, etc.) 5. Error messages, stack traces, or screenshots if applicable **For Feature Requests, the issue should include:** 1. Clear description of the requested feature 2. Use case or problem it solves 3. Proposed solution or how it should work 4. Priority level or importance **General Requirements for all issues:** 1. Descriptive title 2. Sufficient detail to understand and act upon 3. Professional tone and clear communication Respond in JSON format with the following structure: ```json { "is_valid": true|false, "issue_type": "bug_report"|"feature_request"|"other", "missing_info": [ "List of missing required information" ], "suggestions": [ "Specific suggestions for improvement" ], "overall_assessment": "Brief assessment of the issue quality" } ``` Be constructive and helpful in your feedback. If the issue is incomplete, provide specific guidance on what's needed. model: gpt-4o - name: Parse validation result and take action env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | # Get the AI response VALIDATION_RESULT='${{ steps.validate.outputs.response }}' # Extract JSON from the response (handle potential markdown formatting) JSON_RESULT=$(echo "$VALIDATION_RESULT" | sed -n '/```json/,/```/p' | sed '1d;$d' || echo "$VALIDATION_RESULT") # Parse JSON fields IS_VALID=$(echo "$JSON_RESULT" | jq -r '.is_valid // false') ISSUE_TYPE=$(echo "$JSON_RESULT" | jq -r '.issue_type // "other"') MISSING_INFO=$(echo "$JSON_RESULT" | jq -r '.missing_info[]? // empty' | sed 's/^/- /') SUGGESTIONS=$(echo "$JSON_RESULT" | jq -r '.suggestions[]? // empty' | sed 's/^/- /') ASSESSMENT=$(echo "$JSON_RESULT" | jq -r '.overall_assessment // "No assessment provided"') echo "Issue validation result: $IS_VALID" echo "Issue type: $ISSUE_TYPE" if [ "$IS_VALID" = "false" ]; then # Create a comment asking for more information cat > comment.md << EOF ## 🤖 Issue Validation Thank you for submitting this issue! However, it appears that some required information might be missing to help us better understand and address your concern. **Issue Type Detected:** \`$ISSUE_TYPE\` **Assessment:** $ASSESSMENT ### 📋 Missing Information: $MISSING_INFO ### 💡 Suggestions for Improvement: $SUGGESTIONS ### 📝 How to Provide Additional Information: Please edit your original issue description to include the missing information. Here are our issue templates for reference: - **Bug Report Template:** [View Template](.github/ISSUE_TEMPLATE/01-bug-report.md) - **Feature Request Template:** [View Template](.github/ISSUE_TEMPLATE/02-feature-request.md) ### 🔧 Quick Tips: - For **bug reports**: Include step-by-step reproduction instructions, your environment details, and any error messages - For **feature requests**: Describe the use case, expected behavior, and why this feature would be valuable - Add **screenshots** or **logs** when applicable Once you've updated the issue with the missing information, feel free to remove this comment or reply to let us know you've made the updates. --- *This validation was performed automatically to ensure we have all the information needed to help you effectively.* EOF # Post the comment gh issue comment ${{ github.event.issue.number }} --body-file comment.md # Add a label to indicate validation needed gh issue edit ${{ github.event.issue.number }} --add-label "needs-info" echo "✅ Validation comment posted and 'needs-info' label added" else echo "✅ Issue contains sufficient information" # Add appropriate labels based on issue type case "$ISSUE_TYPE" in "bug_report") gh issue edit ${{ github.event.issue.number }} --add-label "bug" ;; "feature_request") gh issue edit ${{ github.event.issue.number }} --add-label "enhancement" ;; esac fi - name: Cleanup run: | rm -f issue_analysis.txt comment.md