@mxf-dev/core 1.0.1 → 2.0.1

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 (303) hide show
  1. package/README.md +18 -0
  2. package/dist/adapters/FrameworkAdapter.js +1 -1
  3. package/dist/adapters/FrameworkAdapter.js.map +1 -1
  4. package/dist/config/ConfigManager.d.ts +9 -8
  5. package/dist/config/ConfigManager.d.ts.map +1 -1
  6. package/dist/config/ConfigManager.js +47 -17
  7. package/dist/config/ConfigManager.js.map +1 -1
  8. package/dist/config/memory-strata.config.d.ts +25 -0
  9. package/dist/config/memory-strata.config.d.ts.map +1 -0
  10. package/dist/config/memory-strata.config.js +107 -0
  11. package/dist/config/memory-strata.config.js.map +1 -0
  12. package/dist/constants/ToolNames.d.ts +1 -29
  13. package/dist/constants/ToolNames.d.ts.map +1 -1
  14. package/dist/constants/ToolNames.js +4 -17
  15. package/dist/constants/ToolNames.js.map +1 -1
  16. package/dist/database/DatabaseAdapterFactory.d.ts +14 -2
  17. package/dist/database/DatabaseAdapterFactory.d.ts.map +1 -1
  18. package/dist/database/DatabaseAdapterFactory.js +21 -6
  19. package/dist/database/DatabaseAdapterFactory.js.map +1 -1
  20. package/dist/database/adapters/mongodb/MongoBaseRepository.d.ts +7 -1
  21. package/dist/database/adapters/mongodb/MongoBaseRepository.d.ts.map +1 -1
  22. package/dist/database/adapters/mongodb/MongoBaseRepository.js +12 -2
  23. package/dist/database/adapters/mongodb/MongoBaseRepository.js.map +1 -1
  24. package/dist/events/ClientEventBus.d.ts +16 -77
  25. package/dist/events/ClientEventBus.d.ts.map +1 -1
  26. package/dist/events/ClientEventBus.js +38 -311
  27. package/dist/events/ClientEventBus.js.map +1 -1
  28. package/dist/events/EventBus.d.ts +1 -1
  29. package/dist/events/EventBus.d.ts.map +1 -1
  30. package/dist/events/EventBus.js +5 -4
  31. package/dist/events/EventBus.js.map +1 -1
  32. package/dist/events/EventBusBase.d.ts +139 -34
  33. package/dist/events/EventBusBase.d.ts.map +1 -1
  34. package/dist/events/EventBusBase.js +366 -88
  35. package/dist/events/EventBusBase.js.map +1 -1
  36. package/dist/events/EventNames.d.ts +10 -1
  37. package/dist/events/EventNames.d.ts.map +1 -1
  38. package/dist/events/EventNames.js +3 -0
  39. package/dist/events/EventNames.js.map +1 -1
  40. package/dist/events/PublicEvents.d.ts +6 -2
  41. package/dist/events/PublicEvents.d.ts.map +1 -1
  42. package/dist/events/PublicEvents.js +7 -4
  43. package/dist/events/PublicEvents.js.map +1 -1
  44. package/dist/events/ServerEventBus.d.ts +23 -112
  45. package/dist/events/ServerEventBus.d.ts.map +1 -1
  46. package/dist/events/ServerEventBus.js +58 -323
  47. package/dist/events/ServerEventBus.js.map +1 -1
  48. package/dist/events/event-definitions/LlmBudgetEvents.d.ts +68 -0
  49. package/dist/events/event-definitions/LlmBudgetEvents.d.ts.map +1 -0
  50. package/dist/events/event-definitions/LlmBudgetEvents.js +35 -0
  51. package/dist/events/event-definitions/LlmBudgetEvents.js.map +1 -0
  52. package/dist/interfaces/IMemoryPersistence.d.ts +41 -0
  53. package/dist/interfaces/IMemoryPersistence.d.ts.map +1 -0
  54. package/dist/interfaces/IMemoryPersistence.js +15 -0
  55. package/dist/interfaces/IMemoryPersistence.js.map +1 -0
  56. package/dist/middleware/MxpMiddleware.d.ts +8 -1
  57. package/dist/middleware/MxpMiddleware.d.ts.map +1 -1
  58. package/dist/middleware/MxpMiddleware.js +42 -20
  59. package/dist/middleware/MxpMiddleware.js.map +1 -1
  60. package/dist/models/channelKey.d.ts +1 -0
  61. package/dist/models/channelKey.d.ts.map +1 -1
  62. package/dist/models/channelKey.js +5 -0
  63. package/dist/models/channelKey.js.map +1 -1
  64. package/dist/models/memoryUtility.d.ts +39 -0
  65. package/dist/models/memoryUtility.d.ts.map +1 -0
  66. package/dist/models/memoryUtility.js +39 -0
  67. package/dist/models/memoryUtility.js.map +1 -0
  68. package/dist/models/user.d.ts.map +1 -1
  69. package/dist/models/user.js +23 -1
  70. package/dist/models/user.js.map +1 -1
  71. package/dist/mxp/BinaryProtocolLayer.d.ts +24 -8
  72. package/dist/mxp/BinaryProtocolLayer.d.ts.map +1 -1
  73. package/dist/mxp/BinaryProtocolLayer.js +90 -103
  74. package/dist/mxp/BinaryProtocolLayer.js.map +1 -1
  75. package/dist/mxp/ContextCompressionEngine.d.ts +57 -10
  76. package/dist/mxp/ContextCompressionEngine.d.ts.map +1 -1
  77. package/dist/mxp/ContextCompressionEngine.js +170 -128
  78. package/dist/mxp/ContextCompressionEngine.js.map +1 -1
  79. package/dist/mxp/MxpTokenOptimizer.d.ts +7 -3
  80. package/dist/mxp/MxpTokenOptimizer.d.ts.map +1 -1
  81. package/dist/mxp/MxpTokenOptimizer.js +8 -5
  82. package/dist/mxp/MxpTokenOptimizer.js.map +1 -1
  83. package/dist/prompts/MxfAgentSystemPrompt.d.ts +1 -1
  84. package/dist/prompts/MxfAgentSystemPrompt.d.ts.map +1 -1
  85. package/dist/prompts/MxfAgentSystemPrompt.js +47 -57
  86. package/dist/prompts/MxfAgentSystemPrompt.js.map +1 -1
  87. package/dist/protocols/mcp/ToolError.d.ts +123 -0
  88. package/dist/protocols/mcp/ToolError.d.ts.map +1 -0
  89. package/dist/protocols/mcp/ToolError.js +108 -0
  90. package/dist/protocols/mcp/ToolError.js.map +1 -0
  91. package/dist/protocols/mcp/defineTool.d.ts +133 -0
  92. package/dist/protocols/mcp/defineTool.d.ts.map +1 -0
  93. package/dist/protocols/mcp/defineTool.js +236 -0
  94. package/dist/protocols/mcp/defineTool.js.map +1 -0
  95. package/dist/protocols/mcp/security/HttpTargetGuard.d.ts +38 -0
  96. package/dist/protocols/mcp/security/HttpTargetGuard.d.ts.map +1 -0
  97. package/dist/protocols/mcp/security/HttpTargetGuard.js +227 -0
  98. package/dist/protocols/mcp/security/HttpTargetGuard.js.map +1 -0
  99. package/dist/protocols/mcp/security/McpSecurityGuard.d.ts +9 -1
  100. package/dist/protocols/mcp/security/McpSecurityGuard.d.ts.map +1 -1
  101. package/dist/protocols/mcp/security/McpSecurityGuard.js +10 -2
  102. package/dist/protocols/mcp/security/McpSecurityGuard.js.map +1 -1
  103. package/dist/protocols/mcp/security/McpToolPolicy.d.ts +81 -0
  104. package/dist/protocols/mcp/security/McpToolPolicy.d.ts.map +1 -0
  105. package/dist/protocols/mcp/security/McpToolPolicy.js +202 -0
  106. package/dist/protocols/mcp/security/McpToolPolicy.js.map +1 -0
  107. package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts +51 -18
  108. package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts.map +1 -1
  109. package/dist/protocols/mcp/services/ExternalMcpServerManager.js +256 -283
  110. package/dist/protocols/mcp/services/ExternalMcpServerManager.js.map +1 -1
  111. package/dist/protocols/mcp/services/ExternalServerConfigs.d.ts +39 -6
  112. package/dist/protocols/mcp/services/ExternalServerConfigs.d.ts.map +1 -1
  113. package/dist/protocols/mcp/services/ExternalServerConfigs.js +76 -18
  114. package/dist/protocols/mcp/services/ExternalServerConfigs.js.map +1 -1
  115. package/dist/protocols/mcp/tools/AnalyticsTools.js +1 -1
  116. package/dist/protocols/mcp/tools/AnalyticsTools.js.map +1 -1
  117. package/dist/protocols/mcp/tools/CodeAnalysisTools.d.ts.map +1 -1
  118. package/dist/protocols/mcp/tools/CodeAnalysisTools.js +15 -0
  119. package/dist/protocols/mcp/tools/CodeAnalysisTools.js.map +1 -1
  120. package/dist/protocols/mcp/tools/EffectivenessTools.js +3 -3
  121. package/dist/protocols/mcp/tools/EffectivenessTools.js.map +1 -1
  122. package/dist/protocols/mcp/tools/GitTools.d.ts +9 -369
  123. package/dist/protocols/mcp/tools/GitTools.d.ts.map +1 -1
  124. package/dist/protocols/mcp/tools/GitTools.js +222 -517
  125. package/dist/protocols/mcp/tools/GitTools.js.map +1 -1
  126. package/dist/protocols/mcp/tools/InfrastructureTools.d.ts +56 -24
  127. package/dist/protocols/mcp/tools/InfrastructureTools.d.ts.map +1 -1
  128. package/dist/protocols/mcp/tools/InfrastructureTools.js +117 -26
  129. package/dist/protocols/mcp/tools/InfrastructureTools.js.map +1 -1
  130. package/dist/protocols/mcp/tools/MemorySearchTools.d.ts +0 -3
  131. package/dist/protocols/mcp/tools/MemorySearchTools.d.ts.map +1 -1
  132. package/dist/protocols/mcp/tools/MemorySearchTools.js +58 -1
  133. package/dist/protocols/mcp/tools/MemorySearchTools.js.map +1 -1
  134. package/dist/protocols/mcp/tools/OrparTools.d.ts +8 -0
  135. package/dist/protocols/mcp/tools/OrparTools.d.ts.map +1 -1
  136. package/dist/protocols/mcp/tools/OrparTools.js +66 -0
  137. package/dist/protocols/mcp/tools/OrparTools.js.map +1 -1
  138. package/dist/protocols/mcp/tools/SafetyTools.d.ts +7 -525
  139. package/dist/protocols/mcp/tools/SafetyTools.d.ts.map +1 -1
  140. package/dist/protocols/mcp/tools/SafetyTools.js +349 -514
  141. package/dist/protocols/mcp/tools/SafetyTools.js.map +1 -1
  142. package/dist/protocols/mcp/tools/TaskPlanningTools.d.ts.map +1 -1
  143. package/dist/protocols/mcp/tools/TaskPlanningTools.js +56 -26
  144. package/dist/protocols/mcp/tools/TaskPlanningTools.js.map +1 -1
  145. package/dist/protocols/mcp/tools/TestTools.d.ts +15 -376
  146. package/dist/protocols/mcp/tools/TestTools.d.ts.map +1 -1
  147. package/dist/protocols/mcp/tools/TestTools.js +241 -363
  148. package/dist/protocols/mcp/tools/TestTools.js.map +1 -1
  149. package/dist/protocols/mcp/tools/TypeScriptTools.d.ts +6 -276
  150. package/dist/protocols/mcp/tools/TypeScriptTools.d.ts.map +1 -1
  151. package/dist/protocols/mcp/tools/TypeScriptTools.js +223 -337
  152. package/dist/protocols/mcp/tools/TypeScriptTools.js.map +1 -1
  153. package/dist/protocols/mcp/tools/WebTools.d.ts +15 -728
  154. package/dist/protocols/mcp/tools/WebTools.d.ts.map +1 -1
  155. package/dist/protocols/mcp/tools/WebTools.js +151 -257
  156. package/dist/protocols/mcp/tools/WebTools.js.map +1 -1
  157. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.d.ts +5 -3
  158. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.d.ts.map +1 -1
  159. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.js +31 -6
  160. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.js.map +1 -1
  161. package/dist/schemas/EventPayloadSchema.d.ts +21 -0
  162. package/dist/schemas/EventPayloadSchema.d.ts.map +1 -1
  163. package/dist/schemas/EventPayloadSchema.js +14 -0
  164. package/dist/schemas/EventPayloadSchema.js.map +1 -1
  165. package/dist/services/BackgroundTaskManager.d.ts.map +1 -1
  166. package/dist/services/BackgroundTaskManager.js +12 -4
  167. package/dist/services/BackgroundTaskManager.js.map +1 -1
  168. package/dist/services/BrowserManager.d.ts +1 -1
  169. package/dist/services/BrowserManager.d.ts.map +1 -1
  170. package/dist/services/BrowserManager.js +26 -3
  171. package/dist/services/BrowserManager.js.map +1 -1
  172. package/dist/services/MemoryCompressor.d.ts +11 -2
  173. package/dist/services/MemoryCompressor.d.ts.map +1 -1
  174. package/dist/services/MemoryCompressor.js +8 -26
  175. package/dist/services/MemoryCompressor.js.map +1 -1
  176. package/dist/services/MemoryService.d.ts +16 -3
  177. package/dist/services/MemoryService.d.ts.map +1 -1
  178. package/dist/services/MemoryService.js +79 -55
  179. package/dist/services/MemoryService.js.map +1 -1
  180. package/dist/services/MxfMLService.d.ts +5 -0
  181. package/dist/services/MxfMLService.d.ts.map +1 -1
  182. package/dist/services/MxfMLService.js +32 -6
  183. package/dist/services/MxfMLService.js.map +1 -1
  184. package/dist/services/PredictiveAnalyticsService.d.ts +45 -9
  185. package/dist/services/PredictiveAnalyticsService.d.ts.map +1 -1
  186. package/dist/services/PredictiveAnalyticsService.js +82 -44
  187. package/dist/services/PredictiveAnalyticsService.js.map +1 -1
  188. package/dist/services/QValueManager.d.ts +7 -0
  189. package/dist/services/QValueManager.d.ts.map +1 -1
  190. package/dist/services/QValueManager.js +9 -0
  191. package/dist/services/QValueManager.js.map +1 -1
  192. package/dist/services/RewardSignalProcessor.d.ts +38 -1
  193. package/dist/services/RewardSignalProcessor.d.ts.map +1 -1
  194. package/dist/services/RewardSignalProcessor.js +109 -7
  195. package/dist/services/RewardSignalProcessor.js.map +1 -1
  196. package/dist/services/SharedStateService.d.ts +16 -2
  197. package/dist/services/SharedStateService.d.ts.map +1 -1
  198. package/dist/services/SharedStateService.js +44 -3
  199. package/dist/services/SharedStateService.js.map +1 -1
  200. package/dist/services/TaskEffectivenessService.d.ts +34 -18
  201. package/dist/services/TaskEffectivenessService.d.ts.map +1 -1
  202. package/dist/services/TaskEffectivenessService.js +91 -155
  203. package/dist/services/TaskEffectivenessService.js.map +1 -1
  204. package/dist/services/WebSearchService.d.ts.map +1 -1
  205. package/dist/services/WebSearchService.js.map +1 -1
  206. package/dist/services/dag/TaskDagService.d.ts.map +1 -1
  207. package/dist/services/dag/TaskDagService.js +2 -0
  208. package/dist/services/dag/TaskDagService.js.map +1 -1
  209. package/dist/services/orpar-memory/OrparMemoryCoordinator.d.ts +7 -0
  210. package/dist/services/orpar-memory/OrparMemoryCoordinator.d.ts.map +1 -1
  211. package/dist/services/orpar-memory/OrparMemoryCoordinator.js +71 -10
  212. package/dist/services/orpar-memory/OrparMemoryCoordinator.js.map +1 -1
  213. package/dist/types/MemoryUtilityTypes.d.ts +2 -0
  214. package/dist/types/MemoryUtilityTypes.d.ts.map +1 -1
  215. package/dist/types/MemoryUtilityTypes.js.map +1 -1
  216. package/dist/utils/Logger.d.ts +43 -3
  217. package/dist/utils/Logger.d.ts.map +1 -1
  218. package/dist/utils/Logger.js +78 -36
  219. package/dist/utils/Logger.js.map +1 -1
  220. package/dist/utils/MxpEncryption.d.ts +19 -6
  221. package/dist/utils/MxpEncryption.d.ts.map +1 -1
  222. package/dist/utils/MxpEncryption.js +48 -16
  223. package/dist/utils/MxpEncryption.js.map +1 -1
  224. package/package.json +19 -4
  225. package/src/adapters/FrameworkAdapter.ts +1 -1
  226. package/src/config/ConfigManager.ts +52 -19
  227. package/src/config/memory-strata.config.ts +136 -0
  228. package/src/constants/ToolNames.ts +4 -18
  229. package/src/database/DatabaseAdapterFactory.ts +23 -6
  230. package/src/database/adapters/mongodb/MongoBaseRepository.ts +16 -2
  231. package/src/events/ClientEventBus.ts +68 -403
  232. package/src/events/EventBus.ts +7 -8
  233. package/src/events/EventBusBase.ts +479 -116
  234. package/src/events/EventNames.ts +6 -0
  235. package/src/events/PublicEvents.ts +7 -4
  236. package/src/events/ServerEventBus.ts +78 -473
  237. package/src/events/event-definitions/LlmBudgetEvents.ts +74 -0
  238. package/src/interfaces/IMemoryPersistence.ts +51 -0
  239. package/src/middleware/MxpMiddleware.ts +51 -24
  240. package/src/models/channelKey.ts +18 -4
  241. package/src/models/memoryUtility.ts +64 -0
  242. package/src/models/user.ts +36 -4
  243. package/src/mxp/BinaryProtocolLayer.ts +108 -124
  244. package/src/mxp/ContextCompressionEngine.ts +219 -161
  245. package/src/mxp/MxpTokenOptimizer.ts +10 -10
  246. package/src/prompts/MxfAgentSystemPrompt.ts +45 -55
  247. package/src/protocols/mcp/ToolError.ts +201 -0
  248. package/src/protocols/mcp/defineTool.ts +379 -0
  249. package/src/protocols/mcp/security/HttpTargetGuard.ts +267 -0
  250. package/src/protocols/mcp/security/McpSecurityGuard.ts +10 -3
  251. package/src/protocols/mcp/security/McpToolPolicy.ts +221 -0
  252. package/src/protocols/mcp/services/ExternalMcpServerManager.ts +340 -322
  253. package/src/protocols/mcp/services/ExternalServerConfigs.ts +82 -19
  254. package/src/protocols/mcp/tools/AnalyticsTools.ts +1 -1
  255. package/src/protocols/mcp/tools/CodeAnalysisTools.ts +15 -0
  256. package/src/protocols/mcp/tools/EffectivenessTools.ts +3 -3
  257. package/src/protocols/mcp/tools/GitTools.ts +290 -569
  258. package/src/protocols/mcp/tools/InfrastructureTools.ts +189 -43
  259. package/src/protocols/mcp/tools/MemorySearchTools.ts +77 -1
  260. package/src/protocols/mcp/tools/OrparTools.ts +87 -0
  261. package/src/protocols/mcp/tools/SafetyTools.ts +501 -579
  262. package/src/protocols/mcp/tools/TaskPlanningTools.ts +81 -39
  263. package/src/protocols/mcp/tools/TestTools.ts +339 -419
  264. package/src/protocols/mcp/tools/TypeScriptTools.ts +316 -376
  265. package/src/protocols/mcp/tools/WebTools.ts +209 -307
  266. package/src/protocols/mcp/tools/shell/ShellExecuteHandler.ts +53 -14
  267. package/src/schemas/EventPayloadSchema.ts +37 -0
  268. package/src/services/BackgroundTaskManager.ts +12 -4
  269. package/src/services/BrowserManager.ts +41 -1
  270. package/src/services/MemoryCompressor.ts +20 -32
  271. package/src/services/MemoryService.ts +96 -58
  272. package/src/services/MxfMLService.ts +41 -7
  273. package/src/services/PredictiveAnalyticsService.ts +101 -51
  274. package/src/services/QValueManager.ts +10 -0
  275. package/src/services/RewardSignalProcessor.ts +138 -9
  276. package/src/services/SharedStateService.ts +56 -8
  277. package/src/services/TaskEffectivenessService.ts +114 -187
  278. package/src/services/WebSearchService.ts +2 -1
  279. package/src/services/dag/TaskDagService.ts +2 -0
  280. package/src/services/orpar-memory/OrparMemoryCoordinator.ts +86 -10
  281. package/src/types/MemoryUtilityTypes.ts +2 -0
  282. package/src/utils/Logger.ts +116 -40
  283. package/src/utils/MxpEncryption.ts +69 -34
  284. package/dist/mxp/MxpEventForwardingEnhancer.d.ts +0 -134
  285. package/dist/mxp/MxpEventForwardingEnhancer.d.ts.map +0 -1
  286. package/dist/mxp/MxpEventForwardingEnhancer.js +0 -361
  287. package/dist/mxp/MxpEventForwardingEnhancer.js.map +0 -1
  288. package/dist/protocols/mcp/services/ToolSchemaEnhancements.d.ts +0 -56
  289. package/dist/protocols/mcp/services/ToolSchemaEnhancements.d.ts.map +0 -1
  290. package/dist/protocols/mcp/services/ToolSchemaEnhancements.js +0 -57
  291. package/dist/protocols/mcp/services/ToolSchemaEnhancements.js.map +0 -1
  292. package/dist/protocols/mcp/tools/ControlLoopLifecycle.d.ts +0 -270
  293. package/dist/protocols/mcp/tools/ControlLoopLifecycle.d.ts.map +0 -1
  294. package/dist/protocols/mcp/tools/ControlLoopLifecycle.js +0 -256
  295. package/dist/protocols/mcp/tools/ControlLoopLifecycle.js.map +0 -1
  296. package/dist/protocols/mcp/tools/LspTools.d.ts +0 -495
  297. package/dist/protocols/mcp/tools/LspTools.d.ts.map +0 -1
  298. package/dist/protocols/mcp/tools/LspTools.js +0 -469
  299. package/dist/protocols/mcp/tools/LspTools.js.map +0 -1
  300. package/src/mxp/MxpEventForwardingEnhancer.ts +0 -471
  301. package/src/protocols/mcp/services/ToolSchemaEnhancements.ts +0 -92
  302. package/src/protocols/mcp/tools/ControlLoopLifecycle.ts +0 -302
  303. package/src/protocols/mcp/tools/LspTools.ts +0 -476
@@ -1,471 +0,0 @@
1
- /**
2
- * Copyright 2024 Brad Anderson
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- *
16
- * @author Brad Anderson <BradA1878@pm.me>
17
- * @repository https://github.com/BradA1878/model-exchange-framework
18
- * @documentation https://mxf-dev.github.io/mxf/
19
- */
20
-
21
- /**
22
- * MXP Event Forwarding Queue Enhancer
23
- *
24
- * Enhances the existing EventForwardingQueue with MXP 2.0 compression and optimization.
25
- * Integrates binary protocol, message batching, and priority-aware compression.
26
- * Only activates when bandwidth optimization is enabled.
27
- */
28
-
29
- import { v4 as uuidv4 } from 'uuid';
30
- import { Logger } from '../utils/Logger.js';
31
- import { createStrictValidator } from '../utils/validation.js';
32
- import { EventBus } from '../events/EventBus.js';
33
- import { Events } from '../events/EventNames.js';
34
- import { MxpConfigManager } from './MxpConfigManager.js';
35
- import { BinaryProtocolLayer, CompressionResult } from './BinaryProtocolLayer.js';
36
-
37
- // Event priority levels (matching existing system)
38
- export enum EventPriority {
39
- CRITICAL = 0, // System failures, agent disconnections
40
- HIGH = 1, // Task assignments, tool results
41
- NORMAL = 2, // Agent messages, status updates
42
- LOW = 3, // Discovery requests, heartbeats
43
- BACKGROUND = 4 // Memory updates, analytics
44
- }
45
-
46
- // Enhanced queued event with MXP support
47
- export interface MxpQueuedEvent {
48
- id: string;
49
- priority: EventPriority;
50
- type: 'agent' | 'channel';
51
- eventName: string;
52
- payload: any;
53
- targetId: string; // agentId or channelId
54
- excludedAgentId?: string;
55
- timestamp: number;
56
- retryCount: number;
57
-
58
- // MXP enhancements
59
- compressionEnabled?: boolean;
60
- originalSize?: number;
61
- compressedData?: CompressionResult;
62
- channelId?: string; // For MXP configuration lookup
63
- }
64
-
65
- // MXP-enhanced queue configuration
66
- export interface MxpEventQueueConfig {
67
- enabled: boolean;
68
- batchSize: number;
69
- processingDelayMs: number;
70
- maxQueueSize: number;
71
- maxRetries: number;
72
-
73
- // MXP-specific settings
74
- mxpEnabled: boolean;
75
- compressionByPriority: {
76
- [key in EventPriority]: {
77
- enabled: boolean;
78
- algorithm: 'none' | 'msgpack' | 'msgpack-compressed';
79
- minSize: number; // Only compress messages larger than this
80
- };
81
- };
82
- }
83
-
84
- // Default MXP-enhanced configuration
85
- const defaultMxpQueueConfig: MxpEventQueueConfig = {
86
- enabled: true,
87
- batchSize: 10,
88
- processingDelayMs: 25,
89
- maxQueueSize: 1000,
90
- maxRetries: 3,
91
-
92
- mxpEnabled: true,
93
- compressionByPriority: {
94
- [EventPriority.CRITICAL]: {
95
- enabled: false, // Speed over size for critical events
96
- algorithm: 'none',
97
- minSize: 0
98
- },
99
- [EventPriority.HIGH]: {
100
- enabled: true, // Light compression for high priority
101
- algorithm: 'msgpack',
102
- minSize: 512 // 512 bytes minimum
103
- },
104
- [EventPriority.NORMAL]: {
105
- enabled: true, // Standard compression
106
- algorithm: 'msgpack',
107
- minSize: 256 // 256 bytes minimum
108
- },
109
- [EventPriority.LOW]: {
110
- enabled: true, // Aggressive compression for low priority
111
- algorithm: 'msgpack-compressed',
112
- minSize: 128 // 128 bytes minimum
113
- },
114
- [EventPriority.BACKGROUND]: {
115
- enabled: true, // Maximum compression for background
116
- algorithm: 'msgpack-compressed',
117
- minSize: 64 // 64 bytes minimum
118
- }
119
- }
120
- };
121
-
122
- export class MxpEventForwardingEnhancer {
123
- private static instance: MxpEventForwardingEnhancer | null = null;
124
-
125
- private readonly logger: Logger;
126
- private readonly validator = createStrictValidator('MxpEventForwardingEnhancer');
127
- private config: MxpEventQueueConfig;
128
-
129
- // Enhanced queues with MXP support
130
- private enhancedQueues: Map<EventPriority, MxpQueuedEvent[]> = new Map();
131
- private processing: boolean = false;
132
- private processingTimer: NodeJS.Timeout | null = null;
133
-
134
- // Statistics tracking
135
- private stats = {
136
- totalEvents: 0,
137
- compressedEvents: 0,
138
- totalBandwidthSaved: 0,
139
- averageCompressionRatio: 0,
140
- processingTimeMs: 0
141
- };
142
-
143
- private constructor(config: MxpEventQueueConfig = defaultMxpQueueConfig) {
144
- this.config = { ...config };
145
- this.logger = new Logger('info', 'MxpEventForwardingEnhancer', 'server');
146
-
147
- // Initialize enhanced priority queues
148
- Object.values(EventPriority).forEach(priority => {
149
- if (typeof priority === 'number') {
150
- this.enhancedQueues.set(priority, []);
151
- }
152
- });
153
-
154
- }
155
-
156
- /**
157
- * Get the singleton instance of MxpEventForwardingEnhancer
158
- */
159
- public static getInstance(): MxpEventForwardingEnhancer {
160
- if (!MxpEventForwardingEnhancer.instance) {
161
- MxpEventForwardingEnhancer.instance = new MxpEventForwardingEnhancer();
162
- }
163
- return MxpEventForwardingEnhancer.instance;
164
- }
165
-
166
- /**
167
- * Enhanced event queueing with MXP compression support
168
- * Only applies compression when bandwidth optimization is enabled
169
- */
170
- public async enqueueEvent(
171
- eventName: string,
172
- payload: any,
173
- priority: EventPriority,
174
- targetId: string,
175
- type: 'agent' | 'channel',
176
- channelId?: string,
177
- excludedAgentId?: string
178
- ): Promise<void> {
179
- this.validator.assertIsNonEmptyString(eventName, 'Event name is required');
180
- this.validator.assertIsObject(payload, 'Event payload must be an object');
181
- this.validator.assertIsNonEmptyString(targetId, 'Target ID is required');
182
-
183
- try {
184
- const startTime = Date.now();
185
-
186
- // Check if MXP bandwidth optimization is enabled for this context
187
- const isBandwidthOptEnabled = channelId ?
188
- MxpConfigManager.getInstance().isFeatureEnabled(channelId, 'bandwidthOptimization', targetId) :
189
- false;
190
-
191
- // Create base event
192
- const event: MxpQueuedEvent = {
193
- id: `mxp_event_${uuidv4()}`,
194
- priority,
195
- type,
196
- eventName,
197
- payload,
198
- targetId,
199
- excludedAgentId,
200
- timestamp: Date.now(),
201
- retryCount: 0,
202
- compressionEnabled: isBandwidthOptEnabled && this.config.mxpEnabled,
203
- channelId
204
- };
205
-
206
- // Apply MXP compression if enabled
207
- if (event.compressionEnabled && this.shouldCompressEvent(event)) {
208
- await this.applyMxpCompression(event);
209
- }
210
-
211
- // Add to appropriate priority queue
212
- const queue = this.enhancedQueues.get(priority);
213
- if (queue) {
214
- // Check queue size limits
215
- if (queue.length >= this.config.maxQueueSize) {
216
- this.logger.warn(`Queue full for priority ${priority}, dropping oldest event`);
217
- queue.shift(); // Remove oldest event
218
- }
219
-
220
- queue.push(event);
221
- this.stats.totalEvents++;
222
-
223
- // ;
224
- }
225
-
226
- // Start processing if not already running
227
- if (!this.processing && this.config.enabled) {
228
- this.startProcessing();
229
- }
230
-
231
- } catch (error) {
232
- this.logger.error('Failed to enqueue MXP event', {
233
- error: error instanceof Error ? error.message : String(error),
234
- eventName,
235
- priority: EventPriority[priority],
236
- targetId
237
- });
238
- throw error;
239
- }
240
- }
241
-
242
- /**
243
- * Enhanced batch processing with MXP compression awareness
244
- */
245
- private async processBatch(): Promise<void> {
246
- const batch: MxpQueuedEvent[] = [];
247
- const batchStartTime = Date.now();
248
-
249
- // Collect events by priority (CRITICAL first)
250
- for (const priority of [EventPriority.CRITICAL, EventPriority.HIGH, EventPriority.NORMAL, EventPriority.LOW, EventPriority.BACKGROUND]) {
251
- const queue = this.enhancedQueues.get(priority);
252
- if (queue && queue.length > 0) {
253
- const batchSize = Math.min(this.config.batchSize - batch.length, queue.length);
254
- batch.push(...queue.splice(0, batchSize));
255
-
256
- if (batch.length >= this.config.batchSize) break;
257
- }
258
- }
259
-
260
- if (batch.length === 0) return;
261
-
262
- try {
263
- // Group events by compression status for efficient processing
264
- const compressedEvents = batch.filter(e => e.compressedData);
265
- const uncompressedEvents = batch.filter(e => !e.compressedData);
266
-
267
- // ;
268
-
269
- // Process compressed events (may need decompression for forwarding)
270
- for (const event of compressedEvents) {
271
- await this.processCompressedEvent(event);
272
- }
273
-
274
- // Process uncompressed events normally
275
- for (const event of uncompressedEvents) {
276
- await this.processUncompressedEvent(event);
277
- }
278
-
279
- // Update statistics
280
- this.stats.processingTimeMs += (Date.now() - batchStartTime);
281
-
282
-
283
- } catch (error) {
284
- this.logger.error('Batch processing failed', {
285
- error: error instanceof Error ? error.message : String(error),
286
- batchSize: batch.length
287
- });
288
- }
289
- }
290
-
291
- /**
292
- * Apply MXP compression to an event if warranted
293
- */
294
- private async applyMxpCompression(event: MxpQueuedEvent): Promise<void> {
295
- const priorityConfig = this.config.compressionByPriority[event.priority];
296
-
297
- if (!priorityConfig.enabled) {
298
- return; // Compression disabled for this priority level
299
- }
300
-
301
- try {
302
- // Calculate payload size
303
- const payloadString = JSON.stringify(event.payload);
304
- const payloadSize = Buffer.byteLength(payloadString, 'utf8');
305
- event.originalSize = payloadSize;
306
-
307
- // Check minimum size threshold
308
- if (payloadSize < priorityConfig.minSize) {
309
- return;
310
- }
311
-
312
- // Create MXP message for compression
313
- const mxpMessage = {
314
- type: event.eventName,
315
- payload: event.payload,
316
- metadata: {
317
- eventId: event.id,
318
- priority: event.priority,
319
- timestamp: event.timestamp
320
- },
321
- size: payloadSize
322
- };
323
-
324
- // Apply compression using BinaryProtocolLayer
325
- const compressionResult = BinaryProtocolLayer.getInstance().encodeMessage(
326
- mxpMessage,
327
- event.channelId || 'default',
328
- event.targetId
329
- );
330
-
331
- if (compressionResult) {
332
- event.compressedData = compressionResult;
333
- this.stats.compressedEvents++;
334
- this.stats.totalBandwidthSaved += (compressionResult.originalSize - compressionResult.compressedSize);
335
-
336
- // Update average compression ratio
337
- const totalCompressed = this.stats.compressedEvents;
338
- this.stats.averageCompressionRatio =
339
- ((this.stats.averageCompressionRatio * (totalCompressed - 1)) + compressionResult.compressionRatio) / totalCompressed;
340
-
341
- // ;
342
- }
343
-
344
- } catch (error) {
345
- this.logger.warn('MXP compression failed, proceeding without compression', {
346
- error: error instanceof Error ? error.message : String(error),
347
- eventId: event.id
348
- });
349
- }
350
- }
351
-
352
- /**
353
- * Check if an event should be compressed based on configuration
354
- */
355
- private shouldCompressEvent(event: MxpQueuedEvent): boolean {
356
- const priorityConfig = this.config.compressionByPriority[event.priority];
357
- return priorityConfig.enabled && this.config.mxpEnabled;
358
- }
359
-
360
- /**
361
- * Process a compressed event (placeholder for actual forwarding logic)
362
- */
363
- private async processCompressedEvent(event: MxpQueuedEvent): Promise<void> {
364
- // In full implementation, this would forward the compressed event
365
- // For now, we'll decompress and forward normally as a placeholder
366
-
367
- if (event.compressedData) {
368
- // Optionally decompress for forwarding (depends on receiving end capability)
369
- const decompressed = BinaryProtocolLayer.getInstance().decodeMessage(event.compressedData);
370
- if (decompressed) {
371
- // Forward the decompressed message
372
- // ;
373
- }
374
- }
375
- }
376
-
377
- /**
378
- * Process an uncompressed event (placeholder for actual forwarding logic)
379
- */
380
- private async processUncompressedEvent(event: MxpQueuedEvent): Promise<void> {
381
- // In full implementation, this would forward the event normally
382
- // ;
383
- }
384
-
385
- /**
386
- * Start enhanced batch processing
387
- */
388
- public startProcessing(): void {
389
- if (this.processing || !this.config.enabled) return;
390
-
391
- this.processing = true;
392
- this.scheduleNextBatch();
393
- }
394
-
395
- /**
396
- * Stop enhanced batch processing
397
- */
398
- public stopProcessing(): void {
399
- this.processing = false;
400
- if (this.processingTimer) {
401
- clearTimeout(this.processingTimer);
402
- this.processingTimer = null;
403
- }
404
- }
405
-
406
- /**
407
- * Schedule next batch processing
408
- */
409
- private scheduleNextBatch(): void {
410
- if (!this.processing) return;
411
-
412
- this.processingTimer = setTimeout(() => {
413
- this.processBatch();
414
- this.scheduleNextBatch();
415
- }, this.config.processingDelayMs);
416
- }
417
-
418
- /**
419
- * Get MXP-enhanced queue statistics
420
- */
421
- public getEnhancedStats(): {
422
- totalEvents: number;
423
- compressedEvents: number;
424
- compressionRate: number;
425
- totalBandwidthSaved: number;
426
- averageCompressionRatio: number;
427
- queueSizes: Record<string, number>;
428
- processingTimeMs: number;
429
- } {
430
- const queueSizes: Record<string, number> = {};
431
- for (const [priority, queue] of this.enhancedQueues.entries()) {
432
- queueSizes[EventPriority[priority]] = queue.length;
433
- }
434
-
435
- return {
436
- totalEvents: this.stats.totalEvents,
437
- compressedEvents: this.stats.compressedEvents,
438
- compressionRate: this.stats.totalEvents > 0 ?
439
- Math.round((this.stats.compressedEvents / this.stats.totalEvents) * 100) : 0,
440
- totalBandwidthSaved: this.stats.totalBandwidthSaved,
441
- averageCompressionRatio: this.stats.averageCompressionRatio,
442
- queueSizes,
443
- processingTimeMs: this.stats.processingTimeMs
444
- };
445
- }
446
-
447
- /**
448
- * Update configuration at runtime
449
- */
450
- public updateConfig(newConfig: Partial<MxpEventQueueConfig>): void {
451
- this.config = { ...this.config, ...newConfig };
452
- }
453
-
454
- /**
455
- * Clear all queues (useful for testing or shutdown)
456
- */
457
- public clearQueues(): void {
458
- for (const queue of this.enhancedQueues.values()) {
459
- queue.length = 0;
460
- }
461
- }
462
-
463
- /**
464
- * Check if MXP enhancement is enabled
465
- */
466
- public isMxpEnabled(): boolean {
467
- return this.config.mxpEnabled;
468
- }
469
- }
470
-
471
- // Note: Use MxpEventForwardingEnhancer.getInstance() to get the singleton instance
@@ -1,92 +0,0 @@
1
- /**
2
- * Copyright 2024 Brad Anderson
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- *
16
- * @author Brad Anderson <BradA1878@pm.me>
17
- * @repository https://github.com/BradA1878/model-exchange-framework
18
- * @documentation https://mxf-dev.github.io/mxf/
19
- */
20
-
21
- /**
22
- * ToolSchemaEnhancements.ts
23
- *
24
- * Provides enhanced schemas and examples for external MCP tools to improve
25
- * agent understanding of complex tool structures. This is particularly useful
26
- * for tools with nested objects or domain-specific knowledge (like n8n workflows).
27
- */
28
-
29
- /**
30
- * Schema enhancement for a specific tool
31
- */
32
- export interface ToolSchemaEnhancement {
33
- /** Tool name to enhance */
34
- toolName: string;
35
- /** Server ID that provides the tool */
36
- serverId: string;
37
- /** Examples to add to the schema */
38
- examples?: any[];
39
- /** Additional schema properties to merge */
40
- propertyEnhancements?: Record<string, any>;
41
- }
42
-
43
- /**
44
- * All tool schema enhancements
45
- *
46
- * NOTE: Previously contained n8n workflow enhancements, but those are no longer
47
- * needed since the actual n8n-mcp server (czlonkowski/n8n-mcp) has built-in
48
- * validation, autofix, and example support.
49
- */
50
- export const TOOL_SCHEMA_ENHANCEMENTS: ToolSchemaEnhancement[] = [];
51
-
52
- /**
53
- * Find enhancement for a specific tool
54
- */
55
- export const findToolEnhancement = (toolName: string, serverId: string): ToolSchemaEnhancement | undefined => {
56
- return TOOL_SCHEMA_ENHANCEMENTS.find(
57
- enhancement => enhancement.toolName === toolName && enhancement.serverId === serverId
58
- );
59
- };
60
-
61
- /**
62
- * Apply enhancements to a tool's input schema
63
- */
64
- export const enhanceToolSchema = (
65
- toolName: string,
66
- serverId: string,
67
- originalSchema: Record<string, any>
68
- ): Record<string, any> => {
69
- const enhancement = findToolEnhancement(toolName, serverId);
70
-
71
- if (!enhancement) {
72
- return originalSchema;
73
- }
74
-
75
- // Create enhanced schema by merging
76
- const enhancedSchema = { ...originalSchema };
77
-
78
- // Add examples if provided
79
- if (enhancement.examples && enhancement.examples.length > 0) {
80
- enhancedSchema.examples = enhancement.examples;
81
- }
82
-
83
- // Enhance property definitions if provided
84
- if (enhancement.propertyEnhancements && enhancedSchema.properties) {
85
- enhancedSchema.properties = {
86
- ...enhancedSchema.properties,
87
- ...enhancement.propertyEnhancements
88
- };
89
- }
90
-
91
- return enhancedSchema;
92
- };