@reneturcios/greenlight 0.3.8 → 0.3.10
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/README.md +15 -1
- package/dist/claims.js +33 -0
- package/dist/claims.js.map +1 -1
- package/dist/cli.js +20 -1
- package/dist/cli.js.map +1 -1
- package/dist/guard.d.ts +175 -0
- package/dist/guard.js +605 -0
- package/dist/guard.js.map +1 -0
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/integrations/README.md +2 -1
- package/package.json +1 -1
- package/server.json +2 -2
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ One engine, four plain steps:
|
|
|
39
39
|
|
|
40
40
|
One engine, four surfaces:
|
|
41
41
|
|
|
42
|
-
1. **Availability verdicts** for an issue: `GO`, `RISKY`, `TAKEN`, `GATED`, `STALE`. Signals: assignees, linked open/closed/merged PRs (timeline + search + comment references), claim-comment heuristics including scoped claims (phrases like "please assign", "working on this", "taking the remaining fallback ask"), partially-addressed detection (merged PRs that reference the issue, maintainer comments like "half addressed ... leaving this open"), issue age and last activity.
|
|
42
|
+
1. **Availability verdicts** for an issue: `GO`, `RISKY`, `TAKEN`, `GATED`, `STALE`. Signals: assignees, linked open/closed/merged PRs (timeline + search + comment references), claim-comment heuristics including scoped claims and bare short claims (phrases like "please assign", "working on this", "taking the remaining fallback ask", "I'll take this"), partially-addressed detection (merged PRs that reference the issue, maintainer comments like "half addressed ... leaving this open"), issue age and last activity.
|
|
43
43
|
2. **Repo friction scores** (0-100, 100 = easiest): contribution gates parsed from CONTRIBUTING variants plus house-rules files (`AGENTS.md`, `CLAUDE.md`), with each gate recording which file its evidence came from (assignment-first, vouch, CLA, DCO, discussion-first, comment-first, collaborators-only, paused unsolicited PRs, external PRs auto-closed by workflow), plus outcome signals where computable.
|
|
44
44
|
3. **Scan mode**: rank a repo's open good-first-issue / help-wanted issues by verdict so a contributor (or agent) picks a winnable one first. Falls back to recent open unassigned issues when a repo has no labeled starter issues.
|
|
45
45
|
4. **Contribution automation**: `claim`, `prep`, and `pr` commands (plus matching MCP tools) that run the pipeline after the verdict. All writes are dry-run by default and need a token plus an explicit go flag.
|
|
@@ -109,6 +109,15 @@ npx @reneturcios/greenlight review https://github.com/n8n-io/n8n/pull/41235
|
|
|
109
109
|
# [likely-real] interpolation drops `__proto__` (packages/bruno-cli/src/runner/interpolate-vars.js:42)
|
|
110
110
|
# why: anchor matches: the comment's quoted token Object.assign({}, params) is present in the anchored hunk
|
|
111
111
|
# draft reply: Good catch. Fixed in <next commit>: ...
|
|
112
|
+
|
|
113
|
+
# Maintainer guard for an incoming PR: competing fix, prior claims, missing
|
|
114
|
+
# artifacts (changeset / DCO / CLA), first-time contributor. Renders markdown
|
|
115
|
+
# ready to post as one comment; Greenlight itself never posts.
|
|
116
|
+
npx @reneturcios/greenlight guard https://github.com/owner/repo/pull/123
|
|
117
|
+
|
|
118
|
+
# Greenlight guard: 1 thing to check
|
|
119
|
+
# - Missing release-note file (repo uses .changes/): expected .changes/123-slug.md
|
|
120
|
+
npx @reneturcios/greenlight guard <pr-url> --quiet # exit 3 when flagged, silent otherwise
|
|
112
121
|
```
|
|
113
122
|
|
|
114
123
|
Real examples from our vetting:
|
|
@@ -170,6 +179,7 @@ Tools:
|
|
|
170
179
|
* `open_pr` - DCO-aware PR opening from a fork branch (dry run unless `execute: true`)
|
|
171
180
|
* `ci_triage` - classify each failing check on a PR as pre-existing, likely-yours, indeterminate (with a stated lean), or external-blocker, by comparing against the base branch's recent check history
|
|
172
181
|
* `review_triage` - triage the review feedback on your PR: each finding classified likely-real / likely-noise / needs-decision with its reason and a reply draft (humans are never called noise; drafts only, nothing posted)
|
|
182
|
+
* `guard_pr` - maintainer-side analysis of an incoming PR: competing fix, prior claims by someone other than the author, missing artifacts (changeset / DCO / CLA), first-time contributor. Returns comment-ready markdown (never posts).
|
|
173
183
|
|
|
174
184
|
Run it locally: `npm run dev` (MCP entry is `src/index.ts`; CLI is `src/cli.ts`).
|
|
175
185
|
|
|
@@ -181,6 +191,10 @@ The first solve-side command. On a red PR, `ci` fetches the PR's base and head,
|
|
|
181
191
|
|
|
182
192
|
The third solve-side upgrade, to `greenlight prep`. The checklist now starts with the exact signing path the repo demands (CLA Assistant with its signature phrase, a repo-specific CLA bot's signing page, or DCO with `git commit -s`) and the release-note artifact it owes (`.changeset/`, `.changes/<issue>-slug.md`, towncrier fragments, or a CHANGELOG note). Before anything else, it runs the fix-lives-here check: the v0.3.4 server-side signal plus a satellite-repo hint that fires only on tight textual evidence, warning prominently when the fix may not be buildable from this repo. A house-rules block closes it out: claim style, PR title convention, draft-first norm, and the test command, each with its source file.
|
|
183
193
|
|
|
194
|
+
### v0.3.9: the maintainer guard
|
|
195
|
+
|
|
196
|
+
Guard flips the engine around: `greenlight guard <pr-url>` (or the `guard_pr` MCP tool) analyzes an *incoming* pull request and renders one short markdown report a maintainer can post as a comment. It checks for a competing fix (other open PRs already fixing the same issue, found via the issue's timeline), prior claims by someone other than the PR author, missing required artifacts (a `.changes/` or `.changeset/` file the repo assembles its changelog from, DCO sign-off trailers, CLA status), and whether the author is a first-time contributor. Output starts with a one-line summary ("Greenlight guard: nothing flagged" or "N things to check"), `--quiet` stays silent unless flagged, and exit code 3 tells a workflow when findings exist. The repo ships a composite GitHub Action (`action.yml`) that posts or updates a single comment on each PR, an `examples/guard-workflow.yml` a maintainer copies into `.github/workflows/`, and per-repo check toggles through `.greenlight-guard.json`.
|
|
197
|
+
|
|
184
198
|
### v0.3.6: review triage (solve-first)
|
|
185
199
|
|
|
186
200
|
The second solve-side command. On a PR with review feedback, `review` gathers every review thread (bot and human), classifies each finding, and drafts the reply for you. Findings group into three buckets: **likely-real** (the comment's quoted anchor token is in the diff hunk; fix these), **needs-decision** (bot questions and every substantive human comment, which is never called noise; your call), and **likely-noise** (findings on generated files, style nits contradicted by the surrounding code, anchor mismatches, security claims the hunk disproves; probably push back). Each finding prints with its author, file and line, the one-line summary, the deterministic reason for its class, and the draft reply. Summaries, walkthroughs, praise, and findings on dismissed reviews count as noise or resolved, never as findings. Like everything in Greenlight, the drafts are output only: nothing is posted.
|
package/dist/claims.js
CHANGED
|
@@ -22,6 +22,23 @@ const STRONG_PATTERNS = [
|
|
|
22
22
|
// of these from one contributor before anyone linked the actual fix PRs; without this
|
|
23
23
|
// pattern the issue scored clean while every sub-bug already had work in flight.
|
|
24
24
|
{ name: "attempt-command", regex: /^\s*\/(attempt|claim)\b/i, strength: "strong" },
|
|
25
|
+
// Bare short takes: "I'll take this", "let me take this", "taking this".
|
|
26
|
+
// Soft, not strong: a bare take with no plan and no assignment ask is a
|
|
27
|
+
// statement of intent, in the same family as "I can take this"
|
|
28
|
+
// (can-take, soft) and "I'm going to take a look at this one"
|
|
29
|
+
// (take-a-look, soft). It never caps a verdict alone. The guard does
|
|
30
|
+
// report soft foreign claims, so these still surface to a maintainer.
|
|
31
|
+
// Phrase-boundary rule: the take must end the clause or be followed
|
|
32
|
+
// only by punctuation (or "on"/"up", which the stronger taking-it
|
|
33
|
+
// pattern already caught earlier in the list). The negative lookahead
|
|
34
|
+
// rejects the common non-claim continuations: "take this into account",
|
|
35
|
+
// "take this offline", "take this opportunity to ...", "take this
|
|
36
|
+
// with a grain of salt".
|
|
37
|
+
{
|
|
38
|
+
name: "bare-take",
|
|
39
|
+
regex: /\b(?:i(?:'ll| will) take|let me take|i take|taking) (?:this|it)(?: one)?\b(?!\s+(?:[a-z][\w-]*\s+){0,2}(?:into|off(?:line)?|opportunity|opportunities|moment|time|with|under|as)\b)/i,
|
|
40
|
+
strength: "soft",
|
|
41
|
+
},
|
|
25
42
|
];
|
|
26
43
|
// Soft: interest or an offer, not a claim. Used only to soften confidence, not to mark TAKEN.
|
|
27
44
|
const SOFT_PATTERNS = [
|
|
@@ -34,6 +51,22 @@ const SOFT_PATTERNS = [
|
|
|
34
51
|
// pnlabs-dev posted this two months ago and nothing landed. A soft claim
|
|
35
52
|
// with a date, so its age can be weighed; it never caps the verdict alone.
|
|
36
53
|
{ name: "take-a-look", regex: /\b(take a|taking a) look at this/i, strength: "soft" },
|
|
54
|
+
// "If not, I can pick it up." and "Can i still work on this, is this open."
|
|
55
|
+
// — firecrawl#839 (2026-10-16): real claim comments every pattern missed.
|
|
56
|
+
// The pick-up family is soft, like can-take. False-positive care: the
|
|
57
|
+
// negative lookahead after "up" blocks physical-pickup contexts ("pick it
|
|
58
|
+
// up from the store"), and "pick up the pace" never matches because the
|
|
59
|
+
// regex demands "this"/"it" right after "pick". A true claim's clause
|
|
60
|
+
// ends at "up" or continues with punctuation/intent, never a preposition
|
|
61
|
+
// of place.
|
|
62
|
+
{
|
|
63
|
+
name: "pick-up-offer",
|
|
64
|
+
regex: /\b(?:i can|i(?:'ll| will)|let me|(?:can|could) i) pick (?:this|it) up\b(?!\s+(?:from|at|in|on|off|out)\b)/i,
|
|
65
|
+
strength: "soft",
|
|
66
|
+
},
|
|
67
|
+
// "Can i still work on this, is this open." — the same firecrawl thread:
|
|
68
|
+
// an availability ask paired with work intent. Soft, like the offer above.
|
|
69
|
+
{ name: "work-availability", regex: /\bcan i (still |please )?work on this\b/i, strength: "soft" },
|
|
37
70
|
];
|
|
38
71
|
// Scoped claims: the author takes part of the issue, not the whole thing.
|
|
39
72
|
// Seen on reticlehq/reticle#691 ("Taking the remaining fallback ask") where
|
package/dist/claims.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"AAiBA,0EAA0E;AAC1E,MAAM,eAAe,GAAmB;IACtC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,6CAA6C,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACpG,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,6BAA6B,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACnF,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,+BAA+B,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACpF,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACvE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,4CAA4C,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC9F,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,6CAA6C,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAChG,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,8BAA8B,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAChF,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,qCAAqC,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACvF,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACxE,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACjF,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,gEAAgE,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACpH,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,4CAA4C,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACjG,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,qDAAqD,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAC1G,0FAA0F;IAC1F,yFAAyF;IACzF,mFAAmF;IACnF,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,2EAA2E,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAChI,sFAAsF;IACtF,yFAAyF;IACzF,sFAAsF;IACtF,iFAAiF;IACjF,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,0BAA0B,EAAE,QAAQ,EAAE,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -25,6 +25,7 @@ import { createRestClient, claimIssue, prepIssue, openPr, AutomationRefusal, } f
|
|
|
25
25
|
import { fetchMergeVelocity, describeMergeVelocity } from "./merge-velocity.js";
|
|
26
26
|
import { triagePr } from "./ci-triage.js";
|
|
27
27
|
import { triageReview } from "./review-triage.js";
|
|
28
|
+
import { guardPr, readGuardConfig } from "./guard.js";
|
|
28
29
|
const SYMBOL = {
|
|
29
30
|
GO: "[GO]",
|
|
30
31
|
RISKY: "[RISKY]",
|
|
@@ -370,6 +371,21 @@ async function cmdReview(prUrl, asJson) {
|
|
|
370
371
|
console.log(`\nSummary: ${c.likelyReal} likely-real, ${c.needsDecision} needs-decision, ${c.likelyNoise} likely-noise (noise: ${c.noise}, resolved: ${c.resolved})`);
|
|
371
372
|
console.log(`Verdict: ${result.verdict}`);
|
|
372
373
|
}
|
|
374
|
+
async function cmdGuard(prUrl, args) {
|
|
375
|
+
const asJson = args.includes("--json");
|
|
376
|
+
const quiet = args.includes("--quiet");
|
|
377
|
+
const result = await guardPr(prUrl, {}, readGuardConfig());
|
|
378
|
+
if (asJson) {
|
|
379
|
+
console.log(JSON.stringify(result, null, 2));
|
|
380
|
+
}
|
|
381
|
+
else if (!quiet || result.hasFindings) {
|
|
382
|
+
console.log(result.markdown);
|
|
383
|
+
}
|
|
384
|
+
// Exit code 3 means findings exist, so a GitHub Action can decide whether
|
|
385
|
+
// to comment or block. Nothing flagged is exit 0, usage errors are exit 1.
|
|
386
|
+
if (result.hasFindings)
|
|
387
|
+
process.exitCode = 3;
|
|
388
|
+
}
|
|
373
389
|
function usage() {
|
|
374
390
|
console.log("greenlight: pre-flight checks for open-source contributions");
|
|
375
391
|
console.log("");
|
|
@@ -379,6 +395,7 @@ function usage() {
|
|
|
379
395
|
console.log(" greenlight friction <owner/repo> [--json]");
|
|
380
396
|
console.log(" greenlight ci <pr-url> [--json] (CI failure triage: is the red check yours or pre-existing?)");
|
|
381
397
|
console.log(" greenlight review <pr-url> [--json] (review triage: which review comments need you, with reply drafts)");
|
|
398
|
+
console.log(" greenlight guard <pr-url> [--json] [--quiet] (maintainer-side: is this incoming PR worth your time? exit 3 when flagged)");
|
|
382
399
|
console.log(" greenlight claim <issue-url> [--yes] [--force] [--json]");
|
|
383
400
|
console.log(" greenlight prep <issue-url> [--dir path] [--yes] [--json]");
|
|
384
401
|
console.log(" greenlight pr <issue-url> --branch <name> [--title t] [--yes] [--json]");
|
|
@@ -390,7 +407,7 @@ function usage() {
|
|
|
390
407
|
}
|
|
391
408
|
async function main() {
|
|
392
409
|
const args = process.argv.slice(2);
|
|
393
|
-
const flags = new Set(["--json", "--yes", "--force", "--no-fallback"]);
|
|
410
|
+
const flags = new Set(["--json", "--yes", "--force", "--no-fallback", "--quiet"]);
|
|
394
411
|
const positional = [];
|
|
395
412
|
for (let i = 0; i < args.length; i++) {
|
|
396
413
|
const a = args[i];
|
|
@@ -420,6 +437,8 @@ async function main() {
|
|
|
420
437
|
return await cmdCi(target, args.includes("--json"));
|
|
421
438
|
if (command === "review" && target)
|
|
422
439
|
return await cmdReview(target, args.includes("--json"));
|
|
440
|
+
if (command === "guard" && target)
|
|
441
|
+
return await cmdGuard(target, args);
|
|
423
442
|
if (command === "claim" && target)
|
|
424
443
|
return await cmdClaim(target, args);
|
|
425
444
|
if (command === "prep" && target)
|
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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"}
|
package/dist/guard.d.ts
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import type { CommentSignal, LinkedPR } from "./types.js";
|
|
2
|
+
export declare const GUARD_VERSION = "0.3.10";
|
|
3
|
+
/** The hidden marker the GitHub Action uses to find its own comment and update it. */
|
|
4
|
+
export declare const GUARD_COMMENT_MARKER = "<!-- greenlight-guard -->";
|
|
5
|
+
/** Check ids, also the keys of .greenlight-guard.json. */
|
|
6
|
+
export declare const GUARD_CHECKS: readonly ["competing-fix", "other-claim", "missing-artifact", "first-time"];
|
|
7
|
+
export type GuardCheckId = (typeof GUARD_CHECKS)[number];
|
|
8
|
+
export type GuardConfig = Record<GuardCheckId, boolean>;
|
|
9
|
+
export declare function defaultGuardConfig(): GuardConfig;
|
|
10
|
+
/** Read .greenlight-guard.json from a directory (default cwd). Best-effort: anything unreadable means all checks on. */
|
|
11
|
+
export declare function readGuardConfig(dir?: string): GuardConfig;
|
|
12
|
+
export interface GuardLinkedIssue {
|
|
13
|
+
number: number;
|
|
14
|
+
title: string;
|
|
15
|
+
url: string;
|
|
16
|
+
state: string;
|
|
17
|
+
}
|
|
18
|
+
export interface GuardCompetingPR {
|
|
19
|
+
issueNumber: number;
|
|
20
|
+
number: number;
|
|
21
|
+
title: string;
|
|
22
|
+
url: string;
|
|
23
|
+
author: string;
|
|
24
|
+
state: string;
|
|
25
|
+
linkStrength: "closing" | "mention";
|
|
26
|
+
via?: string;
|
|
27
|
+
/** "owner/repo#N" when the issue lives in another repo; undefined for same-repo. */
|
|
28
|
+
issueRef?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface GuardClaim {
|
|
31
|
+
issueNumber: number;
|
|
32
|
+
author: string;
|
|
33
|
+
createdAt: string;
|
|
34
|
+
ageDays: number;
|
|
35
|
+
strength: "strong" | "soft";
|
|
36
|
+
phrase: string;
|
|
37
|
+
claimedByAuthor: boolean;
|
|
38
|
+
/** "owner/repo#N" when the issue lives in another repo; undefined for same-repo. */
|
|
39
|
+
issueRef?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface GuardFinding {
|
|
42
|
+
/** Machine key, e.g. "competing-fix" / "changeset-missing" / "dco-missing" / "cla-status" / "first-time". */
|
|
43
|
+
check: string;
|
|
44
|
+
/** "flag" counts toward the summary and the exit code; "note" is information. */
|
|
45
|
+
severity: "flag" | "note";
|
|
46
|
+
title: string;
|
|
47
|
+
evidence: string[];
|
|
48
|
+
}
|
|
49
|
+
export interface GuardResult {
|
|
50
|
+
pr: string;
|
|
51
|
+
number: number;
|
|
52
|
+
repo: string;
|
|
53
|
+
title: string;
|
|
54
|
+
author: string;
|
|
55
|
+
linkedIssues: GuardLinkedIssue[];
|
|
56
|
+
competingPRs: GuardCompetingPR[];
|
|
57
|
+
claims: GuardClaim[];
|
|
58
|
+
findings: GuardFinding[];
|
|
59
|
+
/** "Greenlight guard: N things to check" or "Greenlight guard: nothing flagged". */
|
|
60
|
+
summary: string;
|
|
61
|
+
/** True when at least one finding has severity "flag". */
|
|
62
|
+
hasFindings: boolean;
|
|
63
|
+
/** The comment-ready markdown. */
|
|
64
|
+
markdown: string;
|
|
65
|
+
}
|
|
66
|
+
export interface GuardPullDetail {
|
|
67
|
+
title: string;
|
|
68
|
+
body: string;
|
|
69
|
+
author: string;
|
|
70
|
+
headRef: string;
|
|
71
|
+
createdAt: string;
|
|
72
|
+
labels: string[];
|
|
73
|
+
changedFiles: string[];
|
|
74
|
+
commits: Array<{
|
|
75
|
+
sha: string;
|
|
76
|
+
message: string;
|
|
77
|
+
}>;
|
|
78
|
+
comments: CommentSignal[];
|
|
79
|
+
}
|
|
80
|
+
export interface GuardIssueDetail {
|
|
81
|
+
number: number;
|
|
82
|
+
title: string;
|
|
83
|
+
author: string;
|
|
84
|
+
state: string;
|
|
85
|
+
comments: CommentSignal[];
|
|
86
|
+
}
|
|
87
|
+
export interface GuardRepoConventions {
|
|
88
|
+
changesetDir?: ".changes" | ".changeset";
|
|
89
|
+
changesetExample?: string;
|
|
90
|
+
dcoRequired: boolean;
|
|
91
|
+
claRequired: boolean;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Issue numbers this PR claims to fix: closing keywords in body or title
|
|
95
|
+
* ("fixes #N"), "#N" in the title, or the number as a standalone token in
|
|
96
|
+
* the branch name. Reuses classifyLinkStrength so the branch-token rule
|
|
97
|
+
* matches the race-detection behavior exactly.
|
|
98
|
+
*/
|
|
99
|
+
export declare function extractLinkedIssueNumbers(title: string, body: string, branch: string): number[];
|
|
100
|
+
/**
|
|
101
|
+
* A cross-repo issue reference this PR claims to fix, e.g. "acme/widgets#123".
|
|
102
|
+
* The PR's own repo is tracked separately (same-repo #N machinery); the
|
|
103
|
+
* issue lives in another repo, so the guard must fetch THAT repo's issue
|
|
104
|
+
* (comments for claims, timeline for competing PRs).
|
|
105
|
+
*/
|
|
106
|
+
export interface GuardIssueRef {
|
|
107
|
+
owner: string;
|
|
108
|
+
repo: string;
|
|
109
|
+
number: number;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Cross-repo issue references this PR claims to fix:
|
|
113
|
+
* - "Fixes acme/widgets#123" (closing keyword + owner/repo#N)
|
|
114
|
+
* - "Closes https://github.com/acme/widgets/issues/123" (closing keyword + issue URL)
|
|
115
|
+
* - an issue URL in the PR title (author intent, mirroring the
|
|
116
|
+
* "#N in the title is closing" rule for same-repo links)
|
|
117
|
+
*
|
|
118
|
+
* Only closing intent counts: "see acme/widgets#123" or "related to
|
|
119
|
+
* acme/widgets#123" never count, exactly as for same-repo mentions.
|
|
120
|
+
* References pointing back at the PR's own repo are skipped; the
|
|
121
|
+
* same-repo machinery already handles those.
|
|
122
|
+
*/
|
|
123
|
+
export declare function extractCrossRepoIssues(title: string, body: string, prOwner: string, prRepo: string): GuardIssueRef[];
|
|
124
|
+
/** Other OPEN PRs already fixing the same issue, excluding this PR. Only "closing"-strength links count. */
|
|
125
|
+
export declare function findCompetingPRs(issueNumber: number, linkedPRs: LinkedPR[], prNumber: number, authorsByNumber?: Map<number, string>): GuardCompetingPR[];
|
|
126
|
+
/**
|
|
127
|
+
* Claims on the linked issue, split by authorship. Only claims that
|
|
128
|
+
* predate the PR count (a claim posted after the PR cannot have been a
|
|
129
|
+
* race). Bot authors are excluded by detectClaims itself. Returns foreign
|
|
130
|
+
* claims plus whether the author claimed it themselves (a pass, not a
|
|
131
|
+
* flag).
|
|
132
|
+
*/
|
|
133
|
+
export declare function splitIssueClaims(issueAuthor: string, issueComments: CommentSignal[], prAuthor: string, prCreatedAt: string, issueNumber: number, now?: Date): {
|
|
134
|
+
foreign: GuardClaim[];
|
|
135
|
+
authorClaimed: GuardClaim | null;
|
|
136
|
+
};
|
|
137
|
+
/** True when any line of the commit message is a DCO Signed-off-by trailer. */
|
|
138
|
+
export declare function commitHasSignoff(message: string): boolean;
|
|
139
|
+
/**
|
|
140
|
+
* The artifact findings: changeset file missing, DCO trailers missing,
|
|
141
|
+
* CLA status not visible. Pure over injected repo conventions and PR data.
|
|
142
|
+
* A "cla" artifact check fires only when the repo was detected to demand
|
|
143
|
+
* a CLA path; wording is absence-of-evidence, never an accusation.
|
|
144
|
+
*/
|
|
145
|
+
export declare function checkMissingArtifacts(args: {
|
|
146
|
+
conventions: GuardRepoConventions;
|
|
147
|
+
changedFiles: string[];
|
|
148
|
+
commits: Array<{
|
|
149
|
+
sha: string;
|
|
150
|
+
message: string;
|
|
151
|
+
}>;
|
|
152
|
+
prLabels: string[];
|
|
153
|
+
prAuthor: string;
|
|
154
|
+
prComments: CommentSignal[];
|
|
155
|
+
}): GuardFinding[];
|
|
156
|
+
/** Light author-history signal. Null means the lookup failed: no finding. */
|
|
157
|
+
export declare function checkFirstTime(author: string, priorMerged: number | null): GuardFinding | null;
|
|
158
|
+
export declare function renderGuardMarkdown(result: Omit<GuardResult, "markdown">): string;
|
|
159
|
+
export declare function buildGuardSummary(findings: GuardFinding[]): {
|
|
160
|
+
summary: string;
|
|
161
|
+
hasFindings: boolean;
|
|
162
|
+
};
|
|
163
|
+
export interface GuardDeps {
|
|
164
|
+
fetchPull?: (owner: string, repo: string, number: number) => Promise<GuardPullDetail>;
|
|
165
|
+
fetchIssue?: (owner: string, repo: string, number: number) => Promise<GuardIssueDetail>;
|
|
166
|
+
fetchLinkedPRs?: (owner: string, repo: string, issueNumber: number) => Promise<LinkedPR[]>;
|
|
167
|
+
fetchPRAuthor?: (owner: string, repo: string, number: number) => Promise<string>;
|
|
168
|
+
fetchConventions?: (owner: string, repo: string, issueNumber: number) => Promise<GuardRepoConventions>;
|
|
169
|
+
fetchPriorMerged?: (owner: string, repo: string, author: string) => Promise<number | null>;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Full guard for a PR URL. Best-effort throughout: anything that cannot
|
|
173
|
+
* be read degrades to "no evidence" and its check is skipped.
|
|
174
|
+
*/
|
|
175
|
+
export declare function guardPr(prUrl: string, deps?: GuardDeps, config?: GuardConfig): Promise<GuardResult>;
|
package/dist/guard.js
ADDED
|
@@ -0,0 +1,605 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maintainer-side guard. Answers the question a maintainer asks about an
|
|
3
|
+
* INCOMING pull request: "is this PR worth my time?"
|
|
4
|
+
*
|
|
5
|
+
* Four checks, all evidence-carrying, all degradable:
|
|
6
|
+
*
|
|
7
|
+
* 1. competing-fix — the PR claims an issue (via "fixes/closes #N" in
|
|
8
|
+
* the body, an issue number in the branch name, or a cross-repo
|
|
9
|
+
* "Fixes owner/repo#N" / "Fixes https://github.com/owner/repo/issues/N");
|
|
10
|
+
* the issue's timeline cross-reference walk then names OTHER open PRs
|
|
11
|
+
* already fixing it, fetching the issue from its own repo when the
|
|
12
|
+
* reference is cross-repo. Reuses fetchLinkedPRs /
|
|
13
|
+
* classifyLinkStrength, the same machinery that catches the race
|
|
14
|
+
* cases (e2b-dev/E2B#1986 with its PR #1987, ComposioHQ/composio#4904
|
|
15
|
+
* with #4907 and #4922).
|
|
16
|
+
* 2. other-claim — claim detection (claims.ts) on the linked issue's
|
|
17
|
+
* comments: a strong or soft claim from someone other than the PR
|
|
18
|
+
* author that predates the PR is reported with the claimant and
|
|
19
|
+
* date. A claim by the PR author is a pass, noted not flagged.
|
|
20
|
+
* 3. missing-artifact — from the PR's changed files: repos detected to
|
|
21
|
+
* use .changes/ or .changeset/ flag a PR that adds no such file
|
|
22
|
+
* (with the expected pattern); DCO repos flag commits without a
|
|
23
|
+
* Signed-off-by trailer; CLA-gated repos flag "CLA status not
|
|
24
|
+
* visible" when no cla-signed label and no signature comment from
|
|
25
|
+
* the author exist. Absence of evidence is stated as such, never
|
|
26
|
+
* as proof the author did not sign.
|
|
27
|
+
* 4. first-time — the author's prior merged-PR count in the repo (one
|
|
28
|
+
* search call, capped); zero means first-time contributor. Best
|
|
29
|
+
* effort: null on failure, no finding then.
|
|
30
|
+
*
|
|
31
|
+
* The classifier is pure over injected data; the fetch layer follows the
|
|
32
|
+
* ci-triage / review-triage test-seam pattern (GuardDeps). The command
|
|
33
|
+
* never posts anything: it renders markdown that a maintainer (or the
|
|
34
|
+
* bundled GitHub Action) posts as one PR comment.
|
|
35
|
+
*
|
|
36
|
+
* Per-repo silencing: `.greenlight-guard.json` in the working directory,
|
|
37
|
+
* a JSON object with boolean keys per check ("competing-fix",
|
|
38
|
+
* "other-claim", "missing-artifact", "first-time"); unknown keys are
|
|
39
|
+
* ignored, a missing or unreadable file means every check is on.
|
|
40
|
+
*/
|
|
41
|
+
import { readFileSync } from "node:fs";
|
|
42
|
+
import { apiGet, parsePullUrl, fetchLinkedPRs, fetchComments } from "./github.js";
|
|
43
|
+
import { detectClaims, isBotAuthor } from "./claims.js";
|
|
44
|
+
import { classifyLinkStrength, isClosingPR } from "./linkstrength.js";
|
|
45
|
+
import { detectClaPath, detectChangesetConvention } from "./prep-detail.js";
|
|
46
|
+
import { titleSlug } from "./automate.js";
|
|
47
|
+
import { parseGates } from "./gates.js";
|
|
48
|
+
export const GUARD_VERSION = "0.3.10";
|
|
49
|
+
/** The hidden marker the GitHub Action uses to find its own comment and update it. */
|
|
50
|
+
export const GUARD_COMMENT_MARKER = "<!-- greenlight-guard -->";
|
|
51
|
+
/** Check ids, also the keys of .greenlight-guard.json. */
|
|
52
|
+
export const GUARD_CHECKS = ["competing-fix", "other-claim", "missing-artifact", "first-time"];
|
|
53
|
+
export function defaultGuardConfig() {
|
|
54
|
+
return { "competing-fix": true, "other-claim": true, "missing-artifact": true, "first-time": true };
|
|
55
|
+
}
|
|
56
|
+
/** Read .greenlight-guard.json from a directory (default cwd). Best-effort: anything unreadable means all checks on. */
|
|
57
|
+
export function readGuardConfig(dir = process.cwd()) {
|
|
58
|
+
const config = defaultGuardConfig();
|
|
59
|
+
try {
|
|
60
|
+
const raw = JSON.parse(readFileSync(`${dir}/.greenlight-guard.json`, "utf8"));
|
|
61
|
+
for (const id of GUARD_CHECKS) {
|
|
62
|
+
if (typeof raw[id] === "boolean")
|
|
63
|
+
config[id] = raw[id];
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Missing or broken config: all checks stay on.
|
|
68
|
+
}
|
|
69
|
+
return config;
|
|
70
|
+
}
|
|
71
|
+
/* ------------------------------------------------------------------ */
|
|
72
|
+
/* Pure detectors */
|
|
73
|
+
/* ------------------------------------------------------------------ */
|
|
74
|
+
/**
|
|
75
|
+
* Issue numbers this PR claims to fix: closing keywords in body or title
|
|
76
|
+
* ("fixes #N"), "#N" in the title, or the number as a standalone token in
|
|
77
|
+
* the branch name. Reuses classifyLinkStrength so the branch-token rule
|
|
78
|
+
* matches the race-detection behavior exactly.
|
|
79
|
+
*/
|
|
80
|
+
export function extractLinkedIssueNumbers(title, body, branch) {
|
|
81
|
+
const candidates = new Set();
|
|
82
|
+
for (const text of [title, body]) {
|
|
83
|
+
for (const m of text.matchAll(/#(\d{1,6})\b/g)) {
|
|
84
|
+
const n = Number(m[1]);
|
|
85
|
+
if (n > 0)
|
|
86
|
+
candidates.add(n);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// The branch name may carry the issue number as its only signal
|
|
90
|
+
// ("fix/61-widget"). classifyLinkStrength's token test rejects near
|
|
91
|
+
// misses like "feat/610-x" for issue 61, so collecting branch numbers
|
|
92
|
+
// is safe: non-closing ones are filtered below.
|
|
93
|
+
for (const m of branch.matchAll(/\d{1,6}/g)) {
|
|
94
|
+
const n = Number(m[0]);
|
|
95
|
+
if (n > 0)
|
|
96
|
+
candidates.add(n);
|
|
97
|
+
}
|
|
98
|
+
return [...candidates].filter((n) => classifyLinkStrength({ title, body, branch, issueNumber: n }) === "closing");
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Cross-repo issue references this PR claims to fix:
|
|
102
|
+
* - "Fixes acme/widgets#123" (closing keyword + owner/repo#N)
|
|
103
|
+
* - "Closes https://github.com/acme/widgets/issues/123" (closing keyword + issue URL)
|
|
104
|
+
* - an issue URL in the PR title (author intent, mirroring the
|
|
105
|
+
* "#N in the title is closing" rule for same-repo links)
|
|
106
|
+
*
|
|
107
|
+
* Only closing intent counts: "see acme/widgets#123" or "related to
|
|
108
|
+
* acme/widgets#123" never count, exactly as for same-repo mentions.
|
|
109
|
+
* References pointing back at the PR's own repo are skipped; the
|
|
110
|
+
* same-repo machinery already handles those.
|
|
111
|
+
*/
|
|
112
|
+
export function extractCrossRepoIssues(title, body, prOwner, prRepo) {
|
|
113
|
+
const found = new Map();
|
|
114
|
+
const add = (owner, repo, n) => {
|
|
115
|
+
if (n <= 0)
|
|
116
|
+
return;
|
|
117
|
+
if (owner.toLowerCase() === prOwner.toLowerCase() && repo.toLowerCase() === prRepo.toLowerCase())
|
|
118
|
+
return;
|
|
119
|
+
const key = `${owner.toLowerCase()}/${repo.toLowerCase()}#${n}`;
|
|
120
|
+
if (!found.has(key))
|
|
121
|
+
found.set(key, { owner, repo, number: n });
|
|
122
|
+
};
|
|
123
|
+
const closingSrc = "(?:close[sd]?|closing|fix(?:e[sd])?|fixes|resolve[sd]?|resolves)";
|
|
124
|
+
// "Fixes acme/widgets#123". The optional URL prefix also catches
|
|
125
|
+
// "Fixes https://github.com/acme/widgets#123" (not a real GitHub form,
|
|
126
|
+
// harmless to catch). It can never match ".../issues/123" because that
|
|
127
|
+
// path has no "#" after the repo name.
|
|
128
|
+
const refRe = new RegExp(`${closingSrc}\\s*:?\\s*(?:https?:\\/\\/github\\.com\\/)?([\\w.-]+)\\/([\\w.-]+)#(\\d{1,6})\\b`, "gi");
|
|
129
|
+
// "Fixes https://github.com/acme/widgets/issues/123"
|
|
130
|
+
const urlRe = new RegExp(`${closingSrc}\\s*:?\\s*https?:\\/\\/github\\.com\\/([\\w.-]+)\\/([\\w.-]+)\\/issues\\/(\\d{1,6})\\b`, "gi");
|
|
131
|
+
for (const text of [title, body]) {
|
|
132
|
+
for (const m of text.matchAll(refRe))
|
|
133
|
+
add(m[1], m[2], Number(m[3]));
|
|
134
|
+
for (const m of text.matchAll(urlRe))
|
|
135
|
+
add(m[1], m[2], Number(m[3]));
|
|
136
|
+
}
|
|
137
|
+
const titleUrlRe = /https?:\/\/github\.com\/([\w.-]+)\/([\w.-]+)\/issues\/(\d{1,6})\b/g;
|
|
138
|
+
for (const m of title.matchAll(titleUrlRe))
|
|
139
|
+
add(m[1], m[2], Number(m[3]));
|
|
140
|
+
return [...found.values()];
|
|
141
|
+
}
|
|
142
|
+
/** Other OPEN PRs already fixing the same issue, excluding this PR. Only "closing"-strength links count. */
|
|
143
|
+
export function findCompetingPRs(issueNumber, linkedPRs, prNumber, authorsByNumber) {
|
|
144
|
+
const out = [];
|
|
145
|
+
for (const pr of linkedPRs) {
|
|
146
|
+
if (pr.number === prNumber)
|
|
147
|
+
continue;
|
|
148
|
+
if (pr.state !== "open")
|
|
149
|
+
continue;
|
|
150
|
+
if (!isClosingPR(pr))
|
|
151
|
+
continue;
|
|
152
|
+
out.push({
|
|
153
|
+
issueNumber,
|
|
154
|
+
number: pr.number,
|
|
155
|
+
title: pr.title,
|
|
156
|
+
url: pr.url,
|
|
157
|
+
author: authorsByNumber?.get(pr.number) ?? "unknown",
|
|
158
|
+
state: pr.state,
|
|
159
|
+
linkStrength: pr.linkStrength,
|
|
160
|
+
via: pr.via,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
return out;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Claims on the linked issue, split by authorship. Only claims that
|
|
167
|
+
* predate the PR count (a claim posted after the PR cannot have been a
|
|
168
|
+
* race). Bot authors are excluded by detectClaims itself. Returns foreign
|
|
169
|
+
* claims plus whether the author claimed it themselves (a pass, not a
|
|
170
|
+
* flag).
|
|
171
|
+
*/
|
|
172
|
+
export function splitIssueClaims(issueAuthor, issueComments, prAuthor, prCreatedAt, issueNumber, now = new Date()) {
|
|
173
|
+
const foreign = [];
|
|
174
|
+
let authorClaimed = null;
|
|
175
|
+
const prTime = new Date(prCreatedAt).getTime();
|
|
176
|
+
for (const c of detectClaims(issueAuthor, issueComments, now)) {
|
|
177
|
+
if (isBotAuthor(c.author))
|
|
178
|
+
continue;
|
|
179
|
+
const claimTime = new Date(c.createdAt).getTime();
|
|
180
|
+
if (Number.isNaN(claimTime) || claimTime >= prTime)
|
|
181
|
+
continue;
|
|
182
|
+
const claim = {
|
|
183
|
+
issueNumber,
|
|
184
|
+
author: c.author,
|
|
185
|
+
createdAt: c.createdAt,
|
|
186
|
+
ageDays: c.ageDays,
|
|
187
|
+
strength: c.strength,
|
|
188
|
+
phrase: c.phrase,
|
|
189
|
+
claimedByAuthor: c.author.toLowerCase() === prAuthor.toLowerCase(),
|
|
190
|
+
};
|
|
191
|
+
if (claim.claimedByAuthor) {
|
|
192
|
+
authorClaimed = authorClaimed ?? claim;
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
foreign.push(claim);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
foreign.sort((a, b) => a.createdAt.localeCompare(b.createdAt));
|
|
199
|
+
return { foreign, authorClaimed };
|
|
200
|
+
}
|
|
201
|
+
/** Days between two timestamps, rounded, never negative. */
|
|
202
|
+
function daysBetween(a, b) {
|
|
203
|
+
return Math.max(0, Math.round((b.getTime() - a.getTime()) / (1000 * 60 * 60 * 24)));
|
|
204
|
+
}
|
|
205
|
+
/** True when any line of the commit message is a DCO Signed-off-by trailer. */
|
|
206
|
+
export function commitHasSignoff(message) {
|
|
207
|
+
return message.split("\n").some((line) => /^Signed-off-by:\s*\S/i.test(line.trim()));
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* The artifact findings: changeset file missing, DCO trailers missing,
|
|
211
|
+
* CLA status not visible. Pure over injected repo conventions and PR data.
|
|
212
|
+
* A "cla" artifact check fires only when the repo was detected to demand
|
|
213
|
+
* a CLA path; wording is absence-of-evidence, never an accusation.
|
|
214
|
+
*/
|
|
215
|
+
export function checkMissingArtifacts(args) {
|
|
216
|
+
const findings = [];
|
|
217
|
+
const { conventions, changedFiles, commits, prLabels, prAuthor, prComments } = args;
|
|
218
|
+
if (conventions.changesetDir) {
|
|
219
|
+
const dir = conventions.changesetDir;
|
|
220
|
+
const hasFile = changedFiles.some((f) => f === `${dir}/` || f.startsWith(`${dir}/`));
|
|
221
|
+
if (!hasFile) {
|
|
222
|
+
findings.push({
|
|
223
|
+
check: "changeset-missing",
|
|
224
|
+
severity: "flag",
|
|
225
|
+
title: `Missing release-note file (repo uses ${dir}/)`,
|
|
226
|
+
evidence: [
|
|
227
|
+
`this PR changes ${changedFiles.length} file${changedFiles.length === 1 ? "" : "s"} but adds no file under ${dir}/`,
|
|
228
|
+
conventions.changesetExample
|
|
229
|
+
? `the repo assembles its changelog from ${dir}/; expected something like \`${conventions.changesetExample}\``
|
|
230
|
+
: `the repo assembles its changelog from ${dir}/; add one file per change there`,
|
|
231
|
+
],
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
if (conventions.dcoRequired) {
|
|
236
|
+
const unsigned = commits.filter((c) => !commitHasSignoff(c.message));
|
|
237
|
+
if (unsigned.length > 0) {
|
|
238
|
+
findings.push({
|
|
239
|
+
check: "dco-missing",
|
|
240
|
+
severity: "flag",
|
|
241
|
+
title: `DCO sign-off missing on ${unsigned.length} of ${commits.length} commit${commits.length === 1 ? "" : "s"}`,
|
|
242
|
+
evidence: [
|
|
243
|
+
`commits without a Signed-off-by trailer: ${unsigned
|
|
244
|
+
.slice(0, 5)
|
|
245
|
+
.map((c) => c.sha.slice(0, 7))
|
|
246
|
+
.join(", ")}${unsigned.length > 5 ? ` (+${unsigned.length - 5} more)` : ""}`,
|
|
247
|
+
`the repo requires \`git commit -s\` on every commit (Developer Certificate of Origin)`,
|
|
248
|
+
],
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (conventions.claRequired) {
|
|
253
|
+
const labelSigned = prLabels.some((l) => l.toLowerCase() === "cla-signed");
|
|
254
|
+
const commentSigned = prComments.some((c) => c.author.toLowerCase() === prAuthor.toLowerCase() &&
|
|
255
|
+
/i have read the cla document and i hereby sign the cla/i.test(c.body));
|
|
256
|
+
if (!labelSigned && !commentSigned) {
|
|
257
|
+
findings.push({
|
|
258
|
+
check: "cla-status",
|
|
259
|
+
severity: "flag",
|
|
260
|
+
title: "CLA status not visible",
|
|
261
|
+
evidence: [
|
|
262
|
+
`no \`cla-signed\` label and no signature comment from @${prAuthor} found on this PR`,
|
|
263
|
+
`stated as absence of evidence only: the author may have signed through a flow this check cannot see`,
|
|
264
|
+
],
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return findings;
|
|
269
|
+
}
|
|
270
|
+
/** Light author-history signal. Null means the lookup failed: no finding. */
|
|
271
|
+
export function checkFirstTime(author, priorMerged) {
|
|
272
|
+
if (priorMerged === null)
|
|
273
|
+
return null;
|
|
274
|
+
if (priorMerged > 0)
|
|
275
|
+
return null;
|
|
276
|
+
return {
|
|
277
|
+
check: "first-time",
|
|
278
|
+
severity: "note",
|
|
279
|
+
title: `First-time contributor`,
|
|
280
|
+
evidence: [`@${author} has no previously merged PRs in this repo`],
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
/* ------------------------------------------------------------------ */
|
|
284
|
+
/* Rendering */
|
|
285
|
+
/* ------------------------------------------------------------------ */
|
|
286
|
+
function plural(n, one, many) {
|
|
287
|
+
return n === 1 ? one : many;
|
|
288
|
+
}
|
|
289
|
+
export function renderGuardMarkdown(result) {
|
|
290
|
+
const lines = [GUARD_COMMENT_MARKER];
|
|
291
|
+
lines.push(`**${result.summary}** — on [${result.repo}#${result.number}](${result.pr}) "${result.title}" by @${result.author}`);
|
|
292
|
+
lines.push("");
|
|
293
|
+
const flags = result.findings.filter((f) => f.severity === "flag");
|
|
294
|
+
const notes = result.findings.filter((f) => f.severity === "note");
|
|
295
|
+
if (flags.length === 0) {
|
|
296
|
+
lines.push("_Nothing flagged._ The checks below found no competing fix, no prior claim by someone else, and no missing artifacts.");
|
|
297
|
+
lines.push("");
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
let i = 0;
|
|
301
|
+
for (const f of flags) {
|
|
302
|
+
i += 1;
|
|
303
|
+
lines.push(`**${i}. ${f.title}**`);
|
|
304
|
+
for (const e of f.evidence)
|
|
305
|
+
lines.push(`- ${e}`);
|
|
306
|
+
lines.push("");
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
if (notes.length > 0) {
|
|
310
|
+
lines.push("Notes:");
|
|
311
|
+
for (const f of notes) {
|
|
312
|
+
for (const e of f.evidence)
|
|
313
|
+
lines.push(`- ${e}`);
|
|
314
|
+
}
|
|
315
|
+
lines.push("");
|
|
316
|
+
}
|
|
317
|
+
lines.push("---");
|
|
318
|
+
lines.push(`_Checked with [Greenlight guard](https://github.com/CloudCorpRecords/greenlight) v${GUARD_VERSION}; findings are signals, verify before acting._`);
|
|
319
|
+
return lines.join("\n");
|
|
320
|
+
}
|
|
321
|
+
export function buildGuardSummary(findings) {
|
|
322
|
+
const flags = findings.filter((f) => f.severity === "flag").length;
|
|
323
|
+
return {
|
|
324
|
+
summary: flags === 0 ? "Greenlight guard: nothing flagged" : `Greenlight guard: ${flags} ${plural(flags, "thing", "things")} to check`,
|
|
325
|
+
hasFindings: flags > 0,
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
async function paginateFiles(owner, repo, number) {
|
|
329
|
+
const files = [];
|
|
330
|
+
for (let page = 1; page <= 5; page++) {
|
|
331
|
+
const data = (await apiGet(`/repos/${owner}/${repo}/pulls/${number}/files?per_page=100&page=${page}`));
|
|
332
|
+
for (const f of data ?? []) {
|
|
333
|
+
if (typeof f.filename === "string")
|
|
334
|
+
files.push(f.filename);
|
|
335
|
+
}
|
|
336
|
+
if ((data ?? []).length < 100)
|
|
337
|
+
break;
|
|
338
|
+
}
|
|
339
|
+
return files;
|
|
340
|
+
}
|
|
341
|
+
async function defaultFetchPull(owner, repo, number) {
|
|
342
|
+
const p = (await apiGet(`/repos/${owner}/${repo}/pulls/${number}`));
|
|
343
|
+
const commitsData = (await apiGet(`/repos/${owner}/${repo}/pulls/${number}/commits?per_page=100`));
|
|
344
|
+
const comments = await fetchComments(owner, repo, number);
|
|
345
|
+
return {
|
|
346
|
+
title: String(p.title ?? ""),
|
|
347
|
+
body: String(p.body ?? ""),
|
|
348
|
+
author: String(p.user?.login ?? ""),
|
|
349
|
+
headRef: String(p.head?.ref ?? ""),
|
|
350
|
+
createdAt: String(p.created_at ?? ""),
|
|
351
|
+
labels: (p.labels ?? []).map((l) => String(l.name ?? "")),
|
|
352
|
+
changedFiles: await paginateFiles(owner, repo, number),
|
|
353
|
+
commits: (commitsData ?? []).map((c) => ({
|
|
354
|
+
sha: String(c.sha ?? ""),
|
|
355
|
+
message: String(c.commit?.message ?? ""),
|
|
356
|
+
})),
|
|
357
|
+
comments,
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
async function defaultFetchIssue(owner, repo, number) {
|
|
361
|
+
const issue = (await apiGet(`/repos/${owner}/${repo}/issues/${number}`));
|
|
362
|
+
const comments = await fetchComments(owner, repo, number);
|
|
363
|
+
return {
|
|
364
|
+
number,
|
|
365
|
+
title: String(issue.title ?? ""),
|
|
366
|
+
author: String(issue.user?.login ?? ""),
|
|
367
|
+
state: String(issue.state ?? ""),
|
|
368
|
+
comments,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
async function defaultFetchConventions(owner, repo, issueNumber) {
|
|
372
|
+
const conventions = { dcoRequired: false, claRequired: false };
|
|
373
|
+
try {
|
|
374
|
+
let rootNames = [];
|
|
375
|
+
try {
|
|
376
|
+
const root = (await apiGet(`/repos/${owner}/${repo}/contents/`));
|
|
377
|
+
rootNames = (root ?? []).map((r) => String(r.name ?? ""));
|
|
378
|
+
}
|
|
379
|
+
catch {
|
|
380
|
+
rootNames = [];
|
|
381
|
+
}
|
|
382
|
+
let policyText = "";
|
|
383
|
+
try {
|
|
384
|
+
const contributing = (await apiGet(`/repos/${owner}/${repo}/contents/CONTRIBUTING.md`));
|
|
385
|
+
if (typeof contributing.content === "string" && contributing.encoding === "base64") {
|
|
386
|
+
policyText = Buffer.from(contributing.content, "base64").toString("utf8");
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
catch {
|
|
390
|
+
policyText = "";
|
|
391
|
+
}
|
|
392
|
+
// The example filename should read like ".changeset/4668-fix-time-format.md",
|
|
393
|
+
// never ".changeset/4668-pr-4668.md": slugify the linked issue's title
|
|
394
|
+
// the same way prep does (detectChangesetConvention expects a real title
|
|
395
|
+
// slug, which prep builds via titleSlug(snapshot.title)). When the title
|
|
396
|
+
// is unavailable, titleSlug("") degrades to a plain "work" instead of
|
|
397
|
+
// doubling the issue number.
|
|
398
|
+
let slug = "work";
|
|
399
|
+
try {
|
|
400
|
+
const issue = (await apiGet(`/repos/${owner}/${repo}/issues/${issueNumber}`));
|
|
401
|
+
slug = titleSlug(String(issue.title ?? ""));
|
|
402
|
+
}
|
|
403
|
+
catch {
|
|
404
|
+
// keep the plain fallback
|
|
405
|
+
}
|
|
406
|
+
const convention = detectChangesetConvention({
|
|
407
|
+
rootNames,
|
|
408
|
+
policyText,
|
|
409
|
+
policySource: "CONTRIBUTING.md",
|
|
410
|
+
issueNumber,
|
|
411
|
+
slug,
|
|
412
|
+
});
|
|
413
|
+
if (convention && (convention.style === "changes-dir" || convention.style === "changesets")) {
|
|
414
|
+
conventions.changesetDir = convention.style === "changes-dir" ? ".changes" : ".changeset";
|
|
415
|
+
conventions.changesetExample = convention.example;
|
|
416
|
+
}
|
|
417
|
+
const gates = parseGates(policyText, { collaboratorsOnlyPolicy: false });
|
|
418
|
+
conventions.dcoRequired = gates.some((g) => g.kind === "dco_required" && g.detected);
|
|
419
|
+
const cla = detectClaPath([{ file: "CONTRIBUTING.md", text: policyText }], gates);
|
|
420
|
+
conventions.claRequired = cla.kind === "cla-assistant" || cla.kind === "custom-cla-bot";
|
|
421
|
+
}
|
|
422
|
+
catch {
|
|
423
|
+
// Conventions are best-effort; empty means no artifact checks fire.
|
|
424
|
+
}
|
|
425
|
+
return conventions;
|
|
426
|
+
}
|
|
427
|
+
async function defaultFetchPriorMerged(owner, repo, author) {
|
|
428
|
+
try {
|
|
429
|
+
const q = encodeURIComponent(`repo:${owner}/${repo} author:${author} type:pr is:merged`);
|
|
430
|
+
const data = (await apiGet(`/search/issues?q=${q}&per_page=1`));
|
|
431
|
+
const total = typeof data.total_count === "number" ? data.total_count : null;
|
|
432
|
+
return total;
|
|
433
|
+
}
|
|
434
|
+
catch {
|
|
435
|
+
return null;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Full guard for a PR URL. Best-effort throughout: anything that cannot
|
|
440
|
+
* be read degrades to "no evidence" and its check is skipped.
|
|
441
|
+
*/
|
|
442
|
+
export async function guardPr(prUrl, deps = {}, config = defaultGuardConfig()) {
|
|
443
|
+
const { owner, repo, number } = parsePullUrl(prUrl);
|
|
444
|
+
const fetchPull = deps.fetchPull ?? defaultFetchPull;
|
|
445
|
+
const fetchIssue = deps.fetchIssue ?? defaultFetchIssue;
|
|
446
|
+
const fetchConventions = deps.fetchConventions ?? defaultFetchConventions;
|
|
447
|
+
const fetchPriorMerged = deps.fetchPriorMerged ?? defaultFetchPriorMerged;
|
|
448
|
+
const fetchIssueLinkedPRs = deps.fetchLinkedPRs ?? fetchLinkedPRs;
|
|
449
|
+
const fetchAuthor = deps.fetchPRAuthor ?? (async (owner, repo, n) => {
|
|
450
|
+
const detail = (await apiGet(`/repos/${owner}/${repo}/pulls/${n}`));
|
|
451
|
+
return String(detail.user?.login ?? "unknown");
|
|
452
|
+
});
|
|
453
|
+
const pull = await fetchPull(owner, repo, number);
|
|
454
|
+
const issueNumbers = extractLinkedIssueNumbers(pull.title, pull.body, pull.headRef);
|
|
455
|
+
// Cross-repo issue links ("Fixes acme/widgets#123"): the issue, its
|
|
456
|
+
// comments, and its timeline all live in the referenced repo, so every
|
|
457
|
+
// check below runs against that repo, not the PR's own.
|
|
458
|
+
const crossRepoIssues = extractCrossRepoIssues(pull.title, pull.body, owner, repo);
|
|
459
|
+
const linkedRefs = [
|
|
460
|
+
...issueNumbers.map((n) => ({ iOwner: owner, iRepo: repo, number: n, label: `#${n}` })),
|
|
461
|
+
...crossRepoIssues.map((r) => ({ iOwner: r.owner, iRepo: r.repo, number: r.number, label: `${r.owner}/${r.repo}#${r.number}` })),
|
|
462
|
+
];
|
|
463
|
+
const linkedIssues = [];
|
|
464
|
+
const competingPRs = [];
|
|
465
|
+
const claims = [];
|
|
466
|
+
const findings = [];
|
|
467
|
+
const authorsByNumber = new Map();
|
|
468
|
+
if (config["competing-fix"] || config["other-claim"]) {
|
|
469
|
+
for (const ref of linkedRefs) {
|
|
470
|
+
const { iOwner, iRepo, number: issueNumber, label } = ref;
|
|
471
|
+
const issueRef = label === `#${issueNumber}` ? undefined : label;
|
|
472
|
+
let issue = null;
|
|
473
|
+
try {
|
|
474
|
+
issue = await fetchIssue(iOwner, iRepo, issueNumber);
|
|
475
|
+
}
|
|
476
|
+
catch {
|
|
477
|
+
issue = null;
|
|
478
|
+
}
|
|
479
|
+
if (issue) {
|
|
480
|
+
linkedIssues.push({
|
|
481
|
+
number: issueNumber,
|
|
482
|
+
title: issue.title,
|
|
483
|
+
url: `https://github.com/${iOwner}/${iRepo}/issues/${issueNumber}`,
|
|
484
|
+
state: issue.state,
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
if (config["competing-fix"]) {
|
|
488
|
+
let linked = [];
|
|
489
|
+
try {
|
|
490
|
+
linked = await fetchIssueLinkedPRs(iOwner, iRepo, issueNumber);
|
|
491
|
+
}
|
|
492
|
+
catch {
|
|
493
|
+
linked = [];
|
|
494
|
+
}
|
|
495
|
+
for (const pr of linked) {
|
|
496
|
+
if (!authorsByNumber.has(pr.number)) {
|
|
497
|
+
try {
|
|
498
|
+
authorsByNumber.set(pr.number, await fetchAuthor(iOwner, iRepo, pr.number));
|
|
499
|
+
}
|
|
500
|
+
catch {
|
|
501
|
+
authorsByNumber.set(pr.number, "unknown");
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
for (const c of findCompetingPRs(issueNumber, linked, number, authorsByNumber)) {
|
|
506
|
+
competingPRs.push({ ...c, issueRef });
|
|
507
|
+
findings.push({
|
|
508
|
+
check: "competing-fix",
|
|
509
|
+
severity: "flag",
|
|
510
|
+
title: `Competing fix for ${label}`,
|
|
511
|
+
evidence: [
|
|
512
|
+
`another open PR already claims this issue: #${c.number} by @${c.author} ("${c.title}")`,
|
|
513
|
+
c.via === "timeline"
|
|
514
|
+
? `found in the issue's timeline (a fix announcement, even though its body may not say "fixes ${label}")`
|
|
515
|
+
: `its body or branch claims ${label}`,
|
|
516
|
+
`${c.url}`,
|
|
517
|
+
],
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
if (config["other-claim"] && issue) {
|
|
522
|
+
const { foreign, authorClaimed } = splitIssueClaims(issue.author, issue.comments, pull.author, pull.createdAt, issueNumber);
|
|
523
|
+
for (const c of foreign) {
|
|
524
|
+
claims.push({ ...c, issueRef });
|
|
525
|
+
const evidence = [
|
|
526
|
+
`@${c.author} posted a ${c.strength} claim on ${label} on ${c.createdAt.slice(0, 10)} (${c.ageDays} day${c.ageDays === 1 ? "" : "s"} before this PR's code existed in its current form), pattern: ${c.phrase}`,
|
|
527
|
+
];
|
|
528
|
+
// A claim that was already old when the PR opened still counts as
|
|
529
|
+
// a flag (it is evidence of interest), but a 90+ day gap usually
|
|
530
|
+
// means the claimant walked away. The flag stays; the annotation
|
|
531
|
+
// helps the maintainer weigh it. (firecrawl#839: two claims were
|
|
532
|
+
// 374 and 309 days old at PR creation.)
|
|
533
|
+
const ageAtPr = daysBetween(new Date(c.createdAt), new Date(pull.createdAt));
|
|
534
|
+
if (ageAtPr > 90) {
|
|
535
|
+
evidence.push(`this claim is ${ageAtPr} days old at this PR's creation and may have been abandoned; weigh it accordingly`);
|
|
536
|
+
}
|
|
537
|
+
findings.push({
|
|
538
|
+
check: "other-claim",
|
|
539
|
+
severity: "flag",
|
|
540
|
+
title: `Issue claimed by @${c.author} before this PR`,
|
|
541
|
+
evidence,
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
if (authorClaimed) {
|
|
545
|
+
claims.push({ ...authorClaimed, issueRef });
|
|
546
|
+
findings.push({
|
|
547
|
+
check: "author-claim",
|
|
548
|
+
severity: "note",
|
|
549
|
+
title: `Claimed by the PR author`,
|
|
550
|
+
evidence: [`@${pull.author} claimed ${label} in the issue comments before opening this PR — expected, no conflict`],
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
if (config["missing-artifact"]) {
|
|
557
|
+
let conventions;
|
|
558
|
+
try {
|
|
559
|
+
conventions = await fetchConventions(owner, repo, issueNumbers[0] ?? number);
|
|
560
|
+
}
|
|
561
|
+
catch {
|
|
562
|
+
conventions = { dcoRequired: false, claRequired: false };
|
|
563
|
+
}
|
|
564
|
+
for (const f of checkMissingArtifacts({
|
|
565
|
+
conventions,
|
|
566
|
+
changedFiles: pull.changedFiles,
|
|
567
|
+
commits: pull.commits,
|
|
568
|
+
prLabels: pull.labels,
|
|
569
|
+
prAuthor: pull.author,
|
|
570
|
+
prComments: pull.comments,
|
|
571
|
+
})) {
|
|
572
|
+
findings.push(f);
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
if (config["first-time"]) {
|
|
576
|
+
let prior = null;
|
|
577
|
+
try {
|
|
578
|
+
prior = await fetchPriorMerged(owner, repo, pull.author);
|
|
579
|
+
}
|
|
580
|
+
catch {
|
|
581
|
+
prior = null;
|
|
582
|
+
}
|
|
583
|
+
const f = checkFirstTime(pull.author, prior);
|
|
584
|
+
if (f)
|
|
585
|
+
findings.push(f);
|
|
586
|
+
}
|
|
587
|
+
const { summary, hasFindings } = buildGuardSummary(findings);
|
|
588
|
+
const result = {
|
|
589
|
+
pr: prUrl,
|
|
590
|
+
number,
|
|
591
|
+
repo: `${owner}/${repo}`,
|
|
592
|
+
title: pull.title,
|
|
593
|
+
author: pull.author,
|
|
594
|
+
linkedIssues,
|
|
595
|
+
competingPRs,
|
|
596
|
+
claims,
|
|
597
|
+
findings,
|
|
598
|
+
summary,
|
|
599
|
+
hasFindings,
|
|
600
|
+
markdown: "",
|
|
601
|
+
};
|
|
602
|
+
result.markdown = renderGuardMarkdown(result);
|
|
603
|
+
return result;
|
|
604
|
+
}
|
|
605
|
+
//# sourceMappingURL=guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,8 @@ import { fetchMergeVelocity } from "./merge-velocity.js";
|
|
|
14
14
|
import { createRestClient, claimIssue, prepIssue, openPr, AutomationRefusal, } from "./automate.js";
|
|
15
15
|
import { triagePr } from "./ci-triage.js";
|
|
16
16
|
import { triageReview } from "./review-triage.js";
|
|
17
|
-
|
|
17
|
+
import { guardPr, readGuardConfig } from "./guard.js";
|
|
18
|
+
const server = new McpServer({ name: "greenlight", version: "0.3.10" });
|
|
18
19
|
const text = (obj) => ({
|
|
19
20
|
content: [{ type: "text", text: JSON.stringify(obj, null, 2) }],
|
|
20
21
|
});
|
|
@@ -203,6 +204,17 @@ server.tool("review_triage", "Triage the review feedback on your PR: which comme
|
|
|
203
204
|
return text({ error: err instanceof Error ? err.message : String(err) });
|
|
204
205
|
}
|
|
205
206
|
});
|
|
207
|
+
server.tool("guard_pr", "Maintainer-side analysis of an incoming pull request: competing fix (other open PRs already fixing the same issue), prior claims by someone other than the PR author, missing required artifacts (changeset file, DCO sign-off, CLA status), and whether the author is a first-time contributor. Returns markdown ready to post as one PR comment plus structured findings. Reads a .greenlight-guard.json in the working directory for per-repo check toggles. Never posts anything. Call this from a GitHub Action or before reviewing an incoming PR.", {
|
|
208
|
+
pr_url: z.string().describe("Full GitHub PR URL, e.g. https://github.com/owner/repo/pull/123"),
|
|
209
|
+
}, async ({ pr_url }) => {
|
|
210
|
+
try {
|
|
211
|
+
const result = await guardPr(pr_url, {}, readGuardConfig());
|
|
212
|
+
return text(result);
|
|
213
|
+
}
|
|
214
|
+
catch (err) {
|
|
215
|
+
return text({ error: err instanceof Error ? err.message : String(err) });
|
|
216
|
+
}
|
|
217
|
+
});
|
|
206
218
|
const transport = new StdioServerTransport();
|
|
207
219
|
await server.connect(transport);
|
|
208
220
|
console.error("greenlight MCP server running on stdio");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/integrations/README.md
CHANGED
|
@@ -29,7 +29,7 @@ without it the tools still work but share the small anonymous budget.
|
|
|
29
29
|
## Verify it worked
|
|
30
30
|
|
|
31
31
|
Ask the agent: "list your MCP tools." You should see the `greenlight`
|
|
32
|
-
server with all
|
|
32
|
+
server with all 9 tools:
|
|
33
33
|
|
|
34
34
|
- `check_issue` — verdict on whether an issue is landable (GO / RISKY / TAKEN / GATED / STALE)
|
|
35
35
|
- `scan_repo` — find starter issues worth working in a repo
|
|
@@ -39,6 +39,7 @@ server with all 8 tools:
|
|
|
39
39
|
- `open_pr` — compose the PR with the verdict and gates recorded (dry run by default)
|
|
40
40
|
- `ci_triage` — is each red check pre-existing, yours, or an external blocker
|
|
41
41
|
- `review_triage` — classify review findings and draft replies (never posts)
|
|
42
|
+
- `guard_pr` — maintainer-side: competing fix, prior claims, missing artifacts, first-time contributor (never posts)
|
|
42
43
|
|
|
43
44
|
## Format notes
|
|
44
45
|
|
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
"url": "https://github.com/CloudCorpRecords/greenlight",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.3.
|
|
9
|
+
"version": "0.3.10",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
14
14
|
"identifier": "@reneturcios/greenlight",
|
|
15
|
-
"version": "0.3.
|
|
15
|
+
"version": "0.3.10",
|
|
16
16
|
"runtimeHint": "npx",
|
|
17
17
|
"packageArguments": [
|
|
18
18
|
{
|