@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 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
@@ -1 +1 @@
1
- {"version":3,"file":"claims.js","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"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"}
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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"}
@@ -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
- const server = new McpServer({ name: "greenlight", version: "0.3.8" });
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":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,MAAM,EACN,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAEvE,MAAM,IAAI,GAAG,CAAC,GAAY,EAAE,EAAE,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;CACzE,CAAC,CAAC;AAEH,MAAM,CAAC,IAAI,CACT,aAAa,EACb,gOAAgO,EAChO;IACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;CACvG,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,CAAC;IAChO,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,WAAW,EACX,gSAAgS,EAChS;IACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CAChE,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,6BAA6B,IAAI,EAAE,EAAE,CAAC,CAAC;QACpE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpE,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACpC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9H,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACjJ,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAA2B,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,2IAA2I,EAC3I;IACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CAChE,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,6BAA6B,IAAI,EAAE,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7D,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/B,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,EAAE,EAAE,uBAAuB,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC9F,MAAM,MAAM,GAAG,aAAa,CAAC;YAC3B,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACV,KAAK;YACL,mBAAmB,EAAE,IAAI;YACzB,sBAAsB,EAAE,IAAI;YAC5B,4BAA4B,EAAE,IAAI;YAClC,uBAAuB,EAAE,YAAY;YACrC,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QACH,4CAA4C;QAC5C,IAAI,CAAC;YACH,MAAM,CAAC,aAAa,GAAG,MAAM,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,aAAa,EACb,oSAAoS,EACpS;IACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;IACtG,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,8EAA8E,CAAC;IAC5H,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CACtF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;IACtC,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC;YACV,KAAK,EAAE,QAAQ,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,iBAAiB;YAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,mXAAmX,EACnX;IACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;IACtG,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,oFAAoF,CAAC;IAClI,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;CAC7G,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE;IACpC,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;YACV,KAAK,EAAE,QAAQ,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;YACrC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,IAAI;YACzC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,IAAI,IAAI;YAC7C,oBAAoB,EAAE,IAAI,CAAC,UAAU,EAAE,oBAAoB,IAAI,EAAE;YACjE,iBAAiB,EAAE,IAAI,CAAC,UAAU,EAAE,iBAAiB,IAAI,EAAE;SAC5D,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,iBAAiB;YAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,SAAS,EACT,oXAAoX,EACpX;IACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;IACtG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IACnF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,yEAAyE,CAAC;IACvH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uFAAuF,CAAC;CAC/H,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;IAC9C,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC;YACV,KAAK,EAAE,QAAQ,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,iBAAiB;YAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,WAAW,EACX,iZAAiZ,EACjZ;IACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;CAC/F,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IACnB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,0ZAA0Z,EAC1Z;IACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;CAC/F,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IACnB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -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 8 tools:
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
@@ -25,7 +25,7 @@
25
25
  "test": "tsx --test test/*.test.ts"
26
26
  },
27
27
  "type": "module",
28
- "version": "0.3.8",
28
+ "version": "0.3.10",
29
29
  "mcpName": "io.github.CloudCorpRecords/greenlight",
30
30
  "publishConfig": {
31
31
  "access": "public"
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.8",
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.8",
15
+ "version": "0.3.10",
16
16
  "runtimeHint": "npx",
17
17
  "packageArguments": [
18
18
  {