@vibecheckai/cli 2.5.1

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 (415) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +532 -0
  3. package/dist/autopatch/verified-autopatch.d.ts +111 -0
  4. package/dist/autopatch/verified-autopatch.d.ts.map +1 -0
  5. package/dist/autopatch/verified-autopatch.js +503 -0
  6. package/dist/autopatch/verified-autopatch.js.map +1 -0
  7. package/dist/bundles/guardrail-core.js +25799 -0
  8. package/dist/bundles/guardrail-security.js +208687 -0
  9. package/dist/bundles/guardrail-ship.js +2318 -0
  10. package/dist/bundles/index.js +8 -0
  11. package/dist/commands/autopilot-decision.d.ts +24 -0
  12. package/dist/commands/autopilot-decision.d.ts.map +1 -0
  13. package/dist/commands/autopilot-decision.js +304 -0
  14. package/dist/commands/autopilot-decision.js.map +1 -0
  15. package/dist/commands/autopilot.d.ts +33 -0
  16. package/dist/commands/autopilot.d.ts.map +1 -0
  17. package/dist/commands/autopilot.js +1539 -0
  18. package/dist/commands/autopilot.js.map +1 -0
  19. package/dist/commands/baseline.d.ts +7 -0
  20. package/dist/commands/baseline.d.ts.map +1 -0
  21. package/dist/commands/baseline.js +79 -0
  22. package/dist/commands/baseline.js.map +1 -0
  23. package/dist/commands/cache.d.ts +13 -0
  24. package/dist/commands/cache.d.ts.map +1 -0
  25. package/dist/commands/cache.js +165 -0
  26. package/dist/commands/cache.js.map +1 -0
  27. package/dist/commands/checkpoint.d.ts +8 -0
  28. package/dist/commands/checkpoint.d.ts.map +1 -0
  29. package/dist/commands/checkpoint.js +35 -0
  30. package/dist/commands/checkpoint.js.map +1 -0
  31. package/dist/commands/context.d.ts +8 -0
  32. package/dist/commands/context.d.ts.map +1 -0
  33. package/dist/commands/context.js +340 -0
  34. package/dist/commands/context.js.map +1 -0
  35. package/dist/commands/debug.d.ts +78 -0
  36. package/dist/commands/debug.d.ts.map +1 -0
  37. package/dist/commands/debug.js +381 -0
  38. package/dist/commands/debug.js.map +1 -0
  39. package/dist/commands/doctor.d.ts +17 -0
  40. package/dist/commands/doctor.d.ts.map +1 -0
  41. package/dist/commands/doctor.js +226 -0
  42. package/dist/commands/doctor.js.map +1 -0
  43. package/dist/commands/evidence.d.ts +45 -0
  44. package/dist/commands/evidence.d.ts.map +1 -0
  45. package/dist/commands/evidence.js +197 -0
  46. package/dist/commands/evidence.js.map +1 -0
  47. package/dist/commands/explain.d.ts +8 -0
  48. package/dist/commands/explain.d.ts.map +1 -0
  49. package/dist/commands/explain.js +52 -0
  50. package/dist/commands/explain.js.map +1 -0
  51. package/dist/commands/fix-consolidated.d.ts +19 -0
  52. package/dist/commands/fix-consolidated.d.ts.map +1 -0
  53. package/dist/commands/fix-consolidated.js +165 -0
  54. package/dist/commands/fix-consolidated.js.map +1 -0
  55. package/dist/commands/index.d.ts +8 -0
  56. package/dist/commands/index.d.ts.map +1 -0
  57. package/dist/commands/index.js +15 -0
  58. package/dist/commands/index.js.map +1 -0
  59. package/dist/commands/init.d.ts +8 -0
  60. package/dist/commands/init.d.ts.map +1 -0
  61. package/dist/commands/init.js +125 -0
  62. package/dist/commands/init.js.map +1 -0
  63. package/dist/commands/launcher.d.ts +10 -0
  64. package/dist/commands/launcher.d.ts.map +1 -0
  65. package/dist/commands/launcher.js +174 -0
  66. package/dist/commands/launcher.js.map +1 -0
  67. package/dist/commands/on.d.ts +8 -0
  68. package/dist/commands/on.d.ts.map +1 -0
  69. package/dist/commands/on.js +123 -0
  70. package/dist/commands/on.js.map +1 -0
  71. package/dist/commands/preview.d.ts +54 -0
  72. package/dist/commands/preview.d.ts.map +1 -0
  73. package/dist/commands/preview.js +352 -0
  74. package/dist/commands/preview.js.map +1 -0
  75. package/dist/commands/quality/check.d.ts +31 -0
  76. package/dist/commands/quality/check.d.ts.map +1 -0
  77. package/dist/commands/quality/check.js +242 -0
  78. package/dist/commands/quality/check.js.map +1 -0
  79. package/dist/commands/quality/index.d.ts +8 -0
  80. package/dist/commands/quality/index.d.ts.map +1 -0
  81. package/dist/commands/quality/index.js +14 -0
  82. package/dist/commands/quality/index.js.map +1 -0
  83. package/dist/commands/quality/setup-quality.d.ts +23 -0
  84. package/dist/commands/quality/setup-quality.d.ts.map +1 -0
  85. package/dist/commands/quality/setup-quality.js +452 -0
  86. package/dist/commands/quality/setup-quality.js.map +1 -0
  87. package/dist/commands/quality/tidy.d.ts +41 -0
  88. package/dist/commands/quality/tidy.d.ts.map +1 -0
  89. package/dist/commands/quality/tidy.js +466 -0
  90. package/dist/commands/quality/tidy.js.map +1 -0
  91. package/dist/commands/quality/utils.d.ts +73 -0
  92. package/dist/commands/quality/utils.d.ts.map +1 -0
  93. package/dist/commands/quality/utils.js +158 -0
  94. package/dist/commands/quality/utils.js.map +1 -0
  95. package/dist/commands/replay.d.ts +8 -0
  96. package/dist/commands/replay.d.ts.map +1 -0
  97. package/dist/commands/replay.js +52 -0
  98. package/dist/commands/replay.js.map +1 -0
  99. package/dist/commands/scan-consolidated.d.ts +61 -0
  100. package/dist/commands/scan-consolidated.d.ts.map +1 -0
  101. package/dist/commands/scan-consolidated.js +243 -0
  102. package/dist/commands/scan-consolidated.js.map +1 -0
  103. package/dist/commands/scan-secrets.d.ts +47 -0
  104. package/dist/commands/scan-secrets.d.ts.map +1 -0
  105. package/dist/commands/scan-secrets.js +225 -0
  106. package/dist/commands/scan-secrets.js.map +1 -0
  107. package/dist/commands/scan-vulnerabilities-enhanced.d.ts +41 -0
  108. package/dist/commands/scan-vulnerabilities-enhanced.d.ts.map +1 -0
  109. package/dist/commands/scan-vulnerabilities-enhanced.js +368 -0
  110. package/dist/commands/scan-vulnerabilities-enhanced.js.map +1 -0
  111. package/dist/commands/scan-vulnerabilities-osv.d.ts +58 -0
  112. package/dist/commands/scan-vulnerabilities-osv.d.ts.map +1 -0
  113. package/dist/commands/scan-vulnerabilities-osv.js +716 -0
  114. package/dist/commands/scan-vulnerabilities-osv.js.map +1 -0
  115. package/dist/commands/scan-vulnerabilities.d.ts +32 -0
  116. package/dist/commands/scan-vulnerabilities.d.ts.map +1 -0
  117. package/dist/commands/scan-vulnerabilities.js +283 -0
  118. package/dist/commands/scan-vulnerabilities.js.map +1 -0
  119. package/dist/commands/secrets-allowlist.d.ts +7 -0
  120. package/dist/commands/secrets-allowlist.d.ts.map +1 -0
  121. package/dist/commands/secrets-allowlist.js +85 -0
  122. package/dist/commands/secrets-allowlist.js.map +1 -0
  123. package/dist/commands/ship-consolidated.d.ts +58 -0
  124. package/dist/commands/ship-consolidated.d.ts.map +1 -0
  125. package/dist/commands/ship-consolidated.js +515 -0
  126. package/dist/commands/ship-consolidated.js.map +1 -0
  127. package/dist/commands/stats.d.ts +8 -0
  128. package/dist/commands/stats.d.ts.map +1 -0
  129. package/dist/commands/stats.js +134 -0
  130. package/dist/commands/stats.js.map +1 -0
  131. package/dist/commands/upgrade.d.ts +8 -0
  132. package/dist/commands/upgrade.d.ts.map +1 -0
  133. package/dist/commands/upgrade.js +30 -0
  134. package/dist/commands/upgrade.js.map +1 -0
  135. package/dist/fix/analytics.d.ts +121 -0
  136. package/dist/fix/analytics.d.ts.map +1 -0
  137. package/dist/fix/analytics.js +289 -0
  138. package/dist/fix/analytics.js.map +1 -0
  139. package/dist/fix/applicator.d.ts +44 -0
  140. package/dist/fix/applicator.d.ts.map +1 -0
  141. package/dist/fix/applicator.js +144 -0
  142. package/dist/fix/applicator.js.map +1 -0
  143. package/dist/fix/audit.d.ts +61 -0
  144. package/dist/fix/audit.d.ts.map +1 -0
  145. package/dist/fix/audit.js +149 -0
  146. package/dist/fix/audit.js.map +1 -0
  147. package/dist/fix/backup.d.ts +38 -0
  148. package/dist/fix/backup.d.ts.map +1 -0
  149. package/dist/fix/backup.js +154 -0
  150. package/dist/fix/backup.js.map +1 -0
  151. package/dist/fix/config.d.ts +78 -0
  152. package/dist/fix/config.d.ts.map +1 -0
  153. package/dist/fix/config.js +200 -0
  154. package/dist/fix/config.js.map +1 -0
  155. package/dist/fix/engine.d.ts +55 -0
  156. package/dist/fix/engine.d.ts.map +1 -0
  157. package/dist/fix/engine.js +285 -0
  158. package/dist/fix/engine.js.map +1 -0
  159. package/dist/fix/impact.d.ts +74 -0
  160. package/dist/fix/impact.d.ts.map +1 -0
  161. package/dist/fix/impact.js +281 -0
  162. package/dist/fix/impact.js.map +1 -0
  163. package/dist/fix/index.d.ts +5 -0
  164. package/dist/fix/index.d.ts.map +1 -0
  165. package/dist/fix/index.js +12 -0
  166. package/dist/fix/index.js.map +1 -0
  167. package/dist/fix/interactive.d.ts +22 -0
  168. package/dist/fix/interactive.d.ts.map +1 -0
  169. package/dist/fix/interactive.js +172 -0
  170. package/dist/fix/interactive.js.map +1 -0
  171. package/dist/fix/learning.d.ts +109 -0
  172. package/dist/fix/learning.d.ts.map +1 -0
  173. package/dist/fix/learning.js +296 -0
  174. package/dist/fix/learning.js.map +1 -0
  175. package/dist/fix/metrics.d.ts +106 -0
  176. package/dist/fix/metrics.d.ts.map +1 -0
  177. package/dist/fix/metrics.js +138 -0
  178. package/dist/fix/metrics.js.map +1 -0
  179. package/dist/fix/parallel.d.ts +69 -0
  180. package/dist/fix/parallel.d.ts.map +1 -0
  181. package/dist/fix/parallel.js +203 -0
  182. package/dist/fix/parallel.js.map +1 -0
  183. package/dist/fix/report.d.ts +40 -0
  184. package/dist/fix/report.d.ts.map +1 -0
  185. package/dist/fix/report.js +212 -0
  186. package/dist/fix/report.js.map +1 -0
  187. package/dist/fix/strategy.d.ts +53 -0
  188. package/dist/fix/strategy.d.ts.map +1 -0
  189. package/dist/fix/strategy.js +143 -0
  190. package/dist/fix/strategy.js.map +1 -0
  191. package/dist/fix/templates.d.ts +58 -0
  192. package/dist/fix/templates.d.ts.map +1 -0
  193. package/dist/fix/templates.js +259 -0
  194. package/dist/fix/templates.js.map +1 -0
  195. package/dist/fix/testing.d.ts +68 -0
  196. package/dist/fix/testing.d.ts.map +1 -0
  197. package/dist/fix/testing.js +245 -0
  198. package/dist/fix/testing.js.map +1 -0
  199. package/dist/fix/validation.d.ts +71 -0
  200. package/dist/fix/validation.d.ts.map +1 -0
  201. package/dist/fix/validation.js +267 -0
  202. package/dist/fix/validation.js.map +1 -0
  203. package/dist/fix/visualization.d.ts +73 -0
  204. package/dist/fix/visualization.d.ts.map +1 -0
  205. package/dist/fix/visualization.js +243 -0
  206. package/dist/fix/visualization.js.map +1 -0
  207. package/dist/formatters/index.d.ts +6 -0
  208. package/dist/formatters/index.d.ts.map +1 -0
  209. package/dist/formatters/index.js +11 -0
  210. package/dist/formatters/index.js.map +1 -0
  211. package/dist/formatters/sarif-enhanced.d.ts +78 -0
  212. package/dist/formatters/sarif-enhanced.d.ts.map +1 -0
  213. package/dist/formatters/sarif-enhanced.js +144 -0
  214. package/dist/formatters/sarif-enhanced.js.map +1 -0
  215. package/dist/formatters/sarif-v2.d.ts +121 -0
  216. package/dist/formatters/sarif-v2.d.ts.map +1 -0
  217. package/dist/formatters/sarif-v2.js +356 -0
  218. package/dist/formatters/sarif-v2.js.map +1 -0
  219. package/dist/formatters/sarif.d.ts +72 -0
  220. package/dist/formatters/sarif.d.ts.map +1 -0
  221. package/dist/formatters/sarif.js +146 -0
  222. package/dist/formatters/sarif.js.map +1 -0
  223. package/dist/index.d.ts +61 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +4455 -0
  226. package/dist/index.js.map +1 -0
  227. package/dist/init/ci-generator.d.ts +18 -0
  228. package/dist/init/ci-generator.d.ts.map +1 -0
  229. package/dist/init/ci-generator.js +317 -0
  230. package/dist/init/ci-generator.js.map +1 -0
  231. package/dist/init/detect-framework.d.ts +15 -0
  232. package/dist/init/detect-framework.d.ts.map +1 -0
  233. package/dist/init/detect-framework.js +301 -0
  234. package/dist/init/detect-framework.js.map +1 -0
  235. package/dist/init/hooks-installer.d.ts +22 -0
  236. package/dist/init/hooks-installer.d.ts.map +1 -0
  237. package/dist/init/hooks-installer.js +310 -0
  238. package/dist/init/hooks-installer.js.map +1 -0
  239. package/dist/init/index.d.ts +8 -0
  240. package/dist/init/index.d.ts.map +1 -0
  241. package/dist/init/index.js +22 -0
  242. package/dist/init/index.js.map +1 -0
  243. package/dist/init/templates.d.ts +401 -0
  244. package/dist/init/templates.d.ts.map +1 -0
  245. package/dist/init/templates.js +240 -0
  246. package/dist/init/templates.js.map +1 -0
  247. package/dist/mcp/server.d.ts +12 -0
  248. package/dist/mcp/server.d.ts.map +1 -0
  249. package/dist/mcp/server.js +42 -0
  250. package/dist/mcp/server.js.map +1 -0
  251. package/dist/mcp/telemetry.d.ts +40 -0
  252. package/dist/mcp/telemetry.d.ts.map +1 -0
  253. package/dist/mcp/telemetry.js +98 -0
  254. package/dist/mcp/telemetry.js.map +1 -0
  255. package/dist/reality/no-dead-buttons/button-sweep-generator.d.ts +32 -0
  256. package/dist/reality/no-dead-buttons/button-sweep-generator.d.ts.map +1 -0
  257. package/dist/reality/no-dead-buttons/button-sweep-generator.js +236 -0
  258. package/dist/reality/no-dead-buttons/button-sweep-generator.js.map +1 -0
  259. package/dist/reality/no-dead-buttons/index.d.ts +11 -0
  260. package/dist/reality/no-dead-buttons/index.d.ts.map +1 -0
  261. package/dist/reality/no-dead-buttons/index.js +18 -0
  262. package/dist/reality/no-dead-buttons/index.js.map +1 -0
  263. package/dist/reality/no-dead-buttons/static-scanner.d.ts +34 -0
  264. package/dist/reality/no-dead-buttons/static-scanner.d.ts.map +1 -0
  265. package/dist/reality/no-dead-buttons/static-scanner.js +230 -0
  266. package/dist/reality/no-dead-buttons/static-scanner.js.map +1 -0
  267. package/dist/reality/reality-graph.d.ts +192 -0
  268. package/dist/reality/reality-graph.d.ts.map +1 -0
  269. package/dist/reality/reality-graph.js +600 -0
  270. package/dist/reality/reality-graph.js.map +1 -0
  271. package/dist/reality/reality-runner.d.ts +89 -0
  272. package/dist/reality/reality-runner.d.ts.map +1 -0
  273. package/dist/reality/reality-runner.js +540 -0
  274. package/dist/reality/reality-runner.js.map +1 -0
  275. package/dist/reality/receipt-generator.d.ts +152 -0
  276. package/dist/reality/receipt-generator.d.ts.map +1 -0
  277. package/dist/reality/receipt-generator.js +495 -0
  278. package/dist/reality/receipt-generator.js.map +1 -0
  279. package/dist/reality/runtime-tracer.d.ts +75 -0
  280. package/dist/reality/runtime-tracer.d.ts.map +1 -0
  281. package/dist/reality/runtime-tracer.js +109 -0
  282. package/dist/reality/runtime-tracer.js.map +1 -0
  283. package/dist/runtime/auth-utils.d.ts +43 -0
  284. package/dist/runtime/auth-utils.d.ts.map +1 -0
  285. package/dist/runtime/auth-utils.js +130 -0
  286. package/dist/runtime/auth-utils.js.map +1 -0
  287. package/dist/runtime/cli-errors.d.ts +38 -0
  288. package/dist/runtime/cli-errors.d.ts.map +1 -0
  289. package/dist/runtime/cli-errors.js +354 -0
  290. package/dist/runtime/cli-errors.js.map +1 -0
  291. package/dist/runtime/client.d.ts +74 -0
  292. package/dist/runtime/client.d.ts.map +1 -0
  293. package/dist/runtime/client.js +222 -0
  294. package/dist/runtime/client.js.map +1 -0
  295. package/dist/runtime/creds.d.ts +48 -0
  296. package/dist/runtime/creds.d.ts.map +1 -0
  297. package/dist/runtime/creds.js +245 -0
  298. package/dist/runtime/creds.js.map +1 -0
  299. package/dist/runtime/exit-codes.d.ts +49 -0
  300. package/dist/runtime/exit-codes.d.ts.map +1 -0
  301. package/dist/runtime/exit-codes.js +93 -0
  302. package/dist/runtime/exit-codes.js.map +1 -0
  303. package/dist/runtime/index.d.ts +9 -0
  304. package/dist/runtime/index.d.ts.map +1 -0
  305. package/dist/runtime/index.js +25 -0
  306. package/dist/runtime/index.js.map +1 -0
  307. package/dist/runtime/json-output.d.ts +42 -0
  308. package/dist/runtime/json-output.d.ts.map +1 -0
  309. package/dist/runtime/json-output.js +59 -0
  310. package/dist/runtime/json-output.js.map +1 -0
  311. package/dist/runtime/owner-mode.d.ts +48 -0
  312. package/dist/runtime/owner-mode.d.ts.map +1 -0
  313. package/dist/runtime/owner-mode.js +284 -0
  314. package/dist/runtime/owner-mode.js.map +1 -0
  315. package/dist/runtime/semver.d.ts +37 -0
  316. package/dist/runtime/semver.d.ts.map +1 -0
  317. package/dist/runtime/semver.js +110 -0
  318. package/dist/runtime/semver.js.map +1 -0
  319. package/dist/scan/dead-ui-detector.d.ts +48 -0
  320. package/dist/scan/dead-ui-detector.d.ts.map +1 -0
  321. package/dist/scan/dead-ui-detector.js +170 -0
  322. package/dist/scan/dead-ui-detector.js.map +1 -0
  323. package/dist/scan/playwright-sweep.d.ts +40 -0
  324. package/dist/scan/playwright-sweep.d.ts.map +1 -0
  325. package/dist/scan/playwright-sweep.js +216 -0
  326. package/dist/scan/playwright-sweep.js.map +1 -0
  327. package/dist/scan/proof-bundle.d.ts +25 -0
  328. package/dist/scan/proof-bundle.d.ts.map +1 -0
  329. package/dist/scan/proof-bundle.js +203 -0
  330. package/dist/scan/proof-bundle.js.map +1 -0
  331. package/dist/scan/proof-graph.d.ts +59 -0
  332. package/dist/scan/proof-graph.d.ts.map +1 -0
  333. package/dist/scan/proof-graph.js +64 -0
  334. package/dist/scan/proof-graph.js.map +1 -0
  335. package/dist/scan/reality-sniff.d.ts +56 -0
  336. package/dist/scan/reality-sniff.d.ts.map +1 -0
  337. package/dist/scan/reality-sniff.js +200 -0
  338. package/dist/scan/reality-sniff.js.map +1 -0
  339. package/dist/scan/structural-verifier.d.ts +20 -0
  340. package/dist/scan/structural-verifier.d.ts.map +1 -0
  341. package/dist/scan/structural-verifier.js +112 -0
  342. package/dist/scan/structural-verifier.js.map +1 -0
  343. package/dist/scan/verification-engine.d.ts +47 -0
  344. package/dist/scan/verification-engine.d.ts.map +1 -0
  345. package/dist/scan/verification-engine.js +141 -0
  346. package/dist/scan/verification-engine.js.map +1 -0
  347. package/dist/scanner/baseline.d.ts +52 -0
  348. package/dist/scanner/baseline.d.ts.map +1 -0
  349. package/dist/scanner/baseline.js +85 -0
  350. package/dist/scanner/baseline.js.map +1 -0
  351. package/dist/scanner/incremental.d.ts +30 -0
  352. package/dist/scanner/incremental.d.ts.map +1 -0
  353. package/dist/scanner/incremental.js +82 -0
  354. package/dist/scanner/incremental.js.map +1 -0
  355. package/dist/scanner/index.d.ts +8 -0
  356. package/dist/scanner/index.d.ts.map +1 -0
  357. package/dist/scanner/index.js +15 -0
  358. package/dist/scanner/index.js.map +1 -0
  359. package/dist/scanner/parallel.d.ts +43 -0
  360. package/dist/scanner/parallel.d.ts.map +1 -0
  361. package/dist/scanner/parallel.js +99 -0
  362. package/dist/scanner/parallel.js.map +1 -0
  363. package/dist/scanner/placeholder-detector.d.ts +56 -0
  364. package/dist/scanner/placeholder-detector.d.ts.map +1 -0
  365. package/dist/scanner/placeholder-detector.js +220 -0
  366. package/dist/scanner/placeholder-detector.js.map +1 -0
  367. package/dist/scanner/route-detector.d.ts +100 -0
  368. package/dist/scanner/route-detector.d.ts.map +1 -0
  369. package/dist/scanner/route-detector.js +455 -0
  370. package/dist/scanner/route-detector.js.map +1 -0
  371. package/dist/scanner/scoring.d.ts +67 -0
  372. package/dist/scanner/scoring.d.ts.map +1 -0
  373. package/dist/scanner/scoring.js +284 -0
  374. package/dist/scanner/scoring.js.map +1 -0
  375. package/dist/ship-baseline.d.ts +56 -0
  376. package/dist/ship-baseline.d.ts.map +1 -0
  377. package/dist/ship-baseline.js +194 -0
  378. package/dist/ship-baseline.js.map +1 -0
  379. package/dist/ship-config.d.ts +91 -0
  380. package/dist/ship-config.d.ts.map +1 -0
  381. package/dist/ship-config.js +133 -0
  382. package/dist/ship-config.js.map +1 -0
  383. package/dist/ship-data-loader.d.ts +70 -0
  384. package/dist/ship-data-loader.d.ts.map +1 -0
  385. package/dist/ship-data-loader.js +301 -0
  386. package/dist/ship-data-loader.js.map +1 -0
  387. package/dist/standalone.d.ts +1 -0
  388. package/dist/standalone.d.ts.map +1 -0
  389. package/dist/standalone.js +1 -0
  390. package/dist/standalone.js.map +1 -0
  391. package/dist/truth-pack/index.d.ts +102 -0
  392. package/dist/truth-pack/index.d.ts.map +1 -0
  393. package/dist/truth-pack/index.js +694 -0
  394. package/dist/truth-pack/index.js.map +1 -0
  395. package/dist/ui/frame.d.ts +68 -0
  396. package/dist/ui/frame.d.ts.map +1 -0
  397. package/dist/ui/frame.js +165 -0
  398. package/dist/ui/frame.js.map +1 -0
  399. package/dist/ui/index.d.ts +5 -0
  400. package/dist/ui/index.d.ts.map +1 -0
  401. package/dist/ui/index.js +16 -0
  402. package/dist/ui/index.js.map +1 -0
  403. package/dist/ui.d.ts +36 -0
  404. package/dist/ui.d.ts.map +1 -0
  405. package/dist/ui.js +45 -0
  406. package/dist/ui.js.map +1 -0
  407. package/dist/utils/ai-helpers.d.ts +72 -0
  408. package/dist/utils/ai-helpers.d.ts.map +1 -0
  409. package/dist/utils/ai-helpers.js +339 -0
  410. package/dist/utils/ai-helpers.js.map +1 -0
  411. package/dist/utils/validation.d.ts +34 -0
  412. package/dist/utils/validation.d.ts.map +1 -0
  413. package/dist/utils/validation.js +160 -0
  414. package/dist/utils/validation.js.map +1 -0
  415. package/package.json +66 -0
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Parallel scanning orchestrator with multi-stage progress
3
+ */
4
+ import { ScanSecretsResult } from '../commands/scan-secrets';
5
+ import { ScanVulnResult } from '../commands/scan-vulnerabilities';
6
+ export interface ParallelScanOptions {
7
+ path: string;
8
+ type: 'all' | 'secrets' | 'vulnerabilities' | 'compliance';
9
+ format: 'table' | 'json' | 'sarif' | 'markdown';
10
+ output?: string;
11
+ excludeTests?: boolean;
12
+ minConfidence?: number;
13
+ failOnDetection?: boolean;
14
+ failOnCritical?: boolean;
15
+ failOnHigh?: boolean;
16
+ evidence?: boolean;
17
+ complianceFramework?: string;
18
+ since?: string;
19
+ baseline?: string;
20
+ }
21
+ export interface ParallelScanResult {
22
+ secrets?: ScanSecretsResult;
23
+ vulnerabilities?: ScanVulnResult;
24
+ compliance?: any;
25
+ duration: number;
26
+ timestamp: string;
27
+ }
28
+ interface ScanProgress {
29
+ stage: string;
30
+ message: string;
31
+ completed: boolean;
32
+ }
33
+ export declare class ParallelScanner {
34
+ private progressCallbacks;
35
+ onProgress(module: string, callback: (progress: ScanProgress) => void): void;
36
+ private updateProgress;
37
+ scan(projectPath: string, options: ParallelScanOptions): Promise<ParallelScanResult>;
38
+ private runSecretsScanner;
39
+ private runVulnerabilitiesScanner;
40
+ private runComplianceScanner;
41
+ }
42
+ export {};
43
+ //# sourceMappingURL=parallel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel.d.ts","sourceRoot":"","sources":["../../src/scanner/parallel.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAe,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAuB,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,iBAAiB,GAAG,YAAY,CAAC;IAC3D,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,iBAAiB,CAA4D;IAErF,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IAI5E,OAAO,CAAC,cAAc;IAOhB,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YA0C5E,iBAAiB;YAkBjB,yBAAyB;YAgBzB,oBAAoB;CAoBnC"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ /**
3
+ * Parallel scanning orchestrator with multi-stage progress
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ParallelScanner = void 0;
7
+ const scan_secrets_1 = require("../commands/scan-secrets");
8
+ const scan_vulnerabilities_1 = require("../commands/scan-vulnerabilities");
9
+ class ParallelScanner {
10
+ constructor() {
11
+ this.progressCallbacks = new Map();
12
+ }
13
+ onProgress(module, callback) {
14
+ this.progressCallbacks.set(module, callback);
15
+ }
16
+ updateProgress(module, stage, message, completed = false) {
17
+ const callback = this.progressCallbacks.get(module);
18
+ if (callback) {
19
+ callback({ stage, message, completed });
20
+ }
21
+ }
22
+ async scan(projectPath, options) {
23
+ const startTime = Date.now();
24
+ const tasks = [];
25
+ const result = {
26
+ duration: 0,
27
+ timestamp: new Date().toISOString(),
28
+ };
29
+ // Secrets scan
30
+ if (options.type === 'all' || options.type === 'secrets') {
31
+ tasks.push(this.runSecretsScanner(projectPath, options).then(res => {
32
+ result.secrets = res;
33
+ }));
34
+ }
35
+ // Vulnerabilities scan
36
+ if (options.type === 'all' || options.type === 'vulnerabilities') {
37
+ tasks.push(this.runVulnerabilitiesScanner(projectPath, options).then(res => {
38
+ result.vulnerabilities = res;
39
+ }));
40
+ }
41
+ // Compliance scan (if selected)
42
+ if (options.type === 'compliance') {
43
+ tasks.push(this.runComplianceScanner(projectPath, options).then(res => {
44
+ result.compliance = res;
45
+ }));
46
+ }
47
+ // Run all scans in parallel
48
+ await Promise.all(tasks);
49
+ result.duration = Date.now() - startTime;
50
+ return result;
51
+ }
52
+ async runSecretsScanner(projectPath, options) {
53
+ this.updateProgress('secrets', 'init', 'Initializing secret scanner...');
54
+ this.updateProgress('secrets', 'scan', 'Scanning files for secrets...');
55
+ const result = await (0, scan_secrets_1.scanSecrets)(projectPath, {
56
+ path: projectPath,
57
+ format: options.format === 'markdown' ? 'table' : options.format,
58
+ output: options.output,
59
+ excludeTests: options.excludeTests || false,
60
+ minConfidence: options.minConfidence,
61
+ failOnDetection: options.failOnDetection || false,
62
+ evidence: options.evidence || false,
63
+ });
64
+ this.updateProgress('secrets', 'complete', `Found ${result.findings.length} secrets`, true);
65
+ return result;
66
+ }
67
+ async runVulnerabilitiesScanner(projectPath, options) {
68
+ this.updateProgress('vulnerabilities', 'init', 'Initializing vulnerability scanner...');
69
+ this.updateProgress('vulnerabilities', 'scan', 'Analyzing dependencies...');
70
+ const result = await (0, scan_vulnerabilities_1.scanVulnerabilities)(projectPath, {
71
+ format: options.format,
72
+ output: options.output,
73
+ failOnCritical: options.failOnCritical,
74
+ failOnHigh: options.failOnHigh,
75
+ });
76
+ const total = result.summary.critical + result.summary.high + result.summary.medium + result.summary.low;
77
+ this.updateProgress('vulnerabilities', 'complete', `Found ${total} vulnerabilities`, true);
78
+ return result;
79
+ }
80
+ async runComplianceScanner(projectPath, options) {
81
+ this.updateProgress('compliance', 'init', 'Initializing compliance scanner...');
82
+ this.updateProgress('compliance', 'scan', `Running ${options.complianceFramework || 'SOC2'} checks...`);
83
+ // Mock compliance result
84
+ const result = {
85
+ projectPath,
86
+ framework: options.complianceFramework || 'SOC2',
87
+ overallScore: 78,
88
+ categories: [
89
+ { name: 'Access Control', score: 85, status: 'pass', checks: 12, passed: 10 },
90
+ { name: 'Data Encryption', score: 92, status: 'pass', checks: 8, passed: 7 },
91
+ { name: 'Audit Logging', score: 65, status: 'warning', checks: 10, passed: 6 },
92
+ ],
93
+ };
94
+ this.updateProgress('compliance', 'complete', `Score: ${result.overallScore}%`, true);
95
+ return result;
96
+ }
97
+ }
98
+ exports.ParallelScanner = ParallelScanner;
99
+ //# sourceMappingURL=parallel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel.js","sourceRoot":"","sources":["../../src/scanner/parallel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Placeholder Detector with Rule-Tiered Approach
3
+ *
4
+ * Implements sophisticated placeholder detection with multiple confidence levels:
5
+ * - Ignore list (safe): HTML placeholder attributes by default
6
+ * - High-confidence: UI text nodes, mock responses
7
+ * - Medium-confidence: "placeholder" in variable names or comments
8
+ */
9
+ export interface PlaceholderFinding {
10
+ type: 'ui_text' | 'html_attribute' | 'mock_response' | 'comment' | 'variable';
11
+ file: string;
12
+ line: number;
13
+ column?: number;
14
+ match: string;
15
+ confidence: 'high' | 'medium' | 'low';
16
+ snippet?: string;
17
+ }
18
+ export interface PlaceholderDetectorConfig {
19
+ /** Count HTML placeholder attributes (default: false) */
20
+ countInputPlaceholders?: boolean;
21
+ /** Ignore patterns (regex) */
22
+ ignorePatterns?: RegExp[];
23
+ }
24
+ export declare class PlaceholderDetector {
25
+ private config;
26
+ constructor(config?: PlaceholderDetectorConfig);
27
+ /**
28
+ * Detect placeholders in source code
29
+ */
30
+ detectPlaceholders(filePath: string, content: string): Promise<PlaceholderFinding[]>;
31
+ /**
32
+ * High-confidence placeholders: UI text nodes and mock responses
33
+ */
34
+ private detectHighConfidence;
35
+ /**
36
+ * Medium-confidence placeholders: comments and variable names
37
+ */
38
+ private detectMediumConfidence;
39
+ /**
40
+ * Detect HTML placeholder attributes
41
+ */
42
+ private detectHtmlPlaceholderAttributes;
43
+ /**
44
+ * Check if line is an HTML placeholder attribute
45
+ */
46
+ private isHtmlPlaceholderAttribute;
47
+ /**
48
+ * Find all matches in a string with their indices
49
+ */
50
+ private findAllMatches;
51
+ /**
52
+ * Count placeholders by type
53
+ */
54
+ static countByType(findings: PlaceholderFinding[]): Record<string, number>;
55
+ }
56
+ //# sourceMappingURL=placeholder-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placeholder-detector.d.ts","sourceRoot":"","sources":["../../src/scanner/placeholder-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,GAAG,gBAAgB,GAAG,eAAe,GAAG,SAAS,GAAG,UAAU,CAAC;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAsC;gBAExC,MAAM,GAAE,yBAA8B;IAOlD;;OAEG;IACG,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAsDhC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6D5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAuD9B;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAiCvC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAIlC;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,MAAM,CAAC,WAAW,CAChB,QAAQ,EAAE,kBAAkB,EAAE,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAgB1B"}
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ /**
3
+ * Placeholder Detector with Rule-Tiered Approach
4
+ *
5
+ * Implements sophisticated placeholder detection with multiple confidence levels:
6
+ * - Ignore list (safe): HTML placeholder attributes by default
7
+ * - High-confidence: UI text nodes, mock responses
8
+ * - Medium-confidence: "placeholder" in variable names or comments
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.PlaceholderDetector = void 0;
12
+ class PlaceholderDetector {
13
+ constructor(config = {}) {
14
+ this.config = {
15
+ countInputPlaceholders: config.countInputPlaceholders ?? false,
16
+ ignorePatterns: config.ignorePatterns ?? [],
17
+ };
18
+ }
19
+ /**
20
+ * Detect placeholders in source code
21
+ */
22
+ async detectPlaceholders(filePath, content) {
23
+ const findings = [];
24
+ const lines = content.split('\n');
25
+ for (let lineNum = 0; lineNum < lines.length; lineNum++) {
26
+ const line = lines[lineNum];
27
+ const lineContent = line.trim();
28
+ // Skip empty lines
29
+ if (!lineContent)
30
+ continue;
31
+ // High-confidence patterns: UI text nodes and mock responses
32
+ const highConfidenceFindings = this.detectHighConfidence(filePath, lineNum + 1, lineContent, line);
33
+ findings.push(...highConfidenceFindings);
34
+ // Medium-confidence patterns: comments and variable names
35
+ if (!this.config.countInputPlaceholders) {
36
+ // Skip HTML placeholder attributes unless explicitly enabled
37
+ if (this.isHtmlPlaceholderAttribute(lineContent)) {
38
+ continue;
39
+ }
40
+ }
41
+ else {
42
+ // Count HTML placeholder attributes if enabled
43
+ const htmlFindings = this.detectHtmlPlaceholderAttributes(filePath, lineNum + 1, lineContent, line);
44
+ findings.push(...htmlFindings);
45
+ }
46
+ const mediumConfidenceFindings = this.detectMediumConfidence(filePath, lineNum + 1, lineContent, line);
47
+ findings.push(...mediumConfidenceFindings);
48
+ }
49
+ // Filter out ignored patterns
50
+ return findings.filter((finding) => {
51
+ return !this.config.ignorePatterns.some((pattern) => pattern.test(finding.match));
52
+ });
53
+ }
54
+ /**
55
+ * High-confidence placeholders: UI text nodes and mock responses
56
+ */
57
+ detectHighConfidence(filePath, lineNum, lineContent, originalLine) {
58
+ const findings = [];
59
+ // UI text patterns
60
+ const uiTextPatterns = [
61
+ /["'`]Coming\s+soon["'`]/i,
62
+ /["'`]Todo\s+App["'`]/i,
63
+ /["'`]Chart\s+Placeholder/i,
64
+ /["'`]Placeholder\.\.\.["'`]/i,
65
+ /["'`]TODO:.*["'`]/i,
66
+ /["'`]FIXME:.*["'`]/i,
67
+ ];
68
+ for (const pattern of uiTextPatterns) {
69
+ const matches = this.findAllMatches(lineContent, pattern);
70
+ for (const match of matches) {
71
+ findings.push({
72
+ type: 'ui_text',
73
+ file: filePath,
74
+ line: lineNum,
75
+ column: match.index,
76
+ match: match.text,
77
+ confidence: 'high',
78
+ snippet: originalLine.trim(),
79
+ });
80
+ }
81
+ }
82
+ // Mock response patterns
83
+ const mockResponsePatterns = [
84
+ /"success":\s*true.*"TODO"/i,
85
+ /"success":\s*true.*"FIXME"/i,
86
+ /"mock":\s*true/i,
87
+ /"isMock":\s*true/i,
88
+ /mockData\s*[:=]/i,
89
+ /lorem\s+ipsum/i,
90
+ ];
91
+ for (const pattern of mockResponsePatterns) {
92
+ const matches = this.findAllMatches(lineContent, pattern);
93
+ for (const match of matches) {
94
+ findings.push({
95
+ type: 'mock_response',
96
+ file: filePath,
97
+ line: lineNum,
98
+ column: match.index,
99
+ match: match.text,
100
+ confidence: 'high',
101
+ snippet: originalLine.trim(),
102
+ });
103
+ }
104
+ }
105
+ return findings;
106
+ }
107
+ /**
108
+ * Medium-confidence placeholders: comments and variable names
109
+ */
110
+ detectMediumConfidence(filePath, lineNum, lineContent, originalLine) {
111
+ const findings = [];
112
+ // Comment patterns (medium confidence)
113
+ const commentPatterns = [
114
+ /\/\/.*\bplaceholder\b/i,
115
+ /\/\*.*\bplaceholder\b.*\*\//i,
116
+ /\/\/.*TODO:/i,
117
+ /\/\/.*FIXME:/i,
118
+ ];
119
+ for (const pattern of commentPatterns) {
120
+ const matches = this.findAllMatches(lineContent, pattern);
121
+ for (const match of matches) {
122
+ findings.push({
123
+ type: 'comment',
124
+ file: filePath,
125
+ line: lineNum,
126
+ column: match.index,
127
+ match: match.text,
128
+ confidence: 'medium',
129
+ snippet: originalLine.trim(),
130
+ });
131
+ }
132
+ }
133
+ // Variable name patterns (medium confidence)
134
+ const variablePatterns = [
135
+ /\bplaceholder[A-Z]\w*/i,
136
+ /\bplaceholder\w*[:=]/i,
137
+ ];
138
+ for (const pattern of variablePatterns) {
139
+ const matches = this.findAllMatches(lineContent, pattern);
140
+ for (const match of matches) {
141
+ findings.push({
142
+ type: 'variable',
143
+ file: filePath,
144
+ line: lineNum,
145
+ column: match.index,
146
+ match: match.text,
147
+ confidence: 'medium',
148
+ snippet: originalLine.trim(),
149
+ });
150
+ }
151
+ }
152
+ return findings;
153
+ }
154
+ /**
155
+ * Detect HTML placeholder attributes
156
+ */
157
+ detectHtmlPlaceholderAttributes(filePath, lineNum, lineContent, originalLine) {
158
+ const findings = [];
159
+ // HTML placeholder attribute pattern
160
+ const htmlPlaceholderPattern = /placeholder\s*=\s*["']([^"']+)["']/gi;
161
+ let match;
162
+ while ((match = htmlPlaceholderPattern.exec(lineContent)) !== null) {
163
+ const placeholderValue = match[1];
164
+ // Only flag if the placeholder value looks like actual placeholder text
165
+ // (not user-facing labels like "Enter your email")
166
+ if (/placeholder|coming soon|todo|fixme|mock|lorem/i.test(placeholderValue)) {
167
+ findings.push({
168
+ type: 'html_attribute',
169
+ file: filePath,
170
+ line: lineNum,
171
+ column: match.index,
172
+ match: match[0],
173
+ confidence: 'high',
174
+ snippet: originalLine.trim(),
175
+ });
176
+ }
177
+ }
178
+ return findings;
179
+ }
180
+ /**
181
+ * Check if line is an HTML placeholder attribute
182
+ */
183
+ isHtmlPlaceholderAttribute(lineContent) {
184
+ return /<input[^>]*placeholder\s*=/i.test(lineContent);
185
+ }
186
+ /**
187
+ * Find all matches in a string with their indices
188
+ */
189
+ findAllMatches(text, pattern) {
190
+ const matches = [];
191
+ let match;
192
+ const globalPattern = new RegExp(pattern.source, pattern.flags + 'g');
193
+ while ((match = globalPattern.exec(text)) !== null) {
194
+ matches.push({
195
+ text: match[0],
196
+ index: match.index,
197
+ });
198
+ }
199
+ return matches;
200
+ }
201
+ /**
202
+ * Count placeholders by type
203
+ */
204
+ static countByType(findings) {
205
+ const counts = {
206
+ ui_text: 0,
207
+ html_attribute: 0,
208
+ mock_response: 0,
209
+ comment: 0,
210
+ variable: 0,
211
+ total: findings.length,
212
+ };
213
+ for (const finding of findings) {
214
+ counts[finding.type] = (counts[finding.type] || 0) + 1;
215
+ }
216
+ return counts;
217
+ }
218
+ }
219
+ exports.PlaceholderDetector = PlaceholderDetector;
220
+ //# sourceMappingURL=placeholder-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placeholder-detector.js","sourceRoot":"","sources":["../../src/scanner/placeholder-detector.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAmBH,MAAa,mBAAmB;IAG9B,YAAY,SAAoC,EAAE;QAChD,IAAI,CAAC,MAAM,GAAG;YACZ,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,IAAI,KAAK;YAC9D,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE;SAC5C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,QAAgB,EAChB,OAAe;QAEf,MAAM,QAAQ,GAAyB,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAEhC,mBAAmB;YACnB,IAAI,CAAC,WAAW;gBAAE,SAAS;YAE3B,6DAA6D;YAC7D,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,CACtD,QAAQ,EACR,OAAO,GAAG,CAAC,EACX,WAAW,EACX,IAAI,CACL,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC;YAEzC,0DAA0D;YAC1D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;gBACxC,6DAA6D;gBAC7D,IAAI,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,EAAE,CAAC;oBACjD,SAAS;gBACX,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,+CAA+C;gBAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,+BAA+B,CACvD,QAAQ,EACR,OAAO,GAAG,CAAC,EACX,WAAW,EACX,IAAI,CACL,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;YACjC,CAAC;YAED,MAAM,wBAAwB,GAAG,IAAI,CAAC,sBAAsB,CAC1D,QAAQ,EACR,OAAO,GAAG,CAAC,EACX,WAAW,EACX,IAAI,CACL,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC7C,CAAC;QAED,8BAA8B;QAC9B,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;YACjC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAClD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAC5B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,oBAAoB,CAC1B,QAAgB,EAChB,OAAe,EACf,WAAmB,EACnB,YAAoB;QAEpB,MAAM,QAAQ,GAAyB,EAAE,CAAC;QAE1C,mBAAmB;QACnB,MAAM,cAAc,GAAG;YACrB,0BAA0B;YAC1B,uBAAuB;YACvB,2BAA2B;YAC3B,8BAA8B;YAC9B,oBAAoB;YACpB,qBAAqB;SACtB,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,KAAK,CAAC,KAAK;oBACnB,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,UAAU,EAAE,MAAM;oBAClB,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,MAAM,oBAAoB,GAAG;YAC3B,4BAA4B;YAC5B,6BAA6B;YAC7B,iBAAiB;YACjB,mBAAmB;YACnB,kBAAkB;YAClB,gBAAgB;SACjB,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,oBAAoB,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,KAAK,CAAC,KAAK;oBACnB,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,UAAU,EAAE,MAAM;oBAClB,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,sBAAsB,CAC5B,QAAgB,EAChB,OAAe,EACf,WAAmB,EACnB,YAAoB;QAEpB,MAAM,QAAQ,GAAyB,EAAE,CAAC;QAE1C,uCAAuC;QACvC,MAAM,eAAe,GAAG;YACtB,wBAAwB;YACxB,8BAA8B;YAC9B,cAAc;YACd,eAAe;SAChB,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,KAAK,CAAC,KAAK;oBACnB,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,UAAU,EAAE,QAAQ;oBACpB,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,MAAM,gBAAgB,GAAG;YACvB,wBAAwB;YACxB,uBAAuB;SACxB,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,KAAK,CAAC,KAAK;oBACnB,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,UAAU,EAAE,QAAQ;oBACpB,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,+BAA+B,CACrC,QAAgB,EAChB,OAAe,EACf,WAAmB,EACnB,YAAoB;QAEpB,MAAM,QAAQ,GAAyB,EAAE,CAAC;QAE1C,qCAAqC;QACrC,MAAM,sBAAsB,GAAG,sCAAsC,CAAC;QACtE,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACnE,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAClC,wEAAwE;YACxE,mDAAmD;YACnD,IACE,gDAAgD,CAAC,IAAI,CAAC,gBAAgB,CAAC,EACvE,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,KAAK,CAAC,KAAK;oBACnB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBACf,UAAU,EAAE,MAAM;oBAClB,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,0BAA0B,CAAC,WAAmB;QACpD,OAAO,6BAA6B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,cAAc,CACpB,IAAY,EACZ,OAAe;QAEf,MAAM,OAAO,GAA2C,EAAE,CAAC;QAC3D,IAAI,KAAK,CAAC;QACV,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBACd,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAChB,QAA8B;QAE9B,MAAM,MAAM,GAA2B;YACrC,OAAO,EAAE,CAAC;YACV,cAAc,EAAE,CAAC;YACjB,aAAa,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,QAAQ,CAAC,MAAM;SACvB,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAnRD,kDAmRC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Route Detector for Client-Side Routers
3
+ *
4
+ * Detects routes in various routing frameworks:
5
+ * - Next.js/Remix (file-based routing)
6
+ * - React Router (component-based)
7
+ * - Wouter (lightweight router)
8
+ * - Generic route inference mode
9
+ */
10
+ export interface RouteInfo {
11
+ path: string;
12
+ file?: string;
13
+ line?: number;
14
+ method?: string;
15
+ dynamic?: boolean;
16
+ params?: string[];
17
+ source: 'file_based' | 'component' | 'config' | 'inferred';
18
+ }
19
+ export interface RouteDetectionResult {
20
+ routes: RouteInfo[];
21
+ framework: string;
22
+ confidence: 'high' | 'medium' | 'low';
23
+ message?: string;
24
+ hints?: string[];
25
+ }
26
+ export interface RouteDetectorConfig {
27
+ projectPath: string;
28
+ framework?: string;
29
+ /** Custom route hints from config */
30
+ routeHints?: Array<{
31
+ path: string;
32
+ file?: string;
33
+ description?: string;
34
+ }>;
35
+ }
36
+ export declare class RouteDetector {
37
+ private config;
38
+ constructor(config: RouteDetectorConfig);
39
+ /**
40
+ * Detect routes in the project
41
+ */
42
+ detectRoutes(): Promise<RouteDetectionResult>;
43
+ /**
44
+ * Detect routes based on detected framework
45
+ */
46
+ private detectFrameworkRoutes;
47
+ /**
48
+ * Detect Next.js file-based routes
49
+ */
50
+ private detectNextJSRoutes;
51
+ /**
52
+ * Detect Remix routes
53
+ */
54
+ private detectRemixRoutes;
55
+ /**
56
+ * Detect component-based routes (React Router, Wouter)
57
+ */
58
+ private detectComponentRoutes;
59
+ /**
60
+ * Generic route inference mode
61
+ */
62
+ private detectGenericRoutes;
63
+ /**
64
+ * Detect router framework from dependencies
65
+ */
66
+ private detectRouterFramework;
67
+ /**
68
+ * Check if a string looks like a route path
69
+ */
70
+ private looksLikeRoute;
71
+ /**
72
+ * Extract route parameters from path
73
+ */
74
+ private extractRouteParams;
75
+ /**
76
+ * Parse route array from config
77
+ */
78
+ private parseRouteArray;
79
+ /**
80
+ * Find route files in directory (for file-based routing)
81
+ */
82
+ private findRouteFiles;
83
+ /**
84
+ * Convert file path to route path
85
+ */
86
+ private filePathToRoute;
87
+ /**
88
+ * Find all source files in project
89
+ */
90
+ private findSourceFiles;
91
+ /**
92
+ * Get all files recursively
93
+ */
94
+ private getAllFiles;
95
+ /**
96
+ * Deduplicate routes
97
+ */
98
+ private deduplicateRoutes;
99
+ }
100
+ //# sourceMappingURL=route-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-detector.d.ts","sourceRoot":"","sources":["../../src/scanner/route-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;CAC5D;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;CACJ;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,EAAE,mBAAmB;IAIvC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,oBAAoB,CAAC;IA0CnD;;OAEG;YACW,qBAAqB;IAwBnC;;OAEG;YACW,kBAAkB;IAsBhC;;OAEG;YACW,iBAAiB;IAgB/B;;OAEG;YACW,qBAAqB;IAyEnC;;OAEG;YACW,mBAAmB;IAgDjC;;OAEG;YACW,qBAAqB;IA6BnC;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;YACW,cAAc;IAoB5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAoBvB;;OAEG;YACW,eAAe;IAoC7B;;OAEG;YACW,WAAW;IAmBzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAc1B"}