| ... | ... | @@ -1,14 +1,43 @@ |
| 1 | | import { defineConfig } from "@coderabbitai/config"; |
| 1 | import { defineConfig, type CodeRabbitContext } from "@coderabbitai/config"; |
| 2 | 2 | |
| 3 | | export default defineConfig({ |
| 3 | const approvability = `Fail when a maintainer should read this pull request before CodeRabbit approves it, and name the rule and file. Fail if it: |
| 4 | |
| 5 | - Changes a product default: a setting's default value, or what users get without opting in. Making a feature do what it already promises is a bug fix, not a default change. |
| 6 | - Adds or broadens a directive that disables or suppresses a lint, type-checker, LSP, or other static-analysis diagnostic, including file-level, line-level, and configuration-level overrides. |
| 7 | - Adds a subsystem or user workflow, or is a large refactor across apps or packages. |
| 8 | - Changes packages/contracts or persisted data in a way that existing clients or stored data might not accept. |
| 9 | - Changes authentication, pairing, credentials, secrets, or remote connection trust. |
| 10 | - Adds or changes an external side effect, such as acting on GitHub, publishing a release, or calling a webhook. |
| 11 | - Adds, upgrades, or patches a dependency. |
| 12 | - Changes CI or release configuration, agent or contributor instructions, or any review tool's configuration, including .github/, AGENTS.md, CONTRIBUTING.md, .agents/, and .coderabbit.config.ts. |
| 13 | |
| 14 | Otherwise pass. A focused bug fix, copy or layout fix, revert, or docs-only or test-only change passes unless a rule above applies. If you cannot decide, fail rather than report inconclusive. When failing, say that the pull request needs a maintainer's review. |
| 15 | `; |
| 16 | |
| 17 | // Org members and collaborators merge their own pull requests. On anyone else's, CodeRabbit |
| 18 | // requests changes until its comments are resolved and its checks pass, then approves. |
| 19 | const UNGATED_AUTHORS = new Set(["OWNER", "MEMBER", "COLLABORATOR"]); |
| 20 | const isGated = ({ pr }: CodeRabbitContext) => !UNGATED_AUTHORS.has(pr?.authorAssociation ?? ""); |
| 21 | |
| 22 | export default defineConfig((ctx) => ({ |
| 4 | 23 | reviews: { |
| 5 | 24 | high_level_summary: false, |
| 6 | 25 | review_status: false, |
| 26 | request_changes_workflow: isGated(ctx), |
| 27 | allow_author_approval: !isGated(ctx), |
| 7 | 28 | auto_review: { |
| 8 | 29 | enabled: true, |
| 9 | 30 | }, |
| 10 | 31 | pre_merge_checks: { |
| 11 | 32 | docstrings: { mode: "off" }, |
| 33 | override_requested_reviewers_only: isGated(ctx), |
| 34 | custom_checks: [ |
| 35 | { |
| 36 | name: "Approvability", |
| 37 | mode: isGated(ctx) ? "error" : "off", |
| 38 | instructions: approvability, |
| 39 | }, |
| 40 | ], |
| 12 | 41 | }, |
| 13 | 42 | path_filters: [ |
| 14 | 43 | // Vendored read-only reference checkouts of upstream Effect and Alchemy |
| ... | ... | @@ -34,4 +63,4 @@ export default defineConfig({ |
| 34 | 63 | ], |
| 35 | 64 | }, |
| 36 | 65 | }, |
| 37 | | }); |
| 66 | })); |