secondpair 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +26 -3
  2. package/dist/bitbucket/auth.d.ts +13 -0
  3. package/dist/bitbucket/auth.js +37 -0
  4. package/dist/bitbucket/auth.js.map +1 -0
  5. package/dist/bitbucket/comments.d.ts +20 -14
  6. package/dist/bitbucket/comments.js +59 -45
  7. package/dist/bitbucket/comments.js.map +1 -1
  8. package/dist/cli.js +104 -43
  9. package/dist/cli.js.map +1 -1
  10. package/dist/config.d.ts +11 -0
  11. package/dist/config.js +68 -4
  12. package/dist/config.js.map +1 -1
  13. package/dist/diff/github.d.ts +2 -0
  14. package/dist/diff/github.js +10 -0
  15. package/dist/diff/github.js.map +1 -1
  16. package/dist/finding-id.d.ts +5 -3
  17. package/dist/finding-id.js +18 -11
  18. package/dist/finding-id.js.map +1 -1
  19. package/dist/github/auth.d.ts +4 -0
  20. package/dist/github/auth.js +16 -0
  21. package/dist/github/auth.js.map +1 -0
  22. package/dist/github/comments.d.ts +11 -2
  23. package/dist/github/comments.js +30 -4
  24. package/dist/github/comments.js.map +1 -1
  25. package/dist/gitlab/auth.d.ts +11 -0
  26. package/dist/gitlab/auth.js +22 -0
  27. package/dist/gitlab/auth.js.map +1 -0
  28. package/dist/gitlab/comments.d.ts +10 -9
  29. package/dist/gitlab/comments.js +34 -27
  30. package/dist/gitlab/comments.js.map +1 -1
  31. package/dist/host.d.ts +3 -0
  32. package/dist/host.js +15 -0
  33. package/dist/host.js.map +1 -0
  34. package/dist/llm/prompt.d.ts +21 -0
  35. package/dist/llm/prompt.js +57 -1
  36. package/dist/llm/prompt.js.map +1 -1
  37. package/dist/report/cli.d.ts +8 -3
  38. package/dist/report/cli.js +11 -1
  39. package/dist/report/cli.js.map +1 -1
  40. package/dist/report/json.d.ts +5 -0
  41. package/dist/report/json.js +2 -0
  42. package/dist/report/json.js.map +1 -1
  43. package/dist/retry.d.ts +1 -0
  44. package/dist/retry.js +16 -0
  45. package/dist/retry.js.map +1 -0
  46. package/dist/review-state.d.ts +16 -0
  47. package/dist/review-state.js +24 -0
  48. package/dist/review-state.js.map +1 -0
  49. package/dist/review.d.ts +29 -0
  50. package/dist/review.js +165 -29
  51. package/dist/review.js.map +1 -1
  52. package/dist/specialized-review.d.ts +29 -0
  53. package/dist/specialized-review.js +50 -0
  54. package/dist/specialized-review.js.map +1 -0
  55. package/dist/types.d.ts +18 -1
  56. package/package.json +3 -3
package/README.md CHANGED
@@ -29,8 +29,10 @@ npx secondpair review --base main # review branch vs main
29
29
  ```
30
30
 
31
31
  Nothing to configure to get useful output — defaults are sane
32
- (`fail_on: high`, `min_confidence: 0.5`). Add `.pr-review.yml` only when you
33
- want to change them (see [Config](#config)).
32
+ (`fail_on: off`, `min_confidence: 0.5`). CI never fails on findings until you
33
+ opt in (`fail_on: high` or `--fail-on high`); until then it's report/post
34
+ only. Add `.pr-review.yml` only when you want to change them (see
35
+ [Config](#config)).
34
36
 
35
37
  ## Reviewing a real PR (posting comments + CI gate)
36
38
 
@@ -76,11 +78,12 @@ before posting, on top of run-to-run fingerprint reconciliation.
76
78
  ## Config (`.pr-review.yml`, optional)
77
79
 
78
80
  ```yaml
79
- fail_on: high # critical|high|medium|low|info — CI exit-1 threshold
81
+ fail_on: off # critical|high|medium|low|info|off — CI exit-1 threshold; default "off" never fails, still posts/reports
80
82
  min_confidence: 0.5
81
83
  ignore: ["**/*.generated.ts", "vendor/**"]
82
84
  context_token_budget: 8000 # repocairn context injected per chunk
83
85
  context_snippets: 3
86
+ signal_detector: true # deterministic hook/error-handling/control-flow scan, injected as prompt context
84
87
  categories: # turn any off
85
88
  bug: true
86
89
  security: true
@@ -92,12 +95,32 @@ limits:
92
95
  max_findings_per_file: 5
93
96
  max_total: 30
94
97
  self_critique: false # extra LLM pass that only drops findings, never adds
98
+ huge_pr_token_threshold: 120000 # diff tokens above which review switches to critical/high-only + split suggestion; null disables
99
+ parallel_agents: true # split each chunk into concurrent security/correctness/quality lens calls (more LLM calls, specialized findings); set false for one sequential call
95
100
  redact_secrets: true # strip secrets from diff/context before they reach the LLM
96
101
  redact_patterns: [] # extra regexes, on top of built-in AWS/GitHub-token/PEM/etc
97
102
  write_suppressions: false # persist "won't fix" replies to .pr-review-suppressions.yml
98
103
  custom_instructions: ""
104
+ custom_instructions_file: ".pr-review-instructions.md" # optional guide file (any name/extension — .md, .mdc, ...); if it exists, its content REPLACES custom_instructions above
99
105
  ```
100
106
 
107
+ Prefer a standalone file over the inline `custom_instructions` string once your
108
+ rules grow past a line or two — easier to edit/review, and each
109
+ project/company can keep its own review guide (house style, focus areas,
110
+ things to always flag) without touching the YAML. None of this is mandatory
111
+ — missing files just fall through to the next source. Precedence (highest
112
+ first):
113
+
114
+ 1. `.secondpair/instructions.mdc` or `.secondpair/instructions.md` — same
115
+ convention as `.claude`/`.cursor`/`.repocairn`. Nothing to configure, just
116
+ drop the file in.
117
+ 2. `custom_instructions_file` (default `.pr-review-instructions.md`)
118
+ 3. inline `custom_instructions` above
119
+
120
+ This only adds to the "CUSTOM REVIEW INSTRUCTIONS" prompt section — it never
121
+ replaces secondpair's own review guidelines (what counts as a finding,
122
+ severity, output format), only layers project-specific guidance on top.
123
+
101
124
  Suppress a finding permanently: reply "won't fix" (or react 👎) on its PR
102
125
  comment, or hand-edit `.pr-review-suppressions.yml` with the finding id
103
126
  from the report.
@@ -0,0 +1,13 @@
1
+ export interface BbRef {
2
+ workspace: string;
3
+ repoSlug: string;
4
+ prId: number;
5
+ }
6
+ /**
7
+ * Resolve Bitbucket Cloud auth from the environment:
8
+ * BITBUCKET_TOKEN / BITBUCKET_ACCESS_TOKEN -> Bearer (repository access token)
9
+ * BITBUCKET_USERNAME + BITBUCKET_APP_PASSWORD -> Basic (app password)
10
+ */
11
+ export declare function resolveBbAuthHeader(): string;
12
+ /** Resolve workspace/repo/PR id from flags or Bitbucket Pipelines env vars. */
13
+ export declare function resolveBbRef(repoSlug: string | undefined, pr: number | undefined): BbRef;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Resolve Bitbucket Cloud auth from the environment:
3
+ * BITBUCKET_TOKEN / BITBUCKET_ACCESS_TOKEN -> Bearer (repository access token)
4
+ * BITBUCKET_USERNAME + BITBUCKET_APP_PASSWORD -> Basic (app password)
5
+ */
6
+ export function resolveBbAuthHeader() {
7
+ const env = process.env;
8
+ const token = env.BITBUCKET_TOKEN || env.BITBUCKET_ACCESS_TOKEN;
9
+ if (token)
10
+ return `Bearer ${token}`;
11
+ if (env.BITBUCKET_USERNAME && env.BITBUCKET_APP_PASSWORD) {
12
+ const basic = Buffer.from(`${env.BITBUCKET_USERNAME}:${env.BITBUCKET_APP_PASSWORD}`).toString("base64");
13
+ return `Basic ${basic}`;
14
+ }
15
+ throw new Error("Bitbucket auth required: set BITBUCKET_TOKEN (repository access token with pullrequest:write) " +
16
+ "or BITBUCKET_USERNAME + BITBUCKET_APP_PASSWORD.");
17
+ }
18
+ /** Resolve workspace/repo/PR id from flags or Bitbucket Pipelines env vars. */
19
+ export function resolveBbRef(repoSlug, pr) {
20
+ const env = process.env;
21
+ let workspace;
22
+ let slug;
23
+ if (repoSlug) {
24
+ [workspace, slug] = repoSlug.split("/");
25
+ }
26
+ else {
27
+ workspace = env.BITBUCKET_WORKSPACE;
28
+ slug = env.BITBUCKET_REPO_SLUG;
29
+ }
30
+ const prId = pr ?? (env.BITBUCKET_PR_ID ? parseInt(env.BITBUCKET_PR_ID, 10) : undefined);
31
+ if (!workspace || !slug || prId == null || Number.isNaN(prId)) {
32
+ throw new Error("Bitbucket PR not identified. Pass --repo workspace/repo_slug and --pr <id>, " +
33
+ "or run inside Bitbucket Pipelines (BITBUCKET_WORKSPACE / BITBUCKET_REPO_SLUG / BITBUCKET_PR_ID).");
34
+ }
35
+ return { workspace, repoSlug: slug, prId };
36
+ }
37
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/bitbucket/auth.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,sBAAsB,CAAC;IAChE,IAAI,KAAK;QAAE,OAAO,UAAU,KAAK,EAAE,CAAC;IACpC,IAAI,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC,sBAAsB,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAC3F,QAAQ,CACT,CAAC;QACF,OAAO,SAAS,KAAK,EAAE,CAAC;IAC1B,CAAC;IACD,MAAM,IAAI,KAAK,CACb,gGAAgG;QAC9F,iDAAiD,CACpD,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,QAA4B,EAAE,EAAsB;IAC/E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,IAAI,SAA6B,CAAC;IAClC,IAAI,IAAwB,CAAC;IAC7B,IAAI,QAAQ,EAAE,CAAC;QACb,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,GAAG,CAAC,mBAAmB,CAAC;QACpC,IAAI,GAAG,GAAG,CAAC,mBAAmB,CAAC;IACjC,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzF,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACb,8EAA8E;YAC5E,kGAAkG,CACrG,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC7C,CAAC"}
@@ -1,19 +1,11 @@
1
+ import { type ReviewState } from "../review-state.js";
1
2
  import type { Finding, ReviewResult } from "../types.js";
2
- export interface BbRef {
3
- workspace: string;
4
- repoSlug: string;
5
- prId: number;
6
- }
7
- /**
8
- * Resolve Bitbucket Cloud auth from the environment:
9
- * BITBUCKET_TOKEN / BITBUCKET_ACCESS_TOKEN -> Bearer (repository access token)
10
- * BITBUCKET_USERNAME + BITBUCKET_APP_PASSWORD -> Basic (app password)
11
- */
12
- export declare function resolveBbAuthHeader(): string;
13
- /** Resolve workspace/repo/PR id from flags or Bitbucket Pipelines env vars. */
14
- export declare function resolveBbRef(repoSlug: string | undefined, pr: number | undefined): BbRef;
3
+ import { type BbRef } from "./auth.js";
15
4
  /** Fetch the unified diff of a Bitbucket Cloud pull request. */
16
5
  export declare function getBbPrDiff(ref: BbRef): Promise<string>;
6
+ export declare function getBbPrHeadSha(ref: BbRef): Promise<string>;
7
+ /** Paths changed between two commits (diffstat, paginated). */
8
+ export declare function listBbChangedFiles(ref: BbRef, fromSha: string, toSha: string): Promise<Set<string>>;
17
9
  interface BbComment {
18
10
  id?: number;
19
11
  content?: {
@@ -29,21 +21,35 @@ interface BbComment {
29
21
  }
30
22
  export declare function listBbComments(ref: BbRef): Promise<BbComment[]>;
31
23
  export declare function listBbFindingIds(ref: BbRef): Promise<Set<string>>;
24
+ /**
25
+ * Recover the full review state (head sha + every active finding) embedded
26
+ * in the most recent summary comment — the source of truth for soft-match
27
+ * reconciliation and incremental (changed-files-only) re-review, since no
28
+ * local report file survives between fresh Pipelines checkouts.
29
+ */
30
+ export declare function getBbReviewState(ref: BbRef): Promise<ReviewState | null>;
32
31
  export declare function listBbWontFixFindingIds(ref: BbRef): Promise<Set<string>>;
33
32
  /** Bitbucket Cloud exposes no API for resolving pull-request comment threads. */
34
33
  export declare function resolveBbCommentsForIds(_ref: BbRef, _ids: Iterable<string>, log?: (msg: string) => void): Promise<number>;
35
34
  /** Bitbucket markdown has no GitHub suggestion blocks — render fixes as code fences. */
36
35
  export declare function formatBbCommentBody(f: Finding): string;
37
- export declare function formatBbSummaryBody(result: ReviewResult, failed: boolean): string;
36
+ export declare function formatBbSummaryBody(result: ReviewResult & {
37
+ highLevelReview?: boolean;
38
+ }, failed: boolean, headSha?: string): string;
38
39
  export interface PostBbReviewOptions {
39
40
  ref: BbRef;
40
41
  result: ReviewResult;
41
42
  failed: boolean;
43
+ /** Current PR head sha, embedded in the summary comment for the next incremental review. */
44
+ headSha?: string;
42
45
  log?: (msg: string) => void;
43
46
  }
44
47
  /**
45
48
  * Post findings to a Bitbucket Cloud PR: one summary comment plus one inline
46
49
  * comment per *new* finding. Persistent findings (same pr-review-id) are skipped.
50
+ * The summary is re-posted every run (not just the first) so its embedded
51
+ * review state — head sha + every active finding — stays current for the
52
+ * next run's incremental diff and reconciliation.
47
53
  */
48
54
  export declare function postBbReview(opts: PostBbReviewOptions): Promise<void>;
49
55
  export {};
@@ -1,43 +1,9 @@
1
1
  import { collectIdsFromBodies, embedFindingId, parseFindingId } from "../finding-id.js";
2
2
  import { AGENT_MARKER, SEVERITY_EMOJI } from "../github/comments.js";
3
+ import { embedReviewState, parseReviewState } from "../review-state.js";
3
4
  import { collectWontFixIds } from "../suppress-signals.js";
5
+ import { resolveBbAuthHeader } from "./auth.js";
4
6
  const API = "https://api.bitbucket.org/2.0";
5
- /**
6
- * Resolve Bitbucket Cloud auth from the environment:
7
- * BITBUCKET_TOKEN / BITBUCKET_ACCESS_TOKEN -> Bearer (repository access token)
8
- * BITBUCKET_USERNAME + BITBUCKET_APP_PASSWORD -> Basic (app password)
9
- */
10
- export function resolveBbAuthHeader() {
11
- const env = process.env;
12
- const token = env.BITBUCKET_TOKEN || env.BITBUCKET_ACCESS_TOKEN;
13
- if (token)
14
- return `Bearer ${token}`;
15
- if (env.BITBUCKET_USERNAME && env.BITBUCKET_APP_PASSWORD) {
16
- const basic = Buffer.from(`${env.BITBUCKET_USERNAME}:${env.BITBUCKET_APP_PASSWORD}`).toString("base64");
17
- return `Basic ${basic}`;
18
- }
19
- throw new Error("Bitbucket auth required: set BITBUCKET_TOKEN (repository access token with pullrequest:write) " +
20
- "or BITBUCKET_USERNAME + BITBUCKET_APP_PASSWORD.");
21
- }
22
- /** Resolve workspace/repo/PR id from flags or Bitbucket Pipelines env vars. */
23
- export function resolveBbRef(repoSlug, pr) {
24
- const env = process.env;
25
- let workspace;
26
- let slug;
27
- if (repoSlug) {
28
- [workspace, slug] = repoSlug.split("/");
29
- }
30
- else {
31
- workspace = env.BITBUCKET_WORKSPACE;
32
- slug = env.BITBUCKET_REPO_SLUG;
33
- }
34
- const prId = pr ?? (env.BITBUCKET_PR_ID ? parseInt(env.BITBUCKET_PR_ID, 10) : undefined);
35
- if (!workspace || !slug || prId == null || Number.isNaN(prId)) {
36
- throw new Error("Bitbucket PR not identified. Pass --repo workspace/repo_slug and --pr <id>, " +
37
- "or run inside Bitbucket Pipelines (BITBUCKET_WORKSPACE / BITBUCKET_REPO_SLUG / BITBUCKET_PR_ID).");
38
- }
39
- return { workspace, repoSlug: slug, prId };
40
- }
41
7
  async function bbFetch(url, init = {}) {
42
8
  const res = await fetch(url, {
43
9
  ...init,
@@ -59,6 +25,31 @@ export async function getBbPrDiff(ref) {
59
25
  const res = await bbFetch(`${API}/repositories/${ref.workspace}/${ref.repoSlug}/pullrequests/${ref.prId}/diff`, { headers: { accept: "text/plain" } });
60
26
  return res.text();
61
27
  }
28
+ export async function getBbPrHeadSha(ref) {
29
+ const res = await bbFetch(`${API}/repositories/${ref.workspace}/${ref.repoSlug}/pullrequests/${ref.prId}`);
30
+ const data = (await res.json());
31
+ const sha = data.source?.commit?.hash;
32
+ if (!sha)
33
+ throw new Error("Bitbucket PR response had no source commit hash.");
34
+ return sha;
35
+ }
36
+ /** Paths changed between two commits (diffstat, paginated). */
37
+ export async function listBbChangedFiles(ref, fromSha, toSha) {
38
+ const paths = new Set();
39
+ let url = `${API}/repositories/${ref.workspace}/${ref.repoSlug}/diffstat/${fromSha}..${toSha}?pagelen=100`;
40
+ while (url) {
41
+ const res = await bbFetch(url);
42
+ const page = (await res.json());
43
+ for (const v of page.values ?? []) {
44
+ if (v.new?.path)
45
+ paths.add(v.new.path);
46
+ if (v.old?.path)
47
+ paths.add(v.old.path);
48
+ }
49
+ url = page.next ?? null;
50
+ }
51
+ return paths;
52
+ }
62
53
  export async function listBbComments(ref) {
63
54
  const comments = [];
64
55
  let url = `${API}/repositories/${ref.workspace}/${ref.repoSlug}/pullrequests/${ref.prId}/comments?pagelen=100`;
@@ -74,6 +65,22 @@ export async function listBbFindingIds(ref) {
74
65
  const existing = await listBbComments(ref);
75
66
  return collectIdsFromBodies(existing.filter((c) => c.content?.raw?.includes(AGENT_MARKER)).map((c) => c.content?.raw ?? ""));
76
67
  }
68
+ /**
69
+ * Recover the full review state (head sha + every active finding) embedded
70
+ * in the most recent summary comment — the source of truth for soft-match
71
+ * reconciliation and incremental (changed-files-only) re-review, since no
72
+ * local report file survives between fresh Pipelines checkouts.
73
+ */
74
+ export async function getBbReviewState(ref) {
75
+ const existing = await listBbComments(ref);
76
+ const summaries = existing.filter((c) => c.content?.raw?.includes(AGENT_MARKER) && c.inline == null);
77
+ for (let i = summaries.length - 1; i >= 0; i--) {
78
+ const state = parseReviewState(summaries[i].content?.raw ?? "");
79
+ if (state)
80
+ return state;
81
+ }
82
+ return null;
83
+ }
77
84
  export async function listBbWontFixFindingIds(ref) {
78
85
  const comments = await listBbComments(ref);
79
86
  const byId = new Map(comments.flatMap((comment) => (comment.id == null ? [] : [[comment.id, comment]])));
@@ -113,7 +120,7 @@ export function formatBbCommentBody(f) {
113
120
  body = embedFindingId(body, f.id);
114
121
  return body;
115
122
  }
116
- export function formatBbSummaryBody(result, failed) {
123
+ export function formatBbSummaryBody(result, failed, headSha) {
117
124
  const counts = {};
118
125
  for (const f of result.findings)
119
126
  counts[f.severity] = (counts[f.severity] ?? 0) + 1;
@@ -122,24 +129,34 @@ export function formatBbSummaryBody(result, failed) {
122
129
  : Object.entries(counts)
123
130
  .map(([sev, n]) => `${SEVERITY_EMOJI[sev]} ${n} ${sev}`)
124
131
  .join(" · ");
132
+ const highLevelLine = result.highLevelReview
133
+ ? "\n⚠️ **Large diff** — high-level review only (critical/high severity). Consider splitting this PR."
134
+ : "";
125
135
  const recon = result.reconciliation;
126
136
  const reconLine = recon
127
137
  ? `\n_Lifecycle:_ ${recon.new.length} new · ${recon.persistent.length} persistent · ${recon.resolved.length} resolved · ${recon.suppressed.length} suppressed`
128
138
  : "";
129
- return [
139
+ let body = [
130
140
  "## PR Review Agent",
131
141
  "",
132
142
  result.summary.trim(),
133
143
  "",
134
144
  countLine,
145
+ highLevelLine,
135
146
  reconLine,
136
147
  failed ? "\n❌ **Check failed**: findings at or above the configured severity threshold." : "",
137
148
  AGENT_MARKER,
138
149
  ].join("\n");
150
+ if (headSha)
151
+ body = embedReviewState(body, { headSha, findings: result.findings });
152
+ return body;
139
153
  }
140
154
  /**
141
155
  * Post findings to a Bitbucket Cloud PR: one summary comment plus one inline
142
156
  * comment per *new* finding. Persistent findings (same pr-review-id) are skipped.
157
+ * The summary is re-posted every run (not just the first) so its embedded
158
+ * review state — head sha + every active finding — stays current for the
159
+ * next run's incremental diff and reconciliation.
143
160
  */
144
161
  export async function postBbReview(opts) {
145
162
  const { ref, result, log = () => { } } = opts;
@@ -147,13 +164,10 @@ export async function postBbReview(opts) {
147
164
  const existing = await listBbComments(ref);
148
165
  const mine = existing.filter((c) => c.content?.raw?.includes(AGENT_MARKER));
149
166
  const existingIds = collectIdsFromBodies(mine.map((c) => c.content?.raw ?? ""));
150
- const alreadySummarized = mine.some((c) => c.inline == null);
151
- if (!alreadySummarized || result.findings.length === 0) {
152
- await bbFetch(commentsUrl, {
153
- method: "POST",
154
- body: JSON.stringify({ content: { raw: formatBbSummaryBody(result, opts.failed) } }),
155
- });
156
- }
167
+ await bbFetch(commentsUrl, {
168
+ method: "POST",
169
+ body: JSON.stringify({ content: { raw: formatBbSummaryBody(result, opts.failed, opts.headSha) } }),
170
+ });
157
171
  const toPost = result.findingsToPost ?? result.findings;
158
172
  let posted = 0;
159
173
  let skipped = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/bitbucket/comments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/bitbucket/comments.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -3,12 +3,16 @@ import { Command } from "commander";
3
3
  import path from "node:path";
4
4
  import pc from "picocolors";
5
5
  import { getModel, runIndex } from "repocairn";
6
- import { getBbPrDiff, listBbFindingIds, listBbWontFixFindingIds, postBbReview, resolveBbRef, } from "./bitbucket/comments.js";
7
- import { getGlMrDiff, listGlFindingIds, listGlWontFixFindingIds, postGlReview, resolveGlRef, } from "./gitlab/comments.js";
8
- import { loadConfig } from "./config.js";
9
- import { getPrDiff, getPrHeadSha, makeOctokit, parseRepoSlug } from "./diff/github.js";
6
+ import { getBbPrDiff, getBbPrHeadSha, getBbReviewState, listBbChangedFiles, listBbFindingIds, listBbWontFixFindingIds, postBbReview, } from "./bitbucket/comments.js";
7
+ import { resolveBbRef } from "./bitbucket/auth.js";
8
+ import { getGlMrDiff, getGlReviewState, listGlChangedFiles, listGlFindingIds, listGlWontFixFindingIds, postGlReview, } from "./gitlab/comments.js";
9
+ import { resolveGlRef } from "./gitlab/auth.js";
10
+ import { applyCliOverrides, loadConfig } from "./config.js";
11
+ import { getPrDiff, getPrHeadSha, listChangedFiles, makeOctokit, parseRepoSlug, } from "./diff/github.js";
12
+ import { resolveGhRepoSlug, resolveGhToken } from "./github/auth.js";
10
13
  import { getLocalDiff } from "./diff/local.js";
11
- import { listPostedFindingIds, listWontFixFindingIds, postReview } from "./github/comments.js";
14
+ import { getReviewState, listPostedFindingIds, listWontFixFindingIds, postReview, } from "./github/comments.js";
15
+ import { detectHost } from "./host.js";
12
16
  import { formatReport, shouldFail } from "./report/cli.js";
13
17
  import { buildJsonReport, formatRunSummaryLine, loadPreviousFindings, loadPreviousIds, writeJsonReport, } from "./report/json.js";
14
18
  import { runReview } from "./review.js";
@@ -49,7 +53,7 @@ program
49
53
  .option("--host <host>", "github | bitbucket | gitlab (default: detected from CI env vars, else github)")
50
54
  .option("--json <path>", "write findings JSON to this path", "pr-review-report.json")
51
55
  .option("--post", "post findings as inline PR review comments", false)
52
- .option("--fail-on <severity>", `exit 1 at/above this severity (${SEVERITIES.join("|")}); overrides config`)
56
+ .option("--fail-on <severity>", `exit 1 at/above this severity (${SEVERITIES.join("|")}|off); overrides config`)
53
57
  .option("--no-context", "review the diff without codemap context")
54
58
  .option("--dir <path>", "repository root", process.cwd())
55
59
  .option("--config <path>", "path to .pr-review.yml")
@@ -57,27 +61,13 @@ program
57
61
  .option("--write-suppressions", "append won’t-fix finding ids to .pr-review-suppressions.yml", false)
58
62
  .action(async (opts) => {
59
63
  const cwd = path.resolve(opts.dir);
60
- const config = await loadConfig(cwd, opts.config);
61
- if (opts.writeSuppressions)
62
- config.write_suppressions = true;
63
- if (opts.failOn) {
64
- if (!SEVERITIES.includes(opts.failOn)) {
65
- throw new Error(`--fail-on must be one of: ${SEVERITIES.join(", ")}`);
66
- }
67
- config.fail_on = opts.failOn;
68
- }
69
- const env = process.env;
70
- const host = opts.host ??
71
- (env.BITBUCKET_WORKSPACE || env.BITBUCKET_PR_ID
72
- ? "bitbucket"
73
- : env.GITLAB_CI
74
- ? "gitlab"
75
- : "github");
76
- if (host !== "github" && host !== "bitbucket" && host !== "gitlab") {
77
- throw new Error(`--host must be github, bitbucket, or gitlab, got "${opts.host}".`);
78
- }
79
- const bbPrAvailable = host === "bitbucket" && (opts.pr != null || env.BITBUCKET_PR_ID);
80
- const glMrAvailable = host === "gitlab" && (opts.pr != null || env.CI_MERGE_REQUEST_IID);
64
+ const config = applyCliOverrides(await loadConfig(cwd, opts.config), {
65
+ failOn: opts.failOn,
66
+ writeSuppressions: opts.writeSuppressions,
67
+ });
68
+ const host = detectHost(opts.host);
69
+ const bbPrAvailable = host === "bitbucket" && (opts.pr != null || process.env.BITBUCKET_PR_ID);
70
+ const glMrAvailable = host === "gitlab" && (opts.pr != null || process.env.CI_MERGE_REQUEST_IID);
81
71
  let diffText;
82
72
  let changeDescription;
83
73
  let prRef = null;
@@ -100,10 +90,8 @@ program
100
90
  changeDescription = `PR #${bbRef.prId} in ${bbRef.workspace}/${bbRef.repoSlug}`;
101
91
  }
102
92
  else if (opts.pr != null) {
103
- const slug = opts.repo ?? process.env.GITHUB_REPOSITORY;
104
- if (!slug)
105
- throw new Error("Pass --repo owner/name or set GITHUB_REPOSITORY when using --pr.");
106
- octokit = makeOctokit(process.env.GITHUB_TOKEN);
93
+ const slug = resolveGhRepoSlug(opts.repo);
94
+ octokit = makeOctokit(resolveGhToken());
107
95
  prRef = { ...parseRepoSlug(slug), pull_number: opts.pr };
108
96
  log(`Fetching diff for ${slug}#${opts.pr}…`);
109
97
  diffText = await getPrDiff(octokit, prRef);
@@ -142,18 +130,89 @@ program
142
130
  log(`Warning: could not scan won’t-fix replies: ${e instanceof Error ? e.message : e}`);
143
131
  }
144
132
  const suppressedIds = new Set([...suppressions.ids, ...ephemeral]);
133
+ // Only files changed since the last reviewed commit go back through the
134
+ // LLM; everything else carries its prior findings forward untouched.
135
+ // Recovered from the state blob embedded in the last summary comment/review
136
+ // (see review-state.ts) — the only thing that survives a fresh CI checkout.
137
+ let changedFiles;
138
+ const carryForwardFindings = [];
139
+ let currentHeadSha;
145
140
  if (opts.post) {
146
- if (glRef) {
147
- for (const id of await listGlFindingIds(glRef))
148
- previousIds.add(id);
149
- }
150
- else if (bbRef) {
151
- for (const id of await listBbFindingIds(bbRef))
152
- previousIds.add(id);
141
+ try {
142
+ if (glRef && glDiffRefs) {
143
+ currentHeadSha = glDiffRefs.head_sha;
144
+ const prev = await getGlReviewState(glRef);
145
+ if (prev) {
146
+ for (const f of prev.findings)
147
+ if (f.id)
148
+ previousIds.add(f.id);
149
+ if (prev.headSha !== currentHeadSha) {
150
+ changedFiles = await listGlChangedFiles(glRef, prev.headSha, currentHeadSha);
151
+ for (const f of prev.findings) {
152
+ (changedFiles.has(f.file) ? previousFindings : carryForwardFindings).push(f);
153
+ }
154
+ }
155
+ else {
156
+ changedFiles = new Set();
157
+ carryForwardFindings.push(...prev.findings);
158
+ }
159
+ }
160
+ else {
161
+ for (const id of await listGlFindingIds(glRef))
162
+ previousIds.add(id);
163
+ }
164
+ }
165
+ else if (bbRef) {
166
+ currentHeadSha = await getBbPrHeadSha(bbRef);
167
+ const prev = await getBbReviewState(bbRef);
168
+ if (prev) {
169
+ for (const f of prev.findings)
170
+ if (f.id)
171
+ previousIds.add(f.id);
172
+ if (prev.headSha !== currentHeadSha) {
173
+ changedFiles = await listBbChangedFiles(bbRef, prev.headSha, currentHeadSha);
174
+ for (const f of prev.findings) {
175
+ (changedFiles.has(f.file) ? previousFindings : carryForwardFindings).push(f);
176
+ }
177
+ }
178
+ else {
179
+ changedFiles = new Set();
180
+ carryForwardFindings.push(...prev.findings);
181
+ }
182
+ }
183
+ else {
184
+ for (const id of await listBbFindingIds(bbRef))
185
+ previousIds.add(id);
186
+ }
187
+ }
188
+ else if (prRef && octokit) {
189
+ currentHeadSha = await getPrHeadSha(octokit, prRef);
190
+ const prev = await getReviewState(octokit, prRef);
191
+ if (prev) {
192
+ for (const f of prev.findings)
193
+ if (f.id)
194
+ previousIds.add(f.id);
195
+ if (prev.headSha !== currentHeadSha) {
196
+ changedFiles = await listChangedFiles(octokit, prRef, prev.headSha, currentHeadSha);
197
+ for (const f of prev.findings) {
198
+ (changedFiles.has(f.file) ? previousFindings : carryForwardFindings).push(f);
199
+ }
200
+ }
201
+ else {
202
+ changedFiles = new Set();
203
+ carryForwardFindings.push(...prev.findings);
204
+ }
205
+ }
206
+ else {
207
+ for (const id of await listPostedFindingIds(octokit, prRef))
208
+ previousIds.add(id);
209
+ }
210
+ }
153
211
  }
154
- else if (prRef && octokit) {
155
- for (const id of await listPostedFindingIds(octokit, prRef))
156
- previousIds.add(id);
212
+ catch (e) {
213
+ log(`Warning: incremental diff unavailable, falling back to a full review: ${e instanceof Error ? e.message : e}`);
214
+ changedFiles = undefined;
215
+ carryForwardFindings.length = 0;
157
216
  }
158
217
  }
159
218
  const result = await runReview({
@@ -165,6 +224,8 @@ program
165
224
  previousIds,
166
225
  previousFindings,
167
226
  suppressedIds,
227
+ changedFiles,
228
+ carryForwardFindings,
168
229
  log,
169
230
  });
170
231
  if (config.write_suppressions && ephemeral.size) {
@@ -186,10 +247,10 @@ program
186
247
  await postGlReview({ ref: glRef, diffRefs: glDiffRefs, result, failed, log });
187
248
  }
188
249
  else if (bbRef) {
189
- await postBbReview({ ref: bbRef, result, failed, log });
250
+ await postBbReview({ ref: bbRef, result, failed, headSha: currentHeadSha, log });
190
251
  }
191
252
  else if (prRef && octokit) {
192
- const headSha = await getPrHeadSha(octokit, prRef);
253
+ const headSha = currentHeadSha ?? (await getPrHeadSha(octokit, prRef));
193
254
  await postReview({ octokit, pr: prRef, headSha, result, failed, log });
194
255
  }
195
256
  else {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}