@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.
- package/bin/registry.js +306 -90
- package/bin/runners/lib/agent-firewall/change-packet/builder.js +280 -6
- package/bin/runners/lib/agent-firewall/critic/index.js +151 -0
- package/bin/runners/lib/agent-firewall/critic/judge.js +432 -0
- package/bin/runners/lib/agent-firewall/critic/prompts.js +305 -0
- package/bin/runners/lib/agent-firewall/lawbook/distributor.js +465 -0
- package/bin/runners/lib/agent-firewall/lawbook/evaluator.js +604 -0
- package/bin/runners/lib/agent-firewall/lawbook/index.js +304 -0
- package/bin/runners/lib/agent-firewall/lawbook/registry.js +514 -0
- package/bin/runners/lib/agent-firewall/lawbook/schema.js +420 -0
- package/bin/runners/lib/agent-firewall/logger.js +141 -0
- package/bin/runners/lib/agent-firewall/policy/loader.js +312 -4
- package/bin/runners/lib/agent-firewall/policy/rules/ghost-env.js +113 -1
- package/bin/runners/lib/agent-firewall/policy/rules/ghost-route.js +133 -6
- package/bin/runners/lib/agent-firewall/proposal/extractor.js +394 -0
- package/bin/runners/lib/agent-firewall/proposal/index.js +212 -0
- package/bin/runners/lib/agent-firewall/proposal/schema.js +251 -0
- package/bin/runners/lib/agent-firewall/proposal/validator.js +386 -0
- package/bin/runners/lib/agent-firewall/reality/index.js +332 -0
- package/bin/runners/lib/agent-firewall/reality/state.js +625 -0
- package/bin/runners/lib/agent-firewall/reality/watcher.js +322 -0
- package/bin/runners/lib/agent-firewall/risk/index.js +173 -0
- package/bin/runners/lib/agent-firewall/risk/scorer.js +328 -0
- package/bin/runners/lib/agent-firewall/risk/thresholds.js +321 -0
- package/bin/runners/lib/agent-firewall/risk/vectors.js +421 -0
- package/bin/runners/lib/agent-firewall/simulator/diff-simulator.js +472 -0
- package/bin/runners/lib/agent-firewall/simulator/import-resolver.js +346 -0
- package/bin/runners/lib/agent-firewall/simulator/index.js +181 -0
- package/bin/runners/lib/agent-firewall/simulator/route-validator.js +380 -0
- package/bin/runners/lib/agent-firewall/time-machine/incident-correlator.js +661 -0
- package/bin/runners/lib/agent-firewall/time-machine/index.js +267 -0
- package/bin/runners/lib/agent-firewall/time-machine/replay-engine.js +436 -0
- package/bin/runners/lib/agent-firewall/time-machine/state-reconstructor.js +490 -0
- package/bin/runners/lib/agent-firewall/time-machine/timeline-builder.js +530 -0
- package/bin/runners/lib/analyzers.js +136 -141
- package/bin/runners/lib/authority-badge.js +425 -0
- package/bin/runners/lib/cli-output.js +7 -1
- package/bin/runners/lib/entitlements-v2.js +96 -505
- package/bin/runners/lib/error-handler.js +16 -9
- package/bin/runners/lib/exit-codes.js +275 -0
- package/bin/runners/lib/global-flags.js +37 -0
- package/bin/runners/lib/help-formatter.js +413 -0
- package/bin/runners/lib/logger.js +38 -0
- package/bin/runners/lib/scan-output.js +18 -19
- package/bin/runners/lib/ship-output.js +18 -25
- package/bin/runners/lib/unified-cli-output.js +604 -0
- package/bin/runners/lib/upsell.js +105 -205
- package/bin/runners/runApprove.js +1200 -0
- package/bin/runners/runAuth.js +324 -95
- package/bin/runners/runCheckpoint.js +39 -21
- package/bin/runners/runClassify.js +859 -0
- package/bin/runners/runContext.js +136 -24
- package/bin/runners/runDoctor.js +108 -68
- package/bin/runners/runFix.js +6 -5
- package/bin/runners/runGuard.js +212 -118
- package/bin/runners/runInit.js +3 -2
- package/bin/runners/runMcp.js +130 -52
- package/bin/runners/runPolish.js +43 -20
- package/bin/runners/runProve.js +1 -2
- package/bin/runners/runReport.js +3 -2
- package/bin/runners/runScan.js +77 -45
- package/bin/runners/runShip.js +3 -4
- package/bin/runners/runValidate.js +19 -2
- package/bin/runners/runWatch.js +104 -53
- package/bin/vibecheck.js +103 -21
- package/mcp-server/HARDENING_SUMMARY.md +299 -0
- package/mcp-server/agent-firewall-interceptor.js +367 -31
- package/mcp-server/authority-tools.js +569 -0
- package/mcp-server/conductor/conflict-resolver.js +588 -0
- package/mcp-server/conductor/execution-planner.js +544 -0
- package/mcp-server/conductor/index.js +377 -0
- package/mcp-server/conductor/lock-manager.js +615 -0
- package/mcp-server/conductor/request-queue.js +550 -0
- package/mcp-server/conductor/session-manager.js +500 -0
- package/mcp-server/conductor/tools.js +510 -0
- package/mcp-server/index.js +1152 -856
- package/mcp-server/lib/api-client.cjs +13 -0
- package/mcp-server/lib/logger.cjs +30 -0
- package/mcp-server/logger.js +173 -0
- package/mcp-server/package.json +2 -2
- package/mcp-server/premium-tools.js +2 -2
- package/mcp-server/tier-auth.js +194 -383
- package/mcp-server/tools-v3.js +495 -533
- package/mcp-server/truth-firewall-tools.js +145 -15
- package/mcp-server/vibecheck-tools.js +2 -2
- package/package.json +2 -3
- package/mcp-server/index.old.js +0 -4137
- package/mcp-server/lib/api-client.js +0 -269
- 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
|
-
|
|
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
|
|
185
|
-
// Only flag
|
|
186
|
-
|
|
187
|
-
//
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
568
|
-
//
|
|
661
|
+
} else if (routeMapQuality === "strong" && !isLikelyMonorepo) {
|
|
662
|
+
// Even with strong route map, be conservative
|
|
569
663
|
const best = suggestions[0]?.score ?? 0;
|
|
570
|
-
|
|
571
|
-
|
|
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:
|
|
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:
|
|
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) {
|