mcp-wordpress 1.2.2 → 1.3.0
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 +210 -182
- package/dist/cache/CacheInvalidation.d.ts +3 -3
- package/dist/cache/CacheInvalidation.d.ts.map +1 -1
- package/dist/cache/CacheInvalidation.js +119 -119
- package/dist/cache/CacheInvalidation.js.map +1 -1
- package/dist/cache/CacheManager.d.ts +5 -0
- package/dist/cache/CacheManager.d.ts.map +1 -1
- package/dist/cache/CacheManager.js +26 -16
- package/dist/cache/CacheManager.js.map +1 -1
- package/dist/cache/HttpCacheWrapper.d.ts +1 -1
- package/dist/cache/HttpCacheWrapper.d.ts.map +1 -1
- package/dist/cache/HttpCacheWrapper.js +29 -29
- package/dist/cache/HttpCacheWrapper.js.map +1 -1
- package/dist/cache/__tests__/CacheInvalidation.test.js +96 -94
- package/dist/cache/__tests__/CacheInvalidation.test.js.map +1 -1
- package/dist/cache/__tests__/CacheManager.test.js +113 -113
- package/dist/cache/__tests__/CacheManager.test.js.map +1 -1
- package/dist/cache/__tests__/CachedWordPressClient.test.js +102 -99
- package/dist/cache/__tests__/CachedWordPressClient.test.js.map +1 -1
- package/dist/cache/__tests__/HttpCacheWrapper.test.js +98 -95
- package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +1 -1
- package/dist/cache/index.d.ts +7 -7
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +4 -4
- package/dist/cache/index.js.map +1 -1
- package/dist/client/CachedWordPressClient.d.ts +4 -4
- package/dist/client/CachedWordPressClient.d.ts.map +1 -1
- package/dist/client/CachedWordPressClient.js +55 -51
- package/dist/client/CachedWordPressClient.js.map +1 -1
- package/dist/client/api.d.ts +10 -10
- package/dist/client/api.js +158 -158
- package/dist/client/api.js.map +1 -1
- package/dist/client/auth.d.ts +2 -2
- package/dist/client/auth.js +72 -72
- package/dist/client/managers/AuthenticationManager.d.ts +2 -2
- package/dist/client/managers/AuthenticationManager.js +46 -46
- package/dist/client/managers/BaseManager.d.ts +1 -1
- package/dist/client/managers/BaseManager.js +9 -9
- package/dist/client/managers/RequestManager.d.ts +5 -3
- package/dist/client/managers/RequestManager.d.ts.map +1 -1
- package/dist/client/managers/RequestManager.js +39 -19
- package/dist/client/managers/RequestManager.js.map +1 -1
- package/dist/client/managers/index.d.ts +3 -3
- package/dist/client/managers/index.js +3 -3
- package/dist/config/ConfigurationSchema.d.ts +2 -2
- package/dist/config/ConfigurationSchema.d.ts.map +1 -1
- package/dist/config/ConfigurationSchema.js +40 -40
- package/dist/config/ConfigurationSchema.js.map +1 -1
- package/dist/config/ServerConfiguration.d.ts +2 -2
- package/dist/config/ServerConfiguration.js +35 -35
- package/dist/config/ServerConfiguration.js.map +1 -1
- package/dist/docs/DocumentationGenerator.d.ts.map +1 -1
- package/dist/docs/DocumentationGenerator.js +296 -255
- package/dist/docs/DocumentationGenerator.js.map +1 -1
- package/dist/docs/MarkdownFormatter.d.ts +1 -1
- package/dist/docs/MarkdownFormatter.d.ts.map +1 -1
- package/dist/docs/MarkdownFormatter.js +60 -51
- package/dist/docs/MarkdownFormatter.js.map +1 -1
- package/dist/docs/index.d.ts +3 -3
- package/dist/docs/index.d.ts.map +1 -1
- package/dist/docs/index.js +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -16
- package/dist/index.js.map +1 -1
- package/dist/mcp-wordpress-1.3.0.tgz +0 -0
- package/dist/performance/MetricsCollector.d.ts +3 -3
- package/dist/performance/MetricsCollector.d.ts.map +1 -1
- package/dist/performance/MetricsCollector.js +33 -27
- package/dist/performance/MetricsCollector.js.map +1 -1
- package/dist/performance/PerformanceAnalytics.d.ts +12 -12
- package/dist/performance/PerformanceAnalytics.d.ts.map +1 -1
- package/dist/performance/PerformanceAnalytics.js +200 -154
- package/dist/performance/PerformanceAnalytics.js.map +1 -1
- package/dist/performance/PerformanceMonitor.d.ts +5 -5
- package/dist/performance/PerformanceMonitor.d.ts.map +1 -1
- package/dist/performance/PerformanceMonitor.js +53 -52
- package/dist/performance/PerformanceMonitor.js.map +1 -1
- package/dist/performance/index.d.ts +6 -6
- package/dist/performance/index.d.ts.map +1 -1
- package/dist/performance/index.js +3 -3
- package/dist/security/InputValidator.d.ts +1 -1
- package/dist/security/InputValidator.d.ts.map +1 -1
- package/dist/security/InputValidator.js +111 -88
- package/dist/security/InputValidator.js.map +1 -1
- package/dist/security/SecurityConfig.d.ts +5 -5
- package/dist/security/SecurityConfig.js +92 -92
- package/dist/security/SecurityConfig.js.map +1 -1
- package/dist/server/ConnectionTester.d.ts +1 -1
- package/dist/server/ConnectionTester.d.ts.map +1 -1
- package/dist/server/ConnectionTester.js +4 -4
- package/dist/server/ConnectionTester.js.map +1 -1
- package/dist/server/ToolRegistry.d.ts +2 -2
- package/dist/server/ToolRegistry.d.ts.map +1 -1
- package/dist/server/ToolRegistry.js +35 -32
- package/dist/server/ToolRegistry.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.js +2 -2
- package/dist/tools/BaseToolManager.js +5 -5
- package/dist/tools/auth.d.ts +2 -2
- package/dist/tools/auth.d.ts.map +1 -1
- package/dist/tools/auth.js +32 -31
- package/dist/tools/auth.js.map +1 -1
- package/dist/tools/cache.d.ts +1 -1
- package/dist/tools/cache.d.ts.map +1 -1
- package/dist/tools/cache.js +71 -71
- package/dist/tools/cache.js.map +1 -1
- package/dist/tools/comments.d.ts +2 -2
- package/dist/tools/comments.d.ts.map +1 -1
- package/dist/tools/comments.js +79 -79
- package/dist/tools/comments.js.map +1 -1
- package/dist/tools/index.d.ts +10 -10
- package/dist/tools/index.js +10 -10
- package/dist/tools/media.d.ts +2 -2
- package/dist/tools/media.js +80 -80
- package/dist/tools/pages.d.ts +2 -2
- package/dist/tools/pages.d.ts.map +1 -1
- package/dist/tools/pages.js +75 -75
- package/dist/tools/pages.js.map +1 -1
- package/dist/tools/performance.d.ts +1 -1
- package/dist/tools/performance.d.ts.map +1 -1
- package/dist/tools/performance.js +311 -287
- package/dist/tools/performance.js.map +1 -1
- package/dist/tools/posts.d.ts +2 -2
- package/dist/tools/posts.d.ts.map +1 -1
- package/dist/tools/posts.js +94 -94
- package/dist/tools/posts.js.map +1 -1
- package/dist/tools/site.d.ts +2 -2
- package/dist/tools/site.d.ts.map +1 -1
- package/dist/tools/site.js +60 -60
- package/dist/tools/site.js.map +1 -1
- package/dist/tools/taxonomies.d.ts +2 -2
- package/dist/tools/taxonomies.js +89 -89
- package/dist/tools/users.d.ts +2 -2
- package/dist/tools/users.js +68 -68
- package/dist/tools/users.js.map +1 -1
- package/dist/types/client.d.ts +13 -13
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/client.js +12 -12
- package/dist/types/client.js.map +1 -1
- package/dist/types/index.d.ts +19 -19
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -3
- package/dist/types/mcp.d.ts +7 -7
- package/dist/types/wordpress.d.ts +21 -21
- package/dist/types/wordpress.d.ts.map +1 -1
- package/dist/utils/debug.d.ts +2 -2
- package/dist/utils/debug.js +28 -28
- package/dist/utils/error.d.ts.map +1 -1
- package/dist/utils/error.js +13 -13
- package/dist/utils/error.js.map +1 -1
- package/dist/utils/toolWrapper.d.ts.map +1 -1
- package/dist/utils/toolWrapper.js +5 -5
- package/dist/utils/toolWrapper.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +41 -31
- package/dist/utils/validation.js.map +1 -1
- package/docs/CACHING.md +36 -2
- package/docs/DOCKER.md +24 -18
- package/docs/PERFORMANCE_MONITORING.md +49 -1
- package/docs/SECURITY_TESTING.md +30 -1
- package/docs/api/README.md +9 -1
- package/docs/api/summary.json +1 -1
- package/docs/contract-testing.md +24 -3
- package/docs/developer/GITHUB_ACTIONS_SETUP.md +8 -2
- package/docs/developer/MAINTENANCE.md +29 -3
- package/docs/developer/MIGRATION_GUIDE.md +13 -1
- package/docs/developer/NPM_AUTH_SETUP.md +13 -2
- package/docs/developer/REFACTORING.md +31 -1
- package/docs/releases/COMMUNITY_ANNOUNCEMENT_v1.1.2.md +18 -7
- package/docs/releases/RELEASE_NOTES_v1.1.2.md +31 -5
- package/docs/user-guides/DOCKER_SETUP.md +264 -0
- package/docs/user-guides/DTX_SETUP.md +327 -0
- package/docs/user-guides/NPM_SETUP.md +109 -0
- package/docs/user-guides/NPX_SETUP.md +281 -0
- package/docs/wordpress-rest-api-authentication-troubleshooting.md +13 -2
- package/package.json +27 -8
- package/src/cache/CacheInvalidation.ts +140 -132
- package/src/cache/CacheManager.ts +40 -29
- package/src/cache/HttpCacheWrapper.ts +105 -68
- package/src/cache/__tests__/CacheInvalidation.test.ts +123 -118
- package/src/cache/__tests__/CacheManager.test.ts +156 -152
- package/src/cache/__tests__/CachedWordPressClient.test.ts +131 -116
- package/src/cache/__tests__/HttpCacheWrapper.test.ts +118 -115
- package/src/cache/index.ts +13 -13
- package/src/client/CachedWordPressClient.ts +90 -80
- package/src/client/api.ts +205 -205
- package/src/client/auth.ts +80 -80
- package/src/client/managers/AuthenticationManager.ts +61 -61
- package/src/client/managers/BaseManager.ts +11 -11
- package/src/client/managers/RequestManager.ts +79 -47
- package/src/client/managers/index.ts +3 -3
- package/src/config/ConfigurationSchema.ts +44 -44
- package/src/config/ServerConfiguration.ts +39 -39
- package/src/docs/DocumentationGenerator.ts +402 -295
- package/src/docs/MarkdownFormatter.ts +94 -69
- package/src/docs/index.ts +4 -4
- package/src/index.ts +24 -21
- package/src/performance/MetricsCollector.ts +90 -58
- package/src/performance/PerformanceAnalytics.ts +386 -262
- package/src/performance/PerformanceMonitor.ts +152 -118
- package/src/performance/index.ts +9 -9
- package/src/security/InputValidator.ts +148 -91
- package/src/security/SecurityConfig.ts +94 -94
- package/src/server/ConnectionTester.ts +21 -15
- package/src/server/ToolRegistry.ts +64 -51
- package/src/server.ts +2 -2
- package/src/tools/BaseToolManager.ts +6 -6
- package/src/tools/auth.ts +42 -37
- package/src/tools/cache.ts +85 -81
- package/src/tools/comments.ts +93 -91
- package/src/tools/index.ts +10 -10
- package/src/tools/media.ts +89 -89
- package/src/tools/pages.ts +89 -87
- package/src/tools/performance.ts +443 -352
- package/src/tools/posts.ts +109 -107
- package/src/tools/site.ts +86 -77
- package/src/tools/taxonomies.ts +102 -102
- package/src/tools/users.ts +77 -77
- package/src/types/client.ts +157 -60
- package/src/types/index.ts +49 -27
- package/src/types/mcp.ts +15 -15
- package/src/types/wordpress.ts +57 -29
- package/src/utils/debug.ts +37 -37
- package/src/utils/error.ts +47 -25
- package/src/utils/toolWrapper.ts +12 -8
- package/src/utils/validation.ts +116 -65
- package/dist/client/WordPressClient.d.ts +0 -81
- package/dist/client/WordPressClient.d.ts.map +0 -1
- package/dist/client/WordPressClient.js +0 -354
- package/dist/client/WordPressClient.js.map +0 -1
- package/dist/performance/AnomalyDetector.d.ts +0 -63
- package/dist/performance/AnomalyDetector.d.ts.map +0 -1
- package/dist/performance/AnomalyDetector.js +0 -222
- package/dist/performance/AnomalyDetector.js.map +0 -1
- package/dist/performance/BenchmarkAnalyzer.d.ts +0 -67
- package/dist/performance/BenchmarkAnalyzer.d.ts.map +0 -1
- package/dist/performance/BenchmarkAnalyzer.js +0 -301
- package/dist/performance/BenchmarkAnalyzer.js.map +0 -1
- package/dist/performance/TrendAnalyzer.d.ts +0 -69
- package/dist/performance/TrendAnalyzer.d.ts.map +0 -1
- package/dist/performance/TrendAnalyzer.js +0 -203
- package/dist/performance/TrendAnalyzer.js.map +0 -1
- package/dist/tools/BaseToolClass.d.ts +0 -76
- package/dist/tools/BaseToolClass.d.ts.map +0 -1
- package/dist/tools/BaseToolClass.js +0 -104
- package/dist/tools/BaseToolClass.js.map +0 -1
- package/dist/tools/base.d.ts +0 -37
- package/dist/tools/base.d.ts.map +0 -1
- package/dist/tools/base.js +0 -60
- package/dist/tools/base.js.map +0 -1
- package/docs/user-guides/CLAUDE_DESKTOP_SETUP.md +0 -187
|
@@ -1,354 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Refactored WordPress API Client
|
|
3
|
-
* Uses composition pattern with specialized managers
|
|
4
|
-
*/
|
|
5
|
-
import { AuthenticationManager } from "./managers/AuthenticationManager.js";
|
|
6
|
-
import { RequestManager } from "./managers/RequestManager.js";
|
|
7
|
-
import { debug } from "../utils/debug.js";
|
|
8
|
-
export class WordPressClient {
|
|
9
|
-
authManager;
|
|
10
|
-
requestManager;
|
|
11
|
-
clientConfig;
|
|
12
|
-
constructor(options = {}) {
|
|
13
|
-
// Build configuration
|
|
14
|
-
this.clientConfig = this.buildConfig(options);
|
|
15
|
-
// Initialize managers
|
|
16
|
-
this.authManager = new AuthenticationManager(this.clientConfig);
|
|
17
|
-
this.requestManager = new RequestManager(this.clientConfig);
|
|
18
|
-
// Validate configuration
|
|
19
|
-
this.validateConfig();
|
|
20
|
-
debug.log("WordPress API Client initialized for:", this.clientConfig.baseUrl);
|
|
21
|
-
}
|
|
22
|
-
// Configuration Management
|
|
23
|
-
get config() {
|
|
24
|
-
return { ...this.clientConfig };
|
|
25
|
-
}
|
|
26
|
-
get isAuthenticated() {
|
|
27
|
-
return this.authManager.isAuthenticated();
|
|
28
|
-
}
|
|
29
|
-
get stats() {
|
|
30
|
-
return this.requestManager.getStats();
|
|
31
|
-
}
|
|
32
|
-
// Core Methods required by interface
|
|
33
|
-
async initialize() {
|
|
34
|
-
// Initialization logic if needed
|
|
35
|
-
debug.log("WordPress client initialized");
|
|
36
|
-
}
|
|
37
|
-
async authenticate() {
|
|
38
|
-
return this.authManager.testAuthentication();
|
|
39
|
-
}
|
|
40
|
-
async disconnect() {
|
|
41
|
-
debug.log("WordPress client disconnected");
|
|
42
|
-
}
|
|
43
|
-
// Generic HTTP Methods
|
|
44
|
-
async request(method, endpoint, data, options = {}) {
|
|
45
|
-
return this.requestManager.request(method, endpoint, data, options);
|
|
46
|
-
}
|
|
47
|
-
async get(endpoint, options = {}) {
|
|
48
|
-
return this.requestManager.request('GET', endpoint, undefined, options);
|
|
49
|
-
}
|
|
50
|
-
async post(endpoint, data, options = {}) {
|
|
51
|
-
return this.requestManager.request('POST', endpoint, data, options);
|
|
52
|
-
}
|
|
53
|
-
async put(endpoint, data, options = {}) {
|
|
54
|
-
return this.requestManager.request('PUT', endpoint, data, options);
|
|
55
|
-
}
|
|
56
|
-
async patch(endpoint, data, options = {}) {
|
|
57
|
-
return this.requestManager.request('PATCH', endpoint, data, options);
|
|
58
|
-
}
|
|
59
|
-
async delete(endpoint, options = {}) {
|
|
60
|
-
return this.requestManager.request('DELETE', endpoint, undefined, options);
|
|
61
|
-
}
|
|
62
|
-
// Authentication Methods
|
|
63
|
-
async testAuthentication() {
|
|
64
|
-
try {
|
|
65
|
-
const user = await this.getCurrentUser();
|
|
66
|
-
return { success: true, user };
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
return { success: false };
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
// Generic HTTP Methods with Authentication
|
|
73
|
-
async authenticatedRequest(method, endpoint, data) {
|
|
74
|
-
const authHeaders = await this.authManager.getAuthHeaders();
|
|
75
|
-
return this.requestManager.request(method, endpoint, data, {
|
|
76
|
-
headers: authHeaders
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
// Posts API
|
|
80
|
-
async getPosts(params) {
|
|
81
|
-
const queryString = params ? "?" + new URLSearchParams(params).toString() : "";
|
|
82
|
-
return this.authenticatedRequest('GET', `posts${queryString}`);
|
|
83
|
-
}
|
|
84
|
-
async getPost(id) {
|
|
85
|
-
return this.authenticatedRequest('GET', `posts/${id}`);
|
|
86
|
-
}
|
|
87
|
-
async createPost(data) {
|
|
88
|
-
return this.authenticatedRequest('POST', 'posts', data);
|
|
89
|
-
}
|
|
90
|
-
async updatePost(data) {
|
|
91
|
-
const { id, ...updateData } = data;
|
|
92
|
-
return this.authenticatedRequest('PUT', `posts/${id}`, updateData);
|
|
93
|
-
}
|
|
94
|
-
async deletePost(id, force = false) {
|
|
95
|
-
return this.authenticatedRequest('DELETE', `posts/${id}?force=${force}`);
|
|
96
|
-
}
|
|
97
|
-
async getPostRevisions(id) {
|
|
98
|
-
return this.authenticatedRequest('GET', `posts/${id}/revisions`);
|
|
99
|
-
}
|
|
100
|
-
// Pages API
|
|
101
|
-
async getPages(params) {
|
|
102
|
-
const queryString = params ? "?" + new URLSearchParams(params).toString() : "";
|
|
103
|
-
return this.authenticatedRequest('GET', `pages${queryString}`);
|
|
104
|
-
}
|
|
105
|
-
async getPage(id) {
|
|
106
|
-
return this.authenticatedRequest('GET', `pages/${id}`);
|
|
107
|
-
}
|
|
108
|
-
async createPage(data) {
|
|
109
|
-
return this.authenticatedRequest('POST', 'pages', data);
|
|
110
|
-
}
|
|
111
|
-
async updatePage(data) {
|
|
112
|
-
const { id, ...updateData } = data;
|
|
113
|
-
return this.authenticatedRequest('PUT', `pages/${id}`, updateData);
|
|
114
|
-
}
|
|
115
|
-
async deletePage(id, force = false) {
|
|
116
|
-
return this.authenticatedRequest('DELETE', `pages/${id}?force=${force}`);
|
|
117
|
-
}
|
|
118
|
-
async getPageRevisions(id) {
|
|
119
|
-
return this.authenticatedRequest('GET', `pages/${id}/revisions`);
|
|
120
|
-
}
|
|
121
|
-
// Media API
|
|
122
|
-
async getMedia(params) {
|
|
123
|
-
const queryString = params ? "?" + new URLSearchParams(params).toString() : "";
|
|
124
|
-
return this.authenticatedRequest('GET', `media${queryString}`);
|
|
125
|
-
}
|
|
126
|
-
async getMediaItem(id, context = 'view') {
|
|
127
|
-
return this.authenticatedRequest('GET', `media/${id}?context=${context}`);
|
|
128
|
-
}
|
|
129
|
-
async uploadMedia(data) {
|
|
130
|
-
return this.authenticatedRequest('POST', 'media', data);
|
|
131
|
-
}
|
|
132
|
-
async uploadFile(fileData, filename, mimeType, meta = {}, options = {}) {
|
|
133
|
-
const data = { ...meta, file: fileData, filename, mime_type: mimeType };
|
|
134
|
-
return this.authenticatedRequest('POST', 'media', data);
|
|
135
|
-
}
|
|
136
|
-
async updateMedia(data) {
|
|
137
|
-
const { id, ...updateData } = data;
|
|
138
|
-
return this.authenticatedRequest('PUT', `media/${id}`, updateData);
|
|
139
|
-
}
|
|
140
|
-
async deleteMedia(id, force = false) {
|
|
141
|
-
return this.authenticatedRequest('DELETE', `media/${id}?force=${force}`);
|
|
142
|
-
}
|
|
143
|
-
// Users API
|
|
144
|
-
async getUsers(params) {
|
|
145
|
-
const queryString = params ? "?" + new URLSearchParams(params).toString() : "";
|
|
146
|
-
return this.authenticatedRequest('GET', `users${queryString}`);
|
|
147
|
-
}
|
|
148
|
-
async getUser(id) {
|
|
149
|
-
return this.authenticatedRequest('GET', `users/${id}`);
|
|
150
|
-
}
|
|
151
|
-
async getCurrentUser() {
|
|
152
|
-
return this.authenticatedRequest('GET', 'users/me');
|
|
153
|
-
}
|
|
154
|
-
async createUser(data) {
|
|
155
|
-
return this.authenticatedRequest('POST', 'users', data);
|
|
156
|
-
}
|
|
157
|
-
async updateUser(data) {
|
|
158
|
-
const { id, ...updateData } = data;
|
|
159
|
-
return this.authenticatedRequest('PUT', `users/${id}`, updateData);
|
|
160
|
-
}
|
|
161
|
-
async deleteUser(id, reassign) {
|
|
162
|
-
const queryString = reassign ? `?reassign=${reassign}&force=true` : "?force=true";
|
|
163
|
-
return this.authenticatedRequest('DELETE', `users/${id}${queryString}`);
|
|
164
|
-
}
|
|
165
|
-
// Comments API
|
|
166
|
-
async getComments(params) {
|
|
167
|
-
const queryString = params ? "?" + new URLSearchParams(params).toString() : "";
|
|
168
|
-
return this.authenticatedRequest('GET', `comments${queryString}`);
|
|
169
|
-
}
|
|
170
|
-
async getComment(id, context = 'view') {
|
|
171
|
-
return this.authenticatedRequest('GET', `comments/${id}?context=${context}`);
|
|
172
|
-
}
|
|
173
|
-
async createComment(data) {
|
|
174
|
-
return this.authenticatedRequest('POST', 'comments', data);
|
|
175
|
-
}
|
|
176
|
-
async updateComment(data) {
|
|
177
|
-
const { id, ...updateData } = data;
|
|
178
|
-
return this.authenticatedRequest('PUT', `comments/${id}`, updateData);
|
|
179
|
-
}
|
|
180
|
-
async deleteComment(id, force = false) {
|
|
181
|
-
return this.authenticatedRequest('DELETE', `comments/${id}?force=${force}`);
|
|
182
|
-
}
|
|
183
|
-
async approveComment(id) {
|
|
184
|
-
return this.authenticatedRequest('POST', `comments/${id}`, { status: 'approved' });
|
|
185
|
-
}
|
|
186
|
-
async rejectComment(id) {
|
|
187
|
-
return this.authenticatedRequest('POST', `comments/${id}`, { status: 'hold' });
|
|
188
|
-
}
|
|
189
|
-
async spamComment(id) {
|
|
190
|
-
return this.authenticatedRequest('POST', `comments/${id}`, { status: 'spam' });
|
|
191
|
-
}
|
|
192
|
-
// Taxonomies - Categories
|
|
193
|
-
async getCategories(params = {}) {
|
|
194
|
-
const queryString = params ? "?" + new URLSearchParams(params).toString() : "";
|
|
195
|
-
return this.authenticatedRequest('GET', `categories${queryString}`);
|
|
196
|
-
}
|
|
197
|
-
async getCategory(id) {
|
|
198
|
-
return this.authenticatedRequest('GET', `categories/${id}`);
|
|
199
|
-
}
|
|
200
|
-
async createCategory(data) {
|
|
201
|
-
return this.authenticatedRequest('POST', 'categories', data);
|
|
202
|
-
}
|
|
203
|
-
async updateCategory(data) {
|
|
204
|
-
const { id, ...updateData } = data;
|
|
205
|
-
return this.authenticatedRequest('PUT', `categories/${id}`, updateData);
|
|
206
|
-
}
|
|
207
|
-
async deleteCategory(id, force = false) {
|
|
208
|
-
return this.authenticatedRequest('DELETE', `categories/${id}?force=${force}`);
|
|
209
|
-
}
|
|
210
|
-
// Taxonomies - Tags
|
|
211
|
-
async getTags(params = {}) {
|
|
212
|
-
const queryString = params ? "?" + new URLSearchParams(params).toString() : "";
|
|
213
|
-
return this.authenticatedRequest('GET', `tags${queryString}`);
|
|
214
|
-
}
|
|
215
|
-
async getTag(id) {
|
|
216
|
-
return this.authenticatedRequest('GET', `tags/${id}`);
|
|
217
|
-
}
|
|
218
|
-
async createTag(data) {
|
|
219
|
-
return this.authenticatedRequest('POST', 'tags', data);
|
|
220
|
-
}
|
|
221
|
-
async updateTag(data) {
|
|
222
|
-
const { id, ...updateData } = data;
|
|
223
|
-
return this.authenticatedRequest('PUT', `tags/${id}`, updateData);
|
|
224
|
-
}
|
|
225
|
-
async deleteTag(id, force = false) {
|
|
226
|
-
return this.authenticatedRequest('DELETE', `tags/${id}?force=${force}`);
|
|
227
|
-
}
|
|
228
|
-
async updateMedia(data) {
|
|
229
|
-
const { id, ...updateData } = data;
|
|
230
|
-
return this.authenticatedRequest('PUT', `media/${id}`, updateData);
|
|
231
|
-
}
|
|
232
|
-
async deleteMedia(id, force = false) {
|
|
233
|
-
return this.authenticatedRequest('DELETE', `media/${id}?force=${force}`);
|
|
234
|
-
}
|
|
235
|
-
// Upload methods would need special handling for multipart/form-data
|
|
236
|
-
async uploadMedia(data) {
|
|
237
|
-
// This would need special implementation for file uploads
|
|
238
|
-
throw new Error("Upload methods need special multipart handling - not implemented in refactored version yet");
|
|
239
|
-
}
|
|
240
|
-
// Comments API
|
|
241
|
-
async getComments(params) {
|
|
242
|
-
const queryString = params ? "?" + new URLSearchParams(params).toString() : "";
|
|
243
|
-
return this.authenticatedRequest('GET', `comments${queryString}`);
|
|
244
|
-
}
|
|
245
|
-
async getComment(id) {
|
|
246
|
-
return this.authenticatedRequest('GET', `comments/${id}`);
|
|
247
|
-
}
|
|
248
|
-
async createComment(data) {
|
|
249
|
-
return this.authenticatedRequest('POST', 'comments', data);
|
|
250
|
-
}
|
|
251
|
-
async updateComment(data) {
|
|
252
|
-
const { id, ...updateData } = data;
|
|
253
|
-
return this.authenticatedRequest('PUT', `comments/${id}`, updateData);
|
|
254
|
-
}
|
|
255
|
-
async deleteComment(id, force = false) {
|
|
256
|
-
return this.authenticatedRequest('DELETE', `comments/${id}?force=${force}`);
|
|
257
|
-
}
|
|
258
|
-
// Categories API
|
|
259
|
-
async getCategories(params) {
|
|
260
|
-
const queryString = params ? "?" + new URLSearchParams(params).toString() : "";
|
|
261
|
-
return this.authenticatedRequest('GET', `categories${queryString}`);
|
|
262
|
-
}
|
|
263
|
-
async getCategory(id) {
|
|
264
|
-
return this.authenticatedRequest('GET', `categories/${id}`);
|
|
265
|
-
}
|
|
266
|
-
async createCategory(data) {
|
|
267
|
-
return this.authenticatedRequest('POST', 'categories', data);
|
|
268
|
-
}
|
|
269
|
-
async updateCategory(data) {
|
|
270
|
-
const { id, ...updateData } = data;
|
|
271
|
-
return this.authenticatedRequest('PUT', `categories/${id}`, updateData);
|
|
272
|
-
}
|
|
273
|
-
async deleteCategory(id, force = false) {
|
|
274
|
-
return this.authenticatedRequest('DELETE', `categories/${id}?force=${force}`);
|
|
275
|
-
}
|
|
276
|
-
// Tags API
|
|
277
|
-
async getTags(params) {
|
|
278
|
-
const queryString = params ? "?" + new URLSearchParams(params).toString() : "";
|
|
279
|
-
return this.authenticatedRequest('GET', `tags${queryString}`);
|
|
280
|
-
}
|
|
281
|
-
async getTag(id) {
|
|
282
|
-
return this.authenticatedRequest('GET', `tags/${id}`);
|
|
283
|
-
}
|
|
284
|
-
async createTag(data) {
|
|
285
|
-
return this.authenticatedRequest('POST', 'tags', data);
|
|
286
|
-
}
|
|
287
|
-
async updateTag(data) {
|
|
288
|
-
const { id, ...updateData } = data;
|
|
289
|
-
return this.authenticatedRequest('PUT', `tags/${id}`, updateData);
|
|
290
|
-
}
|
|
291
|
-
async deleteTag(id, force = false) {
|
|
292
|
-
return this.authenticatedRequest('DELETE', `tags/${id}?force=${force}`);
|
|
293
|
-
}
|
|
294
|
-
// Site Management
|
|
295
|
-
async getSiteSettings() {
|
|
296
|
-
return this.authenticatedRequest('GET', 'settings');
|
|
297
|
-
}
|
|
298
|
-
async updateSiteSettings(settings) {
|
|
299
|
-
return this.authenticatedRequest('POST', 'settings', settings);
|
|
300
|
-
}
|
|
301
|
-
async getSiteInfo() {
|
|
302
|
-
return this.requestManager.request('GET', '/');
|
|
303
|
-
}
|
|
304
|
-
// Application Passwords
|
|
305
|
-
async getApplicationPasswords(userId) {
|
|
306
|
-
return this.authenticatedRequest('GET', `users/${userId}/application-passwords`);
|
|
307
|
-
}
|
|
308
|
-
async createApplicationPassword(userId, name, appId) {
|
|
309
|
-
const data = { name, ...(appId && { app_id: appId }) };
|
|
310
|
-
return this.authenticatedRequest('POST', `users/${userId}/application-passwords`, data);
|
|
311
|
-
}
|
|
312
|
-
async deleteApplicationPassword(userId, uuid) {
|
|
313
|
-
return this.authenticatedRequest('DELETE', `users/${userId}/application-passwords/${uuid}`);
|
|
314
|
-
}
|
|
315
|
-
// Search
|
|
316
|
-
async search(query, types, subtype) {
|
|
317
|
-
const params = { search: query };
|
|
318
|
-
if (types)
|
|
319
|
-
params.type = types.join(',');
|
|
320
|
-
if (subtype)
|
|
321
|
-
params.subtype = subtype;
|
|
322
|
-
const queryString = "?" + new URLSearchParams(params).toString();
|
|
323
|
-
return this.authenticatedRequest('GET', `search${queryString}`);
|
|
324
|
-
}
|
|
325
|
-
// Utility Methods
|
|
326
|
-
async ping() {
|
|
327
|
-
try {
|
|
328
|
-
await this.requestManager.request('GET', '/');
|
|
329
|
-
return true;
|
|
330
|
-
}
|
|
331
|
-
catch {
|
|
332
|
-
return false;
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
// Private Methods
|
|
336
|
-
buildConfig(options) {
|
|
337
|
-
return {
|
|
338
|
-
baseUrl: options.baseUrl || process.env.WORDPRESS_SITE_URL || "",
|
|
339
|
-
auth: options.auth || AuthenticationManager.getAuthFromEnv(),
|
|
340
|
-
timeout: options.timeout || parseInt(process.env.WORDPRESS_TIMEOUT || "30000"),
|
|
341
|
-
maxRetries: options.maxRetries || parseInt(process.env.WORDPRESS_MAX_RETRIES || "3"),
|
|
342
|
-
};
|
|
343
|
-
}
|
|
344
|
-
validateConfig() {
|
|
345
|
-
if (!this.clientConfig.baseUrl) {
|
|
346
|
-
throw new Error("WordPress site URL is required");
|
|
347
|
-
}
|
|
348
|
-
if (!this.clientConfig.baseUrl.startsWith("http")) {
|
|
349
|
-
throw new Error("WordPress site URL must include protocol (http:// or https://)");
|
|
350
|
-
}
|
|
351
|
-
this.authManager.validateAuthConfig();
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
//# sourceMappingURL=WordPressClient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WordPressClient.js","sourceRoot":"","sources":["../../src/client/WordPressClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Anomaly Detection for Performance Metrics
|
|
3
|
-
* Detects unusual patterns and performance deviations
|
|
4
|
-
*/
|
|
5
|
-
import { PerformanceMetrics } from './PerformanceMonitor.js';
|
|
6
|
-
export interface PerformanceAnomaly {
|
|
7
|
-
timestamp: number;
|
|
8
|
-
metric: string;
|
|
9
|
-
expectedValue: number;
|
|
10
|
-
actualValue: number;
|
|
11
|
-
deviation: number;
|
|
12
|
-
severity: 'minor' | 'moderate' | 'major' | 'critical';
|
|
13
|
-
possibleCauses: string[];
|
|
14
|
-
}
|
|
15
|
-
export interface AnomalyDetectionConfig {
|
|
16
|
-
sensitivityLevel: 'low' | 'medium' | 'high';
|
|
17
|
-
lookbackPeriod: number;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Detects performance anomalies using statistical analysis
|
|
21
|
-
*/
|
|
22
|
-
export declare class AnomalyDetector {
|
|
23
|
-
private config;
|
|
24
|
-
private detectedAnomalies;
|
|
25
|
-
constructor(config: AnomalyDetectionConfig);
|
|
26
|
-
/**
|
|
27
|
-
* Detect anomalies in current metrics compared to historical data
|
|
28
|
-
*/
|
|
29
|
-
detectAnomalies(currentMetrics: PerformanceMetrics, historicalData: PerformanceMetrics[]): PerformanceAnomaly[];
|
|
30
|
-
/**
|
|
31
|
-
* Check a specific metric for anomalies
|
|
32
|
-
*/
|
|
33
|
-
private checkMetricAnomaly;
|
|
34
|
-
/**
|
|
35
|
-
* Extract metric value from performance metrics object
|
|
36
|
-
*/
|
|
37
|
-
private extractMetricValue;
|
|
38
|
-
/**
|
|
39
|
-
* Calculate statistical measures for historical data
|
|
40
|
-
*/
|
|
41
|
-
private calculateStatistics;
|
|
42
|
-
/**
|
|
43
|
-
* Get anomaly detection threshold based on sensitivity
|
|
44
|
-
*/
|
|
45
|
-
private getAnomalyThreshold;
|
|
46
|
-
/**
|
|
47
|
-
* Determine severity based on deviation and z-score
|
|
48
|
-
*/
|
|
49
|
-
private determineSeverity;
|
|
50
|
-
/**
|
|
51
|
-
* Generate possible causes for anomalies
|
|
52
|
-
*/
|
|
53
|
-
private generatePossibleCauses;
|
|
54
|
-
/**
|
|
55
|
-
* Get all detected anomalies
|
|
56
|
-
*/
|
|
57
|
-
getDetectedAnomalies(): PerformanceAnomaly[];
|
|
58
|
-
/**
|
|
59
|
-
* Clear old anomalies beyond retention period
|
|
60
|
-
*/
|
|
61
|
-
cleanupOldAnomalies(retentionPeriod: number): void;
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=AnomalyDetector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AnomalyDetector.d.ts","sourceRoot":"","sources":["../../src/performance/AnomalyDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;IACtD,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5C,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,iBAAiB,CAA4B;gBAEzC,MAAM,EAAE,sBAAsB;IAI1C;;OAEG;IACI,eAAe,CACpB,cAAc,EAAE,kBAAkB,EAClC,cAAc,EAAE,kBAAkB,EAAE,GACnC,kBAAkB,EAAE;IA2BvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmC1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqF9B;;OAEG;IACI,oBAAoB,IAAI,kBAAkB,EAAE;IAInD;;OAEG;IACI,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI;CAM1D"}
|
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Anomaly Detection for Performance Metrics
|
|
3
|
-
* Detects unusual patterns and performance deviations
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Detects performance anomalies using statistical analysis
|
|
7
|
-
*/
|
|
8
|
-
export class AnomalyDetector {
|
|
9
|
-
config;
|
|
10
|
-
detectedAnomalies = [];
|
|
11
|
-
constructor(config) {
|
|
12
|
-
this.config = config;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Detect anomalies in current metrics compared to historical data
|
|
16
|
-
*/
|
|
17
|
-
detectAnomalies(currentMetrics, historicalData) {
|
|
18
|
-
const anomalies = [];
|
|
19
|
-
if (historicalData.length < 5) {
|
|
20
|
-
return anomalies; // Need sufficient historical data
|
|
21
|
-
}
|
|
22
|
-
// Check each metric for anomalies
|
|
23
|
-
const metricsToCheck = [
|
|
24
|
-
'responseTime',
|
|
25
|
-
'memoryUsage',
|
|
26
|
-
'cacheHitRate',
|
|
27
|
-
'errorRate',
|
|
28
|
-
'throughput'
|
|
29
|
-
];
|
|
30
|
-
for (const metricName of metricsToCheck) {
|
|
31
|
-
const anomaly = this.checkMetricAnomaly(metricName, currentMetrics, historicalData);
|
|
32
|
-
if (anomaly) {
|
|
33
|
-
anomalies.push(anomaly);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
this.detectedAnomalies.push(...anomalies);
|
|
37
|
-
return anomalies;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Check a specific metric for anomalies
|
|
41
|
-
*/
|
|
42
|
-
checkMetricAnomaly(metricName, current, historical) {
|
|
43
|
-
const currentValue = this.extractMetricValue(metricName, current);
|
|
44
|
-
if (currentValue === null)
|
|
45
|
-
return null;
|
|
46
|
-
const historicalValues = historical
|
|
47
|
-
.map(h => this.extractMetricValue(metricName, h))
|
|
48
|
-
.filter(v => v !== null);
|
|
49
|
-
if (historicalValues.length < 3)
|
|
50
|
-
return null;
|
|
51
|
-
const { mean, stdDev } = this.calculateStatistics(historicalValues);
|
|
52
|
-
const zScore = Math.abs((currentValue - mean) / stdDev);
|
|
53
|
-
// Determine if this is an anomaly based on sensitivity
|
|
54
|
-
const threshold = this.getAnomalyThreshold();
|
|
55
|
-
if (zScore < threshold)
|
|
56
|
-
return null;
|
|
57
|
-
const deviation = Math.abs((currentValue - mean) / mean) * 100;
|
|
58
|
-
const severity = this.determineSeverity(deviation, zScore);
|
|
59
|
-
return {
|
|
60
|
-
timestamp: Date.now(),
|
|
61
|
-
metric: metricName,
|
|
62
|
-
expectedValue: mean,
|
|
63
|
-
actualValue: currentValue,
|
|
64
|
-
deviation,
|
|
65
|
-
severity,
|
|
66
|
-
possibleCauses: this.generatePossibleCauses(metricName, currentValue > mean)
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Extract metric value from performance metrics object
|
|
71
|
-
*/
|
|
72
|
-
extractMetricValue(metricName, metrics) {
|
|
73
|
-
switch (metricName) {
|
|
74
|
-
case 'responseTime':
|
|
75
|
-
return metrics.requests?.averageResponseTime || null;
|
|
76
|
-
case 'memoryUsage':
|
|
77
|
-
return metrics.system?.memoryUsage || null;
|
|
78
|
-
case 'cacheHitRate':
|
|
79
|
-
return metrics.cache?.hitRate || null;
|
|
80
|
-
case 'errorRate':
|
|
81
|
-
return metrics.requests?.total > 0
|
|
82
|
-
? metrics.requests.failed / metrics.requests.total
|
|
83
|
-
: null;
|
|
84
|
-
case 'throughput':
|
|
85
|
-
return metrics.requests?.requestsPerSecond || null;
|
|
86
|
-
default:
|
|
87
|
-
return null;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Calculate statistical measures for historical data
|
|
92
|
-
*/
|
|
93
|
-
calculateStatistics(values) {
|
|
94
|
-
const mean = values.reduce((sum, val) => sum + val, 0) / values.length;
|
|
95
|
-
const variance = values.reduce((sum, val) => sum + Math.pow(val - mean, 2), 0) / values.length;
|
|
96
|
-
const stdDev = Math.sqrt(variance);
|
|
97
|
-
return { mean, stdDev };
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Get anomaly detection threshold based on sensitivity
|
|
101
|
-
*/
|
|
102
|
-
getAnomalyThreshold() {
|
|
103
|
-
switch (this.config.sensitivityLevel) {
|
|
104
|
-
case 'high': return 1.5; // More sensitive
|
|
105
|
-
case 'medium': return 2.0; // Standard
|
|
106
|
-
case 'low': return 2.5; // Less sensitive
|
|
107
|
-
default: return 2.0;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Determine severity based on deviation and z-score
|
|
112
|
-
*/
|
|
113
|
-
determineSeverity(deviation, zScore) {
|
|
114
|
-
if (zScore > 4 || deviation > 100)
|
|
115
|
-
return 'critical';
|
|
116
|
-
if (zScore > 3 || deviation > 50)
|
|
117
|
-
return 'major';
|
|
118
|
-
if (zScore > 2.5 || deviation > 25)
|
|
119
|
-
return 'moderate';
|
|
120
|
-
return 'minor';
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Generate possible causes for anomalies
|
|
124
|
-
*/
|
|
125
|
-
generatePossibleCauses(metricName, isIncrease) {
|
|
126
|
-
const causes = {
|
|
127
|
-
responseTime: {
|
|
128
|
-
increase: [
|
|
129
|
-
'High server load or CPU usage',
|
|
130
|
-
'Database query performance issues',
|
|
131
|
-
'Network latency or connectivity problems',
|
|
132
|
-
'Memory pressure causing swapping',
|
|
133
|
-
'WordPress plugin conflicts or inefficiencies'
|
|
134
|
-
],
|
|
135
|
-
decrease: [
|
|
136
|
-
'Improved caching effectiveness',
|
|
137
|
-
'Database optimization',
|
|
138
|
-
'Reduced server load',
|
|
139
|
-
'Network improvements'
|
|
140
|
-
]
|
|
141
|
-
},
|
|
142
|
-
memoryUsage: {
|
|
143
|
-
increase: [
|
|
144
|
-
'Memory leaks in application code',
|
|
145
|
-
'Large dataset processing',
|
|
146
|
-
'Inefficient caching strategies',
|
|
147
|
-
'Multiple concurrent requests',
|
|
148
|
-
'WordPress plugin memory issues'
|
|
149
|
-
],
|
|
150
|
-
decrease: [
|
|
151
|
-
'Garbage collection optimization',
|
|
152
|
-
'Cache cleanup',
|
|
153
|
-
'Reduced concurrent load',
|
|
154
|
-
'Memory optimization'
|
|
155
|
-
]
|
|
156
|
-
},
|
|
157
|
-
cacheHitRate: {
|
|
158
|
-
increase: [
|
|
159
|
-
'Improved cache warming',
|
|
160
|
-
'Better cache key strategies',
|
|
161
|
-
'Optimized cache expiration',
|
|
162
|
-
'Increased cache memory allocation'
|
|
163
|
-
],
|
|
164
|
-
decrease: [
|
|
165
|
-
'Cache invalidation issues',
|
|
166
|
-
'Frequent content updates',
|
|
167
|
-
'Insufficient cache memory',
|
|
168
|
-
'Poor cache key design',
|
|
169
|
-
'High cache miss ratio due to new content'
|
|
170
|
-
]
|
|
171
|
-
},
|
|
172
|
-
errorRate: {
|
|
173
|
-
increase: [
|
|
174
|
-
'Application bugs or recent deployments',
|
|
175
|
-
'Database connectivity issues',
|
|
176
|
-
'External service failures',
|
|
177
|
-
'Resource exhaustion',
|
|
178
|
-
'WordPress authentication problems'
|
|
179
|
-
],
|
|
180
|
-
decrease: [
|
|
181
|
-
'Bug fixes deployed',
|
|
182
|
-
'Improved error handling',
|
|
183
|
-
'Infrastructure stability improvements',
|
|
184
|
-
'Better resource management'
|
|
185
|
-
]
|
|
186
|
-
},
|
|
187
|
-
throughput: {
|
|
188
|
-
increase: [
|
|
189
|
-
'Performance optimizations',
|
|
190
|
-
'Infrastructure scaling',
|
|
191
|
-
'Reduced processing overhead',
|
|
192
|
-
'Improved parallelization'
|
|
193
|
-
],
|
|
194
|
-
decrease: [
|
|
195
|
-
'Increased request complexity',
|
|
196
|
-
'Resource bottlenecks',
|
|
197
|
-
'Database performance issues',
|
|
198
|
-
'Network limitations',
|
|
199
|
-
'WordPress plugin overhead'
|
|
200
|
-
]
|
|
201
|
-
}
|
|
202
|
-
};
|
|
203
|
-
const metricCauses = causes[metricName];
|
|
204
|
-
if (!metricCauses)
|
|
205
|
-
return ['Unknown cause - manual investigation required'];
|
|
206
|
-
return isIncrease ? metricCauses.increase : metricCauses.decrease;
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Get all detected anomalies
|
|
210
|
-
*/
|
|
211
|
-
getDetectedAnomalies() {
|
|
212
|
-
return [...this.detectedAnomalies];
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* Clear old anomalies beyond retention period
|
|
216
|
-
*/
|
|
217
|
-
cleanupOldAnomalies(retentionPeriod) {
|
|
218
|
-
const cutoff = Date.now() - retentionPeriod;
|
|
219
|
-
this.detectedAnomalies = this.detectedAnomalies.filter(anomaly => anomaly.timestamp > cutoff);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
//# sourceMappingURL=AnomalyDetector.js.map
|