diff --git a/.github/workflows/auto-triage.yml b/.github/workflows/auto-triage.yml new file mode 100644 index 00000000000..3cde3fb9446 --- /dev/null +++ b/.github/workflows/auto-triage.yml @@ -0,0 +1,115 @@ +name: Auto Triage + +on: + issues: + types: [opened] + pull_request: + types: [opened] + +jobs: + triage: + runs-on: ubuntu-latest + # Skip bot-created issues/PRs + if: | + (github.event_name == 'issues' && github.event.issue.user.type != 'Bot') || + (github.event_name == 'pull_request' && github.event.pull_request.user.type != 'Bot') + permissions: + contents: read + issues: write + pull-requests: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Install Kilo Code CLI + run: npm install -g @kilocode/cli + + - name: Triage + env: + KILO_PROVIDER_TYPE: kilocode + KILOCODE_TOKEN: ${{ secrets.KILOCODE_TOKEN }} + KILOCODE_MODEL: claude-haiku-4-5 + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + KILO_AUTO_APPROVAL_ENABLED: "true" + KILO_AUTO_APPROVAL_EXECUTE_ENABLED: "true" + KILO_AUTO_APPROVAL_EXECUTE_ALLOWED: "gh issue edit,gh pr edit" + KILO_AUTO_APPROVAL_EXECUTE_DENIED: "gh issue close,gh issue delete,gh issue transfer,gh issue lock,gh issue unlock,gh pr close,gh pr merge,gh repo,gh auth,gh secret,gh variable,rm,sudo,curl,wget,bash,sh,python,node,npm,npx" + KILO_TELEMETRY: "false" + # Determine event type and extract data + EVENT_TYPE: ${{ github.event_name }} + ITEM_NUMBER: ${{ github.event_name == 'issues' && github.event.issue.number || github.event.pull_request.number }} + ITEM_TITLE: ${{ github.event_name == 'issues' && github.event.issue.title || github.event.pull_request.title }} + ITEM_BODY: ${{ github.event_name == 'issues' && github.event.issue.body || github.event.pull_request.body }} + run: | + # Sanitize body - remove shell metacharacters + SAFE_BODY=$(echo "$ITEM_BODY" | head -c 2000 | tr -d '`$(){}[]|;&<>\\' | tr '\n' ' ') + + # Determine gh command based on event type + if [ "$EVENT_TYPE" = "issues" ]; then + GH_CMD="gh issue edit" + ITEM_TYPE="issue" + else + GH_CMD="gh pr edit" + ITEM_TYPE="pull request" + fi + + kilocode --auto "Triage this GitHub ${ITEM_TYPE}: + + Number: ${ITEM_NUMBER} + Title: ${ITEM_TITLE} + Body: ${SAFE_BODY} + + ## Your Task + Add appropriate labels to this ${ITEM_TYPE}. + + ## Command Format + Use ONLY: ${GH_CMD} ${ITEM_NUMBER} --add-label \"