mcp-wordpress 2.4.2 → 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 (653) hide show
  1. package/README.md +124 -54
  2. package/bin/status.js +1 -1
  3. package/dist/cache/CacheInvalidation.d.ts +3 -1
  4. package/dist/cache/CacheInvalidation.d.ts.map +1 -1
  5. package/dist/cache/CacheInvalidation.js +10 -4
  6. package/dist/cache/CacheInvalidation.js.map +1 -1
  7. package/dist/cache/CacheManager.d.ts +3 -2
  8. package/dist/cache/CacheManager.d.ts.map +1 -1
  9. package/dist/cache/CacheManager.js +11 -3
  10. package/dist/cache/CacheManager.js.map +1 -1
  11. package/dist/cache/HttpCacheWrapper.d.ts +7 -6
  12. package/dist/cache/HttpCacheWrapper.d.ts.map +1 -1
  13. package/dist/cache/HttpCacheWrapper.js +8 -5
  14. package/dist/cache/HttpCacheWrapper.js.map +1 -1
  15. package/dist/cache/index.d.ts +3 -3
  16. package/dist/cache/index.d.ts.map +1 -1
  17. package/dist/cache/index.js +1 -1
  18. package/dist/cache/index.js.map +1 -1
  19. package/dist/client/CachedWordPressClient.d.ts +23 -9
  20. package/dist/client/CachedWordPressClient.d.ts.map +1 -1
  21. package/dist/client/CachedWordPressClient.js +4 -1
  22. package/dist/client/CachedWordPressClient.js.map +1 -1
  23. package/dist/client/MockWordPressClient.d.ts +2 -1
  24. package/dist/client/MockWordPressClient.d.ts.map +1 -1
  25. package/dist/client/MockWordPressClient.js +3 -1
  26. package/dist/client/MockWordPressClient.js.map +1 -1
  27. package/dist/client/api.d.ts +17 -13
  28. package/dist/client/api.d.ts.map +1 -1
  29. package/dist/client/api.js +135 -30
  30. package/dist/client/api.js.map +1 -1
  31. package/dist/client/auth.d.ts.map +1 -1
  32. package/dist/client/auth.js +2 -3
  33. package/dist/client/auth.js.map +1 -1
  34. package/dist/client/managers/AuthenticationManager.d.ts +55 -2
  35. package/dist/client/managers/AuthenticationManager.d.ts.map +1 -1
  36. package/dist/client/managers/AuthenticationManager.js +269 -71
  37. package/dist/client/managers/AuthenticationManager.js.map +1 -1
  38. package/dist/client/managers/BaseManager.d.ts +3 -3
  39. package/dist/client/managers/BaseManager.d.ts.map +1 -1
  40. package/dist/client/managers/BaseManager.js +11 -5
  41. package/dist/client/managers/BaseManager.js.map +1 -1
  42. package/dist/client/managers/RequestManager.d.ts +2 -2
  43. package/dist/client/managers/RequestManager.d.ts.map +1 -1
  44. package/dist/client/managers/RequestManager.js +25 -12
  45. package/dist/client/managers/RequestManager.js.map +1 -1
  46. package/dist/config/Config.d.ts +155 -0
  47. package/dist/config/Config.d.ts.map +1 -0
  48. package/dist/config/Config.js +215 -0
  49. package/dist/config/Config.js.map +1 -0
  50. package/dist/config/ConfigurationSchema.d.ts +21 -21
  51. package/dist/config/ConfigurationSchema.d.ts.map +1 -1
  52. package/dist/config/ConfigurationSchema.js +19 -2
  53. package/dist/config/ConfigurationSchema.js.map +1 -1
  54. package/dist/config/ServerConfiguration.d.ts +2 -1
  55. package/dist/config/ServerConfiguration.d.ts.map +1 -1
  56. package/dist/config/ServerConfiguration.js +73 -43
  57. package/dist/config/ServerConfiguration.js.map +1 -1
  58. package/dist/docs/DocumentationGenerator.d.ts +9 -8
  59. package/dist/docs/DocumentationGenerator.d.ts.map +1 -1
  60. package/dist/docs/DocumentationGenerator.js +10 -7
  61. package/dist/docs/DocumentationGenerator.js.map +1 -1
  62. package/dist/docs/MarkdownFormatter.d.ts.map +1 -1
  63. package/dist/docs/MarkdownFormatter.js +3 -2
  64. package/dist/docs/MarkdownFormatter.js.map +1 -1
  65. package/dist/dxt-entry.js +15 -14
  66. package/dist/dxt-entry.js.map +1 -1
  67. package/dist/index.d.ts +3 -1
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +37 -21
  70. package/dist/index.js.map +1 -1
  71. package/dist/performance/MetricsCollector.d.ts +13 -7
  72. package/dist/performance/MetricsCollector.d.ts.map +1 -1
  73. package/dist/performance/MetricsCollector.js +69 -27
  74. package/dist/performance/MetricsCollector.js.map +1 -1
  75. package/dist/performance/PerformanceAnalytics.d.ts +8 -2
  76. package/dist/performance/PerformanceAnalytics.d.ts.map +1 -1
  77. package/dist/performance/PerformanceAnalytics.js +17 -47
  78. package/dist/performance/PerformanceAnalytics.js.map +1 -1
  79. package/dist/performance/PerformanceMonitor.d.ts +2 -1
  80. package/dist/performance/PerformanceMonitor.d.ts.map +1 -1
  81. package/dist/performance/PerformanceMonitor.js +12 -13
  82. package/dist/performance/PerformanceMonitor.js.map +1 -1
  83. package/dist/performance/index.d.ts +2 -2
  84. package/dist/performance/index.d.ts.map +1 -1
  85. package/dist/security/AISecurityScanner.d.ts +1 -0
  86. package/dist/security/AISecurityScanner.d.ts.map +1 -1
  87. package/dist/security/AISecurityScanner.js +22 -12
  88. package/dist/security/AISecurityScanner.js.map +1 -1
  89. package/dist/security/AutomatedRemediation.d.ts +4 -3
  90. package/dist/security/AutomatedRemediation.d.ts.map +1 -1
  91. package/dist/security/AutomatedRemediation.js +46 -15
  92. package/dist/security/AutomatedRemediation.js.map +1 -1
  93. package/dist/security/InputValidator.d.ts +13 -9
  94. package/dist/security/InputValidator.d.ts.map +1 -1
  95. package/dist/security/InputValidator.js +4 -2
  96. package/dist/security/InputValidator.js.map +1 -1
  97. package/dist/security/SecurityCIPipeline.d.ts +1 -1
  98. package/dist/security/SecurityCIPipeline.d.ts.map +1 -1
  99. package/dist/security/SecurityCIPipeline.js +38 -29
  100. package/dist/security/SecurityCIPipeline.js.map +1 -1
  101. package/dist/security/SecurityConfig.d.ts +3 -3
  102. package/dist/security/SecurityConfig.d.ts.map +1 -1
  103. package/dist/security/SecurityConfig.js +13 -9
  104. package/dist/security/SecurityConfig.js.map +1 -1
  105. package/dist/security/SecurityConfigManager.d.ts +2 -2
  106. package/dist/security/SecurityConfigManager.d.ts.map +1 -1
  107. package/dist/security/SecurityConfigManager.js +20 -15
  108. package/dist/security/SecurityConfigManager.js.map +1 -1
  109. package/dist/security/SecurityMonitoring.d.ts +2 -2
  110. package/dist/security/SecurityMonitoring.d.ts.map +1 -1
  111. package/dist/security/SecurityMonitoring.js +19 -17
  112. package/dist/security/SecurityMonitoring.js.map +1 -1
  113. package/dist/security/SecurityReviewer.d.ts.map +1 -1
  114. package/dist/security/SecurityReviewer.js +10 -7
  115. package/dist/security/SecurityReviewer.js.map +1 -1
  116. package/dist/security/index.d.ts +24 -23
  117. package/dist/security/index.d.ts.map +1 -1
  118. package/dist/security/index.js +52 -23
  119. package/dist/security/index.js.map +1 -1
  120. package/dist/server/ConnectionTester.d.ts +12 -4
  121. package/dist/server/ConnectionTester.d.ts.map +1 -1
  122. package/dist/server/ConnectionTester.js +96 -22
  123. package/dist/server/ConnectionTester.js.map +1 -1
  124. package/dist/server/ToolRegistry.d.ts +2 -2
  125. package/dist/server/ToolRegistry.d.ts.map +1 -1
  126. package/dist/server/ToolRegistry.js +10 -5
  127. package/dist/server/ToolRegistry.js.map +1 -1
  128. package/dist/src/cache/CacheInvalidation.d.ts +120 -0
  129. package/dist/src/cache/CacheInvalidation.d.ts.map +1 -0
  130. package/dist/src/cache/CacheInvalidation.js +355 -0
  131. package/dist/src/cache/CacheInvalidation.js.map +1 -0
  132. package/dist/src/cache/CacheManager.d.ts +149 -0
  133. package/dist/src/cache/CacheManager.d.ts.map +1 -0
  134. package/dist/src/cache/CacheManager.js +326 -0
  135. package/dist/src/cache/CacheManager.js.map +1 -0
  136. package/dist/src/cache/HttpCacheWrapper.d.ts +122 -0
  137. package/dist/src/cache/HttpCacheWrapper.d.ts.map +1 -0
  138. package/dist/src/cache/HttpCacheWrapper.js +283 -0
  139. package/dist/src/cache/HttpCacheWrapper.js.map +1 -0
  140. package/dist/src/cache/index.d.ts +12 -0
  141. package/dist/src/cache/index.d.ts.map +1 -0
  142. package/dist/src/cache/index.js +9 -0
  143. package/dist/src/cache/index.js.map +1 -0
  144. package/dist/src/client/CachedWordPressClient.d.ts +174 -0
  145. package/dist/src/client/CachedWordPressClient.d.ts.map +1 -0
  146. package/dist/src/client/CachedWordPressClient.js +345 -0
  147. package/dist/src/client/CachedWordPressClient.js.map +1 -0
  148. package/dist/src/client/MockWordPressClient.d.ts +56 -0
  149. package/dist/src/client/MockWordPressClient.d.ts.map +1 -0
  150. package/dist/src/client/MockWordPressClient.js +371 -0
  151. package/dist/src/client/MockWordPressClient.js.map +1 -0
  152. package/dist/src/client/api.d.ts +235 -0
  153. package/dist/src/client/api.d.ts.map +1 -0
  154. package/dist/src/client/api.js +896 -0
  155. package/dist/src/client/api.js.map +1 -0
  156. package/dist/src/client/auth.d.ts +121 -0
  157. package/dist/src/client/auth.d.ts.map +1 -0
  158. package/dist/src/client/auth.js +429 -0
  159. package/dist/src/client/auth.js.map +1 -0
  160. package/dist/src/client/managers/AuthenticationManager.d.ts +92 -0
  161. package/dist/src/client/managers/AuthenticationManager.d.ts.map +1 -0
  162. package/dist/src/client/managers/AuthenticationManager.js +369 -0
  163. package/dist/src/client/managers/AuthenticationManager.js.map +1 -0
  164. package/dist/src/client/managers/BaseManager.d.ts +22 -0
  165. package/dist/src/client/managers/BaseManager.d.ts.map +1 -0
  166. package/dist/src/client/managers/BaseManager.js +53 -0
  167. package/dist/src/client/managers/BaseManager.js.map +1 -0
  168. package/dist/src/client/managers/RequestManager.d.ts +47 -0
  169. package/dist/src/client/managers/RequestManager.d.ts.map +1 -0
  170. package/dist/src/client/managers/RequestManager.js +193 -0
  171. package/dist/src/client/managers/RequestManager.js.map +1 -0
  172. package/dist/src/client/managers/index.d.ts +8 -0
  173. package/dist/src/client/managers/index.d.ts.map +1 -0
  174. package/dist/src/client/managers/index.js +8 -0
  175. package/dist/src/client/managers/index.js.map +1 -0
  176. package/dist/src/config/Config.d.ts +155 -0
  177. package/dist/src/config/Config.d.ts.map +1 -0
  178. package/dist/src/config/Config.js +215 -0
  179. package/dist/src/config/Config.js.map +1 -0
  180. package/dist/src/config/ConfigurationSchema.d.ts +281 -0
  181. package/dist/src/config/ConfigurationSchema.d.ts.map +1 -0
  182. package/dist/src/config/ConfigurationSchema.js +205 -0
  183. package/dist/src/config/ConfigurationSchema.js.map +1 -0
  184. package/dist/src/config/ServerConfiguration.d.ts +47 -0
  185. package/dist/src/config/ServerConfiguration.d.ts.map +1 -0
  186. package/dist/src/config/ServerConfiguration.js +255 -0
  187. package/dist/src/config/ServerConfiguration.js.map +1 -0
  188. package/dist/src/docs/DocumentationGenerator.d.ts +185 -0
  189. package/dist/src/docs/DocumentationGenerator.d.ts.map +1 -0
  190. package/dist/src/docs/DocumentationGenerator.js +777 -0
  191. package/dist/src/docs/DocumentationGenerator.js.map +1 -0
  192. package/dist/src/docs/MarkdownFormatter.d.ts +84 -0
  193. package/dist/src/docs/MarkdownFormatter.d.ts.map +1 -0
  194. package/dist/src/docs/MarkdownFormatter.js +458 -0
  195. package/dist/src/docs/MarkdownFormatter.js.map +1 -0
  196. package/dist/src/docs/index.d.ts +8 -0
  197. package/dist/src/docs/index.d.ts.map +1 -0
  198. package/dist/src/docs/index.js +7 -0
  199. package/dist/src/docs/index.js.map +1 -0
  200. package/dist/src/dxt-entry.d.ts +6 -0
  201. package/dist/src/dxt-entry.d.ts.map +1 -0
  202. package/dist/src/dxt-entry.js +39 -0
  203. package/dist/src/dxt-entry.js.map +1 -0
  204. package/dist/src/index.d.ts +18 -0
  205. package/dist/src/index.d.ts.map +1 -0
  206. package/dist/src/index.js +143 -0
  207. package/dist/src/index.js.map +1 -0
  208. package/dist/src/performance/MetricsCollector.d.ts +145 -0
  209. package/dist/src/performance/MetricsCollector.d.ts.map +1 -0
  210. package/dist/src/performance/MetricsCollector.js +368 -0
  211. package/dist/src/performance/MetricsCollector.js.map +1 -0
  212. package/dist/src/performance/PerformanceAnalytics.d.ts +168 -0
  213. package/dist/src/performance/PerformanceAnalytics.d.ts.map +1 -0
  214. package/dist/src/performance/PerformanceAnalytics.js +570 -0
  215. package/dist/src/performance/PerformanceAnalytics.js.map +1 -0
  216. package/dist/src/performance/PerformanceMonitor.d.ts +203 -0
  217. package/dist/src/performance/PerformanceMonitor.d.ts.map +1 -0
  218. package/dist/src/performance/PerformanceMonitor.js +478 -0
  219. package/dist/src/performance/PerformanceMonitor.js.map +1 -0
  220. package/dist/src/performance/index.d.ts +11 -0
  221. package/dist/src/performance/index.d.ts.map +1 -0
  222. package/dist/src/performance/index.js +8 -0
  223. package/dist/src/performance/index.js.map +1 -0
  224. package/dist/src/security/AISecurityScanner.d.ts +176 -0
  225. package/dist/src/security/AISecurityScanner.d.ts.map +1 -0
  226. package/dist/src/security/AISecurityScanner.js +655 -0
  227. package/dist/src/security/AISecurityScanner.js.map +1 -0
  228. package/dist/src/security/AutomatedRemediation.d.ts +146 -0
  229. package/dist/src/security/AutomatedRemediation.d.ts.map +1 -0
  230. package/dist/src/security/AutomatedRemediation.js +566 -0
  231. package/dist/src/security/AutomatedRemediation.js.map +1 -0
  232. package/dist/src/security/InputValidator.d.ts +219 -0
  233. package/dist/src/security/InputValidator.d.ts.map +1 -0
  234. package/dist/src/security/InputValidator.js +295 -0
  235. package/dist/src/security/InputValidator.js.map +1 -0
  236. package/dist/src/security/SecurityCIPipeline.d.ts +213 -0
  237. package/dist/src/security/SecurityCIPipeline.d.ts.map +1 -0
  238. package/dist/src/security/SecurityCIPipeline.js +693 -0
  239. package/dist/src/security/SecurityCIPipeline.js.map +1 -0
  240. package/dist/src/security/SecurityConfig.d.ts +129 -0
  241. package/dist/src/security/SecurityConfig.d.ts.map +1 -0
  242. package/dist/src/security/SecurityConfig.js +266 -0
  243. package/dist/src/security/SecurityConfig.js.map +1 -0
  244. package/dist/src/security/SecurityConfigManager.d.ts +294 -0
  245. package/dist/src/security/SecurityConfigManager.d.ts.map +1 -0
  246. package/dist/src/security/SecurityConfigManager.js +558 -0
  247. package/dist/src/security/SecurityConfigManager.js.map +1 -0
  248. package/dist/src/security/SecurityMonitoring.d.ts +245 -0
  249. package/dist/src/security/SecurityMonitoring.d.ts.map +1 -0
  250. package/dist/src/security/SecurityMonitoring.js +598 -0
  251. package/dist/src/security/SecurityMonitoring.js.map +1 -0
  252. package/dist/src/security/SecurityReviewer.d.ts +168 -0
  253. package/dist/src/security/SecurityReviewer.d.ts.map +1 -0
  254. package/dist/src/security/SecurityReviewer.js +686 -0
  255. package/dist/src/security/SecurityReviewer.js.map +1 -0
  256. package/dist/src/security/index.d.ts +183 -0
  257. package/dist/src/security/index.d.ts.map +1 -0
  258. package/dist/src/security/index.js +218 -0
  259. package/dist/src/security/index.js.map +1 -0
  260. package/dist/src/server/ConnectionTester.d.ts +32 -0
  261. package/dist/src/server/ConnectionTester.d.ts.map +1 -0
  262. package/dist/src/server/ConnectionTester.js +135 -0
  263. package/dist/src/server/ConnectionTester.js.map +1 -0
  264. package/dist/src/server/ToolRegistry.d.ts +50 -0
  265. package/dist/src/server/ToolRegistry.d.ts.map +1 -0
  266. package/dist/src/server/ToolRegistry.js +219 -0
  267. package/dist/src/server/ToolRegistry.js.map +1 -0
  268. package/dist/src/server.d.ts +7 -0
  269. package/dist/src/server.d.ts.map +1 -0
  270. package/dist/src/server.js +7 -0
  271. package/dist/src/server.js.map +1 -0
  272. package/dist/src/tools/BaseToolManager.d.ts +62 -0
  273. package/dist/src/tools/BaseToolManager.d.ts.map +1 -0
  274. package/dist/src/tools/BaseToolManager.js +195 -0
  275. package/dist/src/tools/BaseToolManager.js.map +1 -0
  276. package/dist/src/tools/auth.d.ts +50 -0
  277. package/dist/src/tools/auth.d.ts.map +1 -0
  278. package/dist/src/tools/auth.js +133 -0
  279. package/dist/src/tools/auth.js.map +1 -0
  280. package/dist/src/tools/cache.d.ts +260 -0
  281. package/dist/src/tools/cache.d.ts.map +1 -0
  282. package/dist/src/tools/cache.js +232 -0
  283. package/dist/src/tools/cache.js.map +1 -0
  284. package/dist/src/tools/comments.d.ts +33 -0
  285. package/dist/src/tools/comments.d.ts.map +1 -0
  286. package/dist/src/tools/comments.js +235 -0
  287. package/dist/src/tools/comments.js.map +1 -0
  288. package/dist/src/tools/index.d.ts +11 -0
  289. package/dist/src/tools/index.d.ts.map +1 -0
  290. package/dist/src/tools/index.js +11 -0
  291. package/dist/src/tools/index.js.map +1 -0
  292. package/dist/src/tools/media.d.ts +70 -0
  293. package/dist/src/tools/media.d.ts.map +1 -0
  294. package/dist/src/tools/media.js +248 -0
  295. package/dist/src/tools/media.js.map +1 -0
  296. package/dist/src/tools/pages.d.ts +32 -0
  297. package/dist/src/tools/pages.d.ts.map +1 -0
  298. package/dist/src/tools/pages.js +215 -0
  299. package/dist/src/tools/pages.js.map +1 -0
  300. package/dist/src/tools/performance.d.ts +73 -0
  301. package/dist/src/tools/performance.d.ts.map +1 -0
  302. package/dist/src/tools/performance.js +922 -0
  303. package/dist/src/tools/performance.js.map +1 -0
  304. package/dist/src/tools/posts/PostHandlers.d.ts +46 -0
  305. package/dist/src/tools/posts/PostHandlers.d.ts.map +1 -0
  306. package/dist/src/tools/posts/PostHandlers.js +400 -0
  307. package/dist/src/tools/posts/PostHandlers.js.map +1 -0
  308. package/dist/src/tools/posts/PostToolDefinitions.d.ts +37 -0
  309. package/dist/src/tools/posts/PostToolDefinitions.d.ts.map +1 -0
  310. package/dist/src/tools/posts/PostToolDefinitions.js +236 -0
  311. package/dist/src/tools/posts/PostToolDefinitions.js.map +1 -0
  312. package/dist/src/tools/posts/index.d.ts +138 -0
  313. package/dist/src/tools/posts/index.d.ts.map +1 -0
  314. package/dist/src/tools/posts/index.js +163 -0
  315. package/dist/src/tools/posts/index.js.map +1 -0
  316. package/dist/src/tools/posts.d.ts +15 -0
  317. package/dist/src/tools/posts.d.ts.map +1 -0
  318. package/dist/src/tools/posts.js +16 -0
  319. package/dist/src/tools/posts.js.map +1 -0
  320. package/dist/src/tools/site.d.ts +32 -0
  321. package/dist/src/tools/site.d.ts.map +1 -0
  322. package/dist/src/tools/site.js +234 -0
  323. package/dist/src/tools/site.js.map +1 -0
  324. package/dist/src/tools/taxonomies.d.ts +36 -0
  325. package/dist/src/tools/taxonomies.d.ts.map +1 -0
  326. package/dist/src/tools/taxonomies.js +286 -0
  327. package/dist/src/tools/taxonomies.js.map +1 -0
  328. package/dist/src/tools/users.d.ts +33 -0
  329. package/dist/src/tools/users.d.ts.map +1 -0
  330. package/dist/src/tools/users.js +308 -0
  331. package/dist/src/tools/users.js.map +1 -0
  332. package/dist/src/types/client.d.ts +223 -0
  333. package/dist/src/types/client.d.ts.map +1 -0
  334. package/dist/src/types/client.js +97 -0
  335. package/dist/src/types/client.js.map +1 -0
  336. package/dist/src/types/enhanced.d.ts +237 -0
  337. package/dist/src/types/enhanced.d.ts.map +1 -0
  338. package/dist/src/types/enhanced.js +49 -0
  339. package/dist/src/types/enhanced.js.map +1 -0
  340. package/dist/src/types/index.d.ts +160 -0
  341. package/dist/src/types/index.d.ts.map +1 -0
  342. package/dist/src/types/index.js +14 -0
  343. package/dist/src/types/index.js.map +1 -0
  344. package/dist/src/types/mcp.d.ts +178 -0
  345. package/dist/src/types/mcp.d.ts.map +1 -0
  346. package/dist/src/types/mcp.js +7 -0
  347. package/dist/src/types/mcp.js.map +1 -0
  348. package/dist/src/types/requests.d.ts +322 -0
  349. package/dist/src/types/requests.d.ts.map +1 -0
  350. package/dist/src/types/requests.js +8 -0
  351. package/dist/src/types/requests.js.map +1 -0
  352. package/dist/src/types/tools.d.ts +506 -0
  353. package/dist/src/types/tools.d.ts.map +1 -0
  354. package/dist/src/types/tools.js +8 -0
  355. package/dist/src/types/tools.js.map +1 -0
  356. package/dist/src/types/wordpress.d.ts +471 -0
  357. package/dist/src/types/wordpress.d.ts.map +1 -0
  358. package/dist/src/types/wordpress.js +14 -0
  359. package/dist/src/types/wordpress.js.map +1 -0
  360. package/dist/src/utils/debug.d.ts +71 -0
  361. package/dist/src/utils/debug.d.ts.map +1 -0
  362. package/dist/src/utils/debug.js +235 -0
  363. package/dist/src/utils/debug.js.map +1 -0
  364. package/dist/src/utils/enhancedError.d.ts +61 -0
  365. package/dist/src/utils/enhancedError.d.ts.map +1 -0
  366. package/dist/src/utils/enhancedError.js +221 -0
  367. package/dist/src/utils/enhancedError.js.map +1 -0
  368. package/dist/src/utils/error.d.ts +17 -0
  369. package/dist/src/utils/error.d.ts.map +1 -0
  370. package/dist/src/utils/error.js +108 -0
  371. package/dist/src/utils/error.js.map +1 -0
  372. package/dist/src/utils/logger.d.ts +106 -0
  373. package/dist/src/utils/logger.d.ts.map +1 -0
  374. package/dist/src/utils/logger.js +280 -0
  375. package/dist/src/utils/logger.js.map +1 -0
  376. package/dist/src/utils/streaming.d.ts +104 -0
  377. package/dist/src/utils/streaming.d.ts.map +1 -0
  378. package/dist/src/utils/streaming.js +331 -0
  379. package/dist/src/utils/streaming.js.map +1 -0
  380. package/dist/src/utils/toolWrapper.d.ts +42 -0
  381. package/dist/src/utils/toolWrapper.d.ts.map +1 -0
  382. package/dist/src/utils/toolWrapper.js +101 -0
  383. package/dist/src/utils/toolWrapper.js.map +1 -0
  384. package/dist/src/utils/validation/core.d.ts +21 -0
  385. package/dist/src/utils/validation/core.d.ts.map +1 -0
  386. package/dist/src/utils/validation/core.js +71 -0
  387. package/dist/src/utils/validation/core.js.map +1 -0
  388. package/dist/src/utils/validation/index.d.ts +25 -0
  389. package/dist/src/utils/validation/index.d.ts.map +1 -0
  390. package/dist/src/utils/validation/index.js +29 -0
  391. package/dist/src/utils/validation/index.js.map +1 -0
  392. package/dist/src/utils/validation/network.d.ts +19 -0
  393. package/dist/src/utils/validation/network.d.ts.map +1 -0
  394. package/dist/src/utils/validation/network.js +93 -0
  395. package/dist/src/utils/validation/network.js.map +1 -0
  396. package/dist/src/utils/validation/rateLimit.d.ts +21 -0
  397. package/dist/src/utils/validation/rateLimit.d.ts.map +1 -0
  398. package/dist/src/utils/validation/rateLimit.js +43 -0
  399. package/dist/src/utils/validation/rateLimit.js.map +1 -0
  400. package/dist/src/utils/validation/security.d.ts +29 -0
  401. package/dist/src/utils/validation/security.d.ts.map +1 -0
  402. package/dist/src/utils/validation/security.js +327 -0
  403. package/dist/src/utils/validation/security.js.map +1 -0
  404. package/dist/src/utils/validation/wordpress.d.ts +31 -0
  405. package/dist/src/utils/validation/wordpress.d.ts.map +1 -0
  406. package/dist/src/utils/validation/wordpress.js +146 -0
  407. package/dist/src/utils/validation/wordpress.js.map +1 -0
  408. package/dist/src/utils/validation.d.ts +15 -0
  409. package/dist/src/utils/validation.d.ts.map +1 -0
  410. package/dist/src/utils/validation.js +27 -0
  411. package/dist/src/utils/validation.js.map +1 -0
  412. package/dist/tests/vitest.setup.d.ts +6 -0
  413. package/dist/tests/vitest.setup.d.ts.map +1 -0
  414. package/dist/tests/vitest.setup.js +39 -0
  415. package/dist/tests/vitest.setup.js.map +1 -0
  416. package/dist/tools/BaseToolManager.d.ts +47 -11
  417. package/dist/tools/BaseToolManager.d.ts.map +1 -1
  418. package/dist/tools/BaseToolManager.js +168 -29
  419. package/dist/tools/BaseToolManager.js.map +1 -1
  420. package/dist/tools/auth.d.ts +16 -10
  421. package/dist/tools/auth.d.ts.map +1 -1
  422. package/dist/tools/auth.js +3 -2
  423. package/dist/tools/auth.js.map +1 -1
  424. package/dist/tools/cache.d.ts +30 -30
  425. package/dist/tools/cache.d.ts.map +1 -1
  426. package/dist/tools/cache.js +1 -6
  427. package/dist/tools/cache.js.map +1 -1
  428. package/dist/tools/comments.d.ts +20 -20
  429. package/dist/tools/comments.d.ts.map +1 -1
  430. package/dist/tools/comments.js +16 -9
  431. package/dist/tools/comments.js.map +1 -1
  432. package/dist/tools/media.d.ts +18 -16
  433. package/dist/tools/media.d.ts.map +1 -1
  434. package/dist/tools/media.js +16 -15
  435. package/dist/tools/media.js.map +1 -1
  436. package/dist/tools/pages.d.ts +19 -17
  437. package/dist/tools/pages.d.ts.map +1 -1
  438. package/dist/tools/pages.js +16 -12
  439. package/dist/tools/pages.js.map +1 -1
  440. package/dist/tools/performance.d.ts +11 -1
  441. package/dist/tools/performance.d.ts.map +1 -1
  442. package/dist/tools/performance.js +67 -34
  443. package/dist/tools/performance.js.map +1 -1
  444. package/dist/tools/posts/PostHandlers.d.ts +46 -0
  445. package/dist/tools/posts/PostHandlers.d.ts.map +1 -0
  446. package/dist/tools/posts/PostHandlers.js +400 -0
  447. package/dist/tools/posts/PostHandlers.js.map +1 -0
  448. package/dist/tools/posts/PostToolDefinitions.d.ts +37 -0
  449. package/dist/tools/posts/PostToolDefinitions.d.ts.map +1 -0
  450. package/dist/tools/posts/PostToolDefinitions.js +236 -0
  451. package/dist/tools/posts/PostToolDefinitions.js.map +1 -0
  452. package/dist/tools/posts/index.d.ts +138 -0
  453. package/dist/tools/posts/index.d.ts.map +1 -0
  454. package/dist/tools/posts/index.js +163 -0
  455. package/dist/tools/posts/index.js.map +1 -0
  456. package/dist/tools/posts.d.ts +10 -246
  457. package/dist/tools/posts.d.ts.map +1 -1
  458. package/dist/tools/posts.js +11 -723
  459. package/dist/tools/posts.js.map +1 -1
  460. package/dist/tools/site.d.ts +19 -18
  461. package/dist/tools/site.d.ts.map +1 -1
  462. package/dist/tools/site.js +14 -10
  463. package/dist/tools/site.js.map +1 -1
  464. package/dist/tools/taxonomies.d.ts +23 -24
  465. package/dist/tools/taxonomies.d.ts.map +1 -1
  466. package/dist/tools/taxonomies.js +24 -18
  467. package/dist/tools/taxonomies.js.map +1 -1
  468. package/dist/tools/users.d.ts +20 -15
  469. package/dist/tools/users.d.ts.map +1 -1
  470. package/dist/tools/users.js +12 -8
  471. package/dist/tools/users.js.map +1 -1
  472. package/dist/types/client.d.ts +48 -41
  473. package/dist/types/client.d.ts.map +1 -1
  474. package/dist/types/client.js +30 -5
  475. package/dist/types/client.js.map +1 -1
  476. package/dist/types/enhanced.d.ts +237 -0
  477. package/dist/types/enhanced.d.ts.map +1 -0
  478. package/dist/types/enhanced.js +49 -0
  479. package/dist/types/enhanced.js.map +1 -0
  480. package/dist/types/index.d.ts +15 -12
  481. package/dist/types/index.d.ts.map +1 -1
  482. package/dist/types/index.js +2 -0
  483. package/dist/types/index.js.map +1 -1
  484. package/dist/types/mcp.d.ts +12 -12
  485. package/dist/types/mcp.d.ts.map +1 -1
  486. package/dist/types/requests.d.ts +322 -0
  487. package/dist/types/requests.d.ts.map +1 -0
  488. package/dist/types/requests.js +8 -0
  489. package/dist/types/requests.js.map +1 -0
  490. package/dist/types/tools.d.ts +506 -0
  491. package/dist/types/tools.d.ts.map +1 -0
  492. package/dist/types/tools.js +8 -0
  493. package/dist/types/tools.js.map +1 -0
  494. package/dist/types/wordpress.d.ts +43 -15
  495. package/dist/types/wordpress.d.ts.map +1 -1
  496. package/dist/types/wordpress.js +8 -1
  497. package/dist/types/wordpress.js.map +1 -1
  498. package/dist/utils/debug.d.ts +19 -11
  499. package/dist/utils/debug.d.ts.map +1 -1
  500. package/dist/utils/debug.js +46 -10
  501. package/dist/utils/debug.js.map +1 -1
  502. package/dist/utils/enhancedError.d.ts +8 -8
  503. package/dist/utils/enhancedError.d.ts.map +1 -1
  504. package/dist/utils/enhancedError.js.map +1 -1
  505. package/dist/utils/error.d.ts +2 -4
  506. package/dist/utils/error.d.ts.map +1 -1
  507. package/dist/utils/error.js +42 -5
  508. package/dist/utils/error.js.map +1 -1
  509. package/dist/utils/logger.d.ts +106 -0
  510. package/dist/utils/logger.d.ts.map +1 -0
  511. package/dist/utils/logger.js +280 -0
  512. package/dist/utils/logger.js.map +1 -0
  513. package/dist/utils/streaming.d.ts +9 -9
  514. package/dist/utils/streaming.d.ts.map +1 -1
  515. package/dist/utils/streaming.js +71 -52
  516. package/dist/utils/streaming.js.map +1 -1
  517. package/dist/utils/toolWrapper.d.ts +9 -7
  518. package/dist/utils/toolWrapper.d.ts.map +1 -1
  519. package/dist/utils/toolWrapper.js.map +1 -1
  520. package/dist/utils/validation/core.d.ts +21 -0
  521. package/dist/utils/validation/core.d.ts.map +1 -0
  522. package/dist/utils/validation/core.js +71 -0
  523. package/dist/utils/validation/core.js.map +1 -0
  524. package/dist/utils/validation/index.d.ts +25 -0
  525. package/dist/utils/validation/index.d.ts.map +1 -0
  526. package/dist/utils/validation/index.js +29 -0
  527. package/dist/utils/validation/index.js.map +1 -0
  528. package/dist/utils/validation/network.d.ts +19 -0
  529. package/dist/utils/validation/network.d.ts.map +1 -0
  530. package/dist/utils/validation/network.js +93 -0
  531. package/dist/utils/validation/network.js.map +1 -0
  532. package/dist/utils/validation/rateLimit.d.ts +21 -0
  533. package/dist/utils/validation/rateLimit.d.ts.map +1 -0
  534. package/dist/utils/validation/rateLimit.js +43 -0
  535. package/dist/utils/validation/rateLimit.js.map +1 -0
  536. package/dist/utils/validation/security.d.ts +29 -0
  537. package/dist/utils/validation/security.d.ts.map +1 -0
  538. package/dist/utils/validation/security.js +327 -0
  539. package/dist/utils/validation/security.js.map +1 -0
  540. package/dist/utils/validation/wordpress.d.ts +31 -0
  541. package/dist/utils/validation/wordpress.d.ts.map +1 -0
  542. package/dist/utils/validation/wordpress.js +146 -0
  543. package/dist/utils/validation/wordpress.js.map +1 -0
  544. package/dist/utils/validation.d.ts +13 -82
  545. package/dist/utils/validation.d.ts.map +1 -1
  546. package/dist/utils/validation.js +25 -343
  547. package/dist/utils/validation.js.map +1 -1
  548. package/docs/BADGE_UPDATES.md +132 -0
  549. package/docs/CI_CD_IMPROVEMENTS.md +191 -0
  550. package/docs/INCREMENTAL_COVERAGE.md +183 -0
  551. package/docs/INSTALLATION.md +4 -2
  552. package/docs/TROUBLESHOOTING.md +2 -1
  553. package/docs/api/README.md +3 -1
  554. package/docs/api/openapi.json +5 -1
  555. package/docs/api/summary.json +1 -1
  556. package/docs/api/tools/wp_create_post.md +12 -14
  557. package/docs/developer/TESTING.md +24 -19
  558. package/docs/examples/claude-desktop-config.md +1 -1
  559. package/docs/examples/docker-production.md +100 -93
  560. package/docs/examples/multi-site-setup.md +5 -4
  561. package/docs/examples/single-site-setup.md +3 -4
  562. package/docs/examples/use-case-workflows.md +4 -5
  563. package/docs/integrations/claude-desktop.md +39 -34
  564. package/docs/integrations/cline.md +4 -4
  565. package/docs/integrations/vs-code.md +9 -8
  566. package/docs/user-guides/DXT_INSTALLATION.md +2 -1
  567. package/docs/user-guides/SMITHERY_SETUP.md +10 -10
  568. package/package.json +57 -39
  569. package/src/cache/CacheInvalidation.ts +12 -5
  570. package/src/cache/CacheManager.ts +18 -15
  571. package/src/cache/HttpCacheWrapper.ts +30 -59
  572. package/src/cache/__tests__/HttpCacheWrapper.test.ts +6 -5
  573. package/src/cache/index.ts +3 -14
  574. package/src/client/CachedWordPressClient.ts +32 -30
  575. package/src/client/MockWordPressClient.ts +4 -2
  576. package/src/client/api.ts +186 -64
  577. package/src/client/auth.ts +15 -40
  578. package/src/client/managers/AuthenticationManager.ts +337 -77
  579. package/src/client/managers/BaseManager.ts +18 -30
  580. package/src/client/managers/RequestManager.ts +39 -44
  581. package/src/config/Config.ts +308 -0
  582. package/src/config/ConfigurationSchema.ts +23 -2
  583. package/src/config/ServerConfiguration.ts +73 -49
  584. package/src/docs/DocumentationGenerator.ts +50 -39
  585. package/src/docs/MarkdownFormatter.ts +19 -29
  586. package/src/dxt-entry.cjs +26 -16
  587. package/src/dxt-entry.ts +17 -27
  588. package/src/index.ts +42 -28
  589. package/src/performance/MetricsCollector.ts +108 -86
  590. package/src/performance/PerformanceAnalytics.ts +69 -164
  591. package/src/performance/PerformanceMonitor.ts +32 -47
  592. package/src/performance/index.ts +2 -10
  593. package/src/security/AISecurityScanner.ts +22 -12
  594. package/src/security/AutomatedRemediation.ts +49 -18
  595. package/src/security/InputValidator.ts +9 -6
  596. package/src/security/SecurityCIPipeline.ts +53 -37
  597. package/src/security/SecurityConfig.ts +22 -22
  598. package/src/security/SecurityConfigManager.ts +23 -19
  599. package/src/security/SecurityMonitoring.ts +24 -21
  600. package/src/security/SecurityReviewer.ts +10 -7
  601. package/src/security/index.ts +64 -29
  602. package/src/server/ConnectionTester.ts +120 -31
  603. package/src/server/ToolRegistry.ts +31 -21
  604. package/src/tools/BaseToolManager.ts +286 -33
  605. package/src/tools/auth.ts +20 -8
  606. package/src/tools/cache.ts +5 -15
  607. package/src/tools/comments.ts +34 -48
  608. package/src/tools/media.ts +41 -53
  609. package/src/tools/pages.ts +32 -54
  610. package/src/tools/performance.ts +141 -176
  611. package/src/tools/posts/PostHandlers.ts +474 -0
  612. package/src/tools/posts/PostToolDefinitions.ts +250 -0
  613. package/src/tools/posts/index.ts +192 -0
  614. package/src/tools/posts.ts +24 -780
  615. package/src/tools/site.ts +34 -19
  616. package/src/tools/taxonomies.ts +41 -57
  617. package/src/tools/users.ts +28 -16
  618. package/src/types/client.ts +114 -138
  619. package/src/types/enhanced.ts +318 -0
  620. package/src/types/index.ts +51 -30
  621. package/src/types/mcp.ts +20 -42
  622. package/src/types/requests.ts +378 -0
  623. package/src/types/tools.ts +608 -0
  624. package/src/types/wordpress.ts +56 -34
  625. package/src/utils/debug.ts +77 -59
  626. package/src/utils/enhancedError.ts +8 -8
  627. package/src/utils/error.ts +53 -31
  628. package/src/utils/logger.ts +351 -0
  629. package/src/utils/streaming.ts +86 -68
  630. package/src/utils/toolWrapper.ts +10 -12
  631. package/src/utils/validation/core.ts +108 -0
  632. package/src/utils/validation/index.ts +36 -0
  633. package/src/utils/validation/network.ts +132 -0
  634. package/src/utils/validation/rateLimit.ts +54 -0
  635. package/src/utils/validation/security.ts +361 -0
  636. package/src/utils/validation/wordpress.ts +180 -0
  637. package/src/utils/validation.ts +47 -470
  638. package/dist/cache/__tests__/CacheInvalidation.test.d.ts +0 -5
  639. package/dist/cache/__tests__/CacheInvalidation.test.d.ts.map +0 -1
  640. package/dist/cache/__tests__/CacheInvalidation.test.js +0 -238
  641. package/dist/cache/__tests__/CacheInvalidation.test.js.map +0 -1
  642. package/dist/cache/__tests__/CacheManager.test.d.ts +0 -5
  643. package/dist/cache/__tests__/CacheManager.test.d.ts.map +0 -1
  644. package/dist/cache/__tests__/CacheManager.test.js +0 -233
  645. package/dist/cache/__tests__/CacheManager.test.js.map +0 -1
  646. package/dist/cache/__tests__/CachedWordPressClient.test.d.ts +0 -5
  647. package/dist/cache/__tests__/CachedWordPressClient.test.d.ts.map +0 -1
  648. package/dist/cache/__tests__/CachedWordPressClient.test.js +0 -231
  649. package/dist/cache/__tests__/CachedWordPressClient.test.js.map +0 -1
  650. package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts +0 -5
  651. package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts.map +0 -1
  652. package/dist/cache/__tests__/HttpCacheWrapper.test.js +0 -299
  653. package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +0 -1
@@ -0,0 +1,686 @@
1
+ /**
2
+ * AI-Powered Security Code Reviewer
3
+ * Provides intelligent security code review and analysis
4
+ */
5
+ import * as fs from "fs/promises";
6
+ import * as path from "path";
7
+ import { SecurityUtils } from "./SecurityConfig.js";
8
+ import { SecurityValidationError } from "./InputValidator.js";
9
+ import { LoggerFactory } from "../utils/logger.js";
10
+ /**
11
+ * Comprehensive security review rules
12
+ */
13
+ const SECURITY_REVIEW_RULES = [
14
+ // Authentication Rules
15
+ {
16
+ id: "auth-001",
17
+ name: "Hardcoded Credentials",
18
+ description: "Detects hardcoded passwords, API keys, and secrets",
19
+ category: "authentication",
20
+ severity: "critical",
21
+ pattern: /(password|secret|key|token)\s*[:=]\s*['"][^'"]{8,}['"]/gi,
22
+ message: "Hardcoded credential detected",
23
+ recommendation: "Use environment variables or secure credential storage",
24
+ cweId: "CWE-798",
25
+ examples: {
26
+ vulnerable: `const password = "mysecretpassword123";`,
27
+ secure: `const password = process.env.DB_PASSWORD;`,
28
+ },
29
+ },
30
+ {
31
+ id: "auth-002",
32
+ name: "Weak Password Policy",
33
+ description: "Detects weak password validation",
34
+ category: "authentication",
35
+ severity: "medium",
36
+ pattern: /password.*length.*[<>]\s*[1-7]\b/gi,
37
+ message: "Weak password length requirement",
38
+ recommendation: "Enforce minimum 8-character passwords with complexity requirements",
39
+ cweId: "CWE-521",
40
+ examples: {
41
+ vulnerable: `if (password.length < 6) return false;`,
42
+ secure: `if (password.length < 8 || !/(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)/.test(password)) return false;`,
43
+ },
44
+ },
45
+ {
46
+ id: "auth-003",
47
+ name: "JWT Secret Exposure",
48
+ description: "Detects exposed JWT secrets",
49
+ category: "authentication",
50
+ severity: "critical",
51
+ pattern: /jwt.*secret.*[:=].*['"][^'"]+['"]/gi,
52
+ message: "JWT secret should not be hardcoded",
53
+ recommendation: "Store JWT secret in environment variables",
54
+ cweId: "CWE-798",
55
+ examples: {
56
+ vulnerable: `const jwtSecret = "my-jwt-secret-key";`,
57
+ secure: `const jwtSecret = process.env.JWT_SECRET;`,
58
+ },
59
+ },
60
+ // Input Validation Rules
61
+ {
62
+ id: "input-001",
63
+ name: "SQL Injection Risk",
64
+ description: "Detects potential SQL injection vulnerabilities",
65
+ category: "input-validation",
66
+ severity: "critical",
67
+ pattern: /(SELECT|INSERT|UPDATE|DELETE).*?[\+].*?(WHERE|FROM|INTO)/gi,
68
+ message: "Potential SQL injection vulnerability",
69
+ recommendation: "Use parameterized queries or prepared statements",
70
+ cweId: "CWE-89",
71
+ examples: {
72
+ vulnerable: `query = "SELECT * FROM users WHERE id = " + userId;`,
73
+ secure: `query = "SELECT * FROM users WHERE id = ?"; db.query(query, [userId]);`,
74
+ },
75
+ },
76
+ {
77
+ id: "input-002",
78
+ name: "XSS Vulnerability",
79
+ description: "Detects potential XSS vulnerabilities",
80
+ category: "input-validation",
81
+ severity: "high",
82
+ pattern: /innerHTML\s*=\s*[^;]+userInput/gi,
83
+ message: "Potential XSS vulnerability through innerHTML",
84
+ recommendation: "Use textContent or sanitize input before setting innerHTML",
85
+ cweId: "CWE-79",
86
+ examples: {
87
+ vulnerable: `element.innerHTML = userInput;`,
88
+ secure: `element.textContent = userInput; // or sanitize userInput`,
89
+ },
90
+ },
91
+ {
92
+ id: "input-003",
93
+ name: "Command Injection",
94
+ description: "Detects potential command injection vulnerabilities",
95
+ category: "input-validation",
96
+ severity: "critical",
97
+ pattern: /exec\(.*?[\+].*?\)/gi,
98
+ message: "Potential command injection vulnerability",
99
+ recommendation: "Validate input and use safe APIs",
100
+ cweId: "CWE-78",
101
+ examples: {
102
+ vulnerable: `exec("ls " + userInput);`,
103
+ secure: `execFile("ls", [userInput]);`,
104
+ },
105
+ },
106
+ // Authorization Rules
107
+ {
108
+ id: "authz-001",
109
+ name: "Missing Authorization Check",
110
+ description: "Detects endpoints without authorization checks",
111
+ category: "authorization",
112
+ severity: "high",
113
+ pattern: /app\.(get|post|put|delete)\(['"][^'"]*['"],\s*(?!.*auth|.*login)[^)]*\)/gi,
114
+ message: "Endpoint may be missing authorization check",
115
+ recommendation: "Add authorization middleware to protected endpoints",
116
+ cweId: "CWE-862",
117
+ examples: {
118
+ vulnerable: `app.get("/admin/users", (req, res) => { ... });`,
119
+ secure: `app.get("/admin/users", authMiddleware, (req, res) => { ... });`,
120
+ },
121
+ },
122
+ {
123
+ id: "authz-002",
124
+ name: "Privilege Escalation Risk",
125
+ description: "Detects potential privilege escalation",
126
+ category: "authorization",
127
+ severity: "high",
128
+ pattern: /role\s*=\s*['"]admin['"]|isAdmin\s*=\s*true/gi,
129
+ message: "Potential privilege escalation through role assignment",
130
+ recommendation: "Validate user permissions before role assignment",
131
+ cweId: "CWE-269",
132
+ examples: {
133
+ vulnerable: `user.role = "admin";`,
134
+ secure: `if (currentUser.canAssignRole("admin")) user.role = "admin";`,
135
+ },
136
+ },
137
+ // Cryptography Rules
138
+ {
139
+ id: "crypto-001",
140
+ name: "Weak Encryption Algorithm",
141
+ description: "Detects use of weak encryption algorithms",
142
+ category: "crypto",
143
+ severity: "high",
144
+ pattern: /(md5|sha1|des|rc4|3des)/gi,
145
+ message: "Weak cryptographic algorithm detected",
146
+ recommendation: "Use strong algorithms like AES-256, SHA-256, or bcrypt",
147
+ cweId: "CWE-327",
148
+ examples: {
149
+ vulnerable: `const hash = crypto.createHash("md5");`,
150
+ secure: `const hash = crypto.createHash("sha256");`,
151
+ },
152
+ },
153
+ {
154
+ id: "crypto-002",
155
+ name: "Hardcoded Encryption Key",
156
+ description: "Detects hardcoded encryption keys",
157
+ category: "crypto",
158
+ severity: "critical",
159
+ pattern: /encrypt.*key.*[:=].*['"][^'"]{16,}['"]/gi,
160
+ message: "Hardcoded encryption key detected",
161
+ recommendation: "Generate keys securely and store in environment variables",
162
+ cweId: "CWE-798",
163
+ examples: {
164
+ vulnerable: `const encryptionKey = "1234567890abcdef";`,
165
+ secure: `const encryptionKey = process.env.ENCRYPTION_KEY;`,
166
+ },
167
+ },
168
+ // Session Management Rules
169
+ {
170
+ id: "session-001",
171
+ name: "Insecure Session Configuration",
172
+ description: "Detects insecure session settings",
173
+ category: "session",
174
+ severity: "medium",
175
+ pattern: /session.*secure\s*:\s*false|httpOnly\s*:\s*false/gi,
176
+ message: "Insecure session configuration",
177
+ recommendation: "Enable secure and httpOnly flags for sessions",
178
+ cweId: "CWE-614",
179
+ examples: {
180
+ vulnerable: `session({ secure: false, httpOnly: false })`,
181
+ secure: `session({ secure: true, httpOnly: true })`,
182
+ },
183
+ },
184
+ {
185
+ id: "session-002",
186
+ name: "Session Fixation Risk",
187
+ description: "Detects potential session fixation vulnerabilities",
188
+ category: "session",
189
+ severity: "medium",
190
+ pattern: /login.*(?!regenerate)/gi,
191
+ message: "Login may not regenerate session ID",
192
+ recommendation: "Regenerate session ID after successful login",
193
+ cweId: "CWE-384",
194
+ examples: {
195
+ vulnerable: `// Login without session regeneration`,
196
+ secure: `req.session.regenerate(() => { /* login success */ });`,
197
+ },
198
+ },
199
+ // Configuration Rules
200
+ {
201
+ id: "config-001",
202
+ name: "Debug Mode in Production",
203
+ description: "Detects debug mode enabled",
204
+ category: "config",
205
+ severity: "medium",
206
+ pattern: /debug\s*[:=]\s*true|DEBUG\s*=\s*['"]?true['"]?/gi,
207
+ message: "Debug mode may be enabled in production",
208
+ recommendation: "Disable debug mode in production environments",
209
+ cweId: "CWE-489",
210
+ examples: {
211
+ vulnerable: `const debug = true;`,
212
+ secure: `const debug = process.env.NODE_ENV !== 'production';`,
213
+ },
214
+ },
215
+ {
216
+ id: "config-002",
217
+ name: "HTTPS Disabled",
218
+ description: "Detects HTTP instead of HTTPS",
219
+ category: "config",
220
+ severity: "medium",
221
+ pattern: /http:\/\/(?!localhost|127\.0\.0\.1)/gi,
222
+ message: "HTTP URL detected in production code",
223
+ recommendation: "Use HTTPS for all external communications",
224
+ cweId: "CWE-319",
225
+ examples: {
226
+ vulnerable: `const apiUrl = "http://api.example.com";`,
227
+ secure: `const apiUrl = "https://api.example.com";`,
228
+ },
229
+ },
230
+ // General Security Rules
231
+ {
232
+ id: "general-001",
233
+ name: "Error Information Disclosure",
234
+ description: "Detects potential information disclosure through errors",
235
+ category: "general",
236
+ severity: "low",
237
+ pattern: /throw.*error.*stack|console\.error.*stack/gi,
238
+ message: "Error may disclose sensitive information",
239
+ recommendation: "Log detailed errors securely, return generic errors to users",
240
+ cweId: "CWE-209",
241
+ examples: {
242
+ vulnerable: `throw new Error(err.stack);`,
243
+ secure: `logger.error(err.stack); throw new Error("An error occurred");`,
244
+ },
245
+ },
246
+ {
247
+ id: "general-002",
248
+ name: "Unsafe Random Generation",
249
+ description: "Detects use of unsafe random number generation",
250
+ category: "general",
251
+ severity: "medium",
252
+ pattern: /Math\.random\(\)/gi,
253
+ message: "Math.random() is not cryptographically secure",
254
+ recommendation: "Use crypto.randomBytes() for security-sensitive random generation",
255
+ cweId: "CWE-338",
256
+ examples: {
257
+ vulnerable: `const token = Math.random().toString(36);`,
258
+ secure: `const token = crypto.randomBytes(32).toString('hex');`,
259
+ },
260
+ },
261
+ ];
262
+ /**
263
+ * AI-Powered Security Code Reviewer
264
+ */
265
+ export class SecurityReviewer {
266
+ reviewHistory = [];
267
+ /**
268
+ * Perform comprehensive security review of a file
269
+ */
270
+ async reviewFile(filePath, options = {}) {
271
+ const reviewId = SecurityUtils.generateSecureToken(16);
272
+ const logger = LoggerFactory.security();
273
+ logger.info("Reviewing file", { filePath, reviewId });
274
+ try {
275
+ const content = await fs.readFile(filePath, "utf-8");
276
+ const lines = content.split("\n");
277
+ // Apply security rules
278
+ const findings = await this.applySecurityRules(content, lines, options);
279
+ // Perform AI analysis if requested
280
+ let aiAnalysis;
281
+ if (options.aiAnalysis) {
282
+ aiAnalysis = await this.performAIAnalysis(content, findings);
283
+ }
284
+ // Generate summary
285
+ const summary = this.generateSummary(findings);
286
+ const overallRating = this.calculateOverallRating(summary);
287
+ const recommendations = this.generateRecommendations(findings, aiAnalysis);
288
+ const result = {
289
+ reviewId,
290
+ timestamp: new Date(),
291
+ file: filePath,
292
+ findings,
293
+ summary,
294
+ overallRating,
295
+ recommendations,
296
+ };
297
+ this.reviewHistory.push(result);
298
+ logger.info("Review completed", { filePath, findingsCount: findings.length, reviewId });
299
+ return result;
300
+ }
301
+ catch (error) {
302
+ logger.error("Review failed", { filePath, reviewId, error: error instanceof Error ? error.message : String(error) });
303
+ throw new SecurityValidationError("Security review failed", [{ message: String(error) }]);
304
+ }
305
+ }
306
+ /**
307
+ * Review multiple files
308
+ */
309
+ async reviewDirectory(dirPath, options = {}) {
310
+ const logger = LoggerFactory.security();
311
+ logger.info("Reviewing directory", { dirPath });
312
+ const results = [];
313
+ const filePattern = options.filePattern || /\.(ts|js|jsx|tsx)$/;
314
+ try {
315
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
316
+ for (const entry of entries) {
317
+ const fullPath = path.join(dirPath, entry.name);
318
+ if (entry.isDirectory() && options.recursive && !entry.name.startsWith(".")) {
319
+ const subResults = await this.reviewDirectory(fullPath, options);
320
+ results.push(...subResults);
321
+ }
322
+ else if (entry.isFile() && filePattern.test(entry.name)) {
323
+ const result = await this.reviewFile(fullPath, options);
324
+ results.push(result);
325
+ }
326
+ }
327
+ return results;
328
+ }
329
+ catch (error) {
330
+ logger.error("Directory review failed", { dirPath, error: error instanceof Error ? error.message : String(error) });
331
+ throw new SecurityValidationError("Directory review failed", [{ message: String(error) }]);
332
+ }
333
+ }
334
+ /**
335
+ * Apply security rules to code content
336
+ */
337
+ async applySecurityRules(content, lines, options) {
338
+ const findings = [];
339
+ const applicableRules = this.getApplicableRules(options);
340
+ for (const rule of applicableRules) {
341
+ const matches = Array.from(content.matchAll(rule.pattern));
342
+ for (const match of matches) {
343
+ if (match.index !== undefined) {
344
+ const lineNumber = this.getLineNumber(content, match.index);
345
+ const columnNumber = this.getColumnNumber(content, match.index);
346
+ findings.push({
347
+ id: `${rule.id}-${Date.now()}-${findings.length}`,
348
+ rule: rule.id,
349
+ severity: rule.severity,
350
+ line: lineNumber,
351
+ column: columnNumber,
352
+ code: lines[lineNumber - 1]?.trim() || "",
353
+ message: rule.message,
354
+ recommendation: rule.recommendation,
355
+ confidence: this.calculateConfidence(rule, match[0]),
356
+ category: rule.category,
357
+ });
358
+ }
359
+ }
360
+ }
361
+ return findings;
362
+ }
363
+ /**
364
+ * Get applicable security rules based on options
365
+ */
366
+ getApplicableRules(options) {
367
+ let rules = SECURITY_REVIEW_RULES;
368
+ if (options.rules) {
369
+ rules = rules.filter((rule) => options.rules.includes(rule.id));
370
+ }
371
+ if (options.excludeRules) {
372
+ rules = rules.filter((rule) => !options.excludeRules.includes(rule.id));
373
+ }
374
+ return rules;
375
+ }
376
+ /**
377
+ * Perform AI-powered code analysis
378
+ */
379
+ async performAIAnalysis(content, findings) {
380
+ // Simplified AI analysis - in practice this would use machine learning
381
+ const complexity = this.calculateComplexity(content);
382
+ const securityScore = this.calculateSecurityScore(findings, content.length);
383
+ const patterns = this.analyzePatterns(content);
384
+ const recommendations = this.generateAIRecommendations(findings, patterns);
385
+ const riskAssessment = this.assessRisk(findings, complexity);
386
+ return {
387
+ complexity,
388
+ securityScore,
389
+ patterns,
390
+ recommendations,
391
+ riskAssessment,
392
+ };
393
+ }
394
+ /**
395
+ * Calculate code complexity
396
+ */
397
+ calculateComplexity(content) {
398
+ const complexityFactors = [
399
+ (content.match(/if\s*\(/g) || []).length * 1,
400
+ (content.match(/for\s*\(/g) || []).length * 2,
401
+ (content.match(/while\s*\(/g) || []).length * 2,
402
+ (content.match(/switch\s*\(/g) || []).length * 3,
403
+ (content.match(/try\s*\{/g) || []).length * 2,
404
+ (content.match(/catch\s*\(/g) || []).length * 2,
405
+ ];
406
+ return complexityFactors.reduce((sum, factor) => sum + factor, 0);
407
+ }
408
+ /**
409
+ * Calculate security score
410
+ */
411
+ calculateSecurityScore(findings, codeLength) {
412
+ const severityWeights = { critical: 10, high: 7, medium: 4, low: 2, info: 1 };
413
+ const penalty = findings.reduce((sum, finding) => {
414
+ return sum + severityWeights[finding.severity];
415
+ }, 0);
416
+ const normalizedPenalty = penalty / (codeLength / 1000); // Normalize by code size
417
+ return Math.max(0, 100 - normalizedPenalty);
418
+ }
419
+ /**
420
+ * Analyze code patterns
421
+ */
422
+ analyzePatterns(content) {
423
+ const positive = [];
424
+ const negative = [];
425
+ // Positive patterns
426
+ if (/process\.env\./g.test(content))
427
+ positive.push("Uses environment variables");
428
+ if (/try\s*\{[\s\S]*catch/g.test(content))
429
+ positive.push("Implements error handling");
430
+ if (/crypto\.randomBytes/g.test(content))
431
+ positive.push("Uses secure random generation");
432
+ if (/bcrypt/g.test(content))
433
+ positive.push("Uses secure password hashing");
434
+ if (/https:\/\//g.test(content))
435
+ positive.push("Uses HTTPS URLs");
436
+ // Negative patterns
437
+ if (/eval\s*\(/g.test(content))
438
+ negative.push("Uses dangerous eval() function");
439
+ if (/innerHTML.*\+/g.test(content))
440
+ negative.push("Potential XSS through innerHTML concatenation");
441
+ if (/password.*=.*['"][^'"]{1,7}['"]/g.test(content))
442
+ negative.push("Weak passwords detected");
443
+ if (/http:\/\/(?!localhost)/g.test(content))
444
+ negative.push("Uses insecure HTTP URLs");
445
+ return { positive, negative };
446
+ }
447
+ /**
448
+ * Generate AI recommendations
449
+ */
450
+ generateAIRecommendations(findings, patterns) {
451
+ const recommendations = [];
452
+ // High-level recommendations based on findings
453
+ const criticalFindings = findings.filter((f) => f.severity === "critical");
454
+ if (criticalFindings.length > 0) {
455
+ recommendations.push("Address critical security vulnerabilities immediately");
456
+ }
457
+ const authFindings = findings.filter((f) => f.category === "authentication");
458
+ if (authFindings.length > 2) {
459
+ recommendations.push("Review and strengthen authentication mechanisms");
460
+ }
461
+ const inputFindings = findings.filter((f) => f.category === "input-validation");
462
+ if (inputFindings.length > 0) {
463
+ recommendations.push("Implement comprehensive input validation and sanitization");
464
+ }
465
+ // Recommendations based on patterns
466
+ if (patterns.negative.length > patterns.positive.length) {
467
+ recommendations.push("Consider refactoring to follow security best practices");
468
+ }
469
+ if (patterns.negative.includes("Uses dangerous eval() function")) {
470
+ recommendations.push("Replace eval() with safer alternatives like JSON.parse()");
471
+ }
472
+ return recommendations;
473
+ }
474
+ /**
475
+ * Assess overall risk
476
+ */
477
+ assessRisk(findings, complexity) {
478
+ const factors = [];
479
+ let riskScore = 0;
480
+ // Risk based on findings
481
+ const criticalCount = findings.filter((f) => f.severity === "critical").length;
482
+ const highCount = findings.filter((f) => f.severity === "high").length;
483
+ riskScore += criticalCount * 10 + highCount * 5;
484
+ if (criticalCount > 0)
485
+ factors.push(`${criticalCount} critical vulnerabilities`);
486
+ if (highCount > 0)
487
+ factors.push(`${highCount} high-severity vulnerabilities`);
488
+ // Risk based on complexity
489
+ if (complexity > 50) {
490
+ riskScore += 10;
491
+ factors.push("High code complexity");
492
+ }
493
+ // Risk based on categories
494
+ const authVulns = findings.filter((f) => f.category === "authentication").length;
495
+ if (authVulns > 0) {
496
+ riskScore += authVulns * 3;
497
+ factors.push("Authentication vulnerabilities");
498
+ }
499
+ // Determine risk level
500
+ let level;
501
+ if (riskScore >= 30)
502
+ level = "critical";
503
+ else if (riskScore >= 20)
504
+ level = "high";
505
+ else if (riskScore >= 10)
506
+ level = "medium";
507
+ else
508
+ level = "low";
509
+ return { level, factors };
510
+ }
511
+ /**
512
+ * Calculate confidence score for a finding
513
+ */
514
+ calculateConfidence(rule, match) {
515
+ // Base confidence varies by rule type
516
+ let confidence = 0.7;
517
+ // Adjust based on match characteristics
518
+ if (match.length > 50)
519
+ confidence += 0.1; // Longer matches are more likely to be intentional
520
+ if (/\w{20,}/.test(match))
521
+ confidence += 0.1; // Long strings suggest real credentials
522
+ if (rule.category === "authentication")
523
+ confidence += 0.1; // Auth issues are commonly overlooked
524
+ return Math.min(1.0, confidence);
525
+ }
526
+ /**
527
+ * Generate summary of findings
528
+ */
529
+ generateSummary(findings) {
530
+ return {
531
+ totalFindings: findings.length,
532
+ criticalFindings: findings.filter((f) => f.severity === "critical").length,
533
+ highFindings: findings.filter((f) => f.severity === "high").length,
534
+ mediumFindings: findings.filter((f) => f.severity === "medium").length,
535
+ lowFindings: findings.filter((f) => f.severity === "low").length,
536
+ infoFindings: findings.filter((f) => f.severity === "info").length,
537
+ };
538
+ }
539
+ /**
540
+ * Calculate overall security rating
541
+ */
542
+ calculateOverallRating(summary) {
543
+ if (summary.criticalFindings > 0)
544
+ return "critical";
545
+ if (summary.highFindings > 2)
546
+ return "vulnerable";
547
+ if (summary.highFindings > 0 || summary.mediumFindings > 3)
548
+ return "needs-review";
549
+ return "secure";
550
+ }
551
+ /**
552
+ * Generate recommendations based on findings
553
+ */
554
+ generateRecommendations(findings, aiAnalysis) {
555
+ const recommendations = [];
556
+ // Priority recommendations based on severity
557
+ const criticalFindings = findings.filter((f) => f.severity === "critical");
558
+ if (criticalFindings.length > 0) {
559
+ recommendations.push("Immediately address critical security vulnerabilities");
560
+ recommendations.push("Review credential management and move secrets to environment variables");
561
+ }
562
+ // Category-specific recommendations
563
+ const categories = [...new Set(findings.map((f) => f.category))];
564
+ if (categories.includes("authentication")) {
565
+ recommendations.push("Strengthen authentication mechanisms and credential handling");
566
+ }
567
+ if (categories.includes("input-validation")) {
568
+ recommendations.push("Implement comprehensive input validation and output encoding");
569
+ }
570
+ if (categories.includes("crypto")) {
571
+ recommendations.push("Update to use strong cryptographic algorithms and secure key management");
572
+ }
573
+ // Add AI recommendations if available
574
+ if (aiAnalysis) {
575
+ recommendations.push(...aiAnalysis.recommendations);
576
+ }
577
+ return [...new Set(recommendations)]; // Remove duplicates
578
+ }
579
+ /**
580
+ * Get line number from character index
581
+ */
582
+ getLineNumber(content, index) {
583
+ return content.substring(0, index).split("\n").length;
584
+ }
585
+ /**
586
+ * Get column number from character index
587
+ */
588
+ getColumnNumber(content, index) {
589
+ const lines = content.substring(0, index).split("\n");
590
+ return lines[lines.length - 1].length + 1;
591
+ }
592
+ /**
593
+ * Get review history
594
+ */
595
+ getReviewHistory() {
596
+ return [...this.reviewHistory];
597
+ }
598
+ /**
599
+ * Get security rules
600
+ */
601
+ getSecurityRules() {
602
+ return [...SECURITY_REVIEW_RULES];
603
+ }
604
+ /**
605
+ * Add custom security rule
606
+ */
607
+ addCustomRule(rule) {
608
+ SECURITY_REVIEW_RULES.push(rule);
609
+ }
610
+ /**
611
+ * Remove security rule
612
+ */
613
+ removeRule(ruleId) {
614
+ const index = SECURITY_REVIEW_RULES.findIndex((rule) => rule.id === ruleId);
615
+ if (index !== -1) {
616
+ SECURITY_REVIEW_RULES.splice(index, 1);
617
+ return true;
618
+ }
619
+ return false;
620
+ }
621
+ /**
622
+ * Generate security report
623
+ */
624
+ generateSecurityReport(results) {
625
+ const summary = {
626
+ filesReviewed: results.length,
627
+ totalFindings: results.reduce((sum, r) => sum + r.findings.length, 0),
628
+ criticalFindings: results.reduce((sum, r) => sum + r.summary.criticalFindings, 0),
629
+ highFindings: results.reduce((sum, r) => sum + r.summary.highFindings, 0),
630
+ overallRating: this.calculateProjectRating(results),
631
+ };
632
+ const allFindings = results.flatMap((r) => r.findings);
633
+ const topIssues = allFindings
634
+ .filter((f) => f.severity === "critical" || f.severity === "high")
635
+ .sort((a, b) => {
636
+ const severityOrder = { critical: 4, high: 3, medium: 2, low: 1, info: 0 };
637
+ return severityOrder[b.severity] - severityOrder[a.severity];
638
+ })
639
+ .slice(0, 10);
640
+ const recommendations = [...new Set(results.flatMap((r) => r.recommendations))];
641
+ const riskFactors = this.identifyRiskFactors(results);
642
+ return {
643
+ summary,
644
+ topIssues,
645
+ recommendations,
646
+ riskFactors,
647
+ };
648
+ }
649
+ /**
650
+ * Calculate overall project security rating
651
+ */
652
+ calculateProjectRating(results) {
653
+ const criticalCount = results.reduce((sum, r) => sum + r.summary.criticalFindings, 0);
654
+ const highCount = results.reduce((sum, r) => sum + r.summary.highFindings, 0);
655
+ const criticalFiles = results.filter((r) => r.overallRating === "critical").length;
656
+ if (criticalCount > 0 || criticalFiles > 0)
657
+ return "critical";
658
+ if (highCount > 5 || results.filter((r) => r.overallRating === "vulnerable").length > 2)
659
+ return "vulnerable";
660
+ if (highCount > 0 || results.filter((r) => r.overallRating === "needs-review").length > 0)
661
+ return "needs-review";
662
+ return "secure";
663
+ }
664
+ /**
665
+ * Identify project-wide risk factors
666
+ */
667
+ identifyRiskFactors(results) {
668
+ const factors = [];
669
+ const allFindings = results.flatMap((r) => r.findings);
670
+ const authIssues = allFindings.filter((f) => f.category === "authentication").length;
671
+ if (authIssues > 3)
672
+ factors.push("Multiple authentication vulnerabilities");
673
+ const cryptoIssues = allFindings.filter((f) => f.category === "crypto").length;
674
+ if (cryptoIssues > 0)
675
+ factors.push("Cryptographic implementation issues");
676
+ const inputIssues = allFindings.filter((f) => f.category === "input-validation").length;
677
+ if (inputIssues > 5)
678
+ factors.push("Widespread input validation issues");
679
+ const vulnerableFiles = results.filter((r) => r.overallRating === "vulnerable" || r.overallRating === "critical").length;
680
+ const totalFiles = results.length;
681
+ if (vulnerableFiles / totalFiles > 0.3)
682
+ factors.push("High percentage of vulnerable files");
683
+ return factors;
684
+ }
685
+ }
686
+ //# sourceMappingURL=SecurityReviewer.js.map