name: Bot agents description: Run a coding agent for approved Gitea issue/PR automation inputs: bot-type: description: Which bot to run, either `codex` or `claude` required: true author-token: description: >- Gitea token of the account that commits, pushes, and opens pull requests, with the `read:user`, `write:issue`, and `write:repository` scopes. The agent sees it as `GITEA_TOKEN`. required: true reviewer-token: description: >- Gitea token of the bot account that posts comments and pull request reviews, with the `write:issue` and `write:repository` scopes. Never exposed to the agent, so it must differ from the author. required: true bot-token: description: API key or token for the selected bot required: false runs: using: composite steps: # The agent works on the event's commit with full history, as the author. - uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ inputs.author-token }} # This step assumes this is `node:24-bookworm` container. - name: Install dependencies shell: bash run: npm install -g @openai/codex @anthropic-ai/claude-code deno - name: Run bot shell: bash run: deno run -A "${ACTION_PATH}/run.ts" env: ACTION_PATH: ${{ gitea.action_path }} BOT_TYPE: ${{ inputs.bot-type }} BOT_TOKEN: ${{ inputs.bot-token }} GITEA_API_URL: ${{ gitea.api_url }} GITEA_REPOSITORY: ${{ gitea.repository }} GITEA_TOKEN: ${{ inputs.author-token }} REVIEWER_TOKEN: ${{ inputs.reviewer-token }} EVENT_NAME: ${{ gitea.event_name }} ISSUE_INDEX: ${{ gitea.event.issue.number || gitea.event.pull_request.number }} COMMENT: ${{ toJSON(gitea.event.comment || gitea.event.review) }}