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
package/dist/index.js CHANGED
@@ -1,28 +1,19 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
- import dotenv from 'dotenv';
4
- import * as fs from 'fs';
5
- import * as path from 'path';
6
3
  import { fileURLToPath } from 'url';
7
- import { WordPressClient } from './client/api.js';
8
- import * as Tools from './tools/index.js';
4
+ import { ServerConfiguration } from './config/ServerConfiguration.js';
5
+ import { ToolRegistry } from './server/ToolRegistry.js';
6
+ import { ConnectionTester } from './server/ConnectionTester.js';
9
7
  import { getErrorMessage } from './utils/error.js';
10
- import { z } from 'zod';
11
8
  // --- Constants ---
12
- const __filename = fileURLToPath(import.meta.url);
13
- const __dirname = path.dirname(__filename);
14
- const rootDir = path.resolve(__dirname, '..');
15
- const envPath = path.resolve(rootDir, '.env');
16
- dotenv.config({ path: envPath });
17
- const SERVER_VERSION = '1.1.7'; // Docker containerization and automated publishing
9
+ const SERVER_VERSION = '1.1.8'; // Technical debt resolution and modular architecture
18
10
  // --- Main Server Class ---
19
11
  class MCPWordPressServer {
20
12
  server;
21
- // MODIFICATION: Manages multiple WordPress clients, keyed by site ID.
22
13
  wordpressClients = new Map();
23
14
  initialized = false;
24
- // MODIFICATION: Stores the configurations for all loaded sites.
25
15
  siteConfigs = [];
16
+ toolRegistry;
26
17
  constructor(mcpConfig) {
27
18
  this.loadConfiguration(mcpConfig);
28
19
  if (this.wordpressClients.size === 0) {
@@ -33,212 +24,21 @@ class MCPWordPressServer {
33
24
  name: 'mcp-wordpress',
34
25
  version: SERVER_VERSION
35
26
  });
27
+ this.toolRegistry = new ToolRegistry(this.server, this.wordpressClients);
36
28
  this.setupTools();
37
29
  }
38
30
  loadConfiguration(mcpConfig) {
39
- const configPath = path.resolve(rootDir, 'mcp-wordpress.config.json');
40
- if (fs.existsSync(configPath)) {
41
- if (process.env.NODE_ENV !== 'test') {
42
- console.error('INFO: Found mcp-wordpress.config.json, loading multi-site configuration.');
43
- }
44
- this.loadMultiSiteConfig(configPath);
45
- }
46
- else {
47
- if (process.env.NODE_ENV !== 'test') {
48
- console.error('INFO: mcp-wordpress.config.json not found, falling back to environment variables for single-site mode.');
49
- }
50
- this.loadSingleSiteFromEnv(mcpConfig);
51
- }
52
- }
53
- loadMultiSiteConfig(configPath) {
54
- try {
55
- const configFile = fs.readFileSync(configPath, 'utf-8');
56
- const config = JSON.parse(configFile);
57
- if (!config.sites || !Array.isArray(config.sites)) {
58
- throw new Error('Configuration file must have a "sites" array.');
59
- }
60
- this.siteConfigs = config.sites;
61
- for (const site of this.siteConfigs) {
62
- if (site.id && site.name && site.config) {
63
- const clientConfig = {
64
- baseUrl: site.config.WORDPRESS_SITE_URL,
65
- auth: {
66
- method: site.config.WORDPRESS_AUTH_METHOD ||
67
- 'app-password',
68
- username: site.config.WORDPRESS_USERNAME,
69
- appPassword: site.config.WORDPRESS_APP_PASSWORD
70
- }
71
- };
72
- const client = new WordPressClient(clientConfig);
73
- this.wordpressClients.set(site.id, client);
74
- if (process.env.NODE_ENV !== 'test') {
75
- console.error(`INFO: Initialized client for site: ${site.name} (ID: ${site.id})`);
76
- }
77
- }
78
- else {
79
- console.warn('WARN: Skipping invalid site entry in config. Must have id, name, and config.', site);
80
- }
81
- }
82
- }
83
- catch (error) {
84
- console.error(`FATAL: Error reading or parsing mcp-wordpress.config.json: ${getErrorMessage(error)}`);
85
- process.exit(1);
86
- }
87
- }
88
- loadSingleSiteFromEnv(mcpConfig) {
89
- const siteUrl = mcpConfig?.wordpressSiteUrl || process.env.WORDPRESS_SITE_URL;
90
- const username = mcpConfig?.wordpressUsername || process.env.WORDPRESS_USERNAME;
91
- const password = mcpConfig?.wordpressAppPassword || process.env.WORDPRESS_APP_PASSWORD;
92
- const authMethod = (mcpConfig?.wordpressAuthMethod ||
93
- process.env.WORDPRESS_AUTH_METHOD ||
94
- 'app-password');
95
- if (!siteUrl || !username || !password) {
96
- console.error('ERROR: Missing required credentials for single-site mode.');
97
- console.error('Please set WORDPRESS_SITE_URL, WORDPRESS_USERNAME, and WORDPRESS_APP_PASSWORD environment variables.');
98
- return;
99
- }
100
- const singleSiteConfig = {
101
- baseUrl: siteUrl,
102
- auth: { method: authMethod, username, appPassword: password }
103
- };
104
- const client = new WordPressClient(singleSiteConfig);
105
- this.wordpressClients.set('default', client);
106
- this.siteConfigs.push({
107
- id: 'default',
108
- name: 'Default Site',
109
- config: singleSiteConfig
110
- });
111
- console.error('INFO: Initialized client for default site in single-site mode.');
31
+ const serverConfig = ServerConfiguration.getInstance();
32
+ const { clients, configs } = serverConfig.loadClientConfigurations(mcpConfig);
33
+ this.wordpressClients = clients;
34
+ this.siteConfigs = configs;
112
35
  }
113
36
  setupTools() {
114
- // Register all tools from the tools directory
115
- Object.values(Tools).forEach((ToolClass) => {
116
- const toolInstance = new ToolClass();
117
- const tools = toolInstance.getTools();
118
- tools.forEach((tool) => {
119
- this.registerTool(tool);
120
- });
121
- });
122
- }
123
- registerTool(tool) {
124
- // Create base parameter schema with site parameter
125
- const baseSchema = {
126
- site: z
127
- .string()
128
- .optional()
129
- .describe('The ID of the WordPress site to target (from mcp-wordpress.config.json). Required if multiple sites are configured.')
130
- };
131
- // Merge with tool-specific parameters
132
- const parameterSchema = tool.parameters?.reduce((schema, param) => {
133
- let zodType;
134
- switch (param.type) {
135
- case 'string':
136
- zodType = z.string();
137
- break;
138
- case 'number':
139
- zodType = z.number();
140
- break;
141
- case 'boolean':
142
- zodType = z.boolean();
143
- break;
144
- case 'array':
145
- zodType = z.array(z.string());
146
- break;
147
- case 'object':
148
- zodType = z.record(z.any());
149
- break;
150
- default:
151
- zodType = z.string();
152
- }
153
- if (param.description) {
154
- zodType = zodType.describe(param.description);
155
- }
156
- if (!param.required) {
157
- zodType = zodType.optional();
158
- }
159
- schema[param.name] = zodType;
160
- return schema;
161
- }, { ...baseSchema }) || baseSchema;
162
- // Make site parameter required if multiple sites are configured
163
- if (this.wordpressClients.size > 1) {
164
- parameterSchema.site = parameterSchema.site.describe('The ID of the WordPress site to target (from mcp-wordpress.config.json). Required when multiple sites are configured.');
165
- }
166
- this.server.tool(tool.name, tool.description || `WordPress tool: ${tool.name}`, parameterSchema, async (args) => {
167
- try {
168
- const siteId = args.site || 'default';
169
- const client = this.wordpressClients.get(siteId);
170
- if (!client) {
171
- const availableSites = Array.from(this.wordpressClients.keys()).join(', ');
172
- return {
173
- content: [
174
- {
175
- type: 'text',
176
- text: `Error: Site with ID '${siteId}' not found. Available sites: ${availableSites}`
177
- }
178
- ],
179
- isError: true
180
- };
181
- }
182
- // Call the tool handler with the client and parameters
183
- const result = await tool.handler(client, args);
184
- return {
185
- content: [
186
- {
187
- type: 'text',
188
- text: typeof result === 'string'
189
- ? result
190
- : JSON.stringify(result, null, 2)
191
- }
192
- ]
193
- };
194
- }
195
- catch (error) {
196
- if (this.isAuthenticationError(error)) {
197
- return {
198
- content: [
199
- {
200
- type: 'text',
201
- text: `Authentication failed for site '${args.site || 'default'}'. Please check your credentials.`
202
- }
203
- ],
204
- isError: true
205
- };
206
- }
207
- return {
208
- content: [
209
- {
210
- type: 'text',
211
- text: `Error: ${getErrorMessage(error)}`
212
- }
213
- ],
214
- isError: true
215
- };
216
- }
217
- });
37
+ this.toolRegistry.registerAllTools();
218
38
  }
219
39
  async testClientConnections() {
220
- console.error('INFO: Testing connections to all configured WordPress sites...');
221
- const connectionPromises = Array.from(this.wordpressClients.entries()).map(async ([siteId, client]) => {
222
- try {
223
- await client.ping();
224
- console.error(`SUCCESS: Connection to site '${siteId}' successful.`);
225
- }
226
- catch (error) {
227
- console.error(`ERROR: Failed to connect to site '${siteId}': ${getErrorMessage(error)}`);
228
- if (this.isAuthenticationError(error)) {
229
- console.error(`Authentication may have failed for site '${siteId}'. Please check credentials.`);
230
- }
231
- }
232
- });
233
- await Promise.all(connectionPromises);
40
+ await ConnectionTester.testClientConnections(this.wordpressClients);
234
41
  this.initialized = true;
235
- console.error('INFO: Connection tests complete.');
236
- }
237
- isAuthenticationError(error) {
238
- if (error?.response?.status && [401, 403].includes(error.response.status)) {
239
- return true;
240
- }
241
- return error?.code === 'WORDPRESS_AUTH_ERROR';
242
42
  }
243
43
  async run() {
244
44
  if (!this.initialized) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,222 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnomalyDetector.js","sourceRoot":"","sources":["../../src/performance/AnomalyDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH;;GAEG;AACH,MAAM,OAAO,eAAe;IAClB,MAAM,CAAyB;IAC/B,iBAAiB,GAAyB,EAAE,CAAC;IAErD,YAAY,MAA8B;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,eAAe,CACpB,cAAkC,EAClC,cAAoC;QAEpC,MAAM,SAAS,GAAyB,EAAE,CAAC;QAE3C,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC,CAAC,kCAAkC;QACtD,CAAC;QAED,kCAAkC;QAClC,MAAM,cAAc,GAAG;YACrB,cAAc;YACd,aAAa;YACb,cAAc;YACd,WAAW;YACX,YAAY;SACb,CAAC;QAEF,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;YACpF,IAAI,OAAO,EAAE,CAAC;gBACZ,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,UAAkB,EAClB,OAA2B,EAC3B,UAAgC;QAEhC,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClE,IAAI,YAAY,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAEvC,MAAM,gBAAgB,GAAG,UAAU;aAChC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;aAChD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAa,CAAC;QAEvC,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAE7C,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAExD,uDAAuD;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7C,IAAI,MAAM,GAAG,SAAS;YAAE,OAAO,IAAI,CAAC;QAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE3D,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,UAAU;YAClB,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,YAAY;YACzB,SAAS;YACT,QAAQ;YACR,cAAc,EAAE,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,CAAC;SAC7E,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,UAAkB,EAAE,OAA2B;QACxE,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,cAAc;gBACjB,OAAO,OAAO,CAAC,QAAQ,EAAE,mBAAmB,IAAI,IAAI,CAAC;YACvD,KAAK,aAAa;gBAChB,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,IAAI,IAAI,CAAC;YAC7C,KAAK,cAAc;gBACjB,OAAO,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC;YACxC,KAAK,WAAW;gBACd,OAAO,OAAO,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC;oBAChC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK;oBAClD,CAAC,CAAC,IAAI,CAAC;YACX,KAAK,YAAY;gBACf,OAAO,OAAO,CAAC,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC;YACrD;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,MAAgB;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QAC/F,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEnC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC,CAAG,iBAAiB;YAC5C,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,WAAW;YACtC,KAAK,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAI,iBAAiB;YAC5C,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,SAAiB,EAAE,MAAc;QACzD,IAAI,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG;YAAE,OAAO,UAAU,CAAC;QACrD,IAAI,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,EAAE;YAAE,OAAO,OAAO,CAAC;QACjD,IAAI,MAAM,GAAG,GAAG,IAAI,SAAS,GAAG,EAAE;YAAE,OAAO,UAAU,CAAC;QACtD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,UAAkB,EAAE,UAAmB;QACpE,MAAM,MAAM,GAAkE;YAC5E,YAAY,EAAE;gBACZ,QAAQ,EAAE;oBACR,+BAA+B;oBAC/B,mCAAmC;oBACnC,0CAA0C;oBAC1C,kCAAkC;oBAClC,8CAA8C;iBAC/C;gBACD,QAAQ,EAAE;oBACR,gCAAgC;oBAChC,uBAAuB;oBACvB,qBAAqB;oBACrB,sBAAsB;iBACvB;aACF;YACD,WAAW,EAAE;gBACX,QAAQ,EAAE;oBACR,kCAAkC;oBAClC,0BAA0B;oBAC1B,gCAAgC;oBAChC,8BAA8B;oBAC9B,gCAAgC;iBACjC;gBACD,QAAQ,EAAE;oBACR,iCAAiC;oBACjC,eAAe;oBACf,yBAAyB;oBACzB,qBAAqB;iBACtB;aACF;YACD,YAAY,EAAE;gBACZ,QAAQ,EAAE;oBACR,wBAAwB;oBACxB,6BAA6B;oBAC7B,4BAA4B;oBAC5B,mCAAmC;iBACpC;gBACD,QAAQ,EAAE;oBACR,2BAA2B;oBAC3B,0BAA0B;oBAC1B,2BAA2B;oBAC3B,uBAAuB;oBACvB,0CAA0C;iBAC3C;aACF;YACD,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,wCAAwC;oBACxC,8BAA8B;oBAC9B,2BAA2B;oBAC3B,qBAAqB;oBACrB,mCAAmC;iBACpC;gBACD,QAAQ,EAAE;oBACR,oBAAoB;oBACpB,yBAAyB;oBACzB,uCAAuC;oBACvC,4BAA4B;iBAC7B;aACF;YACD,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,2BAA2B;oBAC3B,wBAAwB;oBACxB,6BAA6B;oBAC7B,0BAA0B;iBAC3B;gBACD,QAAQ,EAAE;oBACR,8BAA8B;oBAC9B,sBAAsB;oBACtB,6BAA6B;oBAC7B,qBAAqB;oBACrB,2BAA2B;iBAC5B;aACF;SACF,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY;YAAE,OAAO,CAAC,+CAA+C,CAAC,CAAC;QAE5E,OAAO,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC;IACpE,CAAC;IAED;;OAEG;IACI,oBAAoB;QACzB,OAAO,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,mBAAmB,CAAC,eAAuB;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CACpD,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CACtC,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Benchmark Analysis for Performance Metrics
3
+ * Compares current performance against industry standards
4
+ */
5
+ import { PerformanceMetrics } from './PerformanceMonitor.js';
6
+ export interface BenchmarkComparison {
7
+ category: string;
8
+ currentValue: number;
9
+ benchmarkValue: number;
10
+ percentile: number;
11
+ status: 'excellent' | 'good' | 'average' | 'below_average' | 'poor';
12
+ improvement: number;
13
+ }
14
+ export interface BenchmarkThresholds {
15
+ excellent: number;
16
+ good: number;
17
+ average: number;
18
+ below_average: number;
19
+ poor: number;
20
+ }
21
+ /**
22
+ * Analyzes performance against industry benchmarks
23
+ */
24
+ export declare class BenchmarkAnalyzer {
25
+ private benchmarks;
26
+ /**
27
+ * Compare current metrics against benchmarks
28
+ */
29
+ compareToBenchmarks(metrics: PerformanceMetrics): BenchmarkComparison[];
30
+ /**
31
+ * Create a benchmark comparison for a specific metric
32
+ */
33
+ private createBenchmarkComparison;
34
+ /**
35
+ * Determine performance status based on thresholds
36
+ */
37
+ private determineStatus;
38
+ /**
39
+ * Calculate percentile ranking
40
+ */
41
+ private calculatePercentile;
42
+ /**
43
+ * Get the benchmark value for a given status
44
+ */
45
+ private getBenchmarkValue;
46
+ /**
47
+ * Calculate improvement needed to reach next tier
48
+ */
49
+ private calculateImprovement;
50
+ /**
51
+ * Generate benchmark report
52
+ */
53
+ generateBenchmarkReport(comparisons: BenchmarkComparison[]): string;
54
+ /**
55
+ * Get emoji for performance status
56
+ */
57
+ private getStatusEmoji;
58
+ /**
59
+ * Get recommendations based on benchmark results
60
+ */
61
+ getRecommendations(comparisons: BenchmarkComparison[]): string[];
62
+ /**
63
+ * Get specific recommendations for a metric
64
+ */
65
+ private getMetricRecommendations;
66
+ }
67
+ //# sourceMappingURL=BenchmarkAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BenchmarkAnalyzer.d.ts","sourceRoot":"","sources":["../../src/performance/BenchmarkAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,eAAe,GAAG,MAAM,CAAC;IACpE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAE5B,OAAO,CAAC,UAAU,CAoChB;IAEF;;OAEG;IACI,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,EAAE;IAyD9E;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAsBjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAoBvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;OAEG;IACI,uBAAuB,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,MAAM;IA6C1E;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACI,kBAAkB,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,MAAM,EAAE;IAYvE;;OAEG;IACH,OAAO,CAAC,wBAAwB;CAkDjC"}