mirror of
https://github.com/zhom/donutbrowser.git
synced 2026-04-23 12:26:17 +02:00
174 lines
6.5 KiB
YAML
174 lines
6.5 KiB
YAML
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@d645f067d89ee1d5d736a5990e327e504d1c5a4a # v1.1.0
|
|
with:
|
|
prompt-file: issue_analysis.txt
|
|
system-prompt: |
|
|
You are an issue validation assistant for Donut Browser, an browser orchestrator.
|
|
|
|
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
|