@wuyanbin/ai-code-review-cli-remote 1.0.25 → 1.0.26
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/dist/core/run-report-fields.d.ts +25 -0
- package/dist/core/run-report-fields.d.ts.map +1 -0
- package/dist/core/run-report-fields.js +68 -0
- package/dist/core/run-report-fields.js.map +1 -0
- package/dist/platform/config.d.ts.map +1 -1
- package/dist/platform/config.js +3 -1
- package/dist/platform/config.js.map +1 -1
- package/dist/platform/report.d.ts +6 -0
- package/dist/platform/report.d.ts.map +1 -1
- package/dist/platform/report.js.map +1 -1
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +7 -0
- package/dist/runner.js.map +1 -1
- package/package.json +1 -1
- package/dist/client.d.ts +0 -18
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -57
- package/dist/client.js.map +0 -1
- package/dist/config.d.ts +0 -11
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -161
- package/dist/config.js.map +0 -1
- package/dist/core/priority.d.ts +0 -8
- package/dist/core/priority.d.ts.map +0 -1
- package/dist/core/priority.js +0 -48
- package/dist/core/priority.js.map +0 -1
- package/dist/diff.d.ts +0 -6
- package/dist/diff.d.ts.map +0 -1
- package/dist/diff.js +0 -127
- package/dist/diff.js.map +0 -1
- package/dist/formatters.d.ts +0 -4
- package/dist/formatters.d.ts.map +0 -1
- package/dist/formatters.js +0 -31
- package/dist/formatters.js.map +0 -1
- package/dist/gitlab.d.ts +0 -11
- package/dist/gitlab.d.ts.map +0 -1
- package/dist/gitlab.js +0 -193
- package/dist/gitlab.js.map +0 -1
- package/dist/http.d.ts +0 -4
- package/dist/http.d.ts.map +0 -1
- package/dist/http.js +0 -31
- package/dist/http.js.map +0 -1
- package/dist/model.d.ts +0 -6
- package/dist/model.d.ts.map +0 -1
- package/dist/model.js +0 -120
- package/dist/model.js.map +0 -1
- package/dist/report.d.ts +0 -9
- package/dist/report.d.ts.map +0 -1
- package/dist/report.js +0 -31
- package/dist/report.js.map +0 -1
- package/dist/reviewer.d.ts +0 -3
- package/dist/reviewer.d.ts.map +0 -1
- package/dist/reviewer.js +0 -140
- package/dist/reviewer.js.map +0 -1
- package/dist/summarizer.d.ts +0 -3
- package/dist/summarizer.d.ts.map +0 -1
- package/dist/summarizer.js +0 -75
- package/dist/summarizer.js.map +0 -1
package/dist/reviewer.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../src/reviewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAgI5D,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA4B5B"}
|
package/dist/reviewer.js
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.reviewCode = reviewCode;
|
|
4
|
-
const diff_1 = require("./diff");
|
|
5
|
-
const model_1 = require("./model");
|
|
6
|
-
const SEVERITY_ORDER = { info: 0, warning: 1, error: 2 };
|
|
7
|
-
const COMMON_RULES = [
|
|
8
|
-
"重点关注潜在 bug、性能问题、可读性与安全性(如 XSS、注入、敏感信息泄露)",
|
|
9
|
-
"代码要有适当的错误处理",
|
|
10
|
-
"避免代码重复,注意抽离复用逻辑",
|
|
11
|
-
"函数和变量命名要语义化,见名知意",
|
|
12
|
-
"复杂逻辑要添加注释说明",
|
|
13
|
-
];
|
|
14
|
-
function buildSystemPrompt() {
|
|
15
|
-
return "你是一个资深的代码审查助手,需要根据给定的 Git diff 和项目规范,对改动的代码进行严格的 Code Review。";
|
|
16
|
-
}
|
|
17
|
-
function buildUserPrompt(diff, rules) {
|
|
18
|
-
return [
|
|
19
|
-
"请你只针对 diff 中【新增或修改】的代码行给出审查意见。",
|
|
20
|
-
"输出格式要求:必须返回严格的 JSON,形如:",
|
|
21
|
-
'{"comments":[{"file":"src/xxx.ts","line":123,"code":"该行完整代码","severity":"warning","message":"问题描述","suggestion":"修复建议"}]}',
|
|
22
|
-
"注意:severity 只能是 info / warning / error;file 必须使用 diff 中出现的路径;line 必须是 new file 侧真实行号;只能评论新增行。",
|
|
23
|
-
"",
|
|
24
|
-
"可评论行索引:",
|
|
25
|
-
(0, diff_1.buildAddedLinesIndexText)(diff),
|
|
26
|
-
"",
|
|
27
|
-
"项目规范:",
|
|
28
|
-
rules.join("\n"),
|
|
29
|
-
"",
|
|
30
|
-
"Git diff:",
|
|
31
|
-
diff,
|
|
32
|
-
].join("\n");
|
|
33
|
-
}
|
|
34
|
-
function stripFences(text) {
|
|
35
|
-
return (text ?? "")
|
|
36
|
-
.replace(/^```(?:json)?\s*/i, "")
|
|
37
|
-
.replace(/```$/i, "")
|
|
38
|
-
.trim();
|
|
39
|
-
}
|
|
40
|
-
function extractJsonObject(content) {
|
|
41
|
-
const text = stripFences(content);
|
|
42
|
-
const start = text.indexOf("{");
|
|
43
|
-
const end = text.lastIndexOf("}");
|
|
44
|
-
if (start >= 0 && end > start)
|
|
45
|
-
return text.slice(start, end + 1);
|
|
46
|
-
return text;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* 修复 JSON 字符串字面量中的非法控制字符(未转义的 \n/\r/\t 或其他 0x00-0x1F)。
|
|
50
|
-
* 逐字符扫描,仅在 JSON 字符串内部将裸控制字符替换为合法转义序列。
|
|
51
|
-
*/
|
|
52
|
-
function escapeControlCharsInJsonStrings(json) {
|
|
53
|
-
let out = "";
|
|
54
|
-
let inString = false;
|
|
55
|
-
let escape = false;
|
|
56
|
-
for (let i = 0; i < json.length; i++) {
|
|
57
|
-
const ch = json[i];
|
|
58
|
-
if (!inString) {
|
|
59
|
-
if (ch === '"')
|
|
60
|
-
inString = true;
|
|
61
|
-
out += ch;
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
if (escape) {
|
|
65
|
-
out += ch;
|
|
66
|
-
escape = false;
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
if (ch === "\\") {
|
|
70
|
-
out += ch;
|
|
71
|
-
escape = true;
|
|
72
|
-
continue;
|
|
73
|
-
}
|
|
74
|
-
if (ch === '"') {
|
|
75
|
-
out += ch;
|
|
76
|
-
inString = false;
|
|
77
|
-
continue;
|
|
78
|
-
}
|
|
79
|
-
const code = ch.charCodeAt(0);
|
|
80
|
-
if (code < 0x20) {
|
|
81
|
-
if (ch === "\n")
|
|
82
|
-
out += "\\n";
|
|
83
|
-
else if (ch === "\r")
|
|
84
|
-
out += "\\r";
|
|
85
|
-
else if (ch === "\t")
|
|
86
|
-
out += "\\t";
|
|
87
|
-
else if (ch === "\b")
|
|
88
|
-
out += "\\b";
|
|
89
|
-
else if (ch === "\f")
|
|
90
|
-
out += "\\f";
|
|
91
|
-
else
|
|
92
|
-
out += `\\u${code.toString(16).padStart(4, "0")}`;
|
|
93
|
-
continue;
|
|
94
|
-
}
|
|
95
|
-
out += ch;
|
|
96
|
-
}
|
|
97
|
-
return out;
|
|
98
|
-
}
|
|
99
|
-
function parseAIResponse(content) {
|
|
100
|
-
const jsonText = extractJsonObject(content);
|
|
101
|
-
try {
|
|
102
|
-
const parsed = JSON.parse(jsonText);
|
|
103
|
-
return { comments: Array.isArray(parsed.comments) ? parsed.comments : [] };
|
|
104
|
-
}
|
|
105
|
-
catch {
|
|
106
|
-
// 尝试修复 JSON 字符串内未转义的控制字符后重新解析
|
|
107
|
-
try {
|
|
108
|
-
const repaired = escapeControlCharsInJsonStrings(jsonText);
|
|
109
|
-
const parsed = JSON.parse(repaired);
|
|
110
|
-
return { comments: Array.isArray(parsed.comments) ? parsed.comments : [] };
|
|
111
|
-
}
|
|
112
|
-
catch (retryError) {
|
|
113
|
-
console.error("[reviewer] AI 返回 JSON 解析失败");
|
|
114
|
-
console.error(retryError);
|
|
115
|
-
return null;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
async function reviewCode(diff, config) {
|
|
120
|
-
const effectiveDiff = (0, diff_1.filterDiffByIgnore)(diff, config.review.ignore);
|
|
121
|
-
if (!effectiveDiff.trim())
|
|
122
|
-
return { comments: [] };
|
|
123
|
-
if (!config.ai.apiKey || !config.ai.endpoint)
|
|
124
|
-
return null;
|
|
125
|
-
const adapter = (0, model_1.createModelAdapter)(config.ai.endpoint, config.ai.apiKey, config.ai.apiFormat);
|
|
126
|
-
const raw = await adapter.call(config.ai.model, buildSystemPrompt(), buildUserPrompt(effectiveDiff, [...COMMON_RULES, ...config.rules.custom]));
|
|
127
|
-
if (!raw)
|
|
128
|
-
return null;
|
|
129
|
-
const parsed = parseAIResponse(raw);
|
|
130
|
-
if (!parsed)
|
|
131
|
-
return null;
|
|
132
|
-
const minSeverity = SEVERITY_ORDER[config.review.severity];
|
|
133
|
-
let comments = (0, diff_1.alignCommentsToDiffAddedLines)(effectiveDiff, parsed.comments)
|
|
134
|
-
.filter((c) => SEVERITY_ORDER[c.severity] >= minSeverity);
|
|
135
|
-
if (comments.length > config.review.maxComments) {
|
|
136
|
-
comments = comments.slice(0, config.review.maxComments);
|
|
137
|
-
}
|
|
138
|
-
return { comments };
|
|
139
|
-
}
|
|
140
|
-
//# sourceMappingURL=reviewer.js.map
|
package/dist/reviewer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../src/reviewer.ts"],"names":[],"mappings":"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"}
|
package/dist/summarizer.d.ts
DELETED
package/dist/summarizer.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"summarizer.d.ts","sourceRoot":"","sources":["../src/summarizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA0DhD,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBxB"}
|
package/dist/summarizer.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateSummary = generateSummary;
|
|
4
|
-
const diff_1 = require("./diff");
|
|
5
|
-
const model_1 = require("./model");
|
|
6
|
-
function buildSummarySystemPrompt() {
|
|
7
|
-
return [
|
|
8
|
-
"你是一位资深开发工程师,擅长分析代码改动并生成清晰的技术摘要。",
|
|
9
|
-
"根据给定 Git diff 生成中文 Markdown 汇总。",
|
|
10
|
-
"必须直接输出纯 Markdown 文本,不要返回 JSON,不要用代码块包裹。",
|
|
11
|
-
].join("\n");
|
|
12
|
-
}
|
|
13
|
-
function buildSummaryUserPrompt(diff) {
|
|
14
|
-
return [
|
|
15
|
-
"请根据以下 Git diff 生成一份代码改动汇总报告。",
|
|
16
|
-
"",
|
|
17
|
-
"## 概述",
|
|
18
|
-
"用 1-2 句话说明整体目的和范围。",
|
|
19
|
-
"",
|
|
20
|
-
"## 主要变更",
|
|
21
|
-
"按新功能、Bug 修复、重构优化、依赖更新、配置调整分类列出。",
|
|
22
|
-
"",
|
|
23
|
-
"## 受影响文件",
|
|
24
|
-
"用表格列出文件路径、变更类型、说明。",
|
|
25
|
-
"",
|
|
26
|
-
"## 注意事项",
|
|
27
|
-
"列出需要关注的风险;没有则写\u201C无\u201D。",
|
|
28
|
-
"",
|
|
29
|
-
"Git diff:",
|
|
30
|
-
diff,
|
|
31
|
-
].join("\n");
|
|
32
|
-
}
|
|
33
|
-
function cleanMarkdownResponse(content) {
|
|
34
|
-
let text = content.trim();
|
|
35
|
-
if (text.startsWith("```markdown"))
|
|
36
|
-
text = text.slice("```markdown".length);
|
|
37
|
-
else if (text.startsWith("```md"))
|
|
38
|
-
text = text.slice("```md".length);
|
|
39
|
-
else if (text.startsWith("```json"))
|
|
40
|
-
text = text.slice("```json".length);
|
|
41
|
-
else if (text.startsWith("```"))
|
|
42
|
-
text = text.slice(3);
|
|
43
|
-
if (text.endsWith("```"))
|
|
44
|
-
text = text.slice(0, -3);
|
|
45
|
-
text = text.trim();
|
|
46
|
-
if (text.startsWith("{") || text.startsWith('"')) {
|
|
47
|
-
try {
|
|
48
|
-
const parsed = JSON.parse(text);
|
|
49
|
-
if (typeof parsed === "string")
|
|
50
|
-
return parsed.trim();
|
|
51
|
-
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
52
|
-
const first = Object.values(parsed).find((value) => typeof value === "string");
|
|
53
|
-
if (first)
|
|
54
|
-
return first.trim();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
// keep text as-is
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return text.replace(/\\n/g, "\n").trim();
|
|
62
|
-
}
|
|
63
|
-
async function generateSummary(diff, config) {
|
|
64
|
-
if (!config.summary.enabled)
|
|
65
|
-
return null;
|
|
66
|
-
const effectiveDiff = (0, diff_1.filterDiffByIgnore)(diff, config.review.ignore);
|
|
67
|
-
if (!effectiveDiff.trim())
|
|
68
|
-
return null;
|
|
69
|
-
if (!config.ai.apiKey || !config.ai.endpoint)
|
|
70
|
-
return null;
|
|
71
|
-
const adapter = (0, model_1.createModelAdapter)(config.ai.endpoint, config.ai.apiKey, config.ai.apiFormat);
|
|
72
|
-
const raw = await adapter.call(config.ai.model, buildSummarySystemPrompt(), buildSummaryUserPrompt(effectiveDiff));
|
|
73
|
-
return raw ? cleanMarkdownResponse(raw) : null;
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=summarizer.js.map
|
package/dist/summarizer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"summarizer.js","sourceRoot":"","sources":["../src/summarizer.ts"],"names":[],"mappings":"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"}
|