@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.
Files changed (224) hide show
  1. package/bin/registry.js +214 -237
  2. package/bin/runners/cli-utils.js +33 -2
  3. package/bin/runners/context/analyzer.js +52 -1
  4. package/bin/runners/context/generators/cursor.js +2 -49
  5. package/bin/runners/context/git-context.js +3 -1
  6. package/bin/runners/context/team-conventions.js +33 -7
  7. package/bin/runners/lib/analysis-core.js +25 -5
  8. package/bin/runners/lib/analyzers.js +431 -481
  9. package/bin/runners/lib/default-config.js +127 -0
  10. package/bin/runners/lib/doctor/modules/security.js +3 -1
  11. package/bin/runners/lib/engine/ast-cache.js +210 -0
  12. package/bin/runners/lib/engine/auth-extractor.js +211 -0
  13. package/bin/runners/lib/engine/billing-extractor.js +112 -0
  14. package/bin/runners/lib/engine/enforcement-extractor.js +100 -0
  15. package/bin/runners/lib/engine/env-extractor.js +207 -0
  16. package/bin/runners/lib/engine/express-extractor.js +208 -0
  17. package/bin/runners/lib/engine/extractors.js +849 -0
  18. package/bin/runners/lib/engine/index.js +207 -0
  19. package/bin/runners/lib/engine/repo-index.js +514 -0
  20. package/bin/runners/lib/engine/types.js +124 -0
  21. package/bin/runners/lib/engines/accessibility-engine.js +18 -218
  22. package/bin/runners/lib/engines/api-consistency-engine.js +30 -335
  23. package/bin/runners/lib/engines/cross-file-analysis-engine.js +27 -292
  24. package/bin/runners/lib/engines/empty-catch-engine.js +17 -127
  25. package/bin/runners/lib/engines/mock-data-engine.js +10 -53
  26. package/bin/runners/lib/engines/performance-issues-engine.js +36 -176
  27. package/bin/runners/lib/engines/security-vulnerabilities-engine.js +54 -382
  28. package/bin/runners/lib/engines/type-aware-engine.js +39 -263
  29. package/bin/runners/lib/engines/vibecheck-engines/index.js +13 -122
  30. package/bin/runners/lib/engines/vibecheck-engines/lib/ast-cache.js +164 -0
  31. package/bin/runners/lib/engines/vibecheck-engines/lib/code-quality-engine.js +291 -0
  32. package/bin/runners/lib/engines/vibecheck-engines/lib/console-logs-engine.js +83 -0
  33. package/bin/runners/lib/engines/vibecheck-engines/lib/dead-code-engine.js +198 -0
  34. package/bin/runners/lib/engines/vibecheck-engines/lib/deprecated-api-engine.js +275 -0
  35. package/bin/runners/lib/engines/vibecheck-engines/lib/empty-catch-engine.js +167 -0
  36. package/bin/runners/lib/engines/vibecheck-engines/lib/file-filter.js +217 -0
  37. package/bin/runners/lib/engines/vibecheck-engines/lib/hardcoded-secrets-engine.js +73 -373
  38. package/bin/runners/lib/engines/vibecheck-engines/lib/mock-data-engine.js +140 -0
  39. package/bin/runners/lib/engines/vibecheck-engines/lib/parallel-processor.js +164 -0
  40. package/bin/runners/lib/engines/vibecheck-engines/lib/performance-issues-engine.js +234 -0
  41. package/bin/runners/lib/engines/vibecheck-engines/lib/type-aware-engine.js +217 -0
  42. package/bin/runners/lib/engines/vibecheck-engines/lib/unsafe-regex-engine.js +78 -0
  43. package/bin/runners/lib/entitlements-v2.js +73 -97
  44. package/bin/runners/lib/error-handler.js +44 -3
  45. package/bin/runners/lib/error-messages.js +289 -0
  46. package/bin/runners/lib/evidence-pack.js +7 -1
  47. package/bin/runners/lib/finding-id.js +69 -0
  48. package/bin/runners/lib/finding-sorter.js +89 -0
  49. package/bin/runners/lib/html-proof-report.js +700 -350
  50. package/bin/runners/lib/missions/plan.js +6 -46
  51. package/bin/runners/lib/missions/templates.js +0 -232
  52. package/bin/runners/lib/next-action.js +560 -0
  53. package/bin/runners/lib/prerequisites.js +149 -0
  54. package/bin/runners/lib/route-detection.js +137 -68
  55. package/bin/runners/lib/scan-output.js +91 -76
  56. package/bin/runners/lib/scan-runner.js +135 -0
  57. package/bin/runners/lib/schemas/ajv-validator.js +464 -0
  58. package/bin/runners/lib/schemas/error-envelope.schema.json +105 -0
  59. package/bin/runners/lib/schemas/finding-v3.schema.json +151 -0
  60. package/bin/runners/lib/schemas/report-artifact.schema.json +120 -0
  61. package/bin/runners/lib/schemas/run-request.schema.json +108 -0
  62. package/bin/runners/lib/schemas/validator.js +27 -0
  63. package/bin/runners/lib/schemas/verdict.schema.json +140 -0
  64. package/bin/runners/lib/ship-output-enterprise.js +23 -23
  65. package/bin/runners/lib/ship-output.js +75 -31
  66. package/bin/runners/lib/terminal-ui.js +6 -113
  67. package/bin/runners/lib/truth.js +351 -10
  68. package/bin/runners/lib/unified-cli-output.js +430 -603
  69. package/bin/runners/lib/unified-output.js +13 -9
  70. package/bin/runners/runAIAgent.js +10 -5
  71. package/bin/runners/runAgent.js +0 -3
  72. package/bin/runners/runAllowlist.js +389 -0
  73. package/bin/runners/runApprove.js +0 -33
  74. package/bin/runners/runAuth.js +73 -45
  75. package/bin/runners/runCheckpoint.js +51 -11
  76. package/bin/runners/runClassify.js +85 -21
  77. package/bin/runners/runContext.js +0 -3
  78. package/bin/runners/runDoctor.js +41 -28
  79. package/bin/runners/runEvidencePack.js +362 -0
  80. package/bin/runners/runFirewall.js +0 -3
  81. package/bin/runners/runFirewallHook.js +0 -3
  82. package/bin/runners/runFix.js +66 -76
  83. package/bin/runners/runGuard.js +18 -411
  84. package/bin/runners/runInit.js +113 -30
  85. package/bin/runners/runLabs.js +424 -0
  86. package/bin/runners/runMcp.js +19 -25
  87. package/bin/runners/runPolish.js +64 -240
  88. package/bin/runners/runPromptFirewall.js +12 -5
  89. package/bin/runners/runProve.js +57 -22
  90. package/bin/runners/runQuickstart.js +531 -0
  91. package/bin/runners/runReality.js +59 -68
  92. package/bin/runners/runReport.js +38 -33
  93. package/bin/runners/runRuntime.js +8 -5
  94. package/bin/runners/runScan.js +1413 -190
  95. package/bin/runners/runShip.js +113 -719
  96. package/bin/runners/runTruth.js +0 -3
  97. package/bin/runners/runValidate.js +13 -9
  98. package/bin/runners/runWatch.js +23 -14
  99. package/bin/scan.js +6 -1
  100. package/bin/vibecheck.js +204 -185
  101. package/mcp-server/deprecation-middleware.js +282 -0
  102. package/mcp-server/handlers/index.ts +15 -0
  103. package/mcp-server/handlers/tool-handler.ts +554 -0
  104. package/mcp-server/index-v1.js +698 -0
  105. package/mcp-server/index.js +210 -238
  106. package/mcp-server/lib/cache-wrapper.cjs +383 -0
  107. package/mcp-server/lib/error-envelope.js +138 -0
  108. package/mcp-server/lib/executor.ts +499 -0
  109. package/mcp-server/lib/index.ts +19 -0
  110. package/mcp-server/lib/rate-limiter.js +166 -0
  111. package/mcp-server/lib/sandbox.test.ts +519 -0
  112. package/mcp-server/lib/sandbox.ts +395 -0
  113. package/mcp-server/lib/types.ts +267 -0
  114. package/mcp-server/package.json +12 -3
  115. package/mcp-server/registry/tool-registry.js +794 -0
  116. package/mcp-server/registry/tools.json +605 -0
  117. package/mcp-server/registry.test.ts +334 -0
  118. package/mcp-server/tests/tier-gating.test.js +297 -0
  119. package/mcp-server/tier-auth.js +378 -45
  120. package/mcp-server/tools-v3.js +353 -442
  121. package/mcp-server/tsconfig.json +37 -0
  122. package/mcp-server/vibecheck-2.0-tools.js +14 -1
  123. package/package.json +1 -1
  124. package/bin/runners/lib/agent-firewall/learning/learning-engine.js +0 -849
  125. package/bin/runners/lib/audit-logger.js +0 -532
  126. package/bin/runners/lib/authority/authorities/architecture.js +0 -364
  127. package/bin/runners/lib/authority/authorities/compliance.js +0 -341
  128. package/bin/runners/lib/authority/authorities/human.js +0 -343
  129. package/bin/runners/lib/authority/authorities/quality.js +0 -420
  130. package/bin/runners/lib/authority/authorities/security.js +0 -228
  131. package/bin/runners/lib/authority/index.js +0 -293
  132. package/bin/runners/lib/bundle/bundle-intelligence.js +0 -846
  133. package/bin/runners/lib/cli-charts.js +0 -368
  134. package/bin/runners/lib/cli-config-display.js +0 -405
  135. package/bin/runners/lib/cli-demo.js +0 -275
  136. package/bin/runners/lib/cli-errors.js +0 -438
  137. package/bin/runners/lib/cli-help-formatter.js +0 -439
  138. package/bin/runners/lib/cli-interactive-menu.js +0 -509
  139. package/bin/runners/lib/cli-prompts.js +0 -441
  140. package/bin/runners/lib/cli-scan-cards.js +0 -362
  141. package/bin/runners/lib/compliance-reporter.js +0 -710
  142. package/bin/runners/lib/conductor/index.js +0 -671
  143. package/bin/runners/lib/easy/README.md +0 -123
  144. package/bin/runners/lib/easy/index.js +0 -140
  145. package/bin/runners/lib/easy/interactive-wizard.js +0 -788
  146. package/bin/runners/lib/easy/one-click-firewall.js +0 -564
  147. package/bin/runners/lib/easy/zero-config-reality.js +0 -714
  148. package/bin/runners/lib/engines/async-patterns-engine.js +0 -444
  149. package/bin/runners/lib/engines/bundle-size-engine.js +0 -433
  150. package/bin/runners/lib/engines/confidence-scoring.js +0 -276
  151. package/bin/runners/lib/engines/context-detection.js +0 -264
  152. package/bin/runners/lib/engines/database-patterns-engine.js +0 -429
  153. package/bin/runners/lib/engines/duplicate-code-engine.js +0 -354
  154. package/bin/runners/lib/engines/env-variables-engine.js +0 -458
  155. package/bin/runners/lib/engines/error-handling-engine.js +0 -437
  156. package/bin/runners/lib/engines/false-positive-prevention.js +0 -630
  157. package/bin/runners/lib/engines/framework-adapters/index.js +0 -607
  158. package/bin/runners/lib/engines/framework-detection.js +0 -508
  159. package/bin/runners/lib/engines/import-order-engine.js +0 -429
  160. package/bin/runners/lib/engines/naming-conventions-engine.js +0 -544
  161. package/bin/runners/lib/engines/noise-reduction-engine.js +0 -452
  162. package/bin/runners/lib/engines/orchestrator.js +0 -334
  163. package/bin/runners/lib/engines/react-patterns-engine.js +0 -457
  164. package/bin/runners/lib/engines/vibecheck-engines/lib/ai-hallucination-engine.js +0 -806
  165. package/bin/runners/lib/engines/vibecheck-engines/lib/smart-fix-engine.js +0 -577
  166. package/bin/runners/lib/engines/vibecheck-engines/lib/vibe-score-engine.js +0 -543
  167. package/bin/runners/lib/engines/vibecheck-engines.js +0 -514
  168. package/bin/runners/lib/enhanced-features/index.js +0 -305
  169. package/bin/runners/lib/enhanced-output.js +0 -631
  170. package/bin/runners/lib/enterprise.js +0 -300
  171. package/bin/runners/lib/firewall/command-validator.js +0 -351
  172. package/bin/runners/lib/firewall/config.js +0 -341
  173. package/bin/runners/lib/firewall/content-validator.js +0 -519
  174. package/bin/runners/lib/firewall/index.js +0 -101
  175. package/bin/runners/lib/firewall/path-validator.js +0 -256
  176. package/bin/runners/lib/intelligence/cross-repo-intelligence.js +0 -817
  177. package/bin/runners/lib/mcp-utils.js +0 -425
  178. package/bin/runners/lib/output/index.js +0 -1022
  179. package/bin/runners/lib/policy-engine.js +0 -652
  180. package/bin/runners/lib/polish/autofix/accessibility-fixes.js +0 -333
  181. package/bin/runners/lib/polish/autofix/async-handlers.js +0 -273
  182. package/bin/runners/lib/polish/autofix/dead-code.js +0 -280
  183. package/bin/runners/lib/polish/autofix/imports-optimizer.js +0 -344
  184. package/bin/runners/lib/polish/autofix/index.js +0 -200
  185. package/bin/runners/lib/polish/autofix/remove-consoles.js +0 -209
  186. package/bin/runners/lib/polish/autofix/strengthen-types.js +0 -245
  187. package/bin/runners/lib/polish/backend-checks.js +0 -148
  188. package/bin/runners/lib/polish/documentation-checks.js +0 -111
  189. package/bin/runners/lib/polish/frontend-checks.js +0 -168
  190. package/bin/runners/lib/polish/index.js +0 -71
  191. package/bin/runners/lib/polish/infrastructure-checks.js +0 -131
  192. package/bin/runners/lib/polish/library-detection.js +0 -175
  193. package/bin/runners/lib/polish/performance-checks.js +0 -100
  194. package/bin/runners/lib/polish/security-checks.js +0 -148
  195. package/bin/runners/lib/polish/utils.js +0 -203
  196. package/bin/runners/lib/prompt-builder.js +0 -540
  197. package/bin/runners/lib/proof-certificate.js +0 -634
  198. package/bin/runners/lib/reality/accessibility-audit.js +0 -946
  199. package/bin/runners/lib/reality/api-contract-validator.js +0 -1012
  200. package/bin/runners/lib/reality/chaos-engineering.js +0 -1084
  201. package/bin/runners/lib/reality/performance-tracker.js +0 -1077
  202. package/bin/runners/lib/reality/scenario-generator.js +0 -1404
  203. package/bin/runners/lib/reality/visual-regression.js +0 -852
  204. package/bin/runners/lib/reality-profiler.js +0 -717
  205. package/bin/runners/lib/replay/flight-recorder-viewer.js +0 -1160
  206. package/bin/runners/lib/review/ai-code-review.js +0 -832
  207. package/bin/runners/lib/rules/custom-rule-engine.js +0 -985
  208. package/bin/runners/lib/sbom-generator.js +0 -641
  209. package/bin/runners/lib/scan-output-enhanced.js +0 -512
  210. package/bin/runners/lib/security/owasp-scanner.js +0 -939
  211. package/bin/runners/lib/validators/contract-validator.js +0 -283
  212. package/bin/runners/lib/validators/dead-export-detector.js +0 -279
  213. package/bin/runners/lib/validators/dep-audit.js +0 -245
  214. package/bin/runners/lib/validators/env-validator.js +0 -319
  215. package/bin/runners/lib/validators/index.js +0 -120
  216. package/bin/runners/lib/validators/license-checker.js +0 -252
  217. package/bin/runners/lib/validators/route-validator.js +0 -290
  218. package/bin/runners/runAuthority.js +0 -528
  219. package/bin/runners/runConductor.js +0 -772
  220. package/bin/runners/runContainer.js +0 -366
  221. package/bin/runners/runEasy.js +0 -410
  222. package/bin/runners/runIaC.js +0 -372
  223. package/bin/runners/runVibe.js +0 -791
  224. 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 & patterns (fix when possible)
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
- FIX_ENV_VALIDATION: 33,
149
- FIX_ENV_SETUP: 34,
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
- // P6: UI & accessibility
166
- FIX_DEAD_UI: 60,
167
- FIX_ACCESSIBILITY: 61,
126
+ // P4: UI issues (fix before polish)
127
+ FIX_DEAD_UI: 40,
168
128
 
169
- // P7: Generic (lowest priority)
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.",