name: Claude Code

on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
  pull_request_review:
    types: [submitted]
  pull_request:
    types: [assigned, opened]

jobs:
  claude:
    if: |
      (
        github.event_name == 'pull_request' &&
        github.event.action == 'assigned' &&
        github.event.assignee.login == 'claude-code[bot]'
      ) ||
      (
        github.event.sender.type == 'User' &&
        contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association || github.event.review.author_association) &&
        (
          (github.event_name == 'issue_comment' && github.event.issue.pull_request && contains(github.event.comment.body, '@claude')) ||
          (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
          (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude'))
        )
      )
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
      issues: write
      id-token: write
      actions: read
    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          fetch-depth: 1

      - name: Run Claude Code
        id: claude
        uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

  # `/bot-review` command in a PR comment
  # Only Cube team can trigger review for now
  bot-review:
    if: |
      github.event_name == 'issue_comment' &&
      github.event.issue.pull_request &&
      startsWith(github.event.comment.body, '/bot-review') &&
      github.event.sender.type == 'User' &&
      contains(fromJSON('["OWNER", "MEMBER"]'), github.event.comment.author_association)
    permissions:
      contents: read
      pull-requests: write
      id-token: write
    uses: ./.github/workflows/claude-code-review.yml
    with:
      pr_number: ${{ github.event.issue.number }}
    secrets: inherit

  # `/bot-deep-review` — same review, but with max reasoning effort (xhigh).
  # Costs more tokens; use sparingly on complex / high-stakes PRs.
  bot-deep-review:
    if: |
      github.event_name == 'issue_comment' &&
      github.event.issue.pull_request &&
      startsWith(github.event.comment.body, '/bot-deep-review') &&
      github.event.sender.type == 'User' &&
      contains(fromJSON('["OWNER", "MEMBER"]'), github.event.comment.author_association)
    permissions:
      contents: read
      pull-requests: write
      id-token: write
    uses: ./.github/workflows/claude-code-review.yml
    with:
      pr_number: ${{ github.event.issue.number }}
      effort: xhigh
    secrets: inherit
