pi-pr-review 1.14.1 → 1.14.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/CHANGELOG.md +7 -0
- package/extensions/pr-review-subagent.ts +2 -2
- package/lib/pr-review-extract.ts +19 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.14.2](https://github.com/10ego/pi-pr-review/compare/v1.14.1...v1.14.2) (2026-08-23)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **extract:** scan lane evidence past the synthesis findings framing ([#77](https://github.com/10ego/pi-pr-review/issues/77)) ([dfebc36](https://github.com/10ego/pi-pr-review/commit/dfebc3632910fdde46581d4a48d236d72c7046df))
|
|
9
|
+
|
|
3
10
|
## [1.14.1](https://github.com/10ego/pi-pr-review/compare/v1.14.0...v1.14.1) (2026-08-22)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
} from "../lib/pr-review-artifacts.ts";
|
|
57
57
|
import { runWithConcurrency } from "../lib/pr-review-concurrency.ts";
|
|
58
58
|
import { attemptDeadline, fallbackBudget, type ReviewBudget } from "../lib/pr-review-deadlines.ts";
|
|
59
|
-
import { buildExtractionSystemPrompt, MAX_EXTRACTION_OUTPUT_BYTES } from "../lib/pr-review-extract.ts";
|
|
59
|
+
import { buildExtractionSystemPrompt, buildExtractionTask, MAX_EXTRACTION_OUTPUT_BYTES } from "../lib/pr-review-extract.ts";
|
|
60
60
|
import { loadReviewContext, shardUnifiedDiff } from "../lib/pr-review-context.ts";
|
|
61
61
|
import {
|
|
62
62
|
combineAbortSignals,
|
|
@@ -2727,7 +2727,7 @@ export async function runFindingExtraction(
|
|
|
2727
2727
|
invocation.command,
|
|
2728
2728
|
invocation.args,
|
|
2729
2729
|
ctx.cwd,
|
|
2730
|
-
input,
|
|
2730
|
+
buildExtractionTask(input),
|
|
2731
2731
|
lease.signal,
|
|
2732
2732
|
undefined,
|
|
2733
2733
|
undefined,
|
package/lib/pr-review-extract.ts
CHANGED
|
@@ -89,6 +89,8 @@ export function buildExtractionSystemPrompt(): string {
|
|
|
89
89
|
"When the document names a file for the finding, also include: path (repo-relative file path exactly as written), start_line and end_line (integers from the document when stated), side (\"RIGHT\" for added lines, \"LEFT\" for removed lines), and location_quote (a verbatim substring of the document containing that path).",
|
|
90
90
|
"Optionally include source (the lane or section the finding came from).",
|
|
91
91
|
"Rules: report only findings actually stated in the document; never invent, merge, or upgrade severity; keep the reviewer's own wording in title and body; omit path fields when no location is stated; do not report strengths, summaries, or coverage notes as findings.",
|
|
92
|
+
"The synthesis's own Findings section is NOT authoritative about what the document states: a review summary saying \"No findings\" while a retained lane section states a concrete defect means that defect IS stated in the document and must be extracted.",
|
|
93
|
+
"Findings appear in any format: ### severity blocks, bulleted field lists (title/severity/why/location), or prose. Scan every section, including retained lane output, before deciding the document states no findings.",
|
|
92
94
|
"If the document states no findings, return {\"findings\":[]}.",
|
|
93
95
|
"Do not use tools, read files, or modify anything.",
|
|
94
96
|
].join("\n");
|
|
@@ -112,6 +114,23 @@ function truncateWithMarker(text: string, maxBytes: number, omittedBytes?: numbe
|
|
|
112
114
|
}
|
|
113
115
|
|
|
114
116
|
/** Assemble the bounded extraction payload: synthesis first, then lanes in order, each truncated with its own byte-count marker. */
|
|
117
|
+
/**
|
|
118
|
+
* Host-authored framing wrapped around the data document. Without it the
|
|
119
|
+
* child treats the synthesis's own "Findings: No findings." framing as
|
|
120
|
+
* authoritative and misses defects stated in retained lane output (observed
|
|
121
|
+
* in the first production extraction run).
|
|
122
|
+
*/
|
|
123
|
+
export function buildExtractionTask(input: string): string {
|
|
124
|
+
return [
|
|
125
|
+
"Objective: Extract every concrete defect finding stated anywhere in this review document, including inside the retained lane output sections.",
|
|
126
|
+
"A \"No findings\" line written by the summary does not mean the document states no findings: check the lane sections too.",
|
|
127
|
+
"",
|
|
128
|
+
"--- Review document ---",
|
|
129
|
+
input,
|
|
130
|
+
"--- End of review document ---",
|
|
131
|
+
].join("\n");
|
|
132
|
+
}
|
|
133
|
+
|
|
115
134
|
export function buildExtractionInput(
|
|
116
135
|
rawText: string,
|
|
117
136
|
lanes: readonly ReviewLaneArtifact[],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-pr-review",
|
|
3
|
-
"version": "1.14.
|
|
3
|
+
"version": "1.14.2",
|
|
4
4
|
"description": "Parallel AI code review for GitHub pull requests in the Pi coding agent, with model-agnostic tiered subagents, structured findings, optional verification, and host-gated COMMENT or qualified APPROVE publishing.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|