@vibecheckai/cli 2.8.2 → 3.0.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 (454) hide show
  1. package/README.md +8 -8
  2. package/bin/_deprecations.js +35 -0
  3. package/bin/_router.js +46 -0
  4. package/bin/cli-hygiene.js +241 -0
  5. package/bin/guardrail.js +834 -0
  6. package/bin/runners/cli-utils.js +1070 -0
  7. package/bin/runners/context/ai-task-decomposer.js +337 -0
  8. package/bin/runners/context/analyzer.js +462 -0
  9. package/bin/runners/context/api-contracts.js +427 -0
  10. package/bin/runners/context/context-diff.js +342 -0
  11. package/bin/runners/context/context-pruner.js +291 -0
  12. package/bin/runners/context/dependency-graph.js +414 -0
  13. package/bin/runners/context/generators/claude.js +107 -0
  14. package/bin/runners/context/generators/codex.js +108 -0
  15. package/bin/runners/context/generators/copilot.js +119 -0
  16. package/bin/runners/context/generators/cursor.js +514 -0
  17. package/bin/runners/context/generators/mcp.js +151 -0
  18. package/bin/runners/context/generators/windsurf.js +180 -0
  19. package/bin/runners/context/git-context.js +302 -0
  20. package/bin/runners/context/index.js +1042 -0
  21. package/bin/runners/context/insights.js +173 -0
  22. package/bin/runners/context/mcp-server/generate-rules.js +337 -0
  23. package/bin/runners/context/mcp-server/index.js +1176 -0
  24. package/bin/runners/context/mcp-server/package.json +24 -0
  25. package/bin/runners/context/memory.js +200 -0
  26. package/bin/runners/context/monorepo.js +215 -0
  27. package/bin/runners/context/multi-repo-federation.js +404 -0
  28. package/bin/runners/context/patterns.js +253 -0
  29. package/bin/runners/context/proof-context.js +972 -0
  30. package/bin/runners/context/security-scanner.js +303 -0
  31. package/bin/runners/context/semantic-search.js +350 -0
  32. package/bin/runners/context/shared.js +264 -0
  33. package/bin/runners/context/team-conventions.js +310 -0
  34. package/bin/runners/lib/ai-bridge.js +416 -0
  35. package/bin/runners/lib/analysis-core.js +271 -0
  36. package/bin/runners/lib/analyzers.js +541 -0
  37. package/bin/runners/lib/audit-bridge.js +391 -0
  38. package/bin/runners/lib/auth-truth.js +193 -0
  39. package/bin/runners/lib/auth.js +215 -0
  40. package/bin/runners/lib/backup.js +62 -0
  41. package/bin/runners/lib/billing.js +107 -0
  42. package/bin/runners/lib/claims.js +118 -0
  43. package/bin/runners/lib/cli-ui.js +540 -0
  44. package/bin/runners/lib/compliance-bridge-new.js +0 -0
  45. package/bin/runners/lib/compliance-bridge.js +165 -0
  46. package/bin/runners/lib/contracts/auth-contract.js +194 -0
  47. package/bin/runners/lib/contracts/env-contract.js +178 -0
  48. package/bin/runners/lib/contracts/external-contract.js +198 -0
  49. package/bin/runners/lib/contracts/guard.js +168 -0
  50. package/bin/runners/lib/contracts/index.js +89 -0
  51. package/bin/runners/lib/contracts/plan-validator.js +311 -0
  52. package/bin/runners/lib/contracts/route-contract.js +192 -0
  53. package/bin/runners/lib/detect.js +89 -0
  54. package/bin/runners/lib/doctor/autofix.js +254 -0
  55. package/bin/runners/lib/doctor/index.js +37 -0
  56. package/bin/runners/lib/doctor/modules/dependencies.js +325 -0
  57. package/bin/runners/lib/doctor/modules/index.js +46 -0
  58. package/bin/runners/lib/doctor/modules/network.js +250 -0
  59. package/bin/runners/lib/doctor/modules/project.js +312 -0
  60. package/bin/runners/lib/doctor/modules/runtime.js +224 -0
  61. package/bin/runners/lib/doctor/modules/security.js +348 -0
  62. package/bin/runners/lib/doctor/modules/system.js +213 -0
  63. package/bin/runners/lib/doctor/modules/vibecheck.js +394 -0
  64. package/bin/runners/lib/doctor/reporter.js +262 -0
  65. package/bin/runners/lib/doctor/service.js +262 -0
  66. package/bin/runners/lib/doctor/types.js +113 -0
  67. package/bin/runners/lib/doctor/ui.js +263 -0
  68. package/bin/runners/lib/doctor-enhanced.js +233 -0
  69. package/bin/runners/lib/doctor-v2.js +608 -0
  70. package/bin/runners/lib/enforcement.js +72 -0
  71. package/bin/runners/lib/enterprise-detect.js +603 -0
  72. package/bin/runners/lib/enterprise-init.js +942 -0
  73. package/bin/runners/lib/entitlements-v2.js +381 -0
  74. package/bin/runners/lib/entitlements.generated.js +0 -0
  75. package/bin/runners/lib/entitlements.js +332 -0
  76. package/bin/runners/lib/env-template.js +66 -0
  77. package/bin/runners/lib/env.js +189 -0
  78. package/bin/runners/lib/error-handler.js +320 -0
  79. package/bin/runners/lib/firewall-prompt.js +50 -0
  80. package/bin/runners/lib/graph/graph-builder.js +265 -0
  81. package/bin/runners/lib/graph/html-renderer.js +413 -0
  82. package/bin/runners/lib/graph/index.js +32 -0
  83. package/bin/runners/lib/graph/runtime-collector.js +215 -0
  84. package/bin/runners/lib/graph/static-extractor.js +518 -0
  85. package/bin/runners/lib/init-wizard.js +308 -0
  86. package/bin/runners/lib/json-output.js +76 -0
  87. package/bin/runners/lib/llm.js +75 -0
  88. package/bin/runners/lib/meter.js +61 -0
  89. package/bin/runners/lib/missions/evidence.js +126 -0
  90. package/bin/runners/lib/missions/plan.js +69 -0
  91. package/bin/runners/lib/missions/templates.js +147 -0
  92. package/bin/runners/lib/patch.js +40 -0
  93. package/bin/runners/lib/permissions/auth-model.js +213 -0
  94. package/bin/runners/lib/permissions/idor-prover.js +205 -0
  95. package/bin/runners/lib/permissions/index.js +45 -0
  96. package/bin/runners/lib/permissions/matrix-builder.js +198 -0
  97. package/bin/runners/lib/pkgjson.js +28 -0
  98. package/bin/runners/lib/preflight.js +142 -0
  99. package/bin/runners/lib/reality-findings.js +84 -0
  100. package/bin/runners/lib/redact.js +29 -0
  101. package/bin/runners/lib/replay/capsule-manager.js +154 -0
  102. package/bin/runners/lib/replay/index.js +263 -0
  103. package/bin/runners/lib/replay/player.js +348 -0
  104. package/bin/runners/lib/replay/recorder.js +331 -0
  105. package/bin/runners/lib/report-engine.js +447 -0
  106. package/bin/runners/lib/report-html.js +1117 -0
  107. package/bin/runners/lib/report-templates.js +964 -0
  108. package/bin/runners/lib/route-detection.js +1140 -0
  109. package/bin/runners/lib/route-truth.js +477 -0
  110. package/bin/runners/lib/sandbox/index.js +59 -0
  111. package/bin/runners/lib/sandbox/proof-chain.js +399 -0
  112. package/bin/runners/lib/sandbox/sandbox-runner.js +205 -0
  113. package/bin/runners/lib/sandbox/worktree.js +174 -0
  114. package/bin/runners/lib/scan-cache.js +330 -0
  115. package/bin/runners/lib/scan-output-schema.js +344 -0
  116. package/bin/runners/lib/score-history.js +282 -0
  117. package/bin/runners/lib/security-bridge.js +249 -0
  118. package/bin/runners/lib/server-usage.js +513 -0
  119. package/bin/runners/lib/share-pack.js +239 -0
  120. package/bin/runners/lib/snippets.js +67 -0
  121. package/bin/runners/lib/truth.js +667 -0
  122. package/bin/runners/lib/unified-output.js +189 -0
  123. package/bin/runners/lib/validate-patch.js +156 -0
  124. package/bin/runners/lib/verification.js +345 -0
  125. package/bin/runners/reality/engine.js +917 -0
  126. package/bin/runners/reality/flows.js +122 -0
  127. package/bin/runners/reality/report.js +378 -0
  128. package/bin/runners/reality/session.js +193 -0
  129. package/bin/runners/runAIAgent.js +2 -0
  130. package/bin/runners/runAudit.js +2 -0
  131. package/bin/runners/runAuth.js +106 -0
  132. package/bin/runners/runAutopilot.js +2 -0
  133. package/bin/runners/runBadge.js +2 -0
  134. package/bin/runners/runCertify.js +2 -0
  135. package/bin/runners/runClaimVerifier.js +483 -0
  136. package/bin/runners/runContext.js +56 -0
  137. package/bin/runners/runContextCompiler.js +385 -0
  138. package/bin/runners/runCtx.js +187 -0
  139. package/bin/runners/runCtxGuard.js +176 -0
  140. package/bin/runners/runCtxSync.js +116 -0
  141. package/bin/runners/runDashboard.js +10 -0
  142. package/bin/runners/runDoctor.js +245 -0
  143. package/bin/runners/runEnhancedShip.js +2 -0
  144. package/bin/runners/runFix.js +735 -0
  145. package/bin/runners/runFixPacks.js +2 -0
  146. package/bin/runners/runGate.js +17 -0
  147. package/bin/runners/runGraph.js +283 -0
  148. package/bin/runners/runInit.js +260 -0
  149. package/bin/runners/runInitGha.js +101 -0
  150. package/bin/runners/runInstall.js +76 -0
  151. package/bin/runners/runInteractive.js +388 -0
  152. package/bin/runners/runLaunch.js +2 -0
  153. package/bin/runners/runMcp.js +19 -0
  154. package/bin/runners/runMdc.js +2 -0
  155. package/bin/runners/runMissionGenerator.js +282 -0
  156. package/bin/runners/runNaturalLanguage.js +3 -0
  157. package/bin/runners/runPR.js +96 -0
  158. package/bin/runners/runPermissions.js +290 -0
  159. package/bin/runners/runPromptFirewall.js +211 -0
  160. package/bin/runners/runProof.js +2 -0
  161. package/bin/runners/runProve.js +392 -0
  162. package/bin/runners/runReality.js +489 -0
  163. package/bin/runners/runRealitySniff.js +2 -0
  164. package/bin/runners/runReplay.js +469 -0
  165. package/bin/runners/runReport.js +478 -0
  166. package/bin/runners/runScan.js +835 -0
  167. package/bin/runners/runShare.js +34 -0
  168. package/bin/runners/runShip.js +1062 -0
  169. package/bin/runners/runStatus.js +136 -0
  170. package/bin/runners/runTruthpack.js +634 -0
  171. package/bin/runners/runUpgrade.js +2 -0
  172. package/bin/runners/runValidate.js +2 -0
  173. package/bin/runners/runVerifyAgentOutput.js +2 -0
  174. package/bin/runners/runWatch.js +230 -0
  175. package/bin/runners/utils.js +360 -0
  176. package/bin/scan.js +612 -0
  177. package/bin/vibecheck.js +834 -0
  178. package/package.json +11 -11
  179. package/dist/autopatch/verified-autopatch.d.ts +0 -111
  180. package/dist/autopatch/verified-autopatch.d.ts.map +0 -1
  181. package/dist/autopatch/verified-autopatch.js +0 -503
  182. package/dist/autopatch/verified-autopatch.js.map +0 -1
  183. package/dist/bundles/index.js +0 -8
  184. package/dist/bundles/vibecheck-core.js +0 -25799
  185. package/dist/bundles/vibecheck-security.js +0 -208693
  186. package/dist/bundles/vibecheck-ship.js +0 -2318
  187. package/dist/commands/baseline.d.ts +0 -7
  188. package/dist/commands/baseline.d.ts.map +0 -1
  189. package/dist/commands/baseline.js +0 -79
  190. package/dist/commands/baseline.js.map +0 -1
  191. package/dist/commands/cache.d.ts +0 -13
  192. package/dist/commands/cache.d.ts.map +0 -1
  193. package/dist/commands/cache.js +0 -165
  194. package/dist/commands/cache.js.map +0 -1
  195. package/dist/commands/checkpoint.d.ts +0 -8
  196. package/dist/commands/checkpoint.d.ts.map +0 -1
  197. package/dist/commands/checkpoint.js +0 -35
  198. package/dist/commands/checkpoint.js.map +0 -1
  199. package/dist/commands/doctor.d.ts +0 -17
  200. package/dist/commands/doctor.d.ts.map +0 -1
  201. package/dist/commands/doctor.js +0 -226
  202. package/dist/commands/doctor.js.map +0 -1
  203. package/dist/commands/evidence.d.ts +0 -45
  204. package/dist/commands/evidence.d.ts.map +0 -1
  205. package/dist/commands/evidence.js +0 -197
  206. package/dist/commands/evidence.js.map +0 -1
  207. package/dist/commands/explain.d.ts +0 -8
  208. package/dist/commands/explain.d.ts.map +0 -1
  209. package/dist/commands/explain.js +0 -52
  210. package/dist/commands/explain.js.map +0 -1
  211. package/dist/commands/fix-consolidated.d.ts +0 -19
  212. package/dist/commands/fix-consolidated.d.ts.map +0 -1
  213. package/dist/commands/fix-consolidated.js +0 -165
  214. package/dist/commands/fix-consolidated.js.map +0 -1
  215. package/dist/commands/index.d.ts +0 -8
  216. package/dist/commands/index.d.ts.map +0 -1
  217. package/dist/commands/index.js +0 -15
  218. package/dist/commands/index.js.map +0 -1
  219. package/dist/commands/init.d.ts +0 -8
  220. package/dist/commands/init.d.ts.map +0 -1
  221. package/dist/commands/init.js +0 -125
  222. package/dist/commands/init.js.map +0 -1
  223. package/dist/commands/launcher.d.ts +0 -10
  224. package/dist/commands/launcher.d.ts.map +0 -1
  225. package/dist/commands/launcher.js +0 -174
  226. package/dist/commands/launcher.js.map +0 -1
  227. package/dist/commands/on.d.ts +0 -8
  228. package/dist/commands/on.d.ts.map +0 -1
  229. package/dist/commands/on.js +0 -123
  230. package/dist/commands/on.js.map +0 -1
  231. package/dist/commands/replay.d.ts +0 -8
  232. package/dist/commands/replay.d.ts.map +0 -1
  233. package/dist/commands/replay.js +0 -52
  234. package/dist/commands/replay.js.map +0 -1
  235. package/dist/commands/scan-consolidated.d.ts +0 -61
  236. package/dist/commands/scan-consolidated.d.ts.map +0 -1
  237. package/dist/commands/scan-consolidated.js +0 -243
  238. package/dist/commands/scan-consolidated.js.map +0 -1
  239. package/dist/commands/scan-secrets.d.ts +0 -47
  240. package/dist/commands/scan-secrets.d.ts.map +0 -1
  241. package/dist/commands/scan-secrets.js +0 -225
  242. package/dist/commands/scan-secrets.js.map +0 -1
  243. package/dist/commands/scan-vulnerabilities-enhanced.d.ts +0 -41
  244. package/dist/commands/scan-vulnerabilities-enhanced.d.ts.map +0 -1
  245. package/dist/commands/scan-vulnerabilities-enhanced.js +0 -368
  246. package/dist/commands/scan-vulnerabilities-enhanced.js.map +0 -1
  247. package/dist/commands/scan-vulnerabilities-osv.d.ts +0 -58
  248. package/dist/commands/scan-vulnerabilities-osv.d.ts.map +0 -1
  249. package/dist/commands/scan-vulnerabilities-osv.js +0 -722
  250. package/dist/commands/scan-vulnerabilities-osv.js.map +0 -1
  251. package/dist/commands/scan-vulnerabilities.d.ts +0 -32
  252. package/dist/commands/scan-vulnerabilities.d.ts.map +0 -1
  253. package/dist/commands/scan-vulnerabilities.js +0 -283
  254. package/dist/commands/scan-vulnerabilities.js.map +0 -1
  255. package/dist/commands/secrets-allowlist.d.ts +0 -7
  256. package/dist/commands/secrets-allowlist.d.ts.map +0 -1
  257. package/dist/commands/secrets-allowlist.js +0 -85
  258. package/dist/commands/secrets-allowlist.js.map +0 -1
  259. package/dist/commands/ship-consolidated.d.ts +0 -58
  260. package/dist/commands/ship-consolidated.d.ts.map +0 -1
  261. package/dist/commands/ship-consolidated.js +0 -515
  262. package/dist/commands/ship-consolidated.js.map +0 -1
  263. package/dist/commands/stats.d.ts +0 -8
  264. package/dist/commands/stats.d.ts.map +0 -1
  265. package/dist/commands/stats.js +0 -134
  266. package/dist/commands/stats.js.map +0 -1
  267. package/dist/commands/upgrade.d.ts +0 -8
  268. package/dist/commands/upgrade.d.ts.map +0 -1
  269. package/dist/commands/upgrade.js +0 -30
  270. package/dist/commands/upgrade.js.map +0 -1
  271. package/dist/fix/applicator.d.ts +0 -44
  272. package/dist/fix/applicator.d.ts.map +0 -1
  273. package/dist/fix/applicator.js +0 -144
  274. package/dist/fix/applicator.js.map +0 -1
  275. package/dist/fix/backup.d.ts +0 -38
  276. package/dist/fix/backup.d.ts.map +0 -1
  277. package/dist/fix/backup.js +0 -154
  278. package/dist/fix/backup.js.map +0 -1
  279. package/dist/fix/engine.d.ts +0 -55
  280. package/dist/fix/engine.d.ts.map +0 -1
  281. package/dist/fix/engine.js +0 -285
  282. package/dist/fix/engine.js.map +0 -1
  283. package/dist/fix/index.d.ts +0 -5
  284. package/dist/fix/index.d.ts.map +0 -1
  285. package/dist/fix/index.js +0 -12
  286. package/dist/fix/index.js.map +0 -1
  287. package/dist/fix/interactive.d.ts +0 -22
  288. package/dist/fix/interactive.d.ts.map +0 -1
  289. package/dist/fix/interactive.js +0 -172
  290. package/dist/fix/interactive.js.map +0 -1
  291. package/dist/formatters/index.d.ts +0 -6
  292. package/dist/formatters/index.d.ts.map +0 -1
  293. package/dist/formatters/index.js +0 -11
  294. package/dist/formatters/index.js.map +0 -1
  295. package/dist/formatters/sarif-enhanced.d.ts +0 -78
  296. package/dist/formatters/sarif-enhanced.d.ts.map +0 -1
  297. package/dist/formatters/sarif-enhanced.js +0 -144
  298. package/dist/formatters/sarif-enhanced.js.map +0 -1
  299. package/dist/formatters/sarif-v2.d.ts +0 -121
  300. package/dist/formatters/sarif-v2.d.ts.map +0 -1
  301. package/dist/formatters/sarif-v2.js +0 -356
  302. package/dist/formatters/sarif-v2.js.map +0 -1
  303. package/dist/formatters/sarif.d.ts +0 -72
  304. package/dist/formatters/sarif.d.ts.map +0 -1
  305. package/dist/formatters/sarif.js +0 -146
  306. package/dist/formatters/sarif.js.map +0 -1
  307. package/dist/index.d.ts +0 -61
  308. package/dist/index.d.ts.map +0 -1
  309. package/dist/index.js +0 -4388
  310. package/dist/index.js.map +0 -1
  311. package/dist/init/ci-generator.d.ts +0 -18
  312. package/dist/init/ci-generator.d.ts.map +0 -1
  313. package/dist/init/ci-generator.js +0 -317
  314. package/dist/init/ci-generator.js.map +0 -1
  315. package/dist/init/detect-framework.d.ts +0 -15
  316. package/dist/init/detect-framework.d.ts.map +0 -1
  317. package/dist/init/detect-framework.js +0 -301
  318. package/dist/init/detect-framework.js.map +0 -1
  319. package/dist/init/hooks-installer.d.ts +0 -22
  320. package/dist/init/hooks-installer.d.ts.map +0 -1
  321. package/dist/init/hooks-installer.js +0 -310
  322. package/dist/init/hooks-installer.js.map +0 -1
  323. package/dist/init/index.d.ts +0 -8
  324. package/dist/init/index.d.ts.map +0 -1
  325. package/dist/init/index.js +0 -22
  326. package/dist/init/index.js.map +0 -1
  327. package/dist/init/templates.d.ts +0 -402
  328. package/dist/init/templates.d.ts.map +0 -1
  329. package/dist/init/templates.js +0 -240
  330. package/dist/init/templates.js.map +0 -1
  331. package/dist/mcp/server.d.ts +0 -12
  332. package/dist/mcp/server.d.ts.map +0 -1
  333. package/dist/mcp/server.js +0 -42
  334. package/dist/mcp/server.js.map +0 -1
  335. package/dist/mcp/telemetry.d.ts +0 -40
  336. package/dist/mcp/telemetry.d.ts.map +0 -1
  337. package/dist/mcp/telemetry.js +0 -98
  338. package/dist/mcp/telemetry.js.map +0 -1
  339. package/dist/reality/no-dead-buttons/button-sweep-generator.d.ts +0 -32
  340. package/dist/reality/no-dead-buttons/button-sweep-generator.d.ts.map +0 -1
  341. package/dist/reality/no-dead-buttons/button-sweep-generator.js +0 -236
  342. package/dist/reality/no-dead-buttons/button-sweep-generator.js.map +0 -1
  343. package/dist/reality/no-dead-buttons/index.d.ts +0 -11
  344. package/dist/reality/no-dead-buttons/index.d.ts.map +0 -1
  345. package/dist/reality/no-dead-buttons/index.js +0 -18
  346. package/dist/reality/no-dead-buttons/index.js.map +0 -1
  347. package/dist/reality/no-dead-buttons/static-scanner.d.ts +0 -34
  348. package/dist/reality/no-dead-buttons/static-scanner.d.ts.map +0 -1
  349. package/dist/reality/no-dead-buttons/static-scanner.js +0 -230
  350. package/dist/reality/no-dead-buttons/static-scanner.js.map +0 -1
  351. package/dist/reality/reality-graph.d.ts +0 -192
  352. package/dist/reality/reality-graph.d.ts.map +0 -1
  353. package/dist/reality/reality-graph.js +0 -600
  354. package/dist/reality/reality-graph.js.map +0 -1
  355. package/dist/reality/reality-runner.d.ts +0 -89
  356. package/dist/reality/reality-runner.d.ts.map +0 -1
  357. package/dist/reality/reality-runner.js +0 -540
  358. package/dist/reality/reality-runner.js.map +0 -1
  359. package/dist/reality/receipt-generator.d.ts +0 -152
  360. package/dist/reality/receipt-generator.d.ts.map +0 -1
  361. package/dist/reality/receipt-generator.js +0 -495
  362. package/dist/reality/receipt-generator.js.map +0 -1
  363. package/dist/reality/runtime-tracer.d.ts +0 -75
  364. package/dist/reality/runtime-tracer.d.ts.map +0 -1
  365. package/dist/reality/runtime-tracer.js +0 -109
  366. package/dist/reality/runtime-tracer.js.map +0 -1
  367. package/dist/runtime/auth-utils.d.ts +0 -43
  368. package/dist/runtime/auth-utils.d.ts.map +0 -1
  369. package/dist/runtime/auth-utils.js +0 -130
  370. package/dist/runtime/auth-utils.js.map +0 -1
  371. package/dist/runtime/client.d.ts +0 -74
  372. package/dist/runtime/client.d.ts.map +0 -1
  373. package/dist/runtime/client.js +0 -222
  374. package/dist/runtime/client.js.map +0 -1
  375. package/dist/runtime/creds.d.ts +0 -48
  376. package/dist/runtime/creds.d.ts.map +0 -1
  377. package/dist/runtime/creds.js +0 -245
  378. package/dist/runtime/creds.js.map +0 -1
  379. package/dist/runtime/exit-codes.d.ts +0 -49
  380. package/dist/runtime/exit-codes.d.ts.map +0 -1
  381. package/dist/runtime/exit-codes.js +0 -93
  382. package/dist/runtime/exit-codes.js.map +0 -1
  383. package/dist/runtime/index.d.ts +0 -9
  384. package/dist/runtime/index.d.ts.map +0 -1
  385. package/dist/runtime/index.js +0 -25
  386. package/dist/runtime/index.js.map +0 -1
  387. package/dist/runtime/json-output.d.ts +0 -42
  388. package/dist/runtime/json-output.d.ts.map +0 -1
  389. package/dist/runtime/json-output.js +0 -59
  390. package/dist/runtime/json-output.js.map +0 -1
  391. package/dist/runtime/semver.d.ts +0 -37
  392. package/dist/runtime/semver.d.ts.map +0 -1
  393. package/dist/runtime/semver.js +0 -110
  394. package/dist/runtime/semver.js.map +0 -1
  395. package/dist/scan/dead-ui-detector.d.ts +0 -48
  396. package/dist/scan/dead-ui-detector.d.ts.map +0 -1
  397. package/dist/scan/dead-ui-detector.js +0 -170
  398. package/dist/scan/dead-ui-detector.js.map +0 -1
  399. package/dist/scan/playwright-sweep.d.ts +0 -40
  400. package/dist/scan/playwright-sweep.d.ts.map +0 -1
  401. package/dist/scan/playwright-sweep.js +0 -216
  402. package/dist/scan/playwright-sweep.js.map +0 -1
  403. package/dist/scan/proof-bundle.d.ts +0 -25
  404. package/dist/scan/proof-bundle.d.ts.map +0 -1
  405. package/dist/scan/proof-bundle.js +0 -203
  406. package/dist/scan/proof-bundle.js.map +0 -1
  407. package/dist/scan/proof-graph.d.ts +0 -59
  408. package/dist/scan/proof-graph.d.ts.map +0 -1
  409. package/dist/scan/proof-graph.js +0 -64
  410. package/dist/scan/proof-graph.js.map +0 -1
  411. package/dist/scan/reality-sniff.d.ts +0 -56
  412. package/dist/scan/reality-sniff.d.ts.map +0 -1
  413. package/dist/scan/reality-sniff.js +0 -200
  414. package/dist/scan/reality-sniff.js.map +0 -1
  415. package/dist/scan/structural-verifier.d.ts +0 -20
  416. package/dist/scan/structural-verifier.d.ts.map +0 -1
  417. package/dist/scan/structural-verifier.js +0 -112
  418. package/dist/scan/structural-verifier.js.map +0 -1
  419. package/dist/scan/verification-engine.d.ts +0 -47
  420. package/dist/scan/verification-engine.d.ts.map +0 -1
  421. package/dist/scan/verification-engine.js +0 -141
  422. package/dist/scan/verification-engine.js.map +0 -1
  423. package/dist/scanner/baseline.d.ts +0 -52
  424. package/dist/scanner/baseline.d.ts.map +0 -1
  425. package/dist/scanner/baseline.js +0 -85
  426. package/dist/scanner/baseline.js.map +0 -1
  427. package/dist/scanner/incremental.d.ts +0 -30
  428. package/dist/scanner/incremental.d.ts.map +0 -1
  429. package/dist/scanner/incremental.js +0 -82
  430. package/dist/scanner/incremental.js.map +0 -1
  431. package/dist/scanner/parallel.d.ts +0 -43
  432. package/dist/scanner/parallel.d.ts.map +0 -1
  433. package/dist/scanner/parallel.js +0 -99
  434. package/dist/scanner/parallel.js.map +0 -1
  435. package/dist/standalone.d.ts +0 -1
  436. package/dist/standalone.d.ts.map +0 -1
  437. package/dist/standalone.js +0 -1
  438. package/dist/standalone.js.map +0 -1
  439. package/dist/truth-pack/index.d.ts +0 -102
  440. package/dist/truth-pack/index.d.ts.map +0 -1
  441. package/dist/truth-pack/index.js +0 -694
  442. package/dist/truth-pack/index.js.map +0 -1
  443. package/dist/ui/frame.d.ts +0 -68
  444. package/dist/ui/frame.d.ts.map +0 -1
  445. package/dist/ui/frame.js +0 -165
  446. package/dist/ui/frame.js.map +0 -1
  447. package/dist/ui/index.d.ts +0 -5
  448. package/dist/ui/index.d.ts.map +0 -1
  449. package/dist/ui/index.js +0 -16
  450. package/dist/ui/index.js.map +0 -1
  451. package/dist/ui.d.ts +0 -36
  452. package/dist/ui.d.ts.map +0 -1
  453. package/dist/ui.js +0 -45
  454. package/dist/ui.js.map +0 -1
@@ -1,42 +0,0 @@
1
- "use strict";
2
- /**
3
- * MCP Server for Context Mode
4
- *
5
- * Starts MCP server that AI tools can connect to
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.startMCPServer = startMCPServer;
9
- exports.stopMCPServer = stopMCPServer;
10
- const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
11
- let mcpServer = null;
12
- async function startMCPServer(projectPath, options = {}) {
13
- // For now, we'll use stdio transport (standard MCP)
14
- // The actual MCP server is in mcp-server/index.js
15
- // This function just ensures it's available
16
- // Check if MCP server module exists
17
- try {
18
- // The MCP server runs as a separate process
19
- // We just need to indicate it's ready
20
- mcpServer = new index_js_1.Server({
21
- name: 'vibecheck-mcp',
22
- version: '2.0.0',
23
- }, {
24
- capabilities: {
25
- tools: {},
26
- },
27
- });
28
- // Register tools from the reorganized groups
29
- // This will be handled by the main MCP server file
30
- console.log(' MCP server ready for connections');
31
- }
32
- catch (error) {
33
- throw new Error(`Failed to start MCP server: ${error.message}`);
34
- }
35
- }
36
- function stopMCPServer() {
37
- if (mcpServer) {
38
- // Cleanup
39
- mcpServer = null;
40
- }
41
- }
42
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAYH,wCAwBC;AAED,sCAKC;AAzCD,wEAAmE;AAQnE,IAAI,SAAS,GAAkB,IAAI,CAAC;AAE7B,KAAK,UAAU,cAAc,CAAC,WAAmB,EAAE,UAA4B,EAAE;IACtF,oDAAoD;IACpD,kDAAkD;IAClD,4CAA4C;IAE5C,oCAAoC;IACpC,IAAI,CAAC;QACH,4CAA4C;QAC5C,sCAAsC;QACtC,SAAS,GAAG,IAAI,iBAAM,CAAC;YACrB,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,OAAO;SACjB,EAAE;YACD,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;aACV;SACF,CAAC,CAAC;QAEH,6CAA6C;QAC7C,mDAAmD;QACnD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,SAAgB,aAAa;IAC3B,IAAI,SAAS,EAAE,CAAC;QACd,UAAU;QACV,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -1,40 +0,0 @@
1
- /**
2
- * MCP Telemetry Logger
3
- *
4
- * Logs every tool call:
5
- * - tool name
6
- * - latency
7
- * - blocked hallucination yes/no
8
- * - what it prevented (symbol/route/version/boundary)
9
- * - minimal anonymized metadata (no code)
10
- */
11
- export interface TelemetryEntry {
12
- timestamp: string;
13
- tool: string;
14
- latency: number;
15
- blockedHallucination: boolean;
16
- prevented?: {
17
- type: 'symbol' | 'route' | 'version' | 'boundary';
18
- value: string;
19
- };
20
- metadata?: Record<string, any>;
21
- }
22
- export declare class TelemetryLogger {
23
- private projectPath;
24
- private telemetryFile;
25
- constructor(projectPath: string);
26
- /**
27
- * Log tool call
28
- */
29
- logToolCall(entry: TelemetryEntry): Promise<void>;
30
- /**
31
- * Get stats for last N hours
32
- */
33
- getStats(hours?: number): {
34
- totalCalls: number;
35
- hallucinationsBlocked: number;
36
- symbolsVerified: number;
37
- averageLatency: number;
38
- };
39
- }
40
- //# sourceMappingURL=telemetry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/mcp/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE;QACV,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;QAClD,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;gBAElB,WAAW,EAAE,MAAM;IAK/B;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CvD;;OAEG;IACH,QAAQ,CAAC,KAAK,GAAE,MAAW,GAAG;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;KACxB;CAsCF"}
@@ -1,98 +0,0 @@
1
- "use strict";
2
- /**
3
- * MCP Telemetry Logger
4
- *
5
- * Logs every tool call:
6
- * - tool name
7
- * - latency
8
- * - blocked hallucination yes/no
9
- * - what it prevented (symbol/route/version/boundary)
10
- * - minimal anonymized metadata (no code)
11
- */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.TelemetryLogger = void 0;
14
- const fs_1 = require("fs");
15
- const path_1 = require("path");
16
- class TelemetryLogger {
17
- constructor(projectPath) {
18
- this.projectPath = projectPath;
19
- this.telemetryFile = (0, path_1.join)(projectPath, '.vibecheck', 'telemetry.json');
20
- }
21
- /**
22
- * Log tool call
23
- */
24
- async logToolCall(entry) {
25
- // Ensure directory exists
26
- const telemetryDir = (0, path_1.join)(this.projectPath, '.vibecheck');
27
- if (!(0, fs_1.existsSync)(telemetryDir)) {
28
- (0, fs_1.mkdirSync)(telemetryDir, { recursive: true });
29
- }
30
- // Load existing telemetry
31
- let telemetry = {
32
- toolCalls: [],
33
- hallucinationsBlocked: 0,
34
- symbolsVerified: 0,
35
- };
36
- if ((0, fs_1.existsSync)(this.telemetryFile)) {
37
- try {
38
- telemetry = JSON.parse((0, fs_1.readFileSync)(this.telemetryFile, 'utf-8'));
39
- }
40
- catch {
41
- // Reset on error
42
- }
43
- }
44
- // Add new entry
45
- telemetry.toolCalls.push(entry);
46
- // Update counters
47
- if (entry.blockedHallucination) {
48
- telemetry.hallucinationsBlocked = (telemetry.hallucinationsBlocked || 0) + 1;
49
- }
50
- if (entry.prevented?.type === 'symbol') {
51
- telemetry.symbolsVerified = (telemetry.symbolsVerified || 0) + 1;
52
- }
53
- // Keep only last 1000 entries
54
- if (telemetry.toolCalls.length > 1000) {
55
- telemetry.toolCalls = telemetry.toolCalls.slice(-1000);
56
- }
57
- // Write back
58
- (0, fs_1.writeFileSync)(this.telemetryFile, JSON.stringify(telemetry, null, 2));
59
- }
60
- /**
61
- * Get stats for last N hours
62
- */
63
- getStats(hours = 24) {
64
- if (!(0, fs_1.existsSync)(this.telemetryFile)) {
65
- return {
66
- totalCalls: 0,
67
- hallucinationsBlocked: 0,
68
- symbolsVerified: 0,
69
- averageLatency: 0,
70
- };
71
- }
72
- try {
73
- const telemetry = JSON.parse((0, fs_1.readFileSync)(this.telemetryFile, 'utf-8'));
74
- const cutoff = Date.now() - hours * 60 * 60 * 1000;
75
- const recentCalls = telemetry.toolCalls.filter((call) => new Date(call.timestamp).getTime() > cutoff);
76
- const latencies = recentCalls.map((c) => c.latency || 0).filter((l) => l > 0);
77
- const averageLatency = latencies.length > 0
78
- ? latencies.reduce((a, b) => a + b, 0) / latencies.length
79
- : 0;
80
- return {
81
- totalCalls: recentCalls.length,
82
- hallucinationsBlocked: recentCalls.filter((c) => c.blockedHallucination).length,
83
- symbolsVerified: recentCalls.filter((c) => c.prevented?.type === 'symbol').length,
84
- averageLatency,
85
- };
86
- }
87
- catch {
88
- return {
89
- totalCalls: 0,
90
- hallucinationsBlocked: 0,
91
- symbolsVerified: 0,
92
- averageLatency: 0,
93
- };
94
- }
95
- }
96
- }
97
- exports.TelemetryLogger = TelemetryLogger;
98
- //# sourceMappingURL=telemetry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/mcp/telemetry.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- /**
2
- * Button Sweep Test Generator
3
- *
4
- * Generates Playwright test that:
5
- * - Logs in (test user)
6
- * - Navigates all major pages
7
- * - Clicks every visible button (or every element with data-action-id)
8
- * - Fails if:
9
- * - Any console error occurs
10
- * - Any network request returns 4xx/5xx (except explicitly allowed)
11
- * - Any click produces no state change when expected
12
- * - Any toast says "success" but request failed
13
- */
14
- export interface ButtonSweepConfig {
15
- baseUrl: string;
16
- auth?: {
17
- email: string;
18
- password: string;
19
- };
20
- pages?: string[];
21
- allowedStatusCodes?: number[];
22
- requireDataActionId?: boolean;
23
- }
24
- /**
25
- * Generate Playwright test for button sweep
26
- */
27
- export declare function generateButtonSweepTest(config: ButtonSweepConfig): string;
28
- /**
29
- * Generate simplified button sweep (for CI/CD)
30
- */
31
- export declare function generateCIButtonSweepTest(config: ButtonSweepConfig): string;
32
- //# sourceMappingURL=button-sweep-generator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button-sweep-generator.d.ts","sourceRoot":"","sources":["../../../src/reality/no-dead-buttons/button-sweep-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAsNzE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAK3E"}
@@ -1,236 +0,0 @@
1
- "use strict";
2
- /**
3
- * Button Sweep Test Generator
4
- *
5
- * Generates Playwright test that:
6
- * - Logs in (test user)
7
- * - Navigates all major pages
8
- * - Clicks every visible button (or every element with data-action-id)
9
- * - Fails if:
10
- * - Any console error occurs
11
- * - Any network request returns 4xx/5xx (except explicitly allowed)
12
- * - Any click produces no state change when expected
13
- * - Any toast says "success" but request failed
14
- */
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.generateButtonSweepTest = generateButtonSweepTest;
17
- exports.generateCIButtonSweepTest = generateCIButtonSweepTest;
18
- /**
19
- * Generate Playwright test for button sweep
20
- */
21
- function generateButtonSweepTest(config) {
22
- const { baseUrl, auth, pages = ['/', '/dashboard', '/settings', '/billing'], allowedStatusCodes = [200, 201, 204], requireDataActionId = false, } = config;
23
- return `import { test, expect } from '@playwright/test';
24
-
25
- /**
26
- * Button Sweep Test
27
- *
28
- * This test clicks every button on the application and ensures:
29
- * - No console errors occur
30
- * - No 4xx/5xx network errors (except allowed)
31
- * - Buttons produce expected state changes
32
- * - Success toasts match successful requests
33
- */
34
-
35
- test.describe('Button Sweep - No Dead Buttons', () => {
36
- let pageErrors: string[] = [];
37
- let networkErrors: Array<{ url: string; status: number; method: string }> = [];
38
- let clickedButtons: Array<{ actionId: string; url: string; success: boolean }> = [];
39
-
40
- test.beforeEach(async ({ page }) => {
41
- pageErrors = [];
42
- networkErrors = [];
43
- clickedButtons = [];
44
-
45
- // Capture console errors
46
- page.on('console', (msg) => {
47
- if (msg.type() === 'error') {
48
- const text = msg.text();
49
- // Ignore known benign errors
50
- if (!text.includes('favicon') && !text.includes('ResizeObserver')) {
51
- pageErrors.push(text);
52
- }
53
- }
54
- });
55
-
56
- // Capture network errors
57
- page.on('response', (response) => {
58
- const status = response.status();
59
- const url = response.url();
60
- const method = response.request().method();
61
-
62
- // Track failed requests
63
- if (status >= 400 && !allowedStatusCodes.includes(status)) {
64
- // Ignore preflight OPTIONS requests
65
- if (method !== 'OPTIONS') {
66
- networkErrors.push({ url, status, method });
67
- }
68
- }
69
- });
70
- });
71
-
72
- test('should log in and authenticate', async ({ page }) => {
73
- await page.goto(\`\${baseUrl}/login\`);
74
-
75
- ${auth
76
- ? `
77
- // Fill login form
78
- await page.fill('[data-testid="email-input"], input[type="email"]', '${auth.email}');
79
- await page.fill('[data-testid="password-input"], input[type="password"]', '${auth.password}');
80
-
81
- // Submit login
82
- await page.click('[data-testid="login-button"], button[type="submit"]');
83
-
84
- // Wait for navigation after login
85
- await page.waitForURL(/\/(dashboard|home)/, { timeout: 10000 });
86
-
87
- // Verify logged in (check for user menu, logout button, etc.)
88
- await expect(page.locator('[data-testid="user-menu"], [data-testid="logout"]')).toBeVisible({ timeout: 5000 });
89
- `
90
- : `
91
- // Skip authentication if no credentials provided
92
- // Note: You may need to handle authentication differently
93
- await page.waitForTimeout(1000);
94
- `}
95
- });
96
-
97
- ${pages
98
- .map((pagePath, index) => `
99
- test('should sweep buttons on ${pagePath}', async ({ page }) => {
100
- ${index === 0 && auth
101
- ? `
102
- // Login first
103
- await page.goto(\`\${baseUrl}/login\`);
104
- await page.fill('[data-testid="email-input"], input[type="email"]', '${auth.email}');
105
- await page.fill('[data-testid="password-input"], input[type="password"]', '${auth.password}');
106
- await page.click('[data-testid="login-button"], button[type="submit"]');
107
- await page.waitForURL(/\/(dashboard|home)/, { timeout: 10000 });
108
- `
109
- : ''}
110
-
111
- // Navigate to page
112
- await page.goto(\`\${baseUrl}${pagePath}\`);
113
- await page.waitForLoadState('networkidle');
114
-
115
- // Find all buttons
116
- const buttonSelector = ${requireDataActionId
117
- ? `'[data-action-id]'`
118
- : `'button:visible, a[role="button"]:visible, [role="button"]:visible'`};
119
- const buttons = await page.locator(buttonSelector).all();
120
-
121
- test.info().annotations.push({
122
- type: 'info',
123
- description: \`Found \${buttons.length} buttons on ${pagePath}\`,
124
- });
125
-
126
- // Click each button (with timeout to avoid hanging)
127
- for (const button of buttons) {
128
- try {
129
- const actionId = await button.getAttribute('data-action-id') || 'unknown';
130
- const buttonText = await button.textContent() || '';
131
- const currentUrl = page.url();
132
-
133
- // Skip disabled buttons
134
- const isDisabled = await button.isDisabled().catch(() => false);
135
- if (isDisabled) {
136
- test.info().annotations.push({
137
- type: 'skip',
138
- description: \`Skipped disabled button: \${buttonText.substring(0, 50)}\`,
139
- });
140
- continue;
141
- }
142
-
143
- // Skip buttons that are not visible
144
- const isVisible = await button.isVisible().catch(() => false);
145
- if (!isVisible) {
146
- continue;
147
- }
148
-
149
- // Scroll button into view
150
- await button.scrollIntoViewIfNeeded();
151
- await page.waitForTimeout(100); // Small delay for animations
152
-
153
- // Capture state before click
154
- const stateBefore = {
155
- url: page.url(),
156
- errorCount: pageErrors.length,
157
- networkErrorCount: networkErrors.length,
158
- };
159
-
160
- // Click button (with timeout)
161
- await Promise.race([
162
- button.click({ timeout: 5000 }),
163
- new Promise((_, reject) => setTimeout(() => reject(new Error('Button click timeout')), 5000)),
164
- ]).catch((err) => {
165
- // Button click failed - log but continue
166
- test.info().annotations.push({
167
- type: 'warning',
168
- description: \`Button click failed: \${buttonText.substring(0, 50)} - \${err.message}\`,
169
- });
170
- });
171
-
172
- // Wait a bit for state changes
173
- await page.waitForTimeout(500);
174
-
175
- // Check for state change (URL change or DOM change)
176
- const stateAfter = {
177
- url: page.url(),
178
- errorCount: pageErrors.length,
179
- networkErrorCount: networkErrors.length,
180
- };
181
-
182
- const hadStateChange = stateBefore.url !== stateAfter.url;
183
- const hadError = stateAfter.errorCount > stateBefore.errorCount ||
184
- stateAfter.networkErrorCount > stateBefore.networkErrorCount;
185
-
186
- clickedButtons.push({
187
- actionId,
188
- url: currentUrl,
189
- success: !hadError,
190
- });
191
-
192
- } catch (error) {
193
- // Button interaction failed - log but continue
194
- test.info().annotations.push({
195
- type: 'warning',
196
- description: \`Error interacting with button: \${error instanceof Error ? error.message : String(error)}\`,
197
- });
198
- }
199
- }
200
-
201
- // Assertions after sweep
202
- if (pageErrors.length > 0) {
203
- console.error('Console errors during button sweep:', pageErrors);
204
- }
205
-
206
- if (networkErrors.length > 0) {
207
- console.error('Network errors during button sweep:', networkErrors);
208
- }
209
-
210
- // Fail if there were errors
211
- expect(pageErrors.length, \`Found \${pageErrors.length} console errors. First: \${pageErrors[0]}\`).toBe(0);
212
- expect(networkErrors.length, \`Found \${networkErrors.length} network errors. First: \${networkErrors[0]?.url} (status: \${networkErrors[0]?.status})\`).toBe(0);
213
- });
214
- `)
215
- .join('\n')}
216
-
217
- test.afterAll(async () => {
218
- // Log summary
219
- console.log(\`\\nButton Sweep Summary:\`);
220
- console.log(\` Total buttons clicked: \${clickedButtons.length}\`);
221
- console.log(\` Successful: \${clickedButtons.filter(b => b.success).length}\`);
222
- console.log(\` Failed: \${clickedButtons.filter(b => !b.success).length}\`);
223
- });
224
- });
225
- `;
226
- }
227
- /**
228
- * Generate simplified button sweep (for CI/CD)
229
- */
230
- function generateCIButtonSweepTest(config) {
231
- return generateButtonSweepTest({
232
- ...config,
233
- pages: config.pages || ['/', '/dashboard'],
234
- });
235
- }
236
- //# sourceMappingURL=button-sweep-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button-sweep-generator.js","sourceRoot":"","sources":["../../../src/reality/no-dead-buttons/button-sweep-generator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AAgBH,0DAsNC;AAKD,8DAKC;AAnOD;;GAEG;AACH,SAAgB,uBAAuB,CAAC,MAAyB;IAC/D,MAAM,EACJ,OAAO,EACP,IAAI,EACJ,KAAK,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC,EACpD,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACpC,mBAAmB,GAAG,KAAK,GAC5B,GAAG,MAAM,CAAC;IAEX,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoDH,IAAI;QACJ,CAAC,CAAC;;2EAEmE,IAAI,CAAC,KAAK;iFACJ,IAAI,CAAC,QAAQ;;;;;;;;;;KAUzF;QACC,CAAC,CAAC;;;;KAIH;;;IAGD,KAAK;SACJ,GAAG,CACF,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;kCACO,QAAQ;MACpC,KAAK,KAAK,CAAC,IAAI,IAAI;QACnB,CAAC,CAAC;;;2EAGmE,IAAI,CAAC,KAAK;iFACJ,IAAI,CAAC,QAAQ;;;KAGzF;QACC,CAAC,CAAC,EAAE;;;mCAGyB,QAAQ;;;;6BAId,mBAAmB;QAC1C,CAAC,CAAC,oBAAoB;QACtB,CAAC,CAAC,qEAAqE;;;;;2DAKlB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2FhE,CACE;SACA,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;CAUd,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,MAAyB;IACjE,OAAO,uBAAuB,CAAC;QAC7B,GAAG,MAAM;QACT,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC;KAC3C,CAAC,CAAC;AACL,CAAC"}
@@ -1,11 +0,0 @@
1
- /**
2
- * No Dead Buttons System
3
- *
4
- * Comprehensive system to prevent dead buttons and silent failures:
5
- * - Static scanner for dead UI patterns
6
- * - Button sweep test generator
7
- * - Integration helpers
8
- */
9
- export { runStaticScan, formatStaticScanResults, type DeadUIPattern, type StaticScanResult, } from './static-scanner';
10
- export { generateButtonSweepTest, generateCIButtonSweepTest, type ButtonSweepConfig, } from './button-sweep-generator';
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reality/no-dead-buttons/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAC"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- /**
3
- * No Dead Buttons System
4
- *
5
- * Comprehensive system to prevent dead buttons and silent failures:
6
- * - Static scanner for dead UI patterns
7
- * - Button sweep test generator
8
- * - Integration helpers
9
- */
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.generateCIButtonSweepTest = exports.generateButtonSweepTest = exports.formatStaticScanResults = exports.runStaticScan = void 0;
12
- var static_scanner_1 = require("./static-scanner");
13
- Object.defineProperty(exports, "runStaticScan", { enumerable: true, get: function () { return static_scanner_1.runStaticScan; } });
14
- Object.defineProperty(exports, "formatStaticScanResults", { enumerable: true, get: function () { return static_scanner_1.formatStaticScanResults; } });
15
- var button_sweep_generator_1 = require("./button-sweep-generator");
16
- Object.defineProperty(exports, "generateButtonSweepTest", { enumerable: true, get: function () { return button_sweep_generator_1.generateButtonSweepTest; } });
17
- Object.defineProperty(exports, "generateCIButtonSweepTest", { enumerable: true, get: function () { return button_sweep_generator_1.generateCIButtonSweepTest; } });
18
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reality/no-dead-buttons/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,mDAK0B;AAJxB,+GAAA,aAAa,OAAA;AACb,yHAAA,uBAAuB,OAAA;AAKzB,mEAIkC;AAHhC,iIAAA,uBAAuB,OAAA;AACvB,mIAAA,yBAAyB,OAAA"}
@@ -1,34 +0,0 @@
1
- /**
2
- * Static "No Dead UI" Scanner
3
- *
4
- * Fast static scan (<1s) that blocks obvious deadness before running e2e tests:
5
- * - TODO, stub, placeholder, "coming soon" text
6
- * - <button disabled> without a real reason
7
- * - href="#", onClick={() => {}}, return true handlers
8
- * - UI gating without server-side gating
9
- * - Empty catch blocks, fake success toasts
10
- */
11
- export interface DeadUIPattern {
12
- file: string;
13
- line: number;
14
- pattern: string;
15
- severity: 'error' | 'warning';
16
- message: string;
17
- suggestion?: string;
18
- }
19
- export interface StaticScanResult {
20
- passed: boolean;
21
- errors: DeadUIPattern[];
22
- warnings: DeadUIPattern[];
23
- scannedFiles: number;
24
- duration: number;
25
- }
26
- /**
27
- * Run static scan on codebase
28
- */
29
- export declare function runStaticScan(projectPath: string, scanPaths?: string[], excludeDirs?: string[]): StaticScanResult;
30
- /**
31
- * Format scan results for console output
32
- */
33
- export declare function formatStaticScanResults(result: StaticScanResult): string;
34
- //# sourceMappingURL=static-scanner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"static-scanner.d.ts","sourceRoot":"","sources":["../../../src/reality/no-dead-buttons/static-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAqJD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,MAAM,EAAiC,EAClD,WAAW,GAAE,MAAM,EAAO,GACzB,gBAAgB,CAwClB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CA0CxE"}