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,38 @@
1
+ /**
2
+ * Ink Theme Configuration
3
+ *
4
+ * Delegates to shared design tokens for consistency with CLI mode.
5
+ */
6
+ import { GRADE_COLORS, getGradeColor as sharedGetGradeColor, SEVERITY_COLORS, getSeverityColor as sharedGetSeverityColor, getScoreColor as sharedGetScoreColor, SPINNER_COLOR, } from '../design-tokens.js';
7
+ export const theme = {
8
+ colors: {
9
+ primary: 'cyan',
10
+ secondary: 'magenta',
11
+ success: 'green',
12
+ warning: 'yellow',
13
+ error: 'red',
14
+ info: 'blue',
15
+ muted: 'gray',
16
+ accent: 'magenta',
17
+ },
18
+ grades: GRADE_COLORS,
19
+ severities: SEVERITY_COLORS,
20
+ animation: {
21
+ progressBar: 'cyan',
22
+ progressBackground: 'gray',
23
+ activeScan: 'yellow',
24
+ completeScan: 'green',
25
+ pendingScan: 'gray',
26
+ highlight: 'magenta',
27
+ },
28
+ crawl: {
29
+ done: 'green',
30
+ active: 'yellow',
31
+ pending: 'gray',
32
+ },
33
+ spinner: SPINNER_COLOR,
34
+ };
35
+ export const getGradeColor = sharedGetGradeColor;
36
+ export const getSeverityColor = sharedGetSeverityColor;
37
+ export const getScoreColor = sharedGetScoreColor;
38
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/ui/ink/theme.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,YAAY,EACZ,aAAa,IAAI,mBAAmB,EACpC,eAAe,EACf,gBAAgB,IAAI,sBAAsB,EAC1C,aAAa,IAAI,mBAAmB,EACpC,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM;QACf,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE,YAAY;IACpB,UAAU,EAAE,eAAe;IAC3B,SAAS,EAAE;QACT,WAAW,EAAE,MAAM;QACnB,kBAAkB,EAAE,MAAM;QAC1B,UAAU,EAAE,QAAQ;QACpB,YAAY,EAAE,OAAO;QACrB,WAAW,EAAE,MAAM;QACnB,SAAS,EAAE,SAAS;KACrB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,MAAM;KAChB;IACD,OAAO,EAAE,aAAa;CACd,CAAC;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAC;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Types for Full-Screen Interactive TUI
3
+ */
4
+ export type AppPhase = 'onboarding' | 'crawling' | 'interactive';
5
+ export type ViewId = 'dashboard' | 'tools' | 'findings' | 'simulation';
6
+ export interface ViewState {
7
+ view: ViewId;
8
+ detail?: string;
9
+ params?: Record<string, string>;
10
+ }
11
+ export interface NavigationItem {
12
+ id: ViewId;
13
+ label: string;
14
+ icon: string;
15
+ }
16
+ export interface FocusArea {
17
+ id: 'navigation' | 'content';
18
+ }
19
+ export interface ToolWithId {
20
+ id: string;
21
+ name: string;
22
+ description: string;
23
+ source: 'imperative' | 'declarative';
24
+ pageUrl: string;
25
+ inputSchema?: {
26
+ type: 'object';
27
+ properties?: Record<string, {
28
+ type: string;
29
+ description?: string;
30
+ }>;
31
+ required?: string[];
32
+ };
33
+ }
34
+ export interface FindingWithId {
35
+ id: string;
36
+ ruleId: string;
37
+ severity: 'critical' | 'warning' | 'info';
38
+ message: string;
39
+ tool?: string;
40
+ page?: string;
41
+ fix?: string;
42
+ scoreImpact?: number;
43
+ }
44
+ export interface SimulationTestCase {
45
+ id: string;
46
+ prompt: string;
47
+ toolName: string;
48
+ success: boolean;
49
+ score: number;
50
+ rounds: number;
51
+ trace?: SimulationTraceStep[];
52
+ }
53
+ export interface SimulationTraceStep {
54
+ type: 'agent' | 'tool' | 'result';
55
+ content: string;
56
+ timestamp?: number;
57
+ }
58
+ export interface CategoryWithId {
59
+ id: string;
60
+ name: string;
61
+ score: number;
62
+ maxScore: number;
63
+ percentage: number;
64
+ }
65
+ export interface DiscoveredLink {
66
+ path: string;
67
+ status: 'pending' | 'active' | 'done';
68
+ toolCount?: number;
69
+ currentAction?: string;
70
+ }
71
+ export interface CrawlState {
72
+ phase: 'discovering' | 'analyzing' | 'complete';
73
+ progress: number;
74
+ links: DiscoveredLink[];
75
+ currentMessage: string;
76
+ elapsedTime: number;
77
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Types for Full-Screen Interactive TUI
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ui/ink/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Score Display
3
+ *
4
+ * Renders the score summary with grade and category breakdown.
5
+ */
6
+ import type { ScoreSummary } from '../core/types/audit.js';
7
+ /**
8
+ * Animate the score reveal
9
+ */
10
+ export declare function animateScoreReveal(data: ScoreSummary, options?: {
11
+ animate?: boolean;
12
+ }): Promise<void>;
13
+ /**
14
+ * Display score without animation (for CI)
15
+ */
16
+ export declare function displayScoreStatic(data: ScoreSummary): void;
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Score Display
3
+ *
4
+ * Renders the score summary with grade and category breakdown.
5
+ */
6
+ import chalk from 'chalk';
7
+ import gradient from 'gradient-string';
8
+ import logUpdate from 'log-update';
9
+ import { GRADE_ASCII, getGradeInfo } from '../scoring/grades.js';
10
+ import { getGradeColor, SCORE_THRESHOLDS } from './design-tokens.js';
11
+ import { stripAnsi } from './utils.js';
12
+ /**
13
+ * Get color function for a grade
14
+ */
15
+ function gradeColor(grade) {
16
+ const color = getGradeColor(grade);
17
+ if (color.startsWith('#')) {
18
+ return chalk.bold.hex(color);
19
+ }
20
+ return chalk.bold[color];
21
+ }
22
+ /**
23
+ * Get gradient for a grade
24
+ */
25
+ function gradeGradient(grade) {
26
+ switch (grade) {
27
+ case 'A+':
28
+ case 'A':
29
+ return gradient(['#43e97b', '#38f9d7']);
30
+ case 'B+':
31
+ case 'B':
32
+ return gradient(['#f5af19', '#f12711']);
33
+ case 'C+':
34
+ case 'C':
35
+ return gradient(['#FF8C00', '#FF4500']);
36
+ case 'D':
37
+ case 'F':
38
+ return gradient(['#FF4500', '#DC143C']);
39
+ default:
40
+ return gradient(['#ffffff', '#cccccc']);
41
+ }
42
+ }
43
+ /**
44
+ * Sleep helper
45
+ */
46
+ function sleep(ms) {
47
+ return new Promise((resolve) => setTimeout(resolve, ms));
48
+ }
49
+ /**
50
+ * Build a score frame for display
51
+ */
52
+ function buildScoreFrame(score, data, gradeDisplay, progress, // 0-1
53
+ showDetails) {
54
+ const color = gradeColor(data.grade);
55
+ const barWidth = 30;
56
+ let output = '';
57
+ output += '\n';
58
+ output += chalk.dim(' ╔═══════════════════════════════════════════════════════╗\n');
59
+ output += chalk.dim(' ║ ║\n');
60
+ // Score number (large)
61
+ const scoreLine = chalk.dim(' ║') +
62
+ ` AGENT READINESS SCORE: ${color(String(score).padStart(3))} / 100`;
63
+ const scoreCleanLength = stripAnsi(scoreLine).length;
64
+ output += scoreLine + ' '.repeat(Math.max(0, 53 - scoreCleanLength)) + chalk.dim('║\n');
65
+ output += chalk.dim(' ║ ║\n');
66
+ if (showDetails) {
67
+ // Grade ASCII
68
+ const gradeLines = gradeDisplay.split('\n').filter((l) => l.trim());
69
+ gradeLines.forEach((line) => {
70
+ const cleanLine = stripAnsi(line);
71
+ const padding = Math.max(0, 49 - cleanLine.length);
72
+ output += chalk.dim(' ║') + ' ' + line + ' '.repeat(padding) + chalk.dim('║\n');
73
+ });
74
+ output += chalk.dim(' ║ ║\n');
75
+ // Category bars
76
+ for (const cat of data.categories) {
77
+ const catProgress = progress * (cat.percentage / 100);
78
+ const filledWidth = Math.round(catProgress * barWidth);
79
+ const emptyWidth = barWidth - filledWidth;
80
+ const barColor = cat.percentage >= SCORE_THRESHOLDS.good
81
+ ? chalk.green
82
+ : cat.percentage >= SCORE_THRESHOLDS.moderate
83
+ ? chalk.yellow
84
+ : chalk.red;
85
+ const bar = barColor('█'.repeat(filledWidth)) + chalk.dim('░'.repeat(emptyWidth));
86
+ const catName = cat.name.padEnd(18);
87
+ const catScore = String(Math.round(cat.percentage * progress)).padStart(3);
88
+ const catLine = chalk.dim(' ║') +
89
+ ` ${chalk.white(catName)} ${bar} ${chalk.white(catScore)}%`;
90
+ const catCleanLength = stripAnsi(catLine).length;
91
+ output += catLine + ' '.repeat(Math.max(0, 53 - catCleanLength)) + chalk.dim('║\n');
92
+ }
93
+ output += chalk.dim(' ║ ║\n');
94
+ // Issue summary
95
+ const { critical, warning, info } = data.issueCount;
96
+ const issueText = [
97
+ critical > 0 ? chalk.red(`${critical} critical`) : null,
98
+ warning > 0 ? chalk.yellow(`${warning} warnings`) : null,
99
+ info > 0 ? chalk.blue(`${info} info`) : null,
100
+ ]
101
+ .filter(Boolean)
102
+ .join(', ');
103
+ const totalIssues = critical + warning + info;
104
+ if (totalIssues > 0) {
105
+ const issueLine = chalk.dim(' ║') +
106
+ ` ${chalk.white(`${totalIssues} issues found`)} (${issueText})`;
107
+ const issueCleanLength = stripAnsi(issueLine).length;
108
+ output += issueLine + ' '.repeat(Math.max(0, 53 - issueCleanLength)) + chalk.dim('║\n');
109
+ }
110
+ else {
111
+ output +=
112
+ chalk.dim(' ║') +
113
+ ` ${chalk.green('No issues found')}` +
114
+ ' '.repeat(35) +
115
+ chalk.dim('║\n');
116
+ }
117
+ }
118
+ output += chalk.dim(' ║ ║\n');
119
+ output += chalk.dim(' ╚═══════════════════════════════════════════════════════╝\n');
120
+ return output;
121
+ }
122
+ /**
123
+ * Animate the score reveal
124
+ */
125
+ export async function animateScoreReveal(data, options = {}) {
126
+ const { animate = true } = options;
127
+ const grad = gradeGradient(data.grade);
128
+ const gradeArt = GRADE_ASCII[data.grade] || GRADE_ASCII['C'];
129
+ if (!animate) {
130
+ // Static display
131
+ const gradeDisplay = grad.multiline(gradeArt);
132
+ const output = buildScoreFrame(data.total, data, gradeDisplay, 1, true);
133
+ console.log(output);
134
+ return;
135
+ }
136
+ // Animated display
137
+ const totalFrames = 30;
138
+ const frameDelay = 50;
139
+ for (let frame = 0; frame <= totalFrames; frame++) {
140
+ const currentScore = Math.round((frame / totalFrames) * data.total);
141
+ const showGrade = frame === totalFrames;
142
+ const gradeDisplay = showGrade
143
+ ? grad.multiline(gradeArt)
144
+ : chalk.dim(gradeArt.replace(/[█╔╗║╚╝═╋]/g, '░'));
145
+ const output = buildScoreFrame(currentScore, data, gradeDisplay, frame / totalFrames, showGrade);
146
+ logUpdate(output);
147
+ await sleep(frameDelay);
148
+ }
149
+ // Flash effect
150
+ for (let flash = 0; flash < 3; flash++) {
151
+ const bright = flash % 2 === 0;
152
+ const gradeDisplay = bright
153
+ ? chalk.bold(grad.multiline(gradeArt))
154
+ : grad.multiline(gradeArt);
155
+ const output = buildScoreFrame(data.total, data, gradeDisplay, 1, true);
156
+ logUpdate(output);
157
+ await sleep(150);
158
+ }
159
+ // Final display
160
+ const finalGradeDisplay = grad.multiline(gradeArt);
161
+ const finalOutput = buildScoreFrame(data.total, data, finalGradeDisplay, 1, true);
162
+ logUpdate(finalOutput);
163
+ logUpdate.done();
164
+ }
165
+ /**
166
+ * Display score without animation (for CI)
167
+ */
168
+ export function displayScoreStatic(data) {
169
+ const color = gradeColor(data.grade);
170
+ const info = getGradeInfo(data.total);
171
+ console.log('');
172
+ console.log(` Agent Readiness Score: ${color(`${data.total}/100`)} (${color(data.grade)}) - ${info.label}`);
173
+ console.log('');
174
+ // Category breakdown
175
+ for (const cat of data.categories) {
176
+ const barWidth = 20;
177
+ const filledWidth = Math.round((cat.percentage / 100) * barWidth);
178
+ const emptyWidth = barWidth - filledWidth;
179
+ const barColor = cat.percentage >= SCORE_THRESHOLDS.good
180
+ ? chalk.green
181
+ : cat.percentage >= SCORE_THRESHOLDS.moderate
182
+ ? chalk.yellow
183
+ : chalk.red;
184
+ const bar = barColor('█'.repeat(filledWidth)) + chalk.dim('░'.repeat(emptyWidth));
185
+ console.log(` ${cat.name.padEnd(20)} ${bar} ${String(cat.percentage).padStart(3)}%`);
186
+ }
187
+ console.log('');
188
+ // Issue counts
189
+ const { critical, warning, info: infoCount } = data.issueCount;
190
+ const total = critical + warning + infoCount;
191
+ if (total > 0) {
192
+ console.log(` Issues: ${chalk.red(`${critical} critical`)}, ` +
193
+ `${chalk.yellow(`${warning} warnings`)}, ` +
194
+ `${chalk.blue(`${infoCount} info`)}`);
195
+ }
196
+ else {
197
+ console.log(` ${chalk.green('No issues found')}`);
198
+ }
199
+ console.log('');
200
+ }
201
+ //# sourceMappingURL=score-display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score-display.js","sourceRoot":"","sources":["../../src/ui/score-display.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Spinner Utilities
3
+ *
4
+ * Wrappers around ora for consistent spinner behavior.
5
+ */
6
+ import { type Ora } from 'ora';
7
+ /**
8
+ * Step result status
9
+ */
10
+ export type StepStatus = 'success' | 'warning' | 'error' | 'skip';
11
+ /**
12
+ * Step result
13
+ */
14
+ export interface StepResult {
15
+ status: StepStatus;
16
+ detail: string;
17
+ }
18
+ /**
19
+ * Create a spinner with consistent styling
20
+ */
21
+ export declare function createSpinner(text: string): Ora;
22
+ /**
23
+ * Run an async operation with a spinner
24
+ */
25
+ export declare function withSpinner<T>(text: string, fn: () => Promise<T>): Promise<T>;
26
+ /**
27
+ * Run a step with spinner and status display
28
+ */
29
+ export declare function runStep(description: string, fn: () => Promise<StepResult>): Promise<StepResult>;
30
+ /**
31
+ * Success step result
32
+ */
33
+ export declare function success(detail: string): StepResult;
34
+ /**
35
+ * Warning step result
36
+ */
37
+ export declare function warning(detail: string): StepResult;
38
+ /**
39
+ * Error step result
40
+ */
41
+ export declare function error(detail: string): StepResult;
42
+ /**
43
+ * Skip step result
44
+ */
45
+ export declare function skip(detail: string): StepResult;
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Spinner Utilities
3
+ *
4
+ * Wrappers around ora for consistent spinner behavior.
5
+ */
6
+ import ora, {} from 'ora';
7
+ import chalk from 'chalk';
8
+ import figures from 'figures';
9
+ import { STEP_DESCRIPTION_PAD, truncateText } from './design-tokens.js';
10
+ /**
11
+ * Create a spinner with consistent styling
12
+ */
13
+ export function createSpinner(text) {
14
+ return ora({
15
+ text: chalk.white(text),
16
+ color: 'cyan',
17
+ spinner: 'dots',
18
+ });
19
+ }
20
+ /**
21
+ * Run an async operation with a spinner
22
+ */
23
+ export async function withSpinner(text, fn) {
24
+ const spinner = createSpinner(text);
25
+ spinner.start();
26
+ try {
27
+ const result = await fn();
28
+ spinner.succeed(chalk.green(text));
29
+ return result;
30
+ }
31
+ catch (error) {
32
+ spinner.fail(chalk.red(text));
33
+ throw error;
34
+ }
35
+ }
36
+ /**
37
+ * Run a step with spinner and status display
38
+ */
39
+ export async function runStep(description, fn) {
40
+ // Pad the description to align results
41
+ const truncated = truncateText(description, STEP_DESCRIPTION_PAD);
42
+ const paddedDesc = truncated.padEnd(STEP_DESCRIPTION_PAD, '.');
43
+ const spinner = ora({
44
+ text: chalk.white(paddedDesc),
45
+ color: 'cyan',
46
+ spinner: 'dots',
47
+ }).start();
48
+ try {
49
+ const result = await fn();
50
+ switch (result.status) {
51
+ case 'success':
52
+ spinner.stopAndPersist({
53
+ symbol: chalk.green(figures.tick),
54
+ text: chalk.white(paddedDesc) + ' ' + chalk.green(result.detail),
55
+ });
56
+ break;
57
+ case 'warning':
58
+ spinner.stopAndPersist({
59
+ symbol: chalk.yellow(figures.warning),
60
+ text: chalk.white(paddedDesc) + ' ' + chalk.yellow(result.detail),
61
+ });
62
+ break;
63
+ case 'error':
64
+ spinner.stopAndPersist({
65
+ symbol: chalk.red(figures.cross),
66
+ text: chalk.white(paddedDesc) + ' ' + chalk.red(result.detail),
67
+ });
68
+ break;
69
+ case 'skip':
70
+ spinner.stopAndPersist({
71
+ symbol: chalk.dim(figures.line),
72
+ text: chalk.dim(paddedDesc) + ' ' + chalk.dim(result.detail),
73
+ });
74
+ break;
75
+ }
76
+ return result;
77
+ }
78
+ catch (error) {
79
+ spinner.stopAndPersist({
80
+ symbol: chalk.red(figures.cross),
81
+ text: chalk.white(paddedDesc) +
82
+ ' ' +
83
+ chalk.red(error instanceof Error ? error.message : 'failed'),
84
+ });
85
+ throw error;
86
+ }
87
+ }
88
+ /**
89
+ * Success step result
90
+ */
91
+ export function success(detail) {
92
+ return { status: 'success', detail };
93
+ }
94
+ /**
95
+ * Warning step result
96
+ */
97
+ export function warning(detail) {
98
+ return { status: 'warning', detail };
99
+ }
100
+ /**
101
+ * Error step result
102
+ */
103
+ export function error(detail) {
104
+ return { status: 'error', detail };
105
+ }
106
+ /**
107
+ * Skip step result
108
+ */
109
+ export function skip(detail) {
110
+ return { status: 'skip', detail };
111
+ }
112
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/ui/spinner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Shared UI Utilities
3
+ *
4
+ * Common helpers used by both CLI and TUI rendering paths.
5
+ */
6
+ /**
7
+ * Extract domain from a URL string.
8
+ */
9
+ export declare function getDomain(urlString: string): string;
10
+ /**
11
+ * Strip ANSI escape codes from a string for length calculation.
12
+ */
13
+ export declare function stripAnsi(str: string): string;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Shared UI Utilities
3
+ *
4
+ * Common helpers used by both CLI and TUI rendering paths.
5
+ */
6
+ /**
7
+ * Extract domain from a URL string.
8
+ */
9
+ export function getDomain(urlString) {
10
+ try {
11
+ const parsed = new URL(urlString);
12
+ return parsed.hostname;
13
+ }
14
+ catch {
15
+ return urlString.replace(/^https?:\/\//, '').split('/')[0] || urlString;
16
+ }
17
+ }
18
+ /**
19
+ * Strip ANSI escape codes from a string for length calculation.
20
+ */
21
+ export function stripAnsi(str) {
22
+ // eslint-disable-next-line no-control-regex
23
+ return str.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '');
24
+ }
25
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/ui/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IAC1E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,4CAA4C;IAC5C,OAAO,GAAG,CAAC,OAAO,CAChB,6EAA6E,EAC7E,EAAE,CACH,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,22 +1,74 @@
1
1
  {
2
2
  "name": "webmcp-cli",
3
- "version": "1.0.0",
4
- "description": "Animated ASCII art display for webmcp",
3
+ "version": "1.2.1",
4
+ "description": "Audit any website for AI agent readiness (WebMCP)",
5
+ "type": "module",
5
6
  "bin": {
6
- "webmcp-cli": "./index.js"
7
+ "webmcp-cli": "dist/bin/webmcp.js",
8
+ "webmcp": "dist/bin/webmcp.js",
9
+ "agentready": "dist/bin/webmcp.js"
10
+ },
11
+ "main": "./dist/index.js",
12
+ "types": "./dist/index.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.js"
17
+ }
7
18
  },
8
19
  "files": [
9
- "index.js"
20
+ "dist"
10
21
  ],
22
+ "scripts": {
23
+ "dev": "tsx src/bin/webmcp.ts",
24
+ "build": "tsc",
25
+ "test": "vitest",
26
+ "lint": "tsc --noEmit",
27
+ "prepare": "npm run build"
28
+ },
11
29
  "keywords": [
30
+ "webmcp",
31
+ "ai",
32
+ "agent",
33
+ "audit",
12
34
  "cli",
13
- "ascii",
14
- "animation"
35
+ "accessibility",
36
+ "mcp",
37
+ "model-context-protocol"
15
38
  ],
39
+ "author": "",
16
40
  "license": "MIT",
41
+ "engines": {
42
+ "node": ">=20.0.0"
43
+ },
17
44
  "dependencies": {
18
- "figlet": "^1.7.0",
19
- "gradient-string": "^2.0.2",
20
- "chalk": "^4.1.2"
45
+ "@inkjs/ui": "^2.0.0",
46
+ "ajv": "^8.17.0",
47
+ "ajv-formats": "^3.0.1",
48
+ "boxen": "^8.0.0",
49
+ "chalk": "^5.3.0",
50
+ "cheerio": "^1.0.0",
51
+ "cli-table3": "^0.6.5",
52
+ "commander": "^12.1.0",
53
+ "dotenv": "^17.2.4",
54
+ "figures": "^6.1.0",
55
+ "fs-extra": "^11.2.0",
56
+ "gradient-string": "^3.0.0",
57
+ "ink": "^6.6.0",
58
+ "ink-spinner": "^5.0.0",
59
+ "log-update": "^6.0.0",
60
+ "nanoid": "^5.0.7",
61
+ "ora": "^8.0.0",
62
+ "playwright": "^1.48.0",
63
+ "react": "^19.2.4",
64
+ "zod": "^3.23.0"
65
+ },
66
+ "devDependencies": {
67
+ "@types/fs-extra": "^11.0.4",
68
+ "@types/node": "^22.0.0",
69
+ "@types/react": "^19.2.13",
70
+ "tsx": "^4.19.0",
71
+ "typescript": "^5.6.0",
72
+ "vitest": "^2.1.0"
21
73
  }
22
74
  }