mcp-wordpress 2.5.1 → 2.5.2

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 (289) hide show
  1. package/package.json +1 -1
  2. package/dist/src/cache/CacheInvalidation.d.ts +0 -120
  3. package/dist/src/cache/CacheInvalidation.d.ts.map +0 -1
  4. package/dist/src/cache/CacheInvalidation.js +0 -355
  5. package/dist/src/cache/CacheInvalidation.js.map +0 -1
  6. package/dist/src/cache/CacheManager.d.ts +0 -149
  7. package/dist/src/cache/CacheManager.d.ts.map +0 -1
  8. package/dist/src/cache/CacheManager.js +0 -326
  9. package/dist/src/cache/CacheManager.js.map +0 -1
  10. package/dist/src/cache/HttpCacheWrapper.d.ts +0 -122
  11. package/dist/src/cache/HttpCacheWrapper.d.ts.map +0 -1
  12. package/dist/src/cache/HttpCacheWrapper.js +0 -283
  13. package/dist/src/cache/HttpCacheWrapper.js.map +0 -1
  14. package/dist/src/cache/index.d.ts +0 -12
  15. package/dist/src/cache/index.d.ts.map +0 -1
  16. package/dist/src/cache/index.js +0 -9
  17. package/dist/src/cache/index.js.map +0 -1
  18. package/dist/src/client/CachedWordPressClient.d.ts +0 -174
  19. package/dist/src/client/CachedWordPressClient.d.ts.map +0 -1
  20. package/dist/src/client/CachedWordPressClient.js +0 -345
  21. package/dist/src/client/CachedWordPressClient.js.map +0 -1
  22. package/dist/src/client/MockWordPressClient.d.ts +0 -56
  23. package/dist/src/client/MockWordPressClient.d.ts.map +0 -1
  24. package/dist/src/client/MockWordPressClient.js +0 -371
  25. package/dist/src/client/MockWordPressClient.js.map +0 -1
  26. package/dist/src/client/api.d.ts +0 -235
  27. package/dist/src/client/api.d.ts.map +0 -1
  28. package/dist/src/client/api.js +0 -896
  29. package/dist/src/client/api.js.map +0 -1
  30. package/dist/src/client/auth.d.ts +0 -121
  31. package/dist/src/client/auth.d.ts.map +0 -1
  32. package/dist/src/client/auth.js +0 -429
  33. package/dist/src/client/auth.js.map +0 -1
  34. package/dist/src/client/managers/AuthenticationManager.d.ts +0 -92
  35. package/dist/src/client/managers/AuthenticationManager.d.ts.map +0 -1
  36. package/dist/src/client/managers/AuthenticationManager.js +0 -369
  37. package/dist/src/client/managers/AuthenticationManager.js.map +0 -1
  38. package/dist/src/client/managers/BaseManager.d.ts +0 -22
  39. package/dist/src/client/managers/BaseManager.d.ts.map +0 -1
  40. package/dist/src/client/managers/BaseManager.js +0 -53
  41. package/dist/src/client/managers/BaseManager.js.map +0 -1
  42. package/dist/src/client/managers/RequestManager.d.ts +0 -47
  43. package/dist/src/client/managers/RequestManager.d.ts.map +0 -1
  44. package/dist/src/client/managers/RequestManager.js +0 -193
  45. package/dist/src/client/managers/RequestManager.js.map +0 -1
  46. package/dist/src/client/managers/index.d.ts +0 -8
  47. package/dist/src/client/managers/index.d.ts.map +0 -1
  48. package/dist/src/client/managers/index.js +0 -8
  49. package/dist/src/client/managers/index.js.map +0 -1
  50. package/dist/src/config/Config.d.ts +0 -155
  51. package/dist/src/config/Config.d.ts.map +0 -1
  52. package/dist/src/config/Config.js +0 -215
  53. package/dist/src/config/Config.js.map +0 -1
  54. package/dist/src/config/ConfigurationSchema.d.ts +0 -281
  55. package/dist/src/config/ConfigurationSchema.d.ts.map +0 -1
  56. package/dist/src/config/ConfigurationSchema.js +0 -205
  57. package/dist/src/config/ConfigurationSchema.js.map +0 -1
  58. package/dist/src/config/ServerConfiguration.d.ts +0 -47
  59. package/dist/src/config/ServerConfiguration.d.ts.map +0 -1
  60. package/dist/src/config/ServerConfiguration.js +0 -255
  61. package/dist/src/config/ServerConfiguration.js.map +0 -1
  62. package/dist/src/docs/DocumentationGenerator.d.ts +0 -185
  63. package/dist/src/docs/DocumentationGenerator.d.ts.map +0 -1
  64. package/dist/src/docs/DocumentationGenerator.js +0 -777
  65. package/dist/src/docs/DocumentationGenerator.js.map +0 -1
  66. package/dist/src/docs/MarkdownFormatter.d.ts +0 -84
  67. package/dist/src/docs/MarkdownFormatter.d.ts.map +0 -1
  68. package/dist/src/docs/MarkdownFormatter.js +0 -458
  69. package/dist/src/docs/MarkdownFormatter.js.map +0 -1
  70. package/dist/src/docs/index.d.ts +0 -8
  71. package/dist/src/docs/index.d.ts.map +0 -1
  72. package/dist/src/docs/index.js +0 -7
  73. package/dist/src/docs/index.js.map +0 -1
  74. package/dist/src/dxt-entry.d.ts +0 -6
  75. package/dist/src/dxt-entry.d.ts.map +0 -1
  76. package/dist/src/dxt-entry.js +0 -39
  77. package/dist/src/dxt-entry.js.map +0 -1
  78. package/dist/src/index.d.ts +0 -18
  79. package/dist/src/index.d.ts.map +0 -1
  80. package/dist/src/index.js +0 -143
  81. package/dist/src/index.js.map +0 -1
  82. package/dist/src/performance/MetricsCollector.d.ts +0 -145
  83. package/dist/src/performance/MetricsCollector.d.ts.map +0 -1
  84. package/dist/src/performance/MetricsCollector.js +0 -368
  85. package/dist/src/performance/MetricsCollector.js.map +0 -1
  86. package/dist/src/performance/PerformanceAnalytics.d.ts +0 -168
  87. package/dist/src/performance/PerformanceAnalytics.d.ts.map +0 -1
  88. package/dist/src/performance/PerformanceAnalytics.js +0 -570
  89. package/dist/src/performance/PerformanceAnalytics.js.map +0 -1
  90. package/dist/src/performance/PerformanceMonitor.d.ts +0 -203
  91. package/dist/src/performance/PerformanceMonitor.d.ts.map +0 -1
  92. package/dist/src/performance/PerformanceMonitor.js +0 -478
  93. package/dist/src/performance/PerformanceMonitor.js.map +0 -1
  94. package/dist/src/performance/index.d.ts +0 -11
  95. package/dist/src/performance/index.d.ts.map +0 -1
  96. package/dist/src/performance/index.js +0 -8
  97. package/dist/src/performance/index.js.map +0 -1
  98. package/dist/src/security/AISecurityScanner.d.ts +0 -176
  99. package/dist/src/security/AISecurityScanner.d.ts.map +0 -1
  100. package/dist/src/security/AISecurityScanner.js +0 -655
  101. package/dist/src/security/AISecurityScanner.js.map +0 -1
  102. package/dist/src/security/AutomatedRemediation.d.ts +0 -146
  103. package/dist/src/security/AutomatedRemediation.d.ts.map +0 -1
  104. package/dist/src/security/AutomatedRemediation.js +0 -566
  105. package/dist/src/security/AutomatedRemediation.js.map +0 -1
  106. package/dist/src/security/InputValidator.d.ts +0 -219
  107. package/dist/src/security/InputValidator.d.ts.map +0 -1
  108. package/dist/src/security/InputValidator.js +0 -295
  109. package/dist/src/security/InputValidator.js.map +0 -1
  110. package/dist/src/security/SecurityCIPipeline.d.ts +0 -213
  111. package/dist/src/security/SecurityCIPipeline.d.ts.map +0 -1
  112. package/dist/src/security/SecurityCIPipeline.js +0 -693
  113. package/dist/src/security/SecurityCIPipeline.js.map +0 -1
  114. package/dist/src/security/SecurityConfig.d.ts +0 -129
  115. package/dist/src/security/SecurityConfig.d.ts.map +0 -1
  116. package/dist/src/security/SecurityConfig.js +0 -266
  117. package/dist/src/security/SecurityConfig.js.map +0 -1
  118. package/dist/src/security/SecurityConfigManager.d.ts +0 -294
  119. package/dist/src/security/SecurityConfigManager.d.ts.map +0 -1
  120. package/dist/src/security/SecurityConfigManager.js +0 -558
  121. package/dist/src/security/SecurityConfigManager.js.map +0 -1
  122. package/dist/src/security/SecurityMonitoring.d.ts +0 -245
  123. package/dist/src/security/SecurityMonitoring.d.ts.map +0 -1
  124. package/dist/src/security/SecurityMonitoring.js +0 -598
  125. package/dist/src/security/SecurityMonitoring.js.map +0 -1
  126. package/dist/src/security/SecurityReviewer.d.ts +0 -168
  127. package/dist/src/security/SecurityReviewer.d.ts.map +0 -1
  128. package/dist/src/security/SecurityReviewer.js +0 -686
  129. package/dist/src/security/SecurityReviewer.js.map +0 -1
  130. package/dist/src/security/index.d.ts +0 -183
  131. package/dist/src/security/index.d.ts.map +0 -1
  132. package/dist/src/security/index.js +0 -218
  133. package/dist/src/security/index.js.map +0 -1
  134. package/dist/src/server/ConnectionTester.d.ts +0 -32
  135. package/dist/src/server/ConnectionTester.d.ts.map +0 -1
  136. package/dist/src/server/ConnectionTester.js +0 -135
  137. package/dist/src/server/ConnectionTester.js.map +0 -1
  138. package/dist/src/server/ToolRegistry.d.ts +0 -50
  139. package/dist/src/server/ToolRegistry.d.ts.map +0 -1
  140. package/dist/src/server/ToolRegistry.js +0 -219
  141. package/dist/src/server/ToolRegistry.js.map +0 -1
  142. package/dist/src/server.d.ts +0 -7
  143. package/dist/src/server.d.ts.map +0 -1
  144. package/dist/src/server.js +0 -7
  145. package/dist/src/server.js.map +0 -1
  146. package/dist/src/tools/BaseToolManager.d.ts +0 -62
  147. package/dist/src/tools/BaseToolManager.d.ts.map +0 -1
  148. package/dist/src/tools/BaseToolManager.js +0 -195
  149. package/dist/src/tools/BaseToolManager.js.map +0 -1
  150. package/dist/src/tools/auth.d.ts +0 -50
  151. package/dist/src/tools/auth.d.ts.map +0 -1
  152. package/dist/src/tools/auth.js +0 -133
  153. package/dist/src/tools/auth.js.map +0 -1
  154. package/dist/src/tools/cache.d.ts +0 -260
  155. package/dist/src/tools/cache.d.ts.map +0 -1
  156. package/dist/src/tools/cache.js +0 -232
  157. package/dist/src/tools/cache.js.map +0 -1
  158. package/dist/src/tools/comments.d.ts +0 -33
  159. package/dist/src/tools/comments.d.ts.map +0 -1
  160. package/dist/src/tools/comments.js +0 -235
  161. package/dist/src/tools/comments.js.map +0 -1
  162. package/dist/src/tools/index.d.ts +0 -11
  163. package/dist/src/tools/index.d.ts.map +0 -1
  164. package/dist/src/tools/index.js +0 -11
  165. package/dist/src/tools/index.js.map +0 -1
  166. package/dist/src/tools/media.d.ts +0 -70
  167. package/dist/src/tools/media.d.ts.map +0 -1
  168. package/dist/src/tools/media.js +0 -248
  169. package/dist/src/tools/media.js.map +0 -1
  170. package/dist/src/tools/pages.d.ts +0 -32
  171. package/dist/src/tools/pages.d.ts.map +0 -1
  172. package/dist/src/tools/pages.js +0 -215
  173. package/dist/src/tools/pages.js.map +0 -1
  174. package/dist/src/tools/performance.d.ts +0 -73
  175. package/dist/src/tools/performance.d.ts.map +0 -1
  176. package/dist/src/tools/performance.js +0 -922
  177. package/dist/src/tools/performance.js.map +0 -1
  178. package/dist/src/tools/posts/PostHandlers.d.ts +0 -46
  179. package/dist/src/tools/posts/PostHandlers.d.ts.map +0 -1
  180. package/dist/src/tools/posts/PostHandlers.js +0 -400
  181. package/dist/src/tools/posts/PostHandlers.js.map +0 -1
  182. package/dist/src/tools/posts/PostToolDefinitions.d.ts +0 -37
  183. package/dist/src/tools/posts/PostToolDefinitions.d.ts.map +0 -1
  184. package/dist/src/tools/posts/PostToolDefinitions.js +0 -236
  185. package/dist/src/tools/posts/PostToolDefinitions.js.map +0 -1
  186. package/dist/src/tools/posts/index.d.ts +0 -138
  187. package/dist/src/tools/posts/index.d.ts.map +0 -1
  188. package/dist/src/tools/posts/index.js +0 -163
  189. package/dist/src/tools/posts/index.js.map +0 -1
  190. package/dist/src/tools/posts.d.ts +0 -15
  191. package/dist/src/tools/posts.d.ts.map +0 -1
  192. package/dist/src/tools/posts.js +0 -16
  193. package/dist/src/tools/posts.js.map +0 -1
  194. package/dist/src/tools/site.d.ts +0 -32
  195. package/dist/src/tools/site.d.ts.map +0 -1
  196. package/dist/src/tools/site.js +0 -234
  197. package/dist/src/tools/site.js.map +0 -1
  198. package/dist/src/tools/taxonomies.d.ts +0 -36
  199. package/dist/src/tools/taxonomies.d.ts.map +0 -1
  200. package/dist/src/tools/taxonomies.js +0 -286
  201. package/dist/src/tools/taxonomies.js.map +0 -1
  202. package/dist/src/tools/users.d.ts +0 -33
  203. package/dist/src/tools/users.d.ts.map +0 -1
  204. package/dist/src/tools/users.js +0 -308
  205. package/dist/src/tools/users.js.map +0 -1
  206. package/dist/src/types/client.d.ts +0 -223
  207. package/dist/src/types/client.d.ts.map +0 -1
  208. package/dist/src/types/client.js +0 -97
  209. package/dist/src/types/client.js.map +0 -1
  210. package/dist/src/types/enhanced.d.ts +0 -237
  211. package/dist/src/types/enhanced.d.ts.map +0 -1
  212. package/dist/src/types/enhanced.js +0 -49
  213. package/dist/src/types/enhanced.js.map +0 -1
  214. package/dist/src/types/index.d.ts +0 -160
  215. package/dist/src/types/index.d.ts.map +0 -1
  216. package/dist/src/types/index.js +0 -14
  217. package/dist/src/types/index.js.map +0 -1
  218. package/dist/src/types/mcp.d.ts +0 -178
  219. package/dist/src/types/mcp.d.ts.map +0 -1
  220. package/dist/src/types/mcp.js +0 -7
  221. package/dist/src/types/mcp.js.map +0 -1
  222. package/dist/src/types/requests.d.ts +0 -322
  223. package/dist/src/types/requests.d.ts.map +0 -1
  224. package/dist/src/types/requests.js +0 -8
  225. package/dist/src/types/requests.js.map +0 -1
  226. package/dist/src/types/tools.d.ts +0 -506
  227. package/dist/src/types/tools.d.ts.map +0 -1
  228. package/dist/src/types/tools.js +0 -8
  229. package/dist/src/types/tools.js.map +0 -1
  230. package/dist/src/types/wordpress.d.ts +0 -471
  231. package/dist/src/types/wordpress.d.ts.map +0 -1
  232. package/dist/src/types/wordpress.js +0 -14
  233. package/dist/src/types/wordpress.js.map +0 -1
  234. package/dist/src/utils/debug.d.ts +0 -71
  235. package/dist/src/utils/debug.d.ts.map +0 -1
  236. package/dist/src/utils/debug.js +0 -235
  237. package/dist/src/utils/debug.js.map +0 -1
  238. package/dist/src/utils/enhancedError.d.ts +0 -61
  239. package/dist/src/utils/enhancedError.d.ts.map +0 -1
  240. package/dist/src/utils/enhancedError.js +0 -221
  241. package/dist/src/utils/enhancedError.js.map +0 -1
  242. package/dist/src/utils/error.d.ts +0 -17
  243. package/dist/src/utils/error.d.ts.map +0 -1
  244. package/dist/src/utils/error.js +0 -108
  245. package/dist/src/utils/error.js.map +0 -1
  246. package/dist/src/utils/logger.d.ts +0 -106
  247. package/dist/src/utils/logger.d.ts.map +0 -1
  248. package/dist/src/utils/logger.js +0 -280
  249. package/dist/src/utils/logger.js.map +0 -1
  250. package/dist/src/utils/streaming.d.ts +0 -104
  251. package/dist/src/utils/streaming.d.ts.map +0 -1
  252. package/dist/src/utils/streaming.js +0 -331
  253. package/dist/src/utils/streaming.js.map +0 -1
  254. package/dist/src/utils/toolWrapper.d.ts +0 -42
  255. package/dist/src/utils/toolWrapper.d.ts.map +0 -1
  256. package/dist/src/utils/toolWrapper.js +0 -101
  257. package/dist/src/utils/toolWrapper.js.map +0 -1
  258. package/dist/src/utils/validation/core.d.ts +0 -21
  259. package/dist/src/utils/validation/core.d.ts.map +0 -1
  260. package/dist/src/utils/validation/core.js +0 -71
  261. package/dist/src/utils/validation/core.js.map +0 -1
  262. package/dist/src/utils/validation/index.d.ts +0 -25
  263. package/dist/src/utils/validation/index.d.ts.map +0 -1
  264. package/dist/src/utils/validation/index.js +0 -29
  265. package/dist/src/utils/validation/index.js.map +0 -1
  266. package/dist/src/utils/validation/network.d.ts +0 -19
  267. package/dist/src/utils/validation/network.d.ts.map +0 -1
  268. package/dist/src/utils/validation/network.js +0 -93
  269. package/dist/src/utils/validation/network.js.map +0 -1
  270. package/dist/src/utils/validation/rateLimit.d.ts +0 -21
  271. package/dist/src/utils/validation/rateLimit.d.ts.map +0 -1
  272. package/dist/src/utils/validation/rateLimit.js +0 -43
  273. package/dist/src/utils/validation/rateLimit.js.map +0 -1
  274. package/dist/src/utils/validation/security.d.ts +0 -29
  275. package/dist/src/utils/validation/security.d.ts.map +0 -1
  276. package/dist/src/utils/validation/security.js +0 -327
  277. package/dist/src/utils/validation/security.js.map +0 -1
  278. package/dist/src/utils/validation/wordpress.d.ts +0 -31
  279. package/dist/src/utils/validation/wordpress.d.ts.map +0 -1
  280. package/dist/src/utils/validation/wordpress.js +0 -146
  281. package/dist/src/utils/validation/wordpress.js.map +0 -1
  282. package/dist/src/utils/validation.d.ts +0 -15
  283. package/dist/src/utils/validation.d.ts.map +0 -1
  284. package/dist/src/utils/validation.js +0 -27
  285. package/dist/src/utils/validation.js.map +0 -1
  286. package/dist/tests/vitest.setup.d.ts +0 -6
  287. package/dist/tests/vitest.setup.d.ts.map +0 -1
  288. package/dist/tests/vitest.setup.js +0 -39
  289. package/dist/tests/vitest.setup.js.map +0 -1
@@ -1,570 +0,0 @@
1
- /**
2
- * Advanced Performance Analytics for WordPress MCP Server
3
- * Provides insights, predictions, and optimization recommendations
4
- */
5
- /**
6
- * Performance Analytics Engine
7
- */
8
- export class PerformanceAnalytics {
9
- collector;
10
- config;
11
- historicalData = [];
12
- detectedAnomalies = [];
13
- generatedInsights = [];
14
- // Performance benchmarks (based on industry standards)
15
- benchmarks = {
16
- responseTime: {
17
- excellent: 200, // <200ms
18
- good: 500, // 200-500ms
19
- average: 1000, // 500ms-1s
20
- below_average: 2000, // 1-2s
21
- poor: Infinity, // >2s
22
- },
23
- cacheHitRate: {
24
- excellent: 0.95, // >95%
25
- good: 0.85, // 85-95%
26
- average: 0.7, // 70-85%
27
- below_average: 0.5, // 50-70%
28
- poor: 0, // <50%
29
- },
30
- errorRate: {
31
- excellent: 0.001, // <0.1%
32
- good: 0.01, // 0.1-1%
33
- average: 0.02, // 1-2%
34
- below_average: 0.05, // 2-5%
35
- poor: Infinity, // >5%
36
- },
37
- memoryUsage: {
38
- excellent: 50, // <50%
39
- good: 70, // 50-70%
40
- average: 80, // 70-80%
41
- below_average: 90, // 80-90%
42
- poor: 100, // >90%
43
- },
44
- };
45
- constructor(collector, config = {}) {
46
- this.collector = collector;
47
- this.config = {
48
- enablePredictiveAnalysis: true,
49
- enableAnomalyDetection: true,
50
- enableTrendAnalysis: true,
51
- lookbackPeriod: 24 * 60 * 60 * 1000, // 24 hours
52
- sensitivityLevel: "medium",
53
- ...config,
54
- };
55
- }
56
- /**
57
- * Add historical data point for analysis
58
- */
59
- addDataPoint(metrics) {
60
- this.historicalData.push(metrics);
61
- // Limit historical data to lookback period
62
- const cutoff = Date.now() - this.config.lookbackPeriod;
63
- this.historicalData = this.historicalData.filter((data) => data.system.uptime > cutoff);
64
- // Run analysis on new data
65
- if (this.config.enableAnomalyDetection) {
66
- this.detectAnomalies(metrics);
67
- }
68
- }
69
- /**
70
- * Analyze performance trends
71
- */
72
- analyzeTrends() {
73
- if (!this.config.enableTrendAnalysis || this.historicalData.length < 5) {
74
- return [];
75
- }
76
- const trends = [];
77
- // Analyze response time trend
78
- trends.push(this.analyzeTrend("responseTime", this.historicalData.map((d) => d.requests.averageResponseTime)));
79
- // Analyze cache hit rate trend
80
- trends.push(this.analyzeTrend("cacheHitRate", this.historicalData.map((d) => d.cache.hitRate)));
81
- // Analyze error rate trend
82
- trends.push(this.analyzeTrend("errorRate", this.historicalData.map((d) => (d.requests.total > 0 ? d.requests.failed / d.requests.total : 0))));
83
- // Analyze memory usage trend
84
- trends.push(this.analyzeTrend("memoryUsage", this.historicalData.map((d) => d.system.memoryUsage)));
85
- // Analyze request volume trend
86
- trends.push(this.analyzeTrend("requestVolume", this.historicalData.map((d) => d.requests.requestsPerSecond)));
87
- return trends;
88
- }
89
- /**
90
- * Generate performance insights
91
- */
92
- generateInsights() {
93
- const insights = [];
94
- const currentMetrics = this.collector.collectCurrentMetrics();
95
- const trends = this.analyzeTrends();
96
- // Cache optimization insights
97
- if (currentMetrics.cache.hitRate < 0.8) {
98
- insights.push({
99
- id: "cache-optimization-1",
100
- category: "optimization",
101
- priority: "high",
102
- title: "Improve Cache Hit Rate",
103
- description: `Current cache hit rate is ${(currentMetrics.cache.hitRate * 100).toFixed(1)}%, which is below optimal performance.`,
104
- impact: "performance",
105
- recommendation: "Implement cache warming strategies and optimize TTL values for frequently accessed data.",
106
- estimatedImprovement: "20-40% reduction in response times",
107
- implementationEffort: "medium",
108
- relatedMetrics: ["cacheHitRate", "responseTime"],
109
- });
110
- }
111
- // Response time insights
112
- if (currentMetrics.requests.averageResponseTime > 1000) {
113
- insights.push({
114
- id: "response-time-1",
115
- category: "optimization",
116
- priority: "high",
117
- title: "Reduce Response Times",
118
- description: `Average response time of ${currentMetrics.requests.averageResponseTime.toFixed(0)}ms is above recommended threshold.`,
119
- impact: "user_experience",
120
- recommendation: "Enable aggressive caching, optimize database queries, or consider upgrading server resources.",
121
- estimatedImprovement: "50-70% reduction in response times",
122
- implementationEffort: "medium",
123
- relatedMetrics: ["responseTime", "cacheHitRate"],
124
- });
125
- }
126
- // Memory usage insights
127
- if (currentMetrics.system.memoryUsage > 80) {
128
- insights.push({
129
- id: "memory-usage-1",
130
- category: "scaling",
131
- priority: "medium",
132
- title: "Memory Usage Optimization",
133
- description: `Memory usage at ${currentMetrics.system.memoryUsage}% is approaching limits.`,
134
- impact: "reliability",
135
- recommendation: "Increase cache size limits, implement cache eviction policies, or scale server resources.",
136
- estimatedImprovement: "Improved system stability",
137
- implementationEffort: "low",
138
- relatedMetrics: ["memoryUsage", "cacheSize"],
139
- });
140
- }
141
- // Tool usage insights
142
- const toolMetrics = currentMetrics.tools;
143
- if (Object.keys(toolMetrics.toolUsageCount).length > 0) {
144
- const mostUsed = Object.entries(toolMetrics.toolUsageCount)
145
- .sort(([, a], [, b]) => b - a)
146
- .slice(0, 3);
147
- insights.push({
148
- id: "tool-usage-1",
149
- category: "optimization",
150
- priority: "low",
151
- title: "Optimize Frequently Used Tools",
152
- description: `Most used tools: ${mostUsed.map(([tool]) => tool).join(", ")}. Consider optimizing these workflows.`,
153
- impact: "performance",
154
- recommendation: "Create cached workflows or batch operations for frequently used tools.",
155
- estimatedImprovement: "10-20% reduction in API calls",
156
- implementationEffort: "high",
157
- relatedMetrics: ["toolUsage", "requestVolume"],
158
- });
159
- }
160
- // Trend-based insights
161
- const responseTimeTrend = trends.find((t) => t.metric === "responseTime");
162
- if (responseTimeTrend && responseTimeTrend.direction === "declining" && responseTimeTrend.changeRate > 10) {
163
- insights.push({
164
- id: "trend-response-time-1",
165
- category: "alert",
166
- priority: "high",
167
- title: "Response Time Degradation Detected",
168
- description: `Response times are declining at ${responseTimeTrend.changeRate.toFixed(1)}% rate.`,
169
- impact: "performance",
170
- recommendation: "Investigate recent changes, check WordPress site health, and monitor resource usage.",
171
- estimatedImprovement: "Prevent further degradation",
172
- implementationEffort: "medium",
173
- relatedMetrics: ["responseTime", "errorRate"],
174
- });
175
- }
176
- this.generatedInsights = insights;
177
- return insights;
178
- }
179
- /**
180
- * Compare performance against benchmarks
181
- */
182
- benchmarkPerformance() {
183
- const currentMetrics = this.collector.collectCurrentMetrics();
184
- const comparisons = [];
185
- // Response time benchmark
186
- comparisons.push(this.createBenchmarkComparison("Response Time", currentMetrics.requests.averageResponseTime, this.benchmarks.responseTime, false));
187
- // Cache hit rate benchmark
188
- comparisons.push(this.createBenchmarkComparison("Cache Hit Rate", currentMetrics.cache.hitRate * 100, Object.fromEntries(Object.entries(this.benchmarks.cacheHitRate).map(([k, v]) => [k, v * 100])), true));
189
- // Error rate benchmark
190
- const errorRate = currentMetrics.requests.total > 0 ? (currentMetrics.requests.failed / currentMetrics.requests.total) * 100 : 0;
191
- comparisons.push(this.createBenchmarkComparison("Error Rate", errorRate, Object.fromEntries(Object.entries(this.benchmarks.errorRate).map(([k, v]) => [k, v * 100])), false));
192
- // Memory usage benchmark
193
- comparisons.push(this.createBenchmarkComparison("Memory Usage", currentMetrics.system.memoryUsage, this.benchmarks.memoryUsage, false));
194
- return comparisons;
195
- }
196
- /**
197
- * Predict future performance based on trends
198
- */
199
- predictPerformance(timeframeMinutes = 60) {
200
- if (!this.config.enablePredictiveAnalysis) {
201
- return { predictions: [], alerts: [] };
202
- }
203
- const trends = this.analyzeTrends();
204
- const predictions = [];
205
- const alerts = [];
206
- for (const trend of trends) {
207
- const _timeframeMs = timeframeMinutes * 60 * 1000;
208
- const predictedValue = trend.prediction.nextValue;
209
- predictions.push({
210
- metric: trend.metric,
211
- currentValue: this.getCurrentMetricValue(trend.metric),
212
- predictedValue,
213
- confidence: trend.confidence,
214
- trend: trend.direction,
215
- });
216
- // Generate alerts for concerning predictions
217
- if (trend.metric === "responseTime" && predictedValue > 2000 && trend.direction === "declining") {
218
- alerts.push(`Response times predicted to exceed 2s in ${timeframeMinutes} minutes`);
219
- }
220
- if (trend.metric === "cacheHitRate" && predictedValue < 0.5 && trend.direction === "declining") {
221
- alerts.push(`Cache hit rate predicted to drop below 50% in ${timeframeMinutes} minutes`);
222
- }
223
- if (trend.metric === "memoryUsage" && predictedValue > 90 && trend.direction === "declining") {
224
- alerts.push(`Memory usage predicted to exceed 90% in ${timeframeMinutes} minutes`);
225
- }
226
- }
227
- return { predictions, alerts };
228
- }
229
- /**
230
- * Generate optimization recommendations with ROI estimates
231
- */
232
- generateOptimizationPlan() {
233
- const insights = this.generateInsights();
234
- const quickWins = insights.filter((i) => i.implementationEffort === "low" && ["high", "critical"].includes(i.priority));
235
- const mediumTerm = insights.filter((i) => i.implementationEffort === "medium");
236
- const longTerm = insights.filter((i) => i.implementationEffort === "high");
237
- // Estimate ROI based on current performance issues
238
- const currentMetrics = this.collector.collectCurrentMetrics();
239
- let estimatedGain = 0;
240
- if (currentMetrics.cache.hitRate < 0.8)
241
- estimatedGain += 30;
242
- if (currentMetrics.requests.averageResponseTime > 1000)
243
- estimatedGain += 40;
244
- if (currentMetrics.system.memoryUsage > 80)
245
- estimatedGain += 20;
246
- return {
247
- quickWins,
248
- mediumTerm,
249
- longTerm,
250
- estimatedROI: {
251
- performanceGain: Math.min(estimatedGain, 80), // Cap at 80%
252
- implementationCost: quickWins.length > 2 ? "low" : mediumTerm.length > 2 ? "medium" : "high",
253
- timeToValue: quickWins.length > 0 ? 1 : mediumTerm.length > 0 ? 7 : 30,
254
- },
255
- };
256
- }
257
- /**
258
- * Get anomalies detected in recent data
259
- */
260
- getAnomalies(severity) {
261
- if (severity) {
262
- return this.detectedAnomalies.filter((a) => a.severity === severity);
263
- }
264
- return [...this.detectedAnomalies];
265
- }
266
- /**
267
- * Export comprehensive analytics report
268
- */
269
- exportAnalyticsReport() {
270
- const currentMetrics = this.collector.collectCurrentMetrics();
271
- const performanceScore = this.calculatePerformanceScore(currentMetrics);
272
- return {
273
- timestamp: new Date().toISOString(),
274
- summary: {
275
- overallHealth: this.calculateOverallHealth(performanceScore),
276
- keyInsights: this.generatedInsights.length,
277
- criticalAlerts: this.generatedInsights.filter((i) => i.priority === "critical").length,
278
- performanceScore,
279
- },
280
- trends: this.analyzeTrends(),
281
- benchmarks: this.benchmarkPerformance(),
282
- insights: this.generateInsights(),
283
- anomalies: this.getAnomalies(),
284
- predictions: this.predictPerformance().predictions,
285
- optimizationPlan: this.generateOptimizationPlan(),
286
- };
287
- }
288
- /**
289
- * Analyze trend for a specific metric
290
- */
291
- analyzeTrend(metricName, values) {
292
- if (values.length < 3) {
293
- return {
294
- metric: metricName,
295
- direction: "stable",
296
- changeRate: 0,
297
- confidence: 0,
298
- prediction: {
299
- nextValue: values[values.length - 1] || 0,
300
- timeframe: 0,
301
- confidence: 0,
302
- },
303
- };
304
- }
305
- // Calculate linear regression
306
- const n = values.length;
307
- const x = Array.from({ length: n }, (_, i) => i);
308
- const y = values;
309
- const sumX = x.reduce((a, b) => a + b, 0);
310
- const sumY = y.reduce((a, b) => a + b, 0);
311
- const sumXY = x.map((xi, i) => xi * y[i]).reduce((a, b) => a + b, 0);
312
- const sumXX = x.map((xi) => xi * xi).reduce((a, b) => a + b, 0);
313
- const slope = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);
314
- const intercept = (sumY - slope * sumX) / n;
315
- // Calculate R-squared for confidence
316
- const yMean = sumY / n;
317
- const totalSumSquares = y.map((yi) => Math.pow(yi - yMean, 2)).reduce((a, b) => a + b, 0);
318
- const residualSumSquares = y
319
- .map((yi, i) => {
320
- const predicted = slope * x[i] + intercept;
321
- return Math.pow(yi - predicted, 2);
322
- })
323
- .reduce((a, b) => a + b, 0);
324
- const rSquared = 1 - residualSumSquares / totalSumSquares;
325
- // Determine direction and change rate
326
- const currentValue = values[values.length - 1];
327
- const previousValue = values[values.length - 2];
328
- const changeRate = Math.abs((currentValue - previousValue) / previousValue) * 100;
329
- let direction = "stable";
330
- if (Math.abs(slope) > 0.1) {
331
- // For metrics where lower is better (response time, error rate)
332
- if (["responseTime", "errorRate", "memoryUsage"].includes(metricName)) {
333
- direction = slope < 0 ? "improving" : "declining";
334
- }
335
- else {
336
- // For metrics where higher is better (cache hit rate)
337
- direction = slope > 0 ? "improving" : "declining";
338
- }
339
- }
340
- // Predict next value
341
- const nextValue = slope * n + intercept;
342
- return {
343
- metric: metricName,
344
- direction,
345
- changeRate,
346
- confidence: Math.max(0, Math.min(1, rSquared)),
347
- prediction: {
348
- nextValue: Math.max(0, nextValue),
349
- timeframe: 30 * 60 * 1000, // 30 minutes
350
- confidence: Math.max(0, Math.min(1, rSquared * 0.8)), // Slightly lower confidence for predictions
351
- },
352
- };
353
- }
354
- /**
355
- * Detect anomalies in current metrics
356
- */
357
- detectAnomalies(metrics) {
358
- if (this.historicalData.length < 10)
359
- return; // Need historical context
360
- const recentData = this.historicalData.slice(-10);
361
- // Check response time anomalies
362
- const responseTimes = recentData.map((d) => d.requests.averageResponseTime);
363
- this.checkMetricAnomaly("responseTime", metrics.requests.averageResponseTime, responseTimes, "Response time spike detected");
364
- // Check cache hit rate anomalies
365
- const hitRates = recentData.map((d) => d.cache.hitRate);
366
- this.checkMetricAnomaly("cacheHitRate", metrics.cache.hitRate, hitRates, "Cache hit rate drop detected");
367
- // Check error rate anomalies
368
- const errorRates = recentData.map((d) => (d.requests.total > 0 ? d.requests.failed / d.requests.total : 0));
369
- const currentErrorRate = metrics.requests.total > 0 ? metrics.requests.failed / metrics.requests.total : 0;
370
- this.checkMetricAnomaly("errorRate", currentErrorRate, errorRates, "Error rate spike detected");
371
- }
372
- /**
373
- * Check if a metric value is anomalous
374
- */
375
- checkMetricAnomaly(metricName, currentValue, historicalValues, description) {
376
- if (historicalValues.length < 5)
377
- return;
378
- const mean = historicalValues.reduce((a, b) => a + b, 0) / historicalValues.length;
379
- const variance = historicalValues.reduce((acc, val) => acc + Math.pow(val - mean, 2), 0) / historicalValues.length;
380
- const standardDeviation = Math.sqrt(variance);
381
- // Calculate z-score
382
- const zScore = Math.abs((currentValue - mean) / standardDeviation);
383
- // Determine sensitivity threshold
384
- let threshold = 2; // Default for medium sensitivity
385
- if (this.config.sensitivityLevel === "low")
386
- threshold = 3;
387
- if (this.config.sensitivityLevel === "high")
388
- threshold = 1.5;
389
- if (zScore > threshold) {
390
- const deviation = ((currentValue - mean) / mean) * 100;
391
- let severity = "minor";
392
- if (zScore > 4)
393
- severity = "critical";
394
- else if (zScore > 3)
395
- severity = "major";
396
- else if (zScore > 2.5)
397
- severity = "moderate";
398
- const anomaly = {
399
- timestamp: Date.now(),
400
- metric: metricName,
401
- expectedValue: mean,
402
- actualValue: currentValue,
403
- deviation,
404
- severity,
405
- possibleCauses: this.generatePossibleCauses(metricName, currentValue > mean),
406
- };
407
- this.detectedAnomalies.push(anomaly);
408
- // Limit anomaly history
409
- if (this.detectedAnomalies.length > 100) {
410
- this.detectedAnomalies = this.detectedAnomalies.slice(-50);
411
- }
412
- }
413
- }
414
- /**
415
- * Generate possible causes for anomalies
416
- */
417
- generatePossibleCauses(metricName, isIncrease) {
418
- const causes = [];
419
- if (metricName === "responseTime" && isIncrease) {
420
- causes.push("High server load", "Database performance issues", "Network latency", "Cache miss increase");
421
- }
422
- else if (metricName === "cacheHitRate" && !isIncrease) {
423
- causes.push("Cache invalidation event", "New data requests", "Cache size limit reached", "TTL expiration");
424
- }
425
- else if (metricName === "errorRate" && isIncrease) {
426
- causes.push("WordPress site issues", "Authentication problems", "Network connectivity", "Plugin conflicts");
427
- }
428
- return causes;
429
- }
430
- /**
431
- * Create benchmark comparison
432
- */
433
- createBenchmarkComparison(category, currentValue, benchmarks, higherIsBetter) {
434
- let status = "poor";
435
- let percentile = 0;
436
- let improvement = 0;
437
- if (higherIsBetter) {
438
- if (currentValue >= benchmarks.excellent)
439
- status = "excellent";
440
- else if (currentValue >= benchmarks.good)
441
- status = "good";
442
- else if (currentValue >= benchmarks.average)
443
- status = "average";
444
- else if (currentValue >= benchmarks.below_average)
445
- status = "below_average";
446
- // Calculate improvement needed
447
- if (status !== "excellent") {
448
- const nextTier = status === "good"
449
- ? benchmarks.excellent
450
- : status === "average"
451
- ? benchmarks.good
452
- : status === "below_average"
453
- ? benchmarks.average
454
- : benchmarks.below_average;
455
- improvement = nextTier - currentValue;
456
- }
457
- }
458
- else {
459
- if (currentValue <= benchmarks.excellent)
460
- status = "excellent";
461
- else if (currentValue <= benchmarks.good)
462
- status = "good";
463
- else if (currentValue <= benchmarks.average)
464
- status = "average";
465
- else if (currentValue <= benchmarks.below_average)
466
- status = "below_average";
467
- // Calculate improvement needed
468
- if (status !== "excellent") {
469
- const nextTier = status === "good"
470
- ? benchmarks.excellent
471
- : status === "average"
472
- ? benchmarks.good
473
- : status === "below_average"
474
- ? benchmarks.average
475
- : benchmarks.below_average;
476
- improvement = currentValue - nextTier;
477
- }
478
- }
479
- // Calculate percentile (simplified)
480
- percentile =
481
- status === "excellent"
482
- ? 95
483
- : status === "good"
484
- ? 80
485
- : status === "average"
486
- ? 60
487
- : status === "below_average"
488
- ? 30
489
- : 10;
490
- return {
491
- category,
492
- currentValue,
493
- benchmarkValue: benchmarks.excellent,
494
- percentile,
495
- status,
496
- improvement,
497
- };
498
- }
499
- /**
500
- * Get current value for a metric
501
- */
502
- getCurrentMetricValue(metricName) {
503
- const current = this.collector.collectCurrentMetrics();
504
- switch (metricName) {
505
- case "responseTime":
506
- return current.requests.averageResponseTime;
507
- case "cacheHitRate":
508
- return current.cache.hitRate;
509
- case "errorRate":
510
- return current.requests.total > 0 ? current.requests.failed / current.requests.total : 0;
511
- case "memoryUsage":
512
- return current.system.memoryUsage;
513
- case "requestVolume":
514
- return current.requests.requestsPerSecond;
515
- default:
516
- return 0;
517
- }
518
- }
519
- /**
520
- * Calculate overall performance score
521
- */
522
- calculatePerformanceScore(metrics) {
523
- let score = 100;
524
- // Response time (30% weight)
525
- if (metrics.requests.averageResponseTime > 2000)
526
- score -= 30;
527
- else if (metrics.requests.averageResponseTime > 1000)
528
- score -= 15;
529
- else if (metrics.requests.averageResponseTime > 500)
530
- score -= 5;
531
- // Error rate (25% weight)
532
- const errorRate = metrics.requests.total > 0 ? metrics.requests.failed / metrics.requests.total : 0;
533
- if (errorRate > 0.05)
534
- score -= 25;
535
- else if (errorRate > 0.02)
536
- score -= 15;
537
- else if (errorRate > 0.01)
538
- score -= 5;
539
- // Cache performance (25% weight)
540
- if (metrics.cache.hitRate < 0.5)
541
- score -= 25;
542
- else if (metrics.cache.hitRate < 0.7)
543
- score -= 15;
544
- else if (metrics.cache.hitRate < 0.85)
545
- score -= 5;
546
- // System resources (20% weight)
547
- if (metrics.system.memoryUsage > 90)
548
- score -= 20;
549
- else if (metrics.system.memoryUsage > 80)
550
- score -= 10;
551
- else if (metrics.system.memoryUsage > 70)
552
- score -= 5;
553
- return Math.max(0, score);
554
- }
555
- /**
556
- * Calculate overall health status
557
- */
558
- calculateOverallHealth(score) {
559
- if (score >= 90)
560
- return "excellent";
561
- if (score >= 75)
562
- return "good";
563
- if (score >= 60)
564
- return "fair";
565
- if (score >= 40)
566
- return "poor";
567
- return "critical";
568
- }
569
- }
570
- //# sourceMappingURL=PerformanceAnalytics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PerformanceAnalytics.js","sourceRoot":"","sources":["../../../src/performance/PerformanceAnalytics.ts"],"names":[],"mappings":"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"}