@coderabbitai/config
v1.0.0
Published
Programmatic (TypeScript) authoring SDK for CodeRabbit configuration.
Readme
@coderabbitai/config
Typed, programmatic authoring for CodeRabbit
configuration — write your .coderabbit.config.ts in TypeScript instead of
.coderabbit.yaml, with editor autocomplete and author-time type-checking.
A committed .coderabbit.yaml always takes precedence over
.coderabbit.config.ts.
Install
npm install --save-dev @coderabbitai/configUsage
Create a .coderabbit.config.ts at the root of your repository:
import { defineConfig } from "@coderabbitai/config"
export default defineConfig({
language: "en-US",
reviews: { profile: "chill" },
})defineConfig also accepts a factory that receives repository / organization /
pull-request and invocation context, so your config can adapt to where, what,
and how it runs — something a static YAML file cannot do:
import { defineConfig } from "@coderabbitai/config"
export default defineConfig(ctx => ({
reviews: {
// Keep local CLI reviews focused; use normal policy in the repository.
profile: ctx.invocation.source === "cli" ? "chill" : "assertive",
},
}))ctx.invocation.source is "cli" for a local coderabbit review and
"review" for reviews initiated through an SCM provider or another review
client.
Composing configs
mergeConfig deep-merges fragments (objects merge, arrays concatenate, later
scalars win), and includeRemote pulls a shared fragment from your
organization's coderabbit repository:
import { defineConfig, mergeConfig, includeRemote } from "@coderabbitai/config"
const orgBase = includeRemote({ path: "base.ts" })
export default defineConfig(
mergeConfig(orgBase, { reviews: { profile: "assertive" } }),
)How it works
Your config is evaluated by CodeRabbit in an isolated, network-free sandbox and
validated against the same schema a .coderabbit.yaml uses. This package is
author-time only — it gives you types and autocomplete; the actual
evaluation happens server-side, so your config works whether or not the package
is installed. Installing it just makes your editor and CI aware of the config
shape.
API
defineConfig(config | (ctx) => config)— typed identity for your config.mergeConfig(...fragments)— deep-merge fragments (arrays concatenate).includeRemote({ path, ref? })— include a shared file from your org'scoderabbitrepository.- Types:
CodeRabbitConfig,CodeRabbitContext,CodeRabbitInvocationContext,CodeRabbitInvocationSource,ResolvedCodeRabbitContext,RemoteInclude.
