@diff-review-system/drs 1.0.0 → 2.0.0
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/.opencode/agent/describe/pr-describer.md +221 -0
- package/.opencode/agent/review/documentation.md +56 -0
- package/.opencode/agent/review/performance.md +32 -130
- package/.opencode/agent/review/quality.md +36 -104
- package/.opencode/agent/review/security.md +32 -94
- package/.opencode/agent/review/style.md +26 -10
- package/.opencode/agent/review/unified-reviewer.md +74 -0
- package/.opencode/opencode.jsonc +4 -41
- package/.opencode/tool/write_json_output.ts +24 -0
- package/README.md +215 -82
- package/dist/ci/runner.d.ts.map +1 -1
- package/dist/ci/runner.js +4 -4
- package/dist/ci/runner.js.map +1 -1
- package/dist/cli/describe-mr.d.ts +11 -0
- package/dist/cli/describe-mr.d.ts.map +1 -0
- package/dist/cli/describe-mr.js +104 -0
- package/dist/cli/describe-mr.js.map +1 -0
- package/dist/cli/describe-pr.d.ts +12 -0
- package/dist/cli/describe-pr.d.ts.map +1 -0
- package/dist/cli/describe-pr.js +105 -0
- package/dist/cli/describe-pr.js.map +1 -0
- package/dist/cli/index.js +234 -20
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +337 -120
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/post-comments.d.ts +15 -0
- package/dist/cli/post-comments.d.ts.map +1 -0
- package/dist/cli/post-comments.js +216 -0
- package/dist/cli/post-comments.js.map +1 -0
- package/dist/cli/review-local.d.ts +3 -0
- package/dist/cli/review-local.d.ts.map +1 -1
- package/dist/cli/review-local.js +46 -63
- package/dist/cli/review-local.js.map +1 -1
- package/dist/cli/review-mr.d.ts +7 -0
- package/dist/cli/review-mr.d.ts.map +1 -1
- package/dist/cli/review-mr.js +88 -117
- package/dist/cli/review-mr.js.map +1 -1
- package/dist/cli/review-pr.d.ts +6 -0
- package/dist/cli/review-pr.d.ts.map +1 -1
- package/dist/cli/review-pr.js +81 -114
- package/dist/cli/review-pr.js.map +1 -1
- package/dist/cli/show-changes.d.ts +15 -0
- package/dist/cli/show-changes.d.ts.map +1 -0
- package/dist/cli/show-changes.js +184 -0
- package/dist/cli/show-changes.js.map +1 -0
- package/dist/github/client.d.ts +199 -4
- package/dist/github/client.d.ts.map +1 -1
- package/dist/github/client.js +37 -2
- package/dist/github/client.js.map +1 -1
- package/dist/github/client.test.d.ts +2 -0
- package/dist/github/client.test.d.ts.map +1 -0
- package/dist/github/client.test.js +206 -0
- package/dist/github/client.test.js.map +1 -0
- package/dist/github/platform-adapter.d.ts +31 -0
- package/dist/github/platform-adapter.d.ts.map +1 -0
- package/dist/github/platform-adapter.js +129 -0
- package/dist/github/platform-adapter.js.map +1 -0
- package/dist/github/platform-adapter.test.d.ts +2 -0
- package/dist/github/platform-adapter.test.d.ts.map +1 -0
- package/dist/github/platform-adapter.test.js +40 -0
- package/dist/github/platform-adapter.test.js.map +1 -0
- package/dist/gitlab/client.d.ts +12 -0
- package/dist/gitlab/client.d.ts.map +1 -1
- package/dist/gitlab/client.js +19 -1
- package/dist/gitlab/client.js.map +1 -1
- package/dist/gitlab/diff-parser.test.d.ts +2 -0
- package/dist/gitlab/diff-parser.test.d.ts.map +1 -0
- package/dist/gitlab/diff-parser.test.js +315 -0
- package/dist/gitlab/diff-parser.test.js.map +1 -0
- package/dist/gitlab/platform-adapter.d.ts +27 -0
- package/dist/gitlab/platform-adapter.d.ts.map +1 -0
- package/dist/gitlab/platform-adapter.js +121 -0
- package/dist/gitlab/platform-adapter.js.map +1 -0
- package/dist/gitlab/platform-adapter.test.d.ts +2 -0
- package/dist/gitlab/platform-adapter.test.d.ts.map +1 -0
- package/dist/gitlab/platform-adapter.test.js +21 -0
- package/dist/gitlab/platform-adapter.test.js.map +1 -0
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +7 -0
- package/dist/index.test.js.map +1 -0
- package/dist/lib/change-summary.d.ts +8 -0
- package/dist/lib/change-summary.d.ts.map +1 -0
- package/dist/lib/change-summary.js +2 -0
- package/dist/lib/change-summary.js.map +1 -0
- package/dist/lib/code-quality-report.d.ts +44 -0
- package/dist/lib/code-quality-report.d.ts.map +1 -0
- package/dist/lib/code-quality-report.js +62 -0
- package/dist/lib/code-quality-report.js.map +1 -0
- package/dist/lib/code-quality-report.test.d.ts +2 -0
- package/dist/lib/code-quality-report.test.d.ts.map +1 -0
- package/dist/lib/code-quality-report.test.js +327 -0
- package/dist/lib/code-quality-report.test.js.map +1 -0
- package/dist/{gitlab → lib}/comment-formatter.d.ts +6 -3
- package/dist/lib/comment-formatter.d.ts.map +1 -0
- package/dist/{gitlab → lib}/comment-formatter.js +63 -16
- package/dist/lib/comment-formatter.js.map +1 -0
- package/dist/lib/comment-formatter.test.d.ts +2 -0
- package/dist/lib/comment-formatter.test.d.ts.map +1 -0
- package/dist/lib/comment-formatter.test.js +607 -0
- package/dist/lib/comment-formatter.test.js.map +1 -0
- package/dist/lib/comment-manager.d.ts +61 -0
- package/dist/lib/comment-manager.d.ts.map +1 -0
- package/dist/lib/comment-manager.js +91 -0
- package/dist/lib/comment-manager.js.map +1 -0
- package/dist/lib/comment-manager.test.d.ts +2 -0
- package/dist/lib/comment-manager.test.d.ts.map +1 -0
- package/dist/lib/comment-manager.test.js +618 -0
- package/dist/lib/comment-manager.test.js.map +1 -0
- package/dist/lib/comment-poster.d.ts +21 -0
- package/dist/lib/comment-poster.d.ts.map +1 -0
- package/dist/lib/comment-poster.js +96 -0
- package/dist/lib/comment-poster.js.map +1 -0
- package/dist/lib/comment-poster.test.d.ts +5 -0
- package/dist/lib/comment-poster.test.d.ts.map +1 -0
- package/dist/lib/comment-poster.test.js +215 -0
- package/dist/lib/comment-poster.test.js.map +1 -0
- package/dist/lib/config-model-overrides.test.d.ts +12 -0
- package/dist/lib/config-model-overrides.test.d.ts.map +1 -0
- package/dist/lib/config-model-overrides.test.js +254 -0
- package/dist/lib/config-model-overrides.test.js.map +1 -0
- package/dist/lib/config.d.ts +93 -8
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +178 -25
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/config.test.d.ts +2 -0
- package/dist/lib/config.test.d.ts.map +1 -0
- package/dist/lib/config.test.js +36 -0
- package/dist/lib/config.test.js.map +1 -0
- package/dist/lib/context-compression.d.ts +19 -0
- package/dist/lib/context-compression.d.ts.map +1 -0
- package/dist/lib/context-compression.js +170 -0
- package/dist/lib/context-compression.js.map +1 -0
- package/dist/lib/context-compression.test.d.ts +2 -0
- package/dist/lib/context-compression.test.d.ts.map +1 -0
- package/dist/lib/context-compression.test.js +33 -0
- package/dist/lib/context-compression.test.js.map +1 -0
- package/dist/lib/context-loader.d.ts +29 -0
- package/dist/lib/context-loader.d.ts.map +1 -0
- package/dist/lib/context-loader.js +75 -0
- package/dist/lib/context-loader.js.map +1 -0
- package/dist/lib/context-loader.test.d.ts +2 -0
- package/dist/lib/context-loader.test.d.ts.map +1 -0
- package/dist/lib/context-loader.test.js +207 -0
- package/dist/lib/context-loader.test.js.map +1 -0
- package/dist/lib/describe-core.d.ts +9 -0
- package/dist/lib/describe-core.d.ts.map +1 -0
- package/dist/lib/describe-core.js +71 -0
- package/dist/lib/describe-core.js.map +1 -0
- package/dist/lib/describe-core.test.d.ts +2 -0
- package/dist/lib/describe-core.test.d.ts.map +1 -0
- package/dist/lib/describe-core.test.js +208 -0
- package/dist/lib/describe-core.test.js.map +1 -0
- package/dist/lib/describe-output-path.test.d.ts +2 -0
- package/dist/lib/describe-output-path.test.d.ts.map +1 -0
- package/dist/lib/describe-output-path.test.js +51 -0
- package/dist/lib/describe-output-path.test.js.map +1 -0
- package/dist/lib/describe-parser.d.ts +3 -0
- package/dist/lib/describe-parser.d.ts.map +1 -0
- package/dist/lib/describe-parser.js +163 -0
- package/dist/lib/describe-parser.js.map +1 -0
- package/dist/lib/describe-parser.test.d.ts +2 -0
- package/dist/lib/describe-parser.test.d.ts.map +1 -0
- package/dist/lib/describe-parser.test.js +282 -0
- package/dist/lib/describe-parser.test.js.map +1 -0
- package/dist/lib/description-executor.d.ts +22 -0
- package/dist/lib/description-executor.d.ts.map +1 -0
- package/dist/lib/description-executor.js +72 -0
- package/dist/lib/description-executor.js.map +1 -0
- package/dist/lib/description-formatter.d.ts +37 -0
- package/dist/lib/description-formatter.d.ts.map +1 -0
- package/dist/lib/description-formatter.js +219 -0
- package/dist/lib/description-formatter.js.map +1 -0
- package/dist/{gitlab → lib}/diff-parser.d.ts +11 -0
- package/dist/lib/diff-parser.d.ts.map +1 -0
- package/dist/{gitlab → lib}/diff-parser.js +40 -3
- package/dist/lib/diff-parser.js.map +1 -0
- package/dist/lib/issue-parser.d.ts +29 -0
- package/dist/lib/issue-parser.d.ts.map +1 -0
- package/dist/lib/issue-parser.js +153 -0
- package/dist/lib/issue-parser.js.map +1 -0
- package/dist/lib/issue-parser.test.d.ts +2 -0
- package/dist/lib/issue-parser.test.d.ts.map +1 -0
- package/dist/lib/issue-parser.test.js +281 -0
- package/dist/lib/issue-parser.test.js.map +1 -0
- package/dist/lib/json-output-schema.d.ts +207 -0
- package/dist/lib/json-output-schema.d.ts.map +1 -0
- package/dist/lib/json-output-schema.js +124 -0
- package/dist/lib/json-output-schema.js.map +1 -0
- package/dist/lib/json-output-schema.test.d.ts +2 -0
- package/dist/lib/json-output-schema.test.d.ts.map +1 -0
- package/dist/lib/json-output-schema.test.js +92 -0
- package/dist/lib/json-output-schema.test.js.map +1 -0
- package/dist/lib/json-output.d.ts +43 -0
- package/dist/lib/json-output.d.ts.map +1 -0
- package/dist/lib/json-output.js +34 -0
- package/dist/lib/json-output.js.map +1 -0
- package/dist/lib/output-paths.d.ts +6 -0
- package/dist/lib/output-paths.d.ts.map +1 -0
- package/dist/lib/output-paths.js +5 -0
- package/dist/lib/output-paths.js.map +1 -0
- package/dist/lib/platform-client.d.ts +130 -0
- package/dist/lib/platform-client.d.ts.map +1 -0
- package/dist/lib/platform-client.js +8 -0
- package/dist/lib/platform-client.js.map +1 -0
- package/dist/lib/position-validator.d.ts +36 -0
- package/dist/lib/position-validator.d.ts.map +1 -0
- package/dist/lib/position-validator.js +43 -0
- package/dist/lib/position-validator.js.map +1 -0
- package/dist/lib/repository-validator.d.ts +52 -0
- package/dist/lib/repository-validator.d.ts.map +1 -0
- package/dist/lib/repository-validator.js +219 -0
- package/dist/lib/repository-validator.js.map +1 -0
- package/dist/lib/repository-validator.test.d.ts +5 -0
- package/dist/lib/repository-validator.test.d.ts.map +1 -0
- package/dist/lib/repository-validator.test.js +341 -0
- package/dist/lib/repository-validator.test.js.map +1 -0
- package/dist/lib/review-core.d.ts +66 -0
- package/dist/lib/review-core.d.ts.map +1 -0
- package/dist/lib/review-core.js +449 -0
- package/dist/lib/review-core.js.map +1 -0
- package/dist/lib/review-core.test.d.ts +2 -0
- package/dist/lib/review-core.test.d.ts.map +1 -0
- package/dist/lib/review-core.test.js +552 -0
- package/dist/lib/review-core.test.js.map +1 -0
- package/dist/lib/review-orchestrator.d.ts +77 -0
- package/dist/lib/review-orchestrator.d.ts.map +1 -0
- package/dist/lib/review-orchestrator.js +124 -0
- package/dist/lib/review-orchestrator.js.map +1 -0
- package/dist/lib/review-orchestrator.test.d.ts +2 -0
- package/dist/lib/review-orchestrator.test.d.ts.map +1 -0
- package/dist/lib/review-orchestrator.test.js +413 -0
- package/dist/lib/review-orchestrator.test.js.map +1 -0
- package/dist/lib/review-output-path.test.d.ts +2 -0
- package/dist/lib/review-output-path.test.d.ts.map +1 -0
- package/dist/lib/review-output-path.test.js +83 -0
- package/dist/lib/review-output-path.test.js.map +1 -0
- package/dist/lib/review-parser.d.ts +2 -0
- package/dist/lib/review-parser.d.ts.map +1 -0
- package/dist/lib/review-parser.js +100 -0
- package/dist/lib/review-parser.js.map +1 -0
- package/dist/lib/unified-review-executor.d.ts +49 -0
- package/dist/lib/unified-review-executor.d.ts.map +1 -0
- package/dist/lib/unified-review-executor.js +158 -0
- package/dist/lib/unified-review-executor.js.map +1 -0
- package/dist/lib/unified-review-executor.test.d.ts +5 -0
- package/dist/lib/unified-review-executor.test.d.ts.map +1 -0
- package/dist/lib/unified-review-executor.test.js +344 -0
- package/dist/lib/unified-review-executor.test.js.map +1 -0
- package/dist/lib/write-json-output.d.ts +13 -0
- package/dist/lib/write-json-output.d.ts.map +1 -0
- package/dist/lib/write-json-output.js +37 -0
- package/dist/lib/write-json-output.js.map +1 -0
- package/dist/opencode/agent-loader.d.ts +3 -4
- package/dist/opencode/agent-loader.d.ts.map +1 -1
- package/dist/opencode/agent-loader.js +51 -42
- package/dist/opencode/agent-loader.js.map +1 -1
- package/dist/opencode/agent-skill-overlay.d.ts +11 -0
- package/dist/opencode/agent-skill-overlay.d.ts.map +1 -0
- package/dist/opencode/agent-skill-overlay.js +164 -0
- package/dist/opencode/agent-skill-overlay.js.map +1 -0
- package/dist/opencode/client.d.ts +14 -5
- package/dist/opencode/client.d.ts.map +1 -1
- package/dist/opencode/client.js +311 -32
- package/dist/opencode/client.js.map +1 -1
- package/dist/opencode/client.test.d.ts +2 -0
- package/dist/opencode/client.test.d.ts.map +1 -0
- package/dist/opencode/client.test.js +317 -0
- package/dist/opencode/client.test.js.map +1 -0
- package/dist/opencode/opencode-paths.d.ts +2 -0
- package/dist/opencode/opencode-paths.d.ts.map +1 -0
- package/dist/opencode/opencode-paths.js +7 -0
- package/dist/opencode/opencode-paths.js.map +1 -0
- package/dist/opencode/skill-loader.d.ts +6 -0
- package/dist/opencode/skill-loader.d.ts.map +1 -0
- package/dist/opencode/skill-loader.js +36 -0
- package/dist/opencode/skill-loader.js.map +1 -0
- package/package.json +29 -20
- package/.opencode/agent/github-reviewer.md +0 -62
- package/.opencode/agent/gitlab-reviewer.md +0 -62
- package/.opencode/agent/local-reviewer.md +0 -71
- package/dist/gitlab/comment-formatter.d.ts.map +0 -1
- package/dist/gitlab/comment-formatter.js.map +0 -1
- package/dist/gitlab/diff-parser.d.ts.map +0 -1
- package/dist/gitlab/diff-parser.js.map +0 -1
package/dist/cli/review-mr.js
CHANGED
|
@@ -1,128 +1,99 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
1
|
import { createGitLabClient } from '../gitlab/client.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { formatSummaryComment, formatIssueComment, calculateSummary, } from '../gitlab/comment-formatter.js';
|
|
2
|
+
import { GitLabPlatformAdapter } from '../gitlab/platform-adapter.js';
|
|
3
|
+
import { executeUnifiedReview } from '../lib/unified-review-executor.js';
|
|
6
4
|
/**
|
|
7
|
-
*
|
|
5
|
+
* Parse a GitLab diff to extract valid line numbers for review comments
|
|
6
|
+
* GitLab only allows comments on lines that are in the diff (added or context)
|
|
8
7
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
console.log(chalk.gray(`Branch: ${mr.source_branch} → ${mr.target_branch}`));
|
|
20
|
-
console.log(chalk.gray(`Files changed: ${changes.length}\n`));
|
|
21
|
-
if (changes.length === 0) {
|
|
22
|
-
console.log(chalk.yellow('✓ No changes to review\n'));
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
// Parse diffs
|
|
26
|
-
const diffs = changes.map(change => parseDiff(change.diff)).flat();
|
|
27
|
-
const changedFiles = getChangedFiles(diffs);
|
|
28
|
-
// Connect to OpenCode (or start in-process if serverUrl is empty)
|
|
29
|
-
console.log(chalk.gray('Connecting to OpenCode server...\n'));
|
|
30
|
-
const opencode = await createOpencodeClientInstance({
|
|
31
|
-
baseUrl: config.opencode.serverUrl || undefined,
|
|
32
|
-
});
|
|
33
|
-
// Create review session
|
|
34
|
-
console.log(chalk.gray('Starting AI review...\n'));
|
|
35
|
-
const agentsList = config.review.agents.join(',');
|
|
36
|
-
const session = await opencode.createSession({
|
|
37
|
-
agent: 'gitlab-reviewer',
|
|
38
|
-
message: `Review MR !${options.mrIid} in project ${options.projectId}. Agents: ${agentsList}. Files: ${changedFiles.join(', ')}`,
|
|
39
|
-
context: {
|
|
40
|
-
projectId: options.projectId,
|
|
41
|
-
mrIid: options.mrIid,
|
|
42
|
-
files: changedFiles,
|
|
43
|
-
agents: config.review.agents,
|
|
44
|
-
mr: {
|
|
45
|
-
title: mr.title,
|
|
46
|
-
description: mr.description,
|
|
47
|
-
author: mr.author?.name,
|
|
48
|
-
sourceBranch: mr.source_branch,
|
|
49
|
-
targetBranch: mr.target_branch,
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
// Stream and collect results
|
|
54
|
-
const issues = [];
|
|
55
|
-
try {
|
|
56
|
-
for await (const message of opencode.streamMessages(session.id)) {
|
|
57
|
-
if (message.role === 'assistant') {
|
|
58
|
-
// Parse issues from assistant messages
|
|
59
|
-
// TODO: Implement structured output parsing once OpenCode SDK supports it
|
|
60
|
-
console.log(message.content);
|
|
61
|
-
// For now, we'll display raw output
|
|
62
|
-
// In production, parse structured JSON responses from agents
|
|
63
|
-
}
|
|
8
|
+
function parseValidLinesFromDiff(diff) {
|
|
9
|
+
const validLines = new Set();
|
|
10
|
+
const lines = diff.split('\n');
|
|
11
|
+
let currentLine = 0;
|
|
12
|
+
for (const line of lines) {
|
|
13
|
+
// Parse hunk header: @@ -old_start,old_count +new_start,new_count @@
|
|
14
|
+
const hunkMatch = line.match(/^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/);
|
|
15
|
+
if (hunkMatch) {
|
|
16
|
+
currentLine = parseInt(hunkMatch[1], 10);
|
|
17
|
+
continue;
|
|
64
18
|
}
|
|
65
|
-
//
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
console.log(` 🔴 Critical: ${chalk.red(summary.bySeverity.CRITICAL)}`);
|
|
74
|
-
console.log(` 🟡 High: ${chalk.yellow(summary.bySeverity.HIGH)}`);
|
|
75
|
-
console.log(` 🟠 Medium: ${chalk.hex('#FFA500')(summary.bySeverity.MEDIUM)}`);
|
|
76
|
-
console.log(` ⚪ Low: ${chalk.gray(summary.bySeverity.LOW)}`);
|
|
77
|
-
}
|
|
78
|
-
console.log('');
|
|
79
|
-
// Post comments to GitLab if requested
|
|
80
|
-
if (options.postComments) {
|
|
81
|
-
console.log(chalk.gray('Posting review comments to GitLab...\n'));
|
|
82
|
-
// Post summary comment
|
|
83
|
-
const summaryComment = formatSummaryComment(summary, issues);
|
|
84
|
-
await gitlab.createMRComment(options.projectId, options.mrIid, summaryComment);
|
|
85
|
-
// Post individual issue comments as discussion threads
|
|
86
|
-
for (const issue of issues) {
|
|
87
|
-
const diffRefs = mr.diff_refs;
|
|
88
|
-
if (issue.line && diffRefs && diffRefs.base_sha && diffRefs.head_sha && diffRefs.start_sha) {
|
|
89
|
-
try {
|
|
90
|
-
await gitlab.createMRDiscussionThread(options.projectId, options.mrIid, formatIssueComment(issue), {
|
|
91
|
-
baseSha: diffRefs.base_sha,
|
|
92
|
-
headSha: diffRefs.head_sha,
|
|
93
|
-
startSha: diffRefs.start_sha,
|
|
94
|
-
newPath: issue.file,
|
|
95
|
-
newLine: issue.line,
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
// If line-specific comment fails, post as general comment
|
|
100
|
-
console.warn(chalk.yellow(`Warning: Could not post line comment for ${issue.file}:${issue.line}`));
|
|
101
|
-
await gitlab.createMRComment(options.projectId, options.mrIid, formatIssueComment(issue));
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
// Post as general comment if no line number
|
|
106
|
-
await gitlab.createMRComment(options.projectId, options.mrIid, formatIssueComment(issue));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
// Add ai-reviewed label
|
|
110
|
-
await gitlab.addLabel(options.projectId, options.mrIid, ['ai-reviewed']);
|
|
111
|
-
console.log(chalk.green('✓ Review posted to GitLab MR\n'));
|
|
19
|
+
// Skip empty lines or lines without proper diff prefix
|
|
20
|
+
if (!line || line.length === 0)
|
|
21
|
+
continue;
|
|
22
|
+
const prefix = line[0];
|
|
23
|
+
if (prefix === '+') {
|
|
24
|
+
// Added line - can comment on this
|
|
25
|
+
validLines.add(currentLine);
|
|
26
|
+
currentLine++;
|
|
112
27
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
28
|
+
else if (prefix === ' ') {
|
|
29
|
+
// Context line - can comment on this
|
|
30
|
+
validLines.add(currentLine);
|
|
31
|
+
currentLine++;
|
|
117
32
|
}
|
|
118
|
-
else if (
|
|
119
|
-
|
|
33
|
+
else if (prefix === '-') {
|
|
34
|
+
// Removed line - cannot comment on "new" version, skip
|
|
35
|
+
continue;
|
|
120
36
|
}
|
|
121
37
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
38
|
+
return validLines;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Review a GitLab merge request
|
|
42
|
+
*/
|
|
43
|
+
export async function reviewMR(config, options) {
|
|
44
|
+
// Create GitLab client and adapter
|
|
45
|
+
const gitlabClient = createGitLabClient();
|
|
46
|
+
const platformClient = new GitLabPlatformAdapter(gitlabClient);
|
|
47
|
+
// Fetch MR details to get diff refs
|
|
48
|
+
const mr = await gitlabClient.getMergeRequest(options.projectId, options.mrIid);
|
|
49
|
+
// Fetch MR changes to build valid lines map
|
|
50
|
+
const changes = await gitlabClient.getMRChanges(options.projectId, options.mrIid);
|
|
51
|
+
// Build a map of file -> valid line numbers (lines that are in the diff)
|
|
52
|
+
const validLinesMap = new Map();
|
|
53
|
+
for (const change of changes) {
|
|
54
|
+
if (change.diff && !change.deletedFile) {
|
|
55
|
+
const validLines = parseValidLinesFromDiff(change.diff);
|
|
56
|
+
validLinesMap.set(change.newPath, validLines);
|
|
57
|
+
}
|
|
126
58
|
}
|
|
59
|
+
// Create line validator - only allow comments on lines that are in the diff
|
|
60
|
+
const diffRefs = mr.diff_refs;
|
|
61
|
+
const lineValidator = {
|
|
62
|
+
isValidLine(file, line) {
|
|
63
|
+
if (!diffRefs?.base_sha || !diffRefs.head_sha || !diffRefs.start_sha) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
const validLines = validLinesMap.get(file);
|
|
67
|
+
return validLines !== undefined && validLines.has(line);
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
// Create inline position builder
|
|
71
|
+
const createInlinePosition = (issue, platformData) => {
|
|
72
|
+
const data = platformData;
|
|
73
|
+
const refs = data.diff_refs;
|
|
74
|
+
return {
|
|
75
|
+
path: issue.file,
|
|
76
|
+
line: issue.line,
|
|
77
|
+
baseSha: refs?.base_sha,
|
|
78
|
+
headSha: refs?.head_sha,
|
|
79
|
+
startSha: refs?.start_sha,
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
// Execute unified review
|
|
83
|
+
await executeUnifiedReview(config, {
|
|
84
|
+
platformClient,
|
|
85
|
+
projectId: options.projectId,
|
|
86
|
+
prNumber: options.mrIid,
|
|
87
|
+
postComments: options.postComments,
|
|
88
|
+
codeQualityReport: options.codeQualityReport,
|
|
89
|
+
outputPath: options.outputPath,
|
|
90
|
+
jsonOutput: options.jsonOutput,
|
|
91
|
+
baseBranch: options.baseBranch,
|
|
92
|
+
lineValidator,
|
|
93
|
+
createInlinePosition,
|
|
94
|
+
describe: options.describe,
|
|
95
|
+
postDescription: options.postDescription,
|
|
96
|
+
debug: options.debug,
|
|
97
|
+
});
|
|
127
98
|
}
|
|
128
99
|
//# sourceMappingURL=review-mr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-mr.js","sourceRoot":"","sources":["../../src/cli/review-mr.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"review-mr.js","sourceRoot":"","sources":["../../src/cli/review-mr.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/review-pr.d.ts
CHANGED
|
@@ -4,6 +4,12 @@ export interface ReviewPROptions {
|
|
|
4
4
|
repo: string;
|
|
5
5
|
prNumber: number;
|
|
6
6
|
postComments: boolean;
|
|
7
|
+
describe: boolean;
|
|
8
|
+
postDescription: boolean;
|
|
9
|
+
outputPath?: string;
|
|
10
|
+
jsonOutput?: boolean;
|
|
11
|
+
baseBranch?: string;
|
|
12
|
+
debug?: boolean;
|
|
7
13
|
}
|
|
8
14
|
/**
|
|
9
15
|
* Review a GitHub pull request
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-pr.d.ts","sourceRoot":"","sources":["../../src/cli/review-pr.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"review-pr.d.ts","sourceRoot":"","sources":["../../src/cli/review-pr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAOlD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAwCD;;GAEG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDzF"}
|
package/dist/cli/review-pr.js
CHANGED
|
@@ -1,125 +1,92 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
1
|
import { createGitHubClient } from '../github/client.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { formatSummaryComment, formatIssueComment, calculateSummary, } from '../gitlab/comment-formatter.js';
|
|
2
|
+
import { GitHubPlatformAdapter } from '../github/platform-adapter.js';
|
|
3
|
+
import { executeUnifiedReview } from '../lib/unified-review-executor.js';
|
|
6
4
|
/**
|
|
7
|
-
*
|
|
5
|
+
* Parse a GitHub diff patch to extract valid line numbers for review comments
|
|
6
|
+
* GitHub only allows comments on lines that are in the diff (added, removed, or context)
|
|
8
7
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
console.log(chalk.gray(`Branch: ${pr.head.ref} → ${pr.base.ref}`));
|
|
20
|
-
console.log(chalk.gray(`Files changed: ${files.length}\n`));
|
|
21
|
-
if (files.length === 0) {
|
|
22
|
-
console.log(chalk.yellow('✓ No changes to review\n'));
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
// Parse diffs
|
|
26
|
-
const diffs = files
|
|
27
|
-
.filter(file => file.patch) // Only files with diffs
|
|
28
|
-
.map(file => parseDiff(file.patch || ''))
|
|
29
|
-
.flat();
|
|
30
|
-
const changedFiles = getChangedFiles(diffs);
|
|
31
|
-
// Connect to OpenCode (or start in-process if serverUrl is empty)
|
|
32
|
-
console.log(chalk.gray('Connecting to OpenCode server...\n'));
|
|
33
|
-
const opencode = await createOpencodeClientInstance({
|
|
34
|
-
baseUrl: config.opencode.serverUrl || undefined,
|
|
35
|
-
});
|
|
36
|
-
// Create review session
|
|
37
|
-
console.log(chalk.gray('Starting AI review...\n'));
|
|
38
|
-
const agentsList = config.review.agents.join(',');
|
|
39
|
-
const session = await opencode.createSession({
|
|
40
|
-
agent: 'github-reviewer',
|
|
41
|
-
message: `Review PR #${options.prNumber} in ${options.owner}/${options.repo}. Agents: ${agentsList}. Files: ${changedFiles.join(', ')}`,
|
|
42
|
-
context: {
|
|
43
|
-
owner: options.owner,
|
|
44
|
-
repo: options.repo,
|
|
45
|
-
prNumber: options.prNumber,
|
|
46
|
-
files: changedFiles,
|
|
47
|
-
agents: config.review.agents,
|
|
48
|
-
pr: {
|
|
49
|
-
title: pr.title,
|
|
50
|
-
description: pr.body,
|
|
51
|
-
author: pr.user?.login,
|
|
52
|
-
headRef: pr.head.ref,
|
|
53
|
-
baseRef: pr.base.ref,
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
// Stream and collect results
|
|
58
|
-
const issues = [];
|
|
59
|
-
try {
|
|
60
|
-
for await (const message of opencode.streamMessages(session.id)) {
|
|
61
|
-
if (message.role === 'assistant') {
|
|
62
|
-
// Parse issues from assistant messages
|
|
63
|
-
// TODO: Implement structured output parsing once OpenCode SDK supports it
|
|
64
|
-
console.log(message.content);
|
|
65
|
-
// For now, we'll display raw output
|
|
66
|
-
// In production, parse structured JSON responses from agents
|
|
67
|
-
}
|
|
8
|
+
function parseValidLinesFromPatch(patch) {
|
|
9
|
+
const validLines = new Set();
|
|
10
|
+
const lines = patch.split('\n');
|
|
11
|
+
let currentLine = 0;
|
|
12
|
+
for (const line of lines) {
|
|
13
|
+
// Parse hunk header: @@ -old_start,old_count +new_start,new_count @@
|
|
14
|
+
const hunkMatch = line.match(/^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/);
|
|
15
|
+
if (hunkMatch) {
|
|
16
|
+
currentLine = parseInt(hunkMatch[1], 10);
|
|
17
|
+
continue;
|
|
68
18
|
}
|
|
69
|
-
//
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
console.log(` 🔴 Critical: ${chalk.red(summary.bySeverity.CRITICAL)}`);
|
|
78
|
-
console.log(` 🟡 High: ${chalk.yellow(summary.bySeverity.HIGH)}`);
|
|
79
|
-
console.log(` 🟠 Medium: ${chalk.hex('#FFA500')(summary.bySeverity.MEDIUM)}`);
|
|
80
|
-
console.log(` ⚪ Low: ${chalk.gray(summary.bySeverity.LOW)}`);
|
|
19
|
+
// Skip empty lines or lines without proper diff prefix
|
|
20
|
+
if (!line || line.length === 0)
|
|
21
|
+
continue;
|
|
22
|
+
const prefix = line[0];
|
|
23
|
+
if (prefix === '+') {
|
|
24
|
+
// Added line - can comment on this
|
|
25
|
+
validLines.add(currentLine);
|
|
26
|
+
currentLine++;
|
|
81
27
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
// Post summary comment
|
|
87
|
-
const summaryComment = formatSummaryComment(summary, issues);
|
|
88
|
-
await github.createPRComment(options.owner, options.repo, options.prNumber, summaryComment);
|
|
89
|
-
// Post individual issue comments as review comments
|
|
90
|
-
for (const issue of issues) {
|
|
91
|
-
if (issue.line && pr.head.sha) {
|
|
92
|
-
try {
|
|
93
|
-
await github.createPRReviewComment(options.owner, options.repo, options.prNumber, formatIssueComment(issue), pr.head.sha, issue.file, issue.line);
|
|
94
|
-
}
|
|
95
|
-
catch (error) {
|
|
96
|
-
// If line-specific comment fails, post as general comment
|
|
97
|
-
console.warn(chalk.yellow(`Warning: Could not post line comment for ${issue.file}:${issue.line}`));
|
|
98
|
-
await github.createPRComment(options.owner, options.repo, options.prNumber, formatIssueComment(issue));
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
// Post as general comment if no line number
|
|
103
|
-
await github.createPRComment(options.owner, options.repo, options.prNumber, formatIssueComment(issue));
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
// Add ai-reviewed label
|
|
107
|
-
await github.addLabels(options.owner, options.repo, options.prNumber, ['ai-reviewed']);
|
|
108
|
-
console.log(chalk.green('✓ Review posted to GitHub PR\n'));
|
|
28
|
+
else if (prefix === ' ') {
|
|
29
|
+
// Context line - can comment on this
|
|
30
|
+
validLines.add(currentLine);
|
|
31
|
+
currentLine++;
|
|
109
32
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
process.exit(1);
|
|
114
|
-
}
|
|
115
|
-
else if (summary.issuesFound === 0) {
|
|
116
|
-
console.log(chalk.green('✓ No issues found! PR looks good.\n'));
|
|
33
|
+
else if (prefix === '-') {
|
|
34
|
+
// Removed line - cannot comment on "new" version, skip
|
|
35
|
+
continue;
|
|
117
36
|
}
|
|
118
37
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
38
|
+
return validLines;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Review a GitHub pull request
|
|
42
|
+
*/
|
|
43
|
+
export async function reviewPR(config, options) {
|
|
44
|
+
// Create GitHub client and adapter
|
|
45
|
+
const githubClient = createGitHubClient();
|
|
46
|
+
const platformClient = new GitHubPlatformAdapter(githubClient);
|
|
47
|
+
// Project ID in format "owner/repo"
|
|
48
|
+
const projectId = `${options.owner}/${options.repo}`;
|
|
49
|
+
// Fetch files to build line validator
|
|
50
|
+
const files = await githubClient.getPRFiles(options.owner, options.repo, options.prNumber);
|
|
51
|
+
// Build a map of file -> valid line numbers (lines that are in the diff)
|
|
52
|
+
const validLinesMap = new Map();
|
|
53
|
+
for (const file of files) {
|
|
54
|
+
if (file.patch && file.status !== 'removed') {
|
|
55
|
+
const validLines = parseValidLinesFromPatch(file.patch);
|
|
56
|
+
validLinesMap.set(file.filename, validLines);
|
|
57
|
+
}
|
|
123
58
|
}
|
|
59
|
+
// Create line validator
|
|
60
|
+
const lineValidator = {
|
|
61
|
+
isValidLine(file, line) {
|
|
62
|
+
const validLines = validLinesMap.get(file);
|
|
63
|
+
return validLines !== undefined && validLines.has(line);
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
// Create inline position builder
|
|
67
|
+
const createInlinePosition = (issue, platformData) => {
|
|
68
|
+
const data = platformData;
|
|
69
|
+
return {
|
|
70
|
+
path: issue.file,
|
|
71
|
+
line: issue.line,
|
|
72
|
+
commitSha: data.head.sha,
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
// Execute unified review
|
|
76
|
+
await executeUnifiedReview(config, {
|
|
77
|
+
platformClient,
|
|
78
|
+
projectId,
|
|
79
|
+
prNumber: options.prNumber,
|
|
80
|
+
postComments: options.postComments,
|
|
81
|
+
outputPath: options.outputPath,
|
|
82
|
+
jsonOutput: options.jsonOutput,
|
|
83
|
+
baseBranch: options.baseBranch,
|
|
84
|
+
lineValidator,
|
|
85
|
+
createInlinePosition,
|
|
86
|
+
workingDir: process.cwd(),
|
|
87
|
+
describe: options.describe,
|
|
88
|
+
postDescription: options.postDescription,
|
|
89
|
+
debug: options.debug,
|
|
90
|
+
});
|
|
124
91
|
}
|
|
125
92
|
//# sourceMappingURL=review-pr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-pr.js","sourceRoot":"","sources":["../../src/cli/review-pr.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"review-pr.js","sourceRoot":"","sources":["../../src/cli/review-pr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DRSConfig } from '../lib/config.js';
|
|
2
|
+
export interface ShowChangesOptions {
|
|
3
|
+
owner?: string;
|
|
4
|
+
repo?: string;
|
|
5
|
+
prNumber?: number;
|
|
6
|
+
projectId?: string;
|
|
7
|
+
mrIid?: number;
|
|
8
|
+
baseBranch?: string;
|
|
9
|
+
file?: string;
|
|
10
|
+
outputPath?: string;
|
|
11
|
+
jsonOutput?: boolean;
|
|
12
|
+
workingDir?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function showChanges(config: DRSConfig, options: ShowChangesOptions): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=show-changes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show-changes.d.ts","sourceRoot":"","sources":["../../src/cli/show-changes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAQlD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAyGD,wBAAsB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqH/F"}
|