From 7511937e820aaee7d516dfb4dc8a132205295bd6 Mon Sep 17 00:00:00 2001 From: BaaRai <130491490+BaaRai@users.noreply.github.com> Date: Sat, 10 Oct 2026 18:46:31 +0200 Subject: [PATCH] Bot: label maintainer-opened issues, silently Closes #15. Issues opened by the maintainer now go through the same classification and label application but without the triage comment or reaction. Visitors keep the full behavior; mentions and PR first-looks stay maintainer-off. --- .github/scripts/bot.sh | 11 +++++++++-- .github/workflows/bot.yml | 11 +++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/.github/scripts/bot.sh b/.github/scripts/bot.sh index 27e33e7..4c1a988 100644 --- a/.github/scripts/bot.sh +++ b/.github/scripts/bot.sh @@ -100,8 +100,10 @@ case "$event_name" in number=$(jq -r '.issue.number' <<<"$ev") title=$(jq -r '.issue.title' <<<"$ev") body=$(jq -r '.issue.body // ""' <<<"$ev") - if already_triaged "$number"; then log "issue #$number already triaged"; exit 0; fi - eyes "$number" + maintainer_opened=false + [ "$GITHUB_ACTOR" = "BaaRai" ] && maintainer_opened=true + if [ "$maintainer_opened" = false ] && already_triaged "$number"; then log "issue #$number already triaged"; exit 0; fi + [ "$maintainer_opened" = false ] && eyes "$number" answer=$(ask_model \ 'You are the triage bot of an open-source Go + Next.js repository (an autonomous penetration testing agent system; AGPL-3.0). Classify this report as bug, question, or feature request. If it is a question, answer it concisely using the repository file list as context. If it is a bug report, say what reproduction steps or version information are missing. If it is a feature request, restate it in one sentence. Maximum 180 words, plain markdown, reply in the language of the report, no heading. End your reply with one final line of the exact form "LABELS: x, y" choosing only from: bug, question, feature, and for bugs a priority: P1 (security impact or data loss), P2 (core functionality broken), P3 (minor or cosmetic); omit the priority for questions and features; use "LABELS: none" if nothing fits.' \ "Issue title: $title @@ -115,6 +117,11 @@ $(repo_context)") clean_text=$(split_labels <<<"$answer") reply_labels=$(tail -1 /tmp/bot-labels-line 2>/dev/null) [ -z "$reply_labels" ] && reply_labels="none" + if [ "$maintainer_opened" = true ]; then + log "maintainer issue #$number: labels only, staying silent" + apply_labels "$number" "$reply_labels" + exit 0 + fi post_comment "$number" "$clean_text" apply_labels "$number" "$reply_labels" ;; diff --git a/.github/workflows/bot.yml b/.github/workflows/bot.yml index 9853b0e..95723d3 100644 --- a/.github/workflows/bot.yml +++ b/.github/workflows/bot.yml @@ -15,11 +15,14 @@ permissions: jobs: reply: - # Serves visitors only: never react to the maintainer, to bots, or to itself. + # Issue opening is always handled (the maintainer gets silent labeling, + # visitors get the full triage). Comments and PRs serve visitors only: + # never react to the maintainer, to bots, or to itself. if: > - github.actor != 'BaaRai' && - github.actor != 'github-actions[bot]' && - github.actor != 'dependabot[bot]' + github.event_name == 'issues' || + (github.actor != 'BaaRai' && + github.actor != 'github-actions[bot]' && + github.actor != 'dependabot[bot]') runs-on: ubuntu-latest steps: - uses: actions/checkout@v4