name: 'AI Code Assistant for Gitea - Reusable Action' description: 'AI Assistant for reviewing pull-requests and responding to issues in Gitea repositories' inputs: gitea_token: description: 'Gitea token for authentication' required: true anthropic_api_key: description: 'Anthropic API key' required: true model: description: 'Claude model to use' required: false default: '' cc_bgmodel: description: 'Background Claude model to use' required: false default: '' cc_metric_url: description: 'Base URL for the metrics API endpoint' required: false default: '' cc_base_url: description: 'Base URL for the Claude API endpoint' required: false default: '' enable_reviewer_verification: description: 'Whether to verify that the bot is assigned as a reviewer before running' required: false default: '' team_name: description: 'Team name for telemetry/metrics attribution' required: false default: '' log_level: description: 'Log level for the AI review process' required: false default: '' options_type: description: 'Options type for the AI review process' required: false default: '' cc_prompt: description: 'Custom prompt override for the AI review' required: false default: '' cc_allowed_tool: description: 'Comma-separated list of allowed tools for the AI review' required: false default: '' cc_disallowed_tool: description: 'Comma-separated list of disallowed tools for the AI review' required: false default: '' server: description: 'Gitea server URL' required: false default: '' repo_owner: description: 'Repository owner (defaults to GITHUB_REPOSITORY owner)' required: false default: '' repo_slug: description: 'Repository slug/name (defaults to GITHUB_REPOSITORY name)' required: false default: '' source_branch: description: 'Source branch override (defaults to GITHUB_HEAD_REF)' required: false default: '' source_commit: description: 'Source commit SHA override' required: false default: '' pr_id: description: 'Pull Request ID override' required: false default: '' pr_destination_branch: description: 'PR destination/target branch override' required: false default: '' pr_destination_commit: description: 'PR destination commit SHA override' required: false default: '' runs: using: 'composite' steps: - name: Check condition id: check shell: bash run: | [[ "${{ github.event_name }}" == "pull_request" && "${{ contains(github.event.pull_request.title, '[no ai]') }}" == "false" ]] || \ [[ "${{ github.event_name }}" == "issues" && "${{ contains(github.event.issue.body, '@kodobot') }}" == "true" ]] || \ [[ "${{ github.event_name }}" == "issue_comment" && "${{ contains(github.event.comment.body, '@kodobot') }}" == "true" ]] && \ echo "run=true" >> $GITHUB_OUTPUT || echo "run=false" >> $GITHUB_OUTPUT - name: Setup Repository Context uses: actions/checkout@v4 with: fetch-depth: 0 - name: Run Code Review if: steps.check.outputs.run == 'true' shell: bash env: CC_BASE_URL: ${{ inputs.cc_base_url || vars.CC_BASE_URL }} CC_API_KEY: ${{ inputs.anthropic_api_key || vars.CC_API_KEY }} CC_MODEL: ${{ inputs.model || vars.CC_MODEL }} CC_BGMODEL: ${{ inputs.cc_bgmodel || vars.CC_BGMODEL }} CC_METRIC_URL: ${{ inputs.cc_metric_url || vars.CC_METRIC_URL }} VCS_ACCESS_TOKEN: ${{ inputs.gitea_token || vars.VCS_ACCESS_TOKEN }} TEAM_NAME: ${{ inputs.team_name || vars.TEAM_NAME || github.repository_owner }} SERVER: ${{ inputs.server || vars.SERVER || github.server_url }} ENABLE_REVIEWER_VERIFICATION: ${{ inputs.enable_reviewer_verification || vars.ENABLE_REVIEWER_VERIFICATION }} LOG_LEVEL: ${{ inputs.log_level || vars.LOG_LEVEL }} OPTIONS_TYPE: ${{ inputs.options_type || vars.OPTIONS_TYPE }} CC_PROMPT: ${{ inputs.cc_prompt || vars.CC_PROMPT }} CC_ALLOWED_TOOL: ${{ inputs.cc_allowed_tool || vars.CC_ALLOWED_TOOL }} CC_DISALLOWED_TOOL: ${{ inputs.cc_disallowed_tool || vars.CC_DISALLOWED_TOOL }} REPO_OWNER: ${{ inputs.repo_owner || vars.REPO_OWNER }} REPO_SLUG: ${{ inputs.repo_slug || vars.REPO_SLUG }} SOURCE_BRANCH: ${{ inputs.source_branch || vars.SOURCE_BRANCH }} SOURCE_COMMIT: ${{ inputs.source_commit || vars.SOURCE_COMMIT }} PR_ID: ${{ inputs.pr_id || vars.PR_ID }} PR_DESTINATION_BRANCH: ${{ inputs.pr_destination_branch || vars.PR_DESTINATION_BRANCH }} PR_DESTINATION_COMMIT: ${{ inputs.pr_destination_commit || vars.PR_DESTINATION_COMMIT }} run: /pipe.sh branding: icon: 'message-circle' color: 'blue'