@wuyanbin/ai-code-review-cli-remote 1.0.25 → 1.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +2 -1
- package/dist/core/context.js.map +1 -1
- package/dist/core/cursor-rules.d.ts +24 -0
- package/dist/core/cursor-rules.d.ts.map +1 -0
- package/dist/core/cursor-rules.js +228 -0
- package/dist/core/cursor-rules.js.map +1 -0
- package/dist/core/prompt.d.ts +3 -0
- package/dist/core/prompt.d.ts.map +1 -1
- package/dist/core/prompt.js +7 -1
- package/dist/core/prompt.js.map +1 -1
- package/dist/core/reviewer.d.ts.map +1 -1
- package/dist/core/reviewer.js +12 -0
- package/dist/core/reviewer.js.map +1 -1
- package/dist/core/run-report-fields.d.ts +26 -0
- package/dist/core/run-report-fields.d.ts.map +1 -0
- package/dist/core/run-report-fields.js +72 -0
- package/dist/core/run-report-fields.js.map +1 -0
- package/dist/platform/config.d.ts.map +1 -1
- package/dist/platform/config.js +5 -1
- package/dist/platform/config.js.map +1 -1
- package/dist/platform/report.d.ts +7 -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 +8 -0
- package/dist/runner.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/client.d.ts +0 -18
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -57
- package/dist/client.js.map +0 -1
- package/dist/config.d.ts +0 -11
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -161
- package/dist/config.js.map +0 -1
- package/dist/core/priority.d.ts +0 -8
- package/dist/core/priority.d.ts.map +0 -1
- package/dist/core/priority.js +0 -48
- package/dist/core/priority.js.map +0 -1
- package/dist/diff.d.ts +0 -6
- package/dist/diff.d.ts.map +0 -1
- package/dist/diff.js +0 -127
- package/dist/diff.js.map +0 -1
- package/dist/formatters.d.ts +0 -4
- package/dist/formatters.d.ts.map +0 -1
- package/dist/formatters.js +0 -31
- package/dist/formatters.js.map +0 -1
- package/dist/gitlab.d.ts +0 -11
- package/dist/gitlab.d.ts.map +0 -1
- package/dist/gitlab.js +0 -193
- package/dist/gitlab.js.map +0 -1
- package/dist/http.d.ts +0 -4
- package/dist/http.d.ts.map +0 -1
- package/dist/http.js +0 -31
- package/dist/http.js.map +0 -1
- package/dist/model.d.ts +0 -6
- package/dist/model.d.ts.map +0 -1
- package/dist/model.js +0 -120
- package/dist/model.js.map +0 -1
- package/dist/report.d.ts +0 -9
- package/dist/report.d.ts.map +0 -1
- package/dist/report.js +0 -31
- package/dist/report.js.map +0 -1
- package/dist/reviewer.d.ts +0 -3
- package/dist/reviewer.d.ts.map +0 -1
- package/dist/reviewer.js +0 -140
- package/dist/reviewer.js.map +0 -1
- package/dist/summarizer.d.ts +0 -3
- package/dist/summarizer.d.ts.map +0 -1
- package/dist/summarizer.js +0 -75
- package/dist/summarizer.js.map +0 -1
package/dist/diff.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
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
|
package/dist/diff.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"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"}
|
package/dist/formatters.d.ts
DELETED
package/dist/formatters.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/formatters.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
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
|
package/dist/formatters.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/gitlab.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { AIComment } from "./types";
|
|
2
|
-
export declare function cleanupBotComments(options: {
|
|
3
|
-
token?: string;
|
|
4
|
-
env?: NodeJS.ProcessEnv;
|
|
5
|
-
}): Promise<number>;
|
|
6
|
-
export declare function postGitlabDiscussions(options: {
|
|
7
|
-
comments: AIComment[];
|
|
8
|
-
token?: string;
|
|
9
|
-
env?: NodeJS.ProcessEnv;
|
|
10
|
-
}): Promise<boolean>;
|
|
11
|
-
//# sourceMappingURL=gitlab.d.ts.map
|
package/dist/gitlab.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../src/gitlab.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAsIzC,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,OAAO,CAAC,MAAM,CAAC,CA2DlB;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,OAAO,CAAC,OAAO,CAAC,CAgEnB"}
|
package/dist/gitlab.js
DELETED
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.cleanupBotComments = cleanupBotComments;
|
|
4
|
-
exports.postGitlabDiscussions = postGitlabDiscussions;
|
|
5
|
-
const constants_1 = require("./constants");
|
|
6
|
-
const http_1 = require("./http");
|
|
7
|
-
const GITLAB_API_CONCURRENCY = 5;
|
|
8
|
-
function gitlabFetch(url, init = {}) {
|
|
9
|
-
return (0, http_1.fetchWithTimeout)(url, init, constants_1.API_TIMEOUT_MS);
|
|
10
|
-
}
|
|
11
|
-
function buildCommentBody(comment) {
|
|
12
|
-
const message = comment.message || constants_1.DEFAULT_COMMENT_MESSAGE;
|
|
13
|
-
return comment.suggestion
|
|
14
|
-
? `${message}\n\n建议:${comment.suggestion}`
|
|
15
|
-
: message;
|
|
16
|
-
}
|
|
17
|
-
function buildApiUrl(env, suffix) {
|
|
18
|
-
if (!env.CI_API_V4_URL || !env.CI_PROJECT_ID || !env.CI_MERGE_REQUEST_IID) {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
const apiBase = env.CI_API_V4_URL.replace(/\/+$/, "");
|
|
22
|
-
const projectId = encodeURIComponent(env.CI_PROJECT_ID);
|
|
23
|
-
const mrIid = encodeURIComponent(env.CI_MERGE_REQUEST_IID);
|
|
24
|
-
return `${apiBase}/projects/${projectId}/merge_requests/${mrIid}${suffix}`;
|
|
25
|
-
}
|
|
26
|
-
async function fetchMergeRequest(token, env) {
|
|
27
|
-
const url = buildApiUrl(env, "");
|
|
28
|
-
if (!url)
|
|
29
|
-
return null;
|
|
30
|
-
try {
|
|
31
|
-
const resp = await gitlabFetch(url, {
|
|
32
|
-
headers: { Authorization: `Bearer ${token}` },
|
|
33
|
-
});
|
|
34
|
-
if (!resp.ok) {
|
|
35
|
-
console.error(`[gitlab] merge request fetch failed status=${resp.status}`);
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
return await (0, http_1.parseJsonSafe)(resp);
|
|
39
|
-
}
|
|
40
|
-
catch (err) {
|
|
41
|
-
console.error(`[gitlab] merge request fetch error: ${err instanceof Error ? err.message : err}`);
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
async function fetchCurrentUser(token, env) {
|
|
46
|
-
const apiBase = env.CI_API_V4_URL?.replace(/\/+$/, "");
|
|
47
|
-
if (!apiBase)
|
|
48
|
-
return null;
|
|
49
|
-
try {
|
|
50
|
-
const resp = await gitlabFetch(`${apiBase}/user`, {
|
|
51
|
-
headers: { Authorization: `Bearer ${token}` },
|
|
52
|
-
});
|
|
53
|
-
if (!resp.ok) {
|
|
54
|
-
console.error(`[gitlab] fetch current user failed status=${resp.status}`);
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
return await (0, http_1.parseJsonSafe)(resp);
|
|
58
|
-
}
|
|
59
|
-
catch (err) {
|
|
60
|
-
console.error(`[gitlab] fetch current user error: ${err instanceof Error ? err.message : err}`);
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
async function fetchAllPages(url, token) {
|
|
65
|
-
const results = [];
|
|
66
|
-
let page = 1;
|
|
67
|
-
while (page <= constants_1.MAX_PAGINATION_PAGES) {
|
|
68
|
-
const sep = url.includes("?") ? "&" : "?";
|
|
69
|
-
let resp;
|
|
70
|
-
try {
|
|
71
|
-
resp = await gitlabFetch(`${url}${sep}per_page=100&page=${page}`, { headers: { Authorization: `Bearer ${token}` } });
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
console.error(`[gitlab] pagination request failed page=${page}`);
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
if (!resp.ok)
|
|
78
|
-
break;
|
|
79
|
-
const items = await (0, http_1.parseJsonSafe)(resp);
|
|
80
|
-
if (!items?.length)
|
|
81
|
-
break;
|
|
82
|
-
results.push(...items);
|
|
83
|
-
if (items.length < 100)
|
|
84
|
-
break;
|
|
85
|
-
page += 1;
|
|
86
|
-
}
|
|
87
|
-
return results;
|
|
88
|
-
}
|
|
89
|
-
async function cleanupBotComments(options) {
|
|
90
|
-
const env = options.env ?? process.env;
|
|
91
|
-
if (!options.token) {
|
|
92
|
-
console.error("[gitlab] cleanup skipped: missing GitLab token");
|
|
93
|
-
return 0;
|
|
94
|
-
}
|
|
95
|
-
const discussionUrl = buildApiUrl(env, "/discussions");
|
|
96
|
-
if (!discussionUrl) {
|
|
97
|
-
console.error("[gitlab] cleanup skipped: missing GitLab CI context");
|
|
98
|
-
return 0;
|
|
99
|
-
}
|
|
100
|
-
const user = await fetchCurrentUser(options.token, env);
|
|
101
|
-
if (!user) {
|
|
102
|
-
console.error("[gitlab] cleanup skipped: cannot determine bot user");
|
|
103
|
-
return 0;
|
|
104
|
-
}
|
|
105
|
-
console.error(`[gitlab] cleanup bot user=${user.username} (id=${user.id})`);
|
|
106
|
-
const discussions = await fetchAllPages(discussionUrl, options.token);
|
|
107
|
-
const toDelete = [];
|
|
108
|
-
for (const discussion of discussions) {
|
|
109
|
-
for (const note of discussion.notes) {
|
|
110
|
-
if (note.author.id !== user.id || note.system)
|
|
111
|
-
continue;
|
|
112
|
-
toDelete.push({ discussionId: discussion.id, noteId: note.id });
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
let deleted = 0;
|
|
116
|
-
await (0, http_1.mapConcurrent)(toDelete, GITLAB_API_CONCURRENCY, async ({ discussionId, noteId }) => {
|
|
117
|
-
const deleteUrl = `${discussionUrl}/${discussionId}/notes/${noteId}`;
|
|
118
|
-
try {
|
|
119
|
-
const resp = await gitlabFetch(deleteUrl, {
|
|
120
|
-
method: "DELETE",
|
|
121
|
-
headers: { Authorization: `Bearer ${options.token}` },
|
|
122
|
-
});
|
|
123
|
-
if (resp.ok || resp.status === 204) {
|
|
124
|
-
deleted += 1;
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
console.error(`[gitlab] delete note failed discussion=${discussionId} note=${noteId} status=${resp.status}`);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
catch (err) {
|
|
131
|
-
console.error(`[gitlab] delete note error discussion=${discussionId} note=${noteId}: ${err instanceof Error ? err.message : err}`);
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
console.error(`[gitlab] cleanup complete deleted=${deleted}`);
|
|
135
|
-
return deleted;
|
|
136
|
-
}
|
|
137
|
-
async function postGitlabDiscussions(options) {
|
|
138
|
-
const env = options.env ?? process.env;
|
|
139
|
-
if (options.comments.length === 0) {
|
|
140
|
-
console.error("[gitlab] MR discussions skipped: no diagnostics");
|
|
141
|
-
return false;
|
|
142
|
-
}
|
|
143
|
-
if (!options.token) {
|
|
144
|
-
console.error("[gitlab] MR discussions skipped: missing GitLab token");
|
|
145
|
-
return false;
|
|
146
|
-
}
|
|
147
|
-
const discussionUrl = buildApiUrl(env, "/discussions");
|
|
148
|
-
if (!discussionUrl) {
|
|
149
|
-
console.error("[gitlab] MR discussions skipped: missing GitLab CI context");
|
|
150
|
-
return false;
|
|
151
|
-
}
|
|
152
|
-
const mr = await fetchMergeRequest(options.token, env);
|
|
153
|
-
const refs = mr?.diff_refs;
|
|
154
|
-
if (!refs?.base_sha || !refs.start_sha || !refs.head_sha) {
|
|
155
|
-
console.error("[gitlab] MR discussions skipped: missing diff refs");
|
|
156
|
-
return false;
|
|
157
|
-
}
|
|
158
|
-
const validComments = options.comments.filter((c) => c.file && c.line);
|
|
159
|
-
let posted = 0;
|
|
160
|
-
await (0, http_1.mapConcurrent)(validComments, GITLAB_API_CONCURRENCY, async (comment) => {
|
|
161
|
-
try {
|
|
162
|
-
const resp = await gitlabFetch(discussionUrl, {
|
|
163
|
-
method: "POST",
|
|
164
|
-
headers: {
|
|
165
|
-
"Content-Type": "application/json",
|
|
166
|
-
Authorization: `Bearer ${options.token}`,
|
|
167
|
-
},
|
|
168
|
-
body: JSON.stringify({
|
|
169
|
-
body: buildCommentBody(comment),
|
|
170
|
-
position: {
|
|
171
|
-
base_sha: refs.base_sha,
|
|
172
|
-
start_sha: refs.start_sha,
|
|
173
|
-
head_sha: refs.head_sha,
|
|
174
|
-
position_type: "text",
|
|
175
|
-
new_path: comment.file,
|
|
176
|
-
new_line: Number(comment.line),
|
|
177
|
-
},
|
|
178
|
-
}),
|
|
179
|
-
});
|
|
180
|
-
if (!resp.ok) {
|
|
181
|
-
console.error(`[gitlab] MR discussion failed file=${comment.file} line=${comment.line} status=${resp.status}`);
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
|
-
posted += 1;
|
|
185
|
-
}
|
|
186
|
-
catch (err) {
|
|
187
|
-
console.error(`[gitlab] MR discussion error file=${comment.file} line=${comment.line}: ${err instanceof Error ? err.message : err}`);
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
console.error(`[gitlab] MR discussions posted count=${posted}`);
|
|
191
|
-
return posted > 0;
|
|
192
|
-
}
|
|
193
|
-
//# sourceMappingURL=gitlab.js.map
|
package/dist/gitlab.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../src/gitlab.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export declare function fetchWithTimeout(url: string, init: RequestInit, timeoutMs: number): Promise<Response>;
|
|
2
|
-
export declare function parseJsonSafe<T>(resp: Response): Promise<T | null>;
|
|
3
|
-
export declare function mapConcurrent<T, R>(items: T[], concurrency: number, fn: (item: T, index: number) => Promise<R>): Promise<R[]>;
|
|
4
|
-
//# sourceMappingURL=http.d.ts.map
|
package/dist/http.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC,CAMnB;AAED,wBAAsB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAMxE;AAED,wBAAsB,aAAa,CAAC,CAAC,EAAE,CAAC,EACtC,KAAK,EAAE,CAAC,EAAE,EACV,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GACzC,OAAO,CAAC,CAAC,EAAE,CAAC,CAad"}
|
package/dist/http.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fetchWithTimeout = fetchWithTimeout;
|
|
4
|
-
exports.parseJsonSafe = parseJsonSafe;
|
|
5
|
-
exports.mapConcurrent = mapConcurrent;
|
|
6
|
-
function fetchWithTimeout(url, init, timeoutMs) {
|
|
7
|
-
const controller = new AbortController();
|
|
8
|
-
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
9
|
-
return fetch(url, { ...init, signal: controller.signal }).finally(() => clearTimeout(timer));
|
|
10
|
-
}
|
|
11
|
-
async function parseJsonSafe(resp) {
|
|
12
|
-
try {
|
|
13
|
-
return (await resp.json());
|
|
14
|
-
}
|
|
15
|
-
catch {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
async function mapConcurrent(items, concurrency, fn) {
|
|
20
|
-
const results = new Array(items.length);
|
|
21
|
-
let next = 0;
|
|
22
|
-
async function worker() {
|
|
23
|
-
while (next < items.length) {
|
|
24
|
-
const i = next++;
|
|
25
|
-
results[i] = await fn(items[i], i);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
await Promise.all(Array.from({ length: Math.min(concurrency, items.length) }, worker));
|
|
29
|
-
return results;
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":";;AAAA,4CAUC;AAED,sCAMC;AAED,sCAiBC;AArCD,SAAgB,gBAAgB,CAC9B,GAAW,EACX,IAAiB,EACjB,SAAiB;IAEjB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CACrE,YAAY,CAAC,KAAK,CAAC,CACpB,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,aAAa,CAAI,IAAc;IACnD,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAM,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,KAAU,EACV,WAAmB,EACnB,EAA0C;IAE1C,MAAM,OAAO,GAAG,IAAI,KAAK,CAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,UAAU,MAAM;QACnB,OAAO,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CACpE,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/model.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { AIModelApiFormat } from "./types";
|
|
2
|
-
export interface ModelAdapter {
|
|
3
|
-
call(model: string, systemPrompt: string, userPrompt: string): Promise<string | null>;
|
|
4
|
-
}
|
|
5
|
-
export declare function createModelAdapter(endpoint: string, apiKey: string, apiFormat?: AIModelApiFormat): ModelAdapter;
|
|
6
|
-
//# sourceMappingURL=model.d.ts.map
|
package/dist/model.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,IAAI,CACF,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC3B;AAuJD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,gBAAgB,GAC3B,YAAY,CAWd"}
|
package/dist/model.js
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createModelAdapter = createModelAdapter;
|
|
4
|
-
const constants_1 = require("./constants");
|
|
5
|
-
const http_1 = require("./http");
|
|
6
|
-
async function readErrorBody(resp) {
|
|
7
|
-
const text = await resp.text().catch(() => "");
|
|
8
|
-
return text.trim().slice(0, 1000);
|
|
9
|
-
}
|
|
10
|
-
class BaseModelAdapter {
|
|
11
|
-
constructor(endpoint, apiKey) {
|
|
12
|
-
this.endpoint = endpoint;
|
|
13
|
-
this.apiKey = apiKey;
|
|
14
|
-
}
|
|
15
|
-
async call(model, systemPrompt, userPrompt) {
|
|
16
|
-
const tag = this.providerName;
|
|
17
|
-
console.error(`[model] ${tag} request start model=${model}`);
|
|
18
|
-
let resp;
|
|
19
|
-
try {
|
|
20
|
-
resp = await (0, http_1.fetchWithTimeout)(this.buildRequestUrl(), {
|
|
21
|
-
method: "POST",
|
|
22
|
-
headers: {
|
|
23
|
-
"Content-Type": "application/json",
|
|
24
|
-
...this.buildHeaders(),
|
|
25
|
-
},
|
|
26
|
-
body: JSON.stringify(this.buildBody(model, systemPrompt, userPrompt)),
|
|
27
|
-
}, constants_1.REQUEST_TIMEOUT_MS);
|
|
28
|
-
}
|
|
29
|
-
catch (err) {
|
|
30
|
-
const reason = err instanceof Error && err.name === "AbortError"
|
|
31
|
-
? "timeout"
|
|
32
|
-
: "network error";
|
|
33
|
-
console.error(`[model] ${tag} request ${reason}: ${err}`);
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
if (!resp.ok) {
|
|
37
|
-
const body = await readErrorBody(resp);
|
|
38
|
-
console.error(body
|
|
39
|
-
? `[model] ${tag} API failed status=${resp.status} body=${body}`
|
|
40
|
-
: `[model] ${tag} API failed status=${resp.status}`);
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
const json = await (0, http_1.parseJsonSafe)(resp);
|
|
44
|
-
if (!json) {
|
|
45
|
-
console.error(`[model] ${tag} response body parse failed`);
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
const content = this.extractContent(json);
|
|
49
|
-
console.error(content
|
|
50
|
-
? `[model] ${tag} request complete bytes=${Buffer.byteLength(content)}`
|
|
51
|
-
: `[model] ${tag} response empty`);
|
|
52
|
-
return content;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
class OpenAIAdapter extends BaseModelAdapter {
|
|
56
|
-
get providerName() {
|
|
57
|
-
return "openai-compatible";
|
|
58
|
-
}
|
|
59
|
-
buildRequestUrl() {
|
|
60
|
-
const url = this.endpoint.replace(/\/+$/, "");
|
|
61
|
-
return url.endsWith("/chat/completions") ? url : `${url}/chat/completions`;
|
|
62
|
-
}
|
|
63
|
-
buildHeaders() {
|
|
64
|
-
return { Authorization: `Bearer ${this.apiKey}` };
|
|
65
|
-
}
|
|
66
|
-
buildBody(model, systemPrompt, userPrompt) {
|
|
67
|
-
return {
|
|
68
|
-
model,
|
|
69
|
-
messages: [
|
|
70
|
-
{ role: "system", content: systemPrompt },
|
|
71
|
-
{ role: "user", content: userPrompt },
|
|
72
|
-
],
|
|
73
|
-
stream: false,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
extractContent(json) {
|
|
77
|
-
const data = json;
|
|
78
|
-
return data.choices?.[0]?.message?.content?.trim() || null;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
class ClaudeAdapter extends BaseModelAdapter {
|
|
82
|
-
get providerName() {
|
|
83
|
-
return "claude";
|
|
84
|
-
}
|
|
85
|
-
buildRequestUrl() {
|
|
86
|
-
const url = this.endpoint.replace(/\/+$/, "");
|
|
87
|
-
return url.endsWith("/v1/messages") ? url : `${url}/v1/messages`;
|
|
88
|
-
}
|
|
89
|
-
buildHeaders() {
|
|
90
|
-
return {
|
|
91
|
-
"x-api-key": this.apiKey,
|
|
92
|
-
"anthropic-version": "2023-06-01",
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
buildBody(model, systemPrompt, userPrompt) {
|
|
96
|
-
return {
|
|
97
|
-
model,
|
|
98
|
-
max_tokens: 32768,
|
|
99
|
-
system: systemPrompt,
|
|
100
|
-
messages: [{ role: "user", content: userPrompt }],
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
extractContent(json) {
|
|
104
|
-
const data = json;
|
|
105
|
-
return data.content?.find((b) => b.type === "text")?.text?.trim() || null;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
function createModelAdapter(endpoint, apiKey, apiFormat) {
|
|
109
|
-
if (apiFormat === "claude") {
|
|
110
|
-
return new ClaudeAdapter(endpoint, apiKey);
|
|
111
|
-
}
|
|
112
|
-
if (apiFormat === "openai") {
|
|
113
|
-
return new OpenAIAdapter(endpoint, apiKey);
|
|
114
|
-
}
|
|
115
|
-
if (endpoint.includes("anthropic.com") || endpoint.includes("/v1/messages")) {
|
|
116
|
-
return new ClaudeAdapter(endpoint, apiKey);
|
|
117
|
-
}
|
|
118
|
-
return new OpenAIAdapter(endpoint, apiKey);
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=model.js.map
|
package/dist/model.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
package/dist/report.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export interface RunReportPayload {
|
|
2
|
-
status: "SUCCESS" | "FAILED" | "TIMEOUT" | "QUOTA_EXCEEDED";
|
|
3
|
-
modelUsed?: string;
|
|
4
|
-
commentCount?: number;
|
|
5
|
-
duration?: number;
|
|
6
|
-
mrIid?: string | number;
|
|
7
|
-
}
|
|
8
|
-
export declare function postRunReport(payload: RunReportPayload, env?: NodeJS.ProcessEnv): Promise<void>;
|
|
9
|
-
//# sourceMappingURL=report.d.ts.map
|
package/dist/report.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,gBAAgB,EACzB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
|
package/dist/report.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.postRunReport = postRunReport;
|
|
4
|
-
const constants_1 = require("./constants");
|
|
5
|
-
const http_1 = require("./http");
|
|
6
|
-
async function postRunReport(payload, env = process.env) {
|
|
7
|
-
const platformUrl = env[constants_1.ENV_PLATFORM_URL]?.replace(/\/+$/, "");
|
|
8
|
-
const token = env[constants_1.ENV_PROJECT_TOKEN];
|
|
9
|
-
if (!platformUrl || !token)
|
|
10
|
-
return;
|
|
11
|
-
try {
|
|
12
|
-
console.error(`[report] posting run report status=${payload.status}`);
|
|
13
|
-
const resp = await (0, http_1.fetchWithTimeout)(`${platformUrl}${constants_1.API_RUNS_PATH}`, {
|
|
14
|
-
method: "POST",
|
|
15
|
-
headers: {
|
|
16
|
-
"Content-Type": "application/json",
|
|
17
|
-
Authorization: `Bearer ${token}`,
|
|
18
|
-
},
|
|
19
|
-
body: JSON.stringify(payload),
|
|
20
|
-
}, constants_1.API_TIMEOUT_MS);
|
|
21
|
-
if (!resp.ok) {
|
|
22
|
-
console.error(`[report] 运行结果上报失败 status=${resp.status}`);
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
console.error("[report] run report posted");
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
console.error("[report] 运行结果上报异常:", error instanceof Error ? error.message : String(error));
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=report.js.map
|
package/dist/report.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":";;AAgBA,sCAiCC;AAjDD,2CAKqB;AACrB,iCAA0C;AAUnC,KAAK,UAAU,aAAa,CACjC,OAAyB,EACzB,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,WAAW,GAAG,GAAG,CAAC,4BAAgB,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,6BAAiB,CAAC,CAAC;IACrC,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnC,IAAI,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,sCAAsC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,MAAM,IAAA,uBAAgB,EACjC,GAAG,WAAW,GAAG,yBAAa,EAAE,EAChC;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,OAAO,CAAC;SAC9B,EACD,0BAAc,CACf,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,oBAAoB,EACpB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/reviewer.d.ts
DELETED