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.
- package/README.md +388 -66
- package/dist/cache/CacheInvalidation.d.ts +118 -0
- package/dist/cache/CacheInvalidation.d.ts.map +1 -0
- package/dist/cache/CacheInvalidation.js +349 -0
- package/dist/cache/CacheInvalidation.js.map +1 -0
- package/dist/cache/CacheManager.d.ts +143 -0
- package/dist/cache/CacheManager.d.ts.map +1 -0
- package/dist/cache/CacheManager.js +308 -0
- package/dist/cache/CacheManager.js.map +1 -0
- package/dist/cache/HttpCacheWrapper.d.ts +121 -0
- package/dist/cache/HttpCacheWrapper.d.ts.map +1 -0
- package/dist/cache/HttpCacheWrapper.js +280 -0
- package/dist/cache/HttpCacheWrapper.js.map +1 -0
- package/dist/cache/__tests__/CacheInvalidation.test.d.ts +5 -0
- package/dist/cache/__tests__/CacheInvalidation.test.d.ts.map +1 -0
- package/dist/cache/__tests__/CacheInvalidation.test.js +236 -0
- package/dist/cache/__tests__/CacheInvalidation.test.js.map +1 -0
- package/dist/cache/__tests__/CacheManager.test.d.ts +5 -0
- package/dist/cache/__tests__/CacheManager.test.d.ts.map +1 -0
- package/dist/cache/__tests__/CacheManager.test.js +233 -0
- package/dist/cache/__tests__/CacheManager.test.js.map +1 -0
- package/dist/cache/__tests__/CachedWordPressClient.test.d.ts +5 -0
- package/dist/cache/__tests__/CachedWordPressClient.test.d.ts.map +1 -0
- package/dist/cache/__tests__/CachedWordPressClient.test.js +228 -0
- package/dist/cache/__tests__/CachedWordPressClient.test.js.map +1 -0
- package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts +5 -0
- package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts.map +1 -0
- package/dist/cache/__tests__/HttpCacheWrapper.test.js +296 -0
- package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +1 -0
- package/dist/cache/index.d.ts +12 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +9 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/client/CachedWordPressClient.d.ts +160 -0
- package/dist/client/CachedWordPressClient.d.ts.map +1 -0
- package/dist/client/CachedWordPressClient.js +338 -0
- package/dist/client/CachedWordPressClient.js.map +1 -0
- package/dist/client/WordPressClient.d.ts +81 -0
- package/dist/client/WordPressClient.d.ts.map +1 -0
- package/dist/client/WordPressClient.js +354 -0
- package/dist/client/WordPressClient.js.map +1 -0
- package/dist/config/ConfigurationSchema.d.ts +281 -0
- package/dist/config/ConfigurationSchema.d.ts.map +1 -0
- package/dist/config/ConfigurationSchema.js +205 -0
- package/dist/config/ConfigurationSchema.js.map +1 -0
- package/dist/config/ServerConfiguration.d.ts +38 -0
- package/dist/config/ServerConfiguration.d.ts.map +1 -0
- package/dist/config/ServerConfiguration.js +158 -0
- package/dist/config/ServerConfiguration.js.map +1 -0
- package/dist/docs/DocumentationGenerator.d.ts +184 -0
- package/dist/docs/DocumentationGenerator.d.ts.map +1 -0
- package/dist/docs/DocumentationGenerator.js +735 -0
- package/dist/docs/DocumentationGenerator.js.map +1 -0
- package/dist/docs/MarkdownFormatter.d.ts +84 -0
- package/dist/docs/MarkdownFormatter.d.ts.map +1 -0
- package/dist/docs/MarkdownFormatter.js +448 -0
- package/dist/docs/MarkdownFormatter.js.map +1 -0
- package/dist/docs/index.d.ts +8 -0
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +7 -0
- package/dist/docs/index.js.map +1 -0
- package/dist/index.d.ts +1 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -212
- package/dist/index.js.map +1 -1
- package/dist/performance/AnomalyDetector.d.ts +63 -0
- package/dist/performance/AnomalyDetector.d.ts.map +1 -0
- package/dist/performance/AnomalyDetector.js +222 -0
- package/dist/performance/AnomalyDetector.js.map +1 -0
- package/dist/performance/BenchmarkAnalyzer.d.ts +67 -0
- package/dist/performance/BenchmarkAnalyzer.d.ts.map +1 -0
- package/dist/performance/BenchmarkAnalyzer.js +301 -0
- package/dist/performance/BenchmarkAnalyzer.js.map +1 -0
- package/dist/performance/MetricsCollector.d.ts +139 -0
- package/dist/performance/MetricsCollector.d.ts.map +1 -0
- package/dist/performance/MetricsCollector.js +320 -0
- package/dist/performance/MetricsCollector.js.map +1 -0
- package/dist/performance/PerformanceAnalytics.d.ts +162 -0
- package/dist/performance/PerformanceAnalytics.d.ts.map +1 -0
- package/dist/performance/PerformanceAnalytics.js +554 -0
- package/dist/performance/PerformanceAnalytics.js.map +1 -0
- package/dist/performance/PerformanceMonitor.d.ts +202 -0
- package/dist/performance/PerformanceMonitor.d.ts.map +1 -0
- package/dist/performance/PerformanceMonitor.js +478 -0
- package/dist/performance/PerformanceMonitor.js.map +1 -0
- package/dist/performance/TrendAnalyzer.d.ts +69 -0
- package/dist/performance/TrendAnalyzer.d.ts.map +1 -0
- package/dist/performance/TrendAnalyzer.js +203 -0
- package/dist/performance/TrendAnalyzer.js.map +1 -0
- package/dist/performance/index.d.ts +11 -0
- package/dist/performance/index.d.ts.map +1 -0
- package/dist/performance/index.js +8 -0
- package/dist/performance/index.js.map +1 -0
- package/dist/security/InputValidator.d.ts +215 -0
- package/dist/security/InputValidator.d.ts.map +1 -0
- package/dist/security/InputValidator.js +278 -0
- package/dist/security/InputValidator.js.map +1 -0
- package/dist/security/SecurityConfig.d.ts +129 -0
- package/dist/security/SecurityConfig.d.ts.map +1 -0
- package/dist/security/SecurityConfig.js +262 -0
- package/dist/security/SecurityConfig.js.map +1 -0
- package/dist/server/ConnectionTester.d.ts +24 -0
- package/dist/server/ConnectionTester.d.ts.map +1 -0
- package/dist/server/ConnectionTester.js +61 -0
- package/dist/server/ConnectionTester.js.map +1 -0
- package/dist/server/ToolRegistry.d.ts +46 -0
- package/dist/server/ToolRegistry.d.ts.map +1 -0
- package/dist/server/ToolRegistry.js +148 -0
- package/dist/server/ToolRegistry.js.map +1 -0
- package/dist/tools/BaseToolClass.d.ts +76 -0
- package/dist/tools/BaseToolClass.d.ts.map +1 -0
- package/dist/tools/BaseToolClass.js +104 -0
- package/dist/tools/BaseToolClass.js.map +1 -0
- package/dist/tools/BaseToolManager.d.ts +26 -0
- package/dist/tools/BaseToolManager.d.ts.map +1 -0
- package/dist/tools/BaseToolManager.js +56 -0
- package/dist/tools/BaseToolManager.js.map +1 -0
- package/dist/tools/base.d.ts +37 -0
- package/dist/tools/base.d.ts.map +1 -0
- package/dist/tools/base.js +60 -0
- package/dist/tools/base.js.map +1 -0
- package/dist/tools/cache.d.ts +260 -0
- package/dist/tools/cache.d.ts.map +1 -0
- package/dist/tools/cache.js +237 -0
- package/dist/tools/cache.js.map +1 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/performance.d.ts +63 -0
- package/dist/tools/performance.d.ts.map +1 -0
- package/dist/tools/performance.js +865 -0
- package/dist/tools/performance.js.map +1 -0
- package/dist/types/client.d.ts +1 -0
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/client.js.map +1 -1
- package/dist/utils/toolWrapper.d.ts +4 -0
- package/dist/utils/toolWrapper.d.ts.map +1 -1
- package/dist/utils/toolWrapper.js +11 -0
- package/dist/utils/toolWrapper.js.map +1 -1
- package/dist/utils/validation.d.ts +68 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +185 -0
- package/dist/utils/validation.js.map +1 -0
- package/docs/CACHING.md +340 -0
- package/docs/DOCKER.md +451 -0
- package/docs/PERFORMANCE_MONITORING.md +471 -0
- package/docs/SECURITY_TESTING.md +393 -0
- package/docs/api/README.md +200 -0
- package/docs/api/categories/auth.md +40 -0
- package/docs/api/categories/cache.md +41 -0
- package/docs/api/categories/comment.md +44 -0
- package/docs/api/categories/media.md +43 -0
- package/docs/api/categories/page.md +43 -0
- package/docs/api/categories/performance.md +44 -0
- package/docs/api/categories/post.md +43 -0
- package/docs/api/categories/site.md +43 -0
- package/docs/api/categories/taxonomy.md +47 -0
- package/docs/api/categories/user.md +43 -0
- package/docs/api/openapi.json +3305 -0
- package/docs/api/summary.json +12 -0
- package/docs/api/tools/wp_approve_comment.md +98 -0
- package/docs/api/tools/wp_cache_clear.md +120 -0
- package/docs/api/tools/wp_cache_info.md +119 -0
- package/docs/api/tools/wp_cache_stats.md +119 -0
- package/docs/api/tools/wp_cache_warm.md +119 -0
- package/docs/api/tools/wp_create_application_password.md +102 -0
- package/docs/api/tools/wp_create_category.md +102 -0
- package/docs/api/tools/wp_create_comment.md +128 -0
- package/docs/api/tools/wp_create_page.md +135 -0
- package/docs/api/tools/wp_create_post.md +147 -0
- package/docs/api/tools/wp_create_tag.md +101 -0
- package/docs/api/tools/wp_create_user.md +135 -0
- package/docs/api/tools/wp_delete_application_password.md +101 -0
- package/docs/api/tools/wp_delete_category.md +100 -0
- package/docs/api/tools/wp_delete_comment.md +101 -0
- package/docs/api/tools/wp_delete_media.md +108 -0
- package/docs/api/tools/wp_delete_page.md +108 -0
- package/docs/api/tools/wp_delete_post.md +117 -0
- package/docs/api/tools/wp_delete_tag.md +100 -0
- package/docs/api/tools/wp_delete_user.md +108 -0
- package/docs/api/tools/wp_get_application_passwords.md +103 -0
- package/docs/api/tools/wp_get_auth_status.md +101 -0
- package/docs/api/tools/wp_get_category.md +103 -0
- package/docs/api/tools/wp_get_comment.md +103 -0
- package/docs/api/tools/wp_get_current_user.md +101 -0
- package/docs/api/tools/wp_get_media.md +103 -0
- package/docs/api/tools/wp_get_page.md +103 -0
- package/docs/api/tools/wp_get_page_revisions.md +103 -0
- package/docs/api/tools/wp_get_post.md +112 -0
- package/docs/api/tools/wp_get_post_revisions.md +103 -0
- package/docs/api/tools/wp_get_site_settings.md +108 -0
- package/docs/api/tools/wp_get_tag.md +103 -0
- package/docs/api/tools/wp_get_user.md +103 -0
- package/docs/api/tools/wp_list_categories.md +111 -0
- package/docs/api/tools/wp_list_comments.md +111 -0
- package/docs/api/tools/wp_list_media.md +145 -0
- package/docs/api/tools/wp_list_pages.md +145 -0
- package/docs/api/tools/wp_list_posts.md +156 -0
- package/docs/api/tools/wp_list_tags.md +110 -0
- package/docs/api/tools/wp_list_users.md +111 -0
- package/docs/api/tools/wp_performance_alerts.md +162 -0
- package/docs/api/tools/wp_performance_benchmark.md +160 -0
- package/docs/api/tools/wp_performance_export.md +162 -0
- package/docs/api/tools/wp_performance_history.md +161 -0
- package/docs/api/tools/wp_performance_optimize.md +162 -0
- package/docs/api/tools/wp_performance_stats.md +160 -0
- package/docs/api/tools/wp_search_site.md +99 -0
- package/docs/api/tools/wp_spam_comment.md +98 -0
- package/docs/api/tools/wp_switch_auth_method.md +122 -0
- package/docs/api/tools/wp_test_auth.md +96 -0
- package/docs/api/tools/wp_update_category.md +102 -0
- package/docs/api/tools/wp_update_comment.md +127 -0
- package/docs/api/tools/wp_update_media.md +129 -0
- package/docs/api/tools/wp_update_page.md +135 -0
- package/docs/api/tools/wp_update_post.md +144 -0
- package/docs/api/tools/wp_update_site_settings.md +127 -0
- package/docs/api/tools/wp_update_tag.md +102 -0
- package/docs/api/tools/wp_update_user.md +134 -0
- package/docs/api/tools/wp_upload_media.md +131 -0
- package/docs/api/types/WordPressPost.md +39 -0
- package/docs/contract-testing.md +183 -0
- package/docs/developer/NPM_AUTH_SETUP.md +3 -3
- package/docs/wordpress-rest-api-authentication-troubleshooting.md +218 -0
- package/package.json +84 -64
- package/src/cache/CacheInvalidation.ts +421 -0
- package/src/cache/CacheManager.ts +391 -0
- package/src/cache/HttpCacheWrapper.ts +372 -0
- package/src/cache/__tests__/CacheInvalidation.test.ts +299 -0
- package/src/cache/__tests__/CacheManager.test.ts +300 -0
- package/src/cache/__tests__/CachedWordPressClient.test.ts +304 -0
- package/src/cache/__tests__/HttpCacheWrapper.test.ts +359 -0
- package/src/cache/index.ts +26 -0
- package/src/client/CachedWordPressClient.ts +442 -0
- package/src/config/ConfigurationSchema.ts +246 -0
- package/src/config/ServerConfiguration.ts +215 -0
- package/src/docs/DocumentationGenerator.ts +952 -0
- package/src/docs/MarkdownFormatter.ts +494 -0
- package/src/docs/index.ts +21 -0
- package/src/index.ts +14 -274
- package/src/performance/MetricsCollector.ts +447 -0
- package/src/performance/PerformanceAnalytics.ts +762 -0
- package/src/performance/PerformanceMonitor.ts +649 -0
- package/src/performance/index.ts +28 -0
- package/src/security/InputValidator.ts +319 -0
- package/src/security/SecurityConfig.ts +301 -0
- package/src/server/ConnectionTester.ts +74 -0
- package/src/server/ToolRegistry.ts +194 -0
- package/src/tools/BaseToolManager.ts +66 -0
- package/src/tools/cache.ts +259 -0
- package/src/tools/index.ts +2 -0
- package/src/tools/performance.ts +948 -0
- package/src/types/client.ts +1 -0
- package/src/utils/toolWrapper.ts +11 -0
- package/src/utils/validation.ts +259 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Benchmark Analysis for Performance Metrics
|
|
3
|
+
* Compares current performance against industry standards
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Analyzes performance against industry benchmarks
|
|
7
|
+
*/
|
|
8
|
+
export class BenchmarkAnalyzer {
|
|
9
|
+
// Performance benchmarks (based on industry standards)
|
|
10
|
+
benchmarks = {
|
|
11
|
+
responseTime: {
|
|
12
|
+
excellent: 200, // <200ms
|
|
13
|
+
good: 500, // 200-500ms
|
|
14
|
+
average: 1000, // 500ms-1s
|
|
15
|
+
below_average: 2000, // 1-2s
|
|
16
|
+
poor: Infinity // >2s
|
|
17
|
+
},
|
|
18
|
+
cacheHitRate: {
|
|
19
|
+
excellent: 0.95, // >95%
|
|
20
|
+
good: 0.85, // 85-95%
|
|
21
|
+
average: 0.70, // 70-85%
|
|
22
|
+
below_average: 0.50, // 50-70%
|
|
23
|
+
poor: 0 // <50%
|
|
24
|
+
},
|
|
25
|
+
errorRate: {
|
|
26
|
+
excellent: 0.001, // <0.1%
|
|
27
|
+
good: 0.01, // 0.1-1%
|
|
28
|
+
average: 0.02, // 1-2%
|
|
29
|
+
below_average: 0.05, // 2-5%
|
|
30
|
+
poor: Infinity // >5%
|
|
31
|
+
},
|
|
32
|
+
memoryUsage: {
|
|
33
|
+
excellent: 50, // <50%
|
|
34
|
+
good: 70, // 50-70%
|
|
35
|
+
average: 80, // 70-80%
|
|
36
|
+
below_average: 90, // 80-90%
|
|
37
|
+
poor: 100 // >90%
|
|
38
|
+
},
|
|
39
|
+
throughput: {
|
|
40
|
+
excellent: 1000, // >1000 req/s
|
|
41
|
+
good: 500, // 500-1000 req/s
|
|
42
|
+
average: 100, // 100-500 req/s
|
|
43
|
+
below_average: 50, // 50-100 req/s
|
|
44
|
+
poor: 0 // <50 req/s
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Compare current metrics against benchmarks
|
|
49
|
+
*/
|
|
50
|
+
compareToBenchmarks(metrics) {
|
|
51
|
+
const comparisons = [];
|
|
52
|
+
// Response Time
|
|
53
|
+
if (metrics.requests?.averageResponseTime !== undefined) {
|
|
54
|
+
comparisons.push(this.createBenchmarkComparison('responseTime', 'Response Time', metrics.requests.averageResponseTime, false // Lower is better
|
|
55
|
+
));
|
|
56
|
+
}
|
|
57
|
+
// Cache Hit Rate
|
|
58
|
+
if (metrics.cache?.hitRate !== undefined) {
|
|
59
|
+
comparisons.push(this.createBenchmarkComparison('cacheHitRate', 'Cache Hit Rate', metrics.cache.hitRate, true // Higher is better
|
|
60
|
+
));
|
|
61
|
+
}
|
|
62
|
+
// Error Rate
|
|
63
|
+
if (metrics.requests?.total && metrics.requests.total > 0) {
|
|
64
|
+
const errorRate = metrics.requests.failed / metrics.requests.total;
|
|
65
|
+
comparisons.push(this.createBenchmarkComparison('errorRate', 'Error Rate', errorRate, false // Lower is better
|
|
66
|
+
));
|
|
67
|
+
}
|
|
68
|
+
// Memory Usage
|
|
69
|
+
if (metrics.system?.memoryUsage !== undefined) {
|
|
70
|
+
comparisons.push(this.createBenchmarkComparison('memoryUsage', 'Memory Usage', metrics.system.memoryUsage, false // Lower is better
|
|
71
|
+
));
|
|
72
|
+
}
|
|
73
|
+
// Throughput
|
|
74
|
+
if (metrics.requests?.requestsPerSecond !== undefined) {
|
|
75
|
+
comparisons.push(this.createBenchmarkComparison('throughput', 'Throughput', metrics.requests.requestsPerSecond, true // Higher is better
|
|
76
|
+
));
|
|
77
|
+
}
|
|
78
|
+
return comparisons;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Create a benchmark comparison for a specific metric
|
|
82
|
+
*/
|
|
83
|
+
createBenchmarkComparison(metricKey, category, currentValue, higherIsBetter) {
|
|
84
|
+
const thresholds = this.benchmarks[metricKey];
|
|
85
|
+
const status = this.determineStatus(currentValue, thresholds, higherIsBetter);
|
|
86
|
+
const percentile = this.calculatePercentile(currentValue, thresholds, higherIsBetter);
|
|
87
|
+
const benchmarkValue = this.getBenchmarkValue(status, thresholds);
|
|
88
|
+
const improvement = this.calculateImprovement(currentValue, status, thresholds, higherIsBetter);
|
|
89
|
+
return {
|
|
90
|
+
category,
|
|
91
|
+
currentValue,
|
|
92
|
+
benchmarkValue,
|
|
93
|
+
percentile,
|
|
94
|
+
status,
|
|
95
|
+
improvement
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Determine performance status based on thresholds
|
|
100
|
+
*/
|
|
101
|
+
determineStatus(value, thresholds, higherIsBetter) {
|
|
102
|
+
if (higherIsBetter) {
|
|
103
|
+
if (value >= thresholds.excellent)
|
|
104
|
+
return 'excellent';
|
|
105
|
+
if (value >= thresholds.good)
|
|
106
|
+
return 'good';
|
|
107
|
+
if (value >= thresholds.average)
|
|
108
|
+
return 'average';
|
|
109
|
+
if (value >= thresholds.below_average)
|
|
110
|
+
return 'below_average';
|
|
111
|
+
return 'poor';
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
if (value <= thresholds.excellent)
|
|
115
|
+
return 'excellent';
|
|
116
|
+
if (value <= thresholds.good)
|
|
117
|
+
return 'good';
|
|
118
|
+
if (value <= thresholds.average)
|
|
119
|
+
return 'average';
|
|
120
|
+
if (value <= thresholds.below_average)
|
|
121
|
+
return 'below_average';
|
|
122
|
+
return 'poor';
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Calculate percentile ranking
|
|
127
|
+
*/
|
|
128
|
+
calculatePercentile(value, thresholds, higherIsBetter) {
|
|
129
|
+
const values = [
|
|
130
|
+
thresholds.poor,
|
|
131
|
+
thresholds.below_average,
|
|
132
|
+
thresholds.average,
|
|
133
|
+
thresholds.good,
|
|
134
|
+
thresholds.excellent
|
|
135
|
+
];
|
|
136
|
+
if (higherIsBetter) {
|
|
137
|
+
values.reverse();
|
|
138
|
+
}
|
|
139
|
+
// Find position in sorted array
|
|
140
|
+
let position = 0;
|
|
141
|
+
for (let i = 0; i < values.length; i++) {
|
|
142
|
+
if (higherIsBetter ? value >= values[i] : value <= values[i]) {
|
|
143
|
+
position = i + 1;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return Math.round((position / values.length) * 100);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get the benchmark value for a given status
|
|
150
|
+
*/
|
|
151
|
+
getBenchmarkValue(status, thresholds) {
|
|
152
|
+
switch (status) {
|
|
153
|
+
case 'excellent': return thresholds.excellent;
|
|
154
|
+
case 'good': return thresholds.good;
|
|
155
|
+
case 'average': return thresholds.average;
|
|
156
|
+
case 'below_average': return thresholds.below_average;
|
|
157
|
+
case 'poor': return thresholds.poor === Infinity ? thresholds.below_average * 2 : thresholds.poor;
|
|
158
|
+
default: return thresholds.average;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Calculate improvement needed to reach next tier
|
|
163
|
+
*/
|
|
164
|
+
calculateImprovement(currentValue, status, thresholds, higherIsBetter) {
|
|
165
|
+
let targetValue;
|
|
166
|
+
switch (status) {
|
|
167
|
+
case 'poor':
|
|
168
|
+
targetValue = thresholds.below_average;
|
|
169
|
+
break;
|
|
170
|
+
case 'below_average':
|
|
171
|
+
targetValue = thresholds.average;
|
|
172
|
+
break;
|
|
173
|
+
case 'average':
|
|
174
|
+
targetValue = thresholds.good;
|
|
175
|
+
break;
|
|
176
|
+
case 'good':
|
|
177
|
+
targetValue = thresholds.excellent;
|
|
178
|
+
break;
|
|
179
|
+
case 'excellent':
|
|
180
|
+
return 0; // Already at top tier
|
|
181
|
+
default:
|
|
182
|
+
targetValue = thresholds.good;
|
|
183
|
+
}
|
|
184
|
+
if (higherIsBetter) {
|
|
185
|
+
return Math.max(0, targetValue - currentValue);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
return Math.max(0, currentValue - targetValue);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Generate benchmark report
|
|
193
|
+
*/
|
|
194
|
+
generateBenchmarkReport(comparisons) {
|
|
195
|
+
if (comparisons.length === 0) {
|
|
196
|
+
return 'No benchmark data available.';
|
|
197
|
+
}
|
|
198
|
+
const report = ['📊 Performance Benchmark Analysis\n'];
|
|
199
|
+
for (const comparison of comparisons) {
|
|
200
|
+
const statusEmoji = this.getStatusEmoji(comparison.status);
|
|
201
|
+
const improvementText = comparison.improvement > 0
|
|
202
|
+
? ` (${comparison.improvement.toFixed(2)} improvement needed)`
|
|
203
|
+
: ' (optimal)';
|
|
204
|
+
report.push(`${statusEmoji} ${comparison.category}: ${comparison.status.toUpperCase()}`, ` Current: ${comparison.currentValue.toFixed(2)}`, ` Benchmark: ${comparison.benchmarkValue.toFixed(2)}`, ` Percentile: ${comparison.percentile}th${improvementText}`, '');
|
|
205
|
+
}
|
|
206
|
+
// Add overall assessment
|
|
207
|
+
const excellentCount = comparisons.filter(c => c.status === 'excellent').length;
|
|
208
|
+
const goodCount = comparisons.filter(c => c.status === 'good').length;
|
|
209
|
+
const avgCount = comparisons.filter(c => c.status === 'average').length;
|
|
210
|
+
const belowCount = comparisons.filter(c => c.status === 'below_average').length;
|
|
211
|
+
const poorCount = comparisons.filter(c => c.status === 'poor').length;
|
|
212
|
+
let overallAssessment = '';
|
|
213
|
+
if (excellentCount + goodCount >= comparisons.length * 0.8) {
|
|
214
|
+
overallAssessment = '🎉 Overall Performance: EXCELLENT - Your system is performing very well!';
|
|
215
|
+
}
|
|
216
|
+
else if (excellentCount + goodCount + avgCount >= comparisons.length * 0.7) {
|
|
217
|
+
overallAssessment = '✅ Overall Performance: GOOD - Most metrics are performing adequately.';
|
|
218
|
+
}
|
|
219
|
+
else if (belowCount + poorCount >= comparisons.length * 0.5) {
|
|
220
|
+
overallAssessment = '⚠️ Overall Performance: NEEDS ATTENTION - Several metrics require optimization.';
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
overallAssessment = '🔧 Overall Performance: AVERAGE - Room for improvement in key areas.';
|
|
224
|
+
}
|
|
225
|
+
report.push(overallAssessment);
|
|
226
|
+
return report.join('\n');
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get emoji for performance status
|
|
230
|
+
*/
|
|
231
|
+
getStatusEmoji(status) {
|
|
232
|
+
switch (status) {
|
|
233
|
+
case 'excellent': return '🟢';
|
|
234
|
+
case 'good': return '🔵';
|
|
235
|
+
case 'average': return '🟡';
|
|
236
|
+
case 'below_average': return '🟠';
|
|
237
|
+
case 'poor': return '🔴';
|
|
238
|
+
default: return '⚪';
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Get recommendations based on benchmark results
|
|
243
|
+
*/
|
|
244
|
+
getRecommendations(comparisons) {
|
|
245
|
+
const recommendations = [];
|
|
246
|
+
for (const comparison of comparisons) {
|
|
247
|
+
if (comparison.status === 'poor' || comparison.status === 'below_average') {
|
|
248
|
+
recommendations.push(...this.getMetricRecommendations(comparison));
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return recommendations;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get specific recommendations for a metric
|
|
255
|
+
*/
|
|
256
|
+
getMetricRecommendations(comparison) {
|
|
257
|
+
const category = comparison.category.toLowerCase();
|
|
258
|
+
if (category.includes('response time')) {
|
|
259
|
+
return [
|
|
260
|
+
'Optimize database queries and add proper indexing',
|
|
261
|
+
'Implement or improve caching strategies',
|
|
262
|
+
'Consider using a CDN for static assets',
|
|
263
|
+
'Optimize WordPress plugins and themes'
|
|
264
|
+
];
|
|
265
|
+
}
|
|
266
|
+
if (category.includes('cache hit rate')) {
|
|
267
|
+
return [
|
|
268
|
+
'Review cache configuration and increase cache size',
|
|
269
|
+
'Implement better cache warming strategies',
|
|
270
|
+
'Optimize cache key design and expiration policies',
|
|
271
|
+
'Consider implementing multiple cache layers'
|
|
272
|
+
];
|
|
273
|
+
}
|
|
274
|
+
if (category.includes('error rate')) {
|
|
275
|
+
return [
|
|
276
|
+
'Review application logs and fix recurring errors',
|
|
277
|
+
'Implement better error handling and recovery',
|
|
278
|
+
'Monitor external service dependencies',
|
|
279
|
+
'Add health checks and monitoring alerts'
|
|
280
|
+
];
|
|
281
|
+
}
|
|
282
|
+
if (category.includes('memory usage')) {
|
|
283
|
+
return [
|
|
284
|
+
'Identify and fix memory leaks',
|
|
285
|
+
'Optimize data structures and algorithms',
|
|
286
|
+
'Implement proper garbage collection strategies',
|
|
287
|
+
'Consider increasing available memory resources'
|
|
288
|
+
];
|
|
289
|
+
}
|
|
290
|
+
if (category.includes('throughput')) {
|
|
291
|
+
return [
|
|
292
|
+
'Scale horizontally with load balancing',
|
|
293
|
+
'Optimize application performance and reduce overhead',
|
|
294
|
+
'Implement connection pooling and async processing',
|
|
295
|
+
'Consider upgrading hardware resources'
|
|
296
|
+
];
|
|
297
|
+
}
|
|
298
|
+
return ['Review and optimize this metric based on specific requirements'];
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
//# sourceMappingURL=BenchmarkAnalyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BenchmarkAnalyzer.js","sourceRoot":"","sources":["../../src/performance/BenchmarkAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Real-time Metrics Collector for WordPress MCP Server
|
|
3
|
+
* Integrates with existing client and cache systems
|
|
4
|
+
*/
|
|
5
|
+
import { PerformanceMonitor, PerformanceMetrics } from './PerformanceMonitor.js';
|
|
6
|
+
import type { CacheStats } from '../cache/CacheManager.js';
|
|
7
|
+
import type { ClientStats } from '../types/client.js';
|
|
8
|
+
export interface CollectorConfig {
|
|
9
|
+
enableRealTime: boolean;
|
|
10
|
+
collectInterval: number;
|
|
11
|
+
enableToolTracking: boolean;
|
|
12
|
+
enableRequestInterception: boolean;
|
|
13
|
+
enableCacheIntegration: boolean;
|
|
14
|
+
enableSystemMetrics: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface RequestMetadata {
|
|
17
|
+
toolName?: string;
|
|
18
|
+
siteId?: string;
|
|
19
|
+
endpoint: string;
|
|
20
|
+
method: string;
|
|
21
|
+
startTime: number;
|
|
22
|
+
fromCache: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface ToolExecutionContext {
|
|
25
|
+
toolName: string;
|
|
26
|
+
parameters: any;
|
|
27
|
+
startTime: number;
|
|
28
|
+
siteId: string | undefined;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Metrics Collector - Central hub for all performance data
|
|
32
|
+
*/
|
|
33
|
+
export declare class MetricsCollector {
|
|
34
|
+
private monitor;
|
|
35
|
+
private config;
|
|
36
|
+
private activeRequests;
|
|
37
|
+
private activeTools;
|
|
38
|
+
private clientInstances;
|
|
39
|
+
private cacheManagers;
|
|
40
|
+
constructor(monitor: PerformanceMonitor, config?: Partial<CollectorConfig>);
|
|
41
|
+
/**
|
|
42
|
+
* Register a WordPress client for monitoring
|
|
43
|
+
*/
|
|
44
|
+
registerClient(siteId: string, client: any): void;
|
|
45
|
+
/**
|
|
46
|
+
* Register a cache manager for monitoring
|
|
47
|
+
*/
|
|
48
|
+
registerCacheManager(siteId: string, cacheManager: any): void;
|
|
49
|
+
/**
|
|
50
|
+
* Start tracking a tool execution
|
|
51
|
+
*/
|
|
52
|
+
startToolExecution(toolName: string, parameters: any, siteId?: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* End tool execution and record metrics
|
|
55
|
+
*/
|
|
56
|
+
endToolExecution(executionId: string, success: boolean, error?: Error): void;
|
|
57
|
+
/**
|
|
58
|
+
* Record a raw request (bypass tool tracking)
|
|
59
|
+
*/
|
|
60
|
+
recordRawRequest(responseTime: number, success: boolean, endpoint: string, fromCache?: boolean): void;
|
|
61
|
+
/**
|
|
62
|
+
* Collect current metrics from all sources
|
|
63
|
+
*/
|
|
64
|
+
collectCurrentMetrics(): PerformanceMetrics;
|
|
65
|
+
/**
|
|
66
|
+
* Get aggregated cache statistics
|
|
67
|
+
*/
|
|
68
|
+
getAggregatedCacheStats(): CacheStats;
|
|
69
|
+
/**
|
|
70
|
+
* Get aggregated client statistics
|
|
71
|
+
*/
|
|
72
|
+
getAggregatedClientStats(): ClientStats;
|
|
73
|
+
/**
|
|
74
|
+
* Get performance summary for specific site
|
|
75
|
+
*/
|
|
76
|
+
getSiteMetrics(siteId: string): {
|
|
77
|
+
cache?: CacheStats;
|
|
78
|
+
client?: ClientStats;
|
|
79
|
+
isActive: boolean;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Generate performance comparison between sites
|
|
83
|
+
*/
|
|
84
|
+
compareSitePerformance(): {
|
|
85
|
+
sites: string[];
|
|
86
|
+
comparison: Record<string, {
|
|
87
|
+
responseTime: number;
|
|
88
|
+
cacheHitRate: number;
|
|
89
|
+
errorRate: number;
|
|
90
|
+
requestCount: number;
|
|
91
|
+
ranking: number;
|
|
92
|
+
}>;
|
|
93
|
+
bestPerforming: string;
|
|
94
|
+
worstPerforming: string;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Generate optimization suggestions
|
|
98
|
+
*/
|
|
99
|
+
generateOptimizationSuggestions(): {
|
|
100
|
+
critical: string[];
|
|
101
|
+
recommended: string[];
|
|
102
|
+
optional: string[];
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Export detailed performance report
|
|
106
|
+
*/
|
|
107
|
+
exportDetailedReport(): {
|
|
108
|
+
timestamp: string;
|
|
109
|
+
overview: PerformanceMetrics;
|
|
110
|
+
siteComparison: any;
|
|
111
|
+
aggregatedStats: {
|
|
112
|
+
cache: CacheStats;
|
|
113
|
+
client: ClientStats;
|
|
114
|
+
};
|
|
115
|
+
optimizations: any;
|
|
116
|
+
alerts: any[];
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Start real-time metric collection
|
|
120
|
+
*/
|
|
121
|
+
private startRealTimeCollection;
|
|
122
|
+
/**
|
|
123
|
+
* Update cache metrics in performance monitor
|
|
124
|
+
*/
|
|
125
|
+
private updateCacheMetrics;
|
|
126
|
+
/**
|
|
127
|
+
* Update client metrics in performance monitor
|
|
128
|
+
*/
|
|
129
|
+
private updateClientMetrics;
|
|
130
|
+
/**
|
|
131
|
+
* Intercept client requests for automatic tracking
|
|
132
|
+
*/
|
|
133
|
+
private interceptClientRequests;
|
|
134
|
+
/**
|
|
135
|
+
* Stop all monitoring and cleanup
|
|
136
|
+
*/
|
|
137
|
+
stop(): void;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=MetricsCollector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricsCollector.d.ts","sourceRoot":"","sources":["../../src/performance/MetricsCollector.ts"],"names":[],"mappings":"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"}
|