@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.
Files changed (74) hide show
  1. package/dist/core/context.d.ts.map +1 -1
  2. package/dist/core/context.js +2 -1
  3. package/dist/core/context.js.map +1 -1
  4. package/dist/core/cursor-rules.d.ts +24 -0
  5. package/dist/core/cursor-rules.d.ts.map +1 -0
  6. package/dist/core/cursor-rules.js +228 -0
  7. package/dist/core/cursor-rules.js.map +1 -0
  8. package/dist/core/prompt.d.ts +3 -0
  9. package/dist/core/prompt.d.ts.map +1 -1
  10. package/dist/core/prompt.js +7 -1
  11. package/dist/core/prompt.js.map +1 -1
  12. package/dist/core/reviewer.d.ts.map +1 -1
  13. package/dist/core/reviewer.js +12 -0
  14. package/dist/core/reviewer.js.map +1 -1
  15. package/dist/core/run-report-fields.d.ts +26 -0
  16. package/dist/core/run-report-fields.d.ts.map +1 -0
  17. package/dist/core/run-report-fields.js +72 -0
  18. package/dist/core/run-report-fields.js.map +1 -0
  19. package/dist/platform/config.d.ts.map +1 -1
  20. package/dist/platform/config.js +5 -1
  21. package/dist/platform/config.js.map +1 -1
  22. package/dist/platform/report.d.ts +7 -0
  23. package/dist/platform/report.d.ts.map +1 -1
  24. package/dist/platform/report.js.map +1 -1
  25. package/dist/runner.d.ts.map +1 -1
  26. package/dist/runner.js +8 -0
  27. package/dist/runner.js.map +1 -1
  28. package/dist/types.d.ts +2 -0
  29. package/dist/types.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/dist/client.d.ts +0 -18
  32. package/dist/client.d.ts.map +0 -1
  33. package/dist/client.js +0 -57
  34. package/dist/client.js.map +0 -1
  35. package/dist/config.d.ts +0 -11
  36. package/dist/config.d.ts.map +0 -1
  37. package/dist/config.js +0 -161
  38. package/dist/config.js.map +0 -1
  39. package/dist/core/priority.d.ts +0 -8
  40. package/dist/core/priority.d.ts.map +0 -1
  41. package/dist/core/priority.js +0 -48
  42. package/dist/core/priority.js.map +0 -1
  43. package/dist/diff.d.ts +0 -6
  44. package/dist/diff.d.ts.map +0 -1
  45. package/dist/diff.js +0 -127
  46. package/dist/diff.js.map +0 -1
  47. package/dist/formatters.d.ts +0 -4
  48. package/dist/formatters.d.ts.map +0 -1
  49. package/dist/formatters.js +0 -31
  50. package/dist/formatters.js.map +0 -1
  51. package/dist/gitlab.d.ts +0 -11
  52. package/dist/gitlab.d.ts.map +0 -1
  53. package/dist/gitlab.js +0 -193
  54. package/dist/gitlab.js.map +0 -1
  55. package/dist/http.d.ts +0 -4
  56. package/dist/http.d.ts.map +0 -1
  57. package/dist/http.js +0 -31
  58. package/dist/http.js.map +0 -1
  59. package/dist/model.d.ts +0 -6
  60. package/dist/model.d.ts.map +0 -1
  61. package/dist/model.js +0 -120
  62. package/dist/model.js.map +0 -1
  63. package/dist/report.d.ts +0 -9
  64. package/dist/report.d.ts.map +0 -1
  65. package/dist/report.js +0 -31
  66. package/dist/report.js.map +0 -1
  67. package/dist/reviewer.d.ts +0 -3
  68. package/dist/reviewer.d.ts.map +0 -1
  69. package/dist/reviewer.js +0 -140
  70. package/dist/reviewer.js.map +0 -1
  71. package/dist/summarizer.d.ts +0 -3
  72. package/dist/summarizer.d.ts.map +0 -1
  73. package/dist/summarizer.js +0 -75
  74. 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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"}
@@ -1,4 +0,0 @@
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
@@ -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"}
@@ -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
@@ -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
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../src/gitlab.ts"],"names":[],"mappings":";;AAwIA,gDA8DC;AAED,sDAoEC;AA5QD,2CAA4F;AAC5F,iCAAwE;AAGxE,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAiCjC,SAAS,WAAW,CAClB,GAAW,EACX,OAAoB,EAAE;IAEtB,OAAO,IAAA,uBAAgB,EAAC,GAAG,EAAE,IAAI,EAAE,0BAAc,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAkB;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,mCAAuB,CAAC;IAC3D,OAAO,OAAO,CAAC,UAAU;QACvB,CAAC,CAAC,GAAG,OAAO,UAAU,OAAO,CAAC,UAAU,EAAE;QAC1C,CAAC,CAAC,OAAO,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,GAAgB,EAAE,MAAc;IACnD,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC3D,OAAO,GAAG,OAAO,aAAa,SAAS,mBAAmB,KAAK,GAAG,MAAM,EAAE,CAAC;AAC7E,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,KAAa,EACb,GAAgB;IAEhB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE;YAClC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,8CAA8C,IAAI,CAAC,MAAM,EAAE,CAC5D,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAM,IAAA,oBAAa,EAAqB,IAAI,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,uCAAuC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAClF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,KAAa,EACb,GAAgB;IAEhB,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,OAAO,OAAO,EAAE;YAChD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,6CAA6C,IAAI,CAAC,MAAM,EAAE,CAC3D,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAM,IAAA,oBAAa,EAAa,IAAI,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,sCAAsC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CACjF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAI,GAAW,EAAE,KAAa;IACxD,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO,IAAI,IAAI,gCAAoB,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1C,IAAI,IAAc,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,WAAW,CACtB,GAAG,GAAG,GAAG,GAAG,qBAAqB,IAAI,EAAE,EACvC,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,EAAE,CAClD,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM;QACR,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM;QACpB,MAAM,KAAK,GAAG,MAAM,IAAA,oBAAa,EAAM,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,MAAM;YAAE,MAAM;QAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QACvB,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;YAAE,MAAM;QAC9B,IAAI,IAAI,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,OAGxC;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,QAAQ,QAAQ,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAE5E,MAAM,WAAW,GAAG,MAAM,aAAa,CACrC,aAAa,EACb,OAAO,CAAC,KAAK,CACd,CAAC;IAEF,MAAM,QAAQ,GAA+C,EAAE,CAAC;IAChE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM;gBAAE,SAAS;YACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,IAAA,oBAAa,EAAC,QAAQ,EAAE,sBAAsB,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE;QACvF,MAAM,SAAS,GAAG,GAAG,aAAa,IAAI,YAAY,UAAU,MAAM,EAAE,CAAC;QACrE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE;gBACxC,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE,EAAE;aACtD,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CACX,0CAA0C,YAAY,SAAS,MAAM,WAAW,IAAI,CAAC,MAAM,EAAE,CAC9F,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,yCAAyC,YAAY,SAAS,MAAM,KAClE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GACvC,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC;AACjB,CAAC;AAEM,KAAK,UAAU,qBAAqB,CAAC,OAI3C;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,EAAE,EAAE,SAAS,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,IAAA,oBAAa,EAAC,aAAa,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC3E,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,aAAa,EAAE;gBAC5C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE;iBACzC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC;oBAC/B,QAAQ,EAAE;wBACR,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,aAAa,EAAE,MAAM;wBACrB,QAAQ,EAAE,OAAO,CAAC,IAAI;wBACtB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;qBAC/B;iBACF,CAAC;aACH,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CACX,sCAAsC,OAAO,CAAC,IAAI,SAAS,OAAO,CAAC,IAAI,WAAW,IAAI,CAAC,MAAM,EAAE,CAChG,CAAC;gBACF,OAAO;YACT,CAAC;YACD,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,qCAAqC,OAAO,CAAC,IAAI,SAAS,OAAO,CAAC,IAAI,KACpE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GACvC,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,wCAAwC,MAAM,EAAE,CAAC,CAAC;IAChE,OAAO,MAAM,GAAG,CAAC,CAAC;AACpB,CAAC"}
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
@@ -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
@@ -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
@@ -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
@@ -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"}
@@ -1,3 +0,0 @@
1
- import type { AIResponse, CodeReviewConfig } from "./types";
2
- export declare function reviewCode(diff: string, config: CodeReviewConfig): Promise<AIResponse | null>;
3
- //# sourceMappingURL=reviewer.d.ts.map