@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,477 @@
1
+ /**
2
+ * Route Truth v1 - JavaScript Runtime
3
+ *
4
+ * Generates a normalized route map with evidence from:
5
+ * - Next.js (App Router + Pages Router)
6
+ * - Fastify (shorthand + .route() + register prefixes)
7
+ *
8
+ * Then implements validate_claim(route_exists) on top of it.
9
+ */
10
+
11
+ import fs from 'fs';
12
+ import path from 'path';
13
+ import crypto from 'crypto';
14
+
15
+ // ============================================================================
16
+ // CANONICALIZATION
17
+ // ============================================================================
18
+
19
+ /**
20
+ * Canonicalize a path to standard format.
21
+ */
22
+ export function canonicalizePath(p) {
23
+ let s = p.trim();
24
+ if (!s.startsWith('/')) s = '/' + s;
25
+ s = s.replace(/\/+/g, '/');
26
+
27
+ // Convert Next.js dynamic segments
28
+ s = s.replace(/\[\[\.{3}([^\]]+)\]\]/g, '*$1?'); // [[...slug]] → *slug?
29
+ s = s.replace(/\[\.{3}([^\]]+)\]/g, '*$1'); // [...slug] → *slug
30
+ s = s.replace(/\[([^\]]+)\]/g, ':$1'); // [id] → :id
31
+
32
+ if (s.length > 1) s = s.replace(/\/$/, '');
33
+ return s;
34
+ }
35
+
36
+ export function canonicalizeMethod(m) {
37
+ const u = m.toUpperCase();
38
+ if (u === 'ALL' || u === 'ANY') return '*';
39
+ return u;
40
+ }
41
+
42
+ function joinPrefix(prefix, p) {
43
+ const cleanPrefix = prefix.replace(/\/$/, '');
44
+ const cleanPath = p.startsWith('/') ? p : '/' + p;
45
+ return canonicalizePath(cleanPrefix + cleanPath);
46
+ }
47
+
48
+ function isParameterizedPath(path) {
49
+ return path.includes(':') || path.includes('*');
50
+ }
51
+
52
+ function matchPath(pattern, concrete) {
53
+ const patternParts = pattern.split('/');
54
+ const concreteParts = concrete.split('/');
55
+
56
+ let pIdx = 0, cIdx = 0;
57
+
58
+ while (pIdx < patternParts.length && cIdx < concreteParts.length) {
59
+ const pPart = patternParts[pIdx];
60
+ const cPart = concreteParts[cIdx];
61
+
62
+ if (pPart.startsWith('*')) return true;
63
+ if (pPart.startsWith(':')) { pIdx++; cIdx++; continue; }
64
+ if (pPart !== cPart) return false;
65
+ pIdx++; cIdx++;
66
+ }
67
+
68
+ return pIdx === patternParts.length && cIdx === concreteParts.length;
69
+ }
70
+
71
+ function matchMethod(pattern, concrete) {
72
+ if (pattern === '*') return true;
73
+ return pattern === concrete;
74
+ }
75
+
76
+ // ============================================================================
77
+ // NEXT.JS RESOLVER
78
+ // ============================================================================
79
+
80
+ const NEXT_HTTP_METHODS = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS', 'HEAD'];
81
+ let evidenceCounter = 0;
82
+
83
+ function createEvidence(file, lines, reason, snippet) {
84
+ evidenceCounter++;
85
+ return {
86
+ id: `ev_${String(evidenceCounter).padStart(4, '0')}`,
87
+ file,
88
+ lines,
89
+ snippetHash: `sha256:${crypto.createHash('sha256').update(snippet || '').digest('hex').slice(0, 16)}`,
90
+ reason,
91
+ };
92
+ }
93
+
94
+ function findFiles(dir, include, exclude) {
95
+ const files = [];
96
+
97
+ function walk(d) {
98
+ try {
99
+ const entries = fs.readdirSync(d, { withFileTypes: true });
100
+ for (const entry of entries) {
101
+ const fullPath = path.join(d, entry.name);
102
+ if (entry.isDirectory()) {
103
+ if (!entry.name.startsWith('.') && entry.name !== 'node_modules') {
104
+ walk(fullPath);
105
+ }
106
+ } else if (entry.isFile()) {
107
+ if (include.test(entry.name) && (!exclude || !exclude.test(entry.name))) {
108
+ files.push(fullPath);
109
+ }
110
+ }
111
+ }
112
+ } catch {}
113
+ }
114
+
115
+ walk(dir);
116
+ return files;
117
+ }
118
+
119
+ function extractAppRouterMethods(code) {
120
+ const methods = [];
121
+ const lines = code.split('\n');
122
+
123
+ const patterns = [
124
+ /export\s+(?:async\s+)?function\s+(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\s*\(/,
125
+ /export\s+const\s+(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\s*=/,
126
+ ];
127
+
128
+ for (let i = 0; i < lines.length; i++) {
129
+ for (const pattern of patterns) {
130
+ const match = lines[i].match(pattern);
131
+ if (match && NEXT_HTTP_METHODS.includes(match[1].toUpperCase())) {
132
+ methods.push({
133
+ name: match[1].toUpperCase(),
134
+ line: i + 1,
135
+ snippet: lines[i].trim(),
136
+ });
137
+ }
138
+ }
139
+ }
140
+
141
+ return methods;
142
+ }
143
+
144
+ export async function resolveNextRoutes(repoRoot) {
145
+ const routes = [];
146
+
147
+ // App Router: app/api/**/route.ts|js
148
+ const appDirs = ['app', 'src/app'];
149
+ for (const appDir of appDirs) {
150
+ const apiDir = path.join(repoRoot, appDir, 'api');
151
+ if (!fs.existsSync(apiDir)) continue;
152
+
153
+ const routeFiles = findFiles(apiDir, /route\.(ts|js)$/);
154
+
155
+ for (const file of routeFiles) {
156
+ const relPath = path.relative(repoRoot, file).replace(/\\/g, '/');
157
+ const apiIdx = relPath.indexOf('/api/');
158
+ const sub = relPath.slice(apiIdx + '/api/'.length).replace(/\/route\.(ts|js)$/, '');
159
+ const routePath = canonicalizePath('/api/' + sub);
160
+
161
+ const code = fs.readFileSync(file, 'utf8');
162
+ const methods = extractAppRouterMethods(code);
163
+
164
+ if (methods.length === 0) {
165
+ routes.push({
166
+ method: '*',
167
+ path: routePath,
168
+ handler: relPath,
169
+ framework: 'next',
170
+ routerType: 'app',
171
+ confidence: 'low',
172
+ evidence: [createEvidence(relPath, '1', 'route file with no exports', code.slice(0, 100))],
173
+ });
174
+ continue;
175
+ }
176
+
177
+ for (const m of methods) {
178
+ routes.push({
179
+ method: m.name,
180
+ path: routePath,
181
+ handler: `${relPath}:${m.line}`,
182
+ framework: 'next',
183
+ routerType: 'app',
184
+ confidence: 'high',
185
+ evidence: [createEvidence(relPath, String(m.line), `export ${m.name}`, m.snippet)],
186
+ });
187
+ }
188
+ }
189
+ }
190
+
191
+ // Pages Router: pages/api/**/*.ts|js
192
+ const pagesDirs = ['pages', 'src/pages'];
193
+ for (const pagesDir of pagesDirs) {
194
+ const apiDir = path.join(repoRoot, pagesDir, 'api');
195
+ if (!fs.existsSync(apiDir)) continue;
196
+
197
+ const apiFiles = findFiles(apiDir, /\.(ts|js)$/, /\.d\.ts$/);
198
+
199
+ for (const file of apiFiles) {
200
+ const relPath = path.relative(repoRoot, file).replace(/\\/g, '/');
201
+ const apiIdx = relPath.indexOf('/api/');
202
+ const sub = relPath
203
+ .slice(apiIdx + '/api/'.length)
204
+ .replace(/\.(ts|js)$/, '')
205
+ .replace(/\/index$/, '');
206
+
207
+ const routePath = canonicalizePath('/api/' + sub);
208
+ const code = fs.readFileSync(file, 'utf8');
209
+ const hasDefaultExport = /export\s+default/.test(code);
210
+
211
+ routes.push({
212
+ method: '*',
213
+ path: routePath,
214
+ handler: relPath,
215
+ framework: 'next',
216
+ routerType: 'pages',
217
+ confidence: hasDefaultExport ? 'med' : 'low',
218
+ evidence: [createEvidence(relPath, '1', 'Pages API route', code.slice(0, 100))],
219
+ });
220
+ }
221
+ }
222
+
223
+ return routes;
224
+ }
225
+
226
+ // ============================================================================
227
+ // FASTIFY RESOLVER (Simplified - regex based)
228
+ // ============================================================================
229
+
230
+ export async function resolveFastifyRoutes(repoRoot) {
231
+ const routes = [];
232
+ const gaps = [];
233
+
234
+ const entryPoints = [
235
+ 'src/server.ts', 'src/server.js', 'src/index.ts', 'src/index.js',
236
+ 'server.ts', 'server.js', 'apps/api/src/server.ts', 'apps/api/src/index.ts',
237
+ ];
238
+
239
+ const fastifyMethods = ['get', 'post', 'put', 'patch', 'delete', 'options', 'head', 'all'];
240
+
241
+ // Find source files
242
+ const srcDirs = ['src', 'apps/api/src', 'server'];
243
+ const files = [];
244
+
245
+ for (const srcDir of srcDirs) {
246
+ const fullDir = path.join(repoRoot, srcDir);
247
+ if (fs.existsSync(fullDir)) {
248
+ files.push(...findFiles(fullDir, /\.(ts|js)$/, /\.d\.ts$/));
249
+ }
250
+ }
251
+
252
+ // Patterns to detect routes
253
+ const patterns = [
254
+ // fastify.get('/path', handler)
255
+ /(?:fastify|app|server)\.(get|post|put|patch|delete|options|head|all)\s*\(\s*['"`]([^'"`]+)['"`]/gi,
256
+ // router.get('/path', handler)
257
+ /router\.(get|post|put|patch|delete|options|head|all)\s*\(\s*['"`]([^'"`]+)['"`]/gi,
258
+ // .route({ method: 'GET', url: '/path' })
259
+ /\.route\s*\(\s*\{[^}]*method:\s*['"`]([^'"`]+)['"`][^}]*url:\s*['"`]([^'"`]+)['"`]/gi,
260
+ /\.route\s*\(\s*\{[^}]*url:\s*['"`]([^'"`]+)['"`][^}]*method:\s*['"`]([^'"`]+)['"`]/gi,
261
+ ];
262
+
263
+ // Track prefixes from register calls
264
+ const prefixMap = new Map(); // file → prefix
265
+
266
+ for (const file of files) {
267
+ try {
268
+ const code = fs.readFileSync(file, 'utf8');
269
+ const relPath = path.relative(repoRoot, file).replace(/\\/g, '/');
270
+ const lines = code.split('\n');
271
+
272
+ // Detect prefix from register calls
273
+ const registerPattern = /\.register\s*\([^,]+,\s*\{[^}]*prefix:\s*['"`]([^'"`]+)['"`]/g;
274
+ let match;
275
+ while ((match = registerPattern.exec(code)) !== null) {
276
+ prefixMap.set(relPath, match[1]);
277
+ }
278
+
279
+ // Extract routes
280
+ for (const pattern of patterns) {
281
+ pattern.lastIndex = 0;
282
+ while ((match = pattern.exec(code)) !== null) {
283
+ let method, routePath;
284
+
285
+ if (match[0].includes('.route')) {
286
+ // Handle .route() pattern - order varies
287
+ if (match[0].indexOf('method') < match[0].indexOf('url')) {
288
+ method = match[1];
289
+ routePath = match[2];
290
+ } else {
291
+ routePath = match[1];
292
+ method = match[2];
293
+ }
294
+ } else {
295
+ method = match[1];
296
+ routePath = match[2];
297
+ }
298
+
299
+ const prefix = prefixMap.get(relPath) || '';
300
+ const fullPath = joinPrefix(prefix, routePath);
301
+ const lineNum = code.substring(0, match.index).split('\n').length;
302
+ const snippet = lines[lineNum - 1] || '';
303
+
304
+ routes.push({
305
+ method: canonicalizeMethod(method),
306
+ path: fullPath,
307
+ handler: `${relPath}:${lineNum}`,
308
+ framework: 'fastify',
309
+ confidence: 'med',
310
+ evidence: [createEvidence(relPath, String(lineNum), `fastify.${method}('${routePath}')`, snippet)],
311
+ });
312
+ }
313
+ }
314
+ } catch {}
315
+ }
316
+
317
+ return { routes, gaps };
318
+ }
319
+
320
+ // ============================================================================
321
+ // ROUTE INDEX
322
+ // ============================================================================
323
+
324
+ export class RouteIndex {
325
+ constructor() {
326
+ this.routes = [];
327
+ this.byMethod = new Map();
328
+ this.byPath = new Map();
329
+ this.parameterized = [];
330
+ this.gaps = [];
331
+ }
332
+
333
+ async build(repoRoot) {
334
+ // Resolve Next.js routes
335
+ const nextRoutes = await resolveNextRoutes(repoRoot);
336
+ this.routes.push(...nextRoutes);
337
+
338
+ // Resolve Fastify routes
339
+ const { routes: fastifyRoutes, gaps } = await resolveFastifyRoutes(repoRoot);
340
+ this.routes.push(...fastifyRoutes);
341
+ this.gaps.push(...gaps);
342
+
343
+ // Build indexes
344
+ for (const route of this.routes) {
345
+ const methodKey = route.method;
346
+ if (!this.byMethod.has(methodKey)) this.byMethod.set(methodKey, []);
347
+ this.byMethod.get(methodKey).push(route);
348
+
349
+ const pathKey = route.path;
350
+ if (!this.byPath.has(pathKey)) this.byPath.set(pathKey, []);
351
+ this.byPath.get(pathKey).push(route);
352
+
353
+ if (isParameterizedPath(route.path)) {
354
+ this.parameterized.push(route);
355
+ }
356
+ }
357
+
358
+ return this;
359
+ }
360
+
361
+ findRoutes(method, path) {
362
+ const canonicalMethod = canonicalizeMethod(method);
363
+ const canonicalPath = canonicalizePath(path);
364
+ const matches = [];
365
+
366
+ // Exact path match
367
+ const pathMatches = this.byPath.get(canonicalPath) || [];
368
+ for (const route of pathMatches) {
369
+ if (matchMethod(route.method, canonicalMethod)) {
370
+ matches.push(route);
371
+ }
372
+ }
373
+
374
+ // Wildcard method match
375
+ const wildcardMethods = this.byMethod.get('*') || [];
376
+ for (const route of wildcardMethods) {
377
+ if (route.path === canonicalPath && !matches.includes(route)) {
378
+ matches.push(route);
379
+ }
380
+ }
381
+
382
+ // Parameterized route match
383
+ for (const route of this.parameterized) {
384
+ if (matchPath(route.path, canonicalPath) && matchMethod(route.method, canonicalMethod)) {
385
+ if (!matches.includes(route)) matches.push(route);
386
+ }
387
+ }
388
+
389
+ return matches;
390
+ }
391
+
392
+ findClosestRoutes(path, limit = 3) {
393
+ const canonicalPath = canonicalizePath(path);
394
+ const pathParts = canonicalPath.split('/').filter(Boolean);
395
+
396
+ const scored = this.routes.map(route => {
397
+ const routeParts = route.path.split('/').filter(Boolean);
398
+ let score = 0;
399
+
400
+ for (let i = 0; i < Math.min(pathParts.length, routeParts.length); i++) {
401
+ if (pathParts[i] === routeParts[i] || routeParts[i].startsWith(':')) {
402
+ score++;
403
+ } else break;
404
+ }
405
+
406
+ if (pathParts.length === routeParts.length) score += 0.5;
407
+ return { route, score };
408
+ });
409
+
410
+ return scored.sort((a, b) => b.score - a.score).slice(0, limit).map(s => s.route);
411
+ }
412
+
413
+ getRouteMap() {
414
+ return {
415
+ server: this.routes,
416
+ clientRefs: [],
417
+ gaps: this.gaps,
418
+ generatedAt: new Date().toISOString(),
419
+ };
420
+ }
421
+ }
422
+
423
+ // ============================================================================
424
+ // VALIDATE CLAIM
425
+ // ============================================================================
426
+
427
+ export async function validateRouteExists(claim, repoRoot, routeIndex) {
428
+ const index = routeIndex || new RouteIndex();
429
+ if (!routeIndex) await index.build(repoRoot);
430
+
431
+ const method = claim.method || '*';
432
+ const routePath = claim.path;
433
+
434
+ const matches = index.findRoutes(method, routePath);
435
+
436
+ if (matches.length > 0) {
437
+ return {
438
+ result: 'true',
439
+ confidence: matches[0].confidence,
440
+ evidence: matches[0].evidence,
441
+ matchedRoute: matches[0],
442
+ };
443
+ }
444
+
445
+ const closest = index.findClosestRoutes(routePath);
446
+ const hasGaps = index.gaps.length > 0;
447
+
448
+ if (hasGaps) {
449
+ return {
450
+ result: 'unknown',
451
+ confidence: 'low',
452
+ evidence: [],
453
+ closestRoutes: closest,
454
+ gaps: index.gaps,
455
+ nextSteps: ['Some routes may not be detected due to unresolved plugins'],
456
+ };
457
+ }
458
+
459
+ return {
460
+ result: 'false',
461
+ confidence: 'high',
462
+ evidence: [],
463
+ closestRoutes: closest,
464
+ nextSteps: closest.length > 0
465
+ ? [`Did you mean: ${closest.map(r => `${r.method} ${r.path}`).join(', ')}?`]
466
+ : ['No similar routes found'],
467
+ };
468
+ }
469
+
470
+ export default {
471
+ canonicalizePath,
472
+ canonicalizeMethod,
473
+ resolveNextRoutes,
474
+ resolveFastifyRoutes,
475
+ RouteIndex,
476
+ validateRouteExists,
477
+ };
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Sandbox Module Index
3
+ * Exports all sandbox functionality
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const {
9
+ isGitRepo,
10
+ isGitClean,
11
+ getCurrentCommit,
12
+ createWorktree,
13
+ removeWorktree,
14
+ copyChangesBack,
15
+ runInSandbox,
16
+ getChangedFiles,
17
+ sandboxId
18
+ } = require("./worktree");
19
+
20
+ const {
21
+ runProofChain,
22
+ runStaticProof,
23
+ runBuildProof,
24
+ runRealityProof,
25
+ PROOF_LEVELS
26
+ } = require("./proof-chain");
27
+
28
+ const {
29
+ runPatchInSandbox,
30
+ sandboxApplyEdits,
31
+ applyDiffInSandbox,
32
+ writeProofResult
33
+ } = require("./sandbox-runner");
34
+
35
+ module.exports = {
36
+ // Worktree management
37
+ isGitRepo,
38
+ isGitClean,
39
+ getCurrentCommit,
40
+ createWorktree,
41
+ removeWorktree,
42
+ copyChangesBack,
43
+ runInSandbox,
44
+ getChangedFiles,
45
+ sandboxId,
46
+
47
+ // Proof chain
48
+ runProofChain,
49
+ runStaticProof,
50
+ runBuildProof,
51
+ runRealityProof,
52
+ PROOF_LEVELS,
53
+
54
+ // Sandbox runner
55
+ runPatchInSandbox,
56
+ sandboxApplyEdits,
57
+ applyDiffInSandbox,
58
+ writeProofResult
59
+ };