@wuyanbin/ai-code-review-cli-remote 1.0.29 → 1.0.30

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 (61) hide show
  1. package/dist/constants.d.ts +7 -6
  2. package/dist/constants.d.ts.map +1 -1
  3. package/dist/constants.js +8 -14
  4. package/dist/constants.js.map +1 -1
  5. package/dist/core/context.d.ts +7 -1
  6. package/dist/core/context.d.ts.map +1 -1
  7. package/dist/core/context.js +26 -14
  8. package/dist/core/context.js.map +1 -1
  9. package/dist/core/diff.d.ts +36 -1
  10. package/dist/core/diff.d.ts.map +1 -1
  11. package/dist/core/diff.js +111 -41
  12. package/dist/core/diff.js.map +1 -1
  13. package/dist/core/incremental.d.ts +32 -6
  14. package/dist/core/incremental.d.ts.map +1 -1
  15. package/dist/core/incremental.js +128 -18
  16. package/dist/core/incremental.js.map +1 -1
  17. package/dist/core/model.d.ts +23 -1
  18. package/dist/core/model.d.ts.map +1 -1
  19. package/dist/core/model.js +107 -10
  20. package/dist/core/model.js.map +1 -1
  21. package/dist/core/prompt.d.ts +10 -2
  22. package/dist/core/prompt.d.ts.map +1 -1
  23. package/dist/core/prompt.js +39 -28
  24. package/dist/core/prompt.js.map +1 -1
  25. package/dist/core/revalidation.d.ts +23 -0
  26. package/dist/core/revalidation.d.ts.map +1 -0
  27. package/dist/core/revalidation.js +150 -0
  28. package/dist/core/revalidation.js.map +1 -0
  29. package/dist/core/reviewer.d.ts +11 -2
  30. package/dist/core/reviewer.d.ts.map +1 -1
  31. package/dist/core/reviewer.js +25 -4
  32. package/dist/core/reviewer.js.map +1 -1
  33. package/dist/core/semantic-match.d.ts +29 -0
  34. package/dist/core/semantic-match.d.ts.map +1 -0
  35. package/dist/core/semantic-match.js +150 -0
  36. package/dist/core/semantic-match.js.map +1 -0
  37. package/dist/core/summarizer.d.ts.map +1 -1
  38. package/dist/core/summarizer.js +1 -1
  39. package/dist/core/summarizer.js.map +1 -1
  40. package/dist/gitlab/api.d.ts +21 -0
  41. package/dist/gitlab/api.d.ts.map +1 -1
  42. package/dist/gitlab/api.js +87 -22
  43. package/dist/gitlab/api.js.map +1 -1
  44. package/dist/index.js +0 -0
  45. package/dist/platform/report.d.ts +3 -0
  46. package/dist/platform/report.d.ts.map +1 -1
  47. package/dist/platform/report.js.map +1 -1
  48. package/dist/runner.d.ts.map +1 -1
  49. package/dist/runner.js +90 -17
  50. package/dist/runner.js.map +1 -1
  51. package/dist/shared/identity.d.ts +5 -0
  52. package/dist/shared/identity.d.ts.map +1 -1
  53. package/dist/shared/identity.js +11 -0
  54. package/dist/shared/identity.js.map +1 -1
  55. package/dist/shared/model-json.d.ts +6 -0
  56. package/dist/shared/model-json.d.ts.map +1 -0
  57. package/dist/shared/model-json.js +19 -0
  58. package/dist/shared/model-json.js.map +1 -0
  59. package/dist/types.d.ts +12 -0
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +1 -1
package/dist/runner.js CHANGED
@@ -4,6 +4,9 @@ exports.reviewMain = reviewMain;
4
4
  const config_1 = require("./platform/config");
5
5
  const output_1 = require("./core/output");
6
6
  const incremental_1 = require("./core/incremental");
7
+ const revalidation_1 = require("./core/revalidation");
8
+ const semantic_match_1 = require("./core/semantic-match");
9
+ const model_1 = require("./core/model");
7
10
  const reviewer_1 = require("./core/reviewer");
8
11
  const summarizer_1 = require("./core/summarizer");
9
12
  const verdict_1 = require("./core/verdict");
@@ -50,13 +53,26 @@ function logConfigDetails(config) {
50
53
  console.error(`[runner] ${line}`);
51
54
  }
52
55
  }
56
+ /** 输出 run 级用量汇总日志,并返回上报用的 token 合计 */
57
+ function summarizeUsageForReport() {
58
+ const usage = (0, model_1.getModelUsageSummary)();
59
+ const byPurpose = Object.entries(usage.byPurpose)
60
+ .map(([purpose, t]) => `${purpose}=${t.calls}c/${t.inputTokens}i/${t.outputTokens}o`)
61
+ .join(" ");
62
+ console.error(`[usage] calls=${usage.total.calls} input=${usage.total.inputTokens} output=${usage.total.outputTokens} cacheRead=${usage.total.cacheReadTokens} cacheWrite=${usage.total.cacheWriteTokens}${byPurpose ? ` | ${byPurpose}` : ""}`);
63
+ return {
64
+ inputTokens: usage.total.inputTokens,
65
+ outputTokens: usage.total.outputTokens,
66
+ };
67
+ }
53
68
  // 评论入口
54
69
  async function reviewMain() {
55
70
  const startedAt = Date.now();
56
71
  const diff = await readStdin();
57
72
  console.error(`[runner] review start diffBytes=${Buffer.byteLength(diff)}`);
58
- if (!diff.trim()) {
59
- console.error("[runner] review skipped: empty diff");
73
+ const isCleanupRun = !diff.trim();
74
+ if (isCleanupRun && !process.env.CI_MERGE_REQUEST_IID) {
75
+ console.error("[runner] review skipped: empty diff (no MR context)");
60
76
  console.log(JSON.stringify((0, output_1.buildEmptyRdjson)()));
61
77
  return;
62
78
  }
@@ -80,19 +96,35 @@ async function reviewMain() {
80
96
  console.log(JSON.stringify((0, output_1.buildEmptyRdjson)()));
81
97
  return;
82
98
  }
83
- // 已知 findings 拉取与模型评审无依赖,并行执行;拉取失败 fail-open 退化为无状态评审
84
- const [firstPass, knownSnapshot] = await Promise.all([
85
- (0, reviewer_1.reviewCode)(diff, config),
86
- mrIid ? (0, findings_1.fetchKnownFindings)(mrIid) : Promise.resolve(null),
87
- ]);
88
- // baseline(首轮全量审)多趟提召回:拿到 snapshot 判定 baseline 后再串行追加余下趟次,
89
- // 仅首轮多付成本;非 baseline 与无状态运行(snapshot 为 null)保持单趟。
90
- let result = firstPass;
99
+ // 空 diff 的清理运行有破坏性副作用(收口全部 OPEN finding、resolve 全部
100
+ // 评论、推进 lastReviewedSha 且 FIXED 为终态),因此只在 GitLab 侧确认该 MR
101
+ // 确实无变更时才执行;本地 diff 计算异常(merge-base 失效等)造成的假空 diff
102
+ // 必须退化为无副作用跳过。
103
+ if (isCleanupRun) {
104
+ const changesCount = (0, api_1.parseMergeRequestChangesCount)(await (0, api_1.fetchGitlabMergeRequest)({ token: config.gitlab?.token }));
105
+ if (changesCount !== 0) {
106
+ console.error(`[runner] empty diff cleanup skipped: GitLab does not corroborate an empty MR (changesCount=${changesCount ?? "unknown"}); local diff computation is likely broken`);
107
+ console.log(JSON.stringify((0, output_1.buildEmptyRdjson)()));
108
+ return;
109
+ }
110
+ console.error("[runner] empty diff corroborated by GitLab: cleanup run (close open findings, resolve stale comments)");
111
+ }
112
+ // 先取 findings 快照判定 baseline(决定是否为 user 内容打缓存断点)再评审。
113
+ // 快照是一次毫秒级平台请求,串行代价可忽略;拉取失败 fail-open 退化为无状态评审。
114
+ const knownSnapshot = mrIid ? await (0, findings_1.fetchKnownFindings)(mrIid) : null;
91
115
  const isBaseline = !!knownSnapshot && !knownSnapshot.lastReviewedSha;
116
+ // baseline 双趟的 prompt 逐字节相同:趟 1 写入 prompt cache,趟 2 全量命中
117
+ const reviewOptions = (0, reviewer_1.shouldCacheBaselineUserPrompt)(isBaseline)
118
+ ? { cacheUserPrompt: true }
119
+ : {};
120
+ const firstPass = await (0, reviewer_1.reviewCode)(diff, config, reviewOptions);
121
+ // baseline(首轮全量审)多趟提召回:仅首轮多付成本;
122
+ // 非 baseline 与无状态运行(snapshot 为 null)保持单趟。
123
+ let result = firstPass;
92
124
  if (firstPass && isBaseline && reviewer_1.BASELINE_REVIEW_PASSES > 1) {
93
125
  const passes = [firstPass];
94
126
  for (let i = 1; i < reviewer_1.BASELINE_REVIEW_PASSES; i++) {
95
- const next = await (0, reviewer_1.reviewCode)(diff, config);
127
+ const next = await (0, reviewer_1.reviewCode)(diff, config, reviewOptions);
96
128
  if (next)
97
129
  passes.push(next);
98
130
  }
@@ -107,22 +139,20 @@ async function reviewMain() {
107
139
  modelUsed: config.ai.model,
108
140
  duration: Date.now() - startedAt,
109
141
  mrIid,
142
+ ...summarizeUsageForReport(),
110
143
  });
111
144
  return;
112
145
  }
113
146
  const gitlabContext = (await (0, api_1.fetchGitlabContext)({ token: config.gitlab?.token })) ?? undefined;
114
147
  // 与平台已知 findings 对账:漏报保活、修复收口、人工 dismiss 终态、增量准入
115
- let activeComments = result.comments;
116
- let blockingComments = result.comments;
117
- let reconciledFindings = null;
148
+ let reconciled = null;
118
149
  if (knownSnapshot) {
119
150
  const changeScope = knownSnapshot.lastReviewedSha
120
151
  ? await (0, incremental_1.loadIncrementalChangeScope)(knownSnapshot.lastReviewedSha, {
121
152
  ...(commitSha ? { headSha: commitSha } : {}),
122
- contextLines: (0, incremental_1.resolveIncrementalContextLines)(process.env),
123
153
  })
124
154
  : null;
125
- const reconciled = (0, incremental_1.reconcileFindings)({
155
+ reconciled = (0, incremental_1.reconcileFindings)({
126
156
  known: knownSnapshot.findings,
127
157
  current: result.comments,
128
158
  diff,
@@ -133,15 +163,47 @@ async function reviewMain() {
133
163
  ? (0, api_1.collectHumanResolvedFingerprints)(gitlabContext)
134
164
  : new Set(),
135
165
  });
166
+ }
167
+ // keptUntouched 保活候选交模型复核裁决,新建 finding 与存活已知 finding 交模型
168
+ // 判重;两者与摘要生成(本来就有的独立模型调用)三路并行,不拉长关键路径。
169
+ // 复核/判重失败或关闭时行为与未引入时完全一致。
170
+ const revalidationCandidates = reconciled?.revalidationCandidates ?? [];
171
+ const semanticPairs = reconciled ? (0, semantic_match_1.selectSemanticPairs)(reconciled) : [];
172
+ const [revalidationVerdicts, semanticMatches, summaryMarkdown] = await Promise.all([
173
+ revalidationCandidates.length > 0
174
+ ? (0, revalidation_1.revalidateFindings)(revalidationCandidates, config)
175
+ : Promise.resolve(new Map()),
176
+ semanticPairs.length > 0
177
+ ? (0, semantic_match_1.judgeSemanticMatches)(semanticPairs, config)
178
+ : Promise.resolve([]),
179
+ (0, summarizer_1.generateSummary)(diff, config),
180
+ ]);
181
+ // 先复核后判重:applySemanticMatches 按应用时的已知方状态放行已收口者
182
+ if (reconciled && revalidationVerdicts.size > 0) {
183
+ reconciled = (0, incremental_1.applyRevalidationVerdicts)(reconciled, revalidationVerdicts);
184
+ }
185
+ if (reconciled && semanticMatches.length > 0) {
186
+ reconciled = (0, incremental_1.applySemanticMatches)(reconciled, semanticMatches);
187
+ }
188
+ let activeComments = result.comments;
189
+ let blockingComments = result.comments;
190
+ let reconciledFindings = null;
191
+ if (reconciled) {
136
192
  activeComments = reconciled.activeComments;
137
193
  blockingComments = reconciled.blockingComments;
138
194
  reconciledFindings = reconciled.findings;
139
195
  console.error(`[runner] findings reconciled new=${reconciled.stats.new} kept=${reconciled.stats.kept} keptReported=${reconciled.stats.keptReported} keptUntouched=${reconciled.stats.keptUntouched} fixed=${reconciled.stats.fixed} fixedRevalidated=${reconciled.stats.fixedRevalidated} fixedMissingAnchor=${reconciled.stats.fixedMissingAnchor} severityMigrated=${reconciled.stats.severityMigrated} ambiguousAnchor=${reconciled.stats.ambiguousAnchor} wontFix=${reconciled.stats.wontFix} dropped=${reconciled.stats.dropped}`);
196
+ if (revalidationVerdicts.size > 0) {
197
+ console.error(`[revalidation] checked=${revalidationVerdicts.size} fixed=${reconciled.stats.revalidatedFixed} present=${reconciled.stats.revalidatedPresent} unsure=${reconciled.stats.revalidatedUnsure}`);
198
+ }
199
+ if (semanticPairs.length > 0) {
200
+ console.error(`[semantic] pairs=${semanticPairs.length} matched=${semanticMatches.length} wontFix=${reconciled.stats.semanticWontFix} duplicate=${reconciled.stats.semanticDuplicate}`);
201
+ }
140
202
  }
141
203
  const verdict = (0, verdict_1.computeVerdict)(blockingComments);
142
204
  console.error(`[runner] review complete comments=${activeComments.length} blocking=${blockingComments.length} verdict=${verdict}`);
143
205
  const verdictSection = (0, verdict_1.buildVerdictMarkdown)(verdict, activeComments, blockingComments);
144
- let markdown = await (0, summarizer_1.generateSummary)(diff, config);
206
+ let markdown = summaryMarkdown;
145
207
  if (result.sensitiveAlerts && result.sensitiveAlerts.length > 0) {
146
208
  const alertLines = result.sensitiveAlerts.map((a) => {
147
209
  const icon = a.riskLevel === "high" ? "🔴" : a.riskLevel === "medium" ? "🟡" : "🔵";
@@ -166,10 +228,20 @@ async function reviewMain() {
166
228
  const mergeRequest = await (0, api_1.fetchGitlabMergeRequest)({
167
229
  token: config.gitlab?.token,
168
230
  });
231
+ // MR 已合并/关闭:终态 MR 上的写入毫无意义且有害——评论无人处理,
232
+ // 而重跑流水线会让模型复报的问题重新入库、继续占据待处理计数。
233
+ if ((0, api_1.isMergeRequestClosed)(mergeRequest)) {
234
+ console.error(`[runner] MR is ${mergeRequest?.state} (merged or closed): skipping all writes to preserve the closed finding lifecycle`);
235
+ summarizeUsageForReport();
236
+ console.log(JSON.stringify((0, output_1.buildEmptyRdjson)()));
237
+ return;
238
+ }
169
239
  const mergeRequestHeadSha = mergeRequest?.diff_refs?.head_sha;
170
240
  const headFreshness = (0, api_1.getMergeRequestHeadFreshness)(commitSha, mergeRequestHeadSha);
171
241
  if (headFreshness === "stale") {
172
242
  console.error(`[runner] stale MR pipeline skipped: pipelineCommit=${commitSha} currentHead=${mergeRequestHeadSha}`);
243
+ // 跳过写入的运行同样消耗了模型 token,用量必须留痕(否则纯浪费的运行在成本视图中不可见)
244
+ summarizeUsageForReport();
173
245
  console.log(JSON.stringify((0, output_1.buildEmptyRdjson)()));
174
246
  return;
175
247
  }
@@ -206,6 +278,7 @@ async function reviewMain() {
206
278
  verdict,
207
279
  duration: Date.now() - startedAt,
208
280
  mrIid,
281
+ ...summarizeUsageForReport(),
209
282
  ...(commitSha && findingsSynced ? { commitSha } : {}),
210
283
  ...(mrContext.sourceBranch ? { sourceBranch: mrContext.sourceBranch } : {}),
211
284
  ...(mrContext.targetBranch ? { targetBranch: mrContext.targetBranch } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
@@ -18,4 +18,9 @@ export declare function buildCommentFingerprint(comment: AIComment): string;
18
18
  export declare function buildContentFingerprint(comment: AIComment): string;
19
19
  export declare function buildHiddenMarker(kind: string, fingerprint: string): string;
20
20
  export declare function extractHiddenMarker(body: string, kind: string): string | null;
21
+ /**
22
+ * 剥离隐藏指纹标记。评论重锚定后旧 note 必须失去标记,
23
+ * 否则后续运行会继续命中旧 note 而不是新位置的讨论。
24
+ */
25
+ export declare function stripHiddenMarker(body: string, kind: string): string;
21
26
  //# sourceMappingURL=identity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/shared/identity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAQlE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAWlE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI7E"}
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/shared/identity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAQlE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAWlE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI7E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpE"}
@@ -6,6 +6,7 @@ exports.buildCommentFingerprint = buildCommentFingerprint;
6
6
  exports.buildContentFingerprint = buildContentFingerprint;
7
7
  exports.buildHiddenMarker = buildHiddenMarker;
8
8
  exports.extractHiddenMarker = extractHiddenMarker;
9
+ exports.stripHiddenMarker = stripHiddenMarker;
9
10
  const node_crypto_1 = require("node:crypto");
10
11
  const diff_1 = require("../core/diff");
11
12
  exports.COMMENT_MARKER_PREFIX = "aicr-comment";
@@ -50,4 +51,14 @@ function extractHiddenMarker(body, kind) {
50
51
  const match = new RegExp(`<!--\\s*${escaped}:([a-f0-9-]+)\\s*-->`).exec(body);
51
52
  return match?.[1] ?? null;
52
53
  }
54
+ /**
55
+ * 剥离隐藏指纹标记。评论重锚定后旧 note 必须失去标记,
56
+ * 否则后续运行会继续命中旧 note 而不是新位置的讨论。
57
+ */
58
+ function stripHiddenMarker(body, kind) {
59
+ const escaped = kind.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
60
+ return body
61
+ .replace(new RegExp(`<!--\\s*${escaped}:[a-f0-9-]+\\s*-->`, "g"), "")
62
+ .trim();
63
+ }
53
64
  //# sourceMappingURL=identity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/shared/identity.ts"],"names":[],"mappings":";;;AAOA,gCAEC;AAUD,0DAQC;AAMD,0DAWC;AAED,8CAEC;AAED,kDAIC;AAtDD,6CAAyC;AAEzC,uCAA6C;AAEhC,QAAA,qBAAqB,GAAG,cAAc,CAAC;AACvC,QAAA,cAAc,GAAG,cAAc,CAAC;AAE7C,SAAgB,UAAU,CAAC,KAAa;IACtC,OAAO,IAAA,wBAAU,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CAAC,OAAkB;IACxD,OAAO,UAAU,CACf;QACE,IAAA,oBAAa,EAAC,OAAO,CAAC,IAAI,CAAC;QAC3B,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAC1B,OAAO,CAAC,QAAQ;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,OAAkB;IACxD,OAAO,UAAU,CACf;QACE,IAAA,oBAAa,EAAC,OAAO,CAAC,IAAI,CAAC;QAC3B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QACpB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAC1B,OAAO,CAAC,QAAQ;QAChB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;QACtB,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE;KACjC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAY,EAAE,WAAmB;IACjE,OAAO,QAAQ,IAAI,IAAI,WAAW,MAAM,CAAC;AAC3C,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY,EAAE,IAAY;IAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/shared/identity.ts"],"names":[],"mappings":";;;AAOA,gCAEC;AAUD,0DAQC;AAMD,0DAWC;AAED,8CAEC;AAED,kDAIC;AAMD,8CAKC;AAjED,6CAAyC;AAEzC,uCAA6C;AAEhC,QAAA,qBAAqB,GAAG,cAAc,CAAC;AACvC,QAAA,cAAc,GAAG,cAAc,CAAC;AAE7C,SAAgB,UAAU,CAAC,KAAa;IACtC,OAAO,IAAA,wBAAU,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CAAC,OAAkB;IACxD,OAAO,UAAU,CACf;QACE,IAAA,oBAAa,EAAC,OAAO,CAAC,IAAI,CAAC;QAC3B,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAC1B,OAAO,CAAC,QAAQ;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,OAAkB;IACxD,OAAO,UAAU,CACf;QACE,IAAA,oBAAa,EAAC,OAAO,CAAC,IAAI,CAAC;QAC3B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QACpB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAC1B,OAAO,CAAC,QAAQ;QAChB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;QACtB,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE;KACjC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAY,EAAE,WAAmB;IACjE,OAAO,QAAQ,IAAI,IAAI,WAAW,MAAM,CAAC;AAC3C,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY,EAAE,IAAY;IAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,IAAY,EAAE,IAAY;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC5D,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,MAAM,CAAC,WAAW,OAAO,oBAAoB,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;SACpE,IAAI,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 从模型返回文本中提取最外层 JSON 对象片段(剥离 markdown 代码围栏)。
3
+ * 供各类结构化模型调用(复核、判重)复用;主评审有独立的逐条抢救路径。
4
+ */
5
+ export declare function extractJsonObject(content: string): string;
6
+ //# sourceMappingURL=model-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-json.d.ts","sourceRoot":"","sources":["../../src/shared/model-json.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASzD"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractJsonObject = extractJsonObject;
4
+ /**
5
+ * 从模型返回文本中提取最外层 JSON 对象片段(剥离 markdown 代码围栏)。
6
+ * 供各类结构化模型调用(复核、判重)复用;主评审有独立的逐条抢救路径。
7
+ */
8
+ function extractJsonObject(content) {
9
+ const text = content
10
+ .replace(/^```(?:json)?\s*/i, "")
11
+ .replace(/```$/i, "")
12
+ .trim();
13
+ const start = text.indexOf("{");
14
+ const end = text.lastIndexOf("}");
15
+ if (start >= 0 && end > start)
16
+ return text.slice(start, end + 1);
17
+ return text;
18
+ }
19
+ //# sourceMappingURL=model-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-json.js","sourceRoot":"","sources":["../../src/shared/model-json.ts"],"names":[],"mappings":";;AAIA,8CASC;AAbD;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,IAAI,EAAE,CAAC;IACV,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"}
package/dist/types.d.ts CHANGED
@@ -61,6 +61,18 @@ export interface KnownFindingsSnapshot {
61
61
  lastReviewedSha: string | null;
62
62
  findings: KnownFinding[];
63
63
  }
64
+ /** 模型复核对单条历史 finding 的判定;UNSURE 与判定缺失均按保活处理 */
65
+ export type RevalidationVerdict = "FIXED" | "PRESENT" | "UNSURE";
66
+ /** 进入模型复核的保活候选:携带对账层重定位后的可靠锚点 */
67
+ export interface RevalidationCandidate {
68
+ fingerprint: string;
69
+ file: string;
70
+ line: number;
71
+ code: string;
72
+ severity: Severity;
73
+ message: string;
74
+ suggestion?: string;
75
+ }
64
76
  export interface SensitiveConfig {
65
77
  files: string[];
66
78
  keywords: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1C,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEnD,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3B,EAAE,EAAE,QAAQ,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,mCAAmC;AACnC,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,+CAA+C;AAC/C,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEjE,iCAAiC;AACjC,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,WAAW,EAAE,KAAK,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE;gBAAE,KAAK,EAAE;oBAAE,IAAI,EAAE,MAAM,CAAC;oBAAC,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAA;aAAE,CAAC;SACpD,CAAC;QACF,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;KACxC,CAAC,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wuyanbin/ai-code-review-cli-remote",
3
- "version": "1.0.29",
3
+ "version": "1.0.30",
4
4
  "description": "AI Code Review remote client - sends diffs to AICR platform for review",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",