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.
@@ -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 "Pending before this repo is fully fixed" checklist — each item
15
- * annotated with a rough effort estimate and, where possible, a
16
- * `pitstop inspect <id>` deep-link to the exact finding.
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
- * This is what the slash-command templates point the agent at after *any*
19
- * `pitstop` run, so the user always sees where they are and what to do next —
20
- * no guessing, no hallucinated suggestions.
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 security = scan.security?.issues?.length ?? 0;
106
- const clusters = scan.clusters?.length ?? 0;
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) ?? scan.security?.issues?.find((i) => i.id)?.id;
128
- const topCategory = scan.security?.issues?.find((i) => i.id)?.category ??
129
- scan.clusters?.[0]?.rootCause.type;
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
- const hasHigh = (scan.security?.issues ?? []).some((i) => (i.severity ?? "").toUpperCase() === "HIGH" || (i.severity ?? "").toUpperCase() === "CRITICAL");
133
- const needsFix = clusters > 0 || hasHigh;
134
- if (security > 0 && needsFix) {
135
- if (!penDone) {
136
- if (topId) {
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
- nextCommand = "pitstop gate --score 60";
151
- why = "findings are driven + verified — lock the win with a one-number CI gate";
152
- }
153
- }
154
- else if (security > 0) {
155
- nextCommand = "pitstop gate --score 60";
156
- why = "only moderate/low advisories remain (no root-cause clusters) — lock the repo with a CI gate, then `pitstop report`";
157
- }
158
- else if (testFailed > 0) {
159
- if (!penDone) {
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
- nextCommand = "pitstop gate --score 60";
174
- why = openIssues
175
- ? "non-security items remain — add the gate, then share the scorecard"
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
- pending.push(`${security} security finding(s) open (~${est} min)${link} — ${penDone ? (verifyDone ? "verified; add the gate" : "run `pitstop verify`") : "run `pitstop pen --fix` or `pitstop drive <id>`"}`);
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 for a meaningful read`);
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 to run and everything still pending before the repo is fully fixed. " +
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, ...computeNext(repo) }, null, 2));
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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"}