mcp-wordpress 2.4.2 → 2.5.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.
Files changed (348) hide show
  1. package/README.md +114 -48
  2. package/dist/ajv-patch.js +34 -0
  3. package/dist/cache/CacheInvalidation.d.ts +3 -1
  4. package/dist/cache/CacheInvalidation.d.ts.map +1 -1
  5. package/dist/cache/CacheInvalidation.js +10 -4
  6. package/dist/cache/CacheInvalidation.js.map +1 -1
  7. package/dist/cache/CacheManager.d.ts +3 -2
  8. package/dist/cache/CacheManager.d.ts.map +1 -1
  9. package/dist/cache/CacheManager.js +11 -3
  10. package/dist/cache/CacheManager.js.map +1 -1
  11. package/dist/cache/HttpCacheWrapper.d.ts +7 -6
  12. package/dist/cache/HttpCacheWrapper.d.ts.map +1 -1
  13. package/dist/cache/HttpCacheWrapper.js +8 -5
  14. package/dist/cache/HttpCacheWrapper.js.map +1 -1
  15. package/dist/cache/__tests__/HttpCacheWrapper.test.js +6 -5
  16. package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +1 -1
  17. package/dist/cache/index.d.ts +3 -3
  18. package/dist/cache/index.d.ts.map +1 -1
  19. package/dist/cache/index.js +1 -1
  20. package/dist/cache/index.js.map +1 -1
  21. package/dist/client/CachedWordPressClient.d.ts +23 -9
  22. package/dist/client/CachedWordPressClient.d.ts.map +1 -1
  23. package/dist/client/CachedWordPressClient.js +4 -1
  24. package/dist/client/CachedWordPressClient.js.map +1 -1
  25. package/dist/client/MockWordPressClient.d.ts +2 -1
  26. package/dist/client/MockWordPressClient.d.ts.map +1 -1
  27. package/dist/client/MockWordPressClient.js +3 -1
  28. package/dist/client/MockWordPressClient.js.map +1 -1
  29. package/dist/client/api.d.ts +17 -13
  30. package/dist/client/api.d.ts.map +1 -1
  31. package/dist/client/api.js +135 -30
  32. package/dist/client/api.js.map +1 -1
  33. package/dist/client/auth.d.ts.map +1 -1
  34. package/dist/client/auth.js +2 -3
  35. package/dist/client/auth.js.map +1 -1
  36. package/dist/client/managers/AuthenticationManager.d.ts +55 -2
  37. package/dist/client/managers/AuthenticationManager.d.ts.map +1 -1
  38. package/dist/client/managers/AuthenticationManager.js +269 -71
  39. package/dist/client/managers/AuthenticationManager.js.map +1 -1
  40. package/dist/client/managers/BaseManager.d.ts +3 -3
  41. package/dist/client/managers/BaseManager.d.ts.map +1 -1
  42. package/dist/client/managers/BaseManager.js +11 -5
  43. package/dist/client/managers/BaseManager.js.map +1 -1
  44. package/dist/client/managers/RequestManager.d.ts +2 -2
  45. package/dist/client/managers/RequestManager.d.ts.map +1 -1
  46. package/dist/client/managers/RequestManager.js +25 -12
  47. package/dist/client/managers/RequestManager.js.map +1 -1
  48. package/dist/config/Config.d.ts +155 -0
  49. package/dist/config/Config.d.ts.map +1 -0
  50. package/dist/config/Config.js +215 -0
  51. package/dist/config/Config.js.map +1 -0
  52. package/dist/config/ConfigurationSchema.d.ts +21 -21
  53. package/dist/config/ConfigurationSchema.d.ts.map +1 -1
  54. package/dist/config/ConfigurationSchema.js +19 -2
  55. package/dist/config/ConfigurationSchema.js.map +1 -1
  56. package/dist/config/ServerConfiguration.d.ts +2 -1
  57. package/dist/config/ServerConfiguration.d.ts.map +1 -1
  58. package/dist/config/ServerConfiguration.js +50 -41
  59. package/dist/config/ServerConfiguration.js.map +1 -1
  60. package/dist/docs/DocumentationGenerator.d.ts +9 -8
  61. package/dist/docs/DocumentationGenerator.d.ts.map +1 -1
  62. package/dist/docs/DocumentationGenerator.js +10 -7
  63. package/dist/docs/DocumentationGenerator.js.map +1 -1
  64. package/dist/docs/MarkdownFormatter.d.ts.map +1 -1
  65. package/dist/docs/MarkdownFormatter.js +3 -2
  66. package/dist/docs/MarkdownFormatter.js.map +1 -1
  67. package/dist/dxt-entry.cjs +81 -0
  68. package/dist/dxt-entry.js +15 -14
  69. package/dist/dxt-entry.js.map +1 -1
  70. package/dist/index.d.ts +3 -1
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +37 -21
  73. package/dist/index.js.map +1 -1
  74. package/dist/performance/MetricsCollector.d.ts +13 -7
  75. package/dist/performance/MetricsCollector.d.ts.map +1 -1
  76. package/dist/performance/MetricsCollector.js +69 -27
  77. package/dist/performance/MetricsCollector.js.map +1 -1
  78. package/dist/performance/PerformanceAnalytics.d.ts +8 -2
  79. package/dist/performance/PerformanceAnalytics.d.ts.map +1 -1
  80. package/dist/performance/PerformanceAnalytics.js +17 -47
  81. package/dist/performance/PerformanceAnalytics.js.map +1 -1
  82. package/dist/performance/PerformanceMonitor.d.ts +2 -1
  83. package/dist/performance/PerformanceMonitor.d.ts.map +1 -1
  84. package/dist/performance/PerformanceMonitor.js +12 -13
  85. package/dist/performance/PerformanceMonitor.js.map +1 -1
  86. package/dist/performance/index.d.ts +2 -2
  87. package/dist/performance/index.d.ts.map +1 -1
  88. package/dist/security/AISecurityScanner.d.ts +1 -0
  89. package/dist/security/AISecurityScanner.d.ts.map +1 -1
  90. package/dist/security/AISecurityScanner.js +22 -12
  91. package/dist/security/AISecurityScanner.js.map +1 -1
  92. package/dist/security/AutomatedRemediation.d.ts +4 -3
  93. package/dist/security/AutomatedRemediation.d.ts.map +1 -1
  94. package/dist/security/AutomatedRemediation.js +46 -15
  95. package/dist/security/AutomatedRemediation.js.map +1 -1
  96. package/dist/security/InputValidator.d.ts +13 -9
  97. package/dist/security/InputValidator.d.ts.map +1 -1
  98. package/dist/security/InputValidator.js +4 -2
  99. package/dist/security/InputValidator.js.map +1 -1
  100. package/dist/security/SecurityCIPipeline.d.ts +1 -1
  101. package/dist/security/SecurityCIPipeline.d.ts.map +1 -1
  102. package/dist/security/SecurityCIPipeline.js +38 -29
  103. package/dist/security/SecurityCIPipeline.js.map +1 -1
  104. package/dist/security/SecurityConfig.d.ts +3 -3
  105. package/dist/security/SecurityConfig.d.ts.map +1 -1
  106. package/dist/security/SecurityConfig.js +13 -9
  107. package/dist/security/SecurityConfig.js.map +1 -1
  108. package/dist/security/SecurityConfigManager.d.ts +2 -2
  109. package/dist/security/SecurityConfigManager.d.ts.map +1 -1
  110. package/dist/security/SecurityConfigManager.js +20 -15
  111. package/dist/security/SecurityConfigManager.js.map +1 -1
  112. package/dist/security/SecurityMonitoring.d.ts +2 -2
  113. package/dist/security/SecurityMonitoring.d.ts.map +1 -1
  114. package/dist/security/SecurityMonitoring.js +19 -17
  115. package/dist/security/SecurityMonitoring.js.map +1 -1
  116. package/dist/security/SecurityReviewer.d.ts.map +1 -1
  117. package/dist/security/SecurityReviewer.js +10 -7
  118. package/dist/security/SecurityReviewer.js.map +1 -1
  119. package/dist/security/index.d.ts +24 -23
  120. package/dist/security/index.d.ts.map +1 -1
  121. package/dist/security/index.js +52 -23
  122. package/dist/security/index.js.map +1 -1
  123. package/dist/server/ConnectionTester.d.ts +12 -4
  124. package/dist/server/ConnectionTester.d.ts.map +1 -1
  125. package/dist/server/ConnectionTester.js +96 -22
  126. package/dist/server/ConnectionTester.js.map +1 -1
  127. package/dist/server/ToolRegistry.d.ts +2 -2
  128. package/dist/server/ToolRegistry.d.ts.map +1 -1
  129. package/dist/server/ToolRegistry.js +10 -5
  130. package/dist/server/ToolRegistry.js.map +1 -1
  131. package/dist/tools/BaseToolManager.d.ts +47 -11
  132. package/dist/tools/BaseToolManager.d.ts.map +1 -1
  133. package/dist/tools/BaseToolManager.js +168 -29
  134. package/dist/tools/BaseToolManager.js.map +1 -1
  135. package/dist/tools/auth.d.ts +16 -10
  136. package/dist/tools/auth.d.ts.map +1 -1
  137. package/dist/tools/auth.js +3 -2
  138. package/dist/tools/auth.js.map +1 -1
  139. package/dist/tools/cache.d.ts +30 -30
  140. package/dist/tools/cache.d.ts.map +1 -1
  141. package/dist/tools/cache.js +1 -6
  142. package/dist/tools/cache.js.map +1 -1
  143. package/dist/tools/comments.d.ts +20 -20
  144. package/dist/tools/comments.d.ts.map +1 -1
  145. package/dist/tools/comments.js +16 -9
  146. package/dist/tools/comments.js.map +1 -1
  147. package/dist/tools/media.d.ts +18 -16
  148. package/dist/tools/media.d.ts.map +1 -1
  149. package/dist/tools/media.js +16 -15
  150. package/dist/tools/media.js.map +1 -1
  151. package/dist/tools/pages.d.ts +19 -17
  152. package/dist/tools/pages.d.ts.map +1 -1
  153. package/dist/tools/pages.js +16 -12
  154. package/dist/tools/pages.js.map +1 -1
  155. package/dist/tools/performance.d.ts +11 -1
  156. package/dist/tools/performance.d.ts.map +1 -1
  157. package/dist/tools/performance.js +67 -34
  158. package/dist/tools/performance.js.map +1 -1
  159. package/dist/tools/posts/PostHandlers.d.ts +46 -0
  160. package/dist/tools/posts/PostHandlers.d.ts.map +1 -0
  161. package/dist/tools/posts/PostHandlers.js +400 -0
  162. package/dist/tools/posts/PostHandlers.js.map +1 -0
  163. package/dist/tools/posts/PostToolDefinitions.d.ts +37 -0
  164. package/dist/tools/posts/PostToolDefinitions.d.ts.map +1 -0
  165. package/dist/tools/posts/PostToolDefinitions.js +236 -0
  166. package/dist/tools/posts/PostToolDefinitions.js.map +1 -0
  167. package/dist/tools/posts/index.d.ts +138 -0
  168. package/dist/tools/posts/index.d.ts.map +1 -0
  169. package/dist/tools/posts/index.js +163 -0
  170. package/dist/tools/posts/index.js.map +1 -0
  171. package/dist/tools/posts.d.ts +10 -246
  172. package/dist/tools/posts.d.ts.map +1 -1
  173. package/dist/tools/posts.js +11 -723
  174. package/dist/tools/posts.js.map +1 -1
  175. package/dist/tools/site.d.ts +19 -18
  176. package/dist/tools/site.d.ts.map +1 -1
  177. package/dist/tools/site.js +14 -10
  178. package/dist/tools/site.js.map +1 -1
  179. package/dist/tools/taxonomies.d.ts +23 -24
  180. package/dist/tools/taxonomies.d.ts.map +1 -1
  181. package/dist/tools/taxonomies.js +24 -18
  182. package/dist/tools/taxonomies.js.map +1 -1
  183. package/dist/tools/users.d.ts +20 -15
  184. package/dist/tools/users.d.ts.map +1 -1
  185. package/dist/tools/users.js +12 -8
  186. package/dist/tools/users.js.map +1 -1
  187. package/dist/types/client.d.ts +48 -41
  188. package/dist/types/client.d.ts.map +1 -1
  189. package/dist/types/client.js +30 -5
  190. package/dist/types/client.js.map +1 -1
  191. package/dist/types/enhanced.d.ts +237 -0
  192. package/dist/types/enhanced.d.ts.map +1 -0
  193. package/dist/types/enhanced.js +49 -0
  194. package/dist/types/enhanced.js.map +1 -0
  195. package/dist/types/index.d.ts +15 -12
  196. package/dist/types/index.d.ts.map +1 -1
  197. package/dist/types/index.js +2 -0
  198. package/dist/types/index.js.map +1 -1
  199. package/dist/types/mcp.d.ts +12 -12
  200. package/dist/types/mcp.d.ts.map +1 -1
  201. package/dist/types/requests.d.ts +322 -0
  202. package/dist/types/requests.d.ts.map +1 -0
  203. package/dist/types/requests.js +8 -0
  204. package/dist/types/requests.js.map +1 -0
  205. package/dist/types/tools.d.ts +506 -0
  206. package/dist/types/tools.d.ts.map +1 -0
  207. package/dist/types/tools.js +8 -0
  208. package/dist/types/tools.js.map +1 -0
  209. package/dist/types/wordpress.d.ts +43 -15
  210. package/dist/types/wordpress.d.ts.map +1 -1
  211. package/dist/types/wordpress.js +8 -1
  212. package/dist/types/wordpress.js.map +1 -1
  213. package/dist/utils/debug.d.ts +19 -11
  214. package/dist/utils/debug.d.ts.map +1 -1
  215. package/dist/utils/debug.js +46 -10
  216. package/dist/utils/debug.js.map +1 -1
  217. package/dist/utils/enhancedError.d.ts +8 -8
  218. package/dist/utils/enhancedError.d.ts.map +1 -1
  219. package/dist/utils/enhancedError.js.map +1 -1
  220. package/dist/utils/error.d.ts +2 -4
  221. package/dist/utils/error.d.ts.map +1 -1
  222. package/dist/utils/error.js +42 -5
  223. package/dist/utils/error.js.map +1 -1
  224. package/dist/utils/logger.d.ts +106 -0
  225. package/dist/utils/logger.d.ts.map +1 -0
  226. package/dist/utils/logger.js +280 -0
  227. package/dist/utils/logger.js.map +1 -0
  228. package/dist/utils/streaming.d.ts +9 -9
  229. package/dist/utils/streaming.d.ts.map +1 -1
  230. package/dist/utils/streaming.js +71 -52
  231. package/dist/utils/streaming.js.map +1 -1
  232. package/dist/utils/toolWrapper.d.ts +9 -7
  233. package/dist/utils/toolWrapper.d.ts.map +1 -1
  234. package/dist/utils/toolWrapper.js.map +1 -1
  235. package/dist/utils/validation/core.d.ts +21 -0
  236. package/dist/utils/validation/core.d.ts.map +1 -0
  237. package/dist/utils/validation/core.js +71 -0
  238. package/dist/utils/validation/core.js.map +1 -0
  239. package/dist/utils/validation/index.d.ts +25 -0
  240. package/dist/utils/validation/index.d.ts.map +1 -0
  241. package/dist/utils/validation/index.js +29 -0
  242. package/dist/utils/validation/index.js.map +1 -0
  243. package/dist/utils/validation/network.d.ts +19 -0
  244. package/dist/utils/validation/network.d.ts.map +1 -0
  245. package/dist/utils/validation/network.js +93 -0
  246. package/dist/utils/validation/network.js.map +1 -0
  247. package/dist/utils/validation/rateLimit.d.ts +21 -0
  248. package/dist/utils/validation/rateLimit.d.ts.map +1 -0
  249. package/dist/utils/validation/rateLimit.js +43 -0
  250. package/dist/utils/validation/rateLimit.js.map +1 -0
  251. package/dist/utils/validation/security.d.ts +29 -0
  252. package/dist/utils/validation/security.d.ts.map +1 -0
  253. package/dist/utils/validation/security.js +327 -0
  254. package/dist/utils/validation/security.js.map +1 -0
  255. package/dist/utils/validation/wordpress.d.ts +31 -0
  256. package/dist/utils/validation/wordpress.d.ts.map +1 -0
  257. package/dist/utils/validation/wordpress.js +146 -0
  258. package/dist/utils/validation/wordpress.js.map +1 -0
  259. package/dist/utils/validation.d.ts +13 -82
  260. package/dist/utils/validation.d.ts.map +1 -1
  261. package/dist/utils/validation.js +25 -343
  262. package/dist/utils/validation.js.map +1 -1
  263. package/docs/BADGE_UPDATES.md +132 -0
  264. package/docs/CI_CD_IMPROVEMENTS.md +191 -0
  265. package/docs/INCREMENTAL_COVERAGE.md +183 -0
  266. package/docs/api/README.md +3 -1
  267. package/docs/api/openapi.json +5 -1
  268. package/docs/api/summary.json +1 -1
  269. package/docs/api/tools/wp_create_post.md +12 -14
  270. package/docs/examples/claude-desktop-config.md +1 -1
  271. package/docs/examples/docker-production.md +100 -93
  272. package/docs/examples/multi-site-setup.md +5 -4
  273. package/docs/examples/single-site-setup.md +3 -4
  274. package/docs/examples/use-case-workflows.md +4 -5
  275. package/docs/integrations/claude-desktop.md +31 -31
  276. package/docs/integrations/cline.md +4 -4
  277. package/docs/integrations/vs-code.md +9 -8
  278. package/docs/user-guides/SMITHERY_SETUP.md +10 -10
  279. package/package.json +44 -25
  280. package/src/cache/CacheInvalidation.ts +12 -5
  281. package/src/cache/CacheManager.ts +18 -15
  282. package/src/cache/HttpCacheWrapper.ts +30 -59
  283. package/src/cache/__tests__/HttpCacheWrapper.test.ts +6 -5
  284. package/src/cache/index.ts +3 -14
  285. package/src/client/CachedWordPressClient.ts +32 -30
  286. package/src/client/MockWordPressClient.ts +4 -2
  287. package/src/client/api.ts +186 -64
  288. package/src/client/auth.ts +15 -40
  289. package/src/client/managers/AuthenticationManager.ts +337 -77
  290. package/src/client/managers/BaseManager.ts +18 -30
  291. package/src/client/managers/RequestManager.ts +39 -44
  292. package/src/config/Config.ts +308 -0
  293. package/src/config/ConfigurationSchema.ts +23 -2
  294. package/src/config/ServerConfiguration.ts +51 -47
  295. package/src/docs/DocumentationGenerator.ts +50 -39
  296. package/src/docs/MarkdownFormatter.ts +19 -29
  297. package/src/dxt-entry.cjs +26 -16
  298. package/src/dxt-entry.ts +17 -27
  299. package/src/index.ts +42 -28
  300. package/src/performance/MetricsCollector.ts +108 -86
  301. package/src/performance/PerformanceAnalytics.ts +69 -164
  302. package/src/performance/PerformanceMonitor.ts +32 -47
  303. package/src/performance/index.ts +2 -10
  304. package/src/security/AISecurityScanner.ts +22 -12
  305. package/src/security/AutomatedRemediation.ts +49 -18
  306. package/src/security/InputValidator.ts +9 -6
  307. package/src/security/SecurityCIPipeline.ts +53 -37
  308. package/src/security/SecurityConfig.ts +22 -22
  309. package/src/security/SecurityConfigManager.ts +23 -19
  310. package/src/security/SecurityMonitoring.ts +24 -21
  311. package/src/security/SecurityReviewer.ts +10 -7
  312. package/src/security/index.ts +64 -29
  313. package/src/server/ConnectionTester.ts +120 -31
  314. package/src/server/ToolRegistry.ts +31 -21
  315. package/src/tools/BaseToolManager.ts +286 -33
  316. package/src/tools/auth.ts +20 -8
  317. package/src/tools/cache.ts +5 -15
  318. package/src/tools/comments.ts +34 -48
  319. package/src/tools/media.ts +41 -53
  320. package/src/tools/pages.ts +32 -54
  321. package/src/tools/performance.ts +141 -176
  322. package/src/tools/posts/PostHandlers.ts +474 -0
  323. package/src/tools/posts/PostToolDefinitions.ts +250 -0
  324. package/src/tools/posts/index.ts +192 -0
  325. package/src/tools/posts.ts +24 -780
  326. package/src/tools/site.ts +34 -19
  327. package/src/tools/taxonomies.ts +41 -57
  328. package/src/tools/users.ts +28 -16
  329. package/src/types/client.ts +114 -138
  330. package/src/types/enhanced.ts +318 -0
  331. package/src/types/index.ts +51 -30
  332. package/src/types/mcp.ts +20 -42
  333. package/src/types/requests.ts +378 -0
  334. package/src/types/tools.ts +608 -0
  335. package/src/types/wordpress.ts +56 -34
  336. package/src/utils/debug.ts +77 -59
  337. package/src/utils/enhancedError.ts +8 -8
  338. package/src/utils/error.ts +53 -31
  339. package/src/utils/logger.ts +351 -0
  340. package/src/utils/streaming.ts +86 -68
  341. package/src/utils/toolWrapper.ts +10 -12
  342. package/src/utils/validation/core.ts +108 -0
  343. package/src/utils/validation/index.ts +36 -0
  344. package/src/utils/validation/network.ts +132 -0
  345. package/src/utils/validation/rateLimit.ts +54 -0
  346. package/src/utils/validation/security.ts +361 -0
  347. package/src/utils/validation/wordpress.ts +180 -0
  348. package/src/utils/validation.ts +47 -470
@@ -6,8 +6,11 @@
6
6
  import * as fs from "fs/promises";
7
7
  import * as path from "path";
8
8
  import { z } from "zod";
9
- import { SecurityUtils } from "./SecurityConfig";
10
- import { SecurityValidationError } from "./InputValidator";
9
+ import { SecurityUtils } from "./SecurityConfig.js";
10
+ import { SecurityValidationError } from "./InputValidator.js";
11
+ import { LoggerFactory } from "../utils/logger.js";
12
+
13
+ const logger = LoggerFactory.security();
11
14
 
12
15
  interface SecurityPolicy {
13
16
  id: string;
@@ -40,7 +43,7 @@ interface SecurityPolicyRule {
40
43
  paths?: string[];
41
44
  userRoles?: string[];
42
45
  };
43
- parameters: Record<string, any>;
46
+ parameters: Record<string, unknown>;
44
47
  exceptions: string[];
45
48
  }
46
49
 
@@ -58,7 +61,7 @@ interface SecurityConfiguration {
58
61
  logging: LoggingSettings;
59
62
  monitoring: MonitoringSettings;
60
63
  };
61
- overrides: Record<string, any>;
64
+ overrides: Record<string, unknown>;
62
65
  metadata: {
63
66
  lastUpdated: Date;
64
67
  checksum: string;
@@ -244,7 +247,7 @@ const SecurityPolicySchema = z.object({
244
247
  paths: z.array(z.string()).optional(),
245
248
  userRoles: z.array(z.string()).optional(),
246
249
  }),
247
- parameters: z.record(z.any()),
250
+ parameters: z.record(z.unknown()),
248
251
  exceptions: z.array(z.string()),
249
252
  }),
250
253
  ),
@@ -276,15 +279,16 @@ export class SecurityConfigManager {
276
279
  * Initialize security configuration manager
277
280
  */
278
281
  async initialize(): Promise<void> {
279
- console.log("[Security Config] Initializing security configuration manager");
282
+ logger.info("Initializing security configuration manager");
280
283
 
281
284
  await this.ensureConfigDirectory();
282
285
  await this.loadConfigurations();
283
286
  await this.loadPolicies();
284
287
 
285
- console.log(
286
- `[Security Config] Loaded ${this.configurations.size} configurations and ${this.policies.size} policies`,
287
- );
288
+ logger.info("Loaded configurations and policies", {
289
+ configurationCount: this.configurations.size,
290
+ policyCount: this.policies.size
291
+ });
288
292
  }
289
293
 
290
294
  /**
@@ -312,7 +316,7 @@ export class SecurityConfigManager {
312
316
  this.policies.set(policy.id, policy);
313
317
  await this.savePolicyToFile(policy);
314
318
 
315
- console.log(`[Security Config] Created policy: ${policy.name} (${policy.id})`);
319
+ logger.info(`Created policy: ${policy.name}`, { policyId: policy.id });
316
320
  return policy;
317
321
  }
318
322
 
@@ -345,7 +349,7 @@ export class SecurityConfigManager {
345
349
  this.policies.set(policyId, updatedPolicy);
346
350
  await this.savePolicyToFile(updatedPolicy);
347
351
 
348
- console.log(`[Security Config] Updated policy: ${updatedPolicy.name} (${policyId})`);
352
+ logger.info(`Updated policy: ${updatedPolicy.name}`, { policyId });
349
353
  return updatedPolicy;
350
354
  }
351
355
 
@@ -375,7 +379,7 @@ export class SecurityConfigManager {
375
379
  this.configurations.set(environment, config);
376
380
  await this.saveConfigurationToFile(config);
377
381
 
378
- console.log(`[Security Config] Created configuration for environment: ${environment}`);
382
+ logger.info(`Created configuration for environment: ${environment}`, { environment });
379
383
  return config;
380
384
  }
381
385
 
@@ -411,7 +415,7 @@ export class SecurityConfigManager {
411
415
  throw new SecurityValidationError("Policy not found", [{ message: `Policy ${policyId} not found` }]);
412
416
  }
413
417
  if (!policy.enabled) {
414
- console.warn(`[Security Config] Skipping disabled policy: ${policy.name}`);
418
+ logger.warn(`Skipping disabled policy: ${policy.name}`, { policyName: policy.name });
415
419
  continue;
416
420
  }
417
421
  policies.push(policy);
@@ -424,7 +428,7 @@ export class SecurityConfigManager {
424
428
  this.configurations.set(environment, config);
425
429
  await this.saveConfigurationToFile(config);
426
430
 
427
- console.log(`[Security Config] Applied ${policies.length} policies to ${environment}`);
431
+ logger.info(`Applied policies to ${environment}`, { policyCount: policies.length, environment });
428
432
  return config;
429
433
  }
430
434
 
@@ -673,7 +677,7 @@ export class SecurityConfigManager {
673
677
  }
674
678
  }
675
679
  } catch (_error) {
676
- console.log("[Security Config] No existing configurations found, will create new ones");
680
+ logger.info("No existing configurations found, will create new ones");
677
681
  }
678
682
  }
679
683
 
@@ -701,7 +705,7 @@ export class SecurityConfigManager {
701
705
  }
702
706
  }
703
707
  } catch (_error) {
704
- console.log("[Security Config] No existing policies found");
708
+ logger.info("No existing policies found");
705
709
  }
706
710
  }
707
711
 
@@ -780,10 +784,10 @@ export class SecurityConfigManager {
780
784
  try {
781
785
  const filePath = path.join(this.configPath, "policies", `${policyId}.json`);
782
786
  await fs.unlink(filePath);
783
- console.log(`[Security Config] Deleted policy: ${policy.name} (${policyId})`);
787
+ logger.info(`Deleted policy: ${policy.name}`, { policyId });
784
788
  return true;
785
789
  } catch (error) {
786
- console.warn(`[Security Config] Failed to delete policy file: ${error}`);
790
+ logger.warn("Failed to delete policy file", { error });
787
791
  return false;
788
792
  }
789
793
  }
@@ -820,7 +824,7 @@ export class SecurityConfigManager {
820
824
  this.configurations.set(config.environment, config);
821
825
  await this.saveConfigurationToFile(config);
822
826
 
823
- console.log(`[Security Config] Imported configuration for environment: ${config.environment}`);
827
+ logger.info(`Imported configuration for environment: ${config.environment}`, { environment: config.environment });
824
828
  return config;
825
829
  } catch (error) {
826
830
  throw new SecurityValidationError("Failed to import configuration", [{ message: String(error) }]);
@@ -4,7 +4,10 @@
4
4
  */
5
5
 
6
6
  import { EventEmitter } from "events";
7
- import { SecurityUtils } from "./SecurityConfig";
7
+ import { SecurityUtils } from "./SecurityConfig.js";
8
+ import { LoggerFactory } from "../utils/logger.js";
9
+
10
+ const logger = LoggerFactory.security();
8
11
 
9
12
  export interface SecurityEvent {
10
13
  id: string;
@@ -19,9 +22,9 @@ export interface SecurityEvent {
19
22
  userAgent?: string;
20
23
  endpoint?: string;
21
24
  method?: string;
22
- payload?: any;
25
+ payload?: unknown;
23
26
  error?: string;
24
- metadata?: Record<string, any>;
27
+ metadata?: Record<string, unknown>;
25
28
  };
26
29
  description: string;
27
30
  riskScore: number;
@@ -131,12 +134,12 @@ export class SecurityMonitor extends EventEmitter {
131
134
  */
132
135
  start(): void {
133
136
  if (this.isMonitoring) {
134
- console.warn("[Security Monitor] Already monitoring");
137
+ logger.warn("Already monitoring");
135
138
  return;
136
139
  }
137
140
 
138
141
  this.isMonitoring = true;
139
- console.log("[Security Monitor] Starting security monitoring");
142
+ logger.info("Starting security monitoring");
140
143
 
141
144
  // Start metrics collection
142
145
  this.metricsInterval = setInterval(() => {
@@ -151,7 +154,7 @@ export class SecurityMonitor extends EventEmitter {
151
154
  */
152
155
  stop(): void {
153
156
  if (!this.isMonitoring) {
154
- console.warn("[Security Monitor] Not currently monitoring");
157
+ logger.warn("Not currently monitoring");
155
158
  return;
156
159
  }
157
160
 
@@ -162,7 +165,7 @@ export class SecurityMonitor extends EventEmitter {
162
165
  this.metricsInterval = undefined;
163
166
  }
164
167
 
165
- console.log("[Security Monitor] Stopped security monitoring");
168
+ logger.info("Stopped security monitoring");
166
169
  this.emit("monitoring-stopped");
167
170
  }
168
171
 
@@ -191,7 +194,7 @@ export class SecurityMonitor extends EventEmitter {
191
194
  // Emit event for real-time processing
192
195
  this.emit("security-event", event);
193
196
 
194
- console.log(`[Security Monitor] Logged ${event.severity} event: ${event.type} - ${event.description}`);
197
+ logger.info(`Logged ${event.severity} event: ${event.type} - ${event.description}`);
195
198
 
196
199
  return event;
197
200
  }
@@ -274,7 +277,7 @@ export class SecurityMonitor extends EventEmitter {
274
277
  await this.executeLogAction(event);
275
278
  break;
276
279
  default:
277
- console.log(`[Security Monitor] Action ${type} queued for manual processing`);
280
+ logger.info(`Action ${type} queued for manual processing`, { type });
278
281
  }
279
282
 
280
283
  action.result = "success";
@@ -282,7 +285,7 @@ export class SecurityMonitor extends EventEmitter {
282
285
  } catch (error) {
283
286
  action.result = "failure";
284
287
  action.details += ` - failed: ${error instanceof Error ? error.message : String(error)}`;
285
- console.error(`[Security Monitor] Action ${type} failed:`, error);
288
+ logger.error(`Action ${type} failed`, { type, error });
286
289
  }
287
290
 
288
291
  return action;
@@ -293,7 +296,7 @@ export class SecurityMonitor extends EventEmitter {
293
296
  */
294
297
  private async executeBlockAction(event: SecurityEvent): Promise<void> {
295
298
  if (event.details.ipAddress) {
296
- console.log(`[Security Monitor] Blocking IP: ${event.details.ipAddress}`);
299
+ logger.info(`Blocking IP: ${event.details.ipAddress}`);
297
300
  // In a real implementation, this would interface with firewall/load balancer
298
301
  this.emit("ip-blocked", { ip: event.details.ipAddress, reason: event.description });
299
302
  }
@@ -304,7 +307,7 @@ export class SecurityMonitor extends EventEmitter {
304
307
  */
305
308
  private async executeThrottleAction(event: SecurityEvent): Promise<void> {
306
309
  if (event.details.userId) {
307
- console.log(`[Security Monitor] Throttling user: ${event.details.userId}`);
310
+ logger.info(`Throttling user: ${event.details.userId}`);
308
311
  // In a real implementation, this would apply rate limiting
309
312
  this.emit("user-throttled", { userId: event.details.userId, reason: event.description });
310
313
  }
@@ -314,7 +317,7 @@ export class SecurityMonitor extends EventEmitter {
314
317
  * Execute alert action
315
318
  */
316
319
  private async executeAlertAction(event: SecurityEvent): Promise<void> {
317
- console.log(`[Security Monitor] Alert triggered for event: ${event.id}`);
320
+ logger.info(`Alert triggered for event: ${event.id}`);
318
321
  this.emit("security-alert", event);
319
322
  }
320
323
 
@@ -322,7 +325,7 @@ export class SecurityMonitor extends EventEmitter {
322
325
  * Execute log action
323
326
  */
324
327
  private async executeLogAction(event: SecurityEvent): Promise<void> {
325
- console.log(`[Security Monitor] Enhanced logging for event: ${event.id}`);
328
+ logger.info(`Enhanced logging for event: ${event.id}`);
326
329
  // Additional detailed logging would go here
327
330
  }
328
331
 
@@ -346,7 +349,7 @@ export class SecurityMonitor extends EventEmitter {
346
349
 
347
350
  this.alerts.push(alert);
348
351
 
349
- console.log(`[Security Monitor] Created ${alert.severity} alert: ${alert.title}`);
352
+ logger.info(`Created ${alert.severity} alert: ${alert.title}`);
350
353
  this.emit("alert-created", alert);
351
354
 
352
355
  return alert;
@@ -611,9 +614,9 @@ export class SecurityMonitor extends EventEmitter {
611
614
  /**
612
615
  * Group array by property
613
616
  */
614
- private groupBy(array: any[], property: string): Record<string, number> {
615
- return array.reduce((acc, item) => {
616
- const key = item[property] || "unknown";
617
+ private groupBy(array: Array<Record<string, any>>, property: string): Record<string, number> { // eslint-disable-line @typescript-eslint/no-explicit-any
618
+ return array.reduce<Record<string, number>>((acc, item) => {
619
+ const key = (item && item[property]) || "unknown";
617
620
  acc[key] = (acc[key] || 0) + 1;
618
621
  return acc;
619
622
  }, {});
@@ -664,7 +667,7 @@ export class SecurityMonitor extends EventEmitter {
664
667
  */
665
668
  addThreatIntelligence(threat: ThreatIntelligence): void {
666
669
  this.threatIntel.set(threat.value, threat);
667
- console.log(`[Security Monitor] Added threat intelligence: ${threat.type} - ${threat.value}`);
670
+ logger.info(`Added threat intelligence: ${threat.type} - ${threat.value}`);
668
671
  }
669
672
 
670
673
  /**
@@ -673,7 +676,7 @@ export class SecurityMonitor extends EventEmitter {
673
676
  removeThreatIntelligence(value: string): boolean {
674
677
  const removed = this.threatIntel.delete(value);
675
678
  if (removed) {
676
- console.log(`[Security Monitor] Removed threat intelligence: ${value}`);
679
+ logger.info(`Removed threat intelligence: ${value}`);
677
680
  }
678
681
  return removed;
679
682
  }
@@ -700,7 +703,7 @@ export class SecurityMonitor extends EventEmitter {
700
703
  };
701
704
  }
702
705
 
703
- console.log(`[Security Monitor] Updated alert ${alertId} status to ${status}`);
706
+ logger.info(`Updated alert ${alertId} status to ${status}`);
704
707
  this.emit("alert-updated", alert);
705
708
  return true;
706
709
  }
@@ -5,8 +5,9 @@
5
5
 
6
6
  import * as fs from "fs/promises";
7
7
  import * as path from "path";
8
- import { SecurityUtils } from "./SecurityConfig";
9
- import { SecurityValidationError } from "./InputValidator";
8
+ import { SecurityUtils } from "./SecurityConfig.js";
9
+ import { SecurityValidationError } from "./InputValidator.js";
10
+ import { LoggerFactory } from "../utils/logger.js";
10
11
 
11
12
  interface SecurityReviewRule {
12
13
  id: string;
@@ -345,7 +346,8 @@ export class SecurityReviewer {
345
346
  } = {},
346
347
  ): Promise<CodeReviewResult> {
347
348
  const reviewId = SecurityUtils.generateSecureToken(16);
348
- console.log(`[Security Reviewer] Reviewing file: ${filePath}`);
349
+ const logger = LoggerFactory.security();
350
+ logger.info("Reviewing file", { filePath, reviewId });
349
351
 
350
352
  try {
351
353
  const content = await fs.readFile(filePath, "utf-8");
@@ -376,11 +378,11 @@ export class SecurityReviewer {
376
378
  };
377
379
 
378
380
  this.reviewHistory.push(result);
379
- console.log(`[Security Reviewer] Review completed: ${findings.length} findings`);
381
+ logger.info("Review completed", { filePath, findingsCount: findings.length, reviewId });
380
382
 
381
383
  return result;
382
384
  } catch (error) {
383
- console.error(`[Security Reviewer] Review failed for ${filePath}:`, error);
385
+ logger.error("Review failed", { filePath, reviewId, error: error instanceof Error ? error.message : String(error) });
384
386
  throw new SecurityValidationError("Security review failed", [{ message: String(error) }]);
385
387
  }
386
388
  }
@@ -398,7 +400,8 @@ export class SecurityReviewer {
398
400
  aiAnalysis?: boolean;
399
401
  } = {},
400
402
  ): Promise<CodeReviewResult[]> {
401
- console.log(`[Security Reviewer] Reviewing directory: ${dirPath}`);
403
+ const logger = LoggerFactory.security();
404
+ logger.info("Reviewing directory", { dirPath });
402
405
 
403
406
  const results: CodeReviewResult[] = [];
404
407
  const filePattern = options.filePattern || /\.(ts|js|jsx|tsx)$/;
@@ -420,7 +423,7 @@ export class SecurityReviewer {
420
423
 
421
424
  return results;
422
425
  } catch (error) {
423
- console.error(`[Security Reviewer] Directory review failed for ${dirPath}:`, error);
426
+ logger.error("Directory review failed", { dirPath, error: error instanceof Error ? error.message : String(error) });
424
427
  throw new SecurityValidationError("Directory review failed", [{ message: String(error) }]);
425
428
  }
426
429
  }
@@ -4,8 +4,9 @@
4
4
  */
5
5
 
6
6
  // Core Security Components
7
- export { SecurityConfig, SecurityUtils, createSecureError, getEnvironmentSecurity } from "./SecurityConfig";
8
- import { SecurityValidationError } from "./InputValidator";
7
+ export { SecurityConfig, SecurityUtils, createSecureError, getEnvironmentSecurity } from "./SecurityConfig.js";
8
+ import { SecurityValidationError } from "./InputValidator.js";
9
+ import { LoggerFactory } from "../utils/logger.js";
9
10
  export {
10
11
  InputSanitizer,
11
12
  SecuritySchemas,
@@ -13,31 +14,32 @@ export {
13
14
  SecurityValidationError,
14
15
  validateSecurity,
15
16
  ToolSchemas,
16
- } from "./InputValidator";
17
+ } from "./InputValidator.js";
17
18
 
18
19
  // AI-Powered Security Scanner
19
- import { AISecurityScanner } from "./AISecurityScanner";
20
- export { AISecurityScanner } from "./AISecurityScanner";
20
+ import { AISecurityScanner } from "./AISecurityScanner.js";
21
+ import type { SecurityScanResult } from "./AISecurityScanner.js";
22
+ export { AISecurityScanner } from "./AISecurityScanner.js";
21
23
 
22
24
  // Automated Remediation System
23
- import { AutomatedRemediation, RemediationResult as _RemediationResult } from "./AutomatedRemediation";
24
- export { AutomatedRemediation, RemediationResult } from "./AutomatedRemediation";
25
+ import { AutomatedRemediation, RemediationResult as _RemediationResult } from "./AutomatedRemediation.js";
26
+ export { AutomatedRemediation, RemediationResult } from "./AutomatedRemediation.js";
25
27
 
26
28
  // Security Code Reviewer
27
- import { SecurityReviewer, CodeReviewResult as _CodeReviewResult } from "./SecurityReviewer";
28
- export { SecurityReviewer, CodeReviewResult } from "./SecurityReviewer";
29
+ import { SecurityReviewer, CodeReviewResult as _CodeReviewResult } from "./SecurityReviewer.js";
30
+ export { SecurityReviewer, CodeReviewResult } from "./SecurityReviewer.js";
29
31
 
30
32
  // Security Configuration Manager
31
- import { SecurityConfigManager } from "./SecurityConfigManager";
32
- export { SecurityConfigManager } from "./SecurityConfigManager";
33
+ import { SecurityConfigManager } from "./SecurityConfigManager.js";
34
+ export { SecurityConfigManager } from "./SecurityConfigManager.js";
33
35
 
34
36
  // Security Monitoring and Alerting
35
- import { SecurityMonitor, SecurityEvent as _SecurityEvent } from "./SecurityMonitoring";
36
- export { SecurityMonitor, SecurityEvent } from "./SecurityMonitoring";
37
+ import { SecurityMonitor, SecurityEvent as _SecurityEvent } from "./SecurityMonitoring.js";
38
+ export { SecurityMonitor, SecurityEvent } from "./SecurityMonitoring.js";
37
39
 
38
40
  // CI/CD Pipeline Integration
39
- import { SecurityCIPipeline, PipelineSecurityReport as _PipelineSecurityReport } from "./SecurityCIPipeline";
40
- export { SecurityCIPipeline, PipelineSecurityReport } from "./SecurityCIPipeline";
41
+ import { SecurityCIPipeline, PipelineSecurityReport as _PipelineSecurityReport } from "./SecurityCIPipeline.js";
42
+ export { SecurityCIPipeline, PipelineSecurityReport } from "./SecurityCIPipeline.js";
41
43
 
42
44
  // Type definitions for external use
43
45
  export interface SecurityScanOptions {
@@ -87,11 +89,13 @@ export class SecuritySystem {
87
89
  */
88
90
  async initialize(): Promise<void> {
89
91
  if (this.initialized) {
90
- console.log("[Security System] Already initialized");
92
+ const logger = LoggerFactory.security();
93
+ logger.info("Security system already initialized");
91
94
  return;
92
95
  }
93
96
 
94
- console.log("[Security System] Initializing comprehensive security system...");
97
+ const logger = LoggerFactory.security();
98
+ logger.info("Initializing comprehensive security system");
95
99
 
96
100
  try {
97
101
  // Initialize all components
@@ -102,9 +106,11 @@ export class SecuritySystem {
102
106
  this.monitor.start();
103
107
 
104
108
  this.initialized = true;
105
- console.log("[Security System] Security system initialized successfully");
109
+ logger.info("Security system initialized successfully");
106
110
  } catch (error) {
107
- console.error("[Security System] Initialization failed:", error);
111
+ logger.error("Security system initialization failed", {
112
+ error: error instanceof Error ? error.message : String(error),
113
+ });
108
114
  throw new SecurityValidationError("Security system initialization failed", [{ message: String(error) }]);
109
115
  }
110
116
  }
@@ -128,26 +134,54 @@ export class SecuritySystem {
128
134
  /**
129
135
  * Create and execute remediation plan
130
136
  */
131
- async remediate(scanResult: any, dryRun = false): Promise<_RemediationResult[]> {
137
+ async remediate(scanResult: unknown, dryRun = false): Promise<_RemediationResult[]> {
132
138
  this.ensureInitialized();
133
- const plan = await this.remediation.createRemediationPlan(scanResult);
139
+ const plan = await this.remediation.createRemediationPlan(scanResult as SecurityScanResult);
134
140
  return await this.remediation.executeRemediationPlan(plan, { dryRun });
135
141
  }
136
142
 
137
143
  /**
138
144
  * Execute security gates for CI/CD
139
145
  */
140
- async executeGates(stage: string, context: any, options?: SecurityGateOptions): Promise<_PipelineSecurityReport> {
146
+ async executeGates(stage: string, context: unknown, options?: SecurityGateOptions): Promise<_PipelineSecurityReport> {
141
147
  this.ensureInitialized();
142
- return await this.pipeline.executeSecurityGates(stage as any, context, options);
148
+ const validStages = ["pre-commit", "pre-build", "pre-deploy", "post-deploy"] as const;
149
+ type ValidStage = (typeof validStages)[number];
150
+ const validStage = validStages.includes(stage as ValidStage) ? (stage as ValidStage) : "pre-commit";
151
+
152
+ // Create a minimal PipelineContext from unknown input
153
+ const pipelineContext = {
154
+ repositoryUrl: "",
155
+ branch: "",
156
+ commit: "",
157
+ author: "",
158
+ environment: "development",
159
+ buildNumber: "",
160
+ artifacts: [],
161
+ ...(typeof context === "object" && context !== null ? context : {}),
162
+ };
163
+
164
+ return await this.pipeline.executeSecurityGates(validStage, pipelineContext, options);
143
165
  }
144
166
 
145
167
  /**
146
168
  * Log security event
147
169
  */
148
- async logEvent(eventData: any): Promise<_SecurityEvent> {
170
+ async logEvent(eventData: unknown): Promise<_SecurityEvent> {
149
171
  this.ensureInitialized();
150
- return await this.monitor.logSecurityEvent(eventData);
172
+
173
+ // Create a minimal SecurityEvent from unknown input
174
+ const securityEventData = {
175
+ type: "system" as const,
176
+ description: "Security event",
177
+ severity: "low" as const,
178
+ source: "unknown",
179
+ details: {},
180
+ riskScore: 0,
181
+ ...(typeof eventData === "object" && eventData !== null ? eventData : {}),
182
+ };
183
+
184
+ return await this.monitor.logSecurityEvent(securityEventData);
151
185
  }
152
186
 
153
187
  /**
@@ -171,12 +205,13 @@ export class SecuritySystem {
171
205
  return;
172
206
  }
173
207
 
174
- console.log("[Security System] Shutting down security system...");
208
+ const logger = LoggerFactory.security();
209
+ logger.info("Shutting down security system");
175
210
 
176
211
  this.monitor.stop();
177
212
  this.initialized = false;
178
213
 
179
- console.log("[Security System] Security system shutdown complete");
214
+ logger.info("Security system shutdown complete");
180
215
  }
181
216
 
182
217
  /**
@@ -225,12 +260,12 @@ export const security = {
225
260
  /**
226
261
  * Quick remediation
227
262
  */
228
- remediate: (scanResult: any, dryRun = true) => securitySystem.remediate(scanResult, dryRun),
263
+ remediate: (scanResult: unknown, dryRun = true) => securitySystem.remediate(scanResult, dryRun),
229
264
 
230
265
  /**
231
266
  * Log security event
232
267
  */
233
- logEvent: (eventData: any) => securitySystem.logEvent(eventData),
268
+ logEvent: (eventData: unknown) => securitySystem.logEvent(eventData),
234
269
 
235
270
  /**
236
271
  * Get security status