@reneturcios/greenlight 0.3.11 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -1
- package/dist/automate.d.ts +14 -1
- package/dist/automate.js +30 -12
- package/dist/automate.js.map +1 -1
- package/dist/cli.js +194 -7
- package/dist/cli.js.map +1 -1
- package/dist/digest.d.ts +1 -1
- package/dist/digest.js +1 -1
- package/dist/digest.js.map +1 -1
- package/dist/doctor.d.ts +34 -0
- package/dist/doctor.js +158 -0
- package/dist/doctor.js.map +1 -0
- package/dist/friction.d.ts +7 -0
- package/dist/friction.js +36 -0
- package/dist/friction.js.map +1 -1
- package/dist/github.js +2 -2
- package/dist/github.js.map +1 -1
- package/dist/guard.d.ts +5 -3
- package/dist/guard.js +60 -5
- package/dist/guard.js.map +1 -1
- package/dist/help.d.ts +25 -0
- package/dist/help.js +234 -0
- package/dist/help.js.map +1 -0
- package/dist/index.js +85 -33
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +61 -0
- package/dist/init.js +298 -0
- package/dist/init.js.map +1 -0
- package/dist/protocol-fetch.d.ts +142 -0
- package/dist/protocol-fetch.js +350 -0
- package/dist/protocol-fetch.js.map +1 -0
- package/dist/protocol.d.ts +232 -0
- package/dist/protocol.js +484 -0
- package/dist/protocol.js.map +1 -0
- package/dist/verify-comment.d.ts +75 -0
- package/dist/verify-comment.js +149 -0
- package/dist/verify-comment.js.map +1 -0
- package/dist/verify-parsers.d.ts +25 -0
- package/dist/verify-parsers.js +56 -0
- package/dist/verify-parsers.js.map +1 -0
- package/dist/verify.d.ts +52 -0
- package/dist/verify.js +276 -0
- package/dist/verify.js.map +1 -0
- package/integrations/README.md +4 -1
- package/integrations/claude-code/CLAUDE.snippet.md +6 -5
- package/integrations/cline/README.md +1 -1
- package/integrations/copilot/copilot-instructions.snippet.md +6 -3
- package/integrations/cursor/greenlight.mdc +2 -1
- package/integrations/windsurf/README.md +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
package/dist/help.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAUpD,MAAM,CAAC,MAAM,QAAQ,GAAkB;IACrC;QACE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,2DAA2D;QAClE,WAAW,EAAE,wEAAwE;QACrF,KAAK,EAAE,CAAC,kCAAkC,EAAE,+DAA+D,CAAC;QAC5G,QAAQ,EAAE,CAAC,2DAA2D,CAAC;KACxE;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,wCAAwC;QAC/C,WAAW,EAAE,kFAAkF;QAC/F,KAAK,EAAE,CAAC,kCAAkC,CAAC;QAC3C,QAAQ,EAAE,CAAC,4DAA4D,CAAC;KACzE;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,2EAA2E;QAClF,WAAW,EAAE,yDAAyD;QACtE,KAAK,EAAE;YACL,kCAAkC;YAClC,0DAA0D;YAC1D,+DAA+D;SAChE;QACD,QAAQ,EAAE,CAAC,gCAAgC,CAAC;KAC7C;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,2CAA2C;QAClD,WAAW,EAAE,mEAAmE;QAChF,KAAK,EAAE,CAAC,kCAAkC,CAAC;QAC3C,QAAQ,EAAE,CAAC,oCAAoC,CAAC;KACjD;IACD;QACE,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,iCAAiC;QACxC,WAAW,EAAE,qFAAqF;QAClG,KAAK,EAAE,CAAC,kCAAkC,CAAC;QAC3C,QAAQ,EAAE,CAAC,sDAAsD,CAAC;KACnE;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,qCAAqC;QAC5C,WAAW,EAAE,kFAAkF;QAC/F,KAAK,EAAE,CAAC,kCAAkC,CAAC;QAC3C,QAAQ,EAAE,CAAC,0DAA0D,CAAC;KACvE;IACD;QACE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,8CAA8C;QACrD,WAAW,EAAE,oGAAoG;QACjH,KAAK,EAAE,CAAC,kCAAkC,EAAE,mCAAmC,CAAC;QAChF,QAAQ,EAAE,CAAC,yDAAyD,CAAC;KACtE;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,sEAAsE;QAC7E,WAAW,EAAE,4FAA4F;QACzG,KAAK,EAAE;YACL,kCAAkC;YAClC,mDAAmD;YACnD,+CAA+C;SAChD;QACD,QAAQ,EAAE,CAAC,kCAAkC,CAAC;KAC/C;IACD;QACE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,sFAAsF;QAC7F,WAAW,EAAE,2FAA2F;QACxG,KAAK,EAAE;YACL,mCAAmC;YACnC,sCAAsC;YACtC,2DAA2D;YAC3D,iEAAiE;YACjE,kCAAkC;SACnC;QACD,QAAQ,EAAE,CAAC,2DAA2D,CAAC;KACxE;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,2DAA2D;QAClE,WAAW,EAAE,oFAAoF;QACjG,KAAK,EAAE,CAAC,6CAA6C,EAAE,qCAAqC,EAAE,kCAAkC,CAAC;QACjI,QAAQ,EAAE,CAAC,0EAA0E,CAAC;KACvF;IACD;QACE,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,wEAAwE;QAC/E,WAAW,EAAE,yFAAyF;QACtG,KAAK,EAAE;YACL,8CAA8C;YAC9C,0DAA0D;YAC1D,8BAA8B;YAC9B,kCAAkC;SACnC;QACD,QAAQ,EAAE,CAAC,+EAA+E,CAAC;KAC5F;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,wHAAwH;QAC/H,WAAW,EAAE,sFAAsF;QACnG,KAAK,EAAE;YACL,0DAA0D;YAC1D,qCAAqC;YACrC,mCAAmC;YACnC,uCAAuC;YACvC,mDAAmD;YACnD,oCAAoC;YACpC,kCAAkC;SACnC;QACD,QAAQ,EAAE,CAAC,qCAAqC,EAAE,iCAAiC,CAAC;KACrF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,uFAAuF;QACpG,KAAK,EAAE,CAAC,kCAAkC,CAAC;QAC3C,QAAQ,EAAE,CAAC,mBAAmB,CAAC;KAChC;IACD;QACE,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,sFAAsF;QACnG,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,CAAC,gBAAgB,CAAC;KAC7B;CACF,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,KAAK,EAAE,8EAA8E;IACrF,MAAM,EAAE,+EAA+E;IACvF,IAAI,EAAE,6CAA6C;IACnD,QAAQ,EAAE,iDAAiD;IAC3D,EAAE,EAAE,qEAAqE;IACzE,MAAM,EAAE,yEAAyE;IACjF,KAAK,EAAE,wEAAwE;IAC/E,MAAM,EAAE,+CAA+C;IACvD,KAAK,EAAE,8EAA8E;IACrF,IAAI,EAAE,6EAA6E;IACnF,EAAE,EAAE,gHAAgH;CACrH,CAAC;AAEF,mEAAmE;AACnE,MAAM,UAAU,YAAY;IAC1B,MAAM,KAAK,GAAG;QACZ,6DAA6D;QAC7D,EAAE;QACF,aAAa;QACb,wEAAwE;QACxE,2EAA2E;QAC3E,2EAA2E;QAC3E,EAAE;QACF,WAAW;KACZ,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,KAAK,CAAC,IAAI,CACR,EAAE,EACF,iFAAiF,EACjF,EAAE,EACF,0EAA0E,EAC1E,iEAAiE,EACjE,EAAE,EACF,0EAA0E,CAC3E,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAgB;IAC9C,MAAM,KAAK,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3F,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO,YAAY,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,CACL,oBAAoB,IAAI,IAAI;YAC5B,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,UAAU,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM;YACN,YAAY,EAAE,CACf,CAAC;IACJ,CAAC;IACD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAC/B,IAAI,IAAwB,CAAC;IAC7B,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC;YACjB,QAAQ,GAAG,CAAC,CAAC;YACb,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,CAAS,EAAE,CAAS;IACxC,MAAM,IAAI,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACrE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAChF,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CACnB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAClB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAClB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACrD,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,qBAAqB,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,cAAc,cAAc,EAAE,EAAE,CAAC;AAC1C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,17 +6,28 @@
|
|
|
6
6
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
7
7
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
8
8
|
import { z } from "zod";
|
|
9
|
-
import { parseIssueUrl, buildIssueSnapshot, scanCandidates,
|
|
9
|
+
import { parseIssueUrl, buildIssueSnapshot, scanCandidates, } from "./github.js";
|
|
10
10
|
import { scoreIssue } from "./verdict.js";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { fetchMergeVelocity } from "./merge-velocity.js";
|
|
11
|
+
import { fetchFrictionSummary } from "./friction.js";
|
|
12
|
+
import { computeIssueStatus, checkIssueWithProtocol } from "./protocol-fetch.js";
|
|
14
13
|
import { createRestClient, claimIssue, prepIssue, openPr, AutomationRefusal, } from "./automate.js";
|
|
15
14
|
import { triagePr } from "./ci-triage.js";
|
|
16
15
|
import { triageReview } from "./review-triage.js";
|
|
17
16
|
import { guardPr, readGuardConfig } from "./guard.js";
|
|
18
17
|
import { digestRepo } from "./digest.js";
|
|
19
|
-
|
|
18
|
+
import { buildVerifiedComment, suggestsVerifiedComment, } from "./verify-comment.js";
|
|
19
|
+
import { createRequire } from "node:module";
|
|
20
|
+
// Same version fact the CLI footer prints: read from package.json so the
|
|
21
|
+
// two can never drift apart.
|
|
22
|
+
const GREENLIGHT_VERSION = (() => {
|
|
23
|
+
try {
|
|
24
|
+
return createRequire(import.meta.url)("../package.json").version;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return "unknown";
|
|
28
|
+
}
|
|
29
|
+
})();
|
|
30
|
+
const server = new McpServer({ name: "greenlight", version: "0.5.0" });
|
|
20
31
|
const text = (obj) => ({
|
|
21
32
|
content: [{ type: "text", text: JSON.stringify(obj, null, 2) }],
|
|
22
33
|
});
|
|
@@ -25,9 +36,10 @@ server.tool("check_issue", "Verdict on whether a GitHub issue is actually landab
|
|
|
25
36
|
}, async ({ issue_url }) => {
|
|
26
37
|
try {
|
|
27
38
|
const { owner, repo, number } = parseIssueUrl(issue_url);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
39
|
+
// Merged verdict: the protocol claim state overrides legacy claim
|
|
40
|
+
// inference, but never gates or cross-referenced PR evidence.
|
|
41
|
+
const { snapshot, merged } = await checkIssueWithProtocol(owner, repo, number);
|
|
42
|
+
return text({ issue: snapshot.sourceUrl, title: snapshot.title, verdict: merged.verdict, reasons: merged.reasons, flags: merged.flags, claims: merged.claims, gates: merged.gates, duplicateOf: snapshot.duplicateOf ?? [], protocol: merged.protocol, suggests_verified_comment: suggestsVerifiedComment(merged.gates) });
|
|
31
43
|
}
|
|
32
44
|
catch (err) {
|
|
33
45
|
return text({ error: err instanceof Error ? err.message : String(err) });
|
|
@@ -67,29 +79,7 @@ server.tool("repo_friction", "Friction score 0-100 for a repo (100 = easiest to
|
|
|
67
79
|
const m = /^([^/]+)\/([^/]+)$/.exec(repo.trim());
|
|
68
80
|
if (!m)
|
|
69
81
|
return text({ error: `Expected owner/repo, got: ${repo}` });
|
|
70
|
-
const
|
|
71
|
-
fetchContributing(m[1], m[2]),
|
|
72
|
-
detectRepoPolicy(m[1], m[2]),
|
|
73
|
-
countStarterIssues(m[1], m[2]),
|
|
74
|
-
]);
|
|
75
|
-
const gates = parseGates(contributing, { collaboratorsOnlyPolicy: policy.collaboratorsOnly });
|
|
76
|
-
const report = scoreFriction({
|
|
77
|
-
owner: m[1],
|
|
78
|
-
repo: m[2],
|
|
79
|
-
gates,
|
|
80
|
-
externalPRMergeRate: null,
|
|
81
|
-
medianFirstReviewHours: null,
|
|
82
|
-
maintainerIssueResponseHours: null,
|
|
83
|
-
openGoodFirstIssueCount: starterCount,
|
|
84
|
-
note: "live",
|
|
85
|
-
});
|
|
86
|
-
// Merge velocity: signal only, best-effort.
|
|
87
|
-
try {
|
|
88
|
-
report.mergeVelocity = await fetchMergeVelocity(m[1], m[2]);
|
|
89
|
-
}
|
|
90
|
-
catch {
|
|
91
|
-
report.mergeVelocity = null;
|
|
92
|
-
}
|
|
82
|
+
const report = await fetchFrictionSummary(m[1], m[2]);
|
|
93
83
|
return text(report);
|
|
94
84
|
}
|
|
95
85
|
catch (err) {
|
|
@@ -100,11 +90,13 @@ server.tool("claim_issue", "Post a claim comment on a GitHub issue, shaped by th
|
|
|
100
90
|
issue_url: z.string().describe("Full GitHub issue URL, e.g. https://github.com/owner/repo/issues/123"),
|
|
101
91
|
execute: z.boolean().default(false).describe("Post the comment for real. Defaults to false: dry run returns the plan only."),
|
|
102
92
|
force: z.boolean().default(false).describe("Claim even on a TAKEN or STALE verdict."),
|
|
103
|
-
|
|
93
|
+
plan: z.string().optional().describe("Plan recorded in the protocol claim comment (plan: line)."),
|
|
94
|
+
eta_days: z.number().optional().describe("ETA in days recorded in the protocol claim comment (eta-days: line)."),
|
|
95
|
+
}, async ({ issue_url, execute, force, plan: claimPlan, eta_days }) => {
|
|
104
96
|
try {
|
|
105
97
|
const { owner, repo, number } = parseIssueUrl(issue_url);
|
|
106
98
|
const snapshot = await buildIssueSnapshot(owner, repo, number);
|
|
107
|
-
const plan = await claimIssue(createRestClient(), snapshot, { yes: execute, force });
|
|
99
|
+
const plan = await claimIssue(createRestClient(), snapshot, { yes: execute, force, plan: claimPlan, etaDays: eta_days });
|
|
108
100
|
return text({
|
|
109
101
|
issue: snapshot.sourceUrl,
|
|
110
102
|
verdict: plan.verdict.verdict,
|
|
@@ -231,6 +223,66 @@ server.tool("repo_digest", "Repo-level maintainer report: what needs attention a
|
|
|
231
223
|
return text({ error: err instanceof Error ? err.message : String(err) });
|
|
232
224
|
}
|
|
233
225
|
});
|
|
226
|
+
server.tool("claim_status", "The Claim Protocol pre-flight answer for one issue: who holds it, until when, who is queued, which PRs compete, which gates bite, and whether the repo honors the protocol at all. Returns the SPEC 5.1 status payload with competing PRs and gates merged from the check machinery. The verdict vocabulary matches check_issue (GO / RISKY / TAKEN / GATED / STALE); a null verdict means no protocol claims and the check_issue verdict stands.", {
|
|
227
|
+
issue_url: z.string().describe("Full GitHub issue URL, e.g. https://github.com/owner/repo/issues/123"),
|
|
228
|
+
}, async ({ issue_url }) => {
|
|
229
|
+
try {
|
|
230
|
+
const { owner, repo, number } = parseIssueUrl(issue_url);
|
|
231
|
+
const { status } = await computeIssueStatus(owner, repo, number);
|
|
232
|
+
return text(status);
|
|
233
|
+
}
|
|
234
|
+
catch (err) {
|
|
235
|
+
return text({ error: err instanceof Error ? err.message : String(err) });
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
server.tool("preflight", "The one-call answer to 'can I work on this issue right now': the Claim Protocol issue status (claim holder, expiry, queue, competing PRs, gates) plus the repo friction summary (how hard this repo is to land a PR in, 0-100). Call this before committing to any issue; it combines claim_status and repo_friction.", {
|
|
239
|
+
issue_url: z.string().describe("Full GitHub issue URL, e.g. https://github.com/owner/repo/issues/123"),
|
|
240
|
+
}, async ({ issue_url }) => {
|
|
241
|
+
try {
|
|
242
|
+
const { owner, repo, number } = parseIssueUrl(issue_url);
|
|
243
|
+
const [{ status }, friction] = await Promise.all([
|
|
244
|
+
computeIssueStatus(owner, repo, number),
|
|
245
|
+
fetchFrictionSummary(owner, repo),
|
|
246
|
+
]);
|
|
247
|
+
return text({ status, friction });
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
return text({ error: err instanceof Error ? err.message : String(err) });
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
server.tool("verify_comment", "Draft the verified-finding comment for a maintainer-only repo (modelcontextprotocol/inspector, modelcontextprotocol/servers): outside PRs are closed on sight there, so the contribution that lands is a detailed, verified issue comment. Assembles the comment from your notes: claim, environment, reproduction steps, observed vs expected, root cause, fix sketch, and a verification footer. Sections you leave empty render as explicit gaps, never plausible filler. DRAFT ONLY: nothing is posted, ever. Copy the markdown into the issue thread yourself.", {
|
|
254
|
+
issue_url: z.string().describe("Full GitHub issue URL, e.g. https://github.com/modelcontextprotocol/inspector/issues/2723"),
|
|
255
|
+
claim: z.string().optional().describe("One-line claim of the problem."),
|
|
256
|
+
environment: z.string().optional().describe("Environment: repo, ref/commit, date, platform."),
|
|
257
|
+
reproduction: z.string().optional().describe("Reproduction steps, one per line, exact commands."),
|
|
258
|
+
observed: z.string().optional().describe("What was observed when the repro ran."),
|
|
259
|
+
expected: z.string().optional().describe("What should have happened instead."),
|
|
260
|
+
root_cause: z.string().optional().describe("Root cause with file paths and line refs when known; empty renders 'not yet isolated'."),
|
|
261
|
+
fix: z.string().optional().describe("Proposed fix sketch, not a code dump."),
|
|
262
|
+
ran: z.string().optional().describe("What was actually run (commands, counts)."),
|
|
263
|
+
verified_by: z.string().optional().describe("Who ran the verification."),
|
|
264
|
+
}, async ({ issue_url, claim, environment, reproduction, observed, expected, root_cause, fix, ran, verified_by }) => {
|
|
265
|
+
try {
|
|
266
|
+
const { owner, repo, number } = parseIssueUrl(issue_url);
|
|
267
|
+
const built = buildVerifiedComment(`https://github.com/${owner}/${repo}/issues/${number}`, {
|
|
268
|
+
claim,
|
|
269
|
+
environment,
|
|
270
|
+
reproduction: reproduction
|
|
271
|
+
? reproduction.split("\n").map((s) => s.replace(/^\s*(?:\d+[.)]|[-*])\s+/, "").trim()).filter((s) => s.length > 0)
|
|
272
|
+
: undefined,
|
|
273
|
+
observed,
|
|
274
|
+
expected,
|
|
275
|
+
rootCause: root_cause,
|
|
276
|
+
fixSketch: fix,
|
|
277
|
+
ran,
|
|
278
|
+
verifiedBy: verified_by,
|
|
279
|
+
}, GREENLIGHT_VERSION);
|
|
280
|
+
return text({ issue: issue_url, markdown: built.markdown, gaps: built.gaps, posted: false });
|
|
281
|
+
}
|
|
282
|
+
catch (err) {
|
|
283
|
+
return text({ error: err instanceof Error ? err.message : String(err) });
|
|
284
|
+
}
|
|
285
|
+
});
|
|
234
286
|
const transport = new StdioServerTransport();
|
|
235
287
|
await server.connect(transport);
|
|
236
288
|
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/dist/init.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export interface InitTool {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
/** Path of the MCP config inside the integrations pack. */
|
|
5
|
+
configSrc: string;
|
|
6
|
+
/** Destination: project-relative, or home-relative when homeDest is true. */
|
|
7
|
+
configDest: string;
|
|
8
|
+
homeDest?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Top-level key holding the server map for JSON merging.
|
|
11
|
+
* null means plain copy (the generic fallback file).
|
|
12
|
+
*/
|
|
13
|
+
serverMapKey: "mcpServers" | "servers" | null;
|
|
14
|
+
/** Path of the instruction snippet inside the pack, when the tool has one. */
|
|
15
|
+
instructionsSrc?: string;
|
|
16
|
+
/** Project-relative destination for the instructions. */
|
|
17
|
+
instructionsDest?: string;
|
|
18
|
+
/** append-markers: guard with markers and append; copy: whole-file copy. */
|
|
19
|
+
instructionsMode?: "append-markers" | "copy";
|
|
20
|
+
/** Project-relative paths whose presence suggests this tool is in use. */
|
|
21
|
+
detectMarkers: string[];
|
|
22
|
+
restartNote: string;
|
|
23
|
+
}
|
|
24
|
+
export declare const INIT_TOOLS: InitTool[];
|
|
25
|
+
/** Markers guarding an appended instruction block; presence means "already installed". */
|
|
26
|
+
export declare const INIT_BEGIN_MARKER = "<!-- greenlight:init:begin -->";
|
|
27
|
+
export declare const INIT_END_MARKER = "<!-- greenlight:init:end -->";
|
|
28
|
+
/** The integrations pack ships inside the npm package next to dist/. */
|
|
29
|
+
export declare function defaultPackDir(): string;
|
|
30
|
+
export declare function findTool(id: string): InitTool | undefined;
|
|
31
|
+
/** Split --agent values on commas, lowercase, dedupe, drop empties. */
|
|
32
|
+
export declare function parseAgentList(values: string[]): string[];
|
|
33
|
+
/** Tool ids whose marker files exist in the project (a hint, never auto-applied). */
|
|
34
|
+
export declare function detectTools(projectDir: string): string[];
|
|
35
|
+
export type InitFileAction = "created" | "merged" | "updated" | "overwritten" | "skipped";
|
|
36
|
+
export interface InitFileResult {
|
|
37
|
+
path: string;
|
|
38
|
+
action: InitFileAction;
|
|
39
|
+
detail: string;
|
|
40
|
+
}
|
|
41
|
+
export interface InitToolResult {
|
|
42
|
+
id: string;
|
|
43
|
+
label: string;
|
|
44
|
+
files: InitFileResult[];
|
|
45
|
+
notes: string[];
|
|
46
|
+
}
|
|
47
|
+
export interface InitOptions {
|
|
48
|
+
projectDir?: string;
|
|
49
|
+
homeDir?: string;
|
|
50
|
+
packDir?: string;
|
|
51
|
+
force?: boolean;
|
|
52
|
+
includeInstructions?: boolean;
|
|
53
|
+
dryRun?: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Set up the given tools. Throws on unknown tool ids or a missing pack so
|
|
57
|
+
* the CLI can show the tool list instead of half-writing.
|
|
58
|
+
*/
|
|
59
|
+
export declare function initTools(toolIds: string[], opts?: InitOptions): InitToolResult[];
|
|
60
|
+
/** Human-readable report of an init run (file actions plus next steps). */
|
|
61
|
+
export declare function formatInitHuman(results: InitToolResult[], dryRun: boolean): string;
|
package/dist/init.js
ADDED
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `greenlight init`: one-command agent setup.
|
|
3
|
+
*
|
|
4
|
+
* Before this, onboarding an agent meant cloning the repo and hand-copying
|
|
5
|
+
* MCP configs plus instruction snippets from integrations/ per tool. Init
|
|
6
|
+
* does that from the installed package: it copies (or JSON-merges) the MCP
|
|
7
|
+
* server config into the current project and installs the tool's instruction
|
|
8
|
+
* snippet, then prints the restart + verify steps.
|
|
9
|
+
*
|
|
10
|
+
* Safety rules: existing configs are merged (other servers are preserved),
|
|
11
|
+
* instruction appends are marker-guarded and idempotent, nothing is
|
|
12
|
+
* overwritten unless --force is given, and --dry-run only reports.
|
|
13
|
+
*/
|
|
14
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
15
|
+
import { dirname, join } from "node:path";
|
|
16
|
+
import { homedir } from "node:os";
|
|
17
|
+
import { fileURLToPath } from "node:url";
|
|
18
|
+
export const INIT_TOOLS = [
|
|
19
|
+
{
|
|
20
|
+
id: "claude-code",
|
|
21
|
+
label: "Claude Code",
|
|
22
|
+
configSrc: "claude-code/.mcp.json",
|
|
23
|
+
configDest: ".mcp.json",
|
|
24
|
+
serverMapKey: "mcpServers",
|
|
25
|
+
instructionsSrc: "claude-code/CLAUDE.snippet.md",
|
|
26
|
+
instructionsDest: "CLAUDE.md",
|
|
27
|
+
instructionsMode: "append-markers",
|
|
28
|
+
detectMarkers: [".mcp.json", "CLAUDE.md"],
|
|
29
|
+
restartNote: "Restart Claude Code, then ask it to list its MCP tools.",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: "cursor",
|
|
33
|
+
label: "Cursor",
|
|
34
|
+
configSrc: "cursor/.cursor/mcp.json",
|
|
35
|
+
configDest: ".cursor/mcp.json",
|
|
36
|
+
serverMapKey: "mcpServers",
|
|
37
|
+
instructionsSrc: "cursor/greenlight.mdc",
|
|
38
|
+
instructionsDest: ".cursor/rules/greenlight.mdc",
|
|
39
|
+
instructionsMode: "copy",
|
|
40
|
+
detectMarkers: [".cursor"],
|
|
41
|
+
restartNote: "Restart Cursor, then ask the agent to list its MCP tools.",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: "copilot",
|
|
45
|
+
label: "VS Code / Copilot",
|
|
46
|
+
configSrc: "copilot/.vscode/mcp.json",
|
|
47
|
+
configDest: ".vscode/mcp.json",
|
|
48
|
+
serverMapKey: "servers",
|
|
49
|
+
instructionsSrc: "copilot/copilot-instructions.snippet.md",
|
|
50
|
+
instructionsDest: ".github/copilot-instructions.md",
|
|
51
|
+
instructionsMode: "append-markers",
|
|
52
|
+
detectMarkers: [".vscode", ".github/copilot-instructions.md"],
|
|
53
|
+
restartNote: "Reload VS Code, then check the MCP server list.",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: "windsurf",
|
|
57
|
+
label: "Windsurf",
|
|
58
|
+
configSrc: "windsurf/mcp_config.json",
|
|
59
|
+
configDest: ".codeium/windsurf/mcp_config.json",
|
|
60
|
+
homeDest: true,
|
|
61
|
+
serverMapKey: "mcpServers",
|
|
62
|
+
detectMarkers: [],
|
|
63
|
+
restartNote: "Restart Windsurf, then open Manage MCP Servers to confirm greenlight is listed.",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: "cline",
|
|
67
|
+
label: "Cline",
|
|
68
|
+
configSrc: "cline/cline_mcp_settings.json",
|
|
69
|
+
configDest: ".cline/mcp_settings.json",
|
|
70
|
+
serverMapKey: "mcpServers",
|
|
71
|
+
detectMarkers: [".cline"],
|
|
72
|
+
restartNote: "Restart your editor, then check Cline's MCP Servers list.",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: "generic",
|
|
76
|
+
label: "Any other MCP client",
|
|
77
|
+
configSrc: "mcp.json",
|
|
78
|
+
configDest: "greenlight.mcp.json",
|
|
79
|
+
serverMapKey: null,
|
|
80
|
+
detectMarkers: [],
|
|
81
|
+
restartNote: "Point your MCP client at greenlight.mcp.json (command npx, args -y @reneturcios/greenlight mcp).",
|
|
82
|
+
},
|
|
83
|
+
];
|
|
84
|
+
/** Markers guarding an appended instruction block; presence means "already installed". */
|
|
85
|
+
export const INIT_BEGIN_MARKER = "<!-- greenlight:init:begin -->";
|
|
86
|
+
export const INIT_END_MARKER = "<!-- greenlight:init:end -->";
|
|
87
|
+
/** The integrations pack ships inside the npm package next to dist/. */
|
|
88
|
+
export function defaultPackDir() {
|
|
89
|
+
return fileURLToPath(new URL("../integrations/", import.meta.url));
|
|
90
|
+
}
|
|
91
|
+
export function findTool(id) {
|
|
92
|
+
return INIT_TOOLS.find((t) => t.id === id.toLowerCase());
|
|
93
|
+
}
|
|
94
|
+
/** Split --agent values on commas, lowercase, dedupe, drop empties. */
|
|
95
|
+
export function parseAgentList(values) {
|
|
96
|
+
const out = [];
|
|
97
|
+
for (const v of values) {
|
|
98
|
+
for (const part of v.split(",")) {
|
|
99
|
+
const id = part.trim().toLowerCase();
|
|
100
|
+
if (id && !out.includes(id))
|
|
101
|
+
out.push(id);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return out;
|
|
105
|
+
}
|
|
106
|
+
/** Tool ids whose marker files exist in the project (a hint, never auto-applied). */
|
|
107
|
+
export function detectTools(projectDir) {
|
|
108
|
+
return INIT_TOOLS.filter((t) => t.detectMarkers.length > 0 && t.detectMarkers.some((m) => existsSync(join(projectDir, m)))).map((t) => t.id);
|
|
109
|
+
}
|
|
110
|
+
function sameJson(a, b) {
|
|
111
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
112
|
+
}
|
|
113
|
+
function writeFileEnsured(path, content, dryRun) {
|
|
114
|
+
if (dryRun)
|
|
115
|
+
return;
|
|
116
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
117
|
+
writeFileSync(path, content, "utf8");
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Install one tool's MCP config. Existing JSON configs are merged (the
|
|
121
|
+
* greenlight server is added, everything else preserved). Returns the file
|
|
122
|
+
* result; throws only when the destination is unparseable and --force was
|
|
123
|
+
* not given, since silently dropping a broken config would hide user data.
|
|
124
|
+
*/
|
|
125
|
+
function installConfig(tool, destPath, packContent, force, dryRun) {
|
|
126
|
+
if (tool.serverMapKey === null) {
|
|
127
|
+
if (!existsSync(destPath)) {
|
|
128
|
+
writeFileEnsured(destPath, packContent, dryRun);
|
|
129
|
+
return { path: destPath, action: "created", detail: "config copied" };
|
|
130
|
+
}
|
|
131
|
+
const existing = readFileSync(destPath, "utf8");
|
|
132
|
+
if (existing === packContent) {
|
|
133
|
+
return { path: destPath, action: "skipped", detail: "already set up" };
|
|
134
|
+
}
|
|
135
|
+
if (!force) {
|
|
136
|
+
return {
|
|
137
|
+
path: destPath,
|
|
138
|
+
action: "skipped",
|
|
139
|
+
detail: "exists with different content; re-run with --force to overwrite",
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
writeFileEnsured(destPath, packContent, dryRun);
|
|
143
|
+
return { path: destPath, action: "overwritten", detail: "overwritten with --force" };
|
|
144
|
+
}
|
|
145
|
+
const packDoc = JSON.parse(packContent);
|
|
146
|
+
const packEntry = packDoc[tool.serverMapKey]?.greenlight;
|
|
147
|
+
if (!existsSync(destPath)) {
|
|
148
|
+
writeFileEnsured(destPath, packContent.endsWith("\n") ? packContent : packContent + "\n", dryRun);
|
|
149
|
+
return { path: destPath, action: "created", detail: "config copied" };
|
|
150
|
+
}
|
|
151
|
+
let destDoc;
|
|
152
|
+
try {
|
|
153
|
+
destDoc = JSON.parse(readFileSync(destPath, "utf8"));
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
if (!force) {
|
|
157
|
+
throw new Error(`${destPath} exists but is not valid JSON; fix it or re-run with --force to overwrite it`);
|
|
158
|
+
}
|
|
159
|
+
writeFileEnsured(destPath, packContent.endsWith("\n") ? packContent : packContent + "\n", dryRun);
|
|
160
|
+
return { path: destPath, action: "overwritten", detail: "invalid JSON overwritten with --force" };
|
|
161
|
+
}
|
|
162
|
+
if (typeof destDoc !== "object" || destDoc === null || Array.isArray(destDoc)) {
|
|
163
|
+
if (!force) {
|
|
164
|
+
throw new Error(`${destPath} exists but is not a JSON object; fix it or re-run with --force to overwrite it`);
|
|
165
|
+
}
|
|
166
|
+
writeFileEnsured(destPath, packContent.endsWith("\n") ? packContent : packContent + "\n", dryRun);
|
|
167
|
+
return { path: destPath, action: "overwritten", detail: "non-object JSON overwritten with --force" };
|
|
168
|
+
}
|
|
169
|
+
if (typeof destDoc[tool.serverMapKey] !== "object" || destDoc[tool.serverMapKey] === null) {
|
|
170
|
+
destDoc[tool.serverMapKey] = {};
|
|
171
|
+
}
|
|
172
|
+
const map = destDoc[tool.serverMapKey];
|
|
173
|
+
if ("greenlight" in map && sameJson(map.greenlight, packEntry)) {
|
|
174
|
+
return { path: destPath, action: "skipped", detail: "greenlight server already configured" };
|
|
175
|
+
}
|
|
176
|
+
const hadEntry = "greenlight" in map;
|
|
177
|
+
map.greenlight = packEntry;
|
|
178
|
+
writeFileEnsured(destPath, JSON.stringify(destDoc, null, 2) + "\n", dryRun);
|
|
179
|
+
return {
|
|
180
|
+
path: destPath,
|
|
181
|
+
action: hadEntry ? "updated" : "merged",
|
|
182
|
+
detail: hadEntry ? "greenlight server entry refreshed, other servers kept" : "greenlight server added, other servers kept",
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/** Install one tool's instruction snippet (append-with-markers or whole copy). */
|
|
186
|
+
function installInstructions(tool, destPath, snippet, force, dryRun) {
|
|
187
|
+
if (tool.instructionsMode === "copy") {
|
|
188
|
+
if (!existsSync(destPath)) {
|
|
189
|
+
writeFileEnsured(destPath, snippet, dryRun);
|
|
190
|
+
return { path: destPath, action: "created", detail: "rule file copied" };
|
|
191
|
+
}
|
|
192
|
+
if (readFileSync(destPath, "utf8") === snippet) {
|
|
193
|
+
return { path: destPath, action: "skipped", detail: "already set up" };
|
|
194
|
+
}
|
|
195
|
+
if (!force) {
|
|
196
|
+
return {
|
|
197
|
+
path: destPath,
|
|
198
|
+
action: "skipped",
|
|
199
|
+
detail: "exists with different content; re-run with --force to overwrite",
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
writeFileEnsured(destPath, snippet, dryRun);
|
|
203
|
+
return { path: destPath, action: "overwritten", detail: "overwritten with --force" };
|
|
204
|
+
}
|
|
205
|
+
// append-markers: idempotent by marker presence; never touches user text.
|
|
206
|
+
if (existsSync(destPath) && readFileSync(destPath, "utf8").includes(INIT_BEGIN_MARKER)) {
|
|
207
|
+
return { path: destPath, action: "skipped", detail: "instructions already installed" };
|
|
208
|
+
}
|
|
209
|
+
const block = `${INIT_BEGIN_MARKER}\n${snippet.trim()}\n${INIT_END_MARKER}\n`;
|
|
210
|
+
if (!existsSync(destPath)) {
|
|
211
|
+
writeFileEnsured(destPath, block, dryRun);
|
|
212
|
+
return { path: destPath, action: "created", detail: "instructions installed" };
|
|
213
|
+
}
|
|
214
|
+
const existing = readFileSync(destPath, "utf8");
|
|
215
|
+
const joined = existing + (existing.endsWith("\n") ? "\n" : "\n\n") + block;
|
|
216
|
+
writeFileEnsured(destPath, joined, dryRun);
|
|
217
|
+
return { path: destPath, action: "updated", detail: "instructions appended, existing content kept" };
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Set up the given tools. Throws on unknown tool ids or a missing pack so
|
|
221
|
+
* the CLI can show the tool list instead of half-writing.
|
|
222
|
+
*/
|
|
223
|
+
export function initTools(toolIds, opts = {}) {
|
|
224
|
+
const projectDir = opts.projectDir ?? process.cwd();
|
|
225
|
+
const homeDir = opts.homeDir ?? homedir();
|
|
226
|
+
const packDir = opts.packDir ?? defaultPackDir();
|
|
227
|
+
const force = opts.force ?? false;
|
|
228
|
+
const includeInstructions = opts.includeInstructions ?? true;
|
|
229
|
+
const dryRun = opts.dryRun ?? false;
|
|
230
|
+
const tools = toolIds.map((id) => {
|
|
231
|
+
const tool = findTool(id);
|
|
232
|
+
if (!tool) {
|
|
233
|
+
throw new Error(`Unknown agent "${id}". Run 'greenlight init --list' to see the supported tools.`);
|
|
234
|
+
}
|
|
235
|
+
return tool;
|
|
236
|
+
});
|
|
237
|
+
// Read every pack file up front so a missing pack fails before writing.
|
|
238
|
+
const packFiles = new Map();
|
|
239
|
+
const readPack = (rel) => {
|
|
240
|
+
const cached = packFiles.get(rel);
|
|
241
|
+
if (cached !== undefined)
|
|
242
|
+
return cached;
|
|
243
|
+
const abs = join(packDir, rel);
|
|
244
|
+
if (!existsSync(abs)) {
|
|
245
|
+
throw new Error(`Pack file missing: ${rel} (looked in ${packDir})`);
|
|
246
|
+
}
|
|
247
|
+
const content = readFileSync(abs, "utf8");
|
|
248
|
+
packFiles.set(rel, content);
|
|
249
|
+
return content;
|
|
250
|
+
};
|
|
251
|
+
for (const tool of tools) {
|
|
252
|
+
readPack(tool.configSrc);
|
|
253
|
+
if (includeInstructions && tool.instructionsSrc)
|
|
254
|
+
readPack(tool.instructionsSrc);
|
|
255
|
+
}
|
|
256
|
+
return tools.map((tool) => {
|
|
257
|
+
const notes = [];
|
|
258
|
+
const files = [];
|
|
259
|
+
const base = tool.homeDest ? homeDir : projectDir;
|
|
260
|
+
const configDest = join(base, tool.configDest);
|
|
261
|
+
files.push(installConfig(tool, configDest, readPack(tool.configSrc), force, dryRun));
|
|
262
|
+
if (includeInstructions && tool.instructionsSrc && tool.instructionsDest) {
|
|
263
|
+
const snippetDest = join(projectDir, tool.instructionsDest);
|
|
264
|
+
files.push(installInstructions(tool, snippetDest, readPack(tool.instructionsSrc), force, dryRun));
|
|
265
|
+
}
|
|
266
|
+
else if (tool.instructionsSrc && !includeInstructions) {
|
|
267
|
+
notes.push("instructions skipped (--no-instructions)");
|
|
268
|
+
}
|
|
269
|
+
notes.push(tool.restartNote);
|
|
270
|
+
return { id: tool.id, label: tool.label, files, notes };
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
/** Human-readable report of an init run (file actions plus next steps). */
|
|
274
|
+
export function formatInitHuman(results, dryRun) {
|
|
275
|
+
const verb = {
|
|
276
|
+
created: "create",
|
|
277
|
+
merged: "merge into",
|
|
278
|
+
updated: "update",
|
|
279
|
+
overwritten: "overwrite",
|
|
280
|
+
skipped: "skip",
|
|
281
|
+
};
|
|
282
|
+
const lines = [];
|
|
283
|
+
if (dryRun)
|
|
284
|
+
lines.push("Dry run: nothing was written. Re-run without --dry-run to apply.");
|
|
285
|
+
for (const r of results) {
|
|
286
|
+
lines.push(`${r.label}:`);
|
|
287
|
+
for (const f of r.files) {
|
|
288
|
+
const action = dryRun ? `would ${verb[f.action]}` : f.action;
|
|
289
|
+
lines.push(` ${action}: ${f.path} (${f.detail})`);
|
|
290
|
+
}
|
|
291
|
+
for (const n of r.notes)
|
|
292
|
+
lines.push(` next: ${n}`);
|
|
293
|
+
}
|
|
294
|
+
lines.push("Verify: ask your agent to list its MCP tools; greenlight should appear with 12 tools.");
|
|
295
|
+
lines.push("Tip: set GITHUB_TOKEN (classic PAT, no scopes needed for public repos) for the 5000 req/hr limit.");
|
|
296
|
+
return lines.join("\n");
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=init.js.map
|
package/dist/init.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|