webmcp-cli 1.0.0 → 1.2.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 (347) hide show
  1. package/dist/agent/features/agent-simulator.d.ts +67 -0
  2. package/dist/agent/features/agent-simulator.js +368 -0
  3. package/dist/agent/features/agent-simulator.js.map +1 -0
  4. package/dist/agent/features/index.d.ts +8 -0
  5. package/dist/agent/features/index.js +9 -0
  6. package/dist/agent/features/index.js.map +1 -0
  7. package/dist/agent/features/simulation-judge.d.ts +78 -0
  8. package/dist/agent/features/simulation-judge.js +276 -0
  9. package/dist/agent/features/simulation-judge.js.map +1 -0
  10. package/dist/agent/features/test-case-generator.d.ts +35 -0
  11. package/dist/agent/features/test-case-generator.js +257 -0
  12. package/dist/agent/features/test-case-generator.js.map +1 -0
  13. package/dist/agent/index.d.ts +7 -0
  14. package/dist/agent/index.js +10 -0
  15. package/dist/agent/index.js.map +1 -0
  16. package/dist/agent/llm-client.d.ts +76 -0
  17. package/dist/agent/llm-client.js +198 -0
  18. package/dist/agent/llm-client.js.map +1 -0
  19. package/dist/audit/run-single-page-audit.d.ts +41 -0
  20. package/dist/audit/run-single-page-audit.js +103 -0
  21. package/dist/audit/run-single-page-audit.js.map +1 -0
  22. package/dist/bin/webmcp.d.ts +5 -0
  23. package/dist/bin/webmcp.js +14 -0
  24. package/dist/bin/webmcp.js.map +1 -0
  25. package/dist/browser/audit-runner.d.ts +30 -0
  26. package/dist/browser/audit-runner.js +77 -0
  27. package/dist/browser/audit-runner.js.map +1 -0
  28. package/dist/browser/index.d.ts +6 -0
  29. package/dist/browser/index.js +7 -0
  30. package/dist/browser/index.js.map +1 -0
  31. package/dist/browser/interceptor.d.ts +68 -0
  32. package/dist/browser/interceptor.js +257 -0
  33. package/dist/browser/interceptor.js.map +1 -0
  34. package/dist/browser/playwright.d.ts +98 -0
  35. package/dist/browser/playwright.js +158 -0
  36. package/dist/browser/playwright.js.map +1 -0
  37. package/dist/cli/commands/audit.d.ts +12 -0
  38. package/dist/cli/commands/audit.js +349 -0
  39. package/dist/cli/commands/audit.js.map +1 -0
  40. package/dist/cli/commands/interactive.d.ts +10 -0
  41. package/dist/cli/commands/interactive.js +34 -0
  42. package/dist/cli/commands/interactive.js.map +1 -0
  43. package/dist/cli/index.d.ts +17 -0
  44. package/dist/cli/index.js +84 -0
  45. package/dist/cli/index.js.map +1 -0
  46. package/dist/cli/options/parse-audit-options.d.ts +12 -0
  47. package/dist/cli/options/parse-audit-options.js +64 -0
  48. package/dist/cli/options/parse-audit-options.js.map +1 -0
  49. package/dist/core/constants.d.ts +102 -0
  50. package/dist/core/constants.js +214 -0
  51. package/dist/core/constants.js.map +1 -0
  52. package/dist/core/types/audit.d.ts +260 -0
  53. package/dist/core/types/audit.js +5 -0
  54. package/dist/core/types/audit.js.map +1 -0
  55. package/dist/core/types/index.d.ts +6 -0
  56. package/dist/core/types/index.js +7 -0
  57. package/dist/core/types/index.js.map +1 -0
  58. package/dist/core/types/rule.d.ts +190 -0
  59. package/dist/core/types/rule.js +26 -0
  60. package/dist/core/types/rule.js.map +1 -0
  61. package/dist/core/types/tool.d.ts +312 -0
  62. package/dist/core/types/tool.js +6 -0
  63. package/dist/core/types/tool.js.map +1 -0
  64. package/dist/detection/declarative.d.ts +27 -0
  65. package/dist/detection/declarative.js +343 -0
  66. package/dist/detection/declarative.js.map +1 -0
  67. package/dist/detection/imperative.d.ts +38 -0
  68. package/dist/detection/imperative.js +99 -0
  69. package/dist/detection/imperative.js.map +1 -0
  70. package/dist/detection/index.d.ts +5 -0
  71. package/dist/detection/index.js +6 -0
  72. package/dist/detection/index.js.map +1 -0
  73. package/dist/index.d.ts +12 -0
  74. package/dist/index.js +19 -0
  75. package/dist/index.js.map +1 -0
  76. package/dist/llm/advice-service.d.ts +38 -0
  77. package/dist/llm/advice-service.js +243 -0
  78. package/dist/llm/advice-service.js.map +1 -0
  79. package/dist/llm/evaluator.d.ts +89 -0
  80. package/dist/llm/evaluator.js +274 -0
  81. package/dist/llm/evaluator.js.map +1 -0
  82. package/dist/llm/index.d.ts +11 -0
  83. package/dist/llm/index.js +15 -0
  84. package/dist/llm/index.js.map +1 -0
  85. package/dist/llm/json-response.d.ts +12 -0
  86. package/dist/llm/json-response.js +67 -0
  87. package/dist/llm/json-response.js.map +1 -0
  88. package/dist/llm/providers/mock.d.ts +29 -0
  89. package/dist/llm/providers/mock.js +324 -0
  90. package/dist/llm/providers/mock.js.map +1 -0
  91. package/dist/llm/providers/openrouter.d.ts +53 -0
  92. package/dist/llm/providers/openrouter.js +321 -0
  93. package/dist/llm/providers/openrouter.js.map +1 -0
  94. package/dist/llm/request-cache.d.ts +28 -0
  95. package/dist/llm/request-cache.js +99 -0
  96. package/dist/llm/request-cache.js.map +1 -0
  97. package/dist/llm/types.d.ts +233 -0
  98. package/dist/llm/types.js +7 -0
  99. package/dist/llm/types.js.map +1 -0
  100. package/dist/rules/best-practices/BP-001.d.ts +11 -0
  101. package/dist/rules/best-practices/BP-001.js +56 -0
  102. package/dist/rules/best-practices/BP-001.js.map +1 -0
  103. package/dist/rules/best-practices/BP-002.d.ts +11 -0
  104. package/dist/rules/best-practices/BP-002.js +63 -0
  105. package/dist/rules/best-practices/BP-002.js.map +1 -0
  106. package/dist/rules/best-practices/BP-003.d.ts +11 -0
  107. package/dist/rules/best-practices/BP-003.js +68 -0
  108. package/dist/rules/best-practices/BP-003.js.map +1 -0
  109. package/dist/rules/coverage/COV-001.d.ts +8 -0
  110. package/dist/rules/coverage/COV-001.js +51 -0
  111. package/dist/rules/coverage/COV-001.js.map +1 -0
  112. package/dist/rules/description/DESC-003.d.ts +13 -0
  113. package/dist/rules/description/DESC-003.js +96 -0
  114. package/dist/rules/description/DESC-003.js.map +1 -0
  115. package/dist/rules/description/DESC-004.d.ts +8 -0
  116. package/dist/rules/description/DESC-004.js +61 -0
  117. package/dist/rules/description/DESC-004.js.map +1 -0
  118. package/dist/rules/description/DESC-005.d.ts +12 -0
  119. package/dist/rules/description/DESC-005.js +70 -0
  120. package/dist/rules/description/DESC-005.js.map +1 -0
  121. package/dist/rules/description/index.d.ts +4 -0
  122. package/dist/rules/description/index.js +5 -0
  123. package/dist/rules/description/index.js.map +1 -0
  124. package/dist/rules/implementation/IMP-001.d.ts +10 -0
  125. package/dist/rules/implementation/IMP-001.js +36 -0
  126. package/dist/rules/implementation/IMP-001.js.map +1 -0
  127. package/dist/rules/implementation/IMP-003.d.ts +9 -0
  128. package/dist/rules/implementation/IMP-003.js +45 -0
  129. package/dist/rules/implementation/IMP-003.js.map +1 -0
  130. package/dist/rules/implementation/IMP-004.d.ts +9 -0
  131. package/dist/rules/implementation/IMP-004.js +48 -0
  132. package/dist/rules/implementation/IMP-004.js.map +1 -0
  133. package/dist/rules/implementation/IMP-005.d.ts +9 -0
  134. package/dist/rules/implementation/IMP-005.js +54 -0
  135. package/dist/rules/implementation/IMP-005.js.map +1 -0
  136. package/dist/rules/implementation/IMP-007.d.ts +8 -0
  137. package/dist/rules/implementation/IMP-007.js +79 -0
  138. package/dist/rules/implementation/IMP-007.js.map +1 -0
  139. package/dist/rules/implementation/IMP-013.d.ts +9 -0
  140. package/dist/rules/implementation/IMP-013.js +55 -0
  141. package/dist/rules/implementation/IMP-013.js.map +1 -0
  142. package/dist/rules/implementation/index.d.ts +9 -0
  143. package/dist/rules/implementation/index.js +10 -0
  144. package/dist/rules/implementation/index.js.map +1 -0
  145. package/dist/rules/index.d.ts +51 -0
  146. package/dist/rules/index.js +100 -0
  147. package/dist/rules/index.js.map +1 -0
  148. package/dist/rules/llm/LLM-001.d.ts +14 -0
  149. package/dist/rules/llm/LLM-001.js +78 -0
  150. package/dist/rules/llm/LLM-001.js.map +1 -0
  151. package/dist/rules/llm/LLM-002.d.ts +14 -0
  152. package/dist/rules/llm/LLM-002.js +77 -0
  153. package/dist/rules/llm/LLM-002.js.map +1 -0
  154. package/dist/rules/llm/LLM-003.d.ts +16 -0
  155. package/dist/rules/llm/LLM-003.js +82 -0
  156. package/dist/rules/llm/LLM-003.js.map +1 -0
  157. package/dist/rules/llm/LLM-004.d.ts +14 -0
  158. package/dist/rules/llm/LLM-004.js +87 -0
  159. package/dist/rules/llm/LLM-004.js.map +1 -0
  160. package/dist/rules/llm/LLM-005.d.ts +16 -0
  161. package/dist/rules/llm/LLM-005.js +105 -0
  162. package/dist/rules/llm/LLM-005.js.map +1 -0
  163. package/dist/rules/llm/index.d.ts +10 -0
  164. package/dist/rules/llm/index.js +11 -0
  165. package/dist/rules/llm/index.js.map +1 -0
  166. package/dist/rules/runner.d.ts +54 -0
  167. package/dist/rules/runner.js +138 -0
  168. package/dist/rules/runner.js.map +1 -0
  169. package/dist/rules/schema/SCHEMA-001.d.ts +9 -0
  170. package/dist/rules/schema/SCHEMA-001.js +57 -0
  171. package/dist/rules/schema/SCHEMA-001.js.map +1 -0
  172. package/dist/rules/schema/SCHEMA-002.d.ts +9 -0
  173. package/dist/rules/schema/SCHEMA-002.js +59 -0
  174. package/dist/rules/schema/SCHEMA-002.js.map +1 -0
  175. package/dist/rules/schema/SCHEMA-003.d.ts +10 -0
  176. package/dist/rules/schema/SCHEMA-003.js +66 -0
  177. package/dist/rules/schema/SCHEMA-003.js.map +1 -0
  178. package/dist/rules/schema/SCHEMA-011.d.ts +10 -0
  179. package/dist/rules/schema/SCHEMA-011.js +62 -0
  180. package/dist/rules/schema/SCHEMA-011.js.map +1 -0
  181. package/dist/rules/security/SEC-001.d.ts +12 -0
  182. package/dist/rules/security/SEC-001.js +66 -0
  183. package/dist/rules/security/SEC-001.js.map +1 -0
  184. package/dist/rules/utils/keywords.d.ts +35 -0
  185. package/dist/rules/utils/keywords.js +100 -0
  186. package/dist/rules/utils/keywords.js.map +1 -0
  187. package/dist/scoring/calculator.d.ts +27 -0
  188. package/dist/scoring/calculator.js +194 -0
  189. package/dist/scoring/calculator.js.map +1 -0
  190. package/dist/scoring/grades.d.ts +34 -0
  191. package/dist/scoring/grades.js +167 -0
  192. package/dist/scoring/grades.js.map +1 -0
  193. package/dist/scoring/index.d.ts +5 -0
  194. package/dist/scoring/index.js +6 -0
  195. package/dist/scoring/index.js.map +1 -0
  196. package/dist/ui/banner.d.ts +21 -0
  197. package/dist/ui/banner.js +60 -0
  198. package/dist/ui/banner.js.map +1 -0
  199. package/dist/ui/design-tokens.d.ts +23 -0
  200. package/dist/ui/design-tokens.js +58 -0
  201. package/dist/ui/design-tokens.js.map +1 -0
  202. package/dist/ui/findings.d.ts +23 -0
  203. package/dist/ui/findings.js +190 -0
  204. package/dist/ui/findings.js.map +1 -0
  205. package/dist/ui/index.d.ts +9 -0
  206. package/dist/ui/index.js +10 -0
  207. package/dist/ui/index.js.map +1 -0
  208. package/dist/ui/ink/App.d.ts +14 -0
  209. package/dist/ui/ink/App.js +113 -0
  210. package/dist/ui/ink/App.js.map +1 -0
  211. package/dist/ui/ink/FullScreenLayout.d.ts +16 -0
  212. package/dist/ui/ink/FullScreenLayout.js +29 -0
  213. package/dist/ui/ink/FullScreenLayout.js.map +1 -0
  214. package/dist/ui/ink/InteractiveApp.d.ts +28 -0
  215. package/dist/ui/ink/InteractiveApp.js +229 -0
  216. package/dist/ui/ink/InteractiveApp.js.map +1 -0
  217. package/dist/ui/ink/RealAuditApp.d.ts +19 -0
  218. package/dist/ui/ink/RealAuditApp.js +170 -0
  219. package/dist/ui/ink/RealAuditApp.js.map +1 -0
  220. package/dist/ui/ink/components/AnimatedProgressBar.d.ts +20 -0
  221. package/dist/ui/ink/components/AnimatedProgressBar.js +46 -0
  222. package/dist/ui/ink/components/AnimatedProgressBar.js.map +1 -0
  223. package/dist/ui/ink/components/AsciiLogo.d.ts +12 -0
  224. package/dist/ui/ink/components/AsciiLogo.js +35 -0
  225. package/dist/ui/ink/components/AsciiLogo.js.map +1 -0
  226. package/dist/ui/ink/components/CategoryBars.d.ts +18 -0
  227. package/dist/ui/ink/components/CategoryBars.js +18 -0
  228. package/dist/ui/ink/components/CategoryBars.js.map +1 -0
  229. package/dist/ui/ink/components/FindingsTable.d.ts +18 -0
  230. package/dist/ui/ink/components/FindingsTable.js +19 -0
  231. package/dist/ui/ink/components/FindingsTable.js.map +1 -0
  232. package/dist/ui/ink/components/Footer.d.ts +15 -0
  233. package/dist/ui/ink/components/Footer.js +20 -0
  234. package/dist/ui/ink/components/Footer.js.map +1 -0
  235. package/dist/ui/ink/components/Header.d.ts +11 -0
  236. package/dist/ui/ink/components/Header.js +12 -0
  237. package/dist/ui/ink/components/Header.js.map +1 -0
  238. package/dist/ui/ink/components/LinkList.d.ts +17 -0
  239. package/dist/ui/ink/components/LinkList.js +44 -0
  240. package/dist/ui/ink/components/LinkList.js.map +1 -0
  241. package/dist/ui/ink/components/Navigation.d.ts +26 -0
  242. package/dist/ui/ink/components/Navigation.js +62 -0
  243. package/dist/ui/ink/components/Navigation.js.map +1 -0
  244. package/dist/ui/ink/components/ProgressBar.d.ts +15 -0
  245. package/dist/ui/ink/components/ProgressBar.js +14 -0
  246. package/dist/ui/ink/components/ProgressBar.js.map +1 -0
  247. package/dist/ui/ink/components/ScoreCard.d.ts +30 -0
  248. package/dist/ui/ink/components/ScoreCard.js +26 -0
  249. package/dist/ui/ink/components/ScoreCard.js.map +1 -0
  250. package/dist/ui/ink/components/SimulationResults.d.ts +33 -0
  251. package/dist/ui/ink/components/SimulationResults.js +23 -0
  252. package/dist/ui/ink/components/SimulationResults.js.map +1 -0
  253. package/dist/ui/ink/components/Spinner.d.ts +11 -0
  254. package/dist/ui/ink/components/Spinner.js +12 -0
  255. package/dist/ui/ink/components/Spinner.js.map +1 -0
  256. package/dist/ui/ink/components/ToolCard.d.ts +23 -0
  257. package/dist/ui/ink/components/ToolCard.js +20 -0
  258. package/dist/ui/ink/components/ToolCard.js.map +1 -0
  259. package/dist/ui/ink/components/shared/Badge.d.ts +21 -0
  260. package/dist/ui/ink/components/shared/Badge.js +39 -0
  261. package/dist/ui/ink/components/shared/Badge.js.map +1 -0
  262. package/dist/ui/ink/components/shared/Card.d.ts +18 -0
  263. package/dist/ui/ink/components/shared/Card.js +11 -0
  264. package/dist/ui/ink/components/shared/Card.js.map +1 -0
  265. package/dist/ui/ink/components/shared/HelpOverlay.d.ts +10 -0
  266. package/dist/ui/ink/components/shared/HelpOverlay.js +28 -0
  267. package/dist/ui/ink/components/shared/HelpOverlay.js.map +1 -0
  268. package/dist/ui/ink/components/shared/LoadingWithTimeout.d.ts +11 -0
  269. package/dist/ui/ink/components/shared/LoadingWithTimeout.js +21 -0
  270. package/dist/ui/ink/components/shared/LoadingWithTimeout.js.map +1 -0
  271. package/dist/ui/ink/components/shared/Menu.d.ts +23 -0
  272. package/dist/ui/ink/components/shared/Menu.js +43 -0
  273. package/dist/ui/ink/components/shared/Menu.js.map +1 -0
  274. package/dist/ui/ink/components/shared/Table.d.ts +23 -0
  275. package/dist/ui/ink/components/shared/Table.js +40 -0
  276. package/dist/ui/ink/components/shared/Table.js.map +1 -0
  277. package/dist/ui/ink/components/views/CrawlingView.d.ts +12 -0
  278. package/dist/ui/ink/components/views/CrawlingView.js +34 -0
  279. package/dist/ui/ink/components/views/CrawlingView.js.map +1 -0
  280. package/dist/ui/ink/components/views/DashboardView.d.ts +21 -0
  281. package/dist/ui/ink/components/views/DashboardView.js +51 -0
  282. package/dist/ui/ink/components/views/DashboardView.js.map +1 -0
  283. package/dist/ui/ink/components/views/FindingDetailView.d.ts +16 -0
  284. package/dist/ui/ink/components/views/FindingDetailView.js +34 -0
  285. package/dist/ui/ink/components/views/FindingDetailView.js.map +1 -0
  286. package/dist/ui/ink/components/views/FindingsView.d.ts +16 -0
  287. package/dist/ui/ink/components/views/FindingsView.js +79 -0
  288. package/dist/ui/ink/components/views/FindingsView.js.map +1 -0
  289. package/dist/ui/ink/components/views/OnboardingView.d.ts +12 -0
  290. package/dist/ui/ink/components/views/OnboardingView.js +40 -0
  291. package/dist/ui/ink/components/views/OnboardingView.js.map +1 -0
  292. package/dist/ui/ink/components/views/SimulationView.d.ts +17 -0
  293. package/dist/ui/ink/components/views/SimulationView.js +53 -0
  294. package/dist/ui/ink/components/views/SimulationView.js.map +1 -0
  295. package/dist/ui/ink/components/views/TestCaseDetailView.d.ts +11 -0
  296. package/dist/ui/ink/components/views/TestCaseDetailView.js +53 -0
  297. package/dist/ui/ink/components/views/TestCaseDetailView.js.map +1 -0
  298. package/dist/ui/ink/components/views/ToolDetailView.d.ts +15 -0
  299. package/dist/ui/ink/components/views/ToolDetailView.js +25 -0
  300. package/dist/ui/ink/components/views/ToolDetailView.js.map +1 -0
  301. package/dist/ui/ink/components/views/ToolsView.d.ts +15 -0
  302. package/dist/ui/ink/components/views/ToolsView.js +43 -0
  303. package/dist/ui/ink/components/views/ToolsView.js.map +1 -0
  304. package/dist/ui/ink/demo.d.ts +6 -0
  305. package/dist/ui/ink/demo.js +254 -0
  306. package/dist/ui/ink/demo.js.map +1 -0
  307. package/dist/ui/ink/hooks/useAnimation.d.ts +29 -0
  308. package/dist/ui/ink/hooks/useAnimation.js +89 -0
  309. package/dist/ui/ink/hooks/useAnimation.js.map +1 -0
  310. package/dist/ui/ink/hooks/useAudit.d.ts +69 -0
  311. package/dist/ui/ink/hooks/useAudit.js +99 -0
  312. package/dist/ui/ink/hooks/useAudit.js.map +1 -0
  313. package/dist/ui/ink/hooks/useCrawlAnimation.d.ts +19 -0
  314. package/dist/ui/ink/hooks/useCrawlAnimation.js +204 -0
  315. package/dist/ui/ink/hooks/useCrawlAnimation.js.map +1 -0
  316. package/dist/ui/ink/hooks/useKeyboardNav.d.ts +23 -0
  317. package/dist/ui/ink/hooks/useKeyboardNav.js +81 -0
  318. package/dist/ui/ink/hooks/useKeyboardNav.js.map +1 -0
  319. package/dist/ui/ink/hooks/useNavigation.d.ts +16 -0
  320. package/dist/ui/ink/hooks/useNavigation.js +42 -0
  321. package/dist/ui/ink/hooks/useNavigation.js.map +1 -0
  322. package/dist/ui/ink/hooks/useTerminalSize.d.ts +10 -0
  323. package/dist/ui/ink/hooks/useTerminalSize.js +29 -0
  324. package/dist/ui/ink/hooks/useTerminalSize.js.map +1 -0
  325. package/dist/ui/ink/index.d.ts +43 -0
  326. package/dist/ui/ink/index.js +50 -0
  327. package/dist/ui/ink/index.js.map +1 -0
  328. package/dist/ui/ink/render.d.ts +24 -0
  329. package/dist/ui/ink/render.js +14 -0
  330. package/dist/ui/ink/render.js.map +1 -0
  331. package/dist/ui/ink/theme.d.ts +37 -0
  332. package/dist/ui/ink/theme.js +38 -0
  333. package/dist/ui/ink/theme.js.map +1 -0
  334. package/dist/ui/ink/types.d.ts +77 -0
  335. package/dist/ui/ink/types.js +5 -0
  336. package/dist/ui/ink/types.js.map +1 -0
  337. package/dist/ui/score-display.d.ts +16 -0
  338. package/dist/ui/score-display.js +201 -0
  339. package/dist/ui/score-display.js.map +1 -0
  340. package/dist/ui/spinner.d.ts +45 -0
  341. package/dist/ui/spinner.js +112 -0
  342. package/dist/ui/spinner.js.map +1 -0
  343. package/dist/ui/utils.d.ts +13 -0
  344. package/dist/ui/utils.js +25 -0
  345. package/dist/ui/utils.js.map +1 -0
  346. package/package.json +61 -9
  347. package/index.js +0 -105
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Scoring Module
3
+ */
4
+ export * from './calculator.js';
5
+ export * from './grades.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scoring/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Banner Display
3
+ *
4
+ * ASCII art banner with gradient colors.
5
+ */
6
+ /**
7
+ * Print the banner to the console
8
+ */
9
+ export declare function printBanner(version: string): void;
10
+ /**
11
+ * Print a compact banner (for CI/non-interactive mode)
12
+ */
13
+ export declare function printCompactBanner(version: string): void;
14
+ /**
15
+ * Print a section header
16
+ */
17
+ export declare function printSectionHeader(title: string): void;
18
+ /**
19
+ * Print a phase header with box
20
+ */
21
+ export declare function printPhaseHeader(phase: number, title: string): void;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Banner Display
3
+ *
4
+ * ASCII art banner with gradient colors.
5
+ */
6
+ import chalk from 'chalk';
7
+ import gradient from 'gradient-string';
8
+ /**
9
+ * ASCII art banner
10
+ */
11
+ const BANNER = `
12
+ █████╗ ██████╗ ███████╗███╗ ██╗████████╗
13
+ ██╔══██╗██╔════╝ ██╔════╝████╗ ██║╚══██╔══╝
14
+ ███████║██║ ███╗█████╗ ██╔██╗ ██║ ██║
15
+ ██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║
16
+ ██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║
17
+ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝
18
+ `;
19
+ /**
20
+ * Gradient for the banner (cool blue → cyan → green)
21
+ */
22
+ const agentGradient = gradient(['#4facfe', '#00f2fe', '#43e97b']);
23
+ /**
24
+ * Print the banner to the console
25
+ */
26
+ export function printBanner(version) {
27
+ console.log('');
28
+ console.log(agentGradient.multiline(BANNER));
29
+ console.log(chalk.dim(' R E A D Y') +
30
+ chalk.dim(' v' + version));
31
+ console.log('');
32
+ }
33
+ /**
34
+ * Print a compact banner (for CI/non-interactive mode)
35
+ */
36
+ export function printCompactBanner(version) {
37
+ console.log(chalk.cyan.bold('AgentReady') +
38
+ chalk.dim(` v${version}`) +
39
+ chalk.dim(' — WebMCP Audit Tool'));
40
+ }
41
+ /**
42
+ * Print a section header
43
+ */
44
+ export function printSectionHeader(title) {
45
+ console.log('');
46
+ console.log(chalk.cyan.bold(` ${title}`));
47
+ console.log(chalk.dim(' ' + '─'.repeat(50)));
48
+ }
49
+ /**
50
+ * Print a phase header with box
51
+ */
52
+ export function printPhaseHeader(phase, title) {
53
+ const headerText = `Phase ${phase}: ${title}`;
54
+ const border = '─'.repeat(headerText.length + 4);
55
+ console.log('');
56
+ console.log(chalk.dim(` ╭${border}╮`));
57
+ console.log(chalk.dim(' │ ') + chalk.bold.cyan(headerText) + chalk.dim(' │'));
58
+ console.log(chalk.dim(` ╰${border}╯`));
59
+ }
60
+ //# sourceMappingURL=banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,GAAG;;;;;;;CAOd,CAAC;AAEF;;GAEG;AACH,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;QACxB,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,CAC5B,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAC7B,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC;QACzB,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAClC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,KAAa;IAC3D,MAAM,UAAU,GAAG,SAAS,KAAK,KAAK,KAAK,EAAE,CAAC;IAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Shared Design Tokens
3
+ *
4
+ * Single source of truth for all visual constants used by both
5
+ * CLI (chalk/ora) and TUI (ink) rendering paths.
6
+ */
7
+ export declare const GRADE_COLORS: Record<string, string>;
8
+ export declare function getGradeColor(grade: string): string;
9
+ export declare const SCORE_THRESHOLDS: {
10
+ readonly good: 80;
11
+ readonly moderate: 60;
12
+ };
13
+ export declare function getScoreColor(score: number): string;
14
+ export declare const SEVERITY_COLORS: Record<string, string>;
15
+ export declare function getSeverityColor(severity: string): string;
16
+ export declare const SPINNER_COLOR = "cyan";
17
+ export declare const TRUNCATION: {
18
+ readonly short: 50;
19
+ readonly medium: 80;
20
+ readonly long: 120;
21
+ };
22
+ export declare function truncateText(text: string, maxLength: number): string;
23
+ export declare const STEP_DESCRIPTION_PAD = 50;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Shared Design Tokens
3
+ *
4
+ * Single source of truth for all visual constants used by both
5
+ * CLI (chalk/ora) and TUI (ink) rendering paths.
6
+ */
7
+ // ── Grade Colors ────────────────────────────────────────
8
+ export const GRADE_COLORS = {
9
+ 'A+': 'green',
10
+ 'A': 'green',
11
+ 'B+': 'yellow',
12
+ 'B': 'yellow',
13
+ 'C+': '#FF8C00',
14
+ 'C': '#FF8C00',
15
+ 'D': 'red',
16
+ 'F': 'red',
17
+ };
18
+ export function getGradeColor(grade) {
19
+ return GRADE_COLORS[grade] || 'white';
20
+ }
21
+ // ── Score Threshold Colors ──────────────────────────────
22
+ export const SCORE_THRESHOLDS = {
23
+ good: 80,
24
+ moderate: 60,
25
+ };
26
+ export function getScoreColor(score) {
27
+ if (score >= SCORE_THRESHOLDS.good)
28
+ return 'green';
29
+ if (score >= SCORE_THRESHOLDS.moderate)
30
+ return 'yellow';
31
+ return 'red';
32
+ }
33
+ // ── Severity Colors ─────────────────────────────────────
34
+ export const SEVERITY_COLORS = {
35
+ critical: 'red',
36
+ warning: 'yellow',
37
+ info: 'blue',
38
+ success: 'green',
39
+ };
40
+ export function getSeverityColor(severity) {
41
+ return SEVERITY_COLORS[severity] || 'white';
42
+ }
43
+ // ── Spinner Color ───────────────────────────────────────
44
+ export const SPINNER_COLOR = 'cyan';
45
+ // ── Truncation ──────────────────────────────────────────
46
+ export const TRUNCATION = {
47
+ short: 50,
48
+ medium: 80,
49
+ long: 120,
50
+ };
51
+ export function truncateText(text, maxLength) {
52
+ if (text.length <= maxLength)
53
+ return text;
54
+ return text.substring(0, maxLength - 3) + '...';
55
+ }
56
+ // ── Step Description Padding ────────────────────────────
57
+ export const STEP_DESCRIPTION_PAD = 50;
58
+ //# sourceMappingURL=design-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design-tokens.js","sourceRoot":"","sources":["../../src/ui/design-tokens.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,2DAA2D;AAC3D,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,IAAI,EAAE,OAAO;IACb,GAAG,EAAG,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,GAAG,EAAG,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,GAAG,EAAG,SAAS;IACf,GAAG,EAAG,KAAK;IACX,GAAG,EAAG,KAAK;CACZ,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;AACxC,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,EAAE;IACR,QAAQ,EAAE,EAAE;CACJ,CAAC;AAEX,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,KAAK,IAAI,gBAAgB,CAAC,IAAI;QAAE,OAAO,OAAO,CAAC;IACnD,IAAI,KAAK,IAAI,gBAAgB,CAAC,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACxD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC;AAC9C,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC,2DAA2D;AAC3D,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,GAAG;CACD,CAAC;AAEX,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,SAAiB;IAC1D,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAClD,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Findings Display
3
+ *
4
+ * Renders audit findings and recommendations.
5
+ */
6
+ import type { Finding } from '../core/types/rule.js';
7
+ import type { Recommendation, DetectedTool } from '../core/types/index.js';
8
+ /**
9
+ * Render findings as a table
10
+ */
11
+ export declare function renderFindingsTable(findings: Finding[]): void;
12
+ /**
13
+ * Render recommendations
14
+ */
15
+ export declare function renderRecommendations(recs: Recommendation[]): void;
16
+ /**
17
+ * Render a tool card
18
+ */
19
+ export declare function renderToolCard(tool: DetectedTool, issues: Finding[], isExisting: boolean): string;
20
+ /**
21
+ * Render tools list (compact)
22
+ */
23
+ export declare function renderToolsList(tools: DetectedTool[]): void;
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Findings Display
3
+ *
4
+ * Renders audit findings and recommendations.
5
+ */
6
+ import chalk from 'chalk';
7
+ import Table from 'cli-table3';
8
+ import figures from 'figures';
9
+ import boxen from 'boxen';
10
+ import { truncateText } from './design-tokens.js';
11
+ /**
12
+ * Render findings as a table
13
+ */
14
+ export function renderFindingsTable(findings) {
15
+ if (findings.length === 0) {
16
+ console.log(chalk.green(` ${figures.tick} No issues found`));
17
+ return;
18
+ }
19
+ // Sort: critical first, then warning, then info
20
+ const sorted = [...findings].sort((a, b) => {
21
+ const order = { critical: 0, warning: 1, info: 2 };
22
+ return order[a.severity] - order[b.severity];
23
+ });
24
+ const table = new Table({
25
+ head: [
26
+ chalk.dim(''),
27
+ chalk.dim('Rule'),
28
+ chalk.dim('Severity'),
29
+ chalk.dim('Tool/Page'),
30
+ chalk.dim('Issue'),
31
+ ],
32
+ colWidths: [3, 10, 9, 16, 38],
33
+ style: {
34
+ head: [],
35
+ border: ['dim'],
36
+ },
37
+ wordWrap: true,
38
+ });
39
+ for (const finding of sorted.slice(0, 15)) {
40
+ // Show top 15
41
+ const icon = finding.severity === 'critical'
42
+ ? chalk.red(figures.cross)
43
+ : finding.severity === 'warning'
44
+ ? chalk.yellow(figures.warning)
45
+ : chalk.blue(figures.info);
46
+ const severityColor = finding.severity === 'critical'
47
+ ? chalk.red
48
+ : finding.severity === 'warning'
49
+ ? chalk.yellow
50
+ : chalk.blue;
51
+ table.push([
52
+ icon,
53
+ chalk.white(finding.ruleId),
54
+ severityColor(finding.severity.toUpperCase()),
55
+ chalk.dim(finding.tool ?? finding.page ?? '—'),
56
+ chalk.white(finding.message),
57
+ ]);
58
+ }
59
+ console.log(table.toString());
60
+ if (sorted.length > 15) {
61
+ console.log(chalk.dim(` ... and ${sorted.length - 15} more issues`));
62
+ }
63
+ // Summary line
64
+ const criticalCount = findings.filter((f) => f.severity === 'critical').length;
65
+ const warningCount = findings.filter((f) => f.severity === 'warning').length;
66
+ const infoCount = findings.filter((f) => f.severity === 'info').length;
67
+ console.log('');
68
+ console.log(` ${chalk.bold('Total:')} ` +
69
+ (criticalCount > 0 ? chalk.red(`${criticalCount} critical `) : '') +
70
+ (warningCount > 0 ? chalk.yellow(`${warningCount} warnings `) : '') +
71
+ (infoCount > 0 ? chalk.blue(`${infoCount} info`) : ''));
72
+ }
73
+ /**
74
+ * Render recommendations
75
+ */
76
+ export function renderRecommendations(recs) {
77
+ if (recs.length === 0) {
78
+ return;
79
+ }
80
+ console.log('');
81
+ console.log(chalk.bold.cyan(' Top Actions to Improve Your Score'));
82
+ console.log(chalk.dim(' ' + '─'.repeat(Math.min(50, (process.stdout.columns || 80) - 4))));
83
+ console.log('');
84
+ for (const rec of recs.slice(0, 5)) {
85
+ const num = chalk.bold.white(` ${rec.priority}.`);
86
+ const action = chalk.white(rec.action);
87
+ const impact = chalk.green(`+${rec.scoreImpact} pts`);
88
+ const effortColor = rec.effort === 'low'
89
+ ? chalk.green
90
+ : rec.effort === 'medium'
91
+ ? chalk.yellow
92
+ : chalk.red;
93
+ const effortLabel = effortColor(`[${rec.effort} effort]`);
94
+ console.log(`${num} ${action}`);
95
+ console.log(` ${impact} ${effortLabel}`);
96
+ console.log('');
97
+ }
98
+ // Show projected score
99
+ const totalImpact = recs.slice(0, 5).reduce((sum, r) => sum + r.scoreImpact, 0);
100
+ console.log(chalk.dim(' If you implement all 5: ') +
101
+ chalk.bold.green(`+${totalImpact} points projected improvement`));
102
+ }
103
+ /**
104
+ * Render a tool card
105
+ */
106
+ export function renderToolCard(tool, issues, isExisting) {
107
+ const statusIcon = isExisting
108
+ ? chalk.green(figures.tick)
109
+ : chalk.yellow(figures.star);
110
+ const statusLabel = isExisting
111
+ ? chalk.green('REGISTERED')
112
+ : chalk.yellow('SUGGESTED');
113
+ let content = '';
114
+ content += `${statusIcon} ${chalk.bold.white(tool.name)} ${chalk.dim('—')} ${statusLabel}\n`;
115
+ content += chalk.dim('─'.repeat(Math.min(50, (process.stdout.columns || 80) - 4))) + '\n';
116
+ // Description
117
+ content +=
118
+ chalk.cyan('Description: ') +
119
+ chalk.white(tool.description || chalk.dim('(none)')) +
120
+ '\n';
121
+ content += '\n';
122
+ // Parameters
123
+ content += chalk.cyan('Parameters:') + '\n';
124
+ if (tool.inputSchema?.properties) {
125
+ const props = tool.inputSchema.properties;
126
+ const required = tool.inputSchema.required || [];
127
+ const entries = Object.entries(props);
128
+ entries.forEach(([name, schema], i) => {
129
+ const isLast = i === entries.length - 1;
130
+ const prefix = isLast ? '└── ' : '├── ';
131
+ const isReq = required.includes(name);
132
+ const nameStr = chalk.white(name);
133
+ const schemaObj = schema;
134
+ const typeStr = chalk.dim(`(${schemaObj['type'] || 'any'}${isReq ? ', required' : ''})`);
135
+ const descStr = schemaObj['description']
136
+ ? chalk.dim(' — ') + chalk.dim(String(schemaObj['description']))
137
+ : '';
138
+ content += ` ${chalk.dim(prefix)}${nameStr} ${typeStr}${descStr}\n`;
139
+ });
140
+ }
141
+ else {
142
+ content += chalk.dim(' (no parameters defined)') + '\n';
143
+ }
144
+ // Issues
145
+ if (issues.length > 0) {
146
+ content += '\n';
147
+ content += chalk.cyan('Issues:') + '\n';
148
+ for (const issue of issues) {
149
+ const icon = issue.severity === 'critical'
150
+ ? chalk.red(figures.cross)
151
+ : issue.severity === 'warning'
152
+ ? chalk.yellow(figures.warning)
153
+ : chalk.blue(figures.info);
154
+ content += ` ${icon} ${chalk.dim(issue.ruleId + ':')} ${issue.message}\n`;
155
+ }
156
+ }
157
+ // Determine border color
158
+ const borderColor = issues.some((i) => i.severity === 'critical')
159
+ ? 'red'
160
+ : issues.some((i) => i.severity === 'warning')
161
+ ? 'yellow'
162
+ : isExisting
163
+ ? 'green'
164
+ : 'cyan';
165
+ return boxen(content.trimEnd(), {
166
+ padding: { top: 0, bottom: 0, left: 1, right: 1 },
167
+ borderStyle: 'round',
168
+ borderColor: borderColor,
169
+ dimBorder: true,
170
+ });
171
+ }
172
+ /**
173
+ * Render tools list (compact)
174
+ */
175
+ export function renderToolsList(tools) {
176
+ if (tools.length === 0) {
177
+ console.log(chalk.dim(' No tools detected'));
178
+ return;
179
+ }
180
+ for (const tool of tools) {
181
+ const sourceIcon = tool.source === 'imperative' ? 'JS' : 'HTML';
182
+ const sourceColor = tool.source === 'imperative' ? chalk.yellow : chalk.cyan;
183
+ console.log(` ${chalk.green(figures.tick)} ${chalk.bold(tool.name)} ` +
184
+ chalk.dim(`[${sourceColor(sourceIcon)}]`) +
185
+ (tool.description
186
+ ? chalk.dim(` — ${truncateText(tool.description, 50)}`)
187
+ : ''));
188
+ }
189
+ }
190
+ //# sourceMappingURL=findings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings.js","sourceRoot":"","sources":["../../src/ui/findings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * UI Module
3
+ */
4
+ export * from './design-tokens.js';
5
+ export * from './utils.js';
6
+ export * from './banner.js';
7
+ export * from './spinner.js';
8
+ export * from './score-display.js';
9
+ export * from './findings.js';
@@ -0,0 +1,10 @@
1
+ /**
2
+ * UI Module
3
+ */
4
+ export * from './design-tokens.js';
5
+ export * from './utils.js';
6
+ export * from './banner.js';
7
+ export * from './spinner.js';
8
+ export * from './score-display.js';
9
+ export * from './findings.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * AuditApp Component
3
+ *
4
+ * Main Ink application for the AgentReady audit CLI
5
+ */
6
+ import type { AuditConfig } from '../../core/types/audit.js';
7
+ interface AuditAppProps {
8
+ url: string;
9
+ version: string;
10
+ config: AuditConfig;
11
+ onAuditStart?: () => Promise<void>;
12
+ }
13
+ export declare function AuditApp({ url, version, config }: AuditAppProps): import("react/jsx-runtime").JSX.Element;
14
+ export {};
@@ -0,0 +1,113 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * AuditApp Component
4
+ *
5
+ * Main Ink application for the AgentReady audit CLI
6
+ */
7
+ import { Box, Text, Newline, Static } from 'ink';
8
+ import { useState, useEffect } from 'react';
9
+ import { Header } from './components/Header.js';
10
+ import { Spinner } from './components/Spinner.js';
11
+ import { ProgressBar } from './components/ProgressBar.js';
12
+ import { ScoreCard, ScoreBreakdown } from './components/ScoreCard.js';
13
+ import { CategoryBars } from './components/CategoryBars.js';
14
+ import { FindingsTable } from './components/FindingsTable.js';
15
+ import { ToolsList } from './components/ToolCard.js';
16
+ import { SimulationResults } from './components/SimulationResults.js';
17
+ import { useAudit } from './hooks/useAudit.js';
18
+ import { useAnimatedScore } from './hooks/useAnimation.js';
19
+ // Phase display configuration
20
+ const PHASE_LABELS = {
21
+ init: 'Initializing',
22
+ browser: 'Launching browser',
23
+ crawling: 'Crawling pages',
24
+ detecting: 'Detecting tools',
25
+ analyzing: 'Running rules',
26
+ simulation: 'Agent simulation',
27
+ complete: 'Complete',
28
+ error: 'Error',
29
+ };
30
+ export function AuditApp({ url, version, config }) {
31
+ const { state, setPhase, setProgress, setTools, setFindings, setScore, complete, setError } = useAudit();
32
+ const [completedSteps, setCompletedSteps] = useState([]);
33
+ // Animated score
34
+ const targetScore = state.score?.total ?? 0;
35
+ const { currentScore, isAnimating } = useAnimatedScore({
36
+ targetScore,
37
+ duration: 1500,
38
+ easing: 'easeOut',
39
+ });
40
+ // Demo: Simulate audit phases (in real implementation, this connects to actual audit logic)
41
+ useEffect(() => {
42
+ // This is a placeholder - actual integration will call the audit functions
43
+ const simulateAudit = async () => {
44
+ try {
45
+ // Phase 1: Browser
46
+ setPhase('browser', 'Launching Chromium');
47
+ await delay(800);
48
+ addCompletedStep('Browser launched');
49
+ // Phase 2: Crawling
50
+ setPhase('crawling', 'Loading page');
51
+ setProgress(0, 1, 'Loading');
52
+ await delay(1000);
53
+ setProgress(1, 1, 'Loaded');
54
+ addCompletedStep(`Loaded: ${url}`);
55
+ // Phase 3: Detection
56
+ setPhase('detecting', 'Scanning for tools');
57
+ await delay(600);
58
+ // Mock tools
59
+ const mockTools = [
60
+ { name: 'search-flights', description: 'Search for available flights', source: 'imperative', pageUrl: url, inputSchema: { type: 'object', properties: { origin: { type: 'string' }, destination: { type: 'string' }, date: { type: 'string' } } } },
61
+ { name: 'book-flight', description: 'Book a selected flight', source: 'imperative', pageUrl: url, inputSchema: { type: 'object', properties: { flightId: { type: 'string' }, passengers: { type: 'number' } } } },
62
+ ];
63
+ setTools(mockTools);
64
+ addCompletedStep(`Found ${mockTools.length} tools`);
65
+ // Phase 4: Analysis
66
+ setPhase('analyzing', 'Running audit rules');
67
+ await delay(800);
68
+ // Mock findings
69
+ const mockFindings = [
70
+ { ruleId: 'tool-has-description', severity: 'warning', message: 'Tool description is too short', scoreImpact: 5 },
71
+ ];
72
+ setFindings(mockFindings);
73
+ addCompletedStep('Rules completed');
74
+ // Phase 5: Score
75
+ const mockScore = {
76
+ total: 78,
77
+ grade: 'B',
78
+ categories: [
79
+ { id: 'implementation', name: 'Implementation', score: 40, maxScore: 45, percentage: 89 },
80
+ { id: 'description', name: 'Description', score: 25, maxScore: 35, percentage: 71 },
81
+ { id: 'schema', name: 'Schema', score: 13, maxScore: 20, percentage: 65 },
82
+ ],
83
+ issueCount: { critical: 0, warning: 1, info: 0 },
84
+ };
85
+ setScore(mockScore);
86
+ // Complete
87
+ await delay(2000); // Let score animation run
88
+ complete();
89
+ }
90
+ catch (err) {
91
+ setError(err instanceof Error ? err.message : 'Unknown error');
92
+ }
93
+ };
94
+ simulateAudit();
95
+ }, [url]);
96
+ const addCompletedStep = (step) => {
97
+ setCompletedSteps(prev => [...prev, step]);
98
+ };
99
+ const isRunning = !['complete', 'error'].includes(state.phase);
100
+ const showScore = state.score !== null;
101
+ return (_jsxs(Box, { flexDirection: "column", paddingY: 1, children: [_jsx(Header, { url: url, version: version }), _jsx(Static, { items: completedSteps, children: (step, index) => (_jsxs(Box, { paddingX: 2, children: [_jsx(Text, { color: "green", children: "\u2713" }), _jsxs(Text, { children: [" ", step] })] }, index)) }), isRunning && (_jsx(Box, { paddingX: 2, marginTop: 1, children: _jsx(Spinner, { label: state.phaseMessage }) })), state.phase === 'crawling' && state.progress.total > 0 && (_jsx(Box, { paddingX: 2, marginTop: 1, children: _jsx(ProgressBar, { value: (state.progress.current / state.progress.total) * 100, label: state.progress.label }) })), showScore && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Newline, {}), _jsx(Box, { paddingX: 2, justifyContent: "center", children: _jsx(ScoreCard, { score: isAnimating ? currentScore : state.score.total, grade: state.score.grade }) }), state.score.categories && (_jsx(Box, { marginTop: 1, children: _jsx(CategoryBars, { categories: state.score.categories.map(c => ({
102
+ id: c.id,
103
+ name: c.name,
104
+ score: c.score,
105
+ maxScore: c.maxScore,
106
+ percentage: c.percentage,
107
+ })) }) })), state.tools.length > 0 && (_jsx(Box, { marginTop: 1, children: _jsx(ToolsList, { tools: state.tools, compact: true }) })), state.findings.length > 0 && (_jsx(Box, { marginTop: 1, children: _jsx(FindingsTable, { findings: state.findings.map((f, i) => ({ ...f, id: String(i) })) }) }))] })), state.phase === 'error' && (_jsx(Box, { paddingX: 2, marginTop: 1, children: _jsxs(Text, { color: "red", children: ["Error: ", state.error] }) })), state.phase === 'complete' && (_jsx(Box, { paddingX: 2, marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["Audit completed in ", (state.duration / 1000).toFixed(1), "s"] }) }))] }));
108
+ }
109
+ // Helper
110
+ function delay(ms) {
111
+ return new Promise(resolve => setTimeout(resolve, ms));
112
+ }
113
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/ui/ink/App.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * FullScreenLayout Component
3
+ *
4
+ * Full-screen container that fills the terminal with Web-MCP.net branding
5
+ */
6
+ import type { ReactNode } from 'react';
7
+ interface FullScreenLayoutProps {
8
+ children: ReactNode;
9
+ url: string;
10
+ version: string;
11
+ navigationWidth?: number;
12
+ showBack?: boolean;
13
+ onQuit?: () => void;
14
+ }
15
+ export declare function FullScreenLayout({ children, url, version, navigationWidth, showBack, onQuit, }: FullScreenLayoutProps): import("react/jsx-runtime").JSX.Element;
16
+ export {};
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * FullScreenLayout Component
4
+ *
5
+ * Full-screen container that fills the terminal with Web-MCP.net branding
6
+ */
7
+ import { Box, Text, useApp, useInput } from 'ink';
8
+ import { useTerminalSize } from './hooks/useTerminalSize.js';
9
+ import { Footer } from './components/Footer.js';
10
+ import { getDomain } from '../utils.js';
11
+ export function FullScreenLayout({ children, url, version, navigationWidth = 26, showBack = false, onQuit, }) {
12
+ const { width, height } = useTerminalSize();
13
+ const { exit } = useApp();
14
+ // Handle quit
15
+ useInput((input, key) => {
16
+ if (input === 'q' || (key.ctrl && input === 'c')) {
17
+ if (onQuit) {
18
+ onQuit();
19
+ }
20
+ exit();
21
+ }
22
+ });
23
+ // Calculate content height (total - header - footer)
24
+ const headerHeight = 3;
25
+ const footerHeight = 2;
26
+ const contentHeight = Math.max(10, height - headerHeight - footerHeight);
27
+ return (_jsxs(Box, { flexDirection: "column", width: width, height: height, children: [_jsxs(Box, { borderStyle: "single", borderBottom: true, borderTop: false, borderLeft: false, borderRight: false, paddingX: 1, justifyContent: "space-between", children: [_jsxs(Box, { gap: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Web-MCP" }), _jsx(Text, { bold: true, color: "magenta", children: ".net" }), _jsxs(Text, { dimColor: true, children: [" v", version] })] }), _jsxs(Box, { gap: 1, children: [_jsx(Text, { dimColor: true, children: "Auditing:" }), _jsx(Text, { color: "cyan", children: getDomain(url) })] })] }), _jsx(Box, { flexGrow: 1, height: contentHeight, children: children }), _jsx(Footer, { showBack: showBack })] }));
28
+ }
29
+ //# sourceMappingURL=FullScreenLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FullScreenLayout.js","sourceRoot":"","sources":["../../../src/ui/ink/FullScreenLayout.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAWxC,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,GAAG,EACH,OAAO,EACP,eAAe,GAAG,EAAE,EACpB,QAAQ,GAAG,KAAK,EAChB,MAAM,GACgB;IACtB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,cAAc;IACd,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,CAAC,EAAE,CAAC;YACjD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,EAAE,CAAC;YACX,CAAC;YACD,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,qDAAqD;IACrD,MAAM,YAAY,GAAG,CAAC,CAAC;IACvB,MAAM,YAAY,GAAG,CAAC,CAAC;IACvB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC;IAEzE,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,aAGd,MAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,YAAY,QACZ,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,KAAK,EACjB,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,CAAC,EACX,cAAc,EAAC,eAAe,aAE9B,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACT,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,wBAAe,EACtC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,SAAS,qBAAY,EACtC,MAAC,IAAI,IAAC,QAAQ,yBAAI,OAAO,IAAQ,IAC7B,EACN,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACT,KAAC,IAAI,IAAC,QAAQ,gCAAiB,EAC/B,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,SAAS,CAAC,GAAG,CAAC,GAAQ,IACtC,IACF,EAGN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,YACpC,QAAQ,GACL,EAGN,KAAC,MAAM,IAAC,QAAQ,EAAE,QAAQ,GAAI,IAC1B,CACP,CAAC;AACJ,CAAC"}