@wuyanbin/ai-code-review-cli-remote 1.0.14-canary.0 → 1.0.15

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.
Files changed (68) hide show
  1. package/dist/client.d.ts +18 -0
  2. package/dist/client.d.ts.map +1 -0
  3. package/dist/client.js +57 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/config.d.ts +11 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +161 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/constants.d.ts +8 -1
  10. package/dist/constants.d.ts.map +1 -1
  11. package/dist/constants.js +16 -2
  12. package/dist/constants.js.map +1 -1
  13. package/dist/core/reviewer.d.ts.map +1 -1
  14. package/dist/core/reviewer.js +2 -13
  15. package/dist/core/reviewer.js.map +1 -1
  16. package/dist/diff.d.ts +6 -0
  17. package/dist/diff.d.ts.map +1 -0
  18. package/dist/diff.js +127 -0
  19. package/dist/diff.js.map +1 -0
  20. package/dist/formatters.d.ts +4 -0
  21. package/dist/formatters.d.ts.map +1 -0
  22. package/dist/formatters.js +31 -0
  23. package/dist/formatters.js.map +1 -0
  24. package/dist/gitlab/api.d.ts +40 -0
  25. package/dist/gitlab/api.d.ts.map +1 -1
  26. package/dist/gitlab/api.js +82 -29
  27. package/dist/gitlab/api.js.map +1 -1
  28. package/dist/gitlab.d.ts +11 -0
  29. package/dist/gitlab.d.ts.map +1 -0
  30. package/dist/gitlab.js +193 -0
  31. package/dist/gitlab.js.map +1 -0
  32. package/dist/http.d.ts +4 -0
  33. package/dist/http.d.ts.map +1 -0
  34. package/dist/http.js +31 -0
  35. package/dist/http.js.map +1 -0
  36. package/dist/index.js +0 -0
  37. package/dist/model.d.ts +6 -0
  38. package/dist/model.d.ts.map +1 -0
  39. package/dist/model.js +120 -0
  40. package/dist/model.js.map +1 -0
  41. package/dist/report.d.ts +9 -0
  42. package/dist/report.d.ts.map +1 -0
  43. package/dist/report.js +31 -0
  44. package/dist/report.js.map +1 -0
  45. package/dist/reviewer.d.ts +3 -0
  46. package/dist/reviewer.d.ts.map +1 -0
  47. package/dist/reviewer.js +140 -0
  48. package/dist/reviewer.js.map +1 -0
  49. package/dist/runner.d.ts.map +1 -1
  50. package/dist/runner.js +9 -1
  51. package/dist/runner.js.map +1 -1
  52. package/dist/shared/concurrency.d.ts +2 -0
  53. package/dist/shared/concurrency.d.ts.map +1 -0
  54. package/dist/shared/concurrency.js +16 -0
  55. package/dist/shared/concurrency.js.map +1 -0
  56. package/dist/shared/http.d.ts +15 -0
  57. package/dist/shared/http.d.ts.map +1 -1
  58. package/dist/shared/http.js +36 -0
  59. package/dist/shared/http.js.map +1 -1
  60. package/dist/shared/identity.d.ts +6 -3
  61. package/dist/shared/identity.d.ts.map +1 -1
  62. package/dist/shared/identity.js +6 -4
  63. package/dist/shared/identity.js.map +1 -1
  64. package/dist/summarizer.d.ts +3 -0
  65. package/dist/summarizer.d.ts.map +1 -0
  66. package/dist/summarizer.js +75 -0
  67. package/dist/summarizer.js.map +1 -0
  68. package/package.json +1 -1
@@ -0,0 +1,18 @@
1
+ export interface CiContext {
2
+ mrIid: number;
3
+ commitSha: string;
4
+ baseSha: string;
5
+ startSha?: string;
6
+ }
7
+ export interface AnalyzeResult {
8
+ posted?: boolean;
9
+ diagnosticsCount?: number;
10
+ postedCount?: number;
11
+ summaryPosted?: boolean;
12
+ errors?: string[];
13
+ note?: string;
14
+ error?: string;
15
+ }
16
+ export declare function analyzeWithCi(diff: string, ci: CiContext): Promise<AnalyzeResult>;
17
+ export declare function resolvePlatformUrlForTest(env?: NodeJS.ProcessEnv): string;
18
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsBD,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,SAAS,GACZ,OAAO,CAAC,aAAa,CAAC,CA0CxB;AAED,wBAAgB,yBAAyB,CACvC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAER"}
package/dist/client.js ADDED
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.analyzeWithCi = analyzeWithCi;
4
+ exports.resolvePlatformUrlForTest = resolvePlatformUrlForTest;
5
+ const constants_1 = require("./constants");
6
+ const http_1 = require("./http");
7
+ function getPlatformUrlFromEnv(env = process.env) {
8
+ const platformUrl = env[constants_1.ENV_PLATFORM_URL]?.replace(/\/+$/, "");
9
+ if (!platformUrl) {
10
+ throw new Error(`${constants_1.ENV_PLATFORM_URL} 未设置。请在 GitLab CI 变量中配置平台地址。`);
11
+ }
12
+ return platformUrl;
13
+ }
14
+ function getProjectToken() {
15
+ const token = process.env[constants_1.ENV_PROJECT_TOKEN];
16
+ if (!token) {
17
+ throw new Error(`${constants_1.ENV_PROJECT_TOKEN} 未设置。请在 GitLab CI 变量中配置平台项目 Token。`);
18
+ }
19
+ return token;
20
+ }
21
+ async function analyzeWithCi(diff, ci) {
22
+ const token = getProjectToken();
23
+ const url = `${getPlatformUrlFromEnv()}${constants_1.API_REVIEW_PATH}`;
24
+ console.error(`[remote] POST ${url} (mrIid=${ci.mrIid})`);
25
+ try {
26
+ const resp = await (0, http_1.fetchWithTimeout)(url, {
27
+ method: "POST",
28
+ headers: {
29
+ "Content-Type": "application/json",
30
+ Authorization: `Bearer ${token}`,
31
+ },
32
+ body: JSON.stringify({ diff, ci }),
33
+ }, constants_1.REQUEST_TIMEOUT_MS);
34
+ const text = await resp.text();
35
+ let json;
36
+ try {
37
+ json = text ? JSON.parse(text) : {};
38
+ }
39
+ catch {
40
+ throw new Error(`平台返回非 JSON 响应 ${resp.status}: ${text.slice(0, 200)}`);
41
+ }
42
+ if (!resp.ok) {
43
+ throw new Error(`平台返回 ${resp.status}: ${json.error ?? text}`);
44
+ }
45
+ return json;
46
+ }
47
+ catch (error) {
48
+ if (error instanceof Error && error.name === "AbortError") {
49
+ throw new Error(`平台请求超时(${constants_1.REQUEST_TIMEOUT_MS / 1000}s),请检查 ${constants_1.ENV_PLATFORM_URL} 是否正确或平台是否可用`);
50
+ }
51
+ throw error;
52
+ }
53
+ }
54
+ function resolvePlatformUrlForTest(env = process.env) {
55
+ return getPlatformUrlFromEnv(env);
56
+ }
57
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;AA6CA,sCA6CC;AAED,8DAIC;AAhGD,2CAKqB;AACrB,iCAA0C;AAmB1C,SAAS,qBAAqB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACjE,MAAM,WAAW,GAAG,GAAG,CAAC,4BAAgB,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,GAAG,4BAAgB,8BAA8B,CAClD,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,6BAAiB,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,GAAG,6BAAiB,oCAAoC,CACzD,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,EAAa;IAEb,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,GAAG,qBAAqB,EAAE,GAAG,2BAAe,EAAE,CAAC;IAC3D,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,WAAW,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;IAE1D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAA,uBAAgB,EACjC,GAAG,EACH;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,KAAK,EAAE;aACjC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;SACnC,EACD,8BAAkB,CACnB,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,IAAmB,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,iBAAiB,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACtD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CACb,UAAU,8BAAkB,GAAG,IAAI,UAAU,4BAAgB,cAAc,CAC5E,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,yBAAyB,CACvC,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CodeReviewConfig } from "./types";
2
+ type FetchLike = (input: string, init?: RequestInit) => Promise<Response>;
3
+ export interface LoadReviewConfigOptions {
4
+ cwd?: string;
5
+ env?: NodeJS.ProcessEnv;
6
+ fetchImpl?: FetchLike;
7
+ }
8
+ export declare function loadReviewConfig(options?: LoadReviewConfigOptions): Promise<CodeReviewConfig>;
9
+ export declare function sanitizeConfigForLog(config: CodeReviewConfig): CodeReviewConfig;
10
+ export {};
11
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAoB,gBAAgB,EAAY,MAAM,SAAS,CAAC;AAE5E,KAAK,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE1E,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AA2KD,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,gBAAgB,CAAC,CAiB3B;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAM/E"}
package/dist/config.js ADDED
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadReviewConfig = loadReviewConfig;
4
+ exports.sanitizeConfigForLog = sanitizeConfigForLog;
5
+ const node_fs_1 = require("node:fs");
6
+ const promises_1 = require("node:fs/promises");
7
+ const node_path_1 = require("node:path");
8
+ const node_module_1 = require("node:module");
9
+ const constants_1 = require("./constants");
10
+ const http_1 = require("./http");
11
+ const LOCAL_CONFIG_FILES = [
12
+ ".aicr.config.js",
13
+ "aicr.config.js",
14
+ ".aicr.config.cjs",
15
+ "aicr.config.cjs",
16
+ ];
17
+ const requireConfig = (0, node_module_1.createRequire)(__filename);
18
+ function normalizePlatformUrl(env) {
19
+ const raw = env[constants_1.ENV_PLATFORM_URL]?.replace(/\/+$/, "");
20
+ return raw || null;
21
+ }
22
+ function asStringArray(value) {
23
+ return Array.isArray(value)
24
+ ? value.filter((item) => typeof item === "string")
25
+ : [];
26
+ }
27
+ function normalizeSeverity(value) {
28
+ return value === "info" || value === "warning" || value === "error"
29
+ ? value
30
+ : "warning";
31
+ }
32
+ function normalizeMaxComments(value) {
33
+ return typeof value === "number" && Number.isFinite(value) && value > 0
34
+ ? Math.floor(value)
35
+ : 100;
36
+ }
37
+ function normalizeApiFormat(value, provider, endpoint) {
38
+ if (value === "openai" || value === "claude")
39
+ return value;
40
+ if (provider === "claude")
41
+ return "claude";
42
+ if (typeof endpoint === "string" &&
43
+ (endpoint.includes("anthropic.com") || endpoint.includes("/v1/messages"))) {
44
+ return "claude";
45
+ }
46
+ return "openai";
47
+ }
48
+ function normalizeConfig(raw, source, env) {
49
+ return {
50
+ source,
51
+ ai: {
52
+ name: raw.ai?.name,
53
+ provider: raw.ai?.provider,
54
+ apiFormat: normalizeApiFormat(raw.ai?.apiFormat, raw.ai?.provider, raw.ai?.endpoint),
55
+ model: raw.ai?.model || "deepseek-chat",
56
+ endpoint: raw.ai?.endpoint || "https://api.deepseek.com/chat/completions",
57
+ apiKey: env.MODEL_API_KEY || raw.ai?.apiKey || "",
58
+ },
59
+ rules: {
60
+ custom: asStringArray(raw.rules?.custom),
61
+ },
62
+ review: {
63
+ severity: normalizeSeverity(raw.review?.severity),
64
+ ignore: asStringArray(raw.review?.ignore),
65
+ maxComments: normalizeMaxComments(raw.review?.maxComments),
66
+ },
67
+ summary: {
68
+ enabled: raw.summary?.enabled ?? true,
69
+ },
70
+ gitlab: raw.gitlab?.token ? { token: raw.gitlab.token } : undefined,
71
+ };
72
+ }
73
+ async function loadDevhubConfig(env, fetchImpl) {
74
+ const platformUrl = normalizePlatformUrl(env);
75
+ const token = env[constants_1.ENV_PROJECT_TOKEN];
76
+ if (!platformUrl || !token)
77
+ return null;
78
+ const url = `${platformUrl}${constants_1.API_CONFIG_PATH}`;
79
+ try {
80
+ console.error("[config] fetching Devhub config");
81
+ const resp = await fetchImpl(url, {
82
+ method: "GET",
83
+ headers: { Authorization: `Bearer ${token}` },
84
+ });
85
+ if (!resp.ok) {
86
+ console.error(`[config] Devhub 配置获取失败 status=${resp.status}`);
87
+ return null;
88
+ }
89
+ const raw = (await resp.json());
90
+ const config = normalizeConfig(raw, "devhub", {});
91
+ if (!config.ai.apiKey || !config.ai.endpoint) {
92
+ console.error("[config] Devhub 配置缺少模型密钥或 endpoint,回退本地配置");
93
+ return null;
94
+ }
95
+ return config;
96
+ }
97
+ catch (error) {
98
+ console.error("[config] Devhub 配置获取异常,回退本地配置:", error instanceof Error ? error.message : String(error));
99
+ return null;
100
+ }
101
+ }
102
+ async function loadCachedConfig(env) {
103
+ const cachePath = env.AICR_CONFIG_CACHE;
104
+ if (!cachePath || !(0, node_fs_1.existsSync)(cachePath))
105
+ return null;
106
+ try {
107
+ const raw = JSON.parse(await (0, promises_1.readFile)(cachePath, "utf8"));
108
+ if (raw.source === "devhub" && raw.ai?.apiKey && raw.ai?.endpoint) {
109
+ console.error("[config] Loaded config from Devhub cache");
110
+ return normalizeConfig(raw, "devhub", {});
111
+ }
112
+ }
113
+ catch (error) {
114
+ console.error("[config] Devhub 配置缓存读取失败:", error instanceof Error ? error.message : String(error));
115
+ }
116
+ return null;
117
+ }
118
+ async function writeCachedConfig(env, config) {
119
+ const cachePath = env.AICR_CONFIG_CACHE;
120
+ if (!cachePath || config.source !== "devhub")
121
+ return;
122
+ await (0, promises_1.writeFile)(cachePath, JSON.stringify(config), { mode: 0o600 });
123
+ console.error("[config] Devhub config cached");
124
+ }
125
+ async function loadLocalConfig(cwd, env) {
126
+ for (const filename of LOCAL_CONFIG_FILES) {
127
+ const file = (0, node_path_1.resolve)(cwd, filename);
128
+ if (!(0, node_fs_1.existsSync)(file))
129
+ continue;
130
+ delete requireConfig.cache[requireConfig.resolve(file)];
131
+ const imported = requireConfig(file);
132
+ const raw = imported.default ?? imported;
133
+ console.error(`[config] Loaded local config from: ${file}`);
134
+ return normalizeConfig(raw, "local", env);
135
+ }
136
+ console.error("[config] No local config file found, using defaults.");
137
+ return normalizeConfig({}, "local", env);
138
+ }
139
+ async function loadReviewConfig(options = {}) {
140
+ const env = options.env ?? process.env;
141
+ const fetchImpl = options.fetchImpl ??
142
+ ((url, init) => (0, http_1.fetchWithTimeout)(url, init ?? {}, constants_1.API_TIMEOUT_MS));
143
+ const cached = await loadCachedConfig(env);
144
+ if (cached)
145
+ return cached;
146
+ const devhubConfig = await loadDevhubConfig(env, fetchImpl);
147
+ if (devhubConfig) {
148
+ await writeCachedConfig(env, devhubConfig);
149
+ console.error("[config] Loaded config from Devhub");
150
+ return devhubConfig;
151
+ }
152
+ return loadLocalConfig(options.cwd ?? process.cwd(), env);
153
+ }
154
+ function sanitizeConfigForLog(config) {
155
+ return {
156
+ ...config,
157
+ ai: { ...config.ai, apiKey: config.ai.apiKey ? "***" : "" },
158
+ gitlab: config.gitlab?.token ? { token: "***" } : config.gitlab,
159
+ };
160
+ }
161
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,13 @@
1
1
  export declare const REQUEST_TIMEOUT_MS = 180000;
2
2
  export declare const API_TIMEOUT_MS = 60000;
3
- export declare const MAX_PAGINATION_PAGES = 100;
3
+ export declare const DEFAULT_MAX_PAGINATION_PAGES = 20;
4
+ export declare const ENV_MAX_PAGINATION_PAGES = "AICR_MAX_PAGINATION_PAGES";
5
+ /**
6
+ * Resolve the GitLab discussions pagination cap. Defaults to a small value that
7
+ * comfortably covers bot-comment scenarios while protecting GitLab from deep
8
+ * sequential pagination; overridable via AICR_MAX_PAGINATION_PAGES.
9
+ */
10
+ export declare function resolveMaxPaginationPages(env?: NodeJS.ProcessEnv): number;
4
11
  export declare const DEFAULT_COMMENT_MESSAGE = "AI Code Review \u63D0\u793A";
5
12
  export declare const ENV_PLATFORM_URL = "AICR_PLATFORM_URL";
6
13
  export declare const ENV_PROJECT_TOKEN = "AICR_PROJECT_TOKEN";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,SAAU,CAAC;AAC1C,eAAO,MAAM,cAAc,QAAS,CAAC;AACrC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,eAAO,MAAM,uBAAuB,gCAAsB,CAAC;AAE3D,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAEtD,eAAO,MAAM,eAAe,qCAAqC,CAAC;AAClE,eAAO,MAAM,eAAe,uCAAuC,CAAC;AACpE,eAAO,MAAM,aAAa,qCAAqC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,SAAU,CAAC;AAC1C,eAAO,MAAM,cAAc,QAAS,CAAC;AAErC,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAC/C,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AAEpE;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAMR;AAED,eAAO,MAAM,uBAAuB,gCAAsB,CAAC;AAE3D,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAEtD,eAAO,MAAM,eAAe,qCAAqC,CAAC;AAClE,eAAO,MAAM,eAAe,uCAAuC,CAAC;AACpE,eAAO,MAAM,aAAa,qCAAqC,CAAC"}
package/dist/constants.js CHANGED
@@ -1,9 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.API_RUNS_PATH = exports.API_CONFIG_PATH = exports.API_REVIEW_PATH = exports.ENV_PROJECT_TOKEN = exports.ENV_PLATFORM_URL = exports.DEFAULT_COMMENT_MESSAGE = exports.MAX_PAGINATION_PAGES = exports.API_TIMEOUT_MS = exports.REQUEST_TIMEOUT_MS = void 0;
3
+ exports.API_RUNS_PATH = exports.API_CONFIG_PATH = exports.API_REVIEW_PATH = exports.ENV_PROJECT_TOKEN = exports.ENV_PLATFORM_URL = exports.DEFAULT_COMMENT_MESSAGE = exports.ENV_MAX_PAGINATION_PAGES = exports.DEFAULT_MAX_PAGINATION_PAGES = exports.API_TIMEOUT_MS = exports.REQUEST_TIMEOUT_MS = void 0;
4
+ exports.resolveMaxPaginationPages = resolveMaxPaginationPages;
4
5
  exports.REQUEST_TIMEOUT_MS = 180000;
5
6
  exports.API_TIMEOUT_MS = 60000;
6
- exports.MAX_PAGINATION_PAGES = 100;
7
+ exports.DEFAULT_MAX_PAGINATION_PAGES = 20;
8
+ exports.ENV_MAX_PAGINATION_PAGES = "AICR_MAX_PAGINATION_PAGES";
9
+ /**
10
+ * Resolve the GitLab discussions pagination cap. Defaults to a small value that
11
+ * comfortably covers bot-comment scenarios while protecting GitLab from deep
12
+ * sequential pagination; overridable via AICR_MAX_PAGINATION_PAGES.
13
+ */
14
+ function resolveMaxPaginationPages(env = process.env) {
15
+ const raw = env[exports.ENV_MAX_PAGINATION_PAGES];
16
+ const parsed = Number(raw);
17
+ return raw !== undefined && Number.isInteger(parsed) && parsed > 0
18
+ ? parsed
19
+ : exports.DEFAULT_MAX_PAGINATION_PAGES;
20
+ }
7
21
  exports.DEFAULT_COMMENT_MESSAGE = "AI Code Review 提示";
8
22
  exports.ENV_PLATFORM_URL = "AICR_PLATFORM_URL";
9
23
  exports.ENV_PROJECT_TOKEN = "AICR_PROJECT_TOKEN";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG,MAAO,CAAC;AAC7B,QAAA,cAAc,GAAG,KAAM,CAAC;AACxB,QAAA,oBAAoB,GAAG,GAAG,CAAC;AAE3B,QAAA,uBAAuB,GAAG,mBAAmB,CAAC;AAE9C,QAAA,gBAAgB,GAAG,mBAAmB,CAAC;AACvC,QAAA,iBAAiB,GAAG,oBAAoB,CAAC;AAEzC,QAAA,eAAe,GAAG,kCAAkC,CAAC;AACrD,QAAA,eAAe,GAAG,oCAAoC,CAAC;AACvD,QAAA,aAAa,GAAG,kCAAkC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAWA,8DAQC;AAnBY,QAAA,kBAAkB,GAAG,MAAO,CAAC;AAC7B,QAAA,cAAc,GAAG,KAAM,CAAC;AAExB,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAClC,QAAA,wBAAwB,GAAG,2BAA2B,CAAC;AAEpE;;;;GAIG;AACH,SAAgB,yBAAyB,CACvC,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,GAAG,GAAG,GAAG,CAAC,gCAAwB,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QAChE,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,oCAA4B,CAAC;AACnC,CAAC;AAEY,QAAA,uBAAuB,GAAG,mBAAmB,CAAC;AAE9C,QAAA,gBAAgB,GAAG,mBAAmB,CAAC;AACvC,QAAA,iBAAiB,GAAG,oBAAoB,CAAC;AAEzC,QAAA,eAAe,GAAG,kCAAkC,CAAC;AACrD,QAAA,eAAe,GAAG,oCAAoC,CAAC;AACvD,QAAA,aAAa,GAAG,kCAAkC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../src/core/reviewer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAa,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAyFxE,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAO,GACtD,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA2E5B"}
1
+ {"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../src/core/reviewer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAa,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAsExE,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAO,GACtD,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA6E5B"}
@@ -6,6 +6,7 @@ const zod_1 = require("zod");
6
6
  const context_1 = require("./context");
7
7
  const diff_1 = require("./diff");
8
8
  const identity_1 = require("../shared/identity");
9
+ const concurrency_1 = require("../shared/concurrency");
9
10
  const model_1 = require("./model");
10
11
  const prompt_1 = require("./prompt");
11
12
  const SEVERITY_ORDER = { info: 0, warning: 1, error: 2 };
@@ -56,18 +57,6 @@ function parseAIResponse(content) {
56
57
  return null;
57
58
  }
58
59
  }
59
- async function runWithConcurrency(tasks, concurrency) {
60
- const results = new Array(tasks.length);
61
- let next = 0;
62
- async function worker() {
63
- while (next < tasks.length) {
64
- const index = next++;
65
- results[index] = await tasks[index]();
66
- }
67
- }
68
- await Promise.all(Array.from({ length: Math.min(concurrency, tasks.length) }, () => worker()));
69
- return results;
70
- }
71
60
  async function reviewCode(diff, config, options = {}) {
72
61
  const effectiveDiff = (0, diff_1.filterDiffByIgnore)(diff, config.review.ignore);
73
62
  if (!effectiveDiff.trim())
@@ -100,7 +89,7 @@ async function reviewCode(diff, config, options = {}) {
100
89
  success: true,
101
90
  };
102
91
  });
103
- const results = await runWithConcurrency(tasks, SHARD_CONCURRENCY);
92
+ const results = await (0, concurrency_1.mapConcurrent)(tasks, SHARD_CONCURRENCY, (task) => task());
104
93
  const successCount = results.filter((r) => r.success).length;
105
94
  if (successCount === 0)
106
95
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../../src/core/reviewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../../src/core/reviewer.ts"],"names":[],"mappings":";;AAwEA,gCAiFC;AAzJD,2CAAwC;AACxC,6BAAwB;AAExB,uCAAiD;AACjD,iCAIgB;AAChB,iDAA6D;AAC7D,uDAAsD;AACtD,mCAA6C;AAC7C,qCAAyC;AAEzC,MAAM,cAAc,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAW,CAAC;AAClE,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,MAAM,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACjC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChC,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAEH,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;SAChB,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,uBAAU,EAAC,QAAQ,CAAC,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAE/C,MAAM,QAAQ,GAAgB,EAAE,CAAC;QACjC,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACtD,IAAI,OAAO,CAAC,OAAO;gBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAQM,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,MAAwB,EACxB,UAAqD,EAAE;IAEvD,MAAM,aAAa,GAAG,IAAA,yBAAkB,EAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE1D,MAAM,OAAO,GAAG,IAAA,0BAAkB,EAChC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAClB,MAAM,CAAC,EAAE,CAAC,MAAM,EAChB,MAAM,CAAC,EAAE,CAAC,SAAS,CACpB,CAAC;IACF,MAAM,MAAM,GAAG,IAAA,0BAAmB,EAChC,aAAa,EACb,MAAM,CAAC,MAAM,CAAC,aAAa,CAC5B,CAAC;IACF,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE3D,OAAO,CAAC,KAAK,CACX,0BAA0B,MAAM,CAAC,MAAM,kBAAkB,MAAM,CAAC,MAAM,CAAC,aAAa,gBAAgB,iBAAiB,EAAE,CACxH,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,IAA0B,EAAE;QAC1E,MAAM,OAAO,GAAG,MAAM,IAAA,8BAAoB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,sBAAa,EAAE;aAC/B,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;aAC7B,UAAU,CAAC,OAAO,CAAC,CAAC;QAEvB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAC5B,MAAM,CAAC,EAAE,CAAC,KAAK,EACf,MAAM,CAAC,WAAW,EAAE,EACpB,MAAM,CAAC,SAAS,EAAE,CACnB,CAAC;QACF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CACX,oBAAoB,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,iBAAiB,CAChE,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CACX,oBAAoB,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,eAAe,CAC9D,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,OAAO;YACL,KAAK;YACL,QAAQ,EAAE,IAAA,oCAA6B,EAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CACpE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,WAAW,CACjD;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAa,EAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CACrE,IAAI,EAAE,CACP,CAAC;IACF,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC7D,IAAI,YAAY,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,OAAO,GAAG,WAAW;SACtB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAClB,MAAM,WAAW,GAAG,IAAA,kCAAuB,EAAC,OAAO,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAEnE,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC/C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
package/dist/diff.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import type { AIComment } from "./types";
2
+ export declare function globToRegExp(pattern: string): RegExp;
3
+ export declare function filterDiffByIgnore(diff: string, ignorePatterns?: string[]): string;
4
+ export declare function buildAddedLinesIndexText(diff: string, maxLines?: number): string;
5
+ export declare function alignCommentsToDiffAddedLines(diff: string, comments: AIComment[]): AIComment[];
6
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBpD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAmBlF;AA4DD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAO,GAAG,MAAM,CAU9E;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,EAAE,GACpB,SAAS,EAAE,CAqBb"}
package/dist/diff.js ADDED
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.globToRegExp = globToRegExp;
4
+ exports.filterDiffByIgnore = filterDiffByIgnore;
5
+ exports.buildAddedLinesIndexText = buildAddedLinesIndexText;
6
+ exports.alignCommentsToDiffAddedLines = alignCommentsToDiffAddedLines;
7
+ function globToRegExp(pattern) {
8
+ if (pattern.endsWith("/**")) {
9
+ const prefix = pattern.slice(0, -3).replace(/[.+?^${}()|[\]\\]/g, "\\$&");
10
+ return new RegExp(`^${prefix}/.*$`);
11
+ }
12
+ if (pattern.startsWith("**/")) {
13
+ const rest = pattern
14
+ .slice(3)
15
+ .replace(/[.+?^${}()|[\]\\]/g, "\\$&")
16
+ .replace(/\*/g, "[^/]*");
17
+ return new RegExp(`^(?:.*/)?${rest}$`);
18
+ }
19
+ const escaped = pattern
20
+ .replace(/[.+?^${}()|[\]\\]/g, "\\$&")
21
+ .replace(/\*/g, "[^/]*");
22
+ return new RegExp(`^${escaped}$`);
23
+ }
24
+ function filterDiffByIgnore(diff, ignorePatterns) {
25
+ if (!ignorePatterns?.length || !diff.trim())
26
+ return diff;
27
+ const lines = diff.split("\n");
28
+ const kept = [];
29
+ let ignoreCurrent = false;
30
+ for (const line of lines) {
31
+ if (line.startsWith("diff --git ")) {
32
+ ignoreCurrent = false;
33
+ const match = /^diff --git a\/(.+?) b\/(.+)$/.exec(line);
34
+ if (match) {
35
+ ignoreCurrent = ignorePatterns.some((pattern) => globToRegExp(pattern).test(match[2]));
36
+ }
37
+ }
38
+ if (!ignoreCurrent)
39
+ kept.push(line);
40
+ }
41
+ return kept.join("\n");
42
+ }
43
+ function normalizePath(path) {
44
+ return path.trim().replace(/^[ab]\//, "").replace(/^\.\//, "");
45
+ }
46
+ function collectAddedLines(diff) {
47
+ const files = new Map();
48
+ let currentFile = null;
49
+ let inHunk = false;
50
+ let newLine = 0;
51
+ let oldLine = 0;
52
+ for (const raw of diff.split("\n")) {
53
+ if (raw.startsWith("diff --git ")) {
54
+ inHunk = false;
55
+ currentFile = null;
56
+ const match = /^diff --git a\/(.+?) b\/(.+)$/.exec(raw);
57
+ if (match) {
58
+ currentFile = normalizePath(match[2]);
59
+ files.set(currentFile, files.get(currentFile) ?? []);
60
+ }
61
+ continue;
62
+ }
63
+ if (raw.startsWith("+++ b/")) {
64
+ currentFile = normalizePath(raw.slice("+++ b/".length));
65
+ files.set(currentFile, files.get(currentFile) ?? []);
66
+ continue;
67
+ }
68
+ if (raw.startsWith("@@")) {
69
+ const match = /^@@\s+\-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@/.exec(raw);
70
+ inHunk = !!match;
71
+ oldLine = Number(match?.[1] ?? 0);
72
+ newLine = Number(match?.[2] ?? 0);
73
+ continue;
74
+ }
75
+ if (!inHunk || !currentFile)
76
+ continue;
77
+ if (raw.startsWith("+") && !raw.startsWith("+++")) {
78
+ files.get(currentFile)?.push({
79
+ file: currentFile,
80
+ line: newLine,
81
+ content: raw.slice(1),
82
+ });
83
+ newLine += 1;
84
+ }
85
+ else if (raw.startsWith("-") && !raw.startsWith("---")) {
86
+ oldLine += 1;
87
+ }
88
+ else if (raw.startsWith(" ")) {
89
+ oldLine += 1;
90
+ newLine += 1;
91
+ }
92
+ }
93
+ return files;
94
+ }
95
+ function buildAddedLinesIndexText(diff, maxLines = 5000) {
96
+ const rows = [];
97
+ for (const [file, lines] of collectAddedLines(diff)) {
98
+ for (const item of lines) {
99
+ if (rows.length >= maxLines)
100
+ break;
101
+ rows.push(`[${file}:${item.line}] ${item.content}`);
102
+ }
103
+ if (rows.length >= maxLines)
104
+ break;
105
+ }
106
+ return rows.length ? rows.join("\n") : "(diff 中未检测到可评论的新增行)";
107
+ }
108
+ function alignCommentsToDiffAddedLines(diff, comments) {
109
+ const added = collectAddedLines(diff);
110
+ return comments.flatMap((comment) => {
111
+ const file = normalizePath(comment.file);
112
+ const candidates = added.get(file);
113
+ if (!candidates?.length)
114
+ return [];
115
+ const exact = candidates.find((item) => item.line === comment.line);
116
+ const byCode = typeof comment.code === "string"
117
+ ? candidates.find((item) => item.content.trim() === comment.code?.trim())
118
+ : undefined;
119
+ const chosen = exact ??
120
+ byCode ??
121
+ candidates.reduce((best, item) => Math.abs(item.line - comment.line) < Math.abs(best.line - comment.line)
122
+ ? item
123
+ : best);
124
+ return [{ ...comment, file, line: chosen.line }];
125
+ });
126
+ }
127
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AIComment, RdjsonOutput } from "./types";
2
+ export declare function buildEmptyRdjson(): RdjsonOutput;
3
+ export declare function buildRdjson(comments: AIComment[]): RdjsonOutput;
4
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAY,MAAM,SAAS,CAAC;AAQjE,wBAAgB,gBAAgB,IAAI,YAAY,CAE/C;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,YAAY,CAgB/D"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildEmptyRdjson = buildEmptyRdjson;
4
+ exports.buildRdjson = buildRdjson;
5
+ const constants_1 = require("./constants");
6
+ function toRdjsonSeverity(severity) {
7
+ if (severity === "error")
8
+ return "ERROR";
9
+ if (severity === "info")
10
+ return "INFO";
11
+ return "WARNING";
12
+ }
13
+ function buildEmptyRdjson() {
14
+ return { source: { name: "ai_code_review" }, diagnostics: [] };
15
+ }
16
+ function buildRdjson(comments) {
17
+ return {
18
+ source: { name: "ai_code_review" },
19
+ diagnostics: comments
20
+ .filter((comment) => comment.file && comment.line)
21
+ .map((comment) => ({
22
+ message: `${comment.message || constants_1.DEFAULT_COMMENT_MESSAGE}${comment.suggestion ? `\n建议:${comment.suggestion}` : ""}`,
23
+ location: {
24
+ path: comment.file,
25
+ range: { start: { line: Number(comment.line) || 1, column: 1 } },
26
+ },
27
+ severity: toRdjsonSeverity(comment.severity),
28
+ })),
29
+ };
30
+ }
31
+ //# sourceMappingURL=formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":";;AASA,4CAEC;AAED,kCAgBC;AA7BD,2CAAsD;AAGtD,SAAS,gBAAgB,CAAC,QAAkB;IAC1C,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,gBAAgB;IAC9B,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AACjE,CAAC;AAED,SAAgB,WAAW,CAAC,QAAqB;IAC/C,OAAO;QACL,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;QAClC,WAAW,EAAE,QAAQ;aAClB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aACjD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACjB,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,IAAI,mCAAuB,GACpD,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EACtD,EAAE;YACF,QAAQ,EAAE;gBACR,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;aACjE;YACD,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC7C,CAAC,CAAC;KACN,CAAC;AACJ,CAAC"}