@diff-review-system/drs 2.2.0 ā 3.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +228 -92
- package/dist/ci/runner.d.ts.map +1 -1
- package/dist/ci/runner.js +20 -22
- package/dist/ci/runner.js.map +1 -1
- package/dist/cli/describe-mr.d.ts.map +1 -1
- package/dist/cli/describe-mr.js +39 -20
- package/dist/cli/describe-mr.js.map +1 -1
- package/dist/cli/describe-pr.d.ts.map +1 -1
- package/dist/cli/describe-pr.js +39 -20
- package/dist/cli/describe-pr.js.map +1 -1
- package/dist/cli/index.js +37 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +30 -2
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/post-comments.d.ts.map +1 -1
- package/dist/cli/post-comments.js +5 -5
- package/dist/cli/post-comments.js.map +1 -1
- package/dist/cli/review-local.d.ts.map +1 -1
- package/dist/cli/review-local.integration.test.d.ts +2 -0
- package/dist/cli/review-local.integration.test.d.ts.map +1 -0
- package/dist/cli/review-local.integration.test.js +343 -0
- package/dist/cli/review-local.integration.test.js.map +1 -0
- package/dist/cli/review-local.js +5 -4
- package/dist/cli/review-local.js.map +1 -1
- package/dist/cli/review-local.live.e2e.test.d.ts +2 -0
- package/dist/cli/review-local.live.e2e.test.d.ts.map +1 -0
- package/dist/cli/review-local.live.e2e.test.js +154 -0
- package/dist/cli/review-local.live.e2e.test.js.map +1 -0
- package/dist/cli/review-local.test.d.ts +2 -0
- package/dist/cli/review-local.test.d.ts.map +1 -0
- package/dist/cli/review-local.test.js +164 -0
- package/dist/cli/review-local.test.js.map +1 -0
- package/dist/cli/review-mr.d.ts +2 -1
- package/dist/cli/review-mr.d.ts.map +1 -1
- package/dist/cli/review-mr.js +93 -17
- package/dist/cli/review-mr.js.map +1 -1
- package/dist/cli/review-mr.test.d.ts +2 -0
- package/dist/cli/review-mr.test.d.ts.map +1 -0
- package/dist/cli/review-mr.test.js +142 -0
- package/dist/cli/review-mr.test.js.map +1 -0
- package/dist/cli/review-pr.d.ts +2 -1
- package/dist/cli/review-pr.d.ts.map +1 -1
- package/dist/cli/review-pr.js +97 -13
- package/dist/cli/review-pr.js.map +1 -1
- package/dist/cli/review-pr.test.d.ts +2 -0
- package/dist/cli/review-pr.test.d.ts.map +1 -0
- package/dist/cli/review-pr.test.js +137 -0
- package/dist/cli/review-pr.test.js.map +1 -0
- package/dist/cli/show-changes.js +4 -4
- package/dist/github/client.d.ts +4 -0
- package/dist/github/client.d.ts.map +1 -1
- package/dist/github/client.js +10 -0
- package/dist/github/client.js.map +1 -1
- package/dist/github/platform-adapter.d.ts +1 -0
- package/dist/github/platform-adapter.d.ts.map +1 -1
- package/dist/github/platform-adapter.js +6 -2
- package/dist/github/platform-adapter.js.map +1 -1
- package/dist/gitlab/client.d.ts +4 -0
- package/dist/gitlab/client.d.ts.map +1 -1
- package/dist/gitlab/client.js +7 -1
- package/dist/gitlab/client.js.map +1 -1
- package/dist/gitlab/platform-adapter.d.ts +1 -0
- package/dist/gitlab/platform-adapter.d.ts.map +1 -1
- package/dist/gitlab/platform-adapter.js +3 -0
- package/dist/gitlab/platform-adapter.js.map +1 -1
- package/dist/lib/code-quality-report.js +1 -1
- package/dist/lib/comment-formatter.d.ts +9 -1
- package/dist/lib/comment-formatter.d.ts.map +1 -1
- package/dist/lib/comment-formatter.js +52 -1
- package/dist/lib/comment-formatter.js.map +1 -1
- package/dist/lib/comment-formatter.test.js +70 -1
- package/dist/lib/comment-formatter.test.js.map +1 -1
- package/dist/lib/comment-manager.d.ts +5 -0
- package/dist/lib/comment-manager.d.ts.map +1 -1
- package/dist/lib/comment-manager.js +11 -2
- package/dist/lib/comment-manager.js.map +1 -1
- package/dist/lib/comment-manager.test.js +63 -1
- package/dist/lib/comment-manager.test.js.map +1 -1
- package/dist/lib/comment-poster.d.ts +2 -1
- package/dist/lib/comment-poster.d.ts.map +1 -1
- package/dist/lib/comment-poster.js +2 -2
- package/dist/lib/comment-poster.js.map +1 -1
- package/dist/lib/comment-poster.test.js +27 -11
- package/dist/lib/comment-poster.test.js.map +1 -1
- package/dist/lib/config-model-overrides.test.d.ts +1 -1
- package/dist/lib/config-model-overrides.test.js +2 -2
- package/dist/lib/config-model-overrides.test.js.map +1 -1
- package/dist/lib/config.d.ts +36 -7
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +39 -13
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/config.test.js +16 -0
- package/dist/lib/config.test.js.map +1 -1
- package/dist/lib/context-compression.d.ts +27 -1
- package/dist/lib/context-compression.d.ts.map +1 -1
- package/dist/lib/context-compression.js +106 -4
- package/dist/lib/context-compression.js.map +1 -1
- package/dist/lib/context-compression.test.js +305 -1
- package/dist/lib/context-compression.test.js.map +1 -1
- package/dist/lib/context-loader.d.ts +3 -2
- package/dist/lib/context-loader.d.ts.map +1 -1
- package/dist/lib/context-loader.js +11 -5
- package/dist/lib/context-loader.js.map +1 -1
- package/dist/lib/description-executor.d.ts +19 -2
- package/dist/lib/description-executor.d.ts.map +1 -1
- package/dist/lib/description-executor.js +52 -21
- package/dist/lib/description-executor.js.map +1 -1
- package/dist/lib/description-executor.test.d.ts +2 -0
- package/dist/lib/description-executor.test.d.ts.map +1 -0
- package/dist/lib/description-executor.test.js +120 -0
- package/dist/lib/description-executor.test.js.map +1 -0
- package/dist/lib/description-formatter.d.ts +8 -3
- package/dist/lib/description-formatter.d.ts.map +1 -1
- package/dist/lib/description-formatter.js +88 -13
- package/dist/lib/description-formatter.js.map +1 -1
- package/dist/lib/description-formatter.test.d.ts +2 -0
- package/dist/lib/description-formatter.test.d.ts.map +1 -0
- package/dist/lib/description-formatter.test.js +57 -0
- package/dist/lib/description-formatter.test.js.map +1 -0
- package/dist/lib/diff-parser.test.d.ts +2 -0
- package/dist/lib/diff-parser.test.d.ts.map +1 -0
- package/dist/lib/diff-parser.test.js +335 -0
- package/dist/lib/diff-parser.test.js.map +1 -0
- package/dist/lib/error-comment-poster.d.ts +19 -0
- package/dist/lib/error-comment-poster.d.ts.map +1 -0
- package/dist/lib/error-comment-poster.js +57 -0
- package/dist/lib/error-comment-poster.js.map +1 -0
- package/dist/lib/error-comment-poster.test.d.ts +2 -0
- package/dist/lib/error-comment-poster.test.d.ts.map +1 -0
- package/dist/lib/error-comment-poster.test.js +128 -0
- package/dist/lib/error-comment-poster.test.js.map +1 -0
- package/dist/lib/exit.d.ts +35 -0
- package/dist/lib/exit.d.ts.map +1 -0
- package/dist/lib/exit.js +53 -0
- package/dist/lib/exit.js.map +1 -0
- package/dist/lib/exit.test.d.ts +2 -0
- package/dist/lib/exit.test.d.ts.map +1 -0
- package/dist/lib/exit.test.js +120 -0
- package/dist/lib/exit.test.js.map +1 -0
- package/dist/lib/format-utils.d.ts +3 -0
- package/dist/lib/format-utils.d.ts.map +1 -0
- package/dist/lib/format-utils.js +7 -0
- package/dist/lib/format-utils.js.map +1 -0
- package/dist/lib/json-output.d.ts +4 -1
- package/dist/lib/json-output.d.ts.map +1 -1
- package/dist/lib/json-output.js +2 -1
- package/dist/lib/json-output.js.map +1 -1
- package/dist/lib/json-output.test.d.ts +2 -0
- package/dist/lib/json-output.test.d.ts.map +1 -0
- package/dist/lib/json-output.test.js +135 -0
- package/dist/lib/json-output.test.js.map +1 -0
- package/dist/lib/logger.d.ts +130 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +233 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/logger.test.d.ts +2 -0
- package/dist/lib/logger.test.d.ts.map +1 -0
- package/dist/lib/logger.test.js +324 -0
- package/dist/lib/logger.test.js.map +1 -0
- package/dist/lib/platform-client.d.ts +4 -0
- package/dist/lib/platform-client.d.ts.map +1 -1
- package/dist/lib/position-validator.test.d.ts +2 -0
- package/dist/lib/position-validator.test.d.ts.map +1 -0
- package/dist/lib/position-validator.test.js +128 -0
- package/dist/lib/position-validator.test.js.map +1 -0
- package/dist/lib/repository-validator.js +1 -1
- package/dist/lib/review-core.d.ts +9 -4
- package/dist/lib/review-core.d.ts.map +1 -1
- package/dist/lib/review-core.js +230 -48
- package/dist/lib/review-core.js.map +1 -1
- package/dist/lib/review-core.test.js +78 -30
- package/dist/lib/review-core.test.js.map +1 -1
- package/dist/lib/review-orchestrator.d.ts +12 -7
- package/dist/lib/review-orchestrator.d.ts.map +1 -1
- package/dist/lib/review-orchestrator.js +78 -22
- package/dist/lib/review-orchestrator.js.map +1 -1
- package/dist/lib/review-orchestrator.test.js +160 -42
- package/dist/lib/review-orchestrator.test.js.map +1 -1
- package/dist/lib/review-parser.test.d.ts +2 -0
- package/dist/lib/review-parser.test.d.ts.map +1 -0
- package/dist/lib/review-parser.test.js +130 -0
- package/dist/lib/review-parser.test.js.map +1 -0
- package/dist/lib/review-usage.d.ts +32 -0
- package/dist/lib/review-usage.d.ts.map +1 -0
- package/dist/lib/review-usage.js +72 -0
- package/dist/lib/review-usage.js.map +1 -0
- package/dist/lib/review-usage.test.d.ts +2 -0
- package/dist/lib/review-usage.test.d.ts.map +1 -0
- package/dist/lib/review-usage.test.js +83 -0
- package/dist/lib/review-usage.test.js.map +1 -0
- package/dist/lib/unified-review-executor.d.ts +8 -2
- package/dist/lib/unified-review-executor.d.ts.map +1 -1
- package/dist/lib/unified-review-executor.js +111 -66
- package/dist/lib/unified-review-executor.js.map +1 -1
- package/dist/lib/unified-review-executor.test.js +138 -16
- package/dist/lib/unified-review-executor.test.js.map +1 -1
- package/dist/lib/write-json-output.test.d.ts +2 -0
- package/dist/lib/write-json-output.test.d.ts.map +1 -0
- package/dist/lib/write-json-output.test.js +259 -0
- package/dist/lib/write-json-output.test.js.map +1 -0
- package/dist/pi/sdk.d.ts +94 -0
- package/dist/pi/sdk.d.ts.map +1 -0
- package/dist/pi/sdk.js +486 -0
- package/dist/pi/sdk.js.map +1 -0
- package/dist/pi/sdk.test.d.ts +2 -0
- package/dist/pi/sdk.test.d.ts.map +1 -0
- package/dist/pi/sdk.test.js +331 -0
- package/dist/pi/sdk.test.js.map +1 -0
- package/dist/{opencode ā runtime}/agent-loader.d.ts +7 -5
- package/dist/runtime/agent-loader.d.ts.map +1 -0
- package/dist/{opencode ā runtime}/agent-loader.js +24 -19
- package/dist/runtime/agent-loader.js.map +1 -0
- package/dist/runtime/agent-loader.test.d.ts +2 -0
- package/dist/runtime/agent-loader.test.d.ts.map +1 -0
- package/dist/runtime/agent-loader.test.js +280 -0
- package/dist/runtime/agent-loader.test.js.map +1 -0
- package/dist/runtime/built-in-paths.d.ts +2 -0
- package/dist/runtime/built-in-paths.d.ts.map +1 -0
- package/dist/runtime/built-in-paths.js +14 -0
- package/dist/runtime/built-in-paths.js.map +1 -0
- package/dist/runtime/client.d.ts +107 -0
- package/dist/runtime/client.d.ts.map +1 -0
- package/dist/runtime/client.js +486 -0
- package/dist/runtime/client.js.map +1 -0
- package/dist/{opencode ā runtime}/client.test.d.ts.map +1 -1
- package/dist/runtime/client.test.js +392 -0
- package/dist/runtime/client.test.js.map +1 -0
- package/dist/runtime/path-config.d.ts +8 -0
- package/dist/runtime/path-config.d.ts.map +1 -0
- package/dist/runtime/path-config.js +68 -0
- package/dist/runtime/path-config.js.map +1 -0
- package/dist/runtime/path-config.test.d.ts +2 -0
- package/dist/runtime/path-config.test.d.ts.map +1 -0
- package/dist/runtime/path-config.test.js +103 -0
- package/dist/runtime/path-config.test.js.map +1 -0
- package/package.json +5 -5
- package/.opencode/opencode.jsonc +0 -15
- package/.opencode/tool/write_json_output.ts +0 -24
- package/dist/opencode/agent-loader.d.ts.map +0 -1
- package/dist/opencode/agent-loader.js.map +0 -1
- package/dist/opencode/agent-skill-overlay.d.ts +0 -11
- package/dist/opencode/agent-skill-overlay.d.ts.map +0 -1
- package/dist/opencode/agent-skill-overlay.js +0 -164
- package/dist/opencode/agent-skill-overlay.js.map +0 -1
- package/dist/opencode/client.d.ts +0 -91
- package/dist/opencode/client.d.ts.map +0 -1
- package/dist/opencode/client.js +0 -463
- package/dist/opencode/client.js.map +0 -1
- package/dist/opencode/client.test.js +0 -317
- package/dist/opencode/client.test.js.map +0 -1
- package/dist/opencode/opencode-paths.d.ts +0 -2
- package/dist/opencode/opencode-paths.d.ts.map +0 -1
- package/dist/opencode/opencode-paths.js +0 -7
- package/dist/opencode/opencode-paths.js.map +0 -1
- package/dist/opencode/skill-loader.d.ts +0 -6
- package/dist/opencode/skill-loader.d.ts.map +0 -1
- package/dist/opencode/skill-loader.js +0 -36
- package/dist/opencode/skill-loader.js.map +0 -1
- /package/{.opencode/agent ā .pi/agents}/describe/pr-describer.md +0 -0
- /package/{.opencode/agent ā .pi/agents}/review/documentation.md +0 -0
- /package/{.opencode/agent ā .pi/agents}/review/performance.md +0 -0
- /package/{.opencode/agent ā .pi/agents}/review/quality.md +0 -0
- /package/{.opencode/agent ā .pi/agents}/review/security.md +0 -0
- /package/{.opencode/agent ā .pi/agents}/review/style.md +0 -0
- /package/{.opencode/agent ā .pi/agents}/review/unified-reviewer.md +0 -0
- /package/dist/{opencode ā runtime}/client.test.d.ts +0 -0
package/README.md
CHANGED
|
@@ -1,30 +1,35 @@
|
|
|
1
|
-
# DRS
|
|
1
|
+
# DRS Ā· Diff Review System
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@diff-review-system/drs)
|
|
4
|
+
[](LICENSE)
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
**AI-powered code review for GitLab MRs and GitHub PRs.**
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
DRS helps teams catch critical issues earlier with specialized review agents, unified reporting, and CI-friendly automation ā all powered by Pi SDK.
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
- **
|
|
12
|
-
- **Flexible
|
|
13
|
-
- **
|
|
14
|
-
- **
|
|
15
|
-
- **
|
|
16
|
-
- **
|
|
17
|
-
|
|
10
|
+
## Why teams like DRS
|
|
11
|
+
|
|
12
|
+
- š **Specialized analysis domains**: security, quality, style, performance, documentation
|
|
13
|
+
- š§ **Flexible review modes**: multi-agent deep review, unified one-pass review, hybrid escalation
|
|
14
|
+
- š¦ **Pi-native runtime**: in-process execution by default, no separate runtime service required
|
|
15
|
+
- āļø **Description generation**: optional PR/MR summary generation and posting
|
|
16
|
+
- š§¾ **Portable outputs**: inline comments, JSON artifacts, and GitLab code quality reports
|
|
17
|
+
- šÆ **Smart context compression**: dynamic budget sizing with `contextCompression.thresholdPercent`
|
|
18
|
+
|
|
19
|
+
## Quick Links
|
|
20
|
+
|
|
21
|
+
- [Quick Start](#quick-start)
|
|
22
|
+
- [Deployment Modes](#deployment-modes)
|
|
23
|
+
- [Customization](#customization)
|
|
24
|
+
- [Configuration](#configuration)
|
|
25
|
+
- [Documentation](#documentation)
|
|
18
26
|
|
|
19
27
|
## Quick Start
|
|
20
28
|
|
|
21
29
|
### 1. Prerequisites
|
|
22
30
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
npm install -g opencode-ai
|
|
27
|
-
```
|
|
31
|
+
- Node.js 20+
|
|
32
|
+
- API key for your chosen model provider (Anthropic/OpenAI/ZhipuAI/etc.)
|
|
28
33
|
|
|
29
34
|
### 2. Install DRS
|
|
30
35
|
|
|
@@ -32,6 +37,8 @@ npm install -g opencode-ai
|
|
|
32
37
|
npm install -g @diff-review-system/drs
|
|
33
38
|
```
|
|
34
39
|
|
|
40
|
+
This installs DRS with Pi runtime bundled ā no separate runtime installation needed.
|
|
41
|
+
|
|
35
42
|
### 3. Initialize Project
|
|
36
43
|
|
|
37
44
|
```bash
|
|
@@ -48,7 +55,7 @@ cp .env.example .env
|
|
|
48
55
|
# Edit .env and set:
|
|
49
56
|
# - GITLAB_TOKEN: Your GitLab access token (for GitLab MRs)
|
|
50
57
|
# - GITHUB_TOKEN: Your GitHub access token (for GitHub PRs)
|
|
51
|
-
# -
|
|
58
|
+
# - Pi runtime runs in-process automatically (no remote server needed)
|
|
52
59
|
# - Provider API Key: Set the API key for your chosen model provider
|
|
53
60
|
# - ANTHROPIC_API_KEY for Claude models (e.g., anthropic/claude-opus-4-5-20251101)
|
|
54
61
|
# - ZHIPU_API_KEY for GLM models (e.g., zhipuai/glm-4.7)
|
|
@@ -56,7 +63,9 @@ cp .env.example .env
|
|
|
56
63
|
# - See .env.example for all supported providers
|
|
57
64
|
```
|
|
58
65
|
|
|
59
|
-
|
|
66
|
+
DRS CLI now loads `.env` automatically from your current working directory.
|
|
67
|
+
|
|
68
|
+
**Note**: DRS runs Pi in-process by default and does not require a remote runtime endpoint.
|
|
60
69
|
|
|
61
70
|
### 5. Review Local Changes
|
|
62
71
|
|
|
@@ -71,6 +80,17 @@ drs review-local --staged
|
|
|
71
80
|
drs review-local --agents security,quality
|
|
72
81
|
```
|
|
73
82
|
|
|
83
|
+
### Most-Used Commands
|
|
84
|
+
|
|
85
|
+
| Goal | Command |
|
|
86
|
+
|---|---|
|
|
87
|
+
| Review local unstaged changes | `drs review-local` |
|
|
88
|
+
| Review local staged changes | `drs review-local --staged` |
|
|
89
|
+
| Review GitHub PR | `drs review-pr --owner <owner> --repo <repo> --pr <number>` |
|
|
90
|
+
| Review GitLab MR | `drs review-mr --project <group/repo> --mr <number>` |
|
|
91
|
+
| Generate PR description | `drs describe-pr --owner <owner> --repo <repo> --pr <number>` |
|
|
92
|
+
| Generate MR description | `drs describe-mr --project <group/repo> --mr <number>` |
|
|
93
|
+
|
|
74
94
|
## Deployment Modes
|
|
75
95
|
|
|
76
96
|
### Mode 1: Local CLI
|
|
@@ -135,7 +155,7 @@ ai_review:
|
|
|
135
155
|
```
|
|
136
156
|
|
|
137
157
|
**See [GitLab CI Integration Guide](docs/GITLAB_CI_INTEGRATION.md)** for:
|
|
138
|
-
-
|
|
158
|
+
- Pi-based CI setup examples
|
|
139
159
|
- Parallel pipeline strategies (child pipelines, DAG with needs)
|
|
140
160
|
- Complete examples that don't block your main pipeline
|
|
141
161
|
|
|
@@ -153,7 +173,6 @@ DRS includes a **secure, pre-configured workflow** at `.github/workflows/pr-revi
|
|
|
153
173
|
|
|
154
174
|
1. **Configure API Keys** in repository Settings ā Secrets:
|
|
155
175
|
- `ANTHROPIC_API_KEY` (for Claude models), or
|
|
156
|
-
- `OPENCODE_ZEN_API_KEY` (for OpenCode Zen), or
|
|
157
176
|
- `ZHIPU_API_KEY` (for ZhipuAI GLM models), or
|
|
158
177
|
- `OPENAI_API_KEY` (for OpenAI models)
|
|
159
178
|
|
|
@@ -214,7 +233,7 @@ code_review:
|
|
|
214
233
|
stage: review
|
|
215
234
|
image: node:20-alpine
|
|
216
235
|
before_script:
|
|
217
|
-
- npm install -g @diff-review-system/drs
|
|
236
|
+
- npm install -g @diff-review-system/drs
|
|
218
237
|
script:
|
|
219
238
|
- drs review-mr --project $CI_PROJECT_PATH --mr $CI_MERGE_REQUEST_IID
|
|
220
239
|
--code-quality-report gl-code-quality-report.json
|
|
@@ -258,71 +277,43 @@ DRS generates reports in GitLab's CodeClimate-compatible format:
|
|
|
258
277
|
|
|
259
278
|
For more details, see [GitLab Code Quality Documentation](https://docs.gitlab.com/ci/testing/code_quality/).
|
|
260
279
|
|
|
261
|
-
##
|
|
262
|
-
|
|
263
|
-
DRS supports two modes of OpenCode server operation:
|
|
264
|
-
|
|
265
|
-
### In-Process Server (Default)
|
|
266
|
-
|
|
267
|
-
If `OPENCODE_SERVER` is not set, DRS will automatically start an OpenCode server within the same process. **Note**: This still requires the OpenCode CLI to be installed globally.
|
|
268
|
-
|
|
269
|
-
```bash
|
|
270
|
-
# Install OpenCode CLI first (required)
|
|
271
|
-
npm install -g opencode-ai
|
|
272
|
-
|
|
273
|
-
# Then run DRS (server starts automatically)
|
|
274
|
-
drs review-local
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
**Pros:**
|
|
278
|
-
- Minimal configuration required (just install CLI)
|
|
279
|
-
- Automatic startup/shutdown
|
|
280
|
-
- Simpler deployment
|
|
281
|
-
- Lower latency
|
|
280
|
+
## Pi Runtime Configuration
|
|
282
281
|
|
|
283
|
-
|
|
284
|
-
- Requires OpenCode CLI installation
|
|
285
|
-
- Server lifetime tied to CLI process
|
|
286
|
-
- Cannot share across multiple tools
|
|
287
|
-
- Uses process resources
|
|
282
|
+
DRS runs on Pi SDK as the sole review runtime.
|
|
288
283
|
|
|
289
|
-
###
|
|
284
|
+
### In-Process Runtime (Default)
|
|
290
285
|
|
|
291
|
-
|
|
286
|
+
By default, DRS starts Pi runtime in-process:
|
|
292
287
|
|
|
293
288
|
```bash
|
|
294
|
-
# Set the server URL
|
|
295
|
-
export OPENCODE_SERVER=http://opencode.internal:3000
|
|
296
289
|
drs review-local
|
|
297
290
|
```
|
|
298
291
|
|
|
299
|
-
|
|
300
|
-
- Persistent server
|
|
301
|
-
- Shared across multiple tools
|
|
302
|
-
- Better for CI/CD pipelines
|
|
303
|
-
- Can be scaled separately
|
|
292
|
+
### Runtime Mode
|
|
304
293
|
|
|
305
|
-
|
|
306
|
-
- Requires separate service setup
|
|
307
|
-
- Additional infrastructure
|
|
294
|
+
DRS uses Pi in-process runtime only.
|
|
308
295
|
|
|
309
296
|
## Architecture
|
|
310
297
|
|
|
311
|
-
DRS uses
|
|
298
|
+
DRS uses Pi runtime wiring with markdown-based agent definitions:
|
|
312
299
|
|
|
313
300
|
```
|
|
314
|
-
.
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
āāā
|
|
301
|
+
.pi/
|
|
302
|
+
āāā agents/
|
|
303
|
+
āāā review/
|
|
304
|
+
āāā security.md # Security specialist
|
|
305
|
+
āāā quality.md # Code quality expert
|
|
306
|
+
āāā style.md # Style checker
|
|
307
|
+
āāā performance.md # Performance analyzer
|
|
308
|
+
āāā documentation.md # Documentation reviewer
|
|
322
309
|
```
|
|
323
310
|
|
|
311
|
+
Built-in agent definitions live under `.pi/agents`.
|
|
312
|
+
|
|
324
313
|
## Customization
|
|
325
314
|
|
|
315
|
+
> **Full guide**: See [docs/CUSTOM_AGENTS.md](docs/CUSTOM_AGENTS.md) for complete documentation on custom agents, skills, context, per-agent tools, and configuration examples.
|
|
316
|
+
|
|
326
317
|
### Override Default Agents
|
|
327
318
|
|
|
328
319
|
Create custom agents in your project:
|
|
@@ -333,7 +324,7 @@ mkdir -p .drs/agents/security
|
|
|
333
324
|
cat > .drs/agents/security/agent.md << 'EOF'
|
|
334
325
|
---
|
|
335
326
|
description: Custom security reviewer
|
|
336
|
-
model:
|
|
327
|
+
model: anthropic/claude-sonnet-4-5-20250929
|
|
337
328
|
---
|
|
338
329
|
|
|
339
330
|
You are a security expert for this specific application.
|
|
@@ -343,12 +334,55 @@ You are a security expert for this specific application.
|
|
|
343
334
|
EOF
|
|
344
335
|
```
|
|
345
336
|
|
|
337
|
+
### Add Context Without Overriding
|
|
338
|
+
|
|
339
|
+
Add project-specific guidance to a built-in agent without replacing its prompt:
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
mkdir -p .drs/agents/quality
|
|
343
|
+
cat > .drs/agents/quality/context.md << 'EOF'
|
|
344
|
+
# Quality Context
|
|
345
|
+
- Flag functions over 200 lines as HIGH
|
|
346
|
+
- We use TypeORM ā flag raw SQL queries
|
|
347
|
+
EOF
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### Global Project Context
|
|
351
|
+
|
|
352
|
+
`.drs/context.md` is injected into **every** agent's prompt:
|
|
353
|
+
|
|
354
|
+
```markdown
|
|
355
|
+
# Project Context
|
|
356
|
+
Node.js microservice using Express + TypeORM.
|
|
357
|
+
Prioritize correctness, safety, and clarity.
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### Create New Custom Agents
|
|
361
|
+
|
|
362
|
+
Add agents that don't exist in the built-in set:
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
mkdir -p .drs/agents/api-reviewer
|
|
366
|
+
cat > .drs/agents/api-reviewer/agent.md << 'EOF'
|
|
367
|
+
---
|
|
368
|
+
description: REST API contract reviewer
|
|
369
|
+
tools:
|
|
370
|
+
Read: true
|
|
371
|
+
Grep: true
|
|
372
|
+
---
|
|
373
|
+
Review REST API changes for backward compatibility.
|
|
374
|
+
EOF
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
Then add to config: `agents: [security, quality, api-reviewer]`
|
|
378
|
+
|
|
346
379
|
### Configure Review Behavior
|
|
347
380
|
|
|
348
381
|
Edit `.drs/drs.config.yaml`:
|
|
349
382
|
|
|
350
383
|
```yaml
|
|
351
384
|
review:
|
|
385
|
+
mode: unified
|
|
352
386
|
agents:
|
|
353
387
|
- security
|
|
354
388
|
- quality
|
|
@@ -359,14 +393,123 @@ review:
|
|
|
359
393
|
enabled: true
|
|
360
394
|
postDescription: false
|
|
361
395
|
|
|
396
|
+
contextCompression:
|
|
397
|
+
enabled: true
|
|
398
|
+
# Dynamic budget = thresholdPercent Ć model context window
|
|
399
|
+
thresholdPercent: 0.15
|
|
400
|
+
# Fallback if model context window metadata is unavailable
|
|
401
|
+
maxTokens: 32000
|
|
402
|
+
softBufferTokens: 1500
|
|
403
|
+
hardBufferTokens: 1000
|
|
404
|
+
|
|
362
405
|
describe:
|
|
363
|
-
model:
|
|
406
|
+
model: zhipuai/glm-4.7
|
|
364
407
|
```
|
|
365
408
|
|
|
366
409
|
Notes:
|
|
367
410
|
- `review.describe` controls auto-description when running `review-mr` or `review-pr`.
|
|
368
411
|
- CLI flags override config: `--describe` / `--skip-describe` and `--post-description` / `--skip-post-description`.
|
|
369
412
|
- `describe.model` is used by `describe-mr`/`describe-pr` and by review-driven descriptions.
|
|
413
|
+
- `contextCompression.thresholdPercent` sets a context-window-aware budget (e.g. `0.15` means 15%).
|
|
414
|
+
- `contextCompression.maxTokens` is the fallback cap when context window metadata is unavailable.
|
|
415
|
+
- `review.agents` explicitly enables deep-review agents; remove an entry to disable that agent.
|
|
416
|
+
- Built-in review agent names are: `security`, `quality`, `style`, `performance`, `documentation`.
|
|
417
|
+
- Unknown agent names fail fast with a validation error before review execution starts.
|
|
418
|
+
|
|
419
|
+
### Model Pricing Overrides (Cost Reporting)
|
|
420
|
+
|
|
421
|
+
If your provider/model reports token usage but returns `$0.0000` cost, you can set pricing manually.
|
|
422
|
+
Values are in **USD per 1M tokens**.
|
|
423
|
+
|
|
424
|
+
```yaml
|
|
425
|
+
pricing:
|
|
426
|
+
models:
|
|
427
|
+
opencode/glm-5-free:
|
|
428
|
+
input: 0.0
|
|
429
|
+
output: 0.0
|
|
430
|
+
cacheRead: 0.0
|
|
431
|
+
cacheWrite: 0.0
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
You can also set pricing directly under `pi.provider.<name>.models.<model>.cost` for custom providers.
|
|
435
|
+
|
|
436
|
+
### Custom Provider Model Metadata (Context Window & Output Limits)
|
|
437
|
+
|
|
438
|
+
If you define custom models under `pi.provider.<name>.models`, you can also set model metadata used by DRS:
|
|
439
|
+
|
|
440
|
+
- `contextWindow`: used for dynamic compression sizing when `thresholdPercent` is enabled
|
|
441
|
+
- `maxTokens`: model output limit hint
|
|
442
|
+
- `cost`: token pricing override (USD per 1M tokens)
|
|
443
|
+
|
|
444
|
+
```yaml
|
|
445
|
+
pi:
|
|
446
|
+
provider:
|
|
447
|
+
my-provider:
|
|
448
|
+
npm: "@ai-sdk/openai-compatible"
|
|
449
|
+
name: "My Provider"
|
|
450
|
+
options:
|
|
451
|
+
baseURL: "https://api.example.com/v1"
|
|
452
|
+
apiKey: "{env:MY_PROVIDER_API_KEY}"
|
|
453
|
+
models:
|
|
454
|
+
my-model:
|
|
455
|
+
name: "My Model"
|
|
456
|
+
contextWindow: 200000
|
|
457
|
+
maxTokens: 8192
|
|
458
|
+
cost:
|
|
459
|
+
input: 0.50
|
|
460
|
+
output: 1.50
|
|
461
|
+
cacheRead: 0.00
|
|
462
|
+
cacheWrite: 0.00
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
> Note: For built-in providers/models, context window metadata comes from the runtime model registry.
|
|
466
|
+
|
|
467
|
+
### Context Compression (Large Diff Handling)
|
|
468
|
+
|
|
469
|
+
DRS trims large diffs before sending them to models, so reviews stay within context limits.
|
|
470
|
+
|
|
471
|
+
- `thresholdPercent` enables **dynamic budgeting** based on model context window.
|
|
472
|
+
- `maxTokens` is used as fallback when context metadata is missing.
|
|
473
|
+
- Generated files and deletion-only hunks can be auto-excluded from prompt context.
|
|
474
|
+
|
|
475
|
+
Example:
|
|
476
|
+
|
|
477
|
+
```yaml
|
|
478
|
+
contextCompression:
|
|
479
|
+
enabled: true
|
|
480
|
+
thresholdPercent: 0.15 # 15% of model context window
|
|
481
|
+
maxTokens: 32000 # fallback cap
|
|
482
|
+
softBufferTokens: 1500
|
|
483
|
+
hardBufferTokens: 1000
|
|
484
|
+
tokenEstimateDivisor: 4
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
### Pi-Native Skill Discovery
|
|
488
|
+
|
|
489
|
+
DRS now auto-discovers review skills from both directories when `review.paths.skills` is not set:
|
|
490
|
+
|
|
491
|
+
1. `.drs/skills` (project-level overrides)
|
|
492
|
+
2. `.pi/skills` (Pi-native skills)
|
|
493
|
+
|
|
494
|
+
If the same skill name exists in both locations, `.drs/skills` wins.
|
|
495
|
+
|
|
496
|
+
Example layout:
|
|
497
|
+
|
|
498
|
+
```text
|
|
499
|
+
.drs/skills/
|
|
500
|
+
secure-fetch/SKILL.md # Project override (preferred)
|
|
501
|
+
.pi/skills/
|
|
502
|
+
secure-fetch/SKILL.md # Pi-native fallback
|
|
503
|
+
db-indexing/SKILL.md # Additional Pi-native skill
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
To force a single custom skills directory, set `review.paths.skills`:
|
|
507
|
+
|
|
508
|
+
```yaml
|
|
509
|
+
review:
|
|
510
|
+
paths:
|
|
511
|
+
skills: config/review-skills
|
|
512
|
+
```
|
|
370
513
|
|
|
371
514
|
## Review Domains
|
|
372
515
|
|
|
@@ -421,7 +564,6 @@ ZHIPU_API_KEY=xxx # For ZhipuAI GLM models
|
|
|
421
564
|
OPENAI_API_KEY=sk-xxx # For OpenAI models
|
|
422
565
|
|
|
423
566
|
# Optional
|
|
424
|
-
OPENCODE_SERVER=http://localhost:3000 # Leave empty to start in-process server
|
|
425
567
|
GITLAB_URL=https://gitlab.com
|
|
426
568
|
REVIEW_AGENTS=security,quality,style,performance
|
|
427
569
|
```
|
|
@@ -430,15 +572,7 @@ REVIEW_AGENTS=security,quality,style,performance
|
|
|
430
572
|
|
|
431
573
|
1. `.drs/drs.config.yaml` - DRS-specific configuration
|
|
432
574
|
2. `.gitlab-review.yml` - Alternative location
|
|
433
|
-
3.
|
|
434
|
-
|
|
435
|
-
## Examples
|
|
436
|
-
|
|
437
|
-
See the `examples/` directory for:
|
|
438
|
-
- GitLab CI configuration
|
|
439
|
-
- Docker Compose setup
|
|
440
|
-
- Custom agent definitions
|
|
441
|
-
- Configuration templates
|
|
575
|
+
3. Environment variables (for provider credentials and platform tokens)
|
|
442
576
|
|
|
443
577
|
## Development
|
|
444
578
|
|
|
@@ -463,12 +597,12 @@ npm run dev
|
|
|
463
597
|
## Requirements
|
|
464
598
|
|
|
465
599
|
- Node.js 20+
|
|
466
|
-
-
|
|
467
|
-
- Anthropic API key (for Claude AI)
|
|
600
|
+
- API key for your selected provider (Anthropic/OpenAI/ZhipuAI/etc.)
|
|
468
601
|
- GitLab access token (for GitLab MR reviews)
|
|
469
602
|
- GitHub access token (for GitHub PR reviews)
|
|
470
603
|
- Git 2.30+ (for local mode)
|
|
471
|
-
|
|
604
|
+
|
|
605
|
+
Pi runtime is included as a dependency ā no separate installation or server needed.
|
|
472
606
|
|
|
473
607
|
## License
|
|
474
608
|
|
|
@@ -477,12 +611,13 @@ Apache-2.0
|
|
|
477
611
|
## Documentation
|
|
478
612
|
|
|
479
613
|
- [GitLab CI Integration Guide](docs/GITLAB_CI_INTEGRATION.md) - Complete guide for GitLab CI/CD setup
|
|
614
|
+
- [GitHub Actions Integration Guide](docs/GITHUB_ACTIONS_INTEGRATION.md) - GitHub Actions workflow setup
|
|
615
|
+
- [External PR Security Guide](docs/EXTERNAL_PR_SECURITY.md) - Security controls for external contributors
|
|
616
|
+
- [Custom Agents & Skills Guide](docs/CUSTOM_AGENTS.md) - Custom agents, context, skills, and per-agent tools
|
|
617
|
+
- [Model Overrides Guide](docs/MODEL_OVERRIDES.md) - Per-agent model configuration
|
|
480
618
|
- [Development Guide](DEVELOPMENT.md) - Local development and testing guide
|
|
481
|
-
- [
|
|
482
|
-
- [
|
|
483
|
-
- [Publishing Guide](PUBLISHING_SETUP.md) - How to publish to npm
|
|
484
|
-
- [OpenCode Documentation](https://opencode.ai/docs)
|
|
485
|
-
- [GitLab API](https://docs.gitlab.com/ee/api/)
|
|
619
|
+
- [Architecture Document](ARCHITECTURE.md) - Pi runtime architecture
|
|
620
|
+
- [Pi Documentation](https://github.com/badlogic/pi-mono)
|
|
486
621
|
|
|
487
622
|
## Contributing
|
|
488
623
|
|
|
@@ -490,5 +625,6 @@ Contributions welcome! Please read the contributing guidelines first.
|
|
|
490
625
|
|
|
491
626
|
## Support
|
|
492
627
|
|
|
493
|
-
- Issues: [GitHub Issues](https://github.com/
|
|
494
|
-
- Discussions: [GitHub Discussions](https://github.com/
|
|
628
|
+
- Issues: [GitHub Issues](https://github.com/manojlds/drs/issues)
|
|
629
|
+
- Discussions: [GitHub Discussions](https://github.com/manojlds/drs/discussions)
|
|
630
|
+
- Repository: [github.com/manojlds/drs](https://github.com/manojlds/drs)
|
package/dist/ci/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/ci/runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/ci/runner.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAgBnD;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAwDjD;AAED;;GAEG;AACH,wBAAgB,IAAI,IAAI,OAAO,CAE9B"}
|
package/dist/ci/runner.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
1
|
import { loadConfig, validateConfig } from '../lib/config.js';
|
|
2
|
+
import { exitProcess } from '../lib/exit.js';
|
|
3
|
+
import { getLogger } from '../lib/logger.js';
|
|
3
4
|
import { reviewMR } from '../cli/review-mr.js';
|
|
4
5
|
/**
|
|
5
6
|
* Detect CI environment from environment variables
|
|
@@ -24,59 +25,56 @@ export function detectCIEnvironment() {
|
|
|
24
25
|
* Run review in CI/CD environment
|
|
25
26
|
*/
|
|
26
27
|
export async function runCIReview() {
|
|
27
|
-
|
|
28
|
+
const log = getLogger();
|
|
29
|
+
log.info('DRS CI/CD Analysis Runner starting');
|
|
28
30
|
// Detect environment
|
|
29
31
|
const env = detectCIEnvironment();
|
|
30
32
|
if (env.platform === 'unknown') {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
process.exit(1);
|
|
33
|
+
log.error('Unknown CI environment. Currently supported: GitLab CI');
|
|
34
|
+
exitProcess(1);
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
+
log.info(`Detected CI platform: ${env.platform}`);
|
|
36
37
|
// Validate required environment variables
|
|
37
38
|
if (!env.projectId) {
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
log.error('CI_PROJECT_ID not found');
|
|
40
|
+
exitProcess(1);
|
|
40
41
|
}
|
|
41
42
|
if (!env.mrIid) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
process.exit(1);
|
|
43
|
+
log.error('CI_MERGE_REQUEST_IID not found. This job should only run on merge requests');
|
|
44
|
+
exitProcess(1);
|
|
45
45
|
}
|
|
46
46
|
// Load configuration
|
|
47
|
-
const projectDir = process.env.CI_PROJECT_DIR
|
|
47
|
+
const projectDir = process.env.CI_PROJECT_DIR ?? process.cwd();
|
|
48
48
|
const config = loadConfig(projectDir);
|
|
49
49
|
try {
|
|
50
50
|
validateConfig(config);
|
|
51
51
|
}
|
|
52
52
|
catch (error) {
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
log.error(`Configuration error: ${error instanceof Error ? error.message : String(error)}`);
|
|
54
|
+
exitProcess(1);
|
|
55
55
|
}
|
|
56
|
-
|
|
57
|
-
console.log(chalk.gray(`MR: !${env.mrIid}`));
|
|
58
|
-
console.log(chalk.gray(`Branch: ${env.sourceBranch} ā ${env.targetBranch}\n`));
|
|
56
|
+
log.info(`Project: ${env.projectId} | MR: !${env.mrIid} | Branch: ${env.sourceBranch} ā ${env.targetBranch}`);
|
|
59
57
|
// Run review
|
|
60
58
|
try {
|
|
61
59
|
await reviewMR(config, {
|
|
62
60
|
projectId: env.projectId,
|
|
63
61
|
mrIid: env.mrIid,
|
|
64
62
|
postComments: true, // Always post comments in CI
|
|
63
|
+
postErrorComment: config.review.postErrorComment ?? false,
|
|
65
64
|
describe: config.review.describe?.enabled ?? false,
|
|
66
65
|
postDescription: config.review.describe?.postDescription ?? false,
|
|
67
66
|
});
|
|
68
|
-
|
|
67
|
+
log.info('Review complete');
|
|
69
68
|
}
|
|
70
69
|
catch (error) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
process.exit(1);
|
|
70
|
+
log.error('Review failed', undefined, error);
|
|
71
|
+
exitProcess(1);
|
|
74
72
|
}
|
|
75
73
|
}
|
|
76
74
|
/**
|
|
77
75
|
* Check if running in CI environment
|
|
78
76
|
*/
|
|
79
77
|
export function isCI() {
|
|
80
|
-
return !!(process.env.CI
|
|
78
|
+
return !!(process.env.CI ?? process.env.GITLAB_CI ?? process.env.GITHUB_ACTIONS);
|
|
81
79
|
}
|
|
82
80
|
//# sourceMappingURL=runner.js.map
|
package/dist/ci/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/ci/runner.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/ci/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe-mr.d.ts","sourceRoot":"","sources":["../../src/cli/describe-mr.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"describe-mr.d.ts","sourceRoot":"","sources":["../../src/cli/describe-mr.ts"],"names":[],"mappings":"AACA,OAAO,EAA+C,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAwB/F,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,iBAuJ7E"}
|