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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/client.d.ts +18 -0
  2. package/dist/client.d.ts.map +1 -0
  3. package/dist/client.js +57 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/config.d.ts +11 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +161 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/constants.d.ts +8 -1
  10. package/dist/constants.d.ts.map +1 -1
  11. package/dist/constants.js +16 -2
  12. package/dist/constants.js.map +1 -1
  13. package/dist/core/reviewer.d.ts.map +1 -1
  14. package/dist/core/reviewer.js +2 -13
  15. package/dist/core/reviewer.js.map +1 -1
  16. package/dist/diff.d.ts +6 -0
  17. package/dist/diff.d.ts.map +1 -0
  18. package/dist/diff.js +127 -0
  19. package/dist/diff.js.map +1 -0
  20. package/dist/formatters.d.ts +4 -0
  21. package/dist/formatters.d.ts.map +1 -0
  22. package/dist/formatters.js +31 -0
  23. package/dist/formatters.js.map +1 -0
  24. package/dist/gitlab/api.d.ts +40 -0
  25. package/dist/gitlab/api.d.ts.map +1 -1
  26. package/dist/gitlab/api.js +82 -29
  27. package/dist/gitlab/api.js.map +1 -1
  28. package/dist/gitlab.d.ts +11 -0
  29. package/dist/gitlab.d.ts.map +1 -0
  30. package/dist/gitlab.js +193 -0
  31. package/dist/gitlab.js.map +1 -0
  32. package/dist/http.d.ts +4 -0
  33. package/dist/http.d.ts.map +1 -0
  34. package/dist/http.js +31 -0
  35. package/dist/http.js.map +1 -0
  36. package/dist/index.js +0 -0
  37. package/dist/model.d.ts +6 -0
  38. package/dist/model.d.ts.map +1 -0
  39. package/dist/model.js +120 -0
  40. package/dist/model.js.map +1 -0
  41. package/dist/report.d.ts +9 -0
  42. package/dist/report.d.ts.map +1 -0
  43. package/dist/report.js +31 -0
  44. package/dist/report.js.map +1 -0
  45. package/dist/reviewer.d.ts +3 -0
  46. package/dist/reviewer.d.ts.map +1 -0
  47. package/dist/reviewer.js +140 -0
  48. package/dist/reviewer.js.map +1 -0
  49. package/dist/runner.d.ts.map +1 -1
  50. package/dist/runner.js +9 -1
  51. package/dist/runner.js.map +1 -1
  52. package/dist/shared/concurrency.d.ts +2 -0
  53. package/dist/shared/concurrency.d.ts.map +1 -0
  54. package/dist/shared/concurrency.js +16 -0
  55. package/dist/shared/concurrency.js.map +1 -0
  56. package/dist/shared/http.d.ts +15 -0
  57. package/dist/shared/http.d.ts.map +1 -1
  58. package/dist/shared/http.js +36 -0
  59. package/dist/shared/http.js.map +1 -1
  60. package/dist/shared/identity.d.ts +6 -3
  61. package/dist/shared/identity.d.ts.map +1 -1
  62. package/dist/shared/identity.js +6 -4
  63. package/dist/shared/identity.js.map +1 -1
  64. package/dist/summarizer.d.ts +3 -0
  65. package/dist/summarizer.d.ts.map +1 -0
  66. package/dist/summarizer.js +75 -0
  67. package/dist/summarizer.js.map +1 -0
  68. package/package.json +1 -1
@@ -1,13 +1,53 @@
1
1
  import type { AIComment } from "../types";
2
+ interface GitlabUser {
3
+ id: number;
4
+ username: string;
5
+ }
6
+ interface GitlabNote {
7
+ id: number;
8
+ author: {
9
+ id: number;
10
+ username: string;
11
+ };
12
+ system: boolean;
13
+ body?: string;
14
+ resolved?: boolean;
15
+ }
16
+ interface GitlabDiscussion {
17
+ id: string;
18
+ individual_note: boolean;
19
+ notes: GitlabNote[];
20
+ }
21
+ /**
22
+ * Shared read context for a single CR run: fetched once and reused by both the
23
+ * inline-comment and summary writers to avoid duplicating the heaviest GitLab
24
+ * reads (current user + full discussions pagination).
25
+ */
26
+ export interface GitlabReviewContext {
27
+ user: GitlabUser | null;
28
+ discussions: GitlabDiscussion[];
29
+ }
30
+ /**
31
+ * Fetch the per-run shared read context (current user + all discussions) once.
32
+ * Returns null when there is no token or no GitLab CI context, in which case the
33
+ * writers fall back to their own (also short-circuiting) fetch logic.
34
+ */
35
+ export declare function fetchGitlabContext(options: {
36
+ token?: string;
37
+ env?: NodeJS.ProcessEnv;
38
+ }): Promise<GitlabReviewContext | null>;
2
39
  export declare function postGitlabDiscussions(options: {
3
40
  comments: AIComment[];
4
41
  diff?: string;
5
42
  token?: string;
6
43
  env?: NodeJS.ProcessEnv;
44
+ context?: GitlabReviewContext;
7
45
  }): Promise<boolean>;
8
46
  export declare function postGitlabSummary(options: {
9
47
  markdown: string;
10
48
  token?: string;
11
49
  env?: NodeJS.ProcessEnv;
50
+ context?: GitlabReviewContext;
12
51
  }): Promise<boolean>;
52
+ export {};
13
53
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/gitlab/api.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AA2O1C,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,OAAO,CAAC,OAAO,CAAC,CAkHnB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,OAAO,CAAC,OAAO,CAAC,CAgDnB"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/gitlab/api.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAQ1C,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAUD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC;AA0PD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAatC;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B,GAAG,OAAO,CAAC,OAAO,CAAC,CA4HnB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B,GAAG,OAAO,CAAC,OAAO,CAAC,CA4DnB"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchGitlabContext = fetchGitlabContext;
3
4
  exports.postGitlabDiscussions = postGitlabDiscussions;
4
5
  exports.postGitlabSummary = postGitlabSummary;
5
6
  const constants_1 = require("../constants");
@@ -16,7 +17,9 @@ class GitlabApiFacade {
16
17
  this.env = env;
17
18
  }
18
19
  buildApiUrl(suffix) {
19
- if (!this.env.CI_API_V4_URL || !this.env.CI_PROJECT_ID || !this.env.CI_MERGE_REQUEST_IID) {
20
+ if (!this.env.CI_API_V4_URL ||
21
+ !this.env.CI_PROJECT_ID ||
22
+ !this.env.CI_MERGE_REQUEST_IID) {
20
23
  return null;
21
24
  }
22
25
  const apiBase = this.env.CI_API_V4_URL.replace(/\/+$/, "");
@@ -27,6 +30,13 @@ class GitlabApiFacade {
27
30
  fetch(url, init = {}) {
28
31
  return (0, http_1.fetchWithTimeout)(url, init, constants_1.API_TIMEOUT_MS);
29
32
  }
33
+ /**
34
+ * For idempotent requests (GET/PUT/DELETE): gentle 429/5xx backoff.
35
+ * POST stays on plain fetch to avoid creating duplicate notes on retry.
36
+ */
37
+ fetchIdempotent(url, init = {}) {
38
+ return (0, http_1.fetchWithRetry)(url, init, constants_1.API_TIMEOUT_MS);
39
+ }
30
40
  authHeaders() {
31
41
  return { Authorization: `Bearer ${this.token}` };
32
42
  }
@@ -41,7 +51,7 @@ class GitlabApiFacade {
41
51
  if (!apiBase)
42
52
  return null;
43
53
  try {
44
- const resp = await this.fetch(`${apiBase}/user`, {
54
+ const resp = await this.fetchIdempotent(`${apiBase}/user`, {
45
55
  headers: this.authHeaders(),
46
56
  });
47
57
  if (!resp.ok) {
@@ -60,7 +70,7 @@ class GitlabApiFacade {
60
70
  if (!url)
61
71
  return null;
62
72
  try {
63
- const resp = await this.fetch(url, {
73
+ const resp = await this.fetchIdempotent(url, {
64
74
  headers: this.authHeaders(),
65
75
  });
66
76
  if (!resp.ok) {
@@ -76,12 +86,13 @@ class GitlabApiFacade {
76
86
  }
77
87
  async fetchAllPages(url) {
78
88
  const results = [];
89
+ const maxPages = (0, constants_1.resolveMaxPaginationPages)(this.env);
79
90
  let page = 1;
80
- while (page <= constants_1.MAX_PAGINATION_PAGES) {
91
+ while (page <= maxPages) {
81
92
  const sep = url.includes("?") ? "&" : "?";
82
93
  let resp;
83
94
  try {
84
- resp = await this.fetch(`${url}${sep}per_page=100&page=${page}`, { headers: this.authHeaders() });
95
+ resp = await this.fetchIdempotent(`${url}${sep}per_page=100&page=${page}`, { headers: this.authHeaders() });
85
96
  }
86
97
  catch {
87
98
  console.error(`[gitlab] pagination request failed page=${page}`);
@@ -123,22 +134,27 @@ class GitlabApiFacade {
123
134
  const baseUrl = this.discussionUrl;
124
135
  if (!baseUrl)
125
136
  return false;
126
- const resp = await this.fetch(`${baseUrl}/${discussionId}/notes/${noteId}`, {
137
+ const resp = await this.fetchIdempotent(`${baseUrl}/${discussionId}/notes/${noteId}`, {
127
138
  method: "PUT",
128
139
  headers: { "Content-Type": "application/json", ...this.authHeaders() },
129
140
  body: JSON.stringify({ body }),
130
141
  });
131
142
  return resp.ok;
132
143
  }
133
- async deleteNote(discussionId, noteId) {
144
+ /**
145
+ * Mark a discussion resolved/unresolved. Used to retire a fixed finding while
146
+ * preserving its audit trail (instead of deleting), and to reopen a discussion
147
+ * when a previously-resolved issue reappears.
148
+ */
149
+ async resolveDiscussion(discussionId, resolved) {
134
150
  const baseUrl = this.discussionUrl;
135
151
  if (!baseUrl)
136
152
  return false;
137
- const resp = await this.fetch(`${baseUrl}/${discussionId}/notes/${noteId}`, {
138
- method: "DELETE",
153
+ const resp = await this.fetchIdempotent(`${baseUrl}/${discussionId}?resolved=${resolved}`, {
154
+ method: "PUT",
139
155
  headers: this.authHeaders(),
140
156
  });
141
- return resp.ok || resp.status === 204;
157
+ return resp.ok;
142
158
  }
143
159
  }
144
160
  function buildCommentBody(comment) {
@@ -162,6 +178,7 @@ function collectBotNotesByMarker(discussions, userId, markerKind) {
162
178
  discussionId: discussion.id,
163
179
  noteId: note.id,
164
180
  body: note.body,
181
+ resolved: note.resolved ?? false,
165
182
  });
166
183
  notes.set(fingerprint, current);
167
184
  }
@@ -182,6 +199,25 @@ function isLineValid(validLines, file, line) {
182
199
  return true;
183
200
  return validLines.has(`${(0, diff_1.normalizePath)(file)}:${line}`);
184
201
  }
202
+ /**
203
+ * Fetch the per-run shared read context (current user + all discussions) once.
204
+ * Returns null when there is no token or no GitLab CI context, in which case the
205
+ * writers fall back to their own (also short-circuiting) fetch logic.
206
+ */
207
+ async function fetchGitlabContext(options) {
208
+ const env = options.env ?? process.env;
209
+ if (!options.token)
210
+ return null;
211
+ const facade = new GitlabApiFacade(options.token, env);
212
+ const discussionUrl = facade.discussionUrl;
213
+ if (!discussionUrl)
214
+ return null;
215
+ const user = await facade.fetchCurrentUser();
216
+ const discussions = user
217
+ ? await facade.fetchAllPages(discussionUrl)
218
+ : [];
219
+ return { user, discussions };
220
+ }
185
221
  async function postGitlabDiscussions(options) {
186
222
  const env = options.env ?? process.env;
187
223
  if (!options.token) {
@@ -195,19 +231,22 @@ async function postGitlabDiscussions(options) {
195
231
  return false;
196
232
  }
197
233
  const validLines = options.diff ? buildValidLineSet(options.diff) : null;
198
- const user = await facade.fetchCurrentUser();
199
- const discussions = user
200
- ? await facade.fetchAllPages(discussionUrl)
201
- : [];
234
+ const user = options.context
235
+ ? options.context.user
236
+ : await facade.fetchCurrentUser();
237
+ const discussions = options.context
238
+ ? options.context.discussions
239
+ : user
240
+ ? await facade.fetchAllPages(discussionUrl)
241
+ : [];
202
242
  const existing = user
203
243
  ? collectBotNotesByMarker(discussions, user.id, identity_1.COMMENT_MARKER_PREFIX)
204
244
  : new Map();
205
245
  const activeFingerprints = new Set();
206
- const mr = options.comments.length
207
- ? await facade.fetchMergeRequest()
208
- : null;
246
+ const mr = options.comments.length ? await facade.fetchMergeRequest() : null;
209
247
  const refs = mr?.diff_refs;
210
- if (options.comments.length && (!refs?.base_sha || !refs.start_sha || !refs.head_sha)) {
248
+ if (options.comments.length &&
249
+ (!refs?.base_sha || !refs.start_sha || !refs.head_sha)) {
211
250
  console.error("[gitlab] MR discussions skipped: missing diff refs");
212
251
  return false;
213
252
  }
@@ -230,6 +269,10 @@ async function postGitlabDiscussions(options) {
230
269
  const ok = await facade.updateNote(old.discussionId, old.noteId, body);
231
270
  if (ok) {
232
271
  updated += 1;
272
+ // A previously-resolved finding has reappeared: reopen its discussion.
273
+ if (old.resolved) {
274
+ await facade.resolveDiscussion(old.discussionId, false);
275
+ }
233
276
  }
234
277
  else {
235
278
  console.error(`[gitlab] MR discussion update failed file=${comment.file} line=${comment.line}`);
@@ -257,24 +300,28 @@ async function postGitlabDiscussions(options) {
257
300
  console.error(`[gitlab] MR discussion error file=${comment.file} line=${comment.line}: ${err instanceof Error ? err.message : err}`);
258
301
  }
259
302
  }
260
- let deleted = 0;
303
+ // Retire findings that no longer appear by resolving (never deleting) the
304
+ // discussion, which preserves the audit trail and any human replies. For an
305
+ // active finding the first note was updated above; extra duplicates are
306
+ // resolved as redundant.
307
+ let resolved = 0;
261
308
  for (const [fingerprint, oldNotes] of existing) {
262
- const staleNotes = activeFingerprints.has(fingerprint)
309
+ const stale = activeFingerprints.has(fingerprint)
263
310
  ? oldNotes.slice(1)
264
311
  : oldNotes;
265
- for (const old of staleNotes) {
312
+ for (const old of stale) {
266
313
  try {
267
- if (await facade.deleteNote(old.discussionId, old.noteId)) {
268
- deleted += 1;
314
+ if (await facade.resolveDiscussion(old.discussionId, true)) {
315
+ resolved += 1;
269
316
  }
270
317
  }
271
318
  catch (err) {
272
- console.error(`[gitlab] stale discussion delete error discussion=${old.discussionId} note=${old.noteId}: ${err instanceof Error ? err.message : err}`);
319
+ console.error(`[gitlab] stale discussion resolve error discussion=${old.discussionId}: ${err instanceof Error ? err.message : err}`);
273
320
  }
274
321
  }
275
322
  }
276
- console.error(`[gitlab] MR discussions lifecycle posted=${posted} updated=${updated} deleted=${deleted} skippedInvalid=${skippedInvalid}`);
277
- return posted + updated + deleted > 0;
323
+ console.error(`[gitlab] MR discussions lifecycle posted=${posted} updated=${updated} resolved=${resolved} skippedInvalid=${skippedInvalid}`);
324
+ return posted + updated + resolved > 0;
278
325
  }
279
326
  async function postGitlabSummary(options) {
280
327
  const env = options.env ?? process.env;
@@ -294,15 +341,21 @@ async function postGitlabSummary(options) {
294
341
  console.error("[gitlab] summary skipped: missing GitLab CI context");
295
342
  return false;
296
343
  }
297
- const user = await facade.fetchCurrentUser();
344
+ const user = options.context
345
+ ? options.context.user
346
+ : await facade.fetchCurrentUser();
298
347
  const summaryFingerprint = (0, identity_1.stableHash)(identity_1.SUMMARY_MARKER);
299
348
  const body = `${markdown}\n\n${(0, identity_1.buildHiddenMarker)(identity_1.SUMMARY_MARKER, summaryFingerprint)}`;
300
349
  if (user) {
301
- const discussions = await facade.fetchAllPages(discussionUrl);
350
+ const discussions = options.context
351
+ ? options.context.discussions
352
+ : await facade.fetchAllPages(discussionUrl);
302
353
  const existing = collectBotNotesByMarker(discussions, user.id, identity_1.SUMMARY_MARKER).get(summaryFingerprint)?.[0];
303
354
  if (existing) {
304
355
  const ok = await facade.updateNote(existing.discussionId, existing.noteId, body);
305
- console.error(ok ? "[gitlab] summary note updated" : "[gitlab] summary note update failed");
356
+ console.error(ok
357
+ ? "[gitlab] summary note updated"
358
+ : "[gitlab] summary note update failed");
306
359
  return ok;
307
360
  }
308
361
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/gitlab/api.ts"],"names":[],"mappings":";;AAsPA,sDAuHC;AAED,8CAoDC;AAnaD,4CAA6F;AAC7F,uCAAgE;AAChE,yCAAiE;AACjE,iDAO4B;AAmC5B;;;GAGG;AACH,MAAM,eAAe;IACnB,YACmB,KAAa,EACb,GAAgB;QADhB,UAAK,GAAL,KAAK,CAAQ;QACb,QAAG,GAAH,GAAG,CAAa;IAChC,CAAC;IAEI,WAAW,CAAC,MAAc;QAChC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YACzF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAChE,OAAO,GAAG,OAAO,aAAa,SAAS,mBAAmB,KAAK,GAAG,MAAM,EAAE,CAAC;IAC7E,CAAC;IAEO,KAAK,CAAC,GAAW,EAAE,OAAoB,EAAE;QAC/C,OAAO,IAAA,uBAAgB,EAAC,GAAG,EAAE,IAAI,EAAE,0BAAc,CAAC,CAAC;IACrD,CAAC;IAEO,WAAW;QACjB,OAAO,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,OAAO,EAAE;gBAC/C,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;aAC5B,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,6CAA6C,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,MAAM,IAAA,oBAAa,EAAa,IAAI,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,sCAAsC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CACjF,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;gBACjC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;aAC5B,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,8CAA8C,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC3E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,MAAM,IAAA,oBAAa,EAAqB,IAAI,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,uCAAuC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAClF,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAI,GAAW;QAChC,MAAM,OAAO,GAAQ,EAAE,CAAC;QACxB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,IAAI,gCAAoB,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC1C,IAAI,IAAc,CAAC;YACnB,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CACrB,GAAG,GAAG,GAAG,GAAG,qBAAqB,IAAI,EAAE,EACvC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAChC,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,KAAK,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAC;gBACjE,MAAM;YACR,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,EAAE;gBAAE,MAAM;YACpB,MAAM,KAAK,GAAG,MAAM,IAAA,oBAAa,EAAM,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,EAAE,MAAM;gBAAE,MAAM;YAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YACvB,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;gBAAE,MAAM;YAC9B,IAAI,IAAI,CAAC,CAAC;QACZ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAa;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/B,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE;YACtE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAa;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE;YACtE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,YAAoB,EAAE,MAAc,EAAE,IAAY;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,YAAY,UAAU,MAAM,EAAE,EAAE;YAC1E,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE;YACtE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;SAC/B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,YAAoB,EAAE,MAAc;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,YAAY,UAAU,MAAM,EAAE,EAAE;YAC1E,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;SAC5B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC;IACxC,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,OAAkB;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,mCAAuB,CAAC;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU;QAC7B,CAAC,CAAC,GAAG,OAAO,UAAU,OAAO,CAAC,UAAU,EAAE;QAC1C,CAAC,CAAC,OAAO,CAAC;IACZ,OAAO,GAAG,IAAI,OAAO,IAAA,4BAAiB,EACpC,gCAAqB,EACrB,IAAA,kCAAuB,EAAC,OAAO,CAAC,CACjC,EAAE,CAAC;AACN,CAAC;AAED,SAAS,uBAAuB,CAC9B,WAA+B,EAC/B,MAAc,EACd,UAAkB;IAElB,MAAM,KAAK,GAAG,IAAI,GAAG,EAGlB,CAAC;IAEJ,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,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACrE,MAAM,WAAW,GAAG,IAAA,8BAAmB,EAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC/D,IAAI,CAAC,WAAW;gBAAE,SAAS;YAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC;gBACX,YAAY,EAAE,UAAU,CAAC,EAAE;gBAC3B,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAC;YACH,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAA,wBAAiB,EAAC,IAAI,CAAC,EAAE,CAAC;QACpD,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;YAC7B,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAClB,UAA8B,EAC9B,IAAY,EACZ,IAAY;IAEZ,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAC1D,CAAC;AAEM,KAAK,UAAU,qBAAqB,CAAC,OAK3C;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,uDAAuD,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC3C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,IAAI;QACtB,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAmB,aAAa,CAAC;QAC7D,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG,IAAI;QACnB,CAAC,CAAC,uBAAuB,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,gCAAqB,CAAC;QACtE,CAAC,CAAC,IAAI,GAAG,EAGJ,CAAC;IACR,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7C,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM;QAChC,CAAC,CAAC,MAAM,MAAM,CAAC,iBAAiB,EAAE;QAClC,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,IAAI,GAAG,EAAE,EAAE,SAAS,CAAC;IAC3B,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,SAAS;QAC7C,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,cAAc,IAAI,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QACD,MAAM,WAAW,GAAG,IAAA,kCAAuB,EAAC,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACvC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACvE,IAAI,EAAE,EAAE,CAAC;oBACP,OAAO,IAAI,CAAC,CAAC;gBACf,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CACX,6CAA6C,OAAO,CAAC,IAAI,SAAS,OAAO,CAAC,IAAI,EAAE,CACjF,CAAC;gBACJ,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC;gBACvC,IAAI;gBACJ,QAAQ,EAAE;oBACR,QAAQ,EAAE,IAAK,CAAC,QAAQ;oBACxB,SAAS,EAAE,IAAK,CAAC,SAAS;oBAC1B,QAAQ,EAAE,IAAK,CAAC,QAAQ;oBACxB,aAAa,EAAE,MAAM;oBACrB,QAAQ,EAAE,OAAO,CAAC,IAAI;oBACtB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;iBAC/B;aACF,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CACX,sCAAsC,OAAO,CAAC,IAAI,SAAS,OAAO,CAAC,IAAI,WAAW,IAAI,EAAE,MAAM,EAAE,CACjG,CAAC;gBACF,SAAS;YACX,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;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC;YACpD,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACnB,CAAC,CAAC,QAAQ,CAAC;QACb,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,IAAI,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1D,OAAO,IAAI,CAAC,CAAC;gBACf,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CACX,qDAAqD,GAAG,CAAC,YAAY,SAAS,GAAG,CAAC,MAAM,KACtF,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GACvC,EAAE,CACH,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,CACX,4CAA4C,MAAM,YAAY,OAAO,YAAY,OAAO,mBAAmB,cAAc,EAAE,CAC5H,CAAC;IACF,OAAO,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;AACxC,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,OAIvC;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC7C,MAAM,kBAAkB,GAAG,IAAA,qBAAU,EAAC,yBAAc,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,GAAG,QAAQ,OAAO,IAAA,4BAAiB,EAC9C,yBAAc,EACd,kBAAkB,CACnB,EAAE,CAAC;IAEJ,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,aAAa,CAAmB,aAAa,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,uBAAuB,CACtC,WAAW,EACX,IAAI,CAAC,EAAE,EACP,yBAAc,CACf,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACjF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC;YAC5F,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,4CAA4C,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/gitlab/api.ts"],"names":[],"mappings":";;AA6TA,gDAgBC;AAED,sDAkIC;AAED,8CAiEC;AAphBD,4CAIsB;AACtB,uCAAgE;AAChE,yCAIwB;AACxB,iDAO4B;AA8C5B;;;GAGG;AACH,MAAM,eAAe;IACnB,YACmB,KAAa,EACb,GAAsB;QADtB,UAAK,GAAL,KAAK,CAAQ;QACb,QAAG,GAAH,GAAG,CAAmB;IACtC,CAAC;IAEI,WAAW,CAAC,MAAc;QAChC,IACE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa;YACvB,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa;YACvB,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAC9B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAChE,OAAO,GAAG,OAAO,aAAa,SAAS,mBAAmB,KAAK,GAAG,MAAM,EAAE,CAAC;IAC7E,CAAC;IAEO,KAAK,CAAC,GAAW,EAAE,OAAoB,EAAE;QAC/C,OAAO,IAAA,uBAAgB,EAAC,GAAG,EAAE,IAAI,EAAE,0BAAc,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACK,eAAe,CACrB,GAAW,EACX,OAAoB,EAAE;QAEtB,OAAO,IAAA,qBAAc,EAAC,GAAG,EAAE,IAAI,EAAE,0BAAc,CAAC,CAAC;IACnD,CAAC;IAEO,WAAW;QACjB,OAAO,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,OAAO,OAAO,EAAE;gBACzD,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;aAC5B,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CACX,6CAA6C,IAAI,CAAC,MAAM,EAAE,CAC3D,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,MAAM,IAAA,oBAAa,EAAa,IAAI,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,sCACE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GACvC,EAAE,CACH,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE;gBAC3C,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;aAC5B,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CACX,8CAA8C,IAAI,CAAC,MAAM,EAAE,CAC5D,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,MAAM,IAAA,oBAAa,EAAqB,IAAI,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,uCACE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GACvC,EAAE,CACH,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAI,GAAW;QAChC,MAAM,OAAO,GAAQ,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAA,qCAAyB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,IAAI,QAAQ,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC1C,IAAI,IAAc,CAAC;YACnB,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAC/B,GAAG,GAAG,GAAG,GAAG,qBAAqB,IAAI,EAAE,EACvC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAChC,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,KAAK,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAC;gBACjE,MAAM;YACR,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,EAAE;gBAAE,MAAM;YACpB,MAAM,KAAK,GAAG,MAAM,IAAA,oBAAa,EAAM,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,EAAE,MAAM;gBAAE,MAAM;YAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YACvB,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;gBAAE,MAAM;YAC9B,IAAI,IAAI,CAAC,CAAC;QACZ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAa;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/B,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE;YACtE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAa;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE;YACtE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CACd,YAAoB,EACpB,MAAc,EACd,IAAY;QAEZ,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CACrC,GAAG,OAAO,IAAI,YAAY,UAAU,MAAM,EAAE,EAC5C;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE;YACtE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;SAC/B,CACF,CAAC;QACF,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CACrB,YAAoB,EACpB,QAAiB;QAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CACrC,GAAG,OAAO,IAAI,YAAY,aAAa,QAAQ,EAAE,EACjD;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;SAC5B,CACF,CAAC;QACF,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,OAAkB;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,mCAAuB,CAAC;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU;QAC7B,CAAC,CAAC,GAAG,OAAO,UAAU,OAAO,CAAC,UAAU,EAAE;QAC1C,CAAC,CAAC,OAAO,CAAC;IACZ,OAAO,GAAG,IAAI,OAAO,IAAA,4BAAiB,EACpC,gCAAqB,EACrB,IAAA,kCAAuB,EAAC,OAAO,CAAC,CACjC,EAAE,CAAC;AACN,CAAC;AASD,SAAS,uBAAuB,CAC9B,WAA+B,EAC/B,MAAc,EACd,UAAkB;IAElB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE9C,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,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACrE,MAAM,WAAW,GAAG,IAAA,8BAAmB,EAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC/D,IAAI,CAAC,WAAW;gBAAE,SAAS;YAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC;gBACX,YAAY,EAAE,UAAU,CAAC,EAAE;gBAC3B,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK;aACjC,CAAC,CAAC;YACH,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAA,wBAAiB,EAAC,IAAI,CAAC,EAAE,CAAC;QACpD,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;YAC7B,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAClB,UAA8B,EAC9B,IAAY,EACZ,IAAY;IAEZ,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,kBAAkB,CAAC,OAGxC;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,IAAI,CAAC,OAAO,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAEhC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC3C,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,IAAI;QACtB,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAmB,aAAa,CAAC;QAC7D,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC/B,CAAC;AAEM,KAAK,UAAU,qBAAqB,CAAC,OAM3C;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,uDAAuD,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC3C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO;QAC1B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;QACtB,CAAC,CAAC,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO;QACjC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW;QAC7B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAmB,aAAa,CAAC;YAC7D,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG,IAAI;QACnB,CAAC,CAAC,uBAAuB,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,gCAAqB,CAAC;QACtE,CAAC,CAAC,IAAI,GAAG,EAAwB,CAAC;IACpC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7C,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,MAAM,IAAI,GAAG,EAAE,EAAE,SAAS,CAAC;IAC3B,IACE,OAAO,CAAC,QAAQ,CAAC,MAAM;QACvB,CAAC,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EACtD,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,SAAS;QAC7C,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,cAAc,IAAI,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QACD,MAAM,WAAW,GAAG,IAAA,kCAAuB,EAAC,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACvC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACvE,IAAI,EAAE,EAAE,CAAC;oBACP,OAAO,IAAI,CAAC,CAAC;oBACb,uEAAuE;oBACvE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;wBACjB,MAAM,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CACX,6CAA6C,OAAO,CAAC,IAAI,SAAS,OAAO,CAAC,IAAI,EAAE,CACjF,CAAC;gBACJ,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC;gBACvC,IAAI;gBACJ,QAAQ,EAAE;oBACR,QAAQ,EAAE,IAAK,CAAC,QAAQ;oBACxB,SAAS,EAAE,IAAK,CAAC,SAAS;oBAC1B,QAAQ,EAAE,IAAK,CAAC,QAAQ;oBACxB,aAAa,EAAE,MAAM;oBACrB,QAAQ,EAAE,OAAO,CAAC,IAAI;oBACtB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;iBAC/B;aACF,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CACX,sCAAsC,OAAO,CAAC,IAAI,SAAS,OAAO,CAAC,IAAI,WAAW,IAAI,EAAE,MAAM,EAAE,CACjG,CAAC;gBACF,SAAS;YACX,CAAC;YACD,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,qCAAqC,OAAO,CAAC,IAAI,SAC/C,OAAO,CAAC,IACV,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAChD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,4EAA4E;IAC5E,wEAAwE;IACxE,yBAAyB;IACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC;YAC/C,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACnB,CAAC,CAAC,QAAQ,CAAC;QACb,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,IAAI,MAAM,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC3D,QAAQ,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CACX,sDACE,GAAG,CAAC,YACN,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAChD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,CACX,4CAA4C,MAAM,YAAY,OAAO,aAAa,QAAQ,mBAAmB,cAAc,EAAE,CAC9H,CAAC;IACF,OAAO,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,CAAC,CAAC;AACzC,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,OAKvC;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO;QAC1B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;QACtB,CAAC,CAAC,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;IACpC,MAAM,kBAAkB,GAAG,IAAA,qBAAU,EAAC,yBAAc,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,GAAG,QAAQ,OAAO,IAAA,4BAAiB,EAC9C,yBAAc,EACd,kBAAkB,CACnB,EAAE,CAAC;IAEJ,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO;YACjC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW;YAC7B,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAmB,aAAa,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,uBAAuB,CACtC,WAAW,EACX,IAAI,CAAC,EAAE,EACP,yBAAc,CACf,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAChC,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,MAAM,EACf,IAAI,CACL,CAAC;YACF,OAAO,CAAC,KAAK,CACX,EAAE;gBACA,CAAC,CAAC,+BAA+B;gBACjC,CAAC,CAAC,qCAAqC,CAC1C,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,4CAA4C,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,11 @@
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
@@ -0,0 +1 @@
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 ADDED
@@ -0,0 +1,193 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../src/gitlab.ts"],"names":[],"mappings":"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"}
package/dist/http.d.ts ADDED
@@ -0,0 +1,4 @@
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
@@ -0,0 +1 @@
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 ADDED
@@ -0,0 +1,31 @@
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
@@ -0,0 +1 @@
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/index.js CHANGED
File without changes
@@ -0,0 +1,6 @@
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
@@ -0,0 +1 @@
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"}