@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,399 @@
1
+ /**
2
+ * Proof Chain
3
+ * Runs verification stages in sandbox before accepting patches
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const { execSync } = require("child_process");
9
+ const fs = require("fs");
10
+ const path = require("path");
11
+
12
+ /**
13
+ * Proof chain stages
14
+ */
15
+ const PROOF_LEVELS = {
16
+ fast: ["static"],
17
+ balanced: ["static", "build"],
18
+ paranoid: ["static", "build", "reality"]
19
+ };
20
+
21
+ /**
22
+ * Run proof chain in sandbox
23
+ */
24
+ async function runProofChain(sandboxPath, options = {}) {
25
+ const level = options.level || "balanced";
26
+ const stages = PROOF_LEVELS[level] || PROOF_LEVELS.balanced;
27
+
28
+ const results = {
29
+ level,
30
+ stages: [],
31
+ passed: true,
32
+ duration: 0
33
+ };
34
+
35
+ const startTime = Date.now();
36
+
37
+ for (const stage of stages) {
38
+ const stageResult = await runStage(sandboxPath, stage, options);
39
+ results.stages.push(stageResult);
40
+
41
+ if (!stageResult.passed) {
42
+ results.passed = false;
43
+ results.failedAt = stage;
44
+ break;
45
+ }
46
+ }
47
+
48
+ results.duration = Date.now() - startTime;
49
+ return results;
50
+ }
51
+
52
+ /**
53
+ * Run individual proof stage
54
+ */
55
+ async function runStage(sandboxPath, stage, options) {
56
+ const startTime = Date.now();
57
+
58
+ switch (stage) {
59
+ case "static":
60
+ return runStaticProof(sandboxPath, options);
61
+ case "build":
62
+ return runBuildProof(sandboxPath, options);
63
+ case "reality":
64
+ return runRealityProof(sandboxPath, options);
65
+ default:
66
+ return { stage, passed: true, skipped: true, duration: 0 };
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Static proof: ship + contracts guard
72
+ */
73
+ async function runStaticProof(sandboxPath, options) {
74
+ const result = {
75
+ stage: "static",
76
+ passed: true,
77
+ checks: [],
78
+ duration: 0
79
+ };
80
+
81
+ const startTime = Date.now();
82
+
83
+ // Run vibecheck ship in sandbox
84
+ try {
85
+ const vibecheckBin = path.join(__dirname, "..", "..", "..", "guardrail.js");
86
+ const output = execSync(`node "${vibecheckBin}" ship --json`, {
87
+ cwd: sandboxPath,
88
+ encoding: "utf8",
89
+ timeout: 30000,
90
+ stdio: "pipe",
91
+ env: { ...process.env, VIBECHECK_SKIP_AUTH: "1" }
92
+ });
93
+
94
+ // Parse verdict from output
95
+ const verdictMatch = output.match(/Verdict:\s*(SHIP|WARN|BLOCK)/i);
96
+ const verdict = verdictMatch ? verdictMatch[1].toUpperCase() : "UNKNOWN";
97
+
98
+ result.checks.push({
99
+ name: "ship",
100
+ passed: verdict !== "BLOCK",
101
+ verdict,
102
+ output: output.slice(-500)
103
+ });
104
+
105
+ if (verdict === "BLOCK") {
106
+ result.passed = false;
107
+ result.reason = "Ship verdict is BLOCK";
108
+ }
109
+ } catch (e) {
110
+ result.checks.push({
111
+ name: "ship",
112
+ passed: false,
113
+ error: e.message
114
+ });
115
+ result.passed = false;
116
+ result.reason = `Ship check failed: ${e.message}`;
117
+ }
118
+
119
+ // Run contracts guard if contracts exist
120
+ const contractsDir = path.join(sandboxPath, ".vibecheck", "contracts");
121
+ if (fs.existsSync(contractsDir)) {
122
+ try {
123
+ const vibecheckBin = path.join(__dirname, "..", "..", "..", "guardrail.js");
124
+ const output = execSync(`node "${vibecheckBin}" ctx guard --json`, {
125
+ cwd: sandboxPath,
126
+ encoding: "utf8",
127
+ timeout: 30000,
128
+ stdio: "pipe",
129
+ env: { ...process.env, VIBECHECK_SKIP_AUTH: "1" }
130
+ });
131
+
132
+ result.checks.push({
133
+ name: "contracts",
134
+ passed: true,
135
+ output: output.slice(-500)
136
+ });
137
+ } catch (e) {
138
+ // Check if it's a BLOCK
139
+ if (e.status === 2) {
140
+ result.checks.push({
141
+ name: "contracts",
142
+ passed: false,
143
+ error: "Contract violations found"
144
+ });
145
+ result.passed = false;
146
+ result.reason = "Contract guard failed";
147
+ } else {
148
+ result.checks.push({
149
+ name: "contracts",
150
+ passed: true,
151
+ warning: e.message
152
+ });
153
+ }
154
+ }
155
+ }
156
+
157
+ result.duration = Date.now() - startTime;
158
+ return result;
159
+ }
160
+
161
+ /**
162
+ * Build proof: typecheck + build + targeted tests
163
+ */
164
+ async function runBuildProof(sandboxPath, options) {
165
+ const result = {
166
+ stage: "build",
167
+ passed: true,
168
+ checks: [],
169
+ duration: 0
170
+ };
171
+
172
+ const startTime = Date.now();
173
+
174
+ // Detect package manager
175
+ const pm = detectPackageManager(sandboxPath);
176
+
177
+ // Check for TypeScript
178
+ const tsconfigPath = path.join(sandboxPath, "tsconfig.json");
179
+ if (fs.existsSync(tsconfigPath)) {
180
+ try {
181
+ execSync(`${pm} run typecheck 2>&1 || npx tsc --noEmit 2>&1`, {
182
+ cwd: sandboxPath,
183
+ encoding: "utf8",
184
+ timeout: 60000,
185
+ stdio: "pipe"
186
+ });
187
+
188
+ result.checks.push({
189
+ name: "typecheck",
190
+ passed: true
191
+ });
192
+ } catch (e) {
193
+ // TypeScript errors
194
+ result.checks.push({
195
+ name: "typecheck",
196
+ passed: false,
197
+ error: e.stdout?.slice(-500) || e.message
198
+ });
199
+ result.passed = false;
200
+ result.reason = "TypeScript errors";
201
+ }
202
+ }
203
+
204
+ // Try to run build
205
+ const pkgPath = path.join(sandboxPath, "package.json");
206
+ if (fs.existsSync(pkgPath)) {
207
+ try {
208
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
209
+
210
+ if (pkg.scripts?.build) {
211
+ execSync(`${pm} run build`, {
212
+ cwd: sandboxPath,
213
+ encoding: "utf8",
214
+ timeout: 120000,
215
+ stdio: "pipe"
216
+ });
217
+
218
+ result.checks.push({
219
+ name: "build",
220
+ passed: true
221
+ });
222
+ }
223
+ } catch (e) {
224
+ result.checks.push({
225
+ name: "build",
226
+ passed: false,
227
+ error: e.message?.slice(-500)
228
+ });
229
+ result.passed = false;
230
+ result.reason = "Build failed";
231
+ }
232
+ }
233
+
234
+ // Run targeted tests if changed files have test files
235
+ if (options.changedFiles?.length) {
236
+ const testFiles = findRelatedTests(sandboxPath, options.changedFiles);
237
+
238
+ if (testFiles.length > 0) {
239
+ try {
240
+ const testCmd = `${pm} test -- ${testFiles.join(" ")}`;
241
+ execSync(testCmd, {
242
+ cwd: sandboxPath,
243
+ encoding: "utf8",
244
+ timeout: 120000,
245
+ stdio: "pipe"
246
+ });
247
+
248
+ result.checks.push({
249
+ name: "tests",
250
+ passed: true,
251
+ files: testFiles
252
+ });
253
+ } catch (e) {
254
+ result.checks.push({
255
+ name: "tests",
256
+ passed: false,
257
+ files: testFiles,
258
+ error: e.message?.slice(-500)
259
+ });
260
+ result.passed = false;
261
+ result.reason = "Tests failed";
262
+ }
263
+ }
264
+ }
265
+
266
+ result.duration = Date.now() - startTime;
267
+ return result;
268
+ }
269
+
270
+ /**
271
+ * Reality proof: run reality checks on critical paths
272
+ */
273
+ async function runRealityProof(sandboxPath, options) {
274
+ const result = {
275
+ stage: "reality",
276
+ passed: true,
277
+ checks: [],
278
+ duration: 0
279
+ };
280
+
281
+ const startTime = Date.now();
282
+
283
+ if (!options.url) {
284
+ result.checks.push({
285
+ name: "reality",
286
+ passed: true,
287
+ skipped: true,
288
+ reason: "No URL provided"
289
+ });
290
+ result.duration = Date.now() - startTime;
291
+ return result;
292
+ }
293
+
294
+ // Run vibecheck reality
295
+ try {
296
+ const vibecheckBin = path.join(__dirname, "..", "..", "..", "guardrail.js");
297
+ const cmd = `node "${vibecheckBin}" reality --url ${options.url} --max-pages 5 --max-depth 1`;
298
+
299
+ execSync(cmd, {
300
+ cwd: sandboxPath,
301
+ encoding: "utf8",
302
+ timeout: 120000,
303
+ stdio: "pipe",
304
+ env: { ...process.env, VIBECHECK_SKIP_AUTH: "1" }
305
+ });
306
+
307
+ result.checks.push({
308
+ name: "reality",
309
+ passed: true
310
+ });
311
+ } catch (e) {
312
+ if (e.status === 2) {
313
+ result.checks.push({
314
+ name: "reality",
315
+ passed: false,
316
+ error: "Reality check found blocking issues"
317
+ });
318
+ result.passed = false;
319
+ result.reason = "Reality check failed";
320
+ } else {
321
+ result.checks.push({
322
+ name: "reality",
323
+ passed: true,
324
+ warning: e.message
325
+ });
326
+ }
327
+ }
328
+
329
+ result.duration = Date.now() - startTime;
330
+ return result;
331
+ }
332
+
333
+ /**
334
+ * Detect package manager
335
+ */
336
+ function detectPackageManager(repoRoot) {
337
+ if (fs.existsSync(path.join(repoRoot, "pnpm-lock.yaml"))) return "pnpm";
338
+ if (fs.existsSync(path.join(repoRoot, "yarn.lock"))) return "yarn";
339
+ return "npm";
340
+ }
341
+
342
+ /**
343
+ * Find test files related to changed files
344
+ */
345
+ function findRelatedTests(repoRoot, changedFiles) {
346
+ const testFiles = [];
347
+
348
+ for (const file of changedFiles) {
349
+ // Look for .test.ts, .spec.ts variants
350
+ const base = file.replace(/\.(ts|tsx|js|jsx)$/, "");
351
+ const testVariants = [
352
+ `${base}.test.ts`,
353
+ `${base}.test.tsx`,
354
+ `${base}.test.js`,
355
+ `${base}.spec.ts`,
356
+ `${base}.spec.tsx`,
357
+ `${base}.spec.js`
358
+ ];
359
+
360
+ for (const variant of testVariants) {
361
+ const testPath = path.join(repoRoot, variant);
362
+ if (fs.existsSync(testPath)) {
363
+ testFiles.push(variant);
364
+ break;
365
+ }
366
+ }
367
+
368
+ // Also check __tests__ directory
369
+ const dir = path.dirname(file);
370
+ const name = path.basename(file).replace(/\.(ts|tsx|js|jsx)$/, "");
371
+ const testsDir = path.join(repoRoot, dir, "__tests__");
372
+
373
+ if (fs.existsSync(testsDir)) {
374
+ const testVariants = [
375
+ `${name}.test.ts`,
376
+ `${name}.test.tsx`,
377
+ `${name}.test.js`
378
+ ];
379
+
380
+ for (const variant of testVariants) {
381
+ const testPath = path.join(testsDir, variant);
382
+ if (fs.existsSync(testPath)) {
383
+ testFiles.push(path.join(dir, "__tests__", variant));
384
+ break;
385
+ }
386
+ }
387
+ }
388
+ }
389
+
390
+ return [...new Set(testFiles)];
391
+ }
392
+
393
+ module.exports = {
394
+ runProofChain,
395
+ runStaticProof,
396
+ runBuildProof,
397
+ runRealityProof,
398
+ PROOF_LEVELS
399
+ };
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Sandbox Runner
3
+ * Orchestrates the complete sandbox workflow:
4
+ * 1. Create isolated workspace
5
+ * 2. Apply patches
6
+ * 3. Run proof chain
7
+ * 4. Merge back or rollback
8
+ */
9
+
10
+ "use strict";
11
+
12
+ const fs = require("fs");
13
+ const path = require("path");
14
+ const {
15
+ isGitRepo,
16
+ isGitClean,
17
+ createWorktree,
18
+ removeWorktree,
19
+ copyChangesBack,
20
+ runInSandbox,
21
+ getChangedFiles
22
+ } = require("./worktree");
23
+ const { runProofChain, PROOF_LEVELS } = require("./proof-chain");
24
+
25
+ /**
26
+ * Run patch in sandbox with proof chain
27
+ */
28
+ async function runPatchInSandbox(repoRoot, patchFn, options = {}) {
29
+ const result = {
30
+ ok: false,
31
+ sandboxPath: null,
32
+ patchApplied: false,
33
+ proofPassed: false,
34
+ mergedBack: false,
35
+ proofResult: null,
36
+ changedFiles: [],
37
+ error: null,
38
+ duration: 0
39
+ };
40
+
41
+ const startTime = Date.now();
42
+
43
+ // Verify git repo
44
+ if (!isGitRepo(repoRoot)) {
45
+ result.error = "Not a git repository. Sandbox requires git.";
46
+ return result;
47
+ }
48
+
49
+ // Create worktree
50
+ const worktree = createWorktree(repoRoot);
51
+ if (!worktree.ok) {
52
+ result.error = `Failed to create worktree: ${worktree.error}`;
53
+ return result;
54
+ }
55
+
56
+ result.sandboxPath = worktree.path;
57
+
58
+ try {
59
+ // Apply patch in sandbox
60
+ const patchResult = await patchFn(worktree.path);
61
+
62
+ if (!patchResult.ok) {
63
+ result.error = `Patch failed: ${patchResult.error}`;
64
+ return result;
65
+ }
66
+
67
+ result.patchApplied = true;
68
+ result.changedFiles = getChangedFiles(worktree.path);
69
+
70
+ // Run proof chain
71
+ const proofResult = await runProofChain(worktree.path, {
72
+ level: options.proofLevel || "balanced",
73
+ url: options.url,
74
+ changedFiles: result.changedFiles
75
+ });
76
+
77
+ result.proofResult = proofResult;
78
+ result.proofPassed = proofResult.passed;
79
+
80
+ if (!proofResult.passed) {
81
+ result.error = `Proof chain failed at ${proofResult.failedAt}: ${proofResult.reason}`;
82
+ return result;
83
+ }
84
+
85
+ // Copy changes back to main worktree
86
+ if (options.apply !== false) {
87
+ const copyResult = copyChangesBack(worktree.path, repoRoot, result.changedFiles);
88
+
89
+ if (copyResult.failed.length > 0) {
90
+ result.error = `Failed to copy some files: ${copyResult.failed.map(f => f.file).join(", ")}`;
91
+ return result;
92
+ }
93
+
94
+ result.mergedBack = true;
95
+ }
96
+
97
+ result.ok = true;
98
+ } finally {
99
+ // Cleanup worktree
100
+ removeWorktree(repoRoot, worktree.path);
101
+ result.duration = Date.now() - startTime;
102
+ }
103
+
104
+ return result;
105
+ }
106
+
107
+ /**
108
+ * Apply unified diff in sandbox
109
+ */
110
+ function applyDiffInSandbox(sandboxPath, diff) {
111
+ const { applyUnifiedDiff } = require("../patch");
112
+ return applyUnifiedDiff(sandboxPath, diff);
113
+ }
114
+
115
+ /**
116
+ * Create sandbox, apply edits, and verify
117
+ */
118
+ async function sandboxApplyEdits(repoRoot, edits, options = {}) {
119
+ return runPatchInSandbox(repoRoot, async (sandboxPath) => {
120
+ const results = [];
121
+
122
+ for (const edit of edits) {
123
+ if (edit.diff) {
124
+ const res = applyDiffInSandbox(sandboxPath, edit.diff);
125
+ results.push(res);
126
+ if (!res.ok) {
127
+ return { ok: false, error: res.error, results };
128
+ }
129
+ } else if (edit.file && edit.content) {
130
+ // Direct file write
131
+ try {
132
+ const filePath = path.join(sandboxPath, edit.file);
133
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
134
+ fs.writeFileSync(filePath, edit.content, "utf8");
135
+ results.push({ ok: true, file: edit.file });
136
+ } catch (e) {
137
+ return { ok: false, error: e.message, results };
138
+ }
139
+ }
140
+ }
141
+
142
+ return { ok: true, results };
143
+ }, options);
144
+ }
145
+
146
+ /**
147
+ * Write proof result to output directory
148
+ */
149
+ function writeProofResult(outDir, result) {
150
+ fs.mkdirSync(outDir, { recursive: true });
151
+
152
+ const proofPath = path.join(outDir, "proof.json");
153
+ fs.writeFileSync(proofPath, JSON.stringify(result, null, 2), "utf8");
154
+
155
+ // Write human-readable log
156
+ const logLines = [
157
+ `# Sandbox Proof Result`,
158
+ ``,
159
+ `**Status**: ${result.ok ? "✅ PASSED" : "❌ FAILED"}`,
160
+ `**Duration**: ${result.duration}ms`,
161
+ `**Proof Level**: ${result.proofResult?.level || "unknown"}`,
162
+ ``
163
+ ];
164
+
165
+ if (result.changedFiles.length) {
166
+ logLines.push(`## Changed Files`);
167
+ for (const f of result.changedFiles) {
168
+ logLines.push(`- ${f}`);
169
+ }
170
+ logLines.push(``);
171
+ }
172
+
173
+ if (result.proofResult?.stages) {
174
+ logLines.push(`## Proof Stages`);
175
+ for (const stage of result.proofResult.stages) {
176
+ const icon = stage.passed ? "✅" : "❌";
177
+ logLines.push(`### ${icon} ${stage.stage} (${stage.duration}ms)`);
178
+
179
+ for (const check of stage.checks || []) {
180
+ const checkIcon = check.passed ? "✓" : "✗";
181
+ logLines.push(`- ${checkIcon} ${check.name}`);
182
+ if (check.error) logLines.push(` Error: ${check.error}`);
183
+ }
184
+ logLines.push(``);
185
+ }
186
+ }
187
+
188
+ if (result.error) {
189
+ logLines.push(`## Error`);
190
+ logLines.push(result.error);
191
+ }
192
+
193
+ const logPath = path.join(outDir, "proof.md");
194
+ fs.writeFileSync(logPath, logLines.join("\n"), "utf8");
195
+
196
+ return { proofPath, logPath };
197
+ }
198
+
199
+ module.exports = {
200
+ runPatchInSandbox,
201
+ sandboxApplyEdits,
202
+ applyDiffInSandbox,
203
+ writeProofResult,
204
+ PROOF_LEVELS
205
+ };