@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.
@@ -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":"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"}
1
+ {"version":3,"file":"triage-pr.test.js","sourceRoot":"","sources":["../../src/commands/triage-pr.test.ts"],"names":[],"mappings":"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"}
@@ -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.
@@ -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"}
@@ -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.
@@ -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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"}
@@ -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":"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"}
@@ -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 CodeRabbit review bodies (outside-diff + nits).
96
- * Shared by triage-pr and review-learn to avoid duplication.
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;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,oBAAoB,EAAE,CA6BxB;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"}
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 CodeRabbit review bodies (outside-diff + nits).
180
- * Shared by triage-pr and review-learn to avoid duplication.
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;AAgDjE,uDAAuD;AAEvD,gEAAgE;AAChE,wEAAwE;AACxE,wEAAwE;AACxE,iEAAiE;AACjE,6EAA6E;AAC7E,0EAA0E;AAC1E,gFAAgF;AAChF,uEAAuE;AACvE,0EAA0E;AAC1E,gEAAgE;AAChE,MAAM,kBAAkB,GAAG,+BAA+B,CAAC;AAE3D,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,OAAO,CACL,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5B,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACpC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,YAAY,CAAC;IACtD,IAAI,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAAE,OAAO,KAAK,CAAC;IACvD,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,UAAU,CAAC;IACvD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,uDAAuD;AAEvD,4GAA4G;AAC5G,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAC7F,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACvF,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACvF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,IAAI;SACR,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,OAAO,CAAC,gCAAgC,EAAE,EAAE,CAAC;SAC7C,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,2CAA2C;SACzE,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9C,CAAC;AAED,uDAAuD;AAEvD,mEAAmE;AACnE,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACnF,OAAO,MAAM,CAAC;IAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1D,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uDAAuD;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC;IAC5C,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAa,EAAE,IAAY;IAC9D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,YAAY;YACf,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,KAAK;YACR,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAChC,KAAK,UAAU;YACb,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACrC;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED,uDAAuD;AAEvD,kEAAkE;AAClE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,mDAAmD;IACnD,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,0CAA0C;IAC1C,yBAAyB;IACzB,qBAAqB;IACrB,6FAA6F;IAC7F,8FAA8F;IAC9F,yFAAyF;IACzF,mGAAmG;IACnG,gGAAgG;IAChG,+FAA+F;IAC/F,gGAAgG;IAChG,kGAAkG;IAClG,2FAA2F;IAC3F,iDAAiD;IACjD,mBAAmB;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACpD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAE9B,wBAAwB;IACxB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAEnD,mCAAmC;IACnC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAErF,2CAA2C;IAC3C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5C,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACtE,CAAC;IAED,4EAA4E;IAC5E,MAAM,aAAa,GAAG;QACpB,YAAY;QACZ,WAAW;QACX,gBAAgB;QAChB,cAAc;QACd,oBAAoB,EAAE,aAAa;QACnC,wBAAwB,EAAE,mBAAmB;KAC9C,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IACjE,CAAC;IAED,6CAA6C;IAC7C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAgD;IAEhD,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;YAAE,SAAS;QAE7D,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,MAAM,GAAiE,EAAE,CAAC;QAE9E,gDAAgD;QAChD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,MAAM,GAAG,6BAA6B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;gBAC9D,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,OAAO,CAAC,OAAO;gBACrB,UAAU,EAAE,SAAS;gBACrB,gBAAgB,EAAE,MAAM;gBACxB,8EAA8E;gBAC9E,+EAA+E;gBAC/E,6DAA6D;aAC9D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAwB;IAC9D,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,SAAS;QAE9D,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACrF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAExC,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAChD,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAClD,CAAC;QACF,IAAI,CAAC,aAAa;YAAE,SAAS;QAE7B,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAE7D,MAAM,IAAI,GAAG,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEjE,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI;YACJ,QAAQ;YACR,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI;YACJ,IAAI;YACJ,UAAU,EAAE,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC;YAC9C,gBAAgB,EAAE,MAAM;YACxB,aAAa,EAAE,UAAU,CAAC,EAAE;YAC5B,WAAW,EAAE,UAAU;YACvB,oBAAoB,EAAE,aAAa,CAAC,IAAI;SACzC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAwB;IACjE,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAAE,SAAS;QAExC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;QACvC,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAE7D,MAAM,IAAI,GAAG,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtD,8DAA8D;QAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEjE,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI;YACJ,QAAQ;YACR,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI;YACJ,IAAI;YACJ,UAAU;YACV,gBAAgB,EAAE,OAAO;YACzB,aAAa,EAAE,UAAU,CAAC,EAAE;YAC5B,WAAW,EAAE,UAAU;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,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