@wuyanbin/ai-code-review-cli-remote 1.0.29 → 1.0.31
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/constants.d.ts +7 -6
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +8 -14
- package/dist/constants.js.map +1 -1
- package/dist/core/context.d.ts +7 -1
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +26 -14
- package/dist/core/context.js.map +1 -1
- package/dist/core/diff.d.ts +36 -1
- package/dist/core/diff.d.ts.map +1 -1
- package/dist/core/diff.js +111 -41
- package/dist/core/diff.js.map +1 -1
- package/dist/core/incremental.d.ts +32 -6
- package/dist/core/incremental.d.ts.map +1 -1
- package/dist/core/incremental.js +128 -18
- package/dist/core/incremental.js.map +1 -1
- package/dist/core/model.d.ts +23 -1
- package/dist/core/model.d.ts.map +1 -1
- package/dist/core/model.js +109 -10
- package/dist/core/model.js.map +1 -1
- package/dist/core/prompt.d.ts +10 -2
- package/dist/core/prompt.d.ts.map +1 -1
- package/dist/core/prompt.js +39 -28
- package/dist/core/prompt.js.map +1 -1
- package/dist/core/revalidation.d.ts +23 -0
- package/dist/core/revalidation.d.ts.map +1 -0
- package/dist/core/revalidation.js +150 -0
- package/dist/core/revalidation.js.map +1 -0
- package/dist/core/reviewer.d.ts +11 -2
- package/dist/core/reviewer.d.ts.map +1 -1
- package/dist/core/reviewer.js +25 -4
- package/dist/core/reviewer.js.map +1 -1
- package/dist/core/semantic-match.d.ts +29 -0
- package/dist/core/semantic-match.d.ts.map +1 -0
- package/dist/core/semantic-match.js +150 -0
- package/dist/core/semantic-match.js.map +1 -0
- package/dist/core/summarizer.d.ts.map +1 -1
- package/dist/core/summarizer.js +1 -1
- package/dist/core/summarizer.js.map +1 -1
- package/dist/gitlab/api.d.ts +21 -0
- package/dist/gitlab/api.d.ts.map +1 -1
- package/dist/gitlab/api.js +87 -22
- package/dist/gitlab/api.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/platform/report.d.ts +3 -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 +90 -17
- package/dist/runner.js.map +1 -1
- package/dist/shared/identity.d.ts +5 -0
- package/dist/shared/identity.d.ts.map +1 -1
- package/dist/shared/identity.js +11 -0
- package/dist/shared/identity.js.map +1 -1
- package/dist/shared/model-json.d.ts +6 -0
- package/dist/shared/model-json.d.ts.map +1 -0
- package/dist/shared/model-json.js +19 -0
- package/dist/shared/model-json.js.map +1 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/constants.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
export declare const REQUEST_TIMEOUT_MS = 180000;
|
|
2
2
|
export declare const API_TIMEOUT_MS = 60000;
|
|
3
|
-
export declare const DEFAULT_MAX_PAGINATION_PAGES = 20;
|
|
4
|
-
export declare const ENV_MAX_PAGINATION_PAGES = "AICR_MAX_PAGINATION_PAGES";
|
|
5
3
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* GitLab discussions 翻页上限。取一个足以覆盖 bot 评论场景的小值,
|
|
5
|
+
* 同时避免深度顺序翻页冲击 GitLab。
|
|
6
|
+
*
|
|
7
|
+
* 本 CLI 刻意不提供 per-project 行为开关:单一行为路径才能保证各项目表现
|
|
8
|
+
* 一致、排查问题时无需先确认对方开了哪些开关;需要回滚时锁定
|
|
9
|
+
* `AICR_CLI_VERSION` 即可整体回退。
|
|
9
10
|
*/
|
|
10
|
-
export declare
|
|
11
|
+
export declare const MAX_PAGINATION_PAGES = 20;
|
|
11
12
|
export declare const DEFAULT_COMMENT_MESSAGE = "AI Code Review \u63D0\u793A";
|
|
12
13
|
export declare const ENV_PLATFORM_URL = "AICR_PLATFORM_URL";
|
|
13
14
|
export declare const ENV_PROJECT_TOKEN = "AICR_PROJECT_TOKEN";
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -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;AAErC,eAAO,MAAM,
|
|
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;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,eAAO,MAAM,uBAAuB,gCAAsB,CAAC;AAE3D,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAEtD,eAAO,MAAM,eAAe,uCAAuC,CAAC;AACpE,eAAO,MAAM,aAAa,qCAAqC,CAAC;AAChE,eAAO,MAAM,iBAAiB,yCAAyC,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.API_FINDINGS_PATH = exports.API_RUNS_PATH = exports.API_CONFIG_PATH = exports.ENV_PROJECT_TOKEN = exports.ENV_PLATFORM_URL = exports.DEFAULT_COMMENT_MESSAGE = exports.
|
|
4
|
-
exports.resolveMaxPaginationPages = resolveMaxPaginationPages;
|
|
3
|
+
exports.API_FINDINGS_PATH = exports.API_RUNS_PATH = exports.API_CONFIG_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;
|
|
5
4
|
exports.REQUEST_TIMEOUT_MS = 180000;
|
|
6
5
|
exports.API_TIMEOUT_MS = 60000;
|
|
7
|
-
exports.DEFAULT_MAX_PAGINATION_PAGES = 20;
|
|
8
|
-
exports.ENV_MAX_PAGINATION_PAGES = "AICR_MAX_PAGINATION_PAGES";
|
|
9
6
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
7
|
+
* GitLab discussions 翻页上限。取一个足以覆盖 bot 评论场景的小值,
|
|
8
|
+
* 同时避免深度顺序翻页冲击 GitLab。
|
|
9
|
+
*
|
|
10
|
+
* 本 CLI 刻意不提供 per-project 行为开关:单一行为路径才能保证各项目表现
|
|
11
|
+
* 一致、排查问题时无需先确认对方开了哪些开关;需要回滚时锁定
|
|
12
|
+
* `AICR_CLI_VERSION` 即可整体回退。
|
|
13
13
|
*/
|
|
14
|
-
|
|
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
|
-
}
|
|
14
|
+
exports.MAX_PAGINATION_PAGES = 20;
|
|
21
15
|
exports.DEFAULT_COMMENT_MESSAGE = "AI Code Review 提示";
|
|
22
16
|
exports.ENV_PLATFORM_URL = "AICR_PLATFORM_URL";
|
|
23
17
|
exports.ENV_PROJECT_TOKEN = "AICR_PROJECT_TOKEN";
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;
|
|
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;AAErC;;;;;;;GAOG;AACU,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAE1B,QAAA,uBAAuB,GAAG,mBAAmB,CAAC;AAE9C,QAAA,gBAAgB,GAAG,mBAAmB,CAAC;AACvC,QAAA,iBAAiB,GAAG,oBAAoB,CAAC;AAEzC,QAAA,eAAe,GAAG,oCAAoC,CAAC;AACvD,QAAA,aAAa,GAAG,kCAAkC,CAAC;AACnD,QAAA,iBAAiB,GAAG,sCAAsC,CAAC"}
|
package/dist/core/context.d.ts
CHANGED
|
@@ -2,5 +2,11 @@ export interface ReviewContextOptions {
|
|
|
2
2
|
cwd?: string;
|
|
3
3
|
env?: NodeJS.ProcessEnv;
|
|
4
4
|
}
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* run 内稳定的审查背景(MR 元信息 + 项目规则文档):每 run 只需计算一次,
|
|
7
|
+
* 进入 system prompt 参与缓存,避免按 shard 重复读盘与重复计费。
|
|
8
|
+
*/
|
|
9
|
+
export declare function collectStableReviewContext(options?: ReviewContextOptions): Promise<string>;
|
|
10
|
+
/** 每 shard 变化的变更附近源码窗口([ADD]/[CTX] 标注):进入 user prompt */
|
|
11
|
+
export declare function collectShardSourceContext(diff: string, options?: ReviewContextOptions): Promise<string>;
|
|
6
12
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AA8ID;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,yDAAyD;AACzD,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAKjB"}
|
package/dist/core/context.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.collectStableReviewContext = collectStableReviewContext;
|
|
4
|
+
exports.collectShardSourceContext = collectShardSourceContext;
|
|
4
5
|
const node_fs_1 = require("node:fs");
|
|
5
6
|
const promises_1 = require("node:fs/promises");
|
|
6
7
|
const node_path_1 = require("node:path");
|
|
@@ -17,7 +18,11 @@ const RULE_FILES = [
|
|
|
17
18
|
const MAX_RULE_BYTES = 16000;
|
|
18
19
|
// 每行 `[ADD] ` / `[CTX] ` 标记额外占用约 6 字节,预算相应上调以保持注入的源码行数
|
|
19
20
|
const MAX_SOURCE_BYTES = 40000;
|
|
20
|
-
|
|
21
|
+
/**
|
|
22
|
+
* 源码窗口的上下文半径。注解 diff 已自带 ±3 行上下文与行号,窗口的独有价值
|
|
23
|
+
* 是更远处的守卫与签名,8 行足够;不提供 per-project 调参以避免行为漂移。
|
|
24
|
+
*/
|
|
25
|
+
const SOURCE_WINDOW_RADIUS = 8;
|
|
21
26
|
const MAX_CONTEXT_FILES = 8;
|
|
22
27
|
function truncateByBytes(value, maxBytes) {
|
|
23
28
|
if (Buffer.byteLength(value) <= maxBytes)
|
|
@@ -90,13 +95,13 @@ async function readRuleContext(cwd) {
|
|
|
90
95
|
}
|
|
91
96
|
return sections.length ? ["## 项目规则文档", ...sections] : [];
|
|
92
97
|
}
|
|
93
|
-
function buildLineWindow(file, content, changedLines) {
|
|
98
|
+
function buildLineWindow(file, content, changedLines, radius) {
|
|
94
99
|
const lines = content.split("\n");
|
|
95
100
|
const addedLines = new Set(changedLines);
|
|
96
101
|
const windows = [];
|
|
97
102
|
for (const line of changedLines.slice(0, 12)) {
|
|
98
|
-
const start = Math.max(1, line -
|
|
99
|
-
const end = Math.min(lines.length, line +
|
|
103
|
+
const start = Math.max(1, line - radius);
|
|
104
|
+
const end = Math.min(lines.length, line + radius);
|
|
100
105
|
const last = windows[windows.length - 1];
|
|
101
106
|
if (last && start <= last.end + 3) {
|
|
102
107
|
last.end = Math.max(last.end, end);
|
|
@@ -120,7 +125,7 @@ function buildLineWindow(file, content, changedLines) {
|
|
|
120
125
|
});
|
|
121
126
|
return `### ${file}\n${chunks.join("\n---\n")}`;
|
|
122
127
|
}
|
|
123
|
-
async function readSourceContext(cwd, diff) {
|
|
128
|
+
async function readSourceContext(cwd, diff, radius) {
|
|
124
129
|
const added = (0, diff_1.collectAddedLines)(diff);
|
|
125
130
|
const changedFiles = (0, diff_1.getChangedFiles)(diff).slice(0, MAX_CONTEXT_FILES);
|
|
126
131
|
const sections = [];
|
|
@@ -132,7 +137,7 @@ async function readSourceContext(cwd, diff) {
|
|
|
132
137
|
continue;
|
|
133
138
|
try {
|
|
134
139
|
const content = await (0, promises_1.readFile)(path, "utf8");
|
|
135
|
-
const section = buildLineWindow(file, content, changedLines);
|
|
140
|
+
const section = buildLineWindow(file, content, changedLines, radius);
|
|
136
141
|
if (!section)
|
|
137
142
|
continue;
|
|
138
143
|
const remaining = MAX_SOURCE_BYTES - usedBytes;
|
|
@@ -148,14 +153,21 @@ async function readSourceContext(cwd, diff) {
|
|
|
148
153
|
}
|
|
149
154
|
return sections.length ? ["## 变更附近源码", ...sections] : [];
|
|
150
155
|
}
|
|
151
|
-
|
|
156
|
+
/**
|
|
157
|
+
* run 内稳定的审查背景(MR 元信息 + 项目规则文档):每 run 只需计算一次,
|
|
158
|
+
* 进入 system prompt 参与缓存,避免按 shard 重复读盘与重复计费。
|
|
159
|
+
*/
|
|
160
|
+
async function collectStableReviewContext(options = {}) {
|
|
152
161
|
const cwd = options.cwd ?? process.cwd();
|
|
153
162
|
const env = options.env ?? process.env;
|
|
154
|
-
const sections = [
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
163
|
+
const sections = [...buildMrContext(env), ...(await readRuleContext(cwd))];
|
|
164
|
+
return sections.length ? sections.join("\n\n") : "(无额外背景)";
|
|
165
|
+
}
|
|
166
|
+
/** 每 shard 变化的变更附近源码窗口([ADD]/[CTX] 标注):进入 user prompt */
|
|
167
|
+
async function collectShardSourceContext(diff, options = {}) {
|
|
168
|
+
const cwd = options.cwd ?? process.cwd();
|
|
169
|
+
const env = options.env ?? process.env;
|
|
170
|
+
const sections = await readSourceContext(cwd, diff, SOURCE_WINDOW_RADIUS);
|
|
171
|
+
return sections.length ? sections.join("\n\n") : "(无源码上下文)";
|
|
160
172
|
}
|
|
161
173
|
//# sourceMappingURL=context.js.map
|
package/dist/core/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"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"}
|
package/dist/core/diff.d.ts
CHANGED
|
@@ -12,10 +12,45 @@ export interface AddedLine {
|
|
|
12
12
|
content: string;
|
|
13
13
|
}
|
|
14
14
|
export declare function normalizePath(path: string): string;
|
|
15
|
+
export type DiffEvent = {
|
|
16
|
+
kind: "file";
|
|
17
|
+
newPath: string | null;
|
|
18
|
+
oldPath: string | null;
|
|
19
|
+
} | {
|
|
20
|
+
kind: "hunk";
|
|
21
|
+
newStart: number;
|
|
22
|
+
newCount: number;
|
|
23
|
+
} | {
|
|
24
|
+
kind: "add";
|
|
25
|
+
file: string | null;
|
|
26
|
+
line: number;
|
|
27
|
+
content: string;
|
|
28
|
+
} | {
|
|
29
|
+
kind: "del";
|
|
30
|
+
file: string | null;
|
|
31
|
+
content: string;
|
|
32
|
+
} | {
|
|
33
|
+
kind: "ctx";
|
|
34
|
+
file: string | null;
|
|
35
|
+
line: number;
|
|
36
|
+
content: string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* 单一 unified diff 解析器:hunk 内容按 `@@` 声明的行数预算消费,而不是靠
|
|
40
|
+
* 行前缀判断文件头 —— 否则以 `+++ ` / `--- ` 开头的**代码内容**(markdown、
|
|
41
|
+
* SQL 注释、diff 片段等)会被误判为文件头,造成伪造文件归属与整段 hunk 丢失。
|
|
42
|
+
* 所有需要逐行语义的消费方共用它,保证注解 diff 与对齐层对同一行结论一致。
|
|
43
|
+
*/
|
|
44
|
+
export declare function walkDiff(diff: string): Generator<DiffEvent>;
|
|
15
45
|
export declare function collectAddedLines(diff: string): Map<string, AddedLine[]>;
|
|
16
46
|
export declare function getChangedFiles(diff: string): string[];
|
|
17
47
|
export declare function splitDiffByMaxBytes(diff: string, maxBytes: number): string[];
|
|
18
|
-
|
|
48
|
+
/**
|
|
49
|
+
* 紧凑模式的注解 diff:以新文件侧行号就地标注每一行,一份结构同时承载
|
|
50
|
+
* 「可评论锚定表」与「变更展示」(替代行索引 + 原始 diff 两块)。
|
|
51
|
+
* 仅是渲染层——评论对齐仍以原始 diff 的 collectAddedLines 为唯一证据来源。
|
|
52
|
+
*/
|
|
53
|
+
export declare function buildAnnotatedDiff(diff: string): string;
|
|
19
54
|
export interface CommentAlignmentStats {
|
|
20
55
|
acceptedByLine: number;
|
|
21
56
|
repairedByCode: number;
|
package/dist/core/diff.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/core/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBpD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBlF;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/core/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBpD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBlF;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE;;;;;GAKG;AACH,wBAAiB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAgE5D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAaxE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAatD;AAyBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAuB5E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuCvD;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,2BAA2B,EAAE,MAAM,CAAC;IACpC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAoCD;;;;;;GAMG;AACH,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,EAAE,GACpB,sBAAsB,CA0DxB;AAED,0EAA0E;AAC1E,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,EAAE,GACpB,SAAS,EAAE,CAEb"}
|
package/dist/core/diff.js
CHANGED
|
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.globToRegExp = globToRegExp;
|
|
4
4
|
exports.filterDiffByIgnore = filterDiffByIgnore;
|
|
5
5
|
exports.normalizePath = normalizePath;
|
|
6
|
+
exports.walkDiff = walkDiff;
|
|
6
7
|
exports.collectAddedLines = collectAddedLines;
|
|
7
8
|
exports.getChangedFiles = getChangedFiles;
|
|
8
9
|
exports.splitDiffByMaxBytes = splitDiffByMaxBytes;
|
|
9
|
-
exports.
|
|
10
|
+
exports.buildAnnotatedDiff = buildAnnotatedDiff;
|
|
10
11
|
exports.alignCommentsToDiffAddedLinesDetailed = alignCommentsToDiffAddedLinesDetailed;
|
|
11
12
|
exports.alignCommentsToDiffAddedLines = alignCommentsToDiffAddedLines;
|
|
12
13
|
const default_ignore_1 = require("./default-ignore");
|
|
@@ -58,49 +59,91 @@ function filterDiffByIgnore(diff, ignorePatterns) {
|
|
|
58
59
|
function normalizePath(path) {
|
|
59
60
|
return path.trim().replace(/^[ab]\//, "").replace(/^\.\//, "");
|
|
60
61
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
/**
|
|
63
|
+
* 单一 unified diff 解析器:hunk 内容按 `@@` 声明的行数预算消费,而不是靠
|
|
64
|
+
* 行前缀判断文件头 —— 否则以 `+++ ` / `--- ` 开头的**代码内容**(markdown、
|
|
65
|
+
* SQL 注释、diff 片段等)会被误判为文件头,造成伪造文件归属与整段 hunk 丢失。
|
|
66
|
+
* 所有需要逐行语义的消费方共用它,保证注解 diff 与对齐层对同一行结论一致。
|
|
67
|
+
*/
|
|
68
|
+
function* walkDiff(diff) {
|
|
69
|
+
let newPath = null;
|
|
70
|
+
let oldPath = null;
|
|
65
71
|
let newLine = 0;
|
|
72
|
+
let remainingOld = 0;
|
|
73
|
+
let remainingNew = 0;
|
|
74
|
+
const inHunk = () => remainingOld > 0 || remainingNew > 0;
|
|
66
75
|
for (const raw of diff.split("\n")) {
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
76
|
+
if (!inHunk()) {
|
|
77
|
+
if (raw.startsWith("diff --git ")) {
|
|
78
|
+
oldPath = null;
|
|
79
|
+
newPath = null;
|
|
80
|
+
const match = /^diff --git a\/(.+?) b\/(.+)$/.exec(raw);
|
|
81
|
+
if (match) {
|
|
82
|
+
oldPath = normalizePath(match[1]);
|
|
83
|
+
newPath = normalizePath(match[2]);
|
|
84
|
+
yield { kind: "file", newPath, oldPath };
|
|
85
|
+
}
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (raw.startsWith("--- ")) {
|
|
89
|
+
oldPath = raw.startsWith("--- a/")
|
|
90
|
+
? normalizePath(raw.slice("--- a/".length))
|
|
91
|
+
: null;
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (raw.startsWith("+++ ")) {
|
|
95
|
+
newPath = raw.startsWith("+++ b/")
|
|
96
|
+
? normalizePath(raw.slice("+++ b/".length))
|
|
97
|
+
: null;
|
|
98
|
+
yield { kind: "file", newPath, oldPath };
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (raw.startsWith("@@")) {
|
|
102
|
+
const match = /^@@\s+-(\d+)(?:,(\d+))?\s+\+(\d+)(?:,(\d+))?\s+@@/.exec(raw);
|
|
103
|
+
if (!match)
|
|
104
|
+
continue;
|
|
105
|
+
remainingOld = match[2] === undefined ? 1 : Number(match[2]);
|
|
106
|
+
remainingNew = match[4] === undefined ? 1 : Number(match[4]);
|
|
107
|
+
newLine = Number(match[3]);
|
|
108
|
+
yield { kind: "hunk", newStart: newLine, newCount: remainingNew };
|
|
109
|
+
continue;
|
|
74
110
|
}
|
|
75
111
|
continue;
|
|
76
112
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
files.set(currentFile, files.get(currentFile) ?? []);
|
|
113
|
+
// hunk 内容:no-newline 标记不消耗任何一侧预算
|
|
114
|
+
if (raw.startsWith("\\"))
|
|
80
115
|
continue;
|
|
116
|
+
if (raw.startsWith("+")) {
|
|
117
|
+
yield { kind: "add", file: newPath, line: newLine, content: raw.slice(1) };
|
|
118
|
+
newLine += 1;
|
|
119
|
+
remainingNew -= 1;
|
|
81
120
|
}
|
|
82
|
-
if (raw.startsWith("
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
newLine = Number(match?.[2] ?? 0);
|
|
86
|
-
continue;
|
|
121
|
+
else if (raw.startsWith("-")) {
|
|
122
|
+
yield { kind: "del", file: newPath, content: raw.slice(1) };
|
|
123
|
+
remainingOld -= 1;
|
|
87
124
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
files.get(currentFile)?.push({
|
|
92
|
-
file: currentFile,
|
|
93
|
-
line: newLine,
|
|
94
|
-
content: raw.slice(1),
|
|
95
|
-
});
|
|
125
|
+
else {
|
|
126
|
+
const content = raw.startsWith(" ") ? raw.slice(1) : raw;
|
|
127
|
+
yield { kind: "ctx", file: newPath, line: newLine, content };
|
|
96
128
|
newLine += 1;
|
|
129
|
+
remainingOld -= 1;
|
|
130
|
+
remainingNew -= 1;
|
|
97
131
|
}
|
|
98
|
-
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function collectAddedLines(diff) {
|
|
135
|
+
const files = new Map();
|
|
136
|
+
for (const event of walkDiff(diff)) {
|
|
137
|
+
if (event.kind === "file") {
|
|
138
|
+
if (event.newPath)
|
|
139
|
+
files.set(event.newPath, files.get(event.newPath) ?? []);
|
|
99
140
|
continue;
|
|
100
141
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
142
|
+
if (event.kind !== "add" || !event.file)
|
|
143
|
+
continue;
|
|
144
|
+
const bucket = files.get(event.file) ?? [];
|
|
145
|
+
bucket.push({ file: event.file, line: event.line, content: event.content });
|
|
146
|
+
files.set(event.file, bucket);
|
|
104
147
|
}
|
|
105
148
|
return files;
|
|
106
149
|
}
|
|
@@ -159,18 +202,45 @@ function splitDiffByMaxBytes(diff, maxBytes) {
|
|
|
159
202
|
shards.push(current.join("\n"));
|
|
160
203
|
return shards;
|
|
161
204
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
205
|
+
/**
|
|
206
|
+
* 紧凑模式的注解 diff:以新文件侧行号就地标注每一行,一份结构同时承载
|
|
207
|
+
* 「可评论锚定表」与「变更展示」(替代行索引 + 原始 diff 两块)。
|
|
208
|
+
* 仅是渲染层——评论对齐仍以原始 diff 的 collectAddedLines 为唯一证据来源。
|
|
209
|
+
*/
|
|
210
|
+
function buildAnnotatedDiff(diff) {
|
|
211
|
+
const out = [];
|
|
212
|
+
let lastTitle = null;
|
|
213
|
+
for (const event of walkDiff(diff)) {
|
|
214
|
+
switch (event.kind) {
|
|
215
|
+
case "file": {
|
|
216
|
+
// +++ /dev/null:整文件删除,无可评论行,仅保留标题供理解
|
|
217
|
+
const title = event.newPath
|
|
218
|
+
? `### ${event.newPath}`
|
|
219
|
+
: event.oldPath
|
|
220
|
+
? `### ${event.oldPath}(文件已删除)`
|
|
221
|
+
: null;
|
|
222
|
+
// `diff --git` 与 `+++` 会各产生一次 file 事件,标题去重
|
|
223
|
+
if (title && title !== lastTitle) {
|
|
224
|
+
out.push(title);
|
|
225
|
+
lastTitle = title;
|
|
226
|
+
}
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
case "hunk":
|
|
230
|
+
out.push(`@@ +${event.newStart},${event.newCount} @@`);
|
|
231
|
+
break;
|
|
232
|
+
case "add":
|
|
233
|
+
out.push(`[ADD] ${String(event.line).padStart(4, " ")} | ${event.content}`);
|
|
234
|
+
break;
|
|
235
|
+
case "del":
|
|
236
|
+
out.push(`[DEL] | ${event.content}`);
|
|
237
|
+
break;
|
|
238
|
+
case "ctx":
|
|
239
|
+
out.push(`[CTX] ${String(event.line).padStart(4, " ")} | ${event.content}`);
|
|
167
240
|
break;
|
|
168
|
-
rows.push(`[${file}:${item.line}] ${item.content}`);
|
|
169
241
|
}
|
|
170
|
-
if (rows.length >= maxLines)
|
|
171
|
-
break;
|
|
172
242
|
}
|
|
173
|
-
return
|
|
243
|
+
return out.join("\n");
|
|
174
244
|
}
|
|
175
245
|
function emptyAlignmentStats() {
|
|
176
246
|
return {
|
package/dist/core/diff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/core/diff.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/core/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AIComment, KnownFinding, ReconciledFinding } from "../types";
|
|
1
|
+
import type { AIComment, KnownFinding, ReconciledFinding, RevalidationCandidate, RevalidationVerdict } from "../types";
|
|
2
2
|
export interface ChangedLineRange {
|
|
3
3
|
start: number;
|
|
4
4
|
end: number;
|
|
@@ -14,11 +14,6 @@ export interface IncrementalChangeScope {
|
|
|
14
14
|
*/
|
|
15
15
|
export declare function parseIncrementalChangeScope(diff: string): IncrementalChangeScope;
|
|
16
16
|
export declare function isLineInChangedHunk(scope: IncrementalChangeScope, file: string, line: number): boolean;
|
|
17
|
-
/**
|
|
18
|
-
* “附近”的上下文半径。默认 3 行;修复常落在锚点更远处的项目可通过
|
|
19
|
-
* `AICR_INCREMENTAL_CONTEXT` 放大,使语义修复更容易被判定为已修改。
|
|
20
|
-
*/
|
|
21
|
-
export declare function resolveIncrementalContextLines(env: NodeJS.ProcessEnv): number;
|
|
22
17
|
/**
|
|
23
18
|
* 加载 sinceSha..HEAD 的文件集合与带上下文 hunk。sha 不存在、force-push、
|
|
24
19
|
* 浅克隆等任何失败均返回 null,由对账层执行保守降级。
|
|
@@ -57,6 +52,16 @@ export interface ReconcileResult {
|
|
|
57
52
|
activeComments: AIComment[];
|
|
58
53
|
/** OPEN 且 blocking,作为准入判定输入 */
|
|
59
54
|
blockingComments: AIComment[];
|
|
55
|
+
/**
|
|
56
|
+
* 以「未触碰区域漏报」理由保活的 finding:几何判定无法收口,
|
|
57
|
+
* 交由模型复核裁决(判定 FIXED 时通过 applyRevalidationVerdicts 收口)。
|
|
58
|
+
*/
|
|
59
|
+
revalidationCandidates: RevalidationCandidate[];
|
|
60
|
+
/**
|
|
61
|
+
* 本轮真正新建的 finding(仅 newComments 产物,不含 severity 迁移记录):
|
|
62
|
+
* 语义判重的新报侧候选(见 applySemanticMatches)。
|
|
63
|
+
*/
|
|
64
|
+
newFindings: ReconciledFinding[];
|
|
60
65
|
stats: {
|
|
61
66
|
new: number;
|
|
62
67
|
kept: number;
|
|
@@ -69,6 +74,11 @@ export interface ReconcileResult {
|
|
|
69
74
|
fixedMissingAnchor: number;
|
|
70
75
|
severityMigrated: number;
|
|
71
76
|
ambiguousAnchor: number;
|
|
77
|
+
revalidatedFixed: number;
|
|
78
|
+
revalidatedPresent: number;
|
|
79
|
+
revalidatedUnsure: number;
|
|
80
|
+
semanticWontFix: number;
|
|
81
|
+
semanticDuplicate: number;
|
|
72
82
|
};
|
|
73
83
|
}
|
|
74
84
|
/**
|
|
@@ -80,6 +90,22 @@ export interface ReconcileResult {
|
|
|
80
90
|
* 不参与准入),以保证同 commit 重跑幂等、避免模型非确定性补报造成"打地鼠"。
|
|
81
91
|
*/
|
|
82
92
|
export declare function reconcileFindings(input: ReconcileInput): ReconcileResult;
|
|
93
|
+
/**
|
|
94
|
+
* 将模型复核判定应用到对账结果:仅对复核候选且判定为 FIXED 的 finding 收口,
|
|
95
|
+
* PRESENT / UNSURE / 判定缺失一律保活,使复核失败时行为与未引入复核完全一致。
|
|
96
|
+
*/
|
|
97
|
+
export declare function applyRevalidationVerdicts(result: ReconcileResult, verdicts: Map<string, RevalidationVerdict>): ReconcileResult;
|
|
98
|
+
export interface SemanticMatch {
|
|
99
|
+
newFingerprint: string;
|
|
100
|
+
knownFingerprint: string;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 将语义判重命中应用到对账结果:命中 WONT_FIX 的新报以新指纹落库为终态
|
|
104
|
+
* (终态跨指纹粘性),命中仍存活 OPEN 的新报按重复整体移除;命中方本轮已
|
|
105
|
+
* 收口(FIXED)时不压制(问题迁移按新 finding 处理)。每条新报至多处置一次,
|
|
106
|
+
* WONT_FIX 优先。
|
|
107
|
+
*/
|
|
108
|
+
export declare function applySemanticMatches(result: ReconcileResult, matches: SemanticMatch[]): ReconcileResult;
|
|
83
109
|
/**
|
|
84
110
|
* 计算 sinceSha..HEAD 改动的文件集合(normalize 后路径)。
|
|
85
111
|
* sha 不存在(force-push / 浅克隆)等任何失败都返回 null,由调用方按全量 blocking 处理。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"incremental.d.ts","sourceRoot":"","sources":["../../src/core/incremental.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,iBAAiB,
|
|
1
|
+
{"version":3,"file":"incremental.d.ts","sourceRoot":"","sources":["../../src/core/incremental.ts"],"names":[],"mappings":"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"}
|