@vibecheckai/cli 3.2.6 → 3.4.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.
Files changed (89) hide show
  1. package/bin/registry.js +306 -90
  2. package/bin/runners/lib/agent-firewall/change-packet/builder.js +280 -6
  3. package/bin/runners/lib/agent-firewall/critic/index.js +151 -0
  4. package/bin/runners/lib/agent-firewall/critic/judge.js +432 -0
  5. package/bin/runners/lib/agent-firewall/critic/prompts.js +305 -0
  6. package/bin/runners/lib/agent-firewall/lawbook/distributor.js +465 -0
  7. package/bin/runners/lib/agent-firewall/lawbook/evaluator.js +604 -0
  8. package/bin/runners/lib/agent-firewall/lawbook/index.js +304 -0
  9. package/bin/runners/lib/agent-firewall/lawbook/registry.js +514 -0
  10. package/bin/runners/lib/agent-firewall/lawbook/schema.js +420 -0
  11. package/bin/runners/lib/agent-firewall/logger.js +141 -0
  12. package/bin/runners/lib/agent-firewall/policy/loader.js +312 -4
  13. package/bin/runners/lib/agent-firewall/policy/rules/ghost-env.js +113 -1
  14. package/bin/runners/lib/agent-firewall/policy/rules/ghost-route.js +133 -6
  15. package/bin/runners/lib/agent-firewall/proposal/extractor.js +394 -0
  16. package/bin/runners/lib/agent-firewall/proposal/index.js +212 -0
  17. package/bin/runners/lib/agent-firewall/proposal/schema.js +251 -0
  18. package/bin/runners/lib/agent-firewall/proposal/validator.js +386 -0
  19. package/bin/runners/lib/agent-firewall/reality/index.js +332 -0
  20. package/bin/runners/lib/agent-firewall/reality/state.js +625 -0
  21. package/bin/runners/lib/agent-firewall/reality/watcher.js +322 -0
  22. package/bin/runners/lib/agent-firewall/risk/index.js +173 -0
  23. package/bin/runners/lib/agent-firewall/risk/scorer.js +328 -0
  24. package/bin/runners/lib/agent-firewall/risk/thresholds.js +321 -0
  25. package/bin/runners/lib/agent-firewall/risk/vectors.js +421 -0
  26. package/bin/runners/lib/agent-firewall/simulator/diff-simulator.js +472 -0
  27. package/bin/runners/lib/agent-firewall/simulator/import-resolver.js +346 -0
  28. package/bin/runners/lib/agent-firewall/simulator/index.js +181 -0
  29. package/bin/runners/lib/agent-firewall/simulator/route-validator.js +380 -0
  30. package/bin/runners/lib/agent-firewall/time-machine/incident-correlator.js +661 -0
  31. package/bin/runners/lib/agent-firewall/time-machine/index.js +267 -0
  32. package/bin/runners/lib/agent-firewall/time-machine/replay-engine.js +436 -0
  33. package/bin/runners/lib/agent-firewall/time-machine/state-reconstructor.js +490 -0
  34. package/bin/runners/lib/agent-firewall/time-machine/timeline-builder.js +530 -0
  35. package/bin/runners/lib/analyzers.js +136 -141
  36. package/bin/runners/lib/authority-badge.js +425 -0
  37. package/bin/runners/lib/cli-output.js +7 -1
  38. package/bin/runners/lib/entitlements-v2.js +96 -505
  39. package/bin/runners/lib/error-handler.js +16 -9
  40. package/bin/runners/lib/exit-codes.js +275 -0
  41. package/bin/runners/lib/global-flags.js +37 -0
  42. package/bin/runners/lib/help-formatter.js +413 -0
  43. package/bin/runners/lib/logger.js +38 -0
  44. package/bin/runners/lib/scan-output.js +18 -19
  45. package/bin/runners/lib/ship-output.js +18 -25
  46. package/bin/runners/lib/unified-cli-output.js +604 -0
  47. package/bin/runners/lib/upsell.js +105 -205
  48. package/bin/runners/runApprove.js +1200 -0
  49. package/bin/runners/runAuth.js +324 -95
  50. package/bin/runners/runCheckpoint.js +39 -21
  51. package/bin/runners/runClassify.js +859 -0
  52. package/bin/runners/runContext.js +136 -24
  53. package/bin/runners/runDoctor.js +108 -68
  54. package/bin/runners/runFix.js +6 -5
  55. package/bin/runners/runGuard.js +212 -118
  56. package/bin/runners/runInit.js +3 -2
  57. package/bin/runners/runMcp.js +130 -52
  58. package/bin/runners/runPolish.js +43 -20
  59. package/bin/runners/runProve.js +1 -2
  60. package/bin/runners/runReport.js +3 -2
  61. package/bin/runners/runScan.js +77 -45
  62. package/bin/runners/runShip.js +3 -4
  63. package/bin/runners/runValidate.js +19 -2
  64. package/bin/runners/runWatch.js +104 -53
  65. package/bin/vibecheck.js +103 -21
  66. package/mcp-server/HARDENING_SUMMARY.md +299 -0
  67. package/mcp-server/agent-firewall-interceptor.js +367 -31
  68. package/mcp-server/authority-tools.js +569 -0
  69. package/mcp-server/conductor/conflict-resolver.js +588 -0
  70. package/mcp-server/conductor/execution-planner.js +544 -0
  71. package/mcp-server/conductor/index.js +377 -0
  72. package/mcp-server/conductor/lock-manager.js +615 -0
  73. package/mcp-server/conductor/request-queue.js +550 -0
  74. package/mcp-server/conductor/session-manager.js +500 -0
  75. package/mcp-server/conductor/tools.js +510 -0
  76. package/mcp-server/index.js +1152 -856
  77. package/mcp-server/lib/api-client.cjs +13 -0
  78. package/mcp-server/lib/logger.cjs +30 -0
  79. package/mcp-server/logger.js +173 -0
  80. package/mcp-server/package.json +2 -2
  81. package/mcp-server/premium-tools.js +2 -2
  82. package/mcp-server/tier-auth.js +194 -383
  83. package/mcp-server/tools-v3.js +495 -533
  84. package/mcp-server/truth-firewall-tools.js +145 -15
  85. package/mcp-server/vibecheck-tools.js +2 -2
  86. package/package.json +2 -3
  87. package/mcp-server/index.old.js +0 -4137
  88. package/mcp-server/lib/api-client.js +0 -269
  89. package/mcp-server/package-lock.json +0 -165
@@ -13,6 +13,44 @@ const t = require("@babel/types");
13
13
  const { routeMatches } = require("./claims");
14
14
  const { matcherCoversPath } = require("./auth-truth");
15
15
 
16
+ /* ============================================================================
17
+ * STANDARD IGNORE PATTERNS
18
+ * Used by all analyzers to exclude non-production code
19
+ * ========================================================================== */
20
+ const STANDARD_IGNORE_PATTERNS = [
21
+ // Core excludes
22
+ "**/node_modules/**",
23
+ "**/.next/**",
24
+ "**/dist/**",
25
+ "**/build/**",
26
+ "**/*.d.ts",
27
+ "**/*.d.ts.map",
28
+ // Test files
29
+ "**/__tests__/**",
30
+ "**/tests/**",
31
+ "**/*.test.ts",
32
+ "**/*.test.tsx",
33
+ "**/*.test.js",
34
+ "**/*.spec.ts",
35
+ "**/*.spec.tsx",
36
+ "**/*.spec.js",
37
+ "**/fixtures/**",
38
+ // Internal tooling
39
+ "**/mcp-server/**",
40
+ "**/bin/**",
41
+ "**/packages/cli/**",
42
+ // Examples and templates
43
+ "**/examples/**",
44
+ "**/templates/**",
45
+ "**/docs/**",
46
+ // Cache and generated
47
+ "**/.guardrail/**",
48
+ "**/.cursor/**",
49
+ "**/.vibecheck/**",
50
+ "**/coverage/**",
51
+ "**/_archive/**",
52
+ ];
53
+
16
54
  /* ============================================================================
17
55
  * WORLD-CLASS INFRA HELPERS
18
56
  * - file caching (speed + consistent evidence)
@@ -177,19 +215,69 @@ function pathLooksLikeAsset(p) {
177
215
  }
178
216
 
179
217
  function isInternalUtilityRoute(p) {
180
- return !!rxTest(/^\/(health|metrics|ready|live|version|debug|internal|security|websocket|ws|admin|dashboard|_|\.)/i, p);
218
+ // Common internal/utility routes that should NOT be flagged as missing
219
+ // These are typically framework-specific, monitoring, or debugging endpoints
220
+ const internalPatterns = [
221
+ // Health/monitoring
222
+ /^\/(health|healthz|healthcheck|ready|readyz|live|livez|liveness|readiness|metrics|status|ping|version)/i,
223
+ // Internal/debug
224
+ /^\/(debug|internal|_internal|__internal|security|\.well-known)/i,
225
+ // WebSockets
226
+ /^\/(websocket|ws|socket\.io|sockjs)/i,
227
+ // Admin/dashboard
228
+ /^\/(admin|dashboard|_admin|__admin)/i,
229
+ // Next.js internals
230
+ /^\/_next\//i,
231
+ // Vite/dev tools
232
+ /^\/@vite|^\/@fs|^\/__vite/i,
233
+ // GraphQL
234
+ /^\/(graphql|graphiql|playground)/i,
235
+ // Swagger/API docs
236
+ /^\/(swagger|api-docs|openapi|docs|redoc)/i,
237
+ // Auth callbacks
238
+ /^\/(auth|oauth|callback|login|logout|signin|signout)\/?(callback|redirect)?$/i,
239
+ // Common framework routes
240
+ /^\/(favicon\.ico|robots\.txt|sitemap\.xml|manifest\.json)$/i,
241
+ // Vercel/serverless
242
+ /^\/api\/_/i,
243
+ // Hidden paths
244
+ /^\/[._]/i,
245
+ ];
246
+ return internalPatterns.some(rx => rxTest(rx, p));
181
247
  }
182
248
 
183
249
  function looksInventedRoute(p) {
184
- // Stuff AI loves to hallucinate - but NOT legitimate test endpoints like /test-email
185
- // Only flag truly fake/placeholder routes, not common test/debug endpoints
186
- if (rxTest(/^\/(fake|dummy|foo|bar|baz|xxx|yyy|placeholder|asdf|qwerty|lorem|ipsum)\b/i, p)) return true;
187
- // Random hashes in path
188
- if (rxTest(/\/[a-f0-9]{32,}\b/i, p)) return true;
189
- // Obvious "ai generated" patterns
190
- if (rxTest(/^\/(generated|auto[-_]?gen)\b/i, p)) return true;
191
- // Obvious placeholder test data patterns (not legitimate /test-* endpoints)
192
- if (rxTest(/\/(test123|abc123|demo123|sample123)\b/i, p)) return true;
250
+ // Stuff AI loves to hallucinate - but be VERY precise to avoid false positives
251
+ // Only flag patterns that are CLEARLY fake/placeholder
252
+
253
+ // Require routes to start with these patterns (not just contain them)
254
+ // This avoids flagging legitimate routes like /users/foo-bar-123
255
+ const clearlyFakeStarts = [
256
+ /^\/(fake|dummy|placeholder|asdf|qwerty|lorem|ipsum)\b/i,
257
+ /^\/(foo|bar|baz|xxx|yyy)$/i, // Only if it's the ENTIRE route segment
258
+ ];
259
+
260
+ for (const rx of clearlyFakeStarts) {
261
+ if (rxTest(rx, p)) return true;
262
+ }
263
+
264
+ // Obvious "ai generated" patterns - must be at route start
265
+ if (rxTest(/^\/(generated|auto[-_]?gen|ai[-_]?gen)\b/i, p)) return true;
266
+
267
+ // Obvious placeholder test data patterns (test123, abc123, demo123)
268
+ // Only if the ENTIRE segment is clearly placeholder
269
+ if (rxTest(/\/(test123|abc123|demo123|sample123|example123)$/i, p)) return true;
270
+
271
+ // Very long hex strings in route (32+ chars) that aren't IDs
272
+ // Skip if it looks like a valid UUID pattern or session token
273
+ const segments = p.split('/').filter(Boolean);
274
+ for (const seg of segments) {
275
+ // Long hex that's NOT a UUID format and NOT a reasonable ID length
276
+ if (/^[a-f0-9]{40,}$/i.test(seg) && !/^[a-f0-9]{8}-/.test(seg)) {
277
+ return true;
278
+ }
279
+ }
280
+
193
281
  return false;
194
282
  }
195
283
 
@@ -445,7 +533,9 @@ function findMissingRoutes(truthpack) {
445
533
  .sort((a, b) => b.score - a.score)
446
534
  .slice(0, 3);
447
535
 
448
- return scored.filter((x) => x.score >= 0.35).map((x) => ({
536
+ // Raise threshold to 0.50 to only show genuinely similar routes
537
+ // This reduces "did you mean" noise for unrelated routes
538
+ return scored.filter((x) => x.score >= 0.50).map((x) => ({
449
539
  method: x.r._method,
450
540
  path: x.r._pathNorm,
451
541
  score: Number(x.score.toFixed(2)),
@@ -553,28 +643,39 @@ function findMissingRoutes(truthpack) {
553
643
 
554
644
  const invented = looksInventedRoute(pNorm);
555
645
  const internal = isInternalUtilityRoute(pNorm);
646
+
647
+ // Skip internal utility routes entirely - they're almost never real issues
648
+ if (internal) continue;
556
649
 
557
650
  // Similarity suggestions
558
651
  const suggestions = closestSuggestions(method, pNorm);
559
652
 
560
- // Confidence + severity gating
653
+ // Confidence + severity gating - CONSERVATIVE by default to reduce noise
561
654
  let confidence = "low";
562
655
  let severity = "WARN";
563
656
 
564
- if (invented && !internal) {
657
+ if (invented) {
658
+ // Only BLOCK truly invented routes - and require high confidence
565
659
  severity = "BLOCK";
566
660
  confidence = "high";
567
- } else if (routeMapQuality === "strong" && !isLikelyMonorepo && !internal) {
568
- // Only escalate if route map quality is strong and it doesn't look like a monorepo
661
+ } else if (routeMapQuality === "strong" && !isLikelyMonorepo) {
662
+ // Even with strong route map, be conservative
569
663
  const best = suggestions[0]?.score ?? 0;
570
- // If there's no close suggestion, it's more likely actually missing
571
- if (best < 0.40) {
572
- severity = "WARN"; // keep WARN by default; you can flip to BLOCK if you want
664
+ if (best < 0.30) {
665
+ // No close matches - more likely to be a real issue, but still WARN
573
666
  confidence = "med";
667
+ severity = "WARN";
668
+ } else if (best >= 0.70) {
669
+ // Very close match exists - probably a typo, keep as low-priority WARN
670
+ confidence = "low";
671
+ severity = "WARN";
574
672
  } else {
673
+ // Moderate similarity - unclear
575
674
  confidence = "low";
675
+ severity = "WARN";
576
676
  }
577
677
  } else {
678
+ // Weak route map or monorepo - don't trust findings, always WARN with low confidence
578
679
  confidence = "low";
579
680
  severity = "WARN";
580
681
  }
@@ -851,7 +952,7 @@ function findFakeSuccess(repoRoot) {
851
952
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
852
953
  cwd: repoRoot,
853
954
  absolute: true,
854
- ignore: ["**/node_modules/**", "**/.next/**", "**/dist/**", "**/build/**"],
955
+ ignore: STANDARD_IGNORE_PATTERNS,
855
956
  });
856
957
 
857
958
  for (const fileAbs of files) {
@@ -1142,7 +1243,7 @@ function findOwnerModeBypass(repoRoot) {
1142
1243
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
1143
1244
  cwd: repoRoot,
1144
1245
  absolute: true,
1145
- ignore: ["**/node_modules/**", "**/.next/**", "**/dist/**", "**/build/**"],
1246
+ ignore: STANDARD_IGNORE_PATTERNS,
1146
1247
  });
1147
1248
 
1148
1249
  const patterns = [
@@ -1187,17 +1288,7 @@ function findMockData(repoRoot) {
1187
1288
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
1188
1289
  cwd: repoRoot,
1189
1290
  absolute: true,
1190
- ignore: [
1191
- "**/node_modules/**",
1192
- "**/.next/**",
1193
- "**/dist/**",
1194
- "**/build/**",
1195
- "**/*.test.*",
1196
- "**/*.spec.*",
1197
- "**/tests/**",
1198
- "**/test/**",
1199
- "**/__tests__/**",
1200
- ],
1291
+ ignore: STANDARD_IGNORE_PATTERNS,
1201
1292
  });
1202
1293
 
1203
1294
  for (const fileAbs of files) {
@@ -1248,13 +1339,7 @@ function findTodoFixme(repoRoot) {
1248
1339
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
1249
1340
  cwd: repoRoot,
1250
1341
  absolute: true,
1251
- ignore: [
1252
- "**/node_modules/**",
1253
- "**/.next/**",
1254
- "**/dist/**",
1255
- "**/build/**",
1256
- "**/*.d.ts",
1257
- ],
1342
+ ignore: STANDARD_IGNORE_PATTERNS,
1258
1343
  });
1259
1344
 
1260
1345
  for (const fileAbs of files) {
@@ -1321,13 +1406,7 @@ function findConsoleLogs(repoRoot) {
1321
1406
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
1322
1407
  cwd: repoRoot,
1323
1408
  absolute: true,
1324
- ignore: [
1325
- "**/node_modules/**",
1326
- "**/.next/**",
1327
- "**/dist/**",
1328
- "**/build/**",
1329
- "**/*.d.ts",
1330
- ],
1409
+ ignore: STANDARD_IGNORE_PATTERNS,
1331
1410
  });
1332
1411
 
1333
1412
  for (const fileAbs of files) {
@@ -1373,16 +1452,7 @@ function findHardcodedSecrets(repoRoot) {
1373
1452
  const files = fg.sync(["**/*.{ts,tsx,js,jsx,json}"], {
1374
1453
  cwd: repoRoot,
1375
1454
  absolute: true,
1376
- ignore: [
1377
- "**/node_modules/**",
1378
- "**/.next/**",
1379
- "**/dist/**",
1380
- "**/build/**",
1381
- "**/package*.json",
1382
- "**/*.test.*",
1383
- "**/tests/**",
1384
- "**/*.d.ts",
1385
- ],
1455
+ ignore: [...STANDARD_IGNORE_PATTERNS, "**/package*.json"],
1386
1456
  });
1387
1457
 
1388
1458
  for (const fileAbs of files) {
@@ -1439,13 +1509,7 @@ function findDeadCode(repoRoot) {
1439
1509
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
1440
1510
  cwd: repoRoot,
1441
1511
  absolute: true,
1442
- ignore: [
1443
- "**/node_modules/**",
1444
- "**/.next/**",
1445
- "**/dist/**",
1446
- "**/build/**",
1447
- "**/*.d.ts",
1448
- ],
1512
+ ignore: STANDARD_IGNORE_PATTERNS,
1449
1513
  });
1450
1514
 
1451
1515
  for (const fileAbs of files) {
@@ -1491,13 +1555,7 @@ function findDeprecatedApis(repoRoot) {
1491
1555
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
1492
1556
  cwd: repoRoot,
1493
1557
  absolute: true,
1494
- ignore: [
1495
- "**/node_modules/**",
1496
- "**/.next/**",
1497
- "**/dist/**",
1498
- "**/build/**",
1499
- "**/*.d.ts",
1500
- ],
1558
+ ignore: STANDARD_IGNORE_PATTERNS,
1501
1559
  });
1502
1560
 
1503
1561
  for (const fileAbs of files) {
@@ -1543,13 +1601,7 @@ function findEmptyCatch(repoRoot) {
1543
1601
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
1544
1602
  cwd: repoRoot,
1545
1603
  absolute: true,
1546
- ignore: [
1547
- "**/node_modules/**",
1548
- "**/.next/**",
1549
- "**/dist/**",
1550
- "**/build/**",
1551
- "**/*.d.ts",
1552
- ],
1604
+ ignore: STANDARD_IGNORE_PATTERNS,
1553
1605
  });
1554
1606
 
1555
1607
  for (const fileAbs of files) {
@@ -1595,13 +1647,7 @@ function findUnsafeRegex(repoRoot) {
1595
1647
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
1596
1648
  cwd: repoRoot,
1597
1649
  absolute: true,
1598
- ignore: [
1599
- "**/node_modules/**",
1600
- "**/.next/**",
1601
- "**/dist/**",
1602
- "**/build/**",
1603
- "**/*.d.ts",
1604
- ],
1650
+ ignore: STANDARD_IGNORE_PATTERNS,
1605
1651
  });
1606
1652
 
1607
1653
  for (const fileAbs of files) {
@@ -1649,13 +1695,7 @@ function findSecurityVulnerabilities(repoRoot) {
1649
1695
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
1650
1696
  cwd: repoRoot,
1651
1697
  absolute: true,
1652
- ignore: [
1653
- "**/node_modules/**",
1654
- "**/.next/**",
1655
- "**/dist/**",
1656
- "**/build/**",
1657
- "**/*.d.ts",
1658
- ],
1698
+ ignore: STANDARD_IGNORE_PATTERNS,
1659
1699
  });
1660
1700
 
1661
1701
  for (const fileAbs of files) {
@@ -1699,13 +1739,7 @@ function findPerformanceIssues(repoRoot) {
1699
1739
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
1700
1740
  cwd: repoRoot,
1701
1741
  absolute: true,
1702
- ignore: [
1703
- "**/node_modules/**",
1704
- "**/.next/**",
1705
- "**/dist/**",
1706
- "**/build/**",
1707
- "**/*.d.ts",
1708
- ],
1742
+ ignore: STANDARD_IGNORE_PATTERNS,
1709
1743
  });
1710
1744
 
1711
1745
  for (const fileAbs of files) {
@@ -1750,13 +1784,7 @@ function findCodeQualityIssues(repoRoot) {
1750
1784
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
1751
1785
  cwd: repoRoot,
1752
1786
  absolute: true,
1753
- ignore: [
1754
- "**/node_modules/**",
1755
- "**/.next/**",
1756
- "**/dist/**",
1757
- "**/build/**",
1758
- "**/*.d.ts",
1759
- ],
1787
+ ignore: STANDARD_IGNORE_PATTERNS,
1760
1788
  });
1761
1789
 
1762
1790
  for (const fileAbs of files) {
@@ -1802,16 +1830,7 @@ function findCrossFileIssues(repoRoot) {
1802
1830
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
1803
1831
  cwd: repoRoot,
1804
1832
  absolute: true,
1805
- ignore: [
1806
- "**/node_modules/**",
1807
- "**/.next/**",
1808
- "**/dist/**",
1809
- "**/build/**",
1810
- "**/*.d.ts",
1811
- "**/*.test.*",
1812
- "**/*.spec.*",
1813
- "**/tests/**",
1814
- ],
1833
+ ignore: STANDARD_IGNORE_PATTERNS,
1815
1834
  });
1816
1835
 
1817
1836
  const engineFindings = analyzeCrossFile(files, repoRoot);
@@ -1846,13 +1865,7 @@ function findTypeSafetyIssues(repoRoot) {
1846
1865
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
1847
1866
  cwd: repoRoot,
1848
1867
  absolute: true,
1849
- ignore: [
1850
- "**/node_modules/**",
1851
- "**/.next/**",
1852
- "**/dist/**",
1853
- "**/build/**",
1854
- "**/*.d.ts",
1855
- ],
1868
+ ignore: STANDARD_IGNORE_PATTERNS,
1856
1869
  });
1857
1870
 
1858
1871
  for (const fileAbs of files) {
@@ -1896,16 +1909,7 @@ function findAccessibilityIssues(repoRoot) {
1896
1909
  const files = fg.sync(["**/*.{tsx,jsx}"], {
1897
1910
  cwd: repoRoot,
1898
1911
  absolute: true,
1899
- ignore: [
1900
- "**/node_modules/**",
1901
- "**/.next/**",
1902
- "**/dist/**",
1903
- "**/build/**",
1904
- "**/*.d.ts",
1905
- "**/*.test.*",
1906
- "**/*.spec.*",
1907
- "**/tests/**",
1908
- ],
1912
+ ignore: STANDARD_IGNORE_PATTERNS,
1909
1913
  });
1910
1914
 
1911
1915
  for (const fileAbs of files) {
@@ -1949,16 +1953,7 @@ function findAPIConsistencyIssues(repoRoot) {
1949
1953
  const files = fg.sync(["**/*.{ts,tsx,js,jsx}"], {
1950
1954
  cwd: repoRoot,
1951
1955
  absolute: true,
1952
- ignore: [
1953
- "**/node_modules/**",
1954
- "**/.next/**",
1955
- "**/dist/**",
1956
- "**/build/**",
1957
- "**/*.d.ts",
1958
- "**/*.test.*",
1959
- "**/*.spec.*",
1960
- "**/tests/**",
1961
- ],
1956
+ ignore: STANDARD_IGNORE_PATTERNS,
1962
1957
  });
1963
1958
 
1964
1959
  for (const fileAbs of files) {