Skip to content

Chainable Query Builder with select #252

Chainable Query Builder with select

Chainable Query Builder with select #252

Workflow file for this run

name: Wheels Bot — Triage
on:
issues:
types: [opened, reopened]
workflow_dispatch:
inputs:
issue_number:
description: 'Issue number to triage (use when the original issues:opened event missed or failed)'
required: true
type: string
permissions:
contents: read
concurrency:
group: wheels-bot-triage-${{ github.event.issue.number || inputs.issue_number }}
cancel-in-progress: false
jobs:
triage:
name: Triage issue
runs-on: ubuntu-latest
timeout-minutes: 25
if: |
vars.WHEELS_BOT_ENABLED == 'true'
&& (github.event_name != 'issues' || github.event.issue.user.login != 'wheels-bot[bot]')
env:
WHEELS_CI: "true"
steps:
- name: Checkout develop
uses: actions/checkout@v6
with:
ref: develop
fetch-depth: 1
- name: Generate App token
id: app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.WHEELS_BOT_APP_ID }}
private-key: ${{ secrets.WHEELS_BOT_PRIVATE_KEY }}
- name: Skip check
id: gate
uses: ./.github/actions/wheels-bot-skip-check
with:
target-type: issue
target-number: ${{ github.event.issue.number || inputs.issue_number }}
marker-pattern: 'wheels-bot:triage:${{ github.event.issue.number || inputs.issue_number }}|wheels-bot:triage-class:'
github-token: ${{ steps.app-token.outputs.token }}
- name: Run Triage
if: steps.gate.outputs.skip == 'false'
uses: anthropics/claude-code-action@v1
with:
# Issues are typically opened by humans, but defensive: allow our App
# bot and github-actions[bot] in case an upstream automation creates
# an issue we want to triage. Specific allowlist (not '*') — public repo.
allowed_bots: 'wheels-bot[bot],github-actions[bot]'
# Public OSS bug tracker: issues come from contributors without write
# permission. The action's default actor-permission gate would reject
# them, so we bypass it here. This is safe because: (a) workflow has
# `contents: read` only, (b) the App token used for commenting is
# independent of the actor, (c) claude_args below restricts shell to
# gh + read-only git + file reads — no Write/Edit/general Bash. The
# action's docs name "issue labeling" as the canonical use case.
allowed_non_write_users: '*'
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
github_token: ${{ steps.app-token.outputs.token }}
prompt: |
/triage-issue ${{ github.event.issue.number || inputs.issue_number }}
# Model policy: judging gate = fable, coding stages = opus, janitorial = sonnet.
claude_args: |
--model claude-opus-4-8
--max-turns 200
--allowedTools "Bash(gh:*),Bash(git status),Bash(git log:*),Bash(git diff:*),Bash(git show:*),Bash(git grep:*),Read,Grep,Glob"