Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .github/llms.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Extension Pack for Java

Extension Pack for Java is a collection of popular extensions that can help write, test and debug Java applications in Visual Studio Code. By installing Extension Pack for Java, the following extensions are installed:

- [📦 Language Support for Java™ by Red Hat](https://marketplace.visualstudio.com/items?itemName=redhat.java)
- Code Navigation
- Auto Completion
- Refactoring
- Code Snippets
- [📦 Debugger for Java](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-debug)
- Debugging
- [📦 Test Runner for Java](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-test)
- Run & Debug JUnit/TestNG Test Cases
- [📦 Maven for Java](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-maven)
- Project Scaffolding
- Custom Goals
- [📦 Gradle for Java](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-gradle)
- View Gradle tasks and project dependencies
- Gradle file authoring
- Import Gradle projects via [Gradle Build Server](https://github.com/microsoft/build-server-for-gradle)
- [📦 Project Manager for Java](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-dependency)
- Manage Java projects, referenced libraries, resource files, packages, classes, and class members
- [📦 Visual Studio IntelliCode](https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode)
- AI-assisted development
- Completion list ranked by AI

## Label

When labeling an issue, follow the rules below per label category:

### General Rules

- Analyze if the issue is related with the scope of using extensions for Java development. If not, STOP labelling IMMEDIATELY.
- Assign label per category.
- If a category is not applicable or you're unsure, you may skip it.
- Do not assign multiple labels within the same category, unless explicitly allowed as an exception.

### Issue Type Labels

- [bug]: Primary label for real bug issues
- [enhancement]: Primary label for enhancement issues
- [documentation]: Primary label for documentation issues
- [question]: Primary label for question issues
123 changes: 123 additions & 0 deletions .github/workflows/triage-agent.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
name: AI Triage - Label and Comment on New Issues

on:
issues:
types: [opened]
workflow_dispatch:
inputs:
issue_number:
description: 'Issue number to triage (manual run). e.g. 123'
required: true

permissions:
issues: write
contents: read

jobs:
label_and_comment:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Get issue data
id: get_issue
uses: actions/github-script@v6
with:
script: |
const eventName = context.eventName;
let issue;
if (eventName === 'workflow_dispatch') {
const inputs = context.payload.inputs || {};
const issueNumber = inputs.issue_number || inputs.issueNumber;
if (!issueNumber) core.setFailed('Input issue_number is required for manual run.');
const { data } = await github.rest.issues.get({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: parseInt(issueNumber, 10),
});
issue = data;
} else if (context.payload.issue) {
issue = context.payload.issue;
} else {
core.setFailed('No issue information found in the event payload.');
}
core.setOutput('id', String(issue.number));
core.setOutput('user', String((issue.user && issue.user.login) || ''));
core.setOutput('title', String(issue.title || ''));
core.setOutput('body', String(issue.body || ''));
const labelNames = (issue.labels || []).map(label => label.name);
core.setOutput('labels', JSON.stringify(labelNames));

- name: Call Azure Function
id: call_azure_function
env:
PAYLOAD: >-
{
"authToken": "${{ secrets.GITHUB_TOKEN }}",
"repoId": "microsoft/vscode-java-debug",
"issueData": {
"id": ${{ steps.get_issue.outputs.id }},
"user": ${{ toJson(steps.get_issue.outputs.user) }},
"title": ${{ toJson(steps.get_issue.outputs.title) }},
"body": ${{ toJson(steps.get_issue.outputs.body) }},
"labels": ${{ steps.get_issue.outputs.labels }}
},
"mode": "DirectUpdate"
}

run: |
# Make the HTTP request with improved error handling and timeouts
echo "Making request to triage agent..."

# Add timeout handling and better error detection
set +e # Don't exit on curl failure
response=$(timeout ${{ vars.TRIAGE_AGENT_TIMEOUT }} curl \
--max-time 0 \
--connect-timeout 30 \
--fail-with-body \
--silent \
--show-error \
--write-out "HTTPSTATUS:%{http_code}" \
--header "Content-Type: application/json" \
--request POST \
--data "$PAYLOAD" \
${{ secrets.TRIAGE_FUNCTION_LINK }} 2>&1)

curl_exit_code=$?
set -e # Re-enable exit on error

echo "Curl exit code: $curl_exit_code"

# Check if curl command timed out or failed
if [ $curl_exit_code -eq 124 ]; then
echo "❌ Request timed out after 650 seconds"
exit 1
elif [ $curl_exit_code -ne 0 ]; then
echo "❌ Curl command failed with exit code: $curl_exit_code"
echo "Response: $response"
exit 1
fi

# Extract HTTP status code and response body
http_code=$(echo "$response" | grep -o "HTTPSTATUS:[0-9]*" | cut -d: -f2)
response_body=$(echo "$response" | sed 's/HTTPSTATUS:[0-9]*$//')

echo "HTTP Status Code: $http_code"

# Validate HTTP status code
if [ -z "$http_code" ]; then
echo "❌ Failed to extract HTTP status code from response"
echo "Raw response: $response"
exit 1
fi

# Check if the request was successful
if [ "$http_code" -ge 200 ] && [ "$http_code" -lt 300 ]; then
echo "✅ Azure Function call succeeded"
else
echo "❌ Azure Function call failed with status code: $http_code"
echo "Response: $response_body"
exit 1
fi
Loading