@mmnto/cli 1.75.1 → 1.75.2
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/adapters/github-cli-pr.d.ts +12 -1
- package/dist/adapters/github-cli-pr.d.ts.map +1 -1
- package/dist/adapters/github-cli-pr.js +33 -0
- package/dist/adapters/github-cli-pr.js.map +1 -1
- package/dist/adapters/github-cli-pr.test.js +58 -0
- package/dist/adapters/github-cli-pr.test.js.map +1 -1
- package/dist/adapters/pr-adapter.d.ts +28 -0
- package/dist/adapters/pr-adapter.d.ts.map +1 -1
- package/dist/commands/triage-pr.d.ts +31 -0
- package/dist/commands/triage-pr.d.ts.map +1 -1
- package/dist/commands/triage-pr.js +108 -15
- package/dist/commands/triage-pr.js.map +1 -1
- package/dist/commands/triage-pr.test.js +42 -1
- package/dist/commands/triage-pr.test.js.map +1 -1
- package/dist/parse-nits.d.ts +24 -0
- package/dist/parse-nits.d.ts.map +1 -1
- package/dist/parse-nits.js +74 -0
- package/dist/parse-nits.js.map +1 -1
- package/dist/parse-nits.test.js +117 -1
- package/dist/parse-nits.test.js.map +1 -1
- package/dist/parsers/bot-review-parser.d.ts +15 -2
- package/dist/parsers/bot-review-parser.d.ts.map +1 -1
- package/dist/parsers/bot-review-parser.js +26 -4
- package/dist/parsers/bot-review-parser.js.map +1 -1
- package/dist/parsers/bot-review-parser.test.js +40 -1
- package/dist/parsers/bot-review-parser.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { formatTriageOutput } from './triage-pr.js';
|
|
2
|
+
import { evaluateTriageEmptyState, formatTriageOutput } from './triage-pr.js';
|
|
3
3
|
// ─── Identity color functions (no ANSI for test assertions) ──
|
|
4
4
|
const noColor = {
|
|
5
5
|
red: (s) => s,
|
|
@@ -226,4 +226,45 @@ describe('formatTriageOutput', () => {
|
|
|
226
226
|
expect(output).toContain('[2]');
|
|
227
227
|
});
|
|
228
228
|
});
|
|
229
|
+
describe('evaluateTriageEmptyState (mmnto-ai/totem#2192)', () => {
|
|
230
|
+
const zero = {
|
|
231
|
+
botThreads: 0,
|
|
232
|
+
bodyFindings: 0,
|
|
233
|
+
botIssueComments: 0,
|
|
234
|
+
inlineComments: 0,
|
|
235
|
+
reviews: 0,
|
|
236
|
+
issueComments: 0,
|
|
237
|
+
};
|
|
238
|
+
it('is NOT empty when an inline bot thread exists', () => {
|
|
239
|
+
expect(evaluateTriageEmptyState({ ...zero, botThreads: 1, inlineComments: 1 }).empty).toBe(false);
|
|
240
|
+
});
|
|
241
|
+
it('is NOT empty when only a body/summary finding exists', () => {
|
|
242
|
+
expect(evaluateTriageEmptyState({ ...zero, bodyFindings: 1, reviews: 1 }).empty).toBe(false);
|
|
243
|
+
});
|
|
244
|
+
it('is NOT empty when a bot summary issue-comment exists but parsed 0 findings', () => {
|
|
245
|
+
// The greptile-summary-present-but-unparsed case: must still triage, never
|
|
246
|
+
// silently return — the #2190 miss this command exists to catch.
|
|
247
|
+
expect(evaluateTriageEmptyState({ ...zero, botIssueComments: 1, issueComments: 1 }).empty).toBe(false);
|
|
248
|
+
});
|
|
249
|
+
it('is empty with a bare message when truly nothing was fetched', () => {
|
|
250
|
+
const r = evaluateTriageEmptyState(zero);
|
|
251
|
+
expect(r.empty).toBe(true);
|
|
252
|
+
expect(r.surfaced).toBe(false);
|
|
253
|
+
expect(r.message).toContain('no comments');
|
|
254
|
+
});
|
|
255
|
+
it('surfaces fetched counts (never a bare "Nothing to triage") when raw comments exist but no bot authored them', () => {
|
|
256
|
+
const r = evaluateTriageEmptyState({
|
|
257
|
+
...zero,
|
|
258
|
+
inlineComments: 2,
|
|
259
|
+
reviews: 1,
|
|
260
|
+
issueComments: 3,
|
|
261
|
+
});
|
|
262
|
+
expect(r.empty).toBe(true);
|
|
263
|
+
expect(r.surfaced).toBe(true);
|
|
264
|
+
// The whole point of #2192: surface WHAT was fetched, not a bare dismissal.
|
|
265
|
+
expect(r.message).toContain('2 inline comment(s)');
|
|
266
|
+
expect(r.message).toContain('1 review(s)');
|
|
267
|
+
expect(r.message).toContain('3 issue-comment(s)');
|
|
268
|
+
});
|
|
269
|
+
});
|
|
229
270
|
//# sourceMappingURL=triage-pr.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triage-pr.test.js","sourceRoot":"","sources":["../../src/commands/triage-pr.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAG9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"triage-pr.test.js","sourceRoot":"","sources":["../../src/commands/triage-pr.test.ts"],"names":[],"mappings":"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"}
|
package/dist/parse-nits.d.ts
CHANGED
|
@@ -16,6 +16,30 @@ export declare function parseCodeRabbitNits(body: string): string[];
|
|
|
16
16
|
* Returns an array of cleaned text strings.
|
|
17
17
|
*/
|
|
18
18
|
export declare function parseCodeRabbitOutsideDiff(body: string): string[];
|
|
19
|
+
/**
|
|
20
|
+
* Extract greptile's "Comments Outside Diff" findings from its SUMMARY comment.
|
|
21
|
+
*
|
|
22
|
+
* Greptile renders out-of-diff findings in the standing summary comment, BELOW
|
|
23
|
+
* the flowchart, anchored by the HTML-comment marker
|
|
24
|
+
* `<!-- greptile_other_comments_section -->` and trailed by a `<sub>Reviews (N):
|
|
25
|
+
* …</sub>` footer (mmnto-ai/totem-strategy#690; the canonical anchor). We key on
|
|
26
|
+
* the MARKER — not a sampled `<details>`/header shape — because greptile EDITS
|
|
27
|
+
* this comment in place: a merged/closed PR shows the marker with the content
|
|
28
|
+
* already removed post-resolution, so the live findings-state cannot be
|
|
29
|
+
* reverse-engineered from a closed PR (GitHub `userContentEdits` exposes edit
|
|
30
|
+
* metadata, not prior bodies). Returns [] when the section is absent or empty
|
|
31
|
+
* (resolved/none).
|
|
32
|
+
*/
|
|
33
|
+
export declare function parseGreptileOutsideDiff(body: string): string[];
|
|
34
|
+
/**
|
|
35
|
+
* Combined parser for greptile SUMMARY-comment findings — the marker-anchored
|
|
36
|
+
* "Comments Outside Diff" section (greptile's per-line findings post inline and
|
|
37
|
+
* are handled by the thread path). See {@link parseGreptileOutsideDiff}.
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseGreptileReviewFindings(body: string): Array<{
|
|
40
|
+
type: 'outside-diff';
|
|
41
|
+
content: string;
|
|
42
|
+
}>;
|
|
19
43
|
/**
|
|
20
44
|
* Combined parser that extracts both nitpick and outside-diff findings
|
|
21
45
|
* from a CodeRabbit review body, returning typed results.
|
package/dist/parse-nits.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-nits.d.ts","sourceRoot":"","sources":["../src/parse-nits.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoDH;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA4B1D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBjE;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,GACX,KAAK,CAAC;IAAE,IAAI,EAAE,SAAS,GAAG,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAY9D"}
|
|
1
|
+
{"version":3,"file":"parse-nits.d.ts","sourceRoot":"","sources":["../src/parse-nits.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoDH;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA4B1D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBjE;AA6BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB/D;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,GACX,KAAK,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAElD;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,GACX,KAAK,CAAC;IAAE,IAAI,EAAE,SAAS,GAAG,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAY9D"}
|
package/dist/parse-nits.js
CHANGED
|
@@ -110,6 +110,80 @@ export function parseCodeRabbitOutsideDiff(body) {
|
|
|
110
110
|
}
|
|
111
111
|
return results;
|
|
112
112
|
}
|
|
113
|
+
/** The HTML-comment marker greptile emits to anchor its out-of-diff section. */
|
|
114
|
+
const GREPTILE_OUTSIDE_DIFF_MARKER = '<!-- greptile_other_comments_section -->';
|
|
115
|
+
/**
|
|
116
|
+
* The documented greptile summary footer ("Reviews (N): … | Re-trigger
|
|
117
|
+
* Greptile"). Anchor footer removal to THIS shape, not the first `<sub>`
|
|
118
|
+
* anywhere — a greptile finding may legitimately contain an HTML subscript, and
|
|
119
|
+
* truncating at it would drop the rest of the finding (CR review on #2246).
|
|
120
|
+
*/
|
|
121
|
+
const GREPTILE_REVIEWS_FOOTER = /<sub\b[^>]*>\s*Reviews\b/i;
|
|
122
|
+
/**
|
|
123
|
+
* The cleaned content of greptile's out-of-diff section — everything between the
|
|
124
|
+
* `greptile_other_comments_section` marker and the Reviews footer, HTML wrappers
|
|
125
|
+
* stripped. Returns '' when the marker is absent or the section is empty
|
|
126
|
+
* (resolved/clean). Shared by {@link parseGreptileOutsideDiff} and
|
|
127
|
+
* {@link greptileOutsideDiffSectionHasContent}.
|
|
128
|
+
*/
|
|
129
|
+
function greptileOutsideDiffSection(body) {
|
|
130
|
+
if (!body)
|
|
131
|
+
return '';
|
|
132
|
+
const markerIdx = body.indexOf(GREPTILE_OUTSIDE_DIFF_MARKER);
|
|
133
|
+
if (markerIdx === -1)
|
|
134
|
+
return '';
|
|
135
|
+
let section = body.slice(markerIdx + GREPTILE_OUTSIDE_DIFF_MARKER.length);
|
|
136
|
+
const footerIdx = section.search(GREPTILE_REVIEWS_FOOTER);
|
|
137
|
+
if (footerIdx !== -1)
|
|
138
|
+
section = section.slice(0, footerIdx);
|
|
139
|
+
return stripWrapperTags(section).trim();
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Extract greptile's "Comments Outside Diff" findings from its SUMMARY comment.
|
|
143
|
+
*
|
|
144
|
+
* Greptile renders out-of-diff findings in the standing summary comment, BELOW
|
|
145
|
+
* the flowchart, anchored by the HTML-comment marker
|
|
146
|
+
* `<!-- greptile_other_comments_section -->` and trailed by a `<sub>Reviews (N):
|
|
147
|
+
* …</sub>` footer (mmnto-ai/totem-strategy#690; the canonical anchor). We key on
|
|
148
|
+
* the MARKER — not a sampled `<details>`/header shape — because greptile EDITS
|
|
149
|
+
* this comment in place: a merged/closed PR shows the marker with the content
|
|
150
|
+
* already removed post-resolution, so the live findings-state cannot be
|
|
151
|
+
* reverse-engineered from a closed PR (GitHub `userContentEdits` exposes edit
|
|
152
|
+
* metadata, not prior bodies). Returns [] when the section is absent or empty
|
|
153
|
+
* (resolved/none).
|
|
154
|
+
*/
|
|
155
|
+
export function parseGreptileOutsideDiff(body) {
|
|
156
|
+
const cleaned = greptileOutsideDiffSection(body);
|
|
157
|
+
if (!cleaned)
|
|
158
|
+
return [];
|
|
159
|
+
// Greptile may render multiple out-of-diff findings separated by `---` rules.
|
|
160
|
+
// Split on `---` ONLY outside fenced code blocks: greptile findings embed code
|
|
161
|
+
// examples/suggestions, and stripping or splitting through fences deletes that
|
|
162
|
+
// content from the surfaced finding (gemini review on #2246). Toggle on ```.
|
|
163
|
+
const FENCE = '```';
|
|
164
|
+
const groups = [[]];
|
|
165
|
+
let inFence = false;
|
|
166
|
+
for (const line of cleaned.split(/\r?\n/)) {
|
|
167
|
+
if (line.trimStart().startsWith(FENCE))
|
|
168
|
+
inFence = !inFence;
|
|
169
|
+
if (!inFence && line.trim() === '---') {
|
|
170
|
+
groups.push([]);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
groups[groups.length - 1].push(line);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const parts = groups.map((g) => g.join('\n').trim()).filter(Boolean);
|
|
177
|
+
return parts.length ? parts : [cleaned];
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Combined parser for greptile SUMMARY-comment findings — the marker-anchored
|
|
181
|
+
* "Comments Outside Diff" section (greptile's per-line findings post inline and
|
|
182
|
+
* are handled by the thread path). See {@link parseGreptileOutsideDiff}.
|
|
183
|
+
*/
|
|
184
|
+
export function parseGreptileReviewFindings(body) {
|
|
185
|
+
return parseGreptileOutsideDiff(body).map((content) => ({ type: 'outside-diff', content }));
|
|
186
|
+
}
|
|
113
187
|
/**
|
|
114
188
|
* Combined parser that extracts both nitpick and outside-diff findings
|
|
115
189
|
* from a CodeRabbit review body, returning typed results.
|
package/dist/parse-nits.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-nits.js","sourceRoot":"","sources":["../src/parse-nits.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse-nits.js","sourceRoot":"","sources":["../src/parse-nits.ts"],"names":[],"mappings":"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"}
|
package/dist/parse-nits.test.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { parseCodeRabbitNits, parseCodeRabbitOutsideDiff, parseCodeRabbitReviewFindings, } from './parse-nits.js';
|
|
2
|
+
import { parseCodeRabbitNits, parseCodeRabbitOutsideDiff, parseCodeRabbitReviewFindings, parseGreptileOutsideDiff, parseGreptileReviewFindings, } from './parse-nits.js';
|
|
3
3
|
// ─── Sample CodeRabbit nit block ─────────────────────────
|
|
4
4
|
const SAMPLE_NIT_BLOCK = `<details>
|
|
5
5
|
<summary>🧹 Nitpick comments (2)</summary><blockquote>
|
|
@@ -277,4 +277,120 @@ ${SAMPLE_OUTSIDE_DIFF_BLOCK}`;
|
|
|
277
277
|
expect(findings).toHaveLength(1);
|
|
278
278
|
});
|
|
279
279
|
});
|
|
280
|
+
// ─── Greptile summary parser (marker-anchored — mmnto-ai/totem#2192) ──────────
|
|
281
|
+
//
|
|
282
|
+
// Anchored on the canonical `<!-- greptile_other_comments_section -->` marker
|
|
283
|
+
// (mmnto-ai/totem-strategy#690), NOT a sampled <details> shape — greptile edits
|
|
284
|
+
// its summary in place, so a closed PR shows the marker with content removed
|
|
285
|
+
// post-resolution. The marker placement (below the flowchart, above the
|
|
286
|
+
// `<sub>Reviews>` footer) mirrors the real strategy#689 structure; the exact
|
|
287
|
+
// rendering of findings UNDER the marker is validated against a live out-of-diff
|
|
288
|
+
// sample (this fix's own PR or the next one).
|
|
289
|
+
const GREPTILE_WITH_OUTSIDE_DIFF = `<h3>Greptile Summary</h3>
|
|
290
|
+
|
|
291
|
+
Some prose summary.
|
|
292
|
+
|
|
293
|
+
<h3>Flowchart</h3>
|
|
294
|
+
|
|
295
|
+
\`\`\`mermaid
|
|
296
|
+
flowchart TD
|
|
297
|
+
A --> B
|
|
298
|
+
\`\`\`
|
|
299
|
+
|
|
300
|
+
<!-- greptile_other_comments_section -->
|
|
301
|
+
|
|
302
|
+
\`src/scorer.ts\`: the exposure floor is accepted but never checked in Step 2.
|
|
303
|
+
|
|
304
|
+
<sub>Reviews (2): Last reviewed commit … | Re-trigger Greptile</sub>`;
|
|
305
|
+
const GREPTILE_RESOLVED = `<h3>Greptile Summary</h3>
|
|
306
|
+
|
|
307
|
+
Confidence Score: 5/5 — safe to merge.
|
|
308
|
+
|
|
309
|
+
<!-- greptile_other_comments_section -->
|
|
310
|
+
|
|
311
|
+
<sub>Reviews (3): Last reviewed commit … | Re-trigger Greptile</sub>`;
|
|
312
|
+
describe('parseGreptileOutsideDiff (marker-anchored)', () => {
|
|
313
|
+
it('extracts the section under the greptile_other_comments_section marker', () => {
|
|
314
|
+
const results = parseGreptileOutsideDiff(GREPTILE_WITH_OUTSIDE_DIFF);
|
|
315
|
+
expect(results).toHaveLength(1);
|
|
316
|
+
expect(results[0]).toContain('exposure floor');
|
|
317
|
+
});
|
|
318
|
+
it('drops the trailing <sub>Reviews</sub> footer from the extracted section', () => {
|
|
319
|
+
const results = parseGreptileOutsideDiff(GREPTILE_WITH_OUTSIDE_DIFF);
|
|
320
|
+
expect(results[0]).not.toMatch(/Re-trigger Greptile/);
|
|
321
|
+
expect(results[0]).not.toMatch(/<sub\b/i);
|
|
322
|
+
});
|
|
323
|
+
it('returns empty when the marker is present but the section is resolved/empty', () => {
|
|
324
|
+
// The post-resolution state: marker remains, content edited away.
|
|
325
|
+
expect(parseGreptileOutsideDiff(GREPTILE_RESOLVED)).toEqual([]);
|
|
326
|
+
});
|
|
327
|
+
it('returns empty when the marker is absent', () => {
|
|
328
|
+
const body = `<h3>Greptile Summary</h3>\n\nConfidence Score: 5/5\n\nSafe to merge.`;
|
|
329
|
+
expect(parseGreptileOutsideDiff(body)).toEqual([]);
|
|
330
|
+
});
|
|
331
|
+
it('returns empty array for empty string', () => {
|
|
332
|
+
expect(parseGreptileOutsideDiff('')).toEqual([]);
|
|
333
|
+
});
|
|
334
|
+
it('splits multiple findings on `---` rules outside code fences (CR #2246)', () => {
|
|
335
|
+
const body = [
|
|
336
|
+
'<!-- greptile_other_comments_section -->',
|
|
337
|
+
'',
|
|
338
|
+
'`src/a.ts`: first finding.',
|
|
339
|
+
'',
|
|
340
|
+
'---',
|
|
341
|
+
'',
|
|
342
|
+
'`src/b.ts`: second finding.',
|
|
343
|
+
'',
|
|
344
|
+
'<sub>Reviews (2): Last reviewed commit … | Re-trigger Greptile</sub>',
|
|
345
|
+
].join('\n');
|
|
346
|
+
expect(parseGreptileOutsideDiff(body)).toEqual([
|
|
347
|
+
'`src/a.ts`: first finding.',
|
|
348
|
+
'`src/b.ts`: second finding.',
|
|
349
|
+
]);
|
|
350
|
+
});
|
|
351
|
+
it('preserves fenced code blocks and does NOT split on an in-fence `---` (gemini #2246)', () => {
|
|
352
|
+
const fence = '```';
|
|
353
|
+
const body = [
|
|
354
|
+
'<!-- greptile_other_comments_section -->',
|
|
355
|
+
'',
|
|
356
|
+
'Suggested fix:',
|
|
357
|
+
`${fence}ts`,
|
|
358
|
+
'const x = 1;',
|
|
359
|
+
'---', // a rule-looking line INSIDE the fence must not split
|
|
360
|
+
'const y = 2;',
|
|
361
|
+
fence,
|
|
362
|
+
'',
|
|
363
|
+
'<sub>Reviews (1): … | Re-trigger Greptile</sub>',
|
|
364
|
+
].join('\n');
|
|
365
|
+
const results = parseGreptileOutsideDiff(body);
|
|
366
|
+
expect(results).toHaveLength(1); // not split by the in-fence `---`
|
|
367
|
+
expect(results[0]).toContain('const x = 1;'); // code preserved, not stripped
|
|
368
|
+
expect(results[0]).toContain('const y = 2;');
|
|
369
|
+
expect(results[0]).toContain(fence);
|
|
370
|
+
});
|
|
371
|
+
it('anchors footer removal to the Reviews footer, preserving an inner <sub> (CR #2246)', () => {
|
|
372
|
+
const body = [
|
|
373
|
+
'<!-- greptile_other_comments_section -->',
|
|
374
|
+
'',
|
|
375
|
+
'Finding with an inline <sub>subscript</sub> that must survive.',
|
|
376
|
+
'',
|
|
377
|
+
'<sub>Reviews (1): … | Re-trigger Greptile</sub>',
|
|
378
|
+
].join('\n');
|
|
379
|
+
const results = parseGreptileOutsideDiff(body);
|
|
380
|
+
expect(results).toHaveLength(1);
|
|
381
|
+
expect(results[0]).toContain('subscript');
|
|
382
|
+
expect(results[0]).not.toMatch(/Re-trigger Greptile/);
|
|
383
|
+
});
|
|
384
|
+
});
|
|
385
|
+
describe('parseGreptileReviewFindings (marker-anchored)', () => {
|
|
386
|
+
it('types the extracted section as outside-diff findings', () => {
|
|
387
|
+
const findings = parseGreptileReviewFindings(GREPTILE_WITH_OUTSIDE_DIFF);
|
|
388
|
+
expect(findings).toHaveLength(1);
|
|
389
|
+
expect(findings[0].type).toBe('outside-diff');
|
|
390
|
+
expect(findings[0].content).toContain('exposure floor');
|
|
391
|
+
});
|
|
392
|
+
it('returns empty array when the marker section is absent', () => {
|
|
393
|
+
expect(parseGreptileReviewFindings('## Just a normal summary.')).toEqual([]);
|
|
394
|
+
});
|
|
395
|
+
});
|
|
280
396
|
//# sourceMappingURL=parse-nits.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-nits.test.js","sourceRoot":"","sources":["../src/parse-nits.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse-nits.test.js","sourceRoot":"","sources":["../src/parse-nits.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,6BAA6B,EAC7B,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,iBAAiB,CAAC;AAEzB,4DAA4D;AAE5D,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;wBAoBD,CAAC;AAEzB,4DAA4D;AAE5D,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,IAAI,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,IAAI,GAAG;;;;;;;WAON,CAAC;QACR,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;wBAcO,CAAC;QACrB,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC5F,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;wBAkBO,CAAC;QACrB,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,IAAI,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,kCAAkC;QAClC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACzC,8BAA8B;QAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,oDAAoD,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG;;;;;WAKN,CAAC;QACR,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,IAAI,GAAG;;;;;WAKN,CAAC;QACR,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,6CAA6C;QAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,yCAAyC;QACzC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;oBAqBG,CAAC;QACjB,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,IAAI,GAAG;;wBAEO,CAAC;QACrB,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,4DAA4D;AAE5D,MAAM,yBAAyB,GAAG;;;;;WAKvB,CAAC;AAEZ,MAAM,+BAA+B,GAAG;;;;;;WAM7B,CAAC;AAEZ,4DAA4D;AAE5D,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,OAAO,GAAG,0BAA0B,CAAC,yBAAyB,CAAC,CAAC;QACtE,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG,0BAA0B,CAAC,+BAA+B,CAAC,CAAC;QAC5E,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG,sHAAsH,CAAC;QACpI,MAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,IAAI,GAAG;;;;;WAKN,CAAC;QACR,MAAM,OAAO,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,IAAI,GAAG,GAAG,yBAAyB;;;;EAI3C,+BAA+B,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,QAAQ,GAAG;;;;;WAKV,CAAC;QACR,MAAM,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,IAAI,GAAG;;;;;wBAKO,CAAC;QACrB,MAAM,OAAO,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,4DAA4D;AAE5D,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,IAAI,GAAG,GAAG,gBAAgB;;EAElC,yBAAyB,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;QAErD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAEtE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,IAAI,GAAG,qCAAqC,CAAC;QACnD,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,QAAQ,GAAG,6BAA6B,CAAC,gBAAgB,CAAC,CAAC;QACjE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,QAAQ,GAAG,6BAA6B,CAAC,yBAAyB,CAAC,CAAC;QAC1E,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AACjF,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,6EAA6E;AAC7E,wEAAwE;AACxE,6EAA6E;AAC7E,iFAAiF;AACjF,8CAA8C;AAE9C,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;qEAekC,CAAC;AAEtE,MAAM,iBAAiB,GAAG;;;;;;qEAM2C,CAAC;AAEtE,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IAC1D,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,OAAO,GAAG,wBAAwB,CAAC,0BAA0B,CAAC,CAAC;QACrE,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,OAAO,GAAG,wBAAwB,CAAC,0BAA0B,CAAC,CAAC;QACrE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,kEAAkE;QAClE,MAAM,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,sEAAsE,CAAC;QACpF,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,IAAI,GAAG;YACX,0CAA0C;YAC1C,EAAE;YACF,4BAA4B;YAC5B,EAAE;YACF,KAAK;YACL,EAAE;YACF,6BAA6B;YAC7B,EAAE;YACF,sEAAsE;SACvE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAC7C,4BAA4B;YAC5B,6BAA6B;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qFAAqF,EAAE,GAAG,EAAE;QAC7F,MAAM,KAAK,GAAG,KAAK,CAAC;QACpB,MAAM,IAAI,GAAG;YACX,0CAA0C;YAC1C,EAAE;YACF,gBAAgB;YAChB,GAAG,KAAK,IAAI;YACZ,cAAc;YACd,KAAK,EAAE,sDAAsD;YAC7D,cAAc;YACd,KAAK;YACL,EAAE;YACF,iDAAiD;SAClD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC;QACnE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,+BAA+B;QAC7E,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC5F,MAAM,IAAI,GAAG;YACX,0CAA0C;YAC1C,EAAE;YACF,gEAAgE;YAChE,EAAE;YACF,iDAAiD;SAClD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;IAC7D,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,QAAQ,GAAG,2BAA2B,CAAC,0BAA0B,CAAC,CAAC;QACzE,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,2BAA2B,CAAC,2BAA2B,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -74,6 +74,14 @@ export declare function parseGCASeverity(body: string): string;
|
|
|
74
74
|
* a `P0` finding would silently fall through to `info`, the opposite of safe.
|
|
75
75
|
*/
|
|
76
76
|
export declare function parseGreptileSeverity(body: string): string;
|
|
77
|
+
/**
|
|
78
|
+
* Extract greptile's documented merge-readiness Confidence Score (`N/5`, integer
|
|
79
|
+
* 0–5) from its summary comment — 5 production-ready … 0–1 critical problems
|
|
80
|
+
* (greptile docs: code-review/first-pr-review). A status signal surfaced as
|
|
81
|
+
* triage context (NOT a finding); returns `undefined` when no score is present.
|
|
82
|
+
* Parsed as `N/5`, never a percentage.
|
|
83
|
+
*/
|
|
84
|
+
export declare function parseGreptileConfidence(body: string): number | undefined;
|
|
77
85
|
/**
|
|
78
86
|
* Single source of truth for "which severity parser applies to which bot".
|
|
79
87
|
* Keeps the per-tool dispatch in one place so adding a bot does not require
|
|
@@ -92,8 +100,13 @@ export declare function isThreadResolved(thread: CommentThread): boolean;
|
|
|
92
100
|
* Only returns findings from threads that were resolved positively.
|
|
93
101
|
*/
|
|
94
102
|
/**
|
|
95
|
-
* Extract findings from
|
|
96
|
-
*
|
|
103
|
+
* Extract findings from review-bot SUMMARY bodies (CodeRabbit outside-diff + nits,
|
|
104
|
+
* greptile "Comments Outside Diff"). Surface-agnostic: callers pass review
|
|
105
|
+
* submission bodies (`fetchReviews`/`pr.reviews`) AND PR issue comments
|
|
106
|
+
* (`fetchIssueComments`) — bots post these standing summaries on different
|
|
107
|
+
* surfaces (CR in the review body, greptile in the issue-comment summary) and
|
|
108
|
+
* edit them in place across rounds. Overlap between surfaces is collapsed
|
|
109
|
+
* downstream by `deduplicateFindings`. Shared by triage-pr and review-learn.
|
|
97
110
|
*/
|
|
98
111
|
export declare function extractReviewBodyFindings(reviews: Array<{
|
|
99
112
|
author: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-review-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/bot-review-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,OAAO,GAAG,iBAAiB,GAAG,MAAM,CAAC;IACxD,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACtC,uIAAuI;IACvI,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE;AAgBD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOpD;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAMjD;AAID,4GAA4G;AAC5G,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQtD;AAED,qDAAqD;AACrD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGlE;AAID,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrD;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAWxE;AAID,kEAAkE;AAClE,eAAO,MAAM,iBAAiB,UAmB7B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAiC/D;AAED;;;GAGG;AACH
|
|
1
|
+
{"version":3,"file":"bot-review-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/bot-review-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,OAAO,GAAG,iBAAiB,GAAG,MAAM,CAAC;IACxD,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACtC,uIAAuI;IACvI,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE;AAgBD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOpD;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAMjD;AAID,4GAA4G;AAC5G,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQtD;AAED,qDAAqD;AACrD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGlE;AAID,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrD;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKxE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAWxE;AAID,kEAAkE;AAClE,eAAO,MAAM,iBAAiB,UAmB7B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAiC/D;AAED;;;GAGG;AACH;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,oBAAoB,EAAE,CAgCxB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,oBAAoB,EAAE,CAqCxF;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,oBAAoB,EAAE,CA+B3F"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* so that `review-learn` extracts lessons only from findings the
|
|
7
7
|
* developer actually fixed.
|
|
8
8
|
*/
|
|
9
|
-
import { parseCodeRabbitReviewFindings } from '../parse-nits.js';
|
|
9
|
+
import { parseCodeRabbitReviewFindings, parseGreptileReviewFindings } from '../parse-nits.js';
|
|
10
10
|
// ─── Bot Detection ──────────────────────────────────
|
|
11
11
|
// greptile is matched by its bot-login SHAPE — `greptile[bot]`,
|
|
12
12
|
// `greptile-apps[bot]`, `greptile-enterprise[bot]` — rather than a bare
|
|
@@ -96,6 +96,19 @@ export function parseGreptileSeverity(body) {
|
|
|
96
96
|
return 'low';
|
|
97
97
|
return 'info';
|
|
98
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Extract greptile's documented merge-readiness Confidence Score (`N/5`, integer
|
|
101
|
+
* 0–5) from its summary comment — 5 production-ready … 0–1 critical problems
|
|
102
|
+
* (greptile docs: code-review/first-pr-review). A status signal surfaced as
|
|
103
|
+
* triage context (NOT a finding); returns `undefined` when no score is present.
|
|
104
|
+
* Parsed as `N/5`, never a percentage.
|
|
105
|
+
*/
|
|
106
|
+
export function parseGreptileConfidence(body) {
|
|
107
|
+
// `(?!\d)` bounds the denominator so `Confidence Score: 5/50` is not misread
|
|
108
|
+
// as `5/5` (a false merge-readiness signal) — CR review on #2246.
|
|
109
|
+
const m = body.match(/Confidence Score:\s*([0-5])\s*\/\s*5(?!\d)/i);
|
|
110
|
+
return m ? Number(m[1]) : undefined;
|
|
111
|
+
}
|
|
99
112
|
/**
|
|
100
113
|
* Single source of truth for "which severity parser applies to which bot".
|
|
101
114
|
* Keeps the per-tool dispatch in one place so adding a bot does not require
|
|
@@ -176,8 +189,13 @@ export function isThreadResolved(thread) {
|
|
|
176
189
|
* Only returns findings from threads that were resolved positively.
|
|
177
190
|
*/
|
|
178
191
|
/**
|
|
179
|
-
* Extract findings from
|
|
180
|
-
*
|
|
192
|
+
* Extract findings from review-bot SUMMARY bodies (CodeRabbit outside-diff + nits,
|
|
193
|
+
* greptile "Comments Outside Diff"). Surface-agnostic: callers pass review
|
|
194
|
+
* submission bodies (`fetchReviews`/`pr.reviews`) AND PR issue comments
|
|
195
|
+
* (`fetchIssueComments`) — bots post these standing summaries on different
|
|
196
|
+
* surfaces (CR in the review body, greptile in the issue-comment summary) and
|
|
197
|
+
* edit them in place across rounds. Overlap between surfaces is collapsed
|
|
198
|
+
* downstream by `deduplicateFindings`. Shared by triage-pr and review-learn.
|
|
181
199
|
*/
|
|
182
200
|
export function extractReviewBodyFindings(reviews) {
|
|
183
201
|
const findings = [];
|
|
@@ -186,10 +204,14 @@ export function extractReviewBodyFindings(reviews) {
|
|
|
186
204
|
continue;
|
|
187
205
|
const tool = detectBot(review.author);
|
|
188
206
|
let parsed = [];
|
|
189
|
-
// Only CodeRabbit parser is implemented for now
|
|
190
207
|
if (tool === 'coderabbit') {
|
|
191
208
|
parsed = parseCodeRabbitReviewFindings(review.body);
|
|
192
209
|
}
|
|
210
|
+
else if (tool === 'greptile') {
|
|
211
|
+
// PROVISIONAL greptile summary parser (mmnto-ai/totem#2192) — see
|
|
212
|
+
// `parseGreptileOutsideDiff`. Refine against a captured live sample.
|
|
213
|
+
parsed = parseGreptileReviewFindings(review.body);
|
|
214
|
+
}
|
|
193
215
|
for (const finding of parsed) {
|
|
194
216
|
findings.push({
|
|
195
217
|
tool,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-review-parser.js","sourceRoot":"","sources":["../../src/parsers/bot-review-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"bot-review-parser.js","sourceRoot":"","sources":["../../src/parsers/bot-review-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { detectBot, extractPushbackFindings, extractResolvedBotFindings, extractReviewBodyFindings, extractSuggestion, isBotComment, isThreadResolved, parseCRSeverity, parseGCASeverity, parseGreptileSeverity, parseSeverityForTool, stripHtmlWrappers, } from './bot-review-parser.js';
|
|
2
|
+
import { detectBot, extractPushbackFindings, extractResolvedBotFindings, extractReviewBodyFindings, extractSuggestion, isBotComment, isThreadResolved, parseCRSeverity, parseGCASeverity, parseGreptileConfidence, parseGreptileSeverity, parseSeverityForTool, stripHtmlWrappers, } from './bot-review-parser.js';
|
|
3
3
|
// ─── detectBot ──────────────────────────────────────────
|
|
4
4
|
describe('detectBot', () => {
|
|
5
5
|
it('identifies coderabbitai[bot]', () => {
|
|
@@ -495,5 +495,44 @@ describe('decline taxonomy (mmnto-ai/totem#2124)', () => {
|
|
|
495
495
|
expect(findings).toHaveLength(1);
|
|
496
496
|
expect(findings[0].disposition).toBeUndefined();
|
|
497
497
|
});
|
|
498
|
+
it('extractReviewBodyFindings: dispatches the greptile branch via the outside-diff marker (mmnto-ai/totem#2192)', () => {
|
|
499
|
+
// Sourced via gh api → author keeps the [bot] suffix the greptile regex needs.
|
|
500
|
+
// Marker-anchored (strategy#690), mirroring the real greptile summary shape.
|
|
501
|
+
const body = [
|
|
502
|
+
'<h3>Greptile Summary</h3>',
|
|
503
|
+
'',
|
|
504
|
+
'<!-- greptile_other_comments_section -->',
|
|
505
|
+
'',
|
|
506
|
+
'`src/scorer.ts`: exposure floor accepted but never checked.',
|
|
507
|
+
'',
|
|
508
|
+
'<sub>Reviews (1): Last reviewed commit … | Re-trigger Greptile</sub>',
|
|
509
|
+
].join('\n');
|
|
510
|
+
const findings = extractReviewBodyFindings([{ author: 'greptile-apps[bot]', body }]);
|
|
511
|
+
expect(findings).toHaveLength(1);
|
|
512
|
+
expect(findings[0].tool).toBe('greptile');
|
|
513
|
+
expect(findings[0].body).toContain('exposure floor');
|
|
514
|
+
expect(findings[0].file).toBe('(review body)');
|
|
515
|
+
});
|
|
516
|
+
it('extractReviewBodyFindings: ignores a greptile summary with no outside-diff block', () => {
|
|
517
|
+
const findings = extractReviewBodyFindings([
|
|
518
|
+
{ author: 'greptile-apps[bot]', body: '<h3>Greptile Summary</h3>\n\nConfidence Score: 5/5' },
|
|
519
|
+
]);
|
|
520
|
+
expect(findings).toEqual([]);
|
|
521
|
+
});
|
|
522
|
+
it('parseGreptileConfidence: extracts the N/5 score (mmnto-ai/totem#2192)', () => {
|
|
523
|
+
expect(parseGreptileConfidence('<h3>Confidence Score: 4/5</h3>\n\nMinor polish.')).toBe(4);
|
|
524
|
+
expect(parseGreptileConfidence('Confidence Score: 5 / 5')).toBe(5);
|
|
525
|
+
expect(parseGreptileConfidence('Confidence Score: 0/5')).toBe(0);
|
|
526
|
+
});
|
|
527
|
+
it('parseGreptileConfidence: returns undefined when no score is present', () => {
|
|
528
|
+
expect(parseGreptileConfidence('<h3>Greptile Summary</h3>\n\nSafe to merge.')).toBeUndefined();
|
|
529
|
+
// Not a percentage — must be N/5.
|
|
530
|
+
expect(parseGreptileConfidence('Confidence: 90%')).toBeUndefined();
|
|
531
|
+
});
|
|
532
|
+
it('parseGreptileConfidence: does not misread `5/50` as `5/5` (CR #2246)', () => {
|
|
533
|
+
// The `(?!\d)` denominator boundary prevents a false merge-readiness signal.
|
|
534
|
+
expect(parseGreptileConfidence('Confidence Score: 5/50')).toBeUndefined();
|
|
535
|
+
expect(parseGreptileConfidence('Confidence Score: 4/55')).toBeUndefined();
|
|
536
|
+
});
|
|
498
537
|
});
|
|
499
538
|
//# sourceMappingURL=bot-review-parser.test.js.map
|