diff --git a/.github/workflows/ai-review.yml b/.github/workflows/ai-review.yml index 9e0a7f53..cb017413 100644 --- a/.github/workflows/ai-review.yml +++ b/.github/workflows/ai-review.yml @@ -21,9 +21,10 @@ on: required: true type: string -# Cancel in-progress runs for same PR (safe now since auto-trigger is only on opened) +# Cancel in-progress runs for same PR + event type (prevents self-cancellation from bot comments) +# Each event type gets its own concurrency group to prevent cross-event cancellation concurrency: - group: ai-review-${{ github.event.pull_request.number || github.event.issue.number || github.event.inputs.pr_number }} + group: ai-review-${{ github.event_name }}-${{ github.event.pull_request.number || github.event.issue.number || github.event.inputs.pr_number }} cancel-in-progress: true jobs: @@ -38,14 +39,16 @@ jobs: # Conditions: # - PR event: only on opened (not synchronize to avoid cancel-on-push) - # - Comment event: only if it's a PR, contains /review, and NOT from a bot + # - Comment event: only if it's a PR, contains /review, NOT from a bot, and NOT from our review bot + # The explicit bot name check prevents self-triggering from progress comments if: > github.event_name == 'pull_request_target' || github.event_name == 'workflow_dispatch' || (github.event_name == 'issue_comment' && github.event.issue.pull_request && contains(github.event.comment.body, '/review') && - github.event.comment.user.type != 'Bot') + github.event.comment.user.type != 'Bot' && + github.event.comment.user.login != 'ccs-agy-reviewer[bot]') # CLIProxy environment for model routing env: diff --git a/package.json b/package.json index 2a5f67a2..904fd62e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kaitranntt/ccs", - "version": "7.18.0-dev.5", + "version": "7.18.0-dev.6", "description": "Claude Code Switch - Instant profile switching between Claude Sonnet 4.5 and GLM 4.6", "keywords": [ "cli",