revu-ai 0.4.1 → 0.5.0
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 +60 -0
- package/README.md +2 -0
- package/dist/mcp/aggregator.d.ts +12 -0
- package/dist/mcp/aggregator.js +30 -0
- package/dist/mcp/aggregator.js.map +1 -1
- package/dist/mcp/server.js +15 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +13 -1
- package/dist/mcp/tools.js +14 -4
- package/dist/mcp/tools.js.map +1 -1
- package/dist/prompts/review-system.js +16 -9
- package/dist/prompts/review-system.js.map +1 -1
- package/dist/runner.js +52 -2
- package/dist/runner.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,66 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `revu-ai` are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project's pre-1.0 versioning treats minor bumps as breaking-change boundaries.
|
|
4
4
|
|
|
5
|
+
## 0.5.0
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- **Reviews stop "failing forever" after a fix — and now prove they re-checked every prior
|
|
10
|
+
finding.** Previously a prior finding only cleared if the reviewer agent happened to call
|
|
11
|
+
`mark_finding_resolved`, and a still-open finding was signalled by staying silent. Fast /
|
|
12
|
+
non-reasoning models routinely did neither reliably: fixed findings kept their PR comments
|
|
13
|
+
open and the next run was re-primed with the stale finding, so the review never went green
|
|
14
|
+
even after the issue was fixed. Prior-finding handling is now **explicit and enforced**:
|
|
15
|
+
for every prior finding the agent must take exactly one accounting action, and a review
|
|
16
|
+
that leaves any prior finding untouched **fails** as incomplete (so a coding agent can't
|
|
17
|
+
merge past findings the reviewer never re-examined).
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- **`mark_finding_open` MCP tool.** The agent calls it to confirm a prior finding is still
|
|
22
|
+
open at the same location — the explicit counterpart to `mark_finding_resolved`. Confirmed-
|
|
23
|
+
open findings keep their existing PR comment (no duplicate is posted) and are re-injected
|
|
24
|
+
into the run report, so the exit code and carried-forward cache reflect that the issue
|
|
25
|
+
persists. A still-open finding that *moved* is re-reported via `report_finding` with
|
|
26
|
+
`priorFp` set, exactly as before.
|
|
27
|
+
- **Prior-finding accounting enforcement in the runner.** After a rule's agent runs cleanly,
|
|
28
|
+
the runner checks that every prior finding it was given was accounted for — confirmed open
|
|
29
|
+
(`mark_finding_open` / `report_finding` with `priorFp`) or resolved (`mark_finding_resolved`).
|
|
30
|
+
Any unaccounted prior fails the rule with an explicit error naming the fingerprints, which
|
|
31
|
+
forces a non-zero exit. Rules that error, time out, are gated, or are skipped are exempt
|
|
32
|
+
(they didn't run a review to hold to the contract).
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
|
|
36
|
+
- The prior-findings system prompt is rewritten to state the requirement loudly: every prior
|
|
37
|
+
finding must be explicitly marked still-open or resolved, and silence now fails the review
|
|
38
|
+
rather than being interpreted as "fixed". `mark_finding_resolved`'s description was updated
|
|
39
|
+
to frame it as one of the two required accounting actions.
|
|
40
|
+
|
|
41
|
+
## 0.4.2
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
|
|
45
|
+
- **System prompt now states rule-file precedence explicitly.** Operators occasionally
|
|
46
|
+
need a rule to override a system-prompt default (e.g. broaden scope past the diff for a
|
|
47
|
+
full-repo audit). A new "Precedence" section at the top of the prompt tells the agent
|
|
48
|
+
that when the rule file contradicts the system prompt, the rule file wins. System-prompt
|
|
49
|
+
defaults apply only where the rule is silent.
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
|
|
53
|
+
- **Findings must be caused by or required by the diff, not pre-existing issues elsewhere
|
|
54
|
+
in the repo.** Without an explicit scope constraint, agents would walk the broader
|
|
55
|
+
codebase via `Read`/`Grep` looking for instances of a rule's anti-pattern and file
|
|
56
|
+
findings against files the PR never touched — turning every enforcement of a
|
|
57
|
+
sufficiently-general rule (e.g. "no direct REST in components") into a review of the
|
|
58
|
+
whole repo. The new constraint allows findings on out-of-diff files when the diff
|
|
59
|
+
caused or invalidated them (a signature change that breaks an out-of-diff caller, a
|
|
60
|
+
contract the diff broke for pre-existing code, etc.), but pre-existing unrelated code
|
|
61
|
+
is out of scope. The test agents are given: "would this finding still apply if the diff
|
|
62
|
+
were reverted?". Out-of-diff `Read`/`Grep` for verification continues to be allowed.
|
|
63
|
+
Rule files may broaden this scope explicitly under the new precedence rule.
|
|
64
|
+
|
|
5
65
|
## 0.4.1
|
|
6
66
|
|
|
7
67
|
### Fixed
|
package/README.md
CHANGED
|
@@ -227,6 +227,8 @@ A starter workflow lives at `examples/github-workflow.yml`. Drop it into `.githu
|
|
|
227
227
|
|
|
228
228
|
Re-runs are idempotent: each comment carries a hidden marker, and findings already posted on the PR are skipped automatically. To make the PR check itself blocking, add `--request-changes high` to the post step — any high/critical finding then submits as `REQUEST_CHANGES`, which combines with branch protection to block merge.
|
|
229
229
|
|
|
230
|
+
**Resolution across runs.** When a run is given the prior report (`--prior-report`), each reviewer is shown its rule's open prior findings and must **explicitly account for every one**: confirm it's still open (`mark_finding_open`, or `report_finding` with `priorFp` if the code moved) or mark it resolved (`mark_finding_resolved`). The runner enforces this — a review that finishes without accounting for a prior finding **fails as incomplete** (non-zero exit), so a fix can't sail through on a half-done review and a stale finding can't silently linger. Resolved findings get struck through and dropped from the cached report; confirmed-open findings keep their comment and stay counted, so the check goes green only once every prior finding is either fixed or explicitly still-tracked. Rules that error, time out, or are gated/skipped are exempt (they didn't run a review).
|
|
231
|
+
|
|
230
232
|
```bash
|
|
231
233
|
revu-ai github post --report /tmp/revu.json [options]
|
|
232
234
|
--pr <n> PR number (default: parsed from $GITHUB_REF on pull_request events)
|
package/dist/mcp/aggregator.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export declare class FindingsAggregator {
|
|
|
8
8
|
private resolutionListeners;
|
|
9
9
|
private summaryByRule;
|
|
10
10
|
private summaryListeners;
|
|
11
|
+
/** ruleId -> set of prior fingerprints the agent explicitly confirmed still-open. */
|
|
12
|
+
private openByRule;
|
|
11
13
|
private checksByRule;
|
|
12
14
|
private checkDedupKeys;
|
|
13
15
|
private checkListeners;
|
|
@@ -18,8 +20,18 @@ export declare class FindingsAggregator {
|
|
|
18
20
|
add(finding: Finding): boolean;
|
|
19
21
|
/** Record that a prior finding was resolved by the agent. */
|
|
20
22
|
markResolved(ruleId: string, fingerprint: string, reason: "fixed" | "stale", resolvedAtSha?: string): boolean;
|
|
23
|
+
/** Record that a prior finding is still open at the same location. Idempotent per fingerprint. */
|
|
24
|
+
markOpen(ruleId: string, fingerprint: string): boolean;
|
|
21
25
|
countFor(ruleId: string): number;
|
|
26
|
+
findingsFor(ruleId: string): Finding[];
|
|
22
27
|
resolutionsFor(ruleId: string): Resolution[];
|
|
28
|
+
/** Fingerprints the agent explicitly confirmed still-open for this rule. */
|
|
29
|
+
openFor(ruleId: string): string[];
|
|
30
|
+
/** Every (ruleId, fingerprint) the agents confirmed still-open this run. */
|
|
31
|
+
allOpen(): {
|
|
32
|
+
ruleId: string;
|
|
33
|
+
fingerprint: string;
|
|
34
|
+
}[];
|
|
23
35
|
/** Record a review summary. Only the first call per ruleId is kept — subsequent
|
|
24
36
|
* calls return false. The runner uses `summaryFor()` to detect rules that
|
|
25
37
|
* never signed off (likely incomplete reviews). */
|
package/dist/mcp/aggregator.js
CHANGED
|
@@ -8,6 +8,8 @@ export class FindingsAggregator {
|
|
|
8
8
|
resolutionListeners = new Set();
|
|
9
9
|
summaryByRule = new Map();
|
|
10
10
|
summaryListeners = new Set();
|
|
11
|
+
/** ruleId -> set of prior fingerprints the agent explicitly confirmed still-open. */
|
|
12
|
+
openByRule = new Map();
|
|
11
13
|
checksByRule = new Map();
|
|
12
14
|
checkDedupKeys = new Set();
|
|
13
15
|
checkListeners = new Set();
|
|
@@ -65,12 +67,40 @@ export class FindingsAggregator {
|
|
|
65
67
|
}
|
|
66
68
|
return true;
|
|
67
69
|
}
|
|
70
|
+
/** Record that a prior finding is still open at the same location. Idempotent per fingerprint. */
|
|
71
|
+
markOpen(ruleId, fingerprint) {
|
|
72
|
+
let set = this.openByRule.get(ruleId);
|
|
73
|
+
if (!set) {
|
|
74
|
+
set = new Set();
|
|
75
|
+
this.openByRule.set(ruleId, set);
|
|
76
|
+
}
|
|
77
|
+
if (set.has(fingerprint))
|
|
78
|
+
return false;
|
|
79
|
+
set.add(fingerprint);
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
68
82
|
countFor(ruleId) {
|
|
69
83
|
return this.byRule.get(ruleId)?.length ?? 0;
|
|
70
84
|
}
|
|
85
|
+
findingsFor(ruleId) {
|
|
86
|
+
return this.byRule.get(ruleId) ?? [];
|
|
87
|
+
}
|
|
71
88
|
resolutionsFor(ruleId) {
|
|
72
89
|
return this.resolutionsByRule.get(ruleId) ?? [];
|
|
73
90
|
}
|
|
91
|
+
/** Fingerprints the agent explicitly confirmed still-open for this rule. */
|
|
92
|
+
openFor(ruleId) {
|
|
93
|
+
return [...(this.openByRule.get(ruleId) ?? [])];
|
|
94
|
+
}
|
|
95
|
+
/** Every (ruleId, fingerprint) the agents confirmed still-open this run. */
|
|
96
|
+
allOpen() {
|
|
97
|
+
const out = [];
|
|
98
|
+
for (const [ruleId, set] of this.openByRule) {
|
|
99
|
+
for (const fingerprint of set)
|
|
100
|
+
out.push({ ruleId, fingerprint });
|
|
101
|
+
}
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
74
104
|
/** Record a review summary. Only the first call per ruleId is kept — subsequent
|
|
75
105
|
* calls return false. The runner uses `summaryFor()` to detect rules that
|
|
76
106
|
* never signed off (likely incomplete reviews). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../../src/mcp/aggregator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgF,MAAM,aAAa,CAAC;AAEvH,MAAM,OAAO,kBAAkB;IACrB,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IACtC,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC5C,iBAAiB,GAAG,IAAI,GAAG,EAAwB,CAAC;IACpD,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,mBAAmB,GAAG,IAAI,GAAG,EAA2B,CAAC;IACzD,aAAa,GAAG,IAAI,GAAG,EAAyB,CAAC;IACjD,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../../src/mcp/aggregator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgF,MAAM,aAAa,CAAC;AAEvH,MAAM,OAAO,kBAAkB;IACrB,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IACtC,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC5C,iBAAiB,GAAG,IAAI,GAAG,EAAwB,CAAC;IACpD,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,mBAAmB,GAAG,IAAI,GAAG,EAA2B,CAAC;IACzD,aAAa,GAAG,IAAI,GAAG,EAAyB,CAAC;IACjD,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAC;IACjE,qFAAqF;IAC7E,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC5C,YAAY,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC1C,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,cAAc,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEvD,KAAK,CAAC,QAA8B;QAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,YAAY,CAAC,QAAiC;QAC5C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,SAAS,CAAC,QAAoC;QAC5C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,QAA4B;QAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,GAAG,CAAC,OAAgB;QAClB,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,EAAE,KAAK,OAAO,CAAC,OAAO,IAAI,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3I,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;YACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAChD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC;gBAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iDAAiD,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6DAA6D;IAC7D,YAAY,CAAC,MAAc,EAAE,WAAmB,EAAE,MAAyB,EAAE,aAAa,GAAG,EAAE;QAC7F,MAAM,GAAG,GAAG,GAAG,MAAM,KAAK,WAAW,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACpD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,MAAM,UAAU,GAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QAC9E,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;YAC3B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzC,IAAI,CAAC;gBAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iDAAiD,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kGAAkG;IAClG,QAAQ,CAAC,MAAc,EAAE,WAAmB;QAC1C,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,MAAc;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,cAAc,CAAC,MAAc;QAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IAED,4EAA4E;IAC5E,OAAO,CAAC,MAAc;QACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,4EAA4E;IAC5E,OAAO;QACL,MAAM,GAAG,GAA8C,EAAE,CAAC;QAC1D,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC5C,KAAK,MAAM,WAAW,IAAI,GAAG;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;wDAEoD;IACpD,UAAU,CAAC,OAAsB;QAC/B,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACzD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtC,IAAI,CAAC;gBAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iDAAiD,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,MAAc;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED;8CAC0C;IAC1C,eAAe,CAAC,MAAc;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,GAAG;QACD,MAAM,GAAG,GAAc,EAAE,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3D,OAAO,GAAG,CAAC;IACb,CAAC;IAED,cAAc;QACZ,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACtE,OAAO,GAAG,CAAC;IACb,CAAC;IAED,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;mFAC+E;IAC/E,QAAQ,CAAC,KAAY;QACnB,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,OAAO,IAAI,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5G,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;YACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACpC,IAAI,CAAC;gBAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iDAAiD,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAY,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACjE,OAAO,GAAG,CAAC;IACb,CAAC;IAED,WAAW;QACT,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,GAAG,GAAG,GAAG;gBAAE,GAAG,GAAG,GAAG,CAAC;QAC3B,CAAC;QACD,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;CACF"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -7,7 +7,7 @@ import { mkdir, writeFile } from "node:fs/promises";
|
|
|
7
7
|
import { ensureFingerprint } from "../findings.js";
|
|
8
8
|
import { FindingsAggregator } from "./aggregator.js";
|
|
9
9
|
import { isAllowedRuleFileWrite, toRepoRelative } from "../scaffold-paths.js";
|
|
10
|
-
import { ReportFindingShape, REPORT_FINDING_DESCRIPTION, MarkResolvedShape, MARK_RESOLVED_DESCRIPTION, ReportReviewSummaryShape, REPORT_REVIEW_SUMMARY_DESCRIPTION, ReportCheckShape, REPORT_CHECK_DESCRIPTION, WriteRuleFileShape, WRITE_RULE_FILE_DESCRIPTION, } from "./tools.js";
|
|
10
|
+
import { ReportFindingShape, REPORT_FINDING_DESCRIPTION, MarkResolvedShape, MARK_RESOLVED_DESCRIPTION, MarkOpenShape, MARK_OPEN_DESCRIPTION, ReportReviewSummaryShape, REPORT_REVIEW_SUMMARY_DESCRIPTION, ReportCheckShape, REPORT_CHECK_DESCRIPTION, WriteRuleFileShape, WRITE_RULE_FILE_DESCRIPTION, } from "./tools.js";
|
|
11
11
|
export async function startSidecar(opts) {
|
|
12
12
|
const aggregator = new FindingsAggregator();
|
|
13
13
|
const authToken = randomBytes(24).toString("base64url");
|
|
@@ -119,6 +119,20 @@ function buildMcpServer(ruleId, ctx) {
|
|
|
119
119
|
],
|
|
120
120
|
};
|
|
121
121
|
});
|
|
122
|
+
server.registerTool("mark_finding_open", {
|
|
123
|
+
description: MARK_OPEN_DESCRIPTION,
|
|
124
|
+
inputSchema: MarkOpenShape,
|
|
125
|
+
}, async (args) => {
|
|
126
|
+
ctx.aggregator.markOpen(ruleId, args.fingerprint);
|
|
127
|
+
return {
|
|
128
|
+
content: [
|
|
129
|
+
{
|
|
130
|
+
type: "text",
|
|
131
|
+
text: `Confirmed ${args.fingerprint} is still open.`,
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
};
|
|
135
|
+
});
|
|
122
136
|
server.registerTool("report_check", {
|
|
123
137
|
description: REPORT_CHECK_DESCRIPTION,
|
|
124
138
|
inputSchema: ReportCheckShape,
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwE,MAAM,WAAW,CAAC;AAC/G,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,iCAAiC,EACjC,gBAAgB,EAChB,wBAAwB,EACxB,kBAAkB,EAClB,2BAA2B,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/tools.d.ts
CHANGED
|
@@ -49,7 +49,19 @@ export declare const MarkResolvedObject: z.ZodObject<{
|
|
|
49
49
|
reason?: "fixed" | "stale" | undefined;
|
|
50
50
|
}>;
|
|
51
51
|
export type MarkResolvedInput = z.infer<typeof MarkResolvedObject>;
|
|
52
|
-
export declare const MARK_RESOLVED_DESCRIPTION = "Mark a previously-reported finding as
|
|
52
|
+
export declare const MARK_RESOLVED_DESCRIPTION = "Mark a previously-reported finding as RESOLVED \u2014 one of the two ways to account for a prior finding.\nUse this when the current changes have addressed an issue you flagged on a previous run: pass the prior finding's fingerprint and a reason \u2014 `fixed` (the new commits address it) or `stale` (the rule's premise no longer holds: file deleted, etc.). The runner strikes the existing PR comment through.\nThis is REQUIRED accounting, not optional: every prior finding listed in your system prompt must be either resolved (this tool) or confirmed still-open (`mark_finding_open`, or `report_finding` with `priorFp` if it moved). A prior finding you leave untouched makes the whole review INCOMPLETE and it will be rejected.";
|
|
53
|
+
export declare const MarkOpenShape: {
|
|
54
|
+
readonly fingerprint: z.ZodString;
|
|
55
|
+
};
|
|
56
|
+
export declare const MarkOpenObject: z.ZodObject<{
|
|
57
|
+
readonly fingerprint: z.ZodString;
|
|
58
|
+
}, "strip", z.ZodTypeAny, {
|
|
59
|
+
fingerprint: string;
|
|
60
|
+
}, {
|
|
61
|
+
fingerprint: string;
|
|
62
|
+
}>;
|
|
63
|
+
export type MarkOpenInput = z.infer<typeof MarkOpenObject>;
|
|
64
|
+
export declare const MARK_OPEN_DESCRIPTION = "Confirm that a previously-reported finding is STILL OPEN and unaddressed \u2014 one of the two ways to account for a prior finding.\nUse this for each prior finding (listed in your system prompt) whose issue the current changes have NOT fixed and whose location is unchanged. It keeps the existing PR comment in place (no duplicate is posted) and keeps the finding counted as open.\nIf the finding is still open but the code MOVED to a different line, use `report_finding` with `priorFp` set to the prior fingerprint instead (so the comment can be repointed). If the finding has been fixed or no longer applies, use `mark_finding_resolved` instead.\nAccounting for EVERY prior finding (open or resolved) is REQUIRED \u2014 a review that leaves any prior finding untouched is rejected as incomplete, the same as a crashed review.";
|
|
53
65
|
export declare const ReportCheckShape: {
|
|
54
66
|
readonly path: z.ZodString;
|
|
55
67
|
readonly line: z.ZodOptional<z.ZodNumber>;
|
package/dist/mcp/tools.js
CHANGED
|
@@ -37,10 +37,20 @@ export const MarkResolvedShape = {
|
|
|
37
37
|
.describe("Why this finding is being marked resolved. `fixed` = the new commits address it. `stale` = the rule's premise no longer holds (file deleted, etc.). Defaults to `fixed`."),
|
|
38
38
|
};
|
|
39
39
|
export const MarkResolvedObject = z.object(MarkResolvedShape);
|
|
40
|
-
export const MARK_RESOLVED_DESCRIPTION = `Mark a previously-reported finding as
|
|
41
|
-
Use this when
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
export const MARK_RESOLVED_DESCRIPTION = `Mark a previously-reported finding as RESOLVED — one of the two ways to account for a prior finding.
|
|
41
|
+
Use this when the current changes have addressed an issue you flagged on a previous run: pass the prior finding's fingerprint and a reason — \`fixed\` (the new commits address it) or \`stale\` (the rule's premise no longer holds: file deleted, etc.). The runner strikes the existing PR comment through.
|
|
42
|
+
This is REQUIRED accounting, not optional: every prior finding listed in your system prompt must be either resolved (this tool) or confirmed still-open (\`mark_finding_open\`, or \`report_finding\` with \`priorFp\` if it moved). A prior finding you leave untouched makes the whole review INCOMPLETE and it will be rejected.`;
|
|
43
|
+
export const MarkOpenShape = {
|
|
44
|
+
fingerprint: z
|
|
45
|
+
.string()
|
|
46
|
+
.min(1)
|
|
47
|
+
.describe("The fingerprint of the prior finding you are confirming is STILL open and unaddressed."),
|
|
48
|
+
};
|
|
49
|
+
export const MarkOpenObject = z.object(MarkOpenShape);
|
|
50
|
+
export const MARK_OPEN_DESCRIPTION = `Confirm that a previously-reported finding is STILL OPEN and unaddressed — one of the two ways to account for a prior finding.
|
|
51
|
+
Use this for each prior finding (listed in your system prompt) whose issue the current changes have NOT fixed and whose location is unchanged. It keeps the existing PR comment in place (no duplicate is posted) and keeps the finding counted as open.
|
|
52
|
+
If the finding is still open but the code MOVED to a different line, use \`report_finding\` with \`priorFp\` set to the prior fingerprint instead (so the comment can be repointed). If the finding has been fixed or no longer applies, use \`mark_finding_resolved\` instead.
|
|
53
|
+
Accounting for EVERY prior finding (open or resolved) is REQUIRED — a review that leaves any prior finding untouched is rejected as incomplete, the same as a crashed review.`;
|
|
44
54
|
export const ReportCheckShape = {
|
|
45
55
|
path: z
|
|
46
56
|
.string()
|
package/dist/mcp/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,UAAU,CAAC;SAChB,QAAQ,CAAC,0BAA0B,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IACrF,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,4EAA4E,CAAC;IACzF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC/E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IAC5E,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,qOAAqO,CACtO;CACK,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAGhE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,6DAA6D,CAAC;IAC1E,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACxB,QAAQ,EAAE;SACV,QAAQ,CACP,0KAA0K,CAC3K;CACK,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAG9D,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,10 @@ export function buildSystemPrompt(args) {
|
|
|
5
5
|
return `You are a focused code reviewer for the rule "${args.ruleId}".
|
|
6
6
|
|
|
7
7
|
You evaluate the changes ONLY through the lens of the rules in the <rules> block below. If the changes are unrelated to those rules, you must STILL call \`mcp__revu__report_review_summary\` to sign off — see the REQUIRED section at the bottom.
|
|
8
|
+
|
|
9
|
+
# Precedence
|
|
10
|
+
|
|
11
|
+
When the rule file in the <rules> block below contradicts something in this system prompt, the rule file wins. Operators author rule files knowing how reviews work in their codebase; treat the rule's own scope, severity guidance, and inspection instructions as authoritative whenever they're explicit. The system-prompt defaults apply only where the rule is silent.
|
|
8
12
|
${fileScopeBlock}
|
|
9
13
|
# How to inspect the changes
|
|
10
14
|
|
|
@@ -49,8 +53,8 @@ Don't fabricate checks. Each call should reflect something you actually looked a
|
|
|
49
53
|
|
|
50
54
|
Before stopping, you MUST call \`mcp__revu__report_review_summary\` EXACTLY ONCE as your final action. This is non-negotiable: it is the runner's only way to distinguish a real "I reviewed this and it's clean" from "the agent silently exited / never reached the MCP / wrote findings as prose instead of tool calls". A review that ends without this call is flagged as a possibly-incomplete review.
|
|
51
55
|
|
|
52
|
-
Call it after all your \`report_finding\`, \`mark_finding_resolved\`, and \`report_check\` calls. Pass:
|
|
53
|
-
- outcome: "pass" if you reported zero findings via \`report_finding\` for this rule; "concerns" if you reported one or more. (
|
|
56
|
+
Call it after all your \`report_finding\`, \`mark_finding_open\`, \`mark_finding_resolved\`, and \`report_check\` calls — and only once you have accounted for every prior finding listed below. Pass:
|
|
57
|
+
- outcome: "pass" if you reported zero findings via \`report_finding\` for this rule; "concerns" if you reported one or more. (Confirming a prior finding still-open, resolving one, and recorded checks don't by themselves change the outcome — only newly reported findings flip it to "concerns". A prior finding you confirm still-open via \`mark_finding_open\` is still an open problem, so "concerns" is appropriate when any remain.)
|
|
54
58
|
- checked: a concrete description of what you actually examined to reach your conclusion. Name specific files, functions, or behaviours — not generic phrases like "the diff" or "the changes". Good: "src/runner.ts lines 95-160: the new filePatterns guard branch and its three failure paths; plus the corresponding test cases in tests/runner.test.ts." Bad: "I looked at the changes."
|
|
55
59
|
- rationale: 1-3 sentences tying what you checked to why the outcome holds. For "pass", state which aspect of the rule the code satisfies and on what evidence — not just "no issues found". For "concerns", summarise any context not captured in the individual findings.
|
|
56
60
|
|
|
@@ -62,6 +66,7 @@ Do the summary call LAST, then stop.
|
|
|
62
66
|
|
|
63
67
|
- Do NOT modify any files.
|
|
64
68
|
- Do NOT report findings outside the scope of the <rules> below.
|
|
69
|
+
- Every finding must be *caused by* the diff or *required as a consequence of it*. The PR is the lens, not the codebase. Most of the time that means the finding lives on a line the diff touches; occasionally it means an untouched file that the diff just broke, an out-of-diff call site that needs updating to match a signature change, or pre-existing code whose contract the diff has now invalidated. The test is "would this finding still apply if the diff were reverted?" — if yes, it's a pre-existing issue, not a finding for this review. You may \`Read\`/\`Grep\` out-of-diff files to verify either an in-diff finding or a downstream impact; you may not file findings about unrelated pre-existing code. (A rule file may explicitly broaden this scope — see precedence note above.)
|
|
65
70
|
- Do NOT include a final assistant-text summary — put your sign-off in the \`report_review_summary\` tool call instead. The runner doesn't read your text output.
|
|
66
71
|
- Do NOT delegate to subagents (no \`task\` / \`Task\` tool, no agent dispatch). Run every \`git\`, \`Read\`, \`Grep\`, \`Glob\` call yourself in this session — subagent calls run silently to the runner's progress log, give the impression of a stuck agent, and cost extra tokens for no review benefit. The single rule scope is small enough to review directly.
|
|
67
72
|
- Do NOT skip the \`report_review_summary\` call. Even when you find nothing and the rule is irrelevant, the call is required.
|
|
@@ -107,18 +112,20 @@ function renderPriorFindingsBlock(args) {
|
|
|
107
112
|
...(f.category !== undefined ? { category: f.category } : {}),
|
|
108
113
|
}));
|
|
109
114
|
return `
|
|
110
|
-
# Previously reported findings (this rule)
|
|
115
|
+
# Previously reported findings (this rule) — YOU MUST ACCOUNT FOR EVERY ONE
|
|
111
116
|
|
|
112
117
|
A prior run of THIS rule, against commit \`${oldSha}\`, reported the findings below. The current target is ${headHint}. Use \`git diff ${oldSha}..${args.reviewTarget.mode === "ref-range" ? args.reviewTarget.head : "HEAD"}\` (or any narrower diff) to see what's changed since then.
|
|
113
118
|
|
|
114
|
-
For EACH prior finding,
|
|
119
|
+
**This is a hard requirement.** For EACH prior finding listed, you MUST take exactly one of the explicit actions below. Staying silent on a prior finding is NOT an option — a prior finding you neither confirm nor resolve makes your review INCOMPLETE, and the runner REJECTS the whole review for this rule (it counts as a failed review, exactly like crashing). Go through the list one at a time and, for each, actually look at the current code before deciding:
|
|
120
|
+
|
|
121
|
+
- **Still a problem, same location** → call \`mcp__revu__mark_finding_open\` with the prior \`fingerprint\`. (Keeps the existing comment; no duplicate is posted.)
|
|
122
|
+
- **Still a problem, but the code moved** (line shifted / relocated) → call \`mcp__revu__report_finding\` at the NEW location with \`priorFp\` set to the prior fingerprint.
|
|
123
|
+
- **Fixed** — the current changes address it → call \`mcp__revu__mark_finding_resolved\` with the prior \`fingerprint\` and \`reason="fixed"\`.
|
|
124
|
+
- **No longer applicable** — file deleted, the rule's premise no longer holds → call \`mcp__revu__mark_finding_resolved\` with the prior \`fingerprint\` and \`reason="stale"\`.
|
|
115
125
|
|
|
116
|
-
|
|
117
|
-
- **No longer applicable** — the file was deleted, the rule's premise no longer holds, etc. Call \`mcp__revu__mark_finding_resolved\` with \`reason="stale"\`.
|
|
118
|
-
- **Still open at the same location** — DO NOTHING. The runner keeps the prior open status; do NOT re-emit a \`report_finding\` for it.
|
|
119
|
-
- **Still open but at a different location** (line moved, code shifted) — call \`mcp__revu__report_finding\` for the NEW location with \`priorFp\` set to the prior fingerprint.
|
|
126
|
+
Do NOT skip any, and do NOT guess "probably still fine" — inspect the relevant code so your call is evidence-based. The whole point of these calls is to PROVE you re-examined every prior finding against the current code. The runner cross-checks: any prior fingerprint with no \`mark_finding_open\` / \`mark_finding_resolved\` / \`report_finding(priorFp)\` is unaccounted, and the review fails.
|
|
120
127
|
|
|
121
|
-
Then,
|
|
128
|
+
Then, separately, scan the diff for GENUINELY new problems (not in the prior list) and \`report_finding\` for those with \`priorFp\` unset.
|
|
122
129
|
|
|
123
130
|
## Prior findings JSON
|
|
124
131
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-system.js","sourceRoot":"","sources":["../../src/prompts/review-system.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,IAOjC;IACC,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE/D,OAAO,iDAAiD,IAAI,CAAC,MAAM
|
|
1
|
+
{"version":3,"file":"review-system.js","sourceRoot":"","sources":["../../src/prompts/review-system.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.js
CHANGED
|
@@ -64,6 +64,26 @@ export async function run(cwd, config, hooks = {}, inputs = {}) {
|
|
|
64
64
|
const concurrency = config.concurrency ?? Math.min(8, rules.length);
|
|
65
65
|
const limit = createLimiter(concurrency);
|
|
66
66
|
const ruleResults = [];
|
|
67
|
+
// A prior finding is "accounted for" this run when its rule explicitly confirmed it
|
|
68
|
+
// still-open (mark_finding_open, or a report_finding carrying its fingerprint via `priorFp`
|
|
69
|
+
// or re-reported at the same fingerprint) or resolved it (mark_finding_resolved). Anything
|
|
70
|
+
// left untouched means the agent didn't demonstrably re-examine it — the review is incomplete
|
|
71
|
+
// and must fail loudly rather than silently dropping the finding or carrying it forever.
|
|
72
|
+
const unaccountedPriors = (ruleId, priors) => {
|
|
73
|
+
if (priors.length === 0)
|
|
74
|
+
return [];
|
|
75
|
+
const accounted = new Set();
|
|
76
|
+
for (const r of sidecar.aggregator.resolutionsFor(ruleId))
|
|
77
|
+
accounted.add(r.fingerprint);
|
|
78
|
+
for (const fp of sidecar.aggregator.openFor(ruleId))
|
|
79
|
+
accounted.add(fp);
|
|
80
|
+
for (const f of sidecar.aggregator.findingsFor(ruleId)) {
|
|
81
|
+
if (f.priorFp)
|
|
82
|
+
accounted.add(f.priorFp);
|
|
83
|
+
accounted.add(f.fingerprint);
|
|
84
|
+
}
|
|
85
|
+
return priors.filter((p) => !accounted.has(p.fingerprint));
|
|
86
|
+
};
|
|
67
87
|
// Runs a single rule end-to-end (pre-flight file filtering + provider) and returns its
|
|
68
88
|
// result. Pure w.r.t. ruleResults — the caller pushes and fires onRuleEnd.
|
|
69
89
|
const executeRule = async (rule) => {
|
|
@@ -110,12 +130,27 @@ export async function run(cwd, config, hooks = {}, inputs = {}) {
|
|
|
110
130
|
...(priorHeadSha ? { priorHeadSha } : {}),
|
|
111
131
|
...(rule.filePatterns ? { filePatterns: rule.filePatterns } : {}),
|
|
112
132
|
});
|
|
133
|
+
// Enforce prior-finding accounting: a clean run that ignored any prior finding
|
|
134
|
+
// is an incomplete review and fails, so a coding agent can't merge past findings
|
|
135
|
+
// the reviewer never re-examined.
|
|
136
|
+
let ok = result.ok;
|
|
137
|
+
let errorMessage = result.errorMessage;
|
|
138
|
+
if (result.ok && !result.timedOut && priorForRule && priorForRule.length > 0) {
|
|
139
|
+
const missing = unaccountedPriors(result.ruleId, priorForRule);
|
|
140
|
+
if (missing.length > 0) {
|
|
141
|
+
ok = false;
|
|
142
|
+
errorMessage =
|
|
143
|
+
`incomplete review: ${missing.length} prior finding(s) left unaccounted — every prior finding must be ` +
|
|
144
|
+
`confirmed still-open (mark_finding_open / report_finding) or resolved (mark_finding_resolved). ` +
|
|
145
|
+
`Unaccounted: ${missing.map((f) => f.fingerprint).join(", ")}`;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
113
148
|
return {
|
|
114
|
-
id: result.ruleId, path: rule.relPath, ok
|
|
149
|
+
id: result.ruleId, path: rule.relPath, ok, durationMs: result.durationMs,
|
|
115
150
|
findingCount: sidecar.aggregator.countFor(result.ruleId),
|
|
116
151
|
summaryCount: sidecar.aggregator.summaryCountFor(result.ruleId),
|
|
117
152
|
checkCount: sidecar.aggregator.checkCountFor(result.ruleId),
|
|
118
|
-
...(
|
|
153
|
+
...(errorMessage ? { errorMessage } : {}),
|
|
119
154
|
...(result.timedOut ? { timedOut: true } : {}),
|
|
120
155
|
...(result.diagnostics ? { diagnostics: result.diagnostics } : {}),
|
|
121
156
|
};
|
|
@@ -170,6 +205,21 @@ export async function run(cwd, config, hooks = {}, inputs = {}) {
|
|
|
170
205
|
await sidecar.shutdown();
|
|
171
206
|
}
|
|
172
207
|
const findings = sidecar.aggregator.all();
|
|
208
|
+
// Re-inject prior findings the agents confirmed still-open via `mark_finding_open`
|
|
209
|
+
// (those that weren't separately re-reported). They aren't fresh findings, but they
|
|
210
|
+
// are still open, so they belong in the report — the exit code and the carried-forward
|
|
211
|
+
// cache must reflect that the issue persists.
|
|
212
|
+
const currentHeadSha = resolved.headSha ?? priorHeadSha ?? "";
|
|
213
|
+
const presentFps = new Set(findings.map((f) => f.fingerprint));
|
|
214
|
+
for (const { ruleId, fingerprint } of sidecar.aggregator.allOpen()) {
|
|
215
|
+
if (presentFps.has(fingerprint))
|
|
216
|
+
continue;
|
|
217
|
+
const prior = priorByRule.get(ruleId)?.find((f) => f.fingerprint === fingerprint);
|
|
218
|
+
if (!prior)
|
|
219
|
+
continue;
|
|
220
|
+
findings.push({ ...prior, lastSeenSha: currentHeadSha });
|
|
221
|
+
presentFps.add(fingerprint);
|
|
222
|
+
}
|
|
173
223
|
const resolutions = sidecar.aggregator.allResolutions();
|
|
174
224
|
const summaries = sidecar.aggregator
|
|
175
225
|
.allSummaries()
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|