openpitstop 1.5.1 → 1.6.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 +196 -140
- package/demo/DEMO_SCRIPT.md +81 -0
- package/demo/web-app-broken/src/server.js +50 -0
- package/demo/web-app-fixed/src/server.js +61 -0
- package/dist/commands/drive.js +365 -104
- package/dist/commands/drive.js.map +1 -1
- package/dist/commands/next.d.ts +25 -0
- package/dist/commands/next.js +403 -72
- package/dist/commands/next.js.map +1 -1
- package/dist/commands/pen.js +29 -1
- package/dist/commands/pen.js.map +1 -1
- package/dist/graph/correlate.js +11 -1
- package/dist/graph/correlate.js.map +1 -1
- package/dist/pen/drift.d.ts +16 -0
- package/dist/pen/drift.js +69 -0
- package/dist/pen/drift.js.map +1 -0
- package/dist/pen/report.js +90 -2
- package/dist/pen/report.js.map +1 -1
- package/dist/pen/types.d.ts +32 -0
- package/dist/pen/types.js.map +1 -1
- package/package.json +1 -1
- package/templates/pitstop-menu.command.md +26 -21
- package/templates/pitstop.command.md +25 -30
- package/templates/pitstop.prompt.md +18 -0
package/dist/commands/next.js
CHANGED
|
@@ -11,13 +11,14 @@ import { brandBanner } from "../brand.js";
|
|
|
11
11
|
* Reads the sealed `.pitstop/` artifacts (the latest scan, plus signals that
|
|
12
12
|
* pen / verify / repro have run) and prints, deterministically:
|
|
13
13
|
* 1. the single best next `pitstop` command to run (with a why), and
|
|
14
|
-
* 2. a
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* 2. a repo-aware, prioritized **remediation plan** — every command the user
|
|
15
|
+
* should run, in order, to get the repo fully fixed, and
|
|
16
|
+
* 3. a "Pending before this repo is fully fixed" checklist.
|
|
17
17
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* The recommendation is *not* random: it inspects the actual repo (language,
|
|
19
|
+
* package manager, frameworks, test runner, CI, env files) from the filesystem
|
|
20
|
+
* and from the scan, then maps each real finding to the exact command that
|
|
21
|
+
* solves it — with a rationale that references this repo's stack.
|
|
21
22
|
*/
|
|
22
23
|
const SKIP_DIRS = new Set(["node_modules", ".git", ".pitstop", "dist", "coverage", "build", ".next"]);
|
|
23
24
|
/** Rough fix-time estimate (minutes) per vulnerability class. */
|
|
@@ -38,6 +39,23 @@ const EFFORT = {
|
|
|
38
39
|
accessibility: 3,
|
|
39
40
|
circular: 6,
|
|
40
41
|
};
|
|
42
|
+
/** Vulnerability classes that have a reproducible runtime exploit path. */
|
|
43
|
+
const REPROABLE = [
|
|
44
|
+
"sql-injection",
|
|
45
|
+
"xss",
|
|
46
|
+
"command-injection",
|
|
47
|
+
"path-traversal",
|
|
48
|
+
"authentication",
|
|
49
|
+
"authorization",
|
|
50
|
+
"csrf",
|
|
51
|
+
"idor",
|
|
52
|
+
"ssrf",
|
|
53
|
+
"prototype-pollution",
|
|
54
|
+
"eval",
|
|
55
|
+
"code-injection",
|
|
56
|
+
"rate-limiting",
|
|
57
|
+
"data-exposure",
|
|
58
|
+
];
|
|
41
59
|
function effortMin(category) {
|
|
42
60
|
if (!category)
|
|
43
61
|
return 4;
|
|
@@ -71,6 +89,17 @@ function listDir(dir, re) {
|
|
|
71
89
|
return [];
|
|
72
90
|
return fs.readdirSync(dir).filter((f) => re.test(f));
|
|
73
91
|
}
|
|
92
|
+
/** Findings the user has already driven to a verified fix (so we don't re-recommend them). */
|
|
93
|
+
function loadDriven(repo) {
|
|
94
|
+
try {
|
|
95
|
+
const raw = fs.readFileSync(path.join(repo, ".pitstop", "driven.json"), "utf8");
|
|
96
|
+
const arr = JSON.parse(raw);
|
|
97
|
+
return new Set(Array.isArray(arr) ? arr : []);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return new Set();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
74
103
|
function topClusterId(clusters) {
|
|
75
104
|
if (!clusters || !clusters.length)
|
|
76
105
|
return undefined;
|
|
@@ -78,32 +107,331 @@ function topClusterId(clusters) {
|
|
|
78
107
|
const sorted = [...clusters].sort((a, b) => rank(a.rootCause.severity) - rank(b.rootCause.severity));
|
|
79
108
|
return sorted.find((c) => c.rootCause.id)?.rootCause.id;
|
|
80
109
|
}
|
|
110
|
+
function readJSON(p) {
|
|
111
|
+
try {
|
|
112
|
+
return JSON.parse(fs.readFileSync(p, "utf8"));
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function exists(p) {
|
|
119
|
+
try {
|
|
120
|
+
fs.accessSync(p);
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Inspect the working tree (not just the scan) so the recommendation is accurate
|
|
129
|
+
* for *this* repo — language, package manager, frameworks, test runner, CI, env.
|
|
130
|
+
*/
|
|
131
|
+
export function detectRepoContext(repo) {
|
|
132
|
+
const ctx = {
|
|
133
|
+
language: "",
|
|
134
|
+
frameworks: [],
|
|
135
|
+
hasCI: false,
|
|
136
|
+
hasEnv: false,
|
|
137
|
+
isWeb: false,
|
|
138
|
+
isApi: false,
|
|
139
|
+
stackSummary: "unknown stack",
|
|
140
|
+
};
|
|
141
|
+
const pkg = readJSON(path.join(repo, "package.json"));
|
|
142
|
+
if (pkg && typeof pkg === "object") {
|
|
143
|
+
ctx.language = "JavaScript/TypeScript";
|
|
144
|
+
const deps = {
|
|
145
|
+
...(pkg.dependencies ?? {}),
|
|
146
|
+
...(pkg.devDependencies ?? {}),
|
|
147
|
+
};
|
|
148
|
+
const has = (...names) => names.some((n) => deps[n] !== undefined);
|
|
149
|
+
const add = (...names) => ctx.frameworks.push(...names);
|
|
150
|
+
if (has("next"))
|
|
151
|
+
add("Next.js");
|
|
152
|
+
if (has("react"))
|
|
153
|
+
add("React");
|
|
154
|
+
if (has("vue"))
|
|
155
|
+
add("Vue");
|
|
156
|
+
if (has("@angular/core"))
|
|
157
|
+
add("Angular");
|
|
158
|
+
if (has("nuxt"))
|
|
159
|
+
add("Nuxt");
|
|
160
|
+
if (has("svelte") || has("@sveltejs/kit"))
|
|
161
|
+
add("Svelte");
|
|
162
|
+
if (has("express"))
|
|
163
|
+
add("Express"), (ctx.isApi = true);
|
|
164
|
+
if (has("fastify"))
|
|
165
|
+
add("Fastify"), (ctx.isApi = true);
|
|
166
|
+
if (has("koa"))
|
|
167
|
+
add("Koa"), (ctx.isApi = true);
|
|
168
|
+
if (has("@nestjs/core"))
|
|
169
|
+
add("NestJS"), (ctx.isApi = true);
|
|
170
|
+
if (has("hapi"))
|
|
171
|
+
add("Hapi"), (ctx.isApi = true);
|
|
172
|
+
if (has("@remix-run/react"))
|
|
173
|
+
add("Remix"), (ctx.isWeb = true);
|
|
174
|
+
if (has("react") || has("vue") || has("next") || has("nuxt") || has("svelte") || has("@angular/core"))
|
|
175
|
+
ctx.isWeb = true;
|
|
176
|
+
if (has("jest"))
|
|
177
|
+
ctx.testFramework = "Jest";
|
|
178
|
+
else if (has("vitest"))
|
|
179
|
+
ctx.testFramework = "Vitest";
|
|
180
|
+
else if (has("mocha"))
|
|
181
|
+
ctx.testFramework = "Mocha";
|
|
182
|
+
else if (has("@playwright/test") || has("cypress"))
|
|
183
|
+
ctx.testFramework = "Playwright/Cypress (e2e)";
|
|
184
|
+
// Package manager from the lockfile actually present.
|
|
185
|
+
if (exists(path.join(repo, "package-lock.json")))
|
|
186
|
+
ctx.packageManager = "npm";
|
|
187
|
+
else if (exists(path.join(repo, "yarn.lock")))
|
|
188
|
+
ctx.packageManager = "Yarn";
|
|
189
|
+
else if (exists(path.join(repo, "pnpm-lock.yaml")))
|
|
190
|
+
ctx.packageManager = "pnpm";
|
|
191
|
+
else if (exists(path.join(repo, "bun.lockb")) || exists(path.join(repo, "bun.lock")))
|
|
192
|
+
ctx.packageManager = "Bun";
|
|
193
|
+
else
|
|
194
|
+
ctx.packageManager = "npm";
|
|
195
|
+
}
|
|
196
|
+
if (exists(path.join(repo, "requirements.txt")) || exists(path.join(repo, "pyproject.toml")) || exists(path.join(repo, "setup.py"))) {
|
|
197
|
+
ctx.language = ctx.language ? `${ctx.language} + Python` : "Python";
|
|
198
|
+
const req = readJSON(path.join(repo, "requirements.txt")); // usually not JSON, returns null
|
|
199
|
+
const reqTxt = req ? "" : safeRead(path.join(repo, "requirements.txt"));
|
|
200
|
+
if (/django/i.test(reqTxt ?? ""))
|
|
201
|
+
ctx.frameworks.push("Django"), (ctx.isWeb = true), (ctx.isApi = true);
|
|
202
|
+
if (/flask/i.test(reqTxt ?? ""))
|
|
203
|
+
ctx.frameworks.push("Flask"), (ctx.isApi = true);
|
|
204
|
+
if (/fastapi/i.test(reqTxt ?? ""))
|
|
205
|
+
ctx.frameworks.push("FastAPI"), (ctx.isApi = true);
|
|
206
|
+
if (/pytest/i.test(reqTxt ?? ""))
|
|
207
|
+
ctx.testFramework = "pytest";
|
|
208
|
+
ctx.packageManager = ctx.packageManager ?? "pip";
|
|
209
|
+
}
|
|
210
|
+
if (exists(path.join(repo, "Gemfile"))) {
|
|
211
|
+
ctx.language = ctx.language ? `${ctx.language} + Ruby` : "Ruby";
|
|
212
|
+
ctx.frameworks.push("Rails");
|
|
213
|
+
ctx.isWeb = true;
|
|
214
|
+
ctx.isApi = true;
|
|
215
|
+
ctx.packageManager = ctx.packageManager ?? "bundler";
|
|
216
|
+
}
|
|
217
|
+
if (exists(path.join(repo, "go.mod"))) {
|
|
218
|
+
ctx.language = ctx.language ? `${ctx.language} + Go` : "Go";
|
|
219
|
+
ctx.packageManager = ctx.packageManager ?? "go mod";
|
|
220
|
+
}
|
|
221
|
+
if (exists(path.join(repo, "Cargo.toml"))) {
|
|
222
|
+
ctx.language = ctx.language ? `${ctx.language} + Rust` : "Rust";
|
|
223
|
+
ctx.packageManager = ctx.packageManager ?? "cargo";
|
|
224
|
+
}
|
|
225
|
+
if (exists(path.join(repo, "pom.xml")) || exists(path.join(repo, "build.gradle"))) {
|
|
226
|
+
ctx.language = ctx.language ? `${ctx.language} + Java` : "Java";
|
|
227
|
+
ctx.packageManager = ctx.packageManager ?? "maven/gradle";
|
|
228
|
+
}
|
|
229
|
+
if (exists(path.join(repo, "composer.json"))) {
|
|
230
|
+
ctx.language = ctx.language ? `${ctx.language} + PHP` : "PHP";
|
|
231
|
+
ctx.packageManager = ctx.packageManager ?? "composer";
|
|
232
|
+
}
|
|
233
|
+
ctx.hasCI =
|
|
234
|
+
exists(path.join(repo, ".github", "workflows")) ||
|
|
235
|
+
exists(path.join(repo, ".gitlab-ci.yml")) ||
|
|
236
|
+
exists(path.join(repo, ".circleci")) ||
|
|
237
|
+
exists(path.join(repo, "Jenkinsfile")) ||
|
|
238
|
+
exists(path.join(repo, "azure-pipelines.yml")) ||
|
|
239
|
+
exists(path.join(repo, "bitbucket-pipelines.yml"));
|
|
240
|
+
ctx.hasEnv = walkFor(repo, /^\.env(\..+)?$/, 2);
|
|
241
|
+
const parts = [];
|
|
242
|
+
if (ctx.language)
|
|
243
|
+
parts.push(ctx.language);
|
|
244
|
+
if (ctx.packageManager && ctx.packageManager !== "npm")
|
|
245
|
+
parts.push(`(${ctx.packageManager})`);
|
|
246
|
+
if (ctx.frameworks.length)
|
|
247
|
+
parts.push("· " + ctx.frameworks.join(" + "));
|
|
248
|
+
ctx.stackSummary = parts.length ? parts.join(" ") : "unknown stack";
|
|
249
|
+
return ctx;
|
|
250
|
+
}
|
|
251
|
+
function safeRead(p) {
|
|
252
|
+
try {
|
|
253
|
+
return fs.readFileSync(p, "utf8");
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
const P_BASELINE = 0;
|
|
260
|
+
const P_DRIVE = 10;
|
|
261
|
+
const P_PEN = 20;
|
|
262
|
+
const P_LOCKFILE = 25;
|
|
263
|
+
const P_VERIFY = 40;
|
|
264
|
+
const P_GATE = 50;
|
|
265
|
+
const P_REPORT = 60;
|
|
266
|
+
function catOf(i) {
|
|
267
|
+
return ((i.category ?? i.type ?? "") + "").toLowerCase();
|
|
268
|
+
}
|
|
269
|
+
function locOf(repo, i) {
|
|
270
|
+
if (!i.file)
|
|
271
|
+
return "";
|
|
272
|
+
const rel = path.relative(repo, i.file) || i.file;
|
|
273
|
+
return `${rel}${i.line ? ":" + i.line : ""}`;
|
|
274
|
+
}
|
|
275
|
+
function buildPlan(repo, scan, ctx, signals, driven) {
|
|
276
|
+
const steps = [];
|
|
277
|
+
const add = (s) => {
|
|
278
|
+
const dup = steps.find((x) => x.command === s.command);
|
|
279
|
+
if (dup) {
|
|
280
|
+
if (s.priority < dup.priority)
|
|
281
|
+
dup.priority = s.priority;
|
|
282
|
+
if (!dup.why.includes(s.why))
|
|
283
|
+
dup.why = `${dup.why} ${s.why}`;
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
steps.push(s);
|
|
287
|
+
};
|
|
288
|
+
const entry = ctx.isApi ? "reachable through the API" : ctx.isWeb ? "rendered to users" : "in the affected module";
|
|
289
|
+
const reach = ctx.hasEnv ? `${entry} (and secrets live in .env here)` : entry;
|
|
290
|
+
// Individual security findings, highest severity first.
|
|
291
|
+
const issues = [...(scan.security?.issues ?? [])];
|
|
292
|
+
const sevRank = (s) => s.toUpperCase() === "CRITICAL" ? 0 : s.toUpperCase() === "HIGH" ? 1 : s.toUpperCase() === "MEDIUM" ? 2 : 3;
|
|
293
|
+
issues.sort((a, b) => sevRank(a.severity) - sevRank(b.severity));
|
|
294
|
+
let staticFindings = 0;
|
|
295
|
+
for (const i of issues) {
|
|
296
|
+
if (!i.id || driven.has(i.id))
|
|
297
|
+
continue;
|
|
298
|
+
const cat = catOf(i);
|
|
299
|
+
const loc = locOf(repo, i);
|
|
300
|
+
const reproable = REPROABLE.some((c) => cat.includes(c));
|
|
301
|
+
if (reproable) {
|
|
302
|
+
add({
|
|
303
|
+
command: `pitstop drive ${i.id}`,
|
|
304
|
+
priority: P_DRIVE,
|
|
305
|
+
findingId: i.id,
|
|
306
|
+
why: `${ctx.stackSummary}: the ${cat || i.type} at ${loc || "this repo"} is a confirmed, exploitable root cause (${reach}). ` +
|
|
307
|
+
`Drive the agent to fix it behind a failing-first repro so the patch can't be faked.`,
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
// Non-runtime findings (secrets, misconfig) aren't reproducible — they get a
|
|
312
|
+
// single consolidated note on the verify step rather than N noisy steps.
|
|
313
|
+
staticFindings++;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
// Root-cause clusters (shared root cause behind several symptoms).
|
|
317
|
+
for (const c of scan.clusters ?? []) {
|
|
318
|
+
const id = c.rootCause.id;
|
|
319
|
+
if (!id || driven.has(id))
|
|
320
|
+
continue;
|
|
321
|
+
add({
|
|
322
|
+
command: `pitstop drive ${id}`,
|
|
323
|
+
priority: P_DRIVE,
|
|
324
|
+
findingId: id,
|
|
325
|
+
why: `${ctx.stackSummary}: root-cause cluster "${c.rootCause.description}" (${c.symptoms.length} symptom(s) across ` +
|
|
326
|
+
`${c.sharedFiles.length} file(s)). Drive the agent to fix the shared root cause once.`,
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
// Red tests → capture them as failing-first repro so a fix can't fake green.
|
|
330
|
+
if ((scan.tests?.failed ?? 0) > 0) {
|
|
331
|
+
if (!signals.penDone) {
|
|
332
|
+
add({
|
|
333
|
+
command: `pitstop pen --fix`,
|
|
334
|
+
priority: P_PEN,
|
|
335
|
+
why: `${ctx.stackSummary}: ${scan.tests.failed} test(s) are red — capture them as failing-first repro tests before fixing.`,
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// Accessibility → capture a repro + apply the fix.
|
|
340
|
+
if ((scan.accessibility?.issues?.length ?? 0) > 0 && !signals.penDone) {
|
|
341
|
+
add({
|
|
342
|
+
command: `pitstop pen --fix`,
|
|
343
|
+
priority: P_PEN,
|
|
344
|
+
why: `${ctx.stackSummary}: ${scan.accessibility.issues.length} accessibility issue(s) — capture a repro and apply the fix.`,
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
// Proactive catch: if the static scan found no security issues and no red tests,
|
|
348
|
+
// adversarially red-team the running app to surface runtime bugs the static
|
|
349
|
+
// analyzers cannot see (authz bypasses, race conditions, logic flaws).
|
|
350
|
+
if ((scan.security?.issues?.length ?? 0) === 0 &&
|
|
351
|
+
(scan.tests?.failed ?? 0) === 0 &&
|
|
352
|
+
!signals.penDone) {
|
|
353
|
+
add({
|
|
354
|
+
command: `pitstop pen`,
|
|
355
|
+
priority: P_PEN,
|
|
356
|
+
why: `${ctx.stackSummary}: no static issues caught — adversarially red-team the app with pitstop pen to find runtime/authorization bugs the scan can't see.`,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
// Dependency / circular / orphan graph problems → supply-chain hardening.
|
|
360
|
+
const circular = scan.dependencyGraph?.circular?.length ?? 0;
|
|
361
|
+
const orphans = scan.dependencyGraph?.orphans?.length ?? 0;
|
|
362
|
+
const depAdvisory = (scan.security?.issues ?? []).some((i) => catOf(i).includes("dependency"));
|
|
363
|
+
if (circular > 0 || orphans > 0 || depAdvisory) {
|
|
364
|
+
add({
|
|
365
|
+
command: `pitstop lockfile`,
|
|
366
|
+
priority: P_LOCKFILE,
|
|
367
|
+
why: `${ctx.packageManager ?? "dependency"} supply-chain: ` +
|
|
368
|
+
(circular ? `${circular} circular dependenc(ies), ` : "") +
|
|
369
|
+
(orphans ? `${orphans} orphan(s), ` : "") +
|
|
370
|
+
(depAdvisory ? "an open dependency advisory, " : "") +
|
|
371
|
+
`break cycles and verify lockfile integrity with pitstop lockfile.`,
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
// Always: prove the fix is real, then lock it in, then share.
|
|
375
|
+
if (!signals.verifyDone) {
|
|
376
|
+
add({
|
|
377
|
+
command: `pitstop verify`,
|
|
378
|
+
priority: P_VERIFY,
|
|
379
|
+
why: `prove the fix is real against the sealed baseline (PoVF + proof coverage) — no vibes.` +
|
|
380
|
+
(staticFindings > 0
|
|
381
|
+
? ` Also resolve ${staticFindings} non-runtime finding(s) (e.g. rotate any exposed secret, fix misconfig).`
|
|
382
|
+
: ""),
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
add({
|
|
386
|
+
command: `pitstop gate --score 60`,
|
|
387
|
+
priority: P_GATE,
|
|
388
|
+
why: `lock the win with a one-number CI / pre-commit gate at score 60.`,
|
|
389
|
+
});
|
|
390
|
+
add({
|
|
391
|
+
command: `pitstop report`,
|
|
392
|
+
priority: P_REPORT,
|
|
393
|
+
why: `share the scorecard (HTML/MD) with sealed evidence.`,
|
|
394
|
+
});
|
|
395
|
+
steps.sort((a, b) => a.priority - b.priority);
|
|
396
|
+
return steps;
|
|
397
|
+
}
|
|
398
|
+
function buildDonePlan(ctx) {
|
|
399
|
+
return [
|
|
400
|
+
{
|
|
401
|
+
command: `pitstop report`,
|
|
402
|
+
priority: P_REPORT,
|
|
403
|
+
why: `repo is clean (${ctx.stackSummary}) — share the scorecard with sealed evidence.`,
|
|
404
|
+
},
|
|
405
|
+
{ command: `pitstop honesty`, priority: P_REPORT + 1, why: `trace every figure back to its evidence.` },
|
|
406
|
+
{ command: `pitstop share`, priority: P_REPORT + 2, why: `export a tamper-evident proof artifact.` },
|
|
407
|
+
];
|
|
408
|
+
}
|
|
81
409
|
export function computeNext(repo) {
|
|
82
410
|
const scanPath = path.join(repo, ".pitstop", "scan-latest.json");
|
|
411
|
+
const baselineState = (why, pending) => ({
|
|
412
|
+
nextCommand: "pitstop scan",
|
|
413
|
+
why,
|
|
414
|
+
pending,
|
|
415
|
+
counts: {},
|
|
416
|
+
fullyFixed: false,
|
|
417
|
+
plan: [{ command: "pitstop scan", priority: P_BASELINE, why }],
|
|
418
|
+
repoContext: detectRepoContext(repo),
|
|
419
|
+
confidence: "low",
|
|
420
|
+
});
|
|
83
421
|
if (!fs.existsSync(scanPath)) {
|
|
84
|
-
return
|
|
85
|
-
nextCommand: "pitstop scan",
|
|
86
|
-
why: "no baseline yet — measure the repo so OpenPitStop knows what to fix",
|
|
87
|
-
pending: ["establish a baseline with `pitstop scan`"],
|
|
88
|
-
counts: {},
|
|
89
|
-
fullyFixed: false,
|
|
90
|
-
};
|
|
422
|
+
return baselineState("no baseline yet — measure the repo so OpenPitStop knows what to fix", ["establish a baseline with `pitstop scan`"]);
|
|
91
423
|
}
|
|
92
424
|
let scan;
|
|
93
425
|
try {
|
|
94
426
|
scan = JSON.parse(fs.readFileSync(scanPath, "utf8"));
|
|
95
427
|
}
|
|
96
428
|
catch {
|
|
97
|
-
return
|
|
98
|
-
nextCommand: "pitstop scan",
|
|
99
|
-
why: "scan-latest.json is unreadable — re-run the scan to rebuild the baseline",
|
|
100
|
-
pending: ["rebuild the baseline with `pitstop scan`"],
|
|
101
|
-
counts: {},
|
|
102
|
-
fullyFixed: false,
|
|
103
|
-
};
|
|
429
|
+
return baselineState("scan-latest.json is unreadable — re-run the scan to rebuild the baseline", ["rebuild the baseline with `pitstop scan`"]);
|
|
104
430
|
}
|
|
105
|
-
const
|
|
106
|
-
const
|
|
431
|
+
const ctx = detectRepoContext(repo);
|
|
432
|
+
const driven = loadDriven(repo);
|
|
433
|
+
const security = (scan.security?.issues ?? []).filter((i) => i.id && !driven.has(i.id)).length;
|
|
434
|
+
const clusters = (scan.clusters ?? []).filter((c) => c.rootCause.id && !driven.has(c.rootCause.id)).length;
|
|
107
435
|
const circular = scan.dependencyGraph?.circular?.length ?? 0;
|
|
108
436
|
const testFailed = scan.tests?.failed ?? 0;
|
|
109
437
|
const dup = scan.duplication?.cloneCount ?? 0;
|
|
@@ -121,65 +449,43 @@ export function computeNext(repo) {
|
|
|
121
449
|
return 0;
|
|
122
450
|
}
|
|
123
451
|
})();
|
|
124
|
-
// "Fully fixed" means no open issues AND a healthy score — an empty repo
|
|
125
|
-
// scores 0/100 with zero findings, which is not a clean bill of health.
|
|
126
452
|
const fullyFixed = !openIssues && score >= 60;
|
|
127
|
-
const topId = topClusterId(scan.clusters
|
|
128
|
-
|
|
129
|
-
|
|
453
|
+
const topId = topClusterId(scan.clusters?.filter((c) => c.rootCause.id && !driven.has(c.rootCause.id))) ??
|
|
454
|
+
scan.security?.issues?.find((i) => i.id && !driven.has(i.id))?.id;
|
|
455
|
+
const topCategory = scan.security?.issues?.find((i) => i.id)?.category ?? scan.clusters?.[0]?.rootCause.type;
|
|
456
|
+
let plan;
|
|
130
457
|
let nextCommand;
|
|
131
458
|
let why;
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
nextCommand = `pitstop drive ${topId}`;
|
|
138
|
-
why = `a confirmed root cause (${topId}) is still unfixed — drive the agent to fix it with a tamper-evident mission`;
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
nextCommand = "pitstop pen --fix";
|
|
142
|
-
why = "confirmed vulnerabilities exist — boot the app and write failing-first repro tests + safe patches";
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
else if (!verifyDone) {
|
|
146
|
-
nextCommand = "pitstop verify";
|
|
147
|
-
why = "repro tests exist but the fix isn't verified against the sealed baseline yet";
|
|
459
|
+
if (!openIssues) {
|
|
460
|
+
if (fullyFixed) {
|
|
461
|
+
plan = buildDonePlan(ctx);
|
|
462
|
+
nextCommand = plan[0].command;
|
|
463
|
+
why = plan[0].why;
|
|
148
464
|
}
|
|
149
465
|
else {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
nextCommand = "pitstop pen --fix";
|
|
161
|
-
why = "tests are red — capture them as failing-first repro tests so a fix can't fake passing";
|
|
162
|
-
}
|
|
163
|
-
else if (!verifyDone) {
|
|
164
|
-
nextCommand = "pitstop verify";
|
|
165
|
-
why = "repro tests exist; verify them against the sealed baseline";
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
nextCommand = "pitstop gate --score 60";
|
|
169
|
-
why = "tests captured + verified — add the CI gate";
|
|
466
|
+
// No findings but score < 60 → essentially an empty repo. Re-scan with real source.
|
|
467
|
+
plan = [
|
|
468
|
+
{
|
|
469
|
+
command: "pitstop scan",
|
|
470
|
+
priority: P_BASELINE,
|
|
471
|
+
why: `repo is empty — add real source and re-scan for a meaningful read (score is ${score}/100 with zero findings, which is not a clean bill of health).`,
|
|
472
|
+
},
|
|
473
|
+
];
|
|
474
|
+
nextCommand = "pitstop scan";
|
|
475
|
+
why = plan[0].why;
|
|
170
476
|
}
|
|
171
477
|
}
|
|
172
478
|
else {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
: "repo looks clean — lock it with a CI gate and share the scorecard";
|
|
479
|
+
plan = buildPlan(repo, scan, ctx, { penDone, verifyDone }, driven);
|
|
480
|
+
nextCommand = plan[0]?.command ?? "pitstop scan";
|
|
481
|
+
why = plan[0]?.why ?? "run the next step in the plan below";
|
|
177
482
|
}
|
|
178
483
|
const pending = [];
|
|
179
484
|
if (security > 0) {
|
|
180
485
|
const est = effortMin(topCategory);
|
|
181
486
|
const link = topId ? ` · inspect: \`pitstop inspect ${topId}\`` : "";
|
|
182
|
-
|
|
487
|
+
const nextForSec = plan.find((s) => s.findingId === topId)?.command ?? "pitstop pen --fix";
|
|
488
|
+
pending.push(`${security} security finding(s) open (~${est} min)${link} — next: \`${nextForSec}\``);
|
|
183
489
|
}
|
|
184
490
|
if (clusters > 0) {
|
|
185
491
|
const id = topClusterId(scan.clusters);
|
|
@@ -204,8 +510,9 @@ export function computeNext(repo) {
|
|
|
204
510
|
if (fullyFixed)
|
|
205
511
|
pending.push("nothing open — repo is fully fixed ✓");
|
|
206
512
|
else
|
|
207
|
-
pending.push(`repo scores ${score}/100 — add real source and re-scan
|
|
513
|
+
pending.push(`no open findings but repo scores ${score}/100 — add real source and re-scan`);
|
|
208
514
|
}
|
|
515
|
+
const confidence = plan.length <= 1 ? "high" : plan.length <= 3 ? "medium" : "medium";
|
|
209
516
|
return {
|
|
210
517
|
nextCommand,
|
|
211
518
|
why,
|
|
@@ -213,6 +520,9 @@ export function computeNext(repo) {
|
|
|
213
520
|
counts: { security, clusters, circular, testFailed, dup, a11y, devex },
|
|
214
521
|
fullyFixed,
|
|
215
522
|
topId,
|
|
523
|
+
plan,
|
|
524
|
+
repoContext: ctx,
|
|
525
|
+
confidence,
|
|
216
526
|
};
|
|
217
527
|
}
|
|
218
528
|
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
@@ -248,12 +558,23 @@ export async function celebrateCard() {
|
|
|
248
558
|
borderColor: "green",
|
|
249
559
|
}));
|
|
250
560
|
}
|
|
561
|
+
function renderPlan(plan, current = 0) {
|
|
562
|
+
return plan
|
|
563
|
+
.map((s, i) => {
|
|
564
|
+
const marker = i === current ? chalk.green.bold("▶") : chalk.dim("•");
|
|
565
|
+
const cmd = i === current ? chalk.bold.cyan(s.command) : chalk.cyan(s.command);
|
|
566
|
+
return ` ${marker} ${cmd}\n ${chalk.dim(s.why)}`;
|
|
567
|
+
})
|
|
568
|
+
.join("\n");
|
|
569
|
+
}
|
|
251
570
|
export async function printNextCard(repo) {
|
|
252
571
|
const s = computeNext(repo);
|
|
253
572
|
if (s.fullyFixed) {
|
|
254
573
|
await celebrateCard();
|
|
255
574
|
return;
|
|
256
575
|
}
|
|
576
|
+
const idx = Math.max(0, s.plan.findIndex((p) => p.command === s.nextCommand));
|
|
577
|
+
const planBlock = s.plan.length > 1 ? "\n\n" + chalk.bold("Full remediation plan:") + "\n" + renderPlan(s.plan, idx) : "";
|
|
257
578
|
const pendingLines = s.pending.map((p) => chalk.yellow(` ☐ ${p}`)).join("\n");
|
|
258
579
|
const body = chalk.green(`▶ Next: `) +
|
|
259
580
|
chalk.bold.cyan(s.nextCommand) +
|
|
@@ -261,7 +582,11 @@ export async function printNextCard(repo) {
|
|
|
261
582
|
chalk.dim(` ${s.why}\n\n`) +
|
|
262
583
|
chalk.bold("Pending before this repo is fully fixed:") +
|
|
263
584
|
"\n" +
|
|
264
|
-
pendingLines
|
|
585
|
+
pendingLines +
|
|
586
|
+
planBlock +
|
|
587
|
+
(s.repoContext.stackSummary !== "unknown stack"
|
|
588
|
+
? "\n\n" + chalk.dim(`repo: ${s.repoContext.stackSummary} · CI: ${s.repoContext.hasCI ? "yes" : "no"} · secrets in .env: ${s.repoContext.hasEnv ? "yes" : "no"}`)
|
|
589
|
+
: "");
|
|
265
590
|
console.log(boxen(body, {
|
|
266
591
|
title: " PITSTOP — Next ",
|
|
267
592
|
titleAlignment: "center",
|
|
@@ -274,14 +599,20 @@ export async function printNextCard(repo) {
|
|
|
274
599
|
console.log(chalk.dim("Run it:") + "\n```bash\n" + s.nextCommand + "\n```");
|
|
275
600
|
}
|
|
276
601
|
export const nextCmd = new Command("next")
|
|
277
|
-
.description("Show the best next pitstop command
|
|
602
|
+
.description("Show the best next pitstop command, a repo-aware remediation plan, and everything still pending. " +
|
|
278
603
|
"Reads the sealed .pitstop/ artifacts — no guessing.")
|
|
279
604
|
.argument("[repo]", "path to the repo", ".")
|
|
605
|
+
.option("--plan", "print only the ordered remediation plan")
|
|
280
606
|
.option("--json", "print machine-readable JSON")
|
|
281
607
|
.action(async (repoArg, options) => {
|
|
282
608
|
const repo = path.resolve(repoArg);
|
|
609
|
+
const s = computeNext(repo);
|
|
283
610
|
if (options.json) {
|
|
284
|
-
console.log(JSON.stringify({ repo, ...
|
|
611
|
+
console.log(JSON.stringify({ repo, ...s }, null, 2));
|
|
612
|
+
return;
|
|
613
|
+
}
|
|
614
|
+
if (options.plan) {
|
|
615
|
+
console.log(renderPlan(s.plan, Math.max(0, s.plan.findIndex((p) => p.command === s.nextCommand))));
|
|
285
616
|
return;
|
|
286
617
|
}
|
|
287
618
|
await printNextCard(repo);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/commands/next.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/commands/next.ts"],"names":[],"mappings":"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"}
|