mcp-wordpress 2.5.0 → 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 (318) hide show
  1. package/README.md +19 -15
  2. package/bin/status.js +1 -1
  3. package/dist/config/ServerConfiguration.d.ts.map +1 -1
  4. package/dist/config/ServerConfiguration.js +23 -2
  5. package/dist/config/ServerConfiguration.js.map +1 -1
  6. package/dist/src/cache/CacheInvalidation.d.ts +120 -0
  7. package/dist/src/cache/CacheInvalidation.d.ts.map +1 -0
  8. package/dist/src/cache/CacheInvalidation.js +355 -0
  9. package/dist/src/cache/CacheInvalidation.js.map +1 -0
  10. package/dist/src/cache/CacheManager.d.ts +149 -0
  11. package/dist/src/cache/CacheManager.d.ts.map +1 -0
  12. package/dist/src/cache/CacheManager.js +326 -0
  13. package/dist/src/cache/CacheManager.js.map +1 -0
  14. package/dist/src/cache/HttpCacheWrapper.d.ts +122 -0
  15. package/dist/src/cache/HttpCacheWrapper.d.ts.map +1 -0
  16. package/dist/src/cache/HttpCacheWrapper.js +283 -0
  17. package/dist/src/cache/HttpCacheWrapper.js.map +1 -0
  18. package/dist/src/cache/index.d.ts +12 -0
  19. package/dist/src/cache/index.d.ts.map +1 -0
  20. package/dist/src/cache/index.js +9 -0
  21. package/dist/src/cache/index.js.map +1 -0
  22. package/dist/src/client/CachedWordPressClient.d.ts +174 -0
  23. package/dist/src/client/CachedWordPressClient.d.ts.map +1 -0
  24. package/dist/src/client/CachedWordPressClient.js +345 -0
  25. package/dist/src/client/CachedWordPressClient.js.map +1 -0
  26. package/dist/src/client/MockWordPressClient.d.ts +56 -0
  27. package/dist/src/client/MockWordPressClient.d.ts.map +1 -0
  28. package/dist/src/client/MockWordPressClient.js +371 -0
  29. package/dist/src/client/MockWordPressClient.js.map +1 -0
  30. package/dist/src/client/api.d.ts +235 -0
  31. package/dist/src/client/api.d.ts.map +1 -0
  32. package/dist/src/client/api.js +896 -0
  33. package/dist/src/client/api.js.map +1 -0
  34. package/dist/src/client/auth.d.ts +121 -0
  35. package/dist/src/client/auth.d.ts.map +1 -0
  36. package/dist/src/client/auth.js +429 -0
  37. package/dist/src/client/auth.js.map +1 -0
  38. package/dist/src/client/managers/AuthenticationManager.d.ts +92 -0
  39. package/dist/src/client/managers/AuthenticationManager.d.ts.map +1 -0
  40. package/dist/src/client/managers/AuthenticationManager.js +369 -0
  41. package/dist/src/client/managers/AuthenticationManager.js.map +1 -0
  42. package/dist/src/client/managers/BaseManager.d.ts +22 -0
  43. package/dist/src/client/managers/BaseManager.d.ts.map +1 -0
  44. package/dist/src/client/managers/BaseManager.js +53 -0
  45. package/dist/src/client/managers/BaseManager.js.map +1 -0
  46. package/dist/src/client/managers/RequestManager.d.ts +47 -0
  47. package/dist/src/client/managers/RequestManager.d.ts.map +1 -0
  48. package/dist/src/client/managers/RequestManager.js +193 -0
  49. package/dist/src/client/managers/RequestManager.js.map +1 -0
  50. package/dist/src/client/managers/index.d.ts +8 -0
  51. package/dist/src/client/managers/index.d.ts.map +1 -0
  52. package/dist/src/client/managers/index.js +8 -0
  53. package/dist/src/client/managers/index.js.map +1 -0
  54. package/dist/src/config/Config.d.ts +155 -0
  55. package/dist/src/config/Config.d.ts.map +1 -0
  56. package/dist/src/config/Config.js +215 -0
  57. package/dist/src/config/Config.js.map +1 -0
  58. package/dist/src/config/ConfigurationSchema.d.ts +281 -0
  59. package/dist/src/config/ConfigurationSchema.d.ts.map +1 -0
  60. package/dist/src/config/ConfigurationSchema.js +205 -0
  61. package/dist/src/config/ConfigurationSchema.js.map +1 -0
  62. package/dist/src/config/ServerConfiguration.d.ts +47 -0
  63. package/dist/src/config/ServerConfiguration.d.ts.map +1 -0
  64. package/dist/src/config/ServerConfiguration.js +255 -0
  65. package/dist/src/config/ServerConfiguration.js.map +1 -0
  66. package/dist/src/docs/DocumentationGenerator.d.ts +185 -0
  67. package/dist/src/docs/DocumentationGenerator.d.ts.map +1 -0
  68. package/dist/src/docs/DocumentationGenerator.js +777 -0
  69. package/dist/src/docs/DocumentationGenerator.js.map +1 -0
  70. package/dist/src/docs/MarkdownFormatter.d.ts +84 -0
  71. package/dist/src/docs/MarkdownFormatter.d.ts.map +1 -0
  72. package/dist/src/docs/MarkdownFormatter.js +458 -0
  73. package/dist/src/docs/MarkdownFormatter.js.map +1 -0
  74. package/dist/src/docs/index.d.ts +8 -0
  75. package/dist/src/docs/index.d.ts.map +1 -0
  76. package/dist/src/docs/index.js +7 -0
  77. package/dist/src/docs/index.js.map +1 -0
  78. package/dist/src/dxt-entry.d.ts +6 -0
  79. package/dist/src/dxt-entry.d.ts.map +1 -0
  80. package/dist/src/dxt-entry.js +39 -0
  81. package/dist/src/dxt-entry.js.map +1 -0
  82. package/dist/src/index.d.ts +18 -0
  83. package/dist/src/index.d.ts.map +1 -0
  84. package/dist/src/index.js +143 -0
  85. package/dist/src/index.js.map +1 -0
  86. package/dist/src/performance/MetricsCollector.d.ts +145 -0
  87. package/dist/src/performance/MetricsCollector.d.ts.map +1 -0
  88. package/dist/src/performance/MetricsCollector.js +368 -0
  89. package/dist/src/performance/MetricsCollector.js.map +1 -0
  90. package/dist/src/performance/PerformanceAnalytics.d.ts +168 -0
  91. package/dist/src/performance/PerformanceAnalytics.d.ts.map +1 -0
  92. package/dist/src/performance/PerformanceAnalytics.js +570 -0
  93. package/dist/src/performance/PerformanceAnalytics.js.map +1 -0
  94. package/dist/src/performance/PerformanceMonitor.d.ts +203 -0
  95. package/dist/src/performance/PerformanceMonitor.d.ts.map +1 -0
  96. package/dist/src/performance/PerformanceMonitor.js +478 -0
  97. package/dist/src/performance/PerformanceMonitor.js.map +1 -0
  98. package/dist/src/performance/index.d.ts +11 -0
  99. package/dist/src/performance/index.d.ts.map +1 -0
  100. package/dist/src/performance/index.js +8 -0
  101. package/dist/src/performance/index.js.map +1 -0
  102. package/dist/src/security/AISecurityScanner.d.ts +176 -0
  103. package/dist/src/security/AISecurityScanner.d.ts.map +1 -0
  104. package/dist/src/security/AISecurityScanner.js +655 -0
  105. package/dist/src/security/AISecurityScanner.js.map +1 -0
  106. package/dist/src/security/AutomatedRemediation.d.ts +146 -0
  107. package/dist/src/security/AutomatedRemediation.d.ts.map +1 -0
  108. package/dist/src/security/AutomatedRemediation.js +566 -0
  109. package/dist/src/security/AutomatedRemediation.js.map +1 -0
  110. package/dist/src/security/InputValidator.d.ts +219 -0
  111. package/dist/src/security/InputValidator.d.ts.map +1 -0
  112. package/dist/src/security/InputValidator.js +295 -0
  113. package/dist/src/security/InputValidator.js.map +1 -0
  114. package/dist/src/security/SecurityCIPipeline.d.ts +213 -0
  115. package/dist/src/security/SecurityCIPipeline.d.ts.map +1 -0
  116. package/dist/src/security/SecurityCIPipeline.js +693 -0
  117. package/dist/src/security/SecurityCIPipeline.js.map +1 -0
  118. package/dist/src/security/SecurityConfig.d.ts +129 -0
  119. package/dist/src/security/SecurityConfig.d.ts.map +1 -0
  120. package/dist/src/security/SecurityConfig.js +266 -0
  121. package/dist/src/security/SecurityConfig.js.map +1 -0
  122. package/dist/src/security/SecurityConfigManager.d.ts +294 -0
  123. package/dist/src/security/SecurityConfigManager.d.ts.map +1 -0
  124. package/dist/src/security/SecurityConfigManager.js +558 -0
  125. package/dist/src/security/SecurityConfigManager.js.map +1 -0
  126. package/dist/src/security/SecurityMonitoring.d.ts +245 -0
  127. package/dist/src/security/SecurityMonitoring.d.ts.map +1 -0
  128. package/dist/src/security/SecurityMonitoring.js +598 -0
  129. package/dist/src/security/SecurityMonitoring.js.map +1 -0
  130. package/dist/src/security/SecurityReviewer.d.ts +168 -0
  131. package/dist/src/security/SecurityReviewer.d.ts.map +1 -0
  132. package/dist/src/security/SecurityReviewer.js +686 -0
  133. package/dist/src/security/SecurityReviewer.js.map +1 -0
  134. package/dist/src/security/index.d.ts +183 -0
  135. package/dist/src/security/index.d.ts.map +1 -0
  136. package/dist/src/security/index.js +218 -0
  137. package/dist/src/security/index.js.map +1 -0
  138. package/dist/src/server/ConnectionTester.d.ts +32 -0
  139. package/dist/src/server/ConnectionTester.d.ts.map +1 -0
  140. package/dist/src/server/ConnectionTester.js +135 -0
  141. package/dist/src/server/ConnectionTester.js.map +1 -0
  142. package/dist/src/server/ToolRegistry.d.ts +50 -0
  143. package/dist/src/server/ToolRegistry.d.ts.map +1 -0
  144. package/dist/src/server/ToolRegistry.js +219 -0
  145. package/dist/src/server/ToolRegistry.js.map +1 -0
  146. package/dist/src/server.d.ts +7 -0
  147. package/dist/src/server.d.ts.map +1 -0
  148. package/dist/src/server.js +7 -0
  149. package/dist/src/server.js.map +1 -0
  150. package/dist/src/tools/BaseToolManager.d.ts +62 -0
  151. package/dist/src/tools/BaseToolManager.d.ts.map +1 -0
  152. package/dist/src/tools/BaseToolManager.js +195 -0
  153. package/dist/src/tools/BaseToolManager.js.map +1 -0
  154. package/dist/src/tools/auth.d.ts +50 -0
  155. package/dist/src/tools/auth.d.ts.map +1 -0
  156. package/dist/src/tools/auth.js +133 -0
  157. package/dist/src/tools/auth.js.map +1 -0
  158. package/dist/src/tools/cache.d.ts +260 -0
  159. package/dist/src/tools/cache.d.ts.map +1 -0
  160. package/dist/src/tools/cache.js +232 -0
  161. package/dist/src/tools/cache.js.map +1 -0
  162. package/dist/src/tools/comments.d.ts +33 -0
  163. package/dist/src/tools/comments.d.ts.map +1 -0
  164. package/dist/src/tools/comments.js +235 -0
  165. package/dist/src/tools/comments.js.map +1 -0
  166. package/dist/src/tools/index.d.ts +11 -0
  167. package/dist/src/tools/index.d.ts.map +1 -0
  168. package/dist/src/tools/index.js +11 -0
  169. package/dist/src/tools/index.js.map +1 -0
  170. package/dist/src/tools/media.d.ts +70 -0
  171. package/dist/src/tools/media.d.ts.map +1 -0
  172. package/dist/src/tools/media.js +248 -0
  173. package/dist/src/tools/media.js.map +1 -0
  174. package/dist/src/tools/pages.d.ts +32 -0
  175. package/dist/src/tools/pages.d.ts.map +1 -0
  176. package/dist/src/tools/pages.js +215 -0
  177. package/dist/src/tools/pages.js.map +1 -0
  178. package/dist/src/tools/performance.d.ts +73 -0
  179. package/dist/src/tools/performance.d.ts.map +1 -0
  180. package/dist/src/tools/performance.js +922 -0
  181. package/dist/src/tools/performance.js.map +1 -0
  182. package/dist/src/tools/posts/PostHandlers.d.ts +46 -0
  183. package/dist/src/tools/posts/PostHandlers.d.ts.map +1 -0
  184. package/dist/src/tools/posts/PostHandlers.js +400 -0
  185. package/dist/src/tools/posts/PostHandlers.js.map +1 -0
  186. package/dist/src/tools/posts/PostToolDefinitions.d.ts +37 -0
  187. package/dist/src/tools/posts/PostToolDefinitions.d.ts.map +1 -0
  188. package/dist/src/tools/posts/PostToolDefinitions.js +236 -0
  189. package/dist/src/tools/posts/PostToolDefinitions.js.map +1 -0
  190. package/dist/src/tools/posts/index.d.ts +138 -0
  191. package/dist/src/tools/posts/index.d.ts.map +1 -0
  192. package/dist/src/tools/posts/index.js +163 -0
  193. package/dist/src/tools/posts/index.js.map +1 -0
  194. package/dist/src/tools/posts.d.ts +15 -0
  195. package/dist/src/tools/posts.d.ts.map +1 -0
  196. package/dist/src/tools/posts.js +16 -0
  197. package/dist/src/tools/posts.js.map +1 -0
  198. package/dist/src/tools/site.d.ts +32 -0
  199. package/dist/src/tools/site.d.ts.map +1 -0
  200. package/dist/src/tools/site.js +234 -0
  201. package/dist/src/tools/site.js.map +1 -0
  202. package/dist/src/tools/taxonomies.d.ts +36 -0
  203. package/dist/src/tools/taxonomies.d.ts.map +1 -0
  204. package/dist/src/tools/taxonomies.js +286 -0
  205. package/dist/src/tools/taxonomies.js.map +1 -0
  206. package/dist/src/tools/users.d.ts +33 -0
  207. package/dist/src/tools/users.d.ts.map +1 -0
  208. package/dist/src/tools/users.js +308 -0
  209. package/dist/src/tools/users.js.map +1 -0
  210. package/dist/src/types/client.d.ts +223 -0
  211. package/dist/src/types/client.d.ts.map +1 -0
  212. package/dist/src/types/client.js +97 -0
  213. package/dist/src/types/client.js.map +1 -0
  214. package/dist/src/types/enhanced.d.ts +237 -0
  215. package/dist/src/types/enhanced.d.ts.map +1 -0
  216. package/dist/src/types/enhanced.js +49 -0
  217. package/dist/src/types/enhanced.js.map +1 -0
  218. package/dist/src/types/index.d.ts +160 -0
  219. package/dist/src/types/index.d.ts.map +1 -0
  220. package/dist/src/types/index.js +14 -0
  221. package/dist/src/types/index.js.map +1 -0
  222. package/dist/src/types/mcp.d.ts +178 -0
  223. package/dist/src/types/mcp.d.ts.map +1 -0
  224. package/dist/src/types/mcp.js +7 -0
  225. package/dist/src/types/mcp.js.map +1 -0
  226. package/dist/src/types/requests.d.ts +322 -0
  227. package/dist/src/types/requests.d.ts.map +1 -0
  228. package/dist/src/types/requests.js +8 -0
  229. package/dist/src/types/requests.js.map +1 -0
  230. package/dist/src/types/tools.d.ts +506 -0
  231. package/dist/src/types/tools.d.ts.map +1 -0
  232. package/dist/src/types/tools.js +8 -0
  233. package/dist/src/types/tools.js.map +1 -0
  234. package/dist/src/types/wordpress.d.ts +471 -0
  235. package/dist/src/types/wordpress.d.ts.map +1 -0
  236. package/dist/src/types/wordpress.js +14 -0
  237. package/dist/src/types/wordpress.js.map +1 -0
  238. package/dist/src/utils/debug.d.ts +71 -0
  239. package/dist/src/utils/debug.d.ts.map +1 -0
  240. package/dist/src/utils/debug.js +235 -0
  241. package/dist/src/utils/debug.js.map +1 -0
  242. package/dist/src/utils/enhancedError.d.ts +61 -0
  243. package/dist/src/utils/enhancedError.d.ts.map +1 -0
  244. package/dist/src/utils/enhancedError.js +221 -0
  245. package/dist/src/utils/enhancedError.js.map +1 -0
  246. package/dist/src/utils/error.d.ts +17 -0
  247. package/dist/src/utils/error.d.ts.map +1 -0
  248. package/dist/src/utils/error.js +108 -0
  249. package/dist/src/utils/error.js.map +1 -0
  250. package/dist/src/utils/logger.d.ts +106 -0
  251. package/dist/src/utils/logger.d.ts.map +1 -0
  252. package/dist/src/utils/logger.js +280 -0
  253. package/dist/src/utils/logger.js.map +1 -0
  254. package/dist/src/utils/streaming.d.ts +104 -0
  255. package/dist/src/utils/streaming.d.ts.map +1 -0
  256. package/dist/src/utils/streaming.js +331 -0
  257. package/dist/src/utils/streaming.js.map +1 -0
  258. package/dist/src/utils/toolWrapper.d.ts +42 -0
  259. package/dist/src/utils/toolWrapper.d.ts.map +1 -0
  260. package/dist/src/utils/toolWrapper.js +101 -0
  261. package/dist/src/utils/toolWrapper.js.map +1 -0
  262. package/dist/src/utils/validation/core.d.ts +21 -0
  263. package/dist/src/utils/validation/core.d.ts.map +1 -0
  264. package/dist/src/utils/validation/core.js +71 -0
  265. package/dist/src/utils/validation/core.js.map +1 -0
  266. package/dist/src/utils/validation/index.d.ts +25 -0
  267. package/dist/src/utils/validation/index.d.ts.map +1 -0
  268. package/dist/src/utils/validation/index.js +29 -0
  269. package/dist/src/utils/validation/index.js.map +1 -0
  270. package/dist/src/utils/validation/network.d.ts +19 -0
  271. package/dist/src/utils/validation/network.d.ts.map +1 -0
  272. package/dist/src/utils/validation/network.js +93 -0
  273. package/dist/src/utils/validation/network.js.map +1 -0
  274. package/dist/src/utils/validation/rateLimit.d.ts +21 -0
  275. package/dist/src/utils/validation/rateLimit.d.ts.map +1 -0
  276. package/dist/src/utils/validation/rateLimit.js +43 -0
  277. package/dist/src/utils/validation/rateLimit.js.map +1 -0
  278. package/dist/src/utils/validation/security.d.ts +29 -0
  279. package/dist/src/utils/validation/security.d.ts.map +1 -0
  280. package/dist/src/utils/validation/security.js +327 -0
  281. package/dist/src/utils/validation/security.js.map +1 -0
  282. package/dist/src/utils/validation/wordpress.d.ts +31 -0
  283. package/dist/src/utils/validation/wordpress.d.ts.map +1 -0
  284. package/dist/src/utils/validation/wordpress.js +146 -0
  285. package/dist/src/utils/validation/wordpress.js.map +1 -0
  286. package/dist/src/utils/validation.d.ts +15 -0
  287. package/dist/src/utils/validation.d.ts.map +1 -0
  288. package/dist/src/utils/validation.js +27 -0
  289. package/dist/src/utils/validation.js.map +1 -0
  290. package/dist/tests/vitest.setup.d.ts +6 -0
  291. package/dist/tests/vitest.setup.d.ts.map +1 -0
  292. package/dist/tests/vitest.setup.js +39 -0
  293. package/dist/tests/vitest.setup.js.map +1 -0
  294. package/docs/INSTALLATION.md +4 -2
  295. package/docs/TROUBLESHOOTING.md +2 -1
  296. package/docs/developer/TESTING.md +24 -19
  297. package/docs/integrations/claude-desktop.md +9 -4
  298. package/docs/user-guides/DXT_INSTALLATION.md +2 -1
  299. package/package.json +28 -29
  300. package/src/config/ServerConfiguration.ts +22 -2
  301. package/dist/ajv-patch.js +0 -34
  302. package/dist/cache/__tests__/CacheInvalidation.test.d.ts +0 -5
  303. package/dist/cache/__tests__/CacheInvalidation.test.d.ts.map +0 -1
  304. package/dist/cache/__tests__/CacheInvalidation.test.js +0 -238
  305. package/dist/cache/__tests__/CacheInvalidation.test.js.map +0 -1
  306. package/dist/cache/__tests__/CacheManager.test.d.ts +0 -5
  307. package/dist/cache/__tests__/CacheManager.test.d.ts.map +0 -1
  308. package/dist/cache/__tests__/CacheManager.test.js +0 -233
  309. package/dist/cache/__tests__/CacheManager.test.js.map +0 -1
  310. package/dist/cache/__tests__/CachedWordPressClient.test.d.ts +0 -5
  311. package/dist/cache/__tests__/CachedWordPressClient.test.d.ts.map +0 -1
  312. package/dist/cache/__tests__/CachedWordPressClient.test.js +0 -231
  313. package/dist/cache/__tests__/CachedWordPressClient.test.js.map +0 -1
  314. package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts +0 -5
  315. package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts.map +0 -1
  316. package/dist/cache/__tests__/HttpCacheWrapper.test.js +0 -300
  317. package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +0 -1
  318. package/dist/dxt-entry.cjs +0 -81
@@ -0,0 +1,368 @@
1
+ /**
2
+ * Real-time Metrics Collector for WordPress MCP Server
3
+ * Integrates with existing client and cache systems
4
+ */
5
+ import { ConfigHelpers } from "../config/Config.js";
6
+ import { LoggerFactory } from "../utils/logger.js";
7
+ /**
8
+ * Metrics Collector - Central hub for all performance data
9
+ */
10
+ export class MetricsCollector {
11
+ monitor;
12
+ config;
13
+ activeRequests = new Map();
14
+ activeTools = new Map();
15
+ clientInstances = new Map();
16
+ cacheManagers = new Map();
17
+ logger = LoggerFactory.performance();
18
+ realTimeInterval;
19
+ constructor(monitor, config = {}) {
20
+ this.monitor = monitor;
21
+ this.config = {
22
+ enableRealTime: true,
23
+ collectInterval: 30000, // 30 seconds
24
+ enableToolTracking: true,
25
+ enableRequestInterception: true,
26
+ enableCacheIntegration: true,
27
+ enableSystemMetrics: true,
28
+ ...config,
29
+ };
30
+ // Only enable real-time collection in appropriate environments
31
+ if (this.config.enableRealTime && (ConfigHelpers.isDev() || ConfigHelpers.isProd())) {
32
+ this.startRealTimeCollection();
33
+ }
34
+ else if (ConfigHelpers.isTest() || ConfigHelpers.isCI()) {
35
+ this.logger.debug("Skipping real-time metrics collection in test/CI environment");
36
+ }
37
+ }
38
+ /**
39
+ * Register a WordPress client for monitoring
40
+ */
41
+ registerClient(siteId, client) {
42
+ this.clientInstances.set(siteId, client);
43
+ if (this.config.enableRequestInterception) {
44
+ this.interceptClientRequests(siteId, client);
45
+ }
46
+ }
47
+ /**
48
+ * Register a cache manager for monitoring
49
+ */
50
+ registerCacheManager(siteId, cacheManager) {
51
+ this.cacheManagers.set(siteId, cacheManager);
52
+ }
53
+ /**
54
+ * Start tracking a tool execution
55
+ */
56
+ startToolExecution(toolName, parameters, siteId) {
57
+ const executionId = `${toolName}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
58
+ this.activeTools.set(executionId, {
59
+ toolName,
60
+ parameters,
61
+ startTime: Date.now(),
62
+ siteId,
63
+ });
64
+ return executionId;
65
+ }
66
+ /**
67
+ * End tool execution and record metrics
68
+ */
69
+ endToolExecution(executionId, success, error) {
70
+ const context = this.activeTools.get(executionId);
71
+ if (!context)
72
+ return;
73
+ const responseTime = Date.now() - context.startTime;
74
+ // Record in performance monitor
75
+ this.monitor.recordRequest(responseTime, success, context.toolName);
76
+ this.activeTools.delete(executionId);
77
+ }
78
+ /**
79
+ * Record a raw request (bypass tool tracking)
80
+ */
81
+ recordRawRequest(responseTime, success, endpoint, fromCache = false) {
82
+ this.monitor.recordRequest(responseTime, success);
83
+ }
84
+ /**
85
+ * Collect current metrics from all sources
86
+ */
87
+ collectCurrentMetrics() {
88
+ // Update cache metrics from all registered cache managers
89
+ this.updateCacheMetrics();
90
+ // Update client metrics from all registered clients
91
+ this.updateClientMetrics();
92
+ // Get current metrics from monitor
93
+ return this.monitor.getMetrics();
94
+ }
95
+ /**
96
+ * Get aggregated cache statistics
97
+ */
98
+ getAggregatedCacheStats() {
99
+ const aggregated = {
100
+ hits: 0,
101
+ misses: 0,
102
+ evictions: 0,
103
+ totalSize: 0,
104
+ hitRate: 0,
105
+ };
106
+ for (const [_siteId, cacheManager] of this.cacheManagers) {
107
+ const manager = cacheManager;
108
+ if (manager && typeof manager.getStats === "function") {
109
+ const stats = manager.getStats();
110
+ aggregated.hits += stats.hits || 0;
111
+ aggregated.misses += stats.misses || 0;
112
+ aggregated.evictions += stats.evictions || 0;
113
+ aggregated.totalSize += stats.totalSize || 0;
114
+ }
115
+ }
116
+ // Calculate overall hit rate
117
+ const total = aggregated.hits + aggregated.misses;
118
+ aggregated.hitRate = total > 0 ? aggregated.hits / total : 0;
119
+ return aggregated;
120
+ }
121
+ /**
122
+ * Get aggregated client statistics
123
+ */
124
+ getAggregatedClientStats() {
125
+ const aggregated = {
126
+ totalRequests: 0,
127
+ successfulRequests: 0,
128
+ failedRequests: 0,
129
+ averageResponseTime: 0,
130
+ rateLimitHits: 0,
131
+ authFailures: 0,
132
+ };
133
+ const responseTimes = [];
134
+ for (const [_siteId, client] of this.clientInstances) {
135
+ const clientObj = client;
136
+ if (clientObj && typeof clientObj.getStats === "function") {
137
+ const stats = clientObj.getStats();
138
+ aggregated.totalRequests += stats.totalRequests || 0;
139
+ aggregated.successfulRequests += stats.successfulRequests || 0;
140
+ aggregated.failedRequests += stats.failedRequests || 0;
141
+ aggregated.rateLimitHits += stats.rateLimitHits || 0;
142
+ aggregated.authFailures += stats.authFailures || 0;
143
+ if (stats.averageResponseTime) {
144
+ responseTimes.push(stats.averageResponseTime);
145
+ }
146
+ }
147
+ }
148
+ // Calculate overall average response time
149
+ if (responseTimes.length > 0) {
150
+ aggregated.averageResponseTime = responseTimes.reduce((sum, time) => sum + time, 0) / responseTimes.length;
151
+ }
152
+ return aggregated;
153
+ }
154
+ /**
155
+ * Get performance summary for specific site
156
+ */
157
+ getSiteMetrics(siteId) {
158
+ const result = { isActive: false };
159
+ const cacheManager = this.cacheManagers.get(siteId);
160
+ const cacheObj = cacheManager;
161
+ if (cacheObj && typeof cacheObj.getStats === "function") {
162
+ result.cache = cacheObj.getStats();
163
+ result.isActive = true;
164
+ }
165
+ const client = this.clientInstances.get(siteId);
166
+ const clientObj = client;
167
+ if (clientObj && typeof clientObj.getStats === "function") {
168
+ result.client = clientObj.getStats();
169
+ result.isActive = true;
170
+ }
171
+ return result;
172
+ }
173
+ /**
174
+ * Generate performance comparison between sites
175
+ */
176
+ compareSitePerformance() {
177
+ const sites = Array.from(this.clientInstances.keys());
178
+ const comparison = {};
179
+ const rankings = [];
180
+ for (const siteId of sites) {
181
+ const metrics = this.getSiteMetrics(siteId);
182
+ const responseTime = metrics.client?.averageResponseTime || 0;
183
+ const cacheHitRate = metrics.cache?.hitRate || 0;
184
+ const errorRate = metrics.client ? metrics.client.failedRequests / Math.max(metrics.client.totalRequests, 1) : 0;
185
+ const requestCount = metrics.client?.totalRequests || 0;
186
+ // Calculate performance score (lower is better for response time and error rate)
187
+ const score = responseTime / 1000 + errorRate * 100 - cacheHitRate * 50 + requestCount * 0.001;
188
+ comparison[siteId] = {
189
+ responseTime,
190
+ cacheHitRate,
191
+ errorRate,
192
+ requestCount,
193
+ ranking: 0, // Will be set after sorting
194
+ };
195
+ rankings.push({ site: siteId, score });
196
+ }
197
+ // Sort by performance score
198
+ rankings.sort((a, b) => a.score - b.score);
199
+ // Assign rankings
200
+ rankings.forEach((item, index) => {
201
+ const siteData = comparison[item.site];
202
+ if (siteData) {
203
+ siteData.ranking = index + 1;
204
+ }
205
+ });
206
+ return {
207
+ sites,
208
+ comparison,
209
+ bestPerforming: rankings[0]?.site || "",
210
+ worstPerforming: rankings[rankings.length - 1]?.site || "",
211
+ };
212
+ }
213
+ /**
214
+ * Generate optimization suggestions
215
+ */
216
+ generateOptimizationSuggestions() {
217
+ const metrics = this.collectCurrentMetrics();
218
+ const critical = [];
219
+ const recommended = [];
220
+ const optional = [];
221
+ // Critical issues
222
+ if (metrics.requests.averageResponseTime > 5000) {
223
+ critical.push("Response times are critically high (>5s). Enable caching immediately.");
224
+ }
225
+ const errorRate = metrics.requests.failed / Math.max(metrics.requests.total, 1);
226
+ if (errorRate > 0.1) {
227
+ critical.push("Error rate is critically high (>10%). Check WordPress connectivity.");
228
+ }
229
+ // Recommended optimizations
230
+ if (metrics.cache.hitRate < 0.8) {
231
+ recommended.push("Cache hit rate is below 80%. Consider cache warming or TTL adjustment.");
232
+ }
233
+ if (metrics.requests.averageResponseTime > 2000) {
234
+ recommended.push("Response times could be improved. Consider enabling more aggressive caching.");
235
+ }
236
+ if (metrics.system.memoryUsage > 80) {
237
+ recommended.push("Memory usage is high. Consider increasing cache size limits or server resources.");
238
+ }
239
+ // Optional optimizations
240
+ if (metrics.cache.totalSize < 100) {
241
+ optional.push("Cache utilization is low. Consider pre-warming with frequently accessed data.");
242
+ }
243
+ if (Object.keys(metrics.tools.toolUsageCount).length > 10) {
244
+ optional.push("Many tools are being used. Consider creating custom workflows for common operations.");
245
+ }
246
+ return { critical, recommended, optional };
247
+ }
248
+ /**
249
+ * Export detailed performance report
250
+ */
251
+ exportDetailedReport() {
252
+ return {
253
+ timestamp: new Date().toISOString(),
254
+ overview: this.collectCurrentMetrics(),
255
+ siteComparison: this.compareSitePerformance(),
256
+ aggregatedStats: {
257
+ cache: this.getAggregatedCacheStats(),
258
+ client: this.getAggregatedClientStats(),
259
+ },
260
+ optimizations: this.generateOptimizationSuggestions(),
261
+ alerts: this.monitor.getAlerts(),
262
+ };
263
+ }
264
+ /**
265
+ * Start real-time metric collection
266
+ */
267
+ startRealTimeCollection() {
268
+ // Skip in test/CI environments to prevent performance issues
269
+ if (ConfigHelpers.isTest() || ConfigHelpers.isCI()) {
270
+ return;
271
+ }
272
+ // Adjust collection frequency based on environment
273
+ const interval = ConfigHelpers.isDev()
274
+ ? Math.max(this.config.collectInterval * 2, 60000) // Longer intervals in dev
275
+ : this.config.collectInterval;
276
+ this.logger.info("Starting real-time metrics collection", {
277
+ interval: `${interval / 1000}s`,
278
+ environment: ConfigHelpers.get().get().app.nodeEnv,
279
+ });
280
+ this.realTimeInterval = setInterval(() => {
281
+ try {
282
+ this.updateCacheMetrics();
283
+ this.updateClientMetrics();
284
+ this.logger.debug("Real-time metrics updated");
285
+ }
286
+ catch (error) {
287
+ this.logger.error("Failed to update real-time metrics", {
288
+ error: error instanceof Error ? error.message : String(error),
289
+ });
290
+ }
291
+ }, interval);
292
+ }
293
+ /**
294
+ * Stop real-time collection and cleanup resources
295
+ */
296
+ destroy() {
297
+ if (this.realTimeInterval) {
298
+ clearInterval(this.realTimeInterval);
299
+ this.realTimeInterval = undefined;
300
+ this.logger.info("Real-time metrics collection stopped");
301
+ }
302
+ }
303
+ /**
304
+ * Update cache metrics in performance monitor
305
+ */
306
+ updateCacheMetrics() {
307
+ const aggregatedStats = this.getAggregatedCacheStats();
308
+ // Type assertion: convert CacheStats to Record<string, unknown> via unknown
309
+ this.monitor.updateCacheMetrics(aggregatedStats);
310
+ }
311
+ /**
312
+ * Update client metrics in performance monitor
313
+ */
314
+ updateClientMetrics() {
315
+ // Client metrics are updated through request interception
316
+ // This method can be used for additional client-specific metrics
317
+ }
318
+ /**
319
+ * Intercept client requests for automatic tracking
320
+ */
321
+ interceptClientRequests(siteId, client) {
322
+ if (!client.request || typeof client.request !== "function") {
323
+ return;
324
+ }
325
+ const originalRequest = client.request.bind(client);
326
+ const clientObj = client;
327
+ if (!clientObj.request)
328
+ return;
329
+ clientObj.originalRequest = clientObj.request;
330
+ clientObj.request = async (...args) => {
331
+ const startTime = Date.now();
332
+ const requestId = `${siteId}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
333
+ // Extract metadata with proper type assertions
334
+ const metadata = {
335
+ siteId,
336
+ endpoint: args[0] || "unknown",
337
+ method: args[1] || "GET",
338
+ startTime,
339
+ fromCache: false,
340
+ };
341
+ this.activeRequests.set(requestId, metadata);
342
+ try {
343
+ const result = await originalRequest(...args);
344
+ const responseTime = Date.now() - startTime;
345
+ // Check if response came from cache
346
+ const _fromCache = result.cached || false;
347
+ this.monitor.recordRequest(responseTime, true);
348
+ this.activeRequests.delete(requestId);
349
+ return result;
350
+ }
351
+ catch (error) {
352
+ const responseTime = Date.now() - startTime;
353
+ this.monitor.recordRequest(responseTime, false);
354
+ this.activeRequests.delete(requestId);
355
+ throw error;
356
+ }
357
+ };
358
+ }
359
+ /**
360
+ * Stop all monitoring and cleanup
361
+ */
362
+ stop() {
363
+ this.monitor.stop();
364
+ this.activeRequests.clear();
365
+ this.activeTools.clear();
366
+ }
367
+ }
368
+ //# sourceMappingURL=MetricsCollector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricsCollector.js","sourceRoot":"","sources":["../../../src/performance/MetricsCollector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Advanced Performance Analytics for WordPress MCP Server
3
+ * Provides insights, predictions, and optimization recommendations
4
+ */
5
+ import { PerformanceMetrics } from "./PerformanceMonitor.js";
6
+ import { MetricsCollector } from "./MetricsCollector.js";
7
+ export interface AnalyticsConfig {
8
+ enablePredictiveAnalysis: boolean;
9
+ enableAnomalyDetection: boolean;
10
+ enableTrendAnalysis: boolean;
11
+ lookbackPeriod: number;
12
+ sensitivityLevel: "low" | "medium" | "high";
13
+ }
14
+ export interface PerformanceTrend {
15
+ metric: string;
16
+ direction: "improving" | "declining" | "stable";
17
+ changeRate: number;
18
+ confidence: number;
19
+ prediction: {
20
+ nextValue: number;
21
+ timeframe: number;
22
+ confidence: number;
23
+ };
24
+ }
25
+ export interface PerformanceAnomaly {
26
+ timestamp: number;
27
+ metric: string;
28
+ expectedValue: number;
29
+ actualValue: number;
30
+ deviation: number;
31
+ severity: "minor" | "moderate" | "major" | "critical";
32
+ possibleCauses: string[];
33
+ }
34
+ export interface PerformanceInsight {
35
+ id: string;
36
+ category: "optimization" | "scaling" | "maintenance" | "alert";
37
+ priority: "low" | "medium" | "high" | "critical";
38
+ title: string;
39
+ description: string;
40
+ impact: "performance" | "reliability" | "cost" | "user_experience";
41
+ recommendation: string;
42
+ estimatedImprovement: string;
43
+ implementationEffort: "low" | "medium" | "high";
44
+ relatedMetrics: string[];
45
+ }
46
+ export interface BenchmarkComparison {
47
+ category: string;
48
+ currentValue: number;
49
+ benchmarkValue: number;
50
+ percentile: number;
51
+ status: "excellent" | "good" | "average" | "below_average" | "poor";
52
+ improvement: number;
53
+ }
54
+ /**
55
+ * Performance Analytics Engine
56
+ */
57
+ export declare class PerformanceAnalytics {
58
+ private collector;
59
+ private config;
60
+ private historicalData;
61
+ private detectedAnomalies;
62
+ private generatedInsights;
63
+ private benchmarks;
64
+ constructor(collector: MetricsCollector, config?: Partial<AnalyticsConfig>);
65
+ /**
66
+ * Add historical data point for analysis
67
+ */
68
+ addDataPoint(metrics: PerformanceMetrics): void;
69
+ /**
70
+ * Analyze performance trends
71
+ */
72
+ analyzeTrends(): PerformanceTrend[];
73
+ /**
74
+ * Generate performance insights
75
+ */
76
+ generateInsights(): PerformanceInsight[];
77
+ /**
78
+ * Compare performance against benchmarks
79
+ */
80
+ benchmarkPerformance(): BenchmarkComparison[];
81
+ /**
82
+ * Predict future performance based on trends
83
+ */
84
+ predictPerformance(timeframeMinutes?: number): {
85
+ predictions: Array<{
86
+ metric: string;
87
+ currentValue: number;
88
+ predictedValue: number;
89
+ confidence: number;
90
+ trend: "improving" | "declining" | "stable";
91
+ }>;
92
+ alerts: string[];
93
+ };
94
+ /**
95
+ * Generate optimization recommendations with ROI estimates
96
+ */
97
+ generateOptimizationPlan(): {
98
+ quickWins: PerformanceInsight[];
99
+ mediumTerm: PerformanceInsight[];
100
+ longTerm: PerformanceInsight[];
101
+ estimatedROI: {
102
+ performanceGain: number;
103
+ implementationCost: "low" | "medium" | "high";
104
+ timeToValue: number;
105
+ };
106
+ };
107
+ /**
108
+ * Get anomalies detected in recent data
109
+ */
110
+ getAnomalies(severity?: string): PerformanceAnomaly[];
111
+ /**
112
+ * Export comprehensive analytics report
113
+ */
114
+ exportAnalyticsReport(): {
115
+ timestamp: string;
116
+ summary: {
117
+ overallHealth: string;
118
+ keyInsights: number;
119
+ criticalAlerts: number;
120
+ performanceScore: number;
121
+ };
122
+ trends: PerformanceTrend[];
123
+ benchmarks: BenchmarkComparison[];
124
+ insights: PerformanceInsight[];
125
+ anomalies: PerformanceAnomaly[];
126
+ predictions: Array<{
127
+ metric: string;
128
+ currentValue: number;
129
+ predictedValue: number;
130
+ confidence: number;
131
+ trend: "improving" | "declining" | "stable";
132
+ }>;
133
+ optimizationPlan: Record<string, unknown>;
134
+ };
135
+ /**
136
+ * Analyze trend for a specific metric
137
+ */
138
+ private analyzeTrend;
139
+ /**
140
+ * Detect anomalies in current metrics
141
+ */
142
+ private detectAnomalies;
143
+ /**
144
+ * Check if a metric value is anomalous
145
+ */
146
+ private checkMetricAnomaly;
147
+ /**
148
+ * Generate possible causes for anomalies
149
+ */
150
+ private generatePossibleCauses;
151
+ /**
152
+ * Create benchmark comparison
153
+ */
154
+ private createBenchmarkComparison;
155
+ /**
156
+ * Get current value for a metric
157
+ */
158
+ private getCurrentMetricValue;
159
+ /**
160
+ * Calculate overall performance score
161
+ */
162
+ private calculatePerformanceScore;
163
+ /**
164
+ * Calculate overall health status
165
+ */
166
+ private calculateOverallHealth;
167
+ }
168
+ //# sourceMappingURL=PerformanceAnalytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PerformanceAnalytics.d.ts","sourceRoot":"","sources":["../../../src/performance/PerformanceAnalytics.ts"],"names":[],"mappings":"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"}