mcp-wordpress 1.1.7 → 1.2.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 (255) hide show
  1. package/README.md +388 -66
  2. package/dist/cache/CacheInvalidation.d.ts +118 -0
  3. package/dist/cache/CacheInvalidation.d.ts.map +1 -0
  4. package/dist/cache/CacheInvalidation.js +349 -0
  5. package/dist/cache/CacheInvalidation.js.map +1 -0
  6. package/dist/cache/CacheManager.d.ts +143 -0
  7. package/dist/cache/CacheManager.d.ts.map +1 -0
  8. package/dist/cache/CacheManager.js +308 -0
  9. package/dist/cache/CacheManager.js.map +1 -0
  10. package/dist/cache/HttpCacheWrapper.d.ts +121 -0
  11. package/dist/cache/HttpCacheWrapper.d.ts.map +1 -0
  12. package/dist/cache/HttpCacheWrapper.js +280 -0
  13. package/dist/cache/HttpCacheWrapper.js.map +1 -0
  14. package/dist/cache/__tests__/CacheInvalidation.test.d.ts +5 -0
  15. package/dist/cache/__tests__/CacheInvalidation.test.d.ts.map +1 -0
  16. package/dist/cache/__tests__/CacheInvalidation.test.js +236 -0
  17. package/dist/cache/__tests__/CacheInvalidation.test.js.map +1 -0
  18. package/dist/cache/__tests__/CacheManager.test.d.ts +5 -0
  19. package/dist/cache/__tests__/CacheManager.test.d.ts.map +1 -0
  20. package/dist/cache/__tests__/CacheManager.test.js +233 -0
  21. package/dist/cache/__tests__/CacheManager.test.js.map +1 -0
  22. package/dist/cache/__tests__/CachedWordPressClient.test.d.ts +5 -0
  23. package/dist/cache/__tests__/CachedWordPressClient.test.d.ts.map +1 -0
  24. package/dist/cache/__tests__/CachedWordPressClient.test.js +228 -0
  25. package/dist/cache/__tests__/CachedWordPressClient.test.js.map +1 -0
  26. package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts +5 -0
  27. package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts.map +1 -0
  28. package/dist/cache/__tests__/HttpCacheWrapper.test.js +296 -0
  29. package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +1 -0
  30. package/dist/cache/index.d.ts +12 -0
  31. package/dist/cache/index.d.ts.map +1 -0
  32. package/dist/cache/index.js +9 -0
  33. package/dist/cache/index.js.map +1 -0
  34. package/dist/client/CachedWordPressClient.d.ts +160 -0
  35. package/dist/client/CachedWordPressClient.d.ts.map +1 -0
  36. package/dist/client/CachedWordPressClient.js +338 -0
  37. package/dist/client/CachedWordPressClient.js.map +1 -0
  38. package/dist/client/WordPressClient.d.ts +81 -0
  39. package/dist/client/WordPressClient.d.ts.map +1 -0
  40. package/dist/client/WordPressClient.js +354 -0
  41. package/dist/client/WordPressClient.js.map +1 -0
  42. package/dist/config/ConfigurationSchema.d.ts +281 -0
  43. package/dist/config/ConfigurationSchema.d.ts.map +1 -0
  44. package/dist/config/ConfigurationSchema.js +205 -0
  45. package/dist/config/ConfigurationSchema.js.map +1 -0
  46. package/dist/config/ServerConfiguration.d.ts +38 -0
  47. package/dist/config/ServerConfiguration.d.ts.map +1 -0
  48. package/dist/config/ServerConfiguration.js +158 -0
  49. package/dist/config/ServerConfiguration.js.map +1 -0
  50. package/dist/docs/DocumentationGenerator.d.ts +184 -0
  51. package/dist/docs/DocumentationGenerator.d.ts.map +1 -0
  52. package/dist/docs/DocumentationGenerator.js +735 -0
  53. package/dist/docs/DocumentationGenerator.js.map +1 -0
  54. package/dist/docs/MarkdownFormatter.d.ts +84 -0
  55. package/dist/docs/MarkdownFormatter.d.ts.map +1 -0
  56. package/dist/docs/MarkdownFormatter.js +448 -0
  57. package/dist/docs/MarkdownFormatter.js.map +1 -0
  58. package/dist/docs/index.d.ts +8 -0
  59. package/dist/docs/index.d.ts.map +1 -0
  60. package/dist/docs/index.js +7 -0
  61. package/dist/docs/index.js.map +1 -0
  62. package/dist/index.d.ts +1 -4
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +12 -212
  65. package/dist/index.js.map +1 -1
  66. package/dist/performance/AnomalyDetector.d.ts +63 -0
  67. package/dist/performance/AnomalyDetector.d.ts.map +1 -0
  68. package/dist/performance/AnomalyDetector.js +222 -0
  69. package/dist/performance/AnomalyDetector.js.map +1 -0
  70. package/dist/performance/BenchmarkAnalyzer.d.ts +67 -0
  71. package/dist/performance/BenchmarkAnalyzer.d.ts.map +1 -0
  72. package/dist/performance/BenchmarkAnalyzer.js +301 -0
  73. package/dist/performance/BenchmarkAnalyzer.js.map +1 -0
  74. package/dist/performance/MetricsCollector.d.ts +139 -0
  75. package/dist/performance/MetricsCollector.d.ts.map +1 -0
  76. package/dist/performance/MetricsCollector.js +320 -0
  77. package/dist/performance/MetricsCollector.js.map +1 -0
  78. package/dist/performance/PerformanceAnalytics.d.ts +162 -0
  79. package/dist/performance/PerformanceAnalytics.d.ts.map +1 -0
  80. package/dist/performance/PerformanceAnalytics.js +554 -0
  81. package/dist/performance/PerformanceAnalytics.js.map +1 -0
  82. package/dist/performance/PerformanceMonitor.d.ts +202 -0
  83. package/dist/performance/PerformanceMonitor.d.ts.map +1 -0
  84. package/dist/performance/PerformanceMonitor.js +478 -0
  85. package/dist/performance/PerformanceMonitor.js.map +1 -0
  86. package/dist/performance/TrendAnalyzer.d.ts +69 -0
  87. package/dist/performance/TrendAnalyzer.d.ts.map +1 -0
  88. package/dist/performance/TrendAnalyzer.js +203 -0
  89. package/dist/performance/TrendAnalyzer.js.map +1 -0
  90. package/dist/performance/index.d.ts +11 -0
  91. package/dist/performance/index.d.ts.map +1 -0
  92. package/dist/performance/index.js +8 -0
  93. package/dist/performance/index.js.map +1 -0
  94. package/dist/security/InputValidator.d.ts +215 -0
  95. package/dist/security/InputValidator.d.ts.map +1 -0
  96. package/dist/security/InputValidator.js +278 -0
  97. package/dist/security/InputValidator.js.map +1 -0
  98. package/dist/security/SecurityConfig.d.ts +129 -0
  99. package/dist/security/SecurityConfig.d.ts.map +1 -0
  100. package/dist/security/SecurityConfig.js +262 -0
  101. package/dist/security/SecurityConfig.js.map +1 -0
  102. package/dist/server/ConnectionTester.d.ts +24 -0
  103. package/dist/server/ConnectionTester.d.ts.map +1 -0
  104. package/dist/server/ConnectionTester.js +61 -0
  105. package/dist/server/ConnectionTester.js.map +1 -0
  106. package/dist/server/ToolRegistry.d.ts +46 -0
  107. package/dist/server/ToolRegistry.d.ts.map +1 -0
  108. package/dist/server/ToolRegistry.js +148 -0
  109. package/dist/server/ToolRegistry.js.map +1 -0
  110. package/dist/tools/BaseToolClass.d.ts +76 -0
  111. package/dist/tools/BaseToolClass.d.ts.map +1 -0
  112. package/dist/tools/BaseToolClass.js +104 -0
  113. package/dist/tools/BaseToolClass.js.map +1 -0
  114. package/dist/tools/BaseToolManager.d.ts +26 -0
  115. package/dist/tools/BaseToolManager.d.ts.map +1 -0
  116. package/dist/tools/BaseToolManager.js +56 -0
  117. package/dist/tools/BaseToolManager.js.map +1 -0
  118. package/dist/tools/base.d.ts +37 -0
  119. package/dist/tools/base.d.ts.map +1 -0
  120. package/dist/tools/base.js +60 -0
  121. package/dist/tools/base.js.map +1 -0
  122. package/dist/tools/cache.d.ts +260 -0
  123. package/dist/tools/cache.d.ts.map +1 -0
  124. package/dist/tools/cache.js +237 -0
  125. package/dist/tools/cache.js.map +1 -0
  126. package/dist/tools/index.d.ts +2 -0
  127. package/dist/tools/index.d.ts.map +1 -1
  128. package/dist/tools/index.js +2 -0
  129. package/dist/tools/index.js.map +1 -1
  130. package/dist/tools/performance.d.ts +63 -0
  131. package/dist/tools/performance.d.ts.map +1 -0
  132. package/dist/tools/performance.js +865 -0
  133. package/dist/tools/performance.js.map +1 -0
  134. package/dist/types/client.d.ts +1 -0
  135. package/dist/types/client.d.ts.map +1 -1
  136. package/dist/types/client.js.map +1 -1
  137. package/dist/utils/toolWrapper.d.ts +4 -0
  138. package/dist/utils/toolWrapper.d.ts.map +1 -1
  139. package/dist/utils/toolWrapper.js +11 -0
  140. package/dist/utils/toolWrapper.js.map +1 -1
  141. package/dist/utils/validation.d.ts +68 -0
  142. package/dist/utils/validation.d.ts.map +1 -0
  143. package/dist/utils/validation.js +185 -0
  144. package/dist/utils/validation.js.map +1 -0
  145. package/docs/CACHING.md +340 -0
  146. package/docs/DOCKER.md +451 -0
  147. package/docs/PERFORMANCE_MONITORING.md +471 -0
  148. package/docs/SECURITY_TESTING.md +393 -0
  149. package/docs/api/README.md +200 -0
  150. package/docs/api/categories/auth.md +40 -0
  151. package/docs/api/categories/cache.md +41 -0
  152. package/docs/api/categories/comment.md +44 -0
  153. package/docs/api/categories/media.md +43 -0
  154. package/docs/api/categories/page.md +43 -0
  155. package/docs/api/categories/performance.md +44 -0
  156. package/docs/api/categories/post.md +43 -0
  157. package/docs/api/categories/site.md +43 -0
  158. package/docs/api/categories/taxonomy.md +47 -0
  159. package/docs/api/categories/user.md +43 -0
  160. package/docs/api/openapi.json +3305 -0
  161. package/docs/api/summary.json +12 -0
  162. package/docs/api/tools/wp_approve_comment.md +98 -0
  163. package/docs/api/tools/wp_cache_clear.md +120 -0
  164. package/docs/api/tools/wp_cache_info.md +119 -0
  165. package/docs/api/tools/wp_cache_stats.md +119 -0
  166. package/docs/api/tools/wp_cache_warm.md +119 -0
  167. package/docs/api/tools/wp_create_application_password.md +102 -0
  168. package/docs/api/tools/wp_create_category.md +102 -0
  169. package/docs/api/tools/wp_create_comment.md +128 -0
  170. package/docs/api/tools/wp_create_page.md +135 -0
  171. package/docs/api/tools/wp_create_post.md +147 -0
  172. package/docs/api/tools/wp_create_tag.md +101 -0
  173. package/docs/api/tools/wp_create_user.md +135 -0
  174. package/docs/api/tools/wp_delete_application_password.md +101 -0
  175. package/docs/api/tools/wp_delete_category.md +100 -0
  176. package/docs/api/tools/wp_delete_comment.md +101 -0
  177. package/docs/api/tools/wp_delete_media.md +108 -0
  178. package/docs/api/tools/wp_delete_page.md +108 -0
  179. package/docs/api/tools/wp_delete_post.md +117 -0
  180. package/docs/api/tools/wp_delete_tag.md +100 -0
  181. package/docs/api/tools/wp_delete_user.md +108 -0
  182. package/docs/api/tools/wp_get_application_passwords.md +103 -0
  183. package/docs/api/tools/wp_get_auth_status.md +101 -0
  184. package/docs/api/tools/wp_get_category.md +103 -0
  185. package/docs/api/tools/wp_get_comment.md +103 -0
  186. package/docs/api/tools/wp_get_current_user.md +101 -0
  187. package/docs/api/tools/wp_get_media.md +103 -0
  188. package/docs/api/tools/wp_get_page.md +103 -0
  189. package/docs/api/tools/wp_get_page_revisions.md +103 -0
  190. package/docs/api/tools/wp_get_post.md +112 -0
  191. package/docs/api/tools/wp_get_post_revisions.md +103 -0
  192. package/docs/api/tools/wp_get_site_settings.md +108 -0
  193. package/docs/api/tools/wp_get_tag.md +103 -0
  194. package/docs/api/tools/wp_get_user.md +103 -0
  195. package/docs/api/tools/wp_list_categories.md +111 -0
  196. package/docs/api/tools/wp_list_comments.md +111 -0
  197. package/docs/api/tools/wp_list_media.md +145 -0
  198. package/docs/api/tools/wp_list_pages.md +145 -0
  199. package/docs/api/tools/wp_list_posts.md +156 -0
  200. package/docs/api/tools/wp_list_tags.md +110 -0
  201. package/docs/api/tools/wp_list_users.md +111 -0
  202. package/docs/api/tools/wp_performance_alerts.md +162 -0
  203. package/docs/api/tools/wp_performance_benchmark.md +160 -0
  204. package/docs/api/tools/wp_performance_export.md +162 -0
  205. package/docs/api/tools/wp_performance_history.md +161 -0
  206. package/docs/api/tools/wp_performance_optimize.md +162 -0
  207. package/docs/api/tools/wp_performance_stats.md +160 -0
  208. package/docs/api/tools/wp_search_site.md +99 -0
  209. package/docs/api/tools/wp_spam_comment.md +98 -0
  210. package/docs/api/tools/wp_switch_auth_method.md +122 -0
  211. package/docs/api/tools/wp_test_auth.md +96 -0
  212. package/docs/api/tools/wp_update_category.md +102 -0
  213. package/docs/api/tools/wp_update_comment.md +127 -0
  214. package/docs/api/tools/wp_update_media.md +129 -0
  215. package/docs/api/tools/wp_update_page.md +135 -0
  216. package/docs/api/tools/wp_update_post.md +144 -0
  217. package/docs/api/tools/wp_update_site_settings.md +127 -0
  218. package/docs/api/tools/wp_update_tag.md +102 -0
  219. package/docs/api/tools/wp_update_user.md +134 -0
  220. package/docs/api/tools/wp_upload_media.md +131 -0
  221. package/docs/api/types/WordPressPost.md +39 -0
  222. package/docs/contract-testing.md +183 -0
  223. package/docs/developer/NPM_AUTH_SETUP.md +3 -3
  224. package/docs/wordpress-rest-api-authentication-troubleshooting.md +218 -0
  225. package/package.json +84 -64
  226. package/src/cache/CacheInvalidation.ts +421 -0
  227. package/src/cache/CacheManager.ts +391 -0
  228. package/src/cache/HttpCacheWrapper.ts +372 -0
  229. package/src/cache/__tests__/CacheInvalidation.test.ts +299 -0
  230. package/src/cache/__tests__/CacheManager.test.ts +300 -0
  231. package/src/cache/__tests__/CachedWordPressClient.test.ts +304 -0
  232. package/src/cache/__tests__/HttpCacheWrapper.test.ts +359 -0
  233. package/src/cache/index.ts +26 -0
  234. package/src/client/CachedWordPressClient.ts +442 -0
  235. package/src/config/ConfigurationSchema.ts +246 -0
  236. package/src/config/ServerConfiguration.ts +215 -0
  237. package/src/docs/DocumentationGenerator.ts +952 -0
  238. package/src/docs/MarkdownFormatter.ts +494 -0
  239. package/src/docs/index.ts +21 -0
  240. package/src/index.ts +14 -274
  241. package/src/performance/MetricsCollector.ts +447 -0
  242. package/src/performance/PerformanceAnalytics.ts +762 -0
  243. package/src/performance/PerformanceMonitor.ts +649 -0
  244. package/src/performance/index.ts +28 -0
  245. package/src/security/InputValidator.ts +319 -0
  246. package/src/security/SecurityConfig.ts +301 -0
  247. package/src/server/ConnectionTester.ts +74 -0
  248. package/src/server/ToolRegistry.ts +194 -0
  249. package/src/tools/BaseToolManager.ts +66 -0
  250. package/src/tools/cache.ts +259 -0
  251. package/src/tools/index.ts +2 -0
  252. package/src/tools/performance.ts +948 -0
  253. package/src/types/client.ts +1 -0
  254. package/src/utils/toolWrapper.ts +11 -0
  255. package/src/utils/validation.ts +259 -0
@@ -0,0 +1,320 @@
1
+ /**
2
+ * Real-time Metrics Collector for WordPress MCP Server
3
+ * Integrates with existing client and cache systems
4
+ */
5
+ /**
6
+ * Metrics Collector - Central hub for all performance data
7
+ */
8
+ export class MetricsCollector {
9
+ monitor;
10
+ config;
11
+ activeRequests = new Map();
12
+ activeTools = new Map();
13
+ clientInstances = new Map();
14
+ cacheManagers = new Map();
15
+ constructor(monitor, config = {}) {
16
+ this.monitor = monitor;
17
+ this.config = {
18
+ enableRealTime: true,
19
+ collectInterval: 30000, // 30 seconds
20
+ enableToolTracking: true,
21
+ enableRequestInterception: true,
22
+ enableCacheIntegration: true,
23
+ enableSystemMetrics: true,
24
+ ...config
25
+ };
26
+ if (this.config.enableRealTime) {
27
+ this.startRealTimeCollection();
28
+ }
29
+ }
30
+ /**
31
+ * Register a WordPress client for monitoring
32
+ */
33
+ registerClient(siteId, client) {
34
+ this.clientInstances.set(siteId, client);
35
+ if (this.config.enableRequestInterception) {
36
+ this.interceptClientRequests(siteId, client);
37
+ }
38
+ }
39
+ /**
40
+ * Register a cache manager for monitoring
41
+ */
42
+ registerCacheManager(siteId, cacheManager) {
43
+ this.cacheManagers.set(siteId, cacheManager);
44
+ }
45
+ /**
46
+ * Start tracking a tool execution
47
+ */
48
+ startToolExecution(toolName, parameters, siteId) {
49
+ const executionId = `${toolName}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
50
+ this.activeTools.set(executionId, {
51
+ toolName,
52
+ parameters,
53
+ startTime: Date.now(),
54
+ siteId
55
+ });
56
+ return executionId;
57
+ }
58
+ /**
59
+ * End tool execution and record metrics
60
+ */
61
+ endToolExecution(executionId, success, error) {
62
+ const context = this.activeTools.get(executionId);
63
+ if (!context)
64
+ return;
65
+ const responseTime = Date.now() - context.startTime;
66
+ // Record in performance monitor
67
+ this.monitor.recordRequest(responseTime, success, context.toolName);
68
+ this.activeTools.delete(executionId);
69
+ }
70
+ /**
71
+ * Record a raw request (bypass tool tracking)
72
+ */
73
+ recordRawRequest(responseTime, success, endpoint, fromCache = false) {
74
+ this.monitor.recordRequest(responseTime, success);
75
+ }
76
+ /**
77
+ * Collect current metrics from all sources
78
+ */
79
+ collectCurrentMetrics() {
80
+ // Update cache metrics from all registered cache managers
81
+ this.updateCacheMetrics();
82
+ // Update client metrics from all registered clients
83
+ this.updateClientMetrics();
84
+ // Get current metrics from monitor
85
+ return this.monitor.getMetrics();
86
+ }
87
+ /**
88
+ * Get aggregated cache statistics
89
+ */
90
+ getAggregatedCacheStats() {
91
+ const aggregated = {
92
+ hits: 0,
93
+ misses: 0,
94
+ evictions: 0,
95
+ totalSize: 0,
96
+ hitRate: 0
97
+ };
98
+ for (const [_siteId, cacheManager] of this.cacheManagers) {
99
+ if (cacheManager && typeof cacheManager.getStats === 'function') {
100
+ const stats = cacheManager.getStats();
101
+ aggregated.hits += stats.hits || 0;
102
+ aggregated.misses += stats.misses || 0;
103
+ aggregated.evictions += stats.evictions || 0;
104
+ aggregated.totalSize += stats.totalSize || 0;
105
+ }
106
+ }
107
+ // Calculate overall hit rate
108
+ const total = aggregated.hits + aggregated.misses;
109
+ aggregated.hitRate = total > 0 ? aggregated.hits / total : 0;
110
+ return aggregated;
111
+ }
112
+ /**
113
+ * Get aggregated client statistics
114
+ */
115
+ getAggregatedClientStats() {
116
+ const aggregated = {
117
+ totalRequests: 0,
118
+ successfulRequests: 0,
119
+ failedRequests: 0,
120
+ averageResponseTime: 0,
121
+ rateLimitHits: 0,
122
+ authFailures: 0
123
+ };
124
+ const responseTimes = [];
125
+ for (const [_siteId, client] of this.clientInstances) {
126
+ if (client && typeof client.getStats === 'function') {
127
+ const stats = client.getStats();
128
+ aggregated.totalRequests += stats.totalRequests || 0;
129
+ aggregated.successfulRequests += stats.successfulRequests || 0;
130
+ aggregated.failedRequests += stats.failedRequests || 0;
131
+ aggregated.rateLimitHits += stats.rateLimitHits || 0;
132
+ aggregated.authFailures += stats.authFailures || 0;
133
+ if (stats.averageResponseTime) {
134
+ responseTimes.push(stats.averageResponseTime);
135
+ }
136
+ }
137
+ }
138
+ // Calculate overall average response time
139
+ if (responseTimes.length > 0) {
140
+ aggregated.averageResponseTime = responseTimes.reduce((sum, time) => sum + time, 0) / responseTimes.length;
141
+ }
142
+ return aggregated;
143
+ }
144
+ /**
145
+ * Get performance summary for specific site
146
+ */
147
+ getSiteMetrics(siteId) {
148
+ const result = { isActive: false };
149
+ const cacheManager = this.cacheManagers.get(siteId);
150
+ if (cacheManager && typeof cacheManager.getStats === 'function') {
151
+ result.cache = cacheManager.getStats();
152
+ result.isActive = true;
153
+ }
154
+ const client = this.clientInstances.get(siteId);
155
+ if (client && typeof client.getStats === 'function') {
156
+ result.client = client.getStats();
157
+ result.isActive = true;
158
+ }
159
+ return result;
160
+ }
161
+ /**
162
+ * Generate performance comparison between sites
163
+ */
164
+ compareSitePerformance() {
165
+ const sites = Array.from(this.clientInstances.keys());
166
+ const comparison = {};
167
+ const rankings = [];
168
+ for (const siteId of sites) {
169
+ const metrics = this.getSiteMetrics(siteId);
170
+ const responseTime = metrics.client?.averageResponseTime || 0;
171
+ const cacheHitRate = metrics.cache?.hitRate || 0;
172
+ const errorRate = metrics.client
173
+ ? (metrics.client.failedRequests / Math.max(metrics.client.totalRequests, 1))
174
+ : 0;
175
+ const requestCount = metrics.client?.totalRequests || 0;
176
+ // Calculate performance score (lower is better for response time and error rate)
177
+ const score = (responseTime / 1000) + (errorRate * 100) - (cacheHitRate * 50) + (requestCount * 0.001);
178
+ comparison[siteId] = {
179
+ responseTime,
180
+ cacheHitRate,
181
+ errorRate,
182
+ requestCount,
183
+ ranking: 0 // Will be set after sorting
184
+ };
185
+ rankings.push({ site: siteId, score });
186
+ }
187
+ // Sort by performance score
188
+ rankings.sort((a, b) => a.score - b.score);
189
+ // Assign rankings
190
+ rankings.forEach((item, index) => {
191
+ comparison[item.site].ranking = index + 1;
192
+ });
193
+ return {
194
+ sites,
195
+ comparison,
196
+ bestPerforming: rankings[0]?.site || '',
197
+ worstPerforming: rankings[rankings.length - 1]?.site || ''
198
+ };
199
+ }
200
+ /**
201
+ * Generate optimization suggestions
202
+ */
203
+ generateOptimizationSuggestions() {
204
+ const metrics = this.collectCurrentMetrics();
205
+ const critical = [];
206
+ const recommended = [];
207
+ const optional = [];
208
+ // Critical issues
209
+ if (metrics.requests.averageResponseTime > 5000) {
210
+ critical.push('Response times are critically high (>5s). Enable caching immediately.');
211
+ }
212
+ const errorRate = metrics.requests.failed / Math.max(metrics.requests.total, 1);
213
+ if (errorRate > 0.1) {
214
+ critical.push('Error rate is critically high (>10%). Check WordPress connectivity.');
215
+ }
216
+ // Recommended optimizations
217
+ if (metrics.cache.hitRate < 0.8) {
218
+ recommended.push('Cache hit rate is below 80%. Consider cache warming or TTL adjustment.');
219
+ }
220
+ if (metrics.requests.averageResponseTime > 2000) {
221
+ recommended.push('Response times could be improved. Consider enabling more aggressive caching.');
222
+ }
223
+ if (metrics.system.memoryUsage > 80) {
224
+ recommended.push('Memory usage is high. Consider increasing cache size limits or server resources.');
225
+ }
226
+ // Optional optimizations
227
+ if (metrics.cache.totalSize < 100) {
228
+ optional.push('Cache utilization is low. Consider pre-warming with frequently accessed data.');
229
+ }
230
+ if (Object.keys(metrics.tools.toolUsageCount).length > 10) {
231
+ optional.push('Many tools are being used. Consider creating custom workflows for common operations.');
232
+ }
233
+ return { critical, recommended, optional };
234
+ }
235
+ /**
236
+ * Export detailed performance report
237
+ */
238
+ exportDetailedReport() {
239
+ return {
240
+ timestamp: new Date().toISOString(),
241
+ overview: this.collectCurrentMetrics(),
242
+ siteComparison: this.compareSitePerformance(),
243
+ aggregatedStats: {
244
+ cache: this.getAggregatedCacheStats(),
245
+ client: this.getAggregatedClientStats()
246
+ },
247
+ optimizations: this.generateOptimizationSuggestions(),
248
+ alerts: this.monitor.getAlerts()
249
+ };
250
+ }
251
+ /**
252
+ * Start real-time metric collection
253
+ */
254
+ startRealTimeCollection() {
255
+ setInterval(() => {
256
+ this.updateCacheMetrics();
257
+ this.updateClientMetrics();
258
+ }, this.config.collectInterval);
259
+ }
260
+ /**
261
+ * Update cache metrics in performance monitor
262
+ */
263
+ updateCacheMetrics() {
264
+ const aggregatedStats = this.getAggregatedCacheStats();
265
+ this.monitor.updateCacheMetrics(aggregatedStats);
266
+ }
267
+ /**
268
+ * Update client metrics in performance monitor
269
+ */
270
+ updateClientMetrics() {
271
+ // Client metrics are updated through request interception
272
+ // This method can be used for additional client-specific metrics
273
+ }
274
+ /**
275
+ * Intercept client requests for automatic tracking
276
+ */
277
+ interceptClientRequests(siteId, client) {
278
+ if (!client.request || typeof client.request !== 'function') {
279
+ return;
280
+ }
281
+ const originalRequest = client.request.bind(client);
282
+ client.request = async (...args) => {
283
+ const startTime = Date.now();
284
+ const requestId = `${siteId}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
285
+ // Extract metadata
286
+ const metadata = {
287
+ siteId,
288
+ endpoint: args[0] || 'unknown',
289
+ method: args[1] || 'GET',
290
+ startTime,
291
+ fromCache: false
292
+ };
293
+ this.activeRequests.set(requestId, metadata);
294
+ try {
295
+ const result = await originalRequest(...args);
296
+ const responseTime = Date.now() - startTime;
297
+ // Check if response came from cache
298
+ const _fromCache = result.cached || false;
299
+ this.monitor.recordRequest(responseTime, true);
300
+ this.activeRequests.delete(requestId);
301
+ return result;
302
+ }
303
+ catch (error) {
304
+ const responseTime = Date.now() - startTime;
305
+ this.monitor.recordRequest(responseTime, false);
306
+ this.activeRequests.delete(requestId);
307
+ throw error;
308
+ }
309
+ };
310
+ }
311
+ /**
312
+ * Stop all monitoring and cleanup
313
+ */
314
+ stop() {
315
+ this.monitor.stop();
316
+ this.activeRequests.clear();
317
+ this.activeTools.clear();
318
+ }
319
+ }
320
+ //# 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,162 @@
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: any;
127
+ optimizationPlan: any;
128
+ };
129
+ /**
130
+ * Analyze trend for a specific metric
131
+ */
132
+ private analyzeTrend;
133
+ /**
134
+ * Detect anomalies in current metrics
135
+ */
136
+ private detectAnomalies;
137
+ /**
138
+ * Check if a metric value is anomalous
139
+ */
140
+ private checkMetricAnomaly;
141
+ /**
142
+ * Generate possible causes for anomalies
143
+ */
144
+ private generatePossibleCauses;
145
+ /**
146
+ * Create benchmark comparison
147
+ */
148
+ private createBenchmarkComparison;
149
+ /**
150
+ * Get current value for a metric
151
+ */
152
+ private getCurrentMetricValue;
153
+ /**
154
+ * Calculate overall performance score
155
+ */
156
+ private calculatePerformanceScore;
157
+ /**
158
+ * Calculate overall health status
159
+ */
160
+ private calculateOverallHealth;
161
+ }
162
+ //# 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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"}