@wuyanbin/ai-code-review-cli-remote 1.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/bin/ai-code-review-remote.js +11 -0
- package/dist/client.d.ts +4 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +77 -0
- package/dist/client.js.map +1 -0
- package/dist/constants.d.ts +8 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +11 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +77 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +20 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { reviewMain, summaryMain } = require("../dist/index");
|
|
4
|
+
|
|
5
|
+
const isSummary = process.argv.includes("--summary");
|
|
6
|
+
const run = isSummary ? summaryMain : reviewMain;
|
|
7
|
+
|
|
8
|
+
run().catch((error) => {
|
|
9
|
+
console.error("[ai-code-review-cli-remote] CLI 执行错误:", error);
|
|
10
|
+
process.exit(1);
|
|
11
|
+
});
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAmFvC,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAkBtE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAajE"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.remoteReview = remoteReview;
|
|
4
|
+
exports.remoteSummary = remoteSummary;
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
function getPlatformUrl() {
|
|
7
|
+
return (process.env[constants_1.ENV_PLATFORM_URL]?.replace(/\/+$/, "") || constants_1.DEFAULT_PLATFORM_URL);
|
|
8
|
+
}
|
|
9
|
+
function getProjectToken() {
|
|
10
|
+
const token = process.env[constants_1.ENV_PROJECT_TOKEN];
|
|
11
|
+
if (!token) {
|
|
12
|
+
throw new Error(`${constants_1.ENV_PROJECT_TOKEN} 未设置。请在 GitLab CI 变量中配置平台项目 Token。`);
|
|
13
|
+
}
|
|
14
|
+
return token;
|
|
15
|
+
}
|
|
16
|
+
async function callPlatformAPI(path, body) {
|
|
17
|
+
const token = getProjectToken();
|
|
18
|
+
const url = `${getPlatformUrl()}${path}`;
|
|
19
|
+
console.error(`[remote] POST ${url}`);
|
|
20
|
+
const controller = new AbortController();
|
|
21
|
+
const timeout = setTimeout(() => controller.abort(), constants_1.REQUEST_TIMEOUT_MS);
|
|
22
|
+
try {
|
|
23
|
+
const resp = await fetch(url, {
|
|
24
|
+
method: "POST",
|
|
25
|
+
headers: {
|
|
26
|
+
"Content-Type": "application/json",
|
|
27
|
+
Authorization: `Bearer ${token}`,
|
|
28
|
+
},
|
|
29
|
+
body: JSON.stringify(body),
|
|
30
|
+
signal: controller.signal,
|
|
31
|
+
});
|
|
32
|
+
if (!resp.ok) {
|
|
33
|
+
const text = await resp.text();
|
|
34
|
+
let errorMsg;
|
|
35
|
+
try {
|
|
36
|
+
const json = JSON.parse(text);
|
|
37
|
+
errorMsg = json.error || text;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
errorMsg = text;
|
|
41
|
+
}
|
|
42
|
+
throw new Error(`平台返回 ${resp.status}: ${errorMsg}`);
|
|
43
|
+
}
|
|
44
|
+
return (await resp.json());
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
48
|
+
throw new Error(`平台请求超时(${constants_1.REQUEST_TIMEOUT_MS / 1000}s),请检查 ${constants_1.ENV_PLATFORM_URL} 是否正确或平台是否可用`);
|
|
49
|
+
}
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
clearTimeout(timeout);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async function remoteReview(diff) {
|
|
57
|
+
console.error("[remote] 发送 diff 到平台进行代码审查...");
|
|
58
|
+
const result = await callPlatformAPI(constants_1.API_REVIEW_PATH, { diff, mode: "review" });
|
|
59
|
+
const diagnostics = (result.diagnostics || []).map((d) => ({
|
|
60
|
+
message: d.message,
|
|
61
|
+
location: d.location,
|
|
62
|
+
severity: d.severity,
|
|
63
|
+
}));
|
|
64
|
+
return {
|
|
65
|
+
source: result.source || { name: constants_1.TOOL_NAME },
|
|
66
|
+
diagnostics,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
async function remoteSummary(diff) {
|
|
70
|
+
console.error("[remote] 发送 diff 到平台生成汇总报告...");
|
|
71
|
+
const result = await callPlatformAPI(constants_1.API_REVIEW_PATH, { diff, mode: "summary" });
|
|
72
|
+
if (!result.markdown) {
|
|
73
|
+
throw new Error("平台未返回汇总内容");
|
|
74
|
+
}
|
|
75
|
+
return result.markdown;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const TOOL_NAME = "ai-code-review";
|
|
2
|
+
export declare const CLI_NAME = "ai-code-review-cli-remote";
|
|
3
|
+
export declare const DEFAULT_PLATFORM_URL = "http://43.138.0.254:3001";
|
|
4
|
+
export declare const REQUEST_TIMEOUT_MS = 120000;
|
|
5
|
+
export declare const ENV_PLATFORM_URL = "AICR_PLATFORM_URL";
|
|
6
|
+
export declare const ENV_PROJECT_TOKEN = "AICR_PROJECT_TOKEN";
|
|
7
|
+
export declare const API_REVIEW_PATH = "/api/review/analyze";
|
|
8
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAC1C,eAAO,MAAM,QAAQ,8BAA8B,CAAC;AAEpD,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAC/D,eAAO,MAAM,kBAAkB,SAAU,CAAC;AAE1C,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAEtD,eAAO,MAAM,eAAe,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.API_REVIEW_PATH = exports.ENV_PROJECT_TOKEN = exports.ENV_PLATFORM_URL = exports.REQUEST_TIMEOUT_MS = exports.DEFAULT_PLATFORM_URL = exports.CLI_NAME = exports.TOOL_NAME = void 0;
|
|
4
|
+
exports.TOOL_NAME = "ai-code-review";
|
|
5
|
+
exports.CLI_NAME = "ai-code-review-cli-remote";
|
|
6
|
+
exports.DEFAULT_PLATFORM_URL = "http://43.138.0.254:3001";
|
|
7
|
+
exports.REQUEST_TIMEOUT_MS = 120000;
|
|
8
|
+
exports.ENV_PLATFORM_URL = "AICR_PLATFORM_URL";
|
|
9
|
+
exports.ENV_PROJECT_TOKEN = "AICR_PROJECT_TOKEN";
|
|
10
|
+
exports.API_REVIEW_PATH = "/api/review/analyze";
|
|
11
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,gBAAgB,CAAC;AAC7B,QAAA,QAAQ,GAAG,2BAA2B,CAAC;AAEvC,QAAA,oBAAoB,GAAG,0BAA0B,CAAC;AAClD,QAAA,kBAAkB,GAAG,MAAO,CAAC;AAE7B,QAAA,gBAAgB,GAAG,mBAAmB,CAAC;AACvC,QAAA,iBAAiB,GAAG,oBAAoB,CAAC;AAEzC,QAAA,eAAe,GAAG,qBAAqB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,UAAU,QAAa,OAAO,CAAC,IAAI,CAoB/C,CAAC;AAEF,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAkBhD,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.summaryMain = exports.reviewMain = void 0;
|
|
7
|
+
const minimist_1 = __importDefault(require("minimist"));
|
|
8
|
+
const constants_1 = require("./constants");
|
|
9
|
+
const client_1 = require("./client");
|
|
10
|
+
const buildEmptyRdjson = () => ({
|
|
11
|
+
source: { name: constants_1.TOOL_NAME },
|
|
12
|
+
diagnostics: [],
|
|
13
|
+
});
|
|
14
|
+
const readStdin = () => new Promise((resolve, reject) => {
|
|
15
|
+
let data = "";
|
|
16
|
+
process.stdin.setEncoding("utf8");
|
|
17
|
+
process.stdin.on("data", (chunk) => {
|
|
18
|
+
data += chunk;
|
|
19
|
+
});
|
|
20
|
+
process.stdin.on("end", () => {
|
|
21
|
+
resolve(data);
|
|
22
|
+
});
|
|
23
|
+
process.stdin.on("error", (err) => {
|
|
24
|
+
reject(err);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
const reviewMain = async () => {
|
|
28
|
+
try {
|
|
29
|
+
const diff = await readStdin();
|
|
30
|
+
if (!diff?.trim()) {
|
|
31
|
+
console.error("[remote] 未读取到 diff,输出空诊断结果");
|
|
32
|
+
console.log(JSON.stringify(buildEmptyRdjson()));
|
|
33
|
+
process.exit(0);
|
|
34
|
+
}
|
|
35
|
+
const result = await (0, client_1.remoteReview)(diff);
|
|
36
|
+
console.log(JSON.stringify(result));
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.error("[remote] 代码审查失败:", error instanceof Error ? error.message : error);
|
|
40
|
+
console.log(JSON.stringify(buildEmptyRdjson()));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
exports.reviewMain = reviewMain;
|
|
45
|
+
const summaryMain = async () => {
|
|
46
|
+
try {
|
|
47
|
+
const diff = await readStdin();
|
|
48
|
+
if (!diff?.trim()) {
|
|
49
|
+
console.error("[remote] 未读取到 diff,跳过汇总");
|
|
50
|
+
process.exit(0);
|
|
51
|
+
}
|
|
52
|
+
const markdown = await (0, client_1.remoteSummary)(diff);
|
|
53
|
+
console.log(markdown);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
console.error("[remote] 汇总生成失败:", error instanceof Error ? error.message : error);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
exports.summaryMain = summaryMain;
|
|
61
|
+
if (require.main === module) {
|
|
62
|
+
if (!process.env[constants_1.ENV_PROJECT_TOKEN]) {
|
|
63
|
+
console.error(`[remote] 错误: ${constants_1.ENV_PROJECT_TOKEN} 未设置\n` +
|
|
64
|
+
"请在 GitLab CI 变量中配置平台项目 Token,或设置环境变量后重试。\n" +
|
|
65
|
+
"获取方式: 登录 AICR 平台 -> 项目设置 -> 生成 Token");
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
const args = (0, minimist_1.default)(process.argv.slice(2));
|
|
69
|
+
const platformUrl = process.env[constants_1.ENV_PLATFORM_URL] || constants_1.DEFAULT_PLATFORM_URL;
|
|
70
|
+
console.error(`[remote] 平台地址: ${platformUrl}`);
|
|
71
|
+
const run = args.summary ? exports.summaryMain : exports.reviewMain;
|
|
72
|
+
run().catch((error) => {
|
|
73
|
+
console.error("[remote] CLI 执行错误:", error);
|
|
74
|
+
process.exit(1);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface RdjsonDiagnostic {
|
|
2
|
+
message: string;
|
|
3
|
+
location: {
|
|
4
|
+
path: string;
|
|
5
|
+
range: {
|
|
6
|
+
start: {
|
|
7
|
+
line: number;
|
|
8
|
+
column: number;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
severity: "ERROR" | "WARNING" | "INFO";
|
|
13
|
+
}
|
|
14
|
+
export interface RdjsonOutput {
|
|
15
|
+
source: {
|
|
16
|
+
name: string;
|
|
17
|
+
};
|
|
18
|
+
diagnostics: RdjsonDiagnostic[];
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE;YACL,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC;gBACb,MAAM,EAAE,MAAM,CAAC;aAChB,CAAC;SACH,CAAC;KACH,CAAC;IACF,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@wuyanbin/ai-code-review-cli-remote",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "AI Code Review remote client - sends diffs to AICR platform for review",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"publishConfig": {
|
|
8
|
+
"access": "public"
|
|
9
|
+
},
|
|
10
|
+
"bin": {
|
|
11
|
+
"ai-code-review-cli-remote": "bin/ai-code-review-remote.js"
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc",
|
|
15
|
+
"dev": "tsc --watch",
|
|
16
|
+
"test": "bash test/run-tests.sh",
|
|
17
|
+
"prepublishOnly": "npm run build"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"ai",
|
|
21
|
+
"code-review",
|
|
22
|
+
"gitlab",
|
|
23
|
+
"ci-cd",
|
|
24
|
+
"reviewdog",
|
|
25
|
+
"remote"
|
|
26
|
+
],
|
|
27
|
+
"author": "binn <binn@micous.com>",
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"files": [
|
|
30
|
+
"dist",
|
|
31
|
+
"bin",
|
|
32
|
+
"README.md"
|
|
33
|
+
],
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"minimist": "^1.2.8"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@types/minimist": "^1.2.5",
|
|
39
|
+
"@types/node": "^20.0.0",
|
|
40
|
+
"typescript": "^5.6.3"
|
|
41
|
+
},
|
|
42
|
+
"engines": {
|
|
43
|
+
"node": ">=18.0.0"
|
|
44
|
+
}
|
|
45
|
+
}
|