@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
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Auth Contract Builder
3
+ * Builds auth.json contract from truthpack
4
+ */
5
+
6
+ "use strict";
7
+
8
+ /**
9
+ * Build auth contract from truthpack
10
+ */
11
+ function buildAuthContract(truthpack) {
12
+ const contract = {
13
+ version: "1.0.0",
14
+ generatedAt: new Date().toISOString(),
15
+ protectedPatterns: [],
16
+ publicPatterns: [],
17
+ roles: [],
18
+ evidence: []
19
+ };
20
+
21
+ // Extract protected patterns from Next middleware
22
+ const nextMiddleware = truthpack?.auth?.nextMiddleware || [];
23
+ const matcherPatterns = truthpack?.auth?.nextMatcherPatterns || [];
24
+
25
+ contract.protectedPatterns = [...new Set(matcherPatterns)];
26
+
27
+ // Add evidence from middleware files
28
+ for (const mw of nextMiddleware) {
29
+ contract.evidence.push({
30
+ file: mw.file,
31
+ type: "next_middleware",
32
+ signals: mw.signalTypes || []
33
+ });
34
+ }
35
+
36
+ // Extract Fastify auth info
37
+ const fastify = truthpack?.auth?.fastify || {};
38
+ if (fastify.hooks?.length) {
39
+ for (const hook of fastify.hooks) {
40
+ contract.evidence.push({
41
+ file: hook.file,
42
+ type: "fastify_hook",
43
+ hookType: hook.hookType,
44
+ line: hook.line
45
+ });
46
+ }
47
+ }
48
+
49
+ // Infer roles from truthpack
50
+ contract.roles = inferRoles(truthpack);
51
+
52
+ // Default public patterns
53
+ contract.publicPatterns = [
54
+ "/api/health",
55
+ "/api/status",
56
+ "/api/public/*",
57
+ "/_next/*",
58
+ "/favicon.ico"
59
+ ];
60
+
61
+ return contract;
62
+ }
63
+
64
+ /**
65
+ * Infer roles from truthpack
66
+ */
67
+ function inferRoles(truthpack) {
68
+ const roles = [];
69
+ const routes = truthpack?.routes?.server || [];
70
+
71
+ // Check for admin routes
72
+ const adminRoutes = routes.filter(r => r.path.includes("/admin"));
73
+ if (adminRoutes.length > 0) {
74
+ roles.push({
75
+ name: "admin",
76
+ routes: adminRoutes.map(r => r.path),
77
+ evidence: adminRoutes.flatMap(r => r.evidence || [])
78
+ });
79
+ }
80
+
81
+ // Check for user routes (default authenticated)
82
+ const userRoutes = routes.filter(r =>
83
+ !r.path.includes("/admin") &&
84
+ !r.path.includes("/public") &&
85
+ !r.path.includes("/health")
86
+ );
87
+ if (userRoutes.length > 0) {
88
+ roles.push({
89
+ name: "user",
90
+ routes: userRoutes.map(r => r.path),
91
+ evidence: []
92
+ });
93
+ }
94
+
95
+ return roles;
96
+ }
97
+
98
+ /**
99
+ * Validate auth coverage
100
+ */
101
+ function validateAuthContract(contract, routes, realityResults) {
102
+ const violations = [];
103
+
104
+ // Check that all non-public routes are protected
105
+ for (const route of routes) {
106
+ const isPublic = contract.publicPatterns.some(p => matchesPattern(route.path, p));
107
+ const isProtected = contract.protectedPatterns.some(p => matchesPattern(route.path, p));
108
+
109
+ if (!isPublic && !isProtected) {
110
+ // Check if route looks sensitive
111
+ if (looksLikeSensitiveRoute(route.path)) {
112
+ violations.push({
113
+ type: "unprotected_sensitive",
114
+ severity: "WARN",
115
+ route: route.path,
116
+ message: `Sensitive route ${route.path} not covered by auth patterns`,
117
+ evidence: route.evidence || []
118
+ });
119
+ }
120
+ }
121
+ }
122
+
123
+ // Check reality results for auth bypass
124
+ if (realityResults) {
125
+ for (const result of realityResults) {
126
+ if (result.type === "AuthCoverage" && result.severity === "BLOCK") {
127
+ violations.push({
128
+ type: "auth_bypass",
129
+ severity: "BLOCK",
130
+ route: result.page,
131
+ message: result.title,
132
+ evidence: []
133
+ });
134
+ }
135
+ }
136
+ }
137
+
138
+ return violations;
139
+ }
140
+
141
+ function matchesPattern(path, pattern) {
142
+ const normPattern = pattern.replace(/\*/g, ".*").replace(/\//g, "\\/");
143
+ try {
144
+ const rx = new RegExp(`^${normPattern}`, "i");
145
+ return rx.test(path);
146
+ } catch {
147
+ return false;
148
+ }
149
+ }
150
+
151
+ function looksLikeSensitiveRoute(path) {
152
+ const sensitivePatterns = [
153
+ /\/api\/users/i,
154
+ /\/api\/billing/i,
155
+ /\/api\/payment/i,
156
+ /\/api\/subscription/i,
157
+ /\/api\/settings/i,
158
+ /\/api\/profile/i,
159
+ /\/api\/account/i,
160
+ /\/api\/admin/i,
161
+ /\/api\/webhook/i,
162
+ ];
163
+
164
+ return sensitivePatterns.some(p => p.test(path));
165
+ }
166
+
167
+ /**
168
+ * Diff two auth contracts
169
+ */
170
+ function diffAuthContracts(before, after) {
171
+ const diff = {
172
+ protectedAdded: [],
173
+ protectedRemoved: [],
174
+ rolesChanged: []
175
+ };
176
+
177
+ const beforeProtected = new Set(before.protectedPatterns);
178
+ const afterProtected = new Set(after.protectedPatterns);
179
+
180
+ for (const p of afterProtected) {
181
+ if (!beforeProtected.has(p)) diff.protectedAdded.push(p);
182
+ }
183
+ for (const p of beforeProtected) {
184
+ if (!afterProtected.has(p)) diff.protectedRemoved.push(p);
185
+ }
186
+
187
+ return diff;
188
+ }
189
+
190
+ module.exports = {
191
+ buildAuthContract,
192
+ validateAuthContract,
193
+ diffAuthContracts
194
+ };
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Env Contract Builder
3
+ * Builds env.json contract from truthpack
4
+ */
5
+
6
+ "use strict";
7
+
8
+ /**
9
+ * Build env contract from truthpack
10
+ */
11
+ function buildEnvContract(truthpack) {
12
+ const contract = {
13
+ version: "1.0.0",
14
+ generatedAt: new Date().toISOString(),
15
+ vars: []
16
+ };
17
+
18
+ const envVars = truthpack?.env?.vars || [];
19
+ const declared = new Set(truthpack?.env?.declared || []);
20
+ const declaredSources = truthpack?.env?.declaredSources || [];
21
+
22
+ for (const v of envVars) {
23
+ const varSpec = {
24
+ name: v.name,
25
+ required: inferRequired(v, declared),
26
+ usedIn: (v.references || []).map(r => r.file).filter(Boolean),
27
+ declaredIn: declaredSources.filter(s => isDeclaredInSource(v.name, s)),
28
+ description: inferDescription(v.name),
29
+ evidence: v.references || []
30
+ };
31
+
32
+ contract.vars.push(varSpec);
33
+ }
34
+
35
+ // Add declared vars that aren't used (might be optional)
36
+ for (const name of declared) {
37
+ if (!envVars.find(v => v.name === name)) {
38
+ contract.vars.push({
39
+ name,
40
+ required: false,
41
+ usedIn: [],
42
+ declaredIn: declaredSources,
43
+ description: inferDescription(name),
44
+ evidence: []
45
+ });
46
+ }
47
+ }
48
+
49
+ return contract;
50
+ }
51
+
52
+ /**
53
+ * Infer if env var is required
54
+ */
55
+ function inferRequired(envVar, declared) {
56
+ const name = envVar.name;
57
+
58
+ // Common required patterns
59
+ const requiredPatterns = [
60
+ /^DATABASE_URL$/i,
61
+ /^NEXTAUTH_SECRET$/i,
62
+ /^NEXTAUTH_URL$/i,
63
+ /^JWT_SECRET$/i,
64
+ /^API_KEY$/i,
65
+ /^STRIPE_SECRET_KEY$/i,
66
+ /^STRIPE_WEBHOOK_SECRET$/i,
67
+ /^AUTH0_/i,
68
+ /^CLERK_/i,
69
+ ];
70
+
71
+ for (const pattern of requiredPatterns) {
72
+ if (pattern.test(name)) return true;
73
+ }
74
+
75
+ // If used but not declared, likely required
76
+ if (!declared.has(name) && envVar.references?.length > 0) {
77
+ return true;
78
+ }
79
+
80
+ return false;
81
+ }
82
+
83
+ function isDeclaredInSource(name, source) {
84
+ // Simple heuristic - would need to parse files for accurate check
85
+ return true;
86
+ }
87
+
88
+ function inferDescription(name) {
89
+ const descriptions = {
90
+ DATABASE_URL: "Database connection string",
91
+ NEXTAUTH_SECRET: "NextAuth.js encryption secret",
92
+ NEXTAUTH_URL: "NextAuth.js base URL",
93
+ JWT_SECRET: "JWT signing secret",
94
+ STRIPE_SECRET_KEY: "Stripe API secret key",
95
+ STRIPE_PUBLISHABLE_KEY: "Stripe publishable key",
96
+ STRIPE_WEBHOOK_SECRET: "Stripe webhook signing secret",
97
+ NODE_ENV: "Node environment (development/production)",
98
+ PORT: "Server port",
99
+ HOST: "Server host",
100
+ };
101
+
102
+ return descriptions[name] || undefined;
103
+ }
104
+
105
+ /**
106
+ * Validate code against env contract
107
+ */
108
+ function validateAgainstEnvContract(contract, usedVars) {
109
+ const violations = [];
110
+ const contractVars = new Map(contract.vars.map(v => [v.name, v]));
111
+
112
+ for (const used of usedVars) {
113
+ if (!contractVars.has(used.name)) {
114
+ violations.push({
115
+ type: "undeclared_env",
116
+ severity: "WARN",
117
+ name: used.name,
118
+ usedIn: used.references?.map(r => r.file) || [],
119
+ message: `Env var ${used.name} used but not declared in contract`,
120
+ evidence: used.references || []
121
+ });
122
+ }
123
+ }
124
+
125
+ // Check for required vars that aren't used
126
+ for (const [name, spec] of contractVars) {
127
+ if (spec.required && spec.usedIn.length === 0) {
128
+ violations.push({
129
+ type: "unused_required",
130
+ severity: "WARN",
131
+ name,
132
+ message: `Required env var ${name} declared but not used`,
133
+ evidence: []
134
+ });
135
+ }
136
+ }
137
+
138
+ return violations;
139
+ }
140
+
141
+ /**
142
+ * Diff two env contracts
143
+ */
144
+ function diffEnvContracts(before, after) {
145
+ const diff = {
146
+ added: [],
147
+ removed: [],
148
+ changed: []
149
+ };
150
+
151
+ const beforeMap = new Map(before.vars.map(v => [v.name, v]));
152
+ const afterMap = new Map(after.vars.map(v => [v.name, v]));
153
+
154
+ for (const [name, spec] of afterMap) {
155
+ if (!beforeMap.has(name)) {
156
+ diff.added.push(spec);
157
+ } else {
158
+ const prev = beforeMap.get(name);
159
+ if (prev.required !== spec.required) {
160
+ diff.changed.push({ before: prev, after: spec });
161
+ }
162
+ }
163
+ }
164
+
165
+ for (const [name, spec] of beforeMap) {
166
+ if (!afterMap.has(name)) {
167
+ diff.removed.push(spec);
168
+ }
169
+ }
170
+
171
+ return diff;
172
+ }
173
+
174
+ module.exports = {
175
+ buildEnvContract,
176
+ validateAgainstEnvContract,
177
+ diffEnvContracts
178
+ };
@@ -0,0 +1,198 @@
1
+ /**
2
+ * External Contract Builder
3
+ * Builds external.json contract from truthpack (Stripe, GitHub, etc.)
4
+ */
5
+
6
+ "use strict";
7
+
8
+ /**
9
+ * Build external services contract from truthpack
10
+ */
11
+ function buildExternalContract(truthpack) {
12
+ const contract = {
13
+ version: "1.0.0",
14
+ generatedAt: new Date().toISOString(),
15
+ services: []
16
+ };
17
+
18
+ // Extract billing/Stripe info
19
+ const billing = truthpack?.billing || {};
20
+ if (billing.hasStripe || billing.webhookCandidates?.length) {
21
+ const stripeService = {
22
+ name: "stripe",
23
+ envVars: extractStripeEnvVars(truthpack),
24
+ usedIn: billing.webhookCandidates?.map(w => w.file) || [],
25
+ webhooks: billing.webhookCandidates?.map(w => ({
26
+ path: w.path,
27
+ verified: w.hasSignatureVerification || false,
28
+ idempotent: w.hasIdempotency || false
29
+ })) || [],
30
+ evidence: billing.webhookCandidates?.flatMap(w => w.evidence || []) || []
31
+ };
32
+ contract.services.push(stripeService);
33
+ }
34
+
35
+ // Detect other external services from env vars
36
+ const envVars = truthpack?.env?.vars || [];
37
+
38
+ // GitHub
39
+ const githubVars = envVars.filter(v => /github/i.test(v.name));
40
+ if (githubVars.length) {
41
+ contract.services.push({
42
+ name: "github",
43
+ envVars: githubVars.map(v => v.name),
44
+ usedIn: githubVars.flatMap(v => v.references?.map(r => r.file) || []),
45
+ evidence: githubVars.flatMap(v => v.references || [])
46
+ });
47
+ }
48
+
49
+ // SendGrid
50
+ const sendgridVars = envVars.filter(v => /sendgrid/i.test(v.name));
51
+ if (sendgridVars.length) {
52
+ contract.services.push({
53
+ name: "sendgrid",
54
+ envVars: sendgridVars.map(v => v.name),
55
+ usedIn: sendgridVars.flatMap(v => v.references?.map(r => r.file) || []),
56
+ evidence: sendgridVars.flatMap(v => v.references || [])
57
+ });
58
+ }
59
+
60
+ // Twilio
61
+ const twilioVars = envVars.filter(v => /twilio/i.test(v.name));
62
+ if (twilioVars.length) {
63
+ contract.services.push({
64
+ name: "twilio",
65
+ envVars: twilioVars.map(v => v.name),
66
+ usedIn: twilioVars.flatMap(v => v.references?.map(r => r.file) || []),
67
+ evidence: twilioVars.flatMap(v => v.references || [])
68
+ });
69
+ }
70
+
71
+ // AWS
72
+ const awsVars = envVars.filter(v => /^aws/i.test(v.name));
73
+ if (awsVars.length) {
74
+ contract.services.push({
75
+ name: "aws",
76
+ envVars: awsVars.map(v => v.name),
77
+ usedIn: awsVars.flatMap(v => v.references?.map(r => r.file) || []),
78
+ evidence: awsVars.flatMap(v => v.references || [])
79
+ });
80
+ }
81
+
82
+ // Supabase
83
+ const supabaseVars = envVars.filter(v => /supabase/i.test(v.name));
84
+ if (supabaseVars.length) {
85
+ contract.services.push({
86
+ name: "supabase",
87
+ envVars: supabaseVars.map(v => v.name),
88
+ usedIn: supabaseVars.flatMap(v => v.references?.map(r => r.file) || []),
89
+ evidence: supabaseVars.flatMap(v => v.references || [])
90
+ });
91
+ }
92
+
93
+ return contract;
94
+ }
95
+
96
+ function extractStripeEnvVars(truthpack) {
97
+ const envVars = truthpack?.env?.vars || [];
98
+ return envVars
99
+ .filter(v => /stripe/i.test(v.name))
100
+ .map(v => v.name);
101
+ }
102
+
103
+ /**
104
+ * Validate external services contract
105
+ */
106
+ function validateExternalContract(contract) {
107
+ const violations = [];
108
+
109
+ for (const service of contract.services) {
110
+ // Check Stripe webhook verification
111
+ if (service.name === "stripe") {
112
+ for (const webhook of service.webhooks || []) {
113
+ if (!webhook.verified) {
114
+ violations.push({
115
+ type: "unverified_webhook",
116
+ severity: "BLOCK",
117
+ service: "stripe",
118
+ path: webhook.path,
119
+ message: `Stripe webhook at ${webhook.path} missing signature verification`,
120
+ evidence: []
121
+ });
122
+ }
123
+ if (!webhook.idempotent) {
124
+ violations.push({
125
+ type: "non_idempotent_webhook",
126
+ severity: "WARN",
127
+ service: "stripe",
128
+ path: webhook.path,
129
+ message: `Stripe webhook at ${webhook.path} may not be idempotent`,
130
+ evidence: []
131
+ });
132
+ }
133
+ }
134
+ }
135
+
136
+ // Check for missing required env vars
137
+ const requiredVars = getRequiredVarsForService(service.name);
138
+ for (const required of requiredVars) {
139
+ if (!service.envVars.includes(required)) {
140
+ violations.push({
141
+ type: "missing_env",
142
+ severity: "WARN",
143
+ service: service.name,
144
+ envVar: required,
145
+ message: `Service ${service.name} typically requires ${required}`,
146
+ evidence: []
147
+ });
148
+ }
149
+ }
150
+ }
151
+
152
+ return violations;
153
+ }
154
+
155
+ function getRequiredVarsForService(name) {
156
+ const requirements = {
157
+ stripe: ["STRIPE_SECRET_KEY", "STRIPE_WEBHOOK_SECRET"],
158
+ github: ["GITHUB_TOKEN"],
159
+ sendgrid: ["SENDGRID_API_KEY"],
160
+ twilio: ["TWILIO_ACCOUNT_SID", "TWILIO_AUTH_TOKEN"],
161
+ supabase: ["SUPABASE_URL", "SUPABASE_ANON_KEY"]
162
+ };
163
+ return requirements[name] || [];
164
+ }
165
+
166
+ /**
167
+ * Diff two external contracts
168
+ */
169
+ function diffExternalContracts(before, after) {
170
+ const diff = {
171
+ added: [],
172
+ removed: [],
173
+ changed: []
174
+ };
175
+
176
+ const beforeMap = new Map(before.services.map(s => [s.name, s]));
177
+ const afterMap = new Map(after.services.map(s => [s.name, s]));
178
+
179
+ for (const [name, service] of afterMap) {
180
+ if (!beforeMap.has(name)) {
181
+ diff.added.push(service);
182
+ }
183
+ }
184
+
185
+ for (const [name, service] of beforeMap) {
186
+ if (!afterMap.has(name)) {
187
+ diff.removed.push(service);
188
+ }
189
+ }
190
+
191
+ return diff;
192
+ }
193
+
194
+ module.exports = {
195
+ buildExternalContract,
196
+ validateExternalContract,
197
+ diffExternalContracts
198
+ };