@vibecheckai/cli 3.5.0 → 3.5.2
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 +214 -237
- package/bin/runners/cli-utils.js +33 -2
- package/bin/runners/context/analyzer.js +52 -1
- package/bin/runners/context/generators/cursor.js +2 -49
- package/bin/runners/context/git-context.js +3 -1
- package/bin/runners/context/team-conventions.js +33 -7
- package/bin/runners/lib/analysis-core.js +25 -5
- package/bin/runners/lib/analyzers.js +431 -481
- package/bin/runners/lib/default-config.js +127 -0
- package/bin/runners/lib/doctor/modules/security.js +3 -1
- package/bin/runners/lib/engine/ast-cache.js +210 -0
- package/bin/runners/lib/engine/auth-extractor.js +211 -0
- package/bin/runners/lib/engine/billing-extractor.js +112 -0
- package/bin/runners/lib/engine/enforcement-extractor.js +100 -0
- package/bin/runners/lib/engine/env-extractor.js +207 -0
- package/bin/runners/lib/engine/express-extractor.js +208 -0
- package/bin/runners/lib/engine/extractors.js +849 -0
- package/bin/runners/lib/engine/index.js +207 -0
- package/bin/runners/lib/engine/repo-index.js +514 -0
- package/bin/runners/lib/engine/types.js +124 -0
- package/bin/runners/lib/engines/accessibility-engine.js +18 -218
- package/bin/runners/lib/engines/api-consistency-engine.js +30 -335
- package/bin/runners/lib/engines/cross-file-analysis-engine.js +27 -292
- package/bin/runners/lib/engines/empty-catch-engine.js +17 -127
- package/bin/runners/lib/engines/mock-data-engine.js +10 -53
- package/bin/runners/lib/engines/performance-issues-engine.js +36 -176
- package/bin/runners/lib/engines/security-vulnerabilities-engine.js +54 -382
- package/bin/runners/lib/engines/type-aware-engine.js +39 -263
- package/bin/runners/lib/engines/vibecheck-engines/index.js +13 -122
- package/bin/runners/lib/engines/vibecheck-engines/lib/ast-cache.js +164 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/code-quality-engine.js +291 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/console-logs-engine.js +83 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/dead-code-engine.js +198 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/deprecated-api-engine.js +275 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/empty-catch-engine.js +167 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/file-filter.js +217 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/hardcoded-secrets-engine.js +73 -373
- package/bin/runners/lib/engines/vibecheck-engines/lib/mock-data-engine.js +140 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/parallel-processor.js +164 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/performance-issues-engine.js +234 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/type-aware-engine.js +217 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/unsafe-regex-engine.js +78 -0
- package/bin/runners/lib/entitlements-v2.js +73 -97
- package/bin/runners/lib/error-handler.js +44 -3
- package/bin/runners/lib/error-messages.js +289 -0
- package/bin/runners/lib/evidence-pack.js +7 -1
- package/bin/runners/lib/finding-id.js +69 -0
- package/bin/runners/lib/finding-sorter.js +89 -0
- package/bin/runners/lib/html-proof-report.js +700 -350
- package/bin/runners/lib/missions/plan.js +6 -46
- package/bin/runners/lib/missions/templates.js +0 -232
- package/bin/runners/lib/next-action.js +560 -0
- package/bin/runners/lib/prerequisites.js +149 -0
- package/bin/runners/lib/route-detection.js +137 -68
- package/bin/runners/lib/scan-output.js +91 -76
- package/bin/runners/lib/scan-runner.js +135 -0
- package/bin/runners/lib/schemas/ajv-validator.js +464 -0
- package/bin/runners/lib/schemas/error-envelope.schema.json +105 -0
- package/bin/runners/lib/schemas/finding-v3.schema.json +151 -0
- package/bin/runners/lib/schemas/report-artifact.schema.json +120 -0
- package/bin/runners/lib/schemas/run-request.schema.json +108 -0
- package/bin/runners/lib/schemas/validator.js +27 -0
- package/bin/runners/lib/schemas/verdict.schema.json +140 -0
- package/bin/runners/lib/ship-output-enterprise.js +23 -23
- package/bin/runners/lib/ship-output.js +75 -31
- package/bin/runners/lib/terminal-ui.js +6 -113
- package/bin/runners/lib/truth.js +351 -10
- package/bin/runners/lib/unified-cli-output.js +430 -603
- package/bin/runners/lib/unified-output.js +13 -9
- package/bin/runners/runAIAgent.js +10 -5
- package/bin/runners/runAgent.js +0 -3
- package/bin/runners/runAllowlist.js +389 -0
- package/bin/runners/runApprove.js +0 -33
- package/bin/runners/runAuth.js +73 -45
- package/bin/runners/runCheckpoint.js +51 -11
- package/bin/runners/runClassify.js +85 -21
- package/bin/runners/runContext.js +0 -3
- package/bin/runners/runDoctor.js +41 -28
- package/bin/runners/runEvidencePack.js +362 -0
- package/bin/runners/runFirewall.js +0 -3
- package/bin/runners/runFirewallHook.js +0 -3
- package/bin/runners/runFix.js +66 -76
- package/bin/runners/runGuard.js +18 -411
- package/bin/runners/runInit.js +113 -30
- package/bin/runners/runLabs.js +424 -0
- package/bin/runners/runMcp.js +19 -25
- package/bin/runners/runPolish.js +64 -240
- package/bin/runners/runPromptFirewall.js +12 -5
- package/bin/runners/runProve.js +57 -22
- package/bin/runners/runQuickstart.js +531 -0
- package/bin/runners/runReality.js +59 -68
- package/bin/runners/runReport.js +38 -33
- package/bin/runners/runRuntime.js +8 -5
- package/bin/runners/runScan.js +1413 -190
- package/bin/runners/runShip.js +113 -719
- package/bin/runners/runTruth.js +0 -3
- package/bin/runners/runValidate.js +13 -9
- package/bin/runners/runWatch.js +23 -14
- package/bin/scan.js +6 -1
- package/bin/vibecheck.js +204 -185
- package/mcp-server/deprecation-middleware.js +282 -0
- package/mcp-server/handlers/index.ts +15 -0
- package/mcp-server/handlers/tool-handler.ts +554 -0
- package/mcp-server/index-v1.js +698 -0
- package/mcp-server/index.js +210 -238
- package/mcp-server/lib/cache-wrapper.cjs +383 -0
- package/mcp-server/lib/error-envelope.js +138 -0
- package/mcp-server/lib/executor.ts +499 -0
- package/mcp-server/lib/index.ts +19 -0
- package/mcp-server/lib/rate-limiter.js +166 -0
- package/mcp-server/lib/sandbox.test.ts +519 -0
- package/mcp-server/lib/sandbox.ts +395 -0
- package/mcp-server/lib/types.ts +267 -0
- package/mcp-server/package.json +12 -3
- package/mcp-server/registry/tool-registry.js +794 -0
- package/mcp-server/registry/tools.json +605 -0
- package/mcp-server/registry.test.ts +334 -0
- package/mcp-server/tests/tier-gating.test.js +297 -0
- package/mcp-server/tier-auth.js +378 -45
- package/mcp-server/tools-v3.js +353 -442
- package/mcp-server/tsconfig.json +37 -0
- package/mcp-server/vibecheck-2.0-tools.js +14 -1
- package/package.json +1 -1
- package/bin/runners/lib/agent-firewall/learning/learning-engine.js +0 -849
- package/bin/runners/lib/audit-logger.js +0 -532
- package/bin/runners/lib/authority/authorities/architecture.js +0 -364
- package/bin/runners/lib/authority/authorities/compliance.js +0 -341
- package/bin/runners/lib/authority/authorities/human.js +0 -343
- package/bin/runners/lib/authority/authorities/quality.js +0 -420
- package/bin/runners/lib/authority/authorities/security.js +0 -228
- package/bin/runners/lib/authority/index.js +0 -293
- package/bin/runners/lib/bundle/bundle-intelligence.js +0 -846
- package/bin/runners/lib/cli-charts.js +0 -368
- package/bin/runners/lib/cli-config-display.js +0 -405
- package/bin/runners/lib/cli-demo.js +0 -275
- package/bin/runners/lib/cli-errors.js +0 -438
- package/bin/runners/lib/cli-help-formatter.js +0 -439
- package/bin/runners/lib/cli-interactive-menu.js +0 -509
- package/bin/runners/lib/cli-prompts.js +0 -441
- package/bin/runners/lib/cli-scan-cards.js +0 -362
- package/bin/runners/lib/compliance-reporter.js +0 -710
- package/bin/runners/lib/conductor/index.js +0 -671
- package/bin/runners/lib/easy/README.md +0 -123
- package/bin/runners/lib/easy/index.js +0 -140
- package/bin/runners/lib/easy/interactive-wizard.js +0 -788
- package/bin/runners/lib/easy/one-click-firewall.js +0 -564
- package/bin/runners/lib/easy/zero-config-reality.js +0 -714
- package/bin/runners/lib/engines/async-patterns-engine.js +0 -444
- package/bin/runners/lib/engines/bundle-size-engine.js +0 -433
- package/bin/runners/lib/engines/confidence-scoring.js +0 -276
- package/bin/runners/lib/engines/context-detection.js +0 -264
- package/bin/runners/lib/engines/database-patterns-engine.js +0 -429
- package/bin/runners/lib/engines/duplicate-code-engine.js +0 -354
- package/bin/runners/lib/engines/env-variables-engine.js +0 -458
- package/bin/runners/lib/engines/error-handling-engine.js +0 -437
- package/bin/runners/lib/engines/false-positive-prevention.js +0 -630
- package/bin/runners/lib/engines/framework-adapters/index.js +0 -607
- package/bin/runners/lib/engines/framework-detection.js +0 -508
- package/bin/runners/lib/engines/import-order-engine.js +0 -429
- package/bin/runners/lib/engines/naming-conventions-engine.js +0 -544
- package/bin/runners/lib/engines/noise-reduction-engine.js +0 -452
- package/bin/runners/lib/engines/orchestrator.js +0 -334
- package/bin/runners/lib/engines/react-patterns-engine.js +0 -457
- package/bin/runners/lib/engines/vibecheck-engines/lib/ai-hallucination-engine.js +0 -806
- package/bin/runners/lib/engines/vibecheck-engines/lib/smart-fix-engine.js +0 -577
- package/bin/runners/lib/engines/vibecheck-engines/lib/vibe-score-engine.js +0 -543
- package/bin/runners/lib/engines/vibecheck-engines.js +0 -514
- package/bin/runners/lib/enhanced-features/index.js +0 -305
- package/bin/runners/lib/enhanced-output.js +0 -631
- package/bin/runners/lib/enterprise.js +0 -300
- package/bin/runners/lib/firewall/command-validator.js +0 -351
- package/bin/runners/lib/firewall/config.js +0 -341
- package/bin/runners/lib/firewall/content-validator.js +0 -519
- package/bin/runners/lib/firewall/index.js +0 -101
- package/bin/runners/lib/firewall/path-validator.js +0 -256
- package/bin/runners/lib/intelligence/cross-repo-intelligence.js +0 -817
- package/bin/runners/lib/mcp-utils.js +0 -425
- package/bin/runners/lib/output/index.js +0 -1022
- package/bin/runners/lib/policy-engine.js +0 -652
- package/bin/runners/lib/polish/autofix/accessibility-fixes.js +0 -333
- package/bin/runners/lib/polish/autofix/async-handlers.js +0 -273
- package/bin/runners/lib/polish/autofix/dead-code.js +0 -280
- package/bin/runners/lib/polish/autofix/imports-optimizer.js +0 -344
- package/bin/runners/lib/polish/autofix/index.js +0 -200
- package/bin/runners/lib/polish/autofix/remove-consoles.js +0 -209
- package/bin/runners/lib/polish/autofix/strengthen-types.js +0 -245
- package/bin/runners/lib/polish/backend-checks.js +0 -148
- package/bin/runners/lib/polish/documentation-checks.js +0 -111
- package/bin/runners/lib/polish/frontend-checks.js +0 -168
- package/bin/runners/lib/polish/index.js +0 -71
- package/bin/runners/lib/polish/infrastructure-checks.js +0 -131
- package/bin/runners/lib/polish/library-detection.js +0 -175
- package/bin/runners/lib/polish/performance-checks.js +0 -100
- package/bin/runners/lib/polish/security-checks.js +0 -148
- package/bin/runners/lib/polish/utils.js +0 -203
- package/bin/runners/lib/prompt-builder.js +0 -540
- package/bin/runners/lib/proof-certificate.js +0 -634
- package/bin/runners/lib/reality/accessibility-audit.js +0 -946
- package/bin/runners/lib/reality/api-contract-validator.js +0 -1012
- package/bin/runners/lib/reality/chaos-engineering.js +0 -1084
- package/bin/runners/lib/reality/performance-tracker.js +0 -1077
- package/bin/runners/lib/reality/scenario-generator.js +0 -1404
- package/bin/runners/lib/reality/visual-regression.js +0 -852
- package/bin/runners/lib/reality-profiler.js +0 -717
- package/bin/runners/lib/replay/flight-recorder-viewer.js +0 -1160
- package/bin/runners/lib/review/ai-code-review.js +0 -832
- package/bin/runners/lib/rules/custom-rule-engine.js +0 -985
- package/bin/runners/lib/sbom-generator.js +0 -641
- package/bin/runners/lib/scan-output-enhanced.js +0 -512
- package/bin/runners/lib/security/owasp-scanner.js +0 -939
- package/bin/runners/lib/validators/contract-validator.js +0 -283
- package/bin/runners/lib/validators/dead-export-detector.js +0 -279
- package/bin/runners/lib/validators/dep-audit.js +0 -245
- package/bin/runners/lib/validators/env-validator.js +0 -319
- package/bin/runners/lib/validators/index.js +0 -120
- package/bin/runners/lib/validators/license-checker.js +0 -252
- package/bin/runners/lib/validators/route-validator.js +0 -290
- package/bin/runners/runAuthority.js +0 -528
- package/bin/runners/runConductor.js +0 -772
- package/bin/runners/runContainer.js +0 -366
- package/bin/runners/runEasy.js +0 -410
- package/bin/runners/runIaC.js +0 -372
- package/bin/runners/runVibe.js +0 -791
- package/mcp-server/tools.js +0 -495
|
@@ -69,7 +69,6 @@ const CATEGORY_TO_MISSION_TYPE = {
|
|
|
69
69
|
GhostAuth: "ADD_SERVER_AUTH",
|
|
70
70
|
AuthCoverage: "ADD_SERVER_AUTH",
|
|
71
71
|
AuthDrift: "FIX_AUTH_DRIFT",
|
|
72
|
-
SecurityVulnerabilities: "FIX_SECURITY_VULN",
|
|
73
72
|
|
|
74
73
|
// Billing & Payments
|
|
75
74
|
Billing: "FIX_STRIPE_WEBHOOKS",
|
|
@@ -78,12 +77,9 @@ const CATEGORY_TO_MISSION_TYPE = {
|
|
|
78
77
|
// Routes & APIs
|
|
79
78
|
MissingRoute: "FIX_MISSING_ROUTE",
|
|
80
79
|
RouteDrift: "FIX_ROUTE_DRIFT",
|
|
81
|
-
APIConsistency: "FIX_API_CONSISTENCY",
|
|
82
80
|
|
|
83
81
|
// Environment & Config
|
|
84
82
|
EnvContract: "FIX_ENV_CONTRACT",
|
|
85
|
-
EnvVariable: "FIX_ENV_VALIDATION",
|
|
86
|
-
EnvSetup: "FIX_ENV_SETUP",
|
|
87
83
|
|
|
88
84
|
// Reality/Runtime issues
|
|
89
85
|
FakeSuccess: "FIX_FAKE_SUCCESS",
|
|
@@ -97,26 +93,6 @@ const CATEGORY_TO_MISSION_TYPE = {
|
|
|
97
93
|
TestKeys: "FIX_TEST_KEYS",
|
|
98
94
|
HardcodedSecrets: "FIX_HARDCODED_SECRETS",
|
|
99
95
|
SilentFallback: "FIX_SILENT_FALLBACK",
|
|
100
|
-
CodeQuality: "FIX_CODE_QUALITY",
|
|
101
|
-
|
|
102
|
-
// React Patterns (V5)
|
|
103
|
-
ReactPatterns: "FIX_REACT_PATTERN",
|
|
104
|
-
|
|
105
|
-
// Database Patterns (V5)
|
|
106
|
-
DatabasePatterns: "FIX_DATABASE_PATTERN",
|
|
107
|
-
|
|
108
|
-
// Async Patterns (V5)
|
|
109
|
-
AsyncPatterns: "FIX_ASYNC_PATTERN",
|
|
110
|
-
|
|
111
|
-
// Error Handling (V5)
|
|
112
|
-
ErrorHandling: "FIX_ERROR_HANDLING",
|
|
113
|
-
|
|
114
|
-
// Performance (V5)
|
|
115
|
-
Performance: "FIX_PERFORMANCE",
|
|
116
|
-
BundleSize: "FIX_BUNDLE_SIZE",
|
|
117
|
-
|
|
118
|
-
// Accessibility
|
|
119
|
-
Accessibility: "FIX_ACCESSIBILITY",
|
|
120
96
|
};
|
|
121
97
|
|
|
122
98
|
/**
|
|
@@ -128,7 +104,6 @@ const MISSION_PRIORITY = {
|
|
|
128
104
|
REMOVE_OWNER_MODE: 1,
|
|
129
105
|
FIX_HARDCODED_SECRETS: 2,
|
|
130
106
|
FIX_AUTH_DRIFT: 3,
|
|
131
|
-
FIX_SECURITY_VULN: 4,
|
|
132
107
|
|
|
133
108
|
// P1: Security & billing (fix before shipping)
|
|
134
109
|
FIX_STRIPE_WEBHOOKS: 10,
|
|
@@ -141,32 +116,17 @@ const MISSION_PRIORITY = {
|
|
|
141
116
|
FIX_PLACEHOLDER_DATA: 21,
|
|
142
117
|
FIX_FAKE_SUCCESS: 22,
|
|
143
118
|
|
|
144
|
-
// P3: Code quality
|
|
119
|
+
// P3: Code quality (fix when possible)
|
|
145
120
|
FIX_MISSING_ROUTE: 30,
|
|
146
121
|
FIX_ROUTE_DRIFT: 31,
|
|
147
122
|
FIX_ENV_CONTRACT: 32,
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
FIX_EMPTY_CATCH: 35,
|
|
151
|
-
FIX_SILENT_FALLBACK: 36,
|
|
152
|
-
FIX_ERROR_HANDLING: 37,
|
|
153
|
-
FIX_API_CONSISTENCY: 38,
|
|
154
|
-
|
|
155
|
-
// P4: React & Framework patterns
|
|
156
|
-
FIX_REACT_PATTERN: 40,
|
|
157
|
-
FIX_ASYNC_PATTERN: 41,
|
|
158
|
-
FIX_DATABASE_PATTERN: 42,
|
|
159
|
-
FIX_CODE_QUALITY: 43,
|
|
160
|
-
|
|
161
|
-
// P5: Performance & optimization
|
|
162
|
-
FIX_PERFORMANCE: 50,
|
|
163
|
-
FIX_BUNDLE_SIZE: 51,
|
|
123
|
+
FIX_EMPTY_CATCH: 33,
|
|
124
|
+
FIX_SILENT_FALLBACK: 34,
|
|
164
125
|
|
|
165
|
-
//
|
|
166
|
-
FIX_DEAD_UI:
|
|
167
|
-
FIX_ACCESSIBILITY: 61,
|
|
126
|
+
// P4: UI issues (fix before polish)
|
|
127
|
+
FIX_DEAD_UI: 40,
|
|
168
128
|
|
|
169
|
-
//
|
|
129
|
+
// P5: Generic (lowest priority)
|
|
170
130
|
GENERIC_FIX: 99,
|
|
171
131
|
};
|
|
172
132
|
|
|
@@ -304,238 +304,6 @@ function templateForMissionType(type) {
|
|
|
304
304
|
success: ["Silent fallback findings disappear and failures become visible."]
|
|
305
305
|
};
|
|
306
306
|
|
|
307
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
308
|
-
// V5 MISSION TYPES - React, Database, Async, Performance patterns
|
|
309
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
310
|
-
|
|
311
|
-
case "FIX_REACT_PATTERN":
|
|
312
|
-
return {
|
|
313
|
-
intent: "Fix React anti-patterns that cause bugs, performance issues, or maintenance problems.",
|
|
314
|
-
do: [
|
|
315
|
-
"For missing keys: Add unique, stable keys to list items (use IDs, not array indices).",
|
|
316
|
-
"For direct state mutation: Use setState/dispatch with new object/array references.",
|
|
317
|
-
"For conditional hooks: Move hooks to top level, use early returns AFTER hooks.",
|
|
318
|
-
"For missing deps: Add all referenced values to dependency arrays, or wrap in useCallback/useMemo.",
|
|
319
|
-
"For stale closures: Include state variables in deps or use functional updates."
|
|
320
|
-
],
|
|
321
|
-
dont: [
|
|
322
|
-
"Do not use array index as key for dynamic lists.",
|
|
323
|
-
"Do not mutate state directly (push, splice, sort on state arrays).",
|
|
324
|
-
"Do not call hooks inside conditions, loops, or nested functions.",
|
|
325
|
-
"Do not ignore ESLint exhaustive-deps warnings."
|
|
326
|
-
],
|
|
327
|
-
success: ["React pattern findings disappear and component behavior becomes predictable."]
|
|
328
|
-
};
|
|
329
|
-
|
|
330
|
-
case "FIX_DATABASE_PATTERN":
|
|
331
|
-
return {
|
|
332
|
-
intent: "Fix database anti-patterns that cause N+1 queries, data integrity issues, or performance problems.",
|
|
333
|
-
do: [
|
|
334
|
-
"For N+1 queries: Use eager loading (include/select), batch queries, or DataLoader.",
|
|
335
|
-
"For unbounded queries: Add pagination (take/limit) to prevent memory issues.",
|
|
336
|
-
"For missing transactions: Wrap multiple writes in transaction blocks for atomicity.",
|
|
337
|
-
"For raw query injection: Use parameterized queries or ORM methods with proper escaping.",
|
|
338
|
-
"For missing error handling: Wrap DB operations in try-catch with proper error recovery."
|
|
339
|
-
],
|
|
340
|
-
dont: [
|
|
341
|
-
"Do not query inside loops - batch before the loop.",
|
|
342
|
-
"Do not use string interpolation in raw SQL queries.",
|
|
343
|
-
"Do not rely on implicit transactions for multi-write operations.",
|
|
344
|
-
"Do not swallow database errors silently."
|
|
345
|
-
],
|
|
346
|
-
success: ["Database pattern findings disappear and queries become efficient and safe."]
|
|
347
|
-
};
|
|
348
|
-
|
|
349
|
-
case "FIX_ASYNC_PATTERN":
|
|
350
|
-
return {
|
|
351
|
-
intent: "Fix async/await and Promise anti-patterns that cause race conditions or unhandled errors.",
|
|
352
|
-
do: [
|
|
353
|
-
"For floating promises: Add await, .catch(), or void to explicitly handle/ignore.",
|
|
354
|
-
"For sequential awaits: Use Promise.all() for independent async operations.",
|
|
355
|
-
"For await in loops: Batch with Promise.all() or use for-await-of for streams.",
|
|
356
|
-
"For async Promise executor: Remove async from new Promise(async () => {}).",
|
|
357
|
-
"For empty async catch: Log error and either re-throw or handle meaningfully."
|
|
358
|
-
],
|
|
359
|
-
dont: [
|
|
360
|
-
"Do not create promises without handling rejections.",
|
|
361
|
-
"Do not use .then() inside async functions - use await instead.",
|
|
362
|
-
"Do not await sequentially when operations are independent.",
|
|
363
|
-
"Do not return inside Promise executor - resolve/reject instead."
|
|
364
|
-
],
|
|
365
|
-
success: ["Async pattern findings disappear and async code handles all paths correctly."]
|
|
366
|
-
};
|
|
367
|
-
|
|
368
|
-
case "FIX_ERROR_HANDLING":
|
|
369
|
-
return {
|
|
370
|
-
intent: "Improve error handling to make failures visible and debuggable.",
|
|
371
|
-
do: [
|
|
372
|
-
"For empty catch: Add error logging (console.error or structured logger).",
|
|
373
|
-
"For generic errors: Include specific context in error messages.",
|
|
374
|
-
"For missing catch: Add .catch() to promises or wrap in try-catch.",
|
|
375
|
-
"For rethrow without context: Wrap with new Error('Context: ', { cause: err }).",
|
|
376
|
-
"For inconsistent API errors: Standardize error response shape across endpoints."
|
|
377
|
-
],
|
|
378
|
-
dont: [
|
|
379
|
-
"Do not catch and ignore errors without logging.",
|
|
380
|
-
"Do not use generic messages like 'Something went wrong'.",
|
|
381
|
-
"Do not use console.log for errors - use console.error.",
|
|
382
|
-
"Do not expose internal error details to end users."
|
|
383
|
-
],
|
|
384
|
-
success: ["Error handling findings disappear and failures become traceable."]
|
|
385
|
-
};
|
|
386
|
-
|
|
387
|
-
case "FIX_SECURITY_VULN":
|
|
388
|
-
return {
|
|
389
|
-
intent: "Fix security vulnerabilities that could lead to data breaches or system compromise.",
|
|
390
|
-
do: [
|
|
391
|
-
"For SQL injection: Use parameterized queries or ORM methods.",
|
|
392
|
-
"For XSS: Sanitize user input before rendering (DOMPurify, sanitize-html).",
|
|
393
|
-
"For path traversal: Validate and normalize paths, use path.resolve().",
|
|
394
|
-
"For command injection: Escape shell arguments or use safer APIs.",
|
|
395
|
-
"For SSRF: Validate URLs against allowlist, block internal IPs."
|
|
396
|
-
],
|
|
397
|
-
dont: [
|
|
398
|
-
"Do not interpolate user input into SQL strings.",
|
|
399
|
-
"Do not use dangerouslySetInnerHTML with unsanitized content.",
|
|
400
|
-
"Do not use user input directly in file paths or shell commands.",
|
|
401
|
-
"Do not fetch arbitrary URLs provided by users."
|
|
402
|
-
],
|
|
403
|
-
success: ["Security vulnerability findings disappear and attack surface is reduced."]
|
|
404
|
-
};
|
|
405
|
-
|
|
406
|
-
case "FIX_PERFORMANCE":
|
|
407
|
-
return {
|
|
408
|
-
intent: "Fix performance issues that degrade user experience or waste resources.",
|
|
409
|
-
do: [
|
|
410
|
-
"For memory leaks: Add cleanup in useEffect return, remove event listeners.",
|
|
411
|
-
"For unnecessary re-renders: Use React.memo, useMemo, useCallback appropriately.",
|
|
412
|
-
"For large operations: Move to Web Workers or use pagination.",
|
|
413
|
-
"For sync in async: Use non-blocking alternatives (streams, async iteration).",
|
|
414
|
-
"For RSC issues: Keep client hooks out of server components, and vice versa."
|
|
415
|
-
],
|
|
416
|
-
dont: [
|
|
417
|
-
"Do not add event listeners without removal.",
|
|
418
|
-
"Do not re-create objects/arrays on every render.",
|
|
419
|
-
"Do not block the main thread with heavy computation.",
|
|
420
|
-
"Do not use useState/useEffect in Server Components."
|
|
421
|
-
],
|
|
422
|
-
success: ["Performance findings disappear and app becomes responsive."]
|
|
423
|
-
};
|
|
424
|
-
|
|
425
|
-
case "FIX_BUNDLE_SIZE":
|
|
426
|
-
return {
|
|
427
|
-
intent: "Reduce client bundle size to improve load times and user experience.",
|
|
428
|
-
do: [
|
|
429
|
-
"For heavy packages: Replace moment with date-fns/dayjs, lodash with lodash-es.",
|
|
430
|
-
"For full imports: Use tree-shakeable imports (import { x } from 'lib').",
|
|
431
|
-
"For server code in client: Move server-only imports behind dynamic imports.",
|
|
432
|
-
"For large icons: Import specific icons, not entire icon libraries.",
|
|
433
|
-
"Consider code splitting and lazy loading for large features."
|
|
434
|
-
],
|
|
435
|
-
dont: [
|
|
436
|
-
"Do not import entire libraries when you need one function.",
|
|
437
|
-
"Do not import server-only modules (fs, crypto) in client bundles.",
|
|
438
|
-
"Do not bundle development-only code in production.",
|
|
439
|
-
"Do not use moment.js for new projects."
|
|
440
|
-
],
|
|
441
|
-
success: ["Bundle size findings disappear and initial load time improves."]
|
|
442
|
-
};
|
|
443
|
-
|
|
444
|
-
case "FIX_API_CONSISTENCY":
|
|
445
|
-
return {
|
|
446
|
-
intent: "Standardize API design for better developer experience and maintainability.",
|
|
447
|
-
do: [
|
|
448
|
-
"For REST violations: Use correct HTTP methods (GET for reads, POST for creates).",
|
|
449
|
-
"For inconsistent responses: Standardize response shape ({ data, error, meta }).",
|
|
450
|
-
"For missing validation: Add input validation using Zod, Yup, or Joi.",
|
|
451
|
-
"For missing auth: Add authentication checks to sensitive endpoints.",
|
|
452
|
-
"For missing rate limiting: Add rate limiting to public endpoints."
|
|
453
|
-
],
|
|
454
|
-
dont: [
|
|
455
|
-
"Do not use GET for mutations or POST for reads.",
|
|
456
|
-
"Do not return different response shapes from different endpoints.",
|
|
457
|
-
"Do not trust client input without validation.",
|
|
458
|
-
"Do not expose sensitive endpoints without authentication."
|
|
459
|
-
],
|
|
460
|
-
success: ["API consistency findings disappear and API becomes predictable."]
|
|
461
|
-
};
|
|
462
|
-
|
|
463
|
-
case "FIX_ENV_VALIDATION":
|
|
464
|
-
return {
|
|
465
|
-
intent: "Add runtime validation for environment variables to catch misconfigurations early.",
|
|
466
|
-
do: [
|
|
467
|
-
"Validate required env vars at startup, fail fast if missing.",
|
|
468
|
-
"Parse boolean env vars explicitly (process.env.FLAG === 'true').",
|
|
469
|
-
"Parse numeric env vars with parseInt/parseFloat and validate.",
|
|
470
|
-
"Use typed env validation libraries (t3-env, envalid).",
|
|
471
|
-
"Document all env vars in .env.example with descriptions."
|
|
472
|
-
],
|
|
473
|
-
dont: [
|
|
474
|
-
"Do not compare env strings directly to booleans.",
|
|
475
|
-
"Do not use sensitive defaults that could accidentally work.",
|
|
476
|
-
"Do not let missing env vars cause cryptic runtime errors.",
|
|
477
|
-
"Do not use untyped process.env.* throughout the codebase."
|
|
478
|
-
],
|
|
479
|
-
success: ["Env validation findings disappear and misconfigurations fail fast."]
|
|
480
|
-
};
|
|
481
|
-
|
|
482
|
-
case "FIX_ENV_SETUP":
|
|
483
|
-
return {
|
|
484
|
-
intent: "Improve environment variable setup for security and developer experience.",
|
|
485
|
-
do: [
|
|
486
|
-
"Ensure .env is in .gitignore.",
|
|
487
|
-
"Create .env.example with all required variables.",
|
|
488
|
-
"Use descriptive names (DATABASE_URL not DB).",
|
|
489
|
-
"Document sensitive vs non-sensitive variables.",
|
|
490
|
-
"Set up different .env files for different environments."
|
|
491
|
-
],
|
|
492
|
-
dont: [
|
|
493
|
-
"Do not commit .env files with real secrets.",
|
|
494
|
-
"Do not use generic names for env vars.",
|
|
495
|
-
"Do not mix development defaults with production configs.",
|
|
496
|
-
"Do not leave .env.example out of date."
|
|
497
|
-
],
|
|
498
|
-
success: ["Env setup findings disappear and onboarding becomes easier."]
|
|
499
|
-
};
|
|
500
|
-
|
|
501
|
-
case "FIX_ACCESSIBILITY":
|
|
502
|
-
return {
|
|
503
|
-
intent: "Fix accessibility issues to make the application usable by everyone.",
|
|
504
|
-
do: [
|
|
505
|
-
"For missing alt text: Add descriptive alt text, or alt='' for decorative images.",
|
|
506
|
-
"For missing labels: Add aria-label or visible labels to interactive elements.",
|
|
507
|
-
"For keyboard access: Add keyboard handlers (onKeyDown) alongside onClick.",
|
|
508
|
-
"For missing focus: Ensure focusable elements have visible focus indicators.",
|
|
509
|
-
"Test with screen readers and keyboard-only navigation."
|
|
510
|
-
],
|
|
511
|
-
dont: [
|
|
512
|
-
"Do not use alt='image' or alt='icon' - be descriptive.",
|
|
513
|
-
"Do not rely solely on color to convey information.",
|
|
514
|
-
"Do not create mouse-only interactions.",
|
|
515
|
-
"Do not remove focus outlines without alternatives."
|
|
516
|
-
],
|
|
517
|
-
success: ["Accessibility findings disappear and app works for all users."]
|
|
518
|
-
};
|
|
519
|
-
|
|
520
|
-
case "FIX_CODE_QUALITY":
|
|
521
|
-
return {
|
|
522
|
-
intent: "Improve code quality for better maintainability and fewer bugs.",
|
|
523
|
-
do: [
|
|
524
|
-
"For high complexity: Break down functions into smaller, focused units.",
|
|
525
|
-
"For magic numbers: Extract to named constants with clear meanings.",
|
|
526
|
-
"For deep nesting: Use early returns, extract functions, or flatten logic.",
|
|
527
|
-
"For too many params: Use options objects or builder patterns.",
|
|
528
|
-
"For large files: Split into modules with clear responsibilities."
|
|
529
|
-
],
|
|
530
|
-
dont: [
|
|
531
|
-
"Do not write functions over 50 lines without good reason.",
|
|
532
|
-
"Do not use literal numbers without context (except 0, 1, -1).",
|
|
533
|
-
"Do not nest more than 3-4 levels deep.",
|
|
534
|
-
"Do not have functions with more than 4-5 parameters."
|
|
535
|
-
],
|
|
536
|
-
success: ["Code quality findings disappear and code becomes maintainable."]
|
|
537
|
-
};
|
|
538
|
-
|
|
539
307
|
default:
|
|
540
308
|
return {
|
|
541
309
|
intent: "Fix the specific finding with smallest correct patch.",
|