@mxf-dev/core 2.0.5 → 3.0.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 (466) hide show
  1. package/dist/config/ModelContextLimits.d.ts.map +1 -1
  2. package/dist/config/ModelContextLimits.js +7 -1
  3. package/dist/config/ModelContextLimits.js.map +1 -1
  4. package/dist/constants/CoreTools.d.ts +6 -5
  5. package/dist/constants/CoreTools.d.ts.map +1 -1
  6. package/dist/constants/CoreTools.js +6 -5
  7. package/dist/constants/CoreTools.js.map +1 -1
  8. package/dist/constants/DefaultPhaseProfiles.d.ts.map +1 -1
  9. package/dist/constants/DefaultPhaseProfiles.js +29 -0
  10. package/dist/constants/DefaultPhaseProfiles.js.map +1 -1
  11. package/dist/constants/ReservedIdentities.d.ts +14 -0
  12. package/dist/constants/ReservedIdentities.d.ts.map +1 -0
  13. package/dist/constants/ReservedIdentities.js +42 -0
  14. package/dist/constants/ReservedIdentities.js.map +1 -0
  15. package/dist/database/adapters/mongodb/MongoKnowledgeGraphRepository.d.ts +16 -16
  16. package/dist/database/adapters/mongodb/MongoKnowledgeGraphRepository.d.ts.map +1 -1
  17. package/dist/database/adapters/mongodb/MongoKnowledgeGraphRepository.js +98 -36
  18. package/dist/database/adapters/mongodb/MongoKnowledgeGraphRepository.js.map +1 -1
  19. package/dist/events/ClientEventBus.d.ts +28 -0
  20. package/dist/events/ClientEventBus.d.ts.map +1 -1
  21. package/dist/events/ClientEventBus.js +87 -40
  22. package/dist/events/ClientEventBus.js.map +1 -1
  23. package/dist/events/EventBus.d.ts +19 -1
  24. package/dist/events/EventBus.d.ts.map +1 -1
  25. package/dist/events/EventBus.js +23 -0
  26. package/dist/events/EventBus.js.map +1 -1
  27. package/dist/events/EventBusBase.d.ts +37 -6
  28. package/dist/events/EventBusBase.d.ts.map +1 -1
  29. package/dist/events/EventBusBase.js +75 -27
  30. package/dist/events/EventBusBase.js.map +1 -1
  31. package/dist/events/EventNames.d.ts +49 -36
  32. package/dist/events/EventNames.d.ts.map +1 -1
  33. package/dist/events/EventNames.js +38 -36
  34. package/dist/events/EventNames.js.map +1 -1
  35. package/dist/events/PublicEvents.d.ts +5 -1
  36. package/dist/events/PublicEvents.d.ts.map +1 -1
  37. package/dist/events/PublicEvents.js +7 -0
  38. package/dist/events/PublicEvents.js.map +1 -1
  39. package/dist/events/ServerEventBus.d.ts +7 -54
  40. package/dist/events/ServerEventBus.d.ts.map +1 -1
  41. package/dist/events/ServerEventBus.js +10 -96
  42. package/dist/events/ServerEventBus.js.map +1 -1
  43. package/dist/events/event-definitions/ControlLoopEvents.d.ts +35 -0
  44. package/dist/events/event-definitions/ControlLoopEvents.d.ts.map +1 -1
  45. package/dist/events/event-definitions/ControlLoopEvents.js +6 -0
  46. package/dist/events/event-definitions/ControlLoopEvents.js.map +1 -1
  47. package/dist/events/event-definitions/SdkEvents.d.ts +55 -0
  48. package/dist/events/event-definitions/SdkEvents.d.ts.map +1 -0
  49. package/dist/events/event-definitions/SdkEvents.js +36 -0
  50. package/dist/events/event-definitions/SdkEvents.js.map +1 -0
  51. package/dist/events/event-definitions/TaskEvents.d.ts +2 -7
  52. package/dist/events/event-definitions/TaskEvents.d.ts.map +1 -1
  53. package/dist/index.d.ts +4 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +2 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/interfaces/AgentInterfaces.d.ts +5 -0
  58. package/dist/interfaces/AgentInterfaces.d.ts.map +1 -1
  59. package/dist/interfaces/ChannelConfig.d.ts +2 -2
  60. package/dist/interfaces/ChannelConfig.d.ts.map +1 -1
  61. package/dist/interfaces/ConversationMessage.d.ts +1 -1
  62. package/dist/interfaces/ConversationMessage.d.ts.map +1 -1
  63. package/dist/interfaces/IMemoryPersistence.d.ts +47 -1
  64. package/dist/interfaces/IMemoryPersistence.d.ts.map +1 -1
  65. package/dist/interfaces/SocketServiceInterface.d.ts +3 -2
  66. package/dist/interfaces/SocketServiceInterface.d.ts.map +1 -1
  67. package/dist/interfaces/TaskInterfaces.d.ts +14 -1
  68. package/dist/interfaces/TaskInterfaces.d.ts.map +1 -1
  69. package/dist/models/agent.d.ts +0 -1
  70. package/dist/models/agent.d.ts.map +1 -1
  71. package/dist/models/agent.js +0 -5
  72. package/dist/models/agent.js.map +1 -1
  73. package/dist/models/agentIdentityReservation.d.ts +42 -0
  74. package/dist/models/agentIdentityReservation.d.ts.map +1 -0
  75. package/dist/models/agentIdentityReservation.js +52 -0
  76. package/dist/models/agentIdentityReservation.js.map +1 -0
  77. package/dist/models/channel.d.ts +2 -0
  78. package/dist/models/channel.d.ts.map +1 -1
  79. package/dist/models/channel.js.map +1 -1
  80. package/dist/models/channelKey.d.ts +1 -0
  81. package/dist/models/channelKey.d.ts.map +1 -1
  82. package/dist/models/channelKey.js +5 -0
  83. package/dist/models/channelKey.js.map +1 -1
  84. package/dist/models/memory.d.ts +1 -1
  85. package/dist/models/memory.d.ts.map +1 -1
  86. package/dist/models/memory.js +9 -12
  87. package/dist/models/memory.js.map +1 -1
  88. package/dist/models/memoryStrata.d.ts +3 -16
  89. package/dist/models/memoryStrata.d.ts.map +1 -1
  90. package/dist/models/memoryStrata.js +3 -5
  91. package/dist/models/memoryStrata.js.map +1 -1
  92. package/dist/models/plan.d.ts +2 -2
  93. package/dist/models/plan.d.ts.map +1 -1
  94. package/dist/models/plan.js +1 -1
  95. package/dist/models/plan.js.map +1 -1
  96. package/dist/models/taskEffectiveness.d.ts +1 -0
  97. package/dist/models/taskEffectiveness.d.ts.map +1 -1
  98. package/dist/models/taskEffectiveness.js +7 -1
  99. package/dist/models/taskEffectiveness.js.map +1 -1
  100. package/dist/models/user.d.ts +4 -0
  101. package/dist/models/user.d.ts.map +1 -1
  102. package/dist/models/user.js +8 -0
  103. package/dist/models/user.js.map +1 -1
  104. package/dist/protocols/mcp/LlmTestEnvironmentGuard.d.ts +16 -0
  105. package/dist/protocols/mcp/LlmTestEnvironmentGuard.d.ts.map +1 -0
  106. package/dist/protocols/mcp/LlmTestEnvironmentGuard.js +25 -0
  107. package/dist/protocols/mcp/LlmTestEnvironmentGuard.js.map +1 -0
  108. package/dist/protocols/mcp/McpServerTypes.d.ts +9 -0
  109. package/dist/protocols/mcp/McpServerTypes.d.ts.map +1 -1
  110. package/dist/protocols/mcp/providers/AnthropicMcpClient.d.ts.map +1 -1
  111. package/dist/protocols/mcp/providers/AnthropicMcpClient.js +1 -0
  112. package/dist/protocols/mcp/providers/AnthropicMcpClient.js.map +1 -1
  113. package/dist/protocols/mcp/providers/AzureOpenAiMcpClient.d.ts.map +1 -1
  114. package/dist/protocols/mcp/providers/AzureOpenAiMcpClient.js +1 -0
  115. package/dist/protocols/mcp/providers/AzureOpenAiMcpClient.js.map +1 -1
  116. package/dist/protocols/mcp/providers/BaseMcpClient.d.ts +4 -0
  117. package/dist/protocols/mcp/providers/BaseMcpClient.d.ts.map +1 -1
  118. package/dist/protocols/mcp/providers/BaseMcpClient.js +10 -0
  119. package/dist/protocols/mcp/providers/BaseMcpClient.js.map +1 -1
  120. package/dist/protocols/mcp/providers/CustomMcpClient.d.ts.map +1 -1
  121. package/dist/protocols/mcp/providers/CustomMcpClient.js +7 -0
  122. package/dist/protocols/mcp/providers/CustomMcpClient.js.map +1 -1
  123. package/dist/protocols/mcp/providers/GeminiMcpClient.d.ts.map +1 -1
  124. package/dist/protocols/mcp/providers/GeminiMcpClient.js +1 -0
  125. package/dist/protocols/mcp/providers/GeminiMcpClient.js.map +1 -1
  126. package/dist/protocols/mcp/providers/OllamaMcpClient.d.ts +1 -0
  127. package/dist/protocols/mcp/providers/OllamaMcpClient.d.ts.map +1 -1
  128. package/dist/protocols/mcp/providers/OllamaMcpClient.js +1 -0
  129. package/dist/protocols/mcp/providers/OllamaMcpClient.js.map +1 -1
  130. package/dist/protocols/mcp/providers/OpenAiMcpClient.d.ts.map +1 -1
  131. package/dist/protocols/mcp/providers/OpenAiMcpClient.js +1 -0
  132. package/dist/protocols/mcp/providers/OpenAiMcpClient.js.map +1 -1
  133. package/dist/protocols/mcp/providers/OpenRouterMcpClient.d.ts.map +1 -1
  134. package/dist/protocols/mcp/providers/OpenRouterMcpClient.js +2 -0
  135. package/dist/protocols/mcp/providers/OpenRouterMcpClient.js.map +1 -1
  136. package/dist/protocols/mcp/providers/XaiMcpClient.d.ts.map +1 -1
  137. package/dist/protocols/mcp/providers/XaiMcpClient.js +1 -0
  138. package/dist/protocols/mcp/providers/XaiMcpClient.js.map +1 -1
  139. package/dist/protocols/mcp/security/BrowserTargetGuard.d.ts +14 -0
  140. package/dist/protocols/mcp/security/BrowserTargetGuard.d.ts.map +1 -0
  141. package/dist/protocols/mcp/security/BrowserTargetGuard.js +55 -0
  142. package/dist/protocols/mcp/security/BrowserTargetGuard.js.map +1 -0
  143. package/dist/protocols/mcp/security/ExternalMcpRegistrationPolicy.d.ts +24 -0
  144. package/dist/protocols/mcp/security/ExternalMcpRegistrationPolicy.d.ts.map +1 -0
  145. package/dist/protocols/mcp/security/ExternalMcpRegistrationPolicy.js +33 -0
  146. package/dist/protocols/mcp/security/ExternalMcpRegistrationPolicy.js.map +1 -0
  147. package/dist/protocols/mcp/security/HttpTargetGuard.d.ts.map +1 -1
  148. package/dist/protocols/mcp/security/HttpTargetGuard.js +68 -6
  149. package/dist/protocols/mcp/security/HttpTargetGuard.js.map +1 -1
  150. package/dist/protocols/mcp/security/McpSecurityGuard.d.ts.map +1 -1
  151. package/dist/protocols/mcp/security/McpSecurityGuard.js +7 -5
  152. package/dist/protocols/mcp/security/McpSecurityGuard.js.map +1 -1
  153. package/dist/protocols/mcp/security/McpToolPolicy.d.ts +18 -0
  154. package/dist/protocols/mcp/security/McpToolPolicy.d.ts.map +1 -1
  155. package/dist/protocols/mcp/security/McpToolPolicy.js +60 -0
  156. package/dist/protocols/mcp/security/McpToolPolicy.js.map +1 -1
  157. package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts +25 -0
  158. package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts.map +1 -1
  159. package/dist/protocols/mcp/services/ExternalMcpServerManager.js +93 -17
  160. package/dist/protocols/mcp/services/ExternalMcpServerManager.js.map +1 -1
  161. package/dist/protocols/mcp/services/ExternalServerConfigs.d.ts +2 -2
  162. package/dist/protocols/mcp/services/ExternalServerConfigs.d.ts.map +1 -1
  163. package/dist/protocols/mcp/services/ExternalServerConfigs.js +25 -8
  164. package/dist/protocols/mcp/services/ExternalServerConfigs.js.map +1 -1
  165. package/dist/protocols/mcp/tools/AnalyticsTools.d.ts +3 -37
  166. package/dist/protocols/mcp/tools/AnalyticsTools.d.ts.map +1 -1
  167. package/dist/protocols/mcp/tools/AnalyticsTools.js +134 -614
  168. package/dist/protocols/mcp/tools/AnalyticsTools.js.map +1 -1
  169. package/dist/protocols/mcp/tools/CodeAnalysisTools.d.ts.map +1 -1
  170. package/dist/protocols/mcp/tools/CodeAnalysisTools.js +16 -13
  171. package/dist/protocols/mcp/tools/CodeAnalysisTools.js.map +1 -1
  172. package/dist/protocols/mcp/tools/EffectivenessTools.d.ts.map +1 -1
  173. package/dist/protocols/mcp/tools/EffectivenessTools.js +94 -30
  174. package/dist/protocols/mcp/tools/EffectivenessTools.js.map +1 -1
  175. package/dist/protocols/mcp/tools/GitTools.d.ts.map +1 -1
  176. package/dist/protocols/mcp/tools/GitTools.js +9 -5
  177. package/dist/protocols/mcp/tools/GitTools.js.map +1 -1
  178. package/dist/protocols/mcp/tools/InfrastructureTools.d.ts +10 -40
  179. package/dist/protocols/mcp/tools/InfrastructureTools.d.ts.map +1 -1
  180. package/dist/protocols/mcp/tools/InfrastructureTools.js +29 -70
  181. package/dist/protocols/mcp/tools/InfrastructureTools.js.map +1 -1
  182. package/dist/protocols/mcp/tools/JsonTools.d.ts.map +1 -1
  183. package/dist/protocols/mcp/tools/JsonTools.js +4 -4
  184. package/dist/protocols/mcp/tools/JsonTools.js.map +1 -1
  185. package/dist/protocols/mcp/tools/KnowledgeGraphTools.d.ts +55 -592
  186. package/dist/protocols/mcp/tools/KnowledgeGraphTools.d.ts.map +1 -1
  187. package/dist/protocols/mcp/tools/KnowledgeGraphTools.js +169 -119
  188. package/dist/protocols/mcp/tools/KnowledgeGraphTools.js.map +1 -1
  189. package/dist/protocols/mcp/tools/MemorySearchTools.d.ts +6 -6
  190. package/dist/protocols/mcp/tools/MemorySearchTools.d.ts.map +1 -1
  191. package/dist/protocols/mcp/tools/MemorySearchTools.js +107 -39
  192. package/dist/protocols/mcp/tools/MemorySearchTools.js.map +1 -1
  193. package/dist/protocols/mcp/tools/MemoryUtilityTools.d.ts +4 -5
  194. package/dist/protocols/mcp/tools/MemoryUtilityTools.d.ts.map +1 -1
  195. package/dist/protocols/mcp/tools/MemoryUtilityTools.js +59 -208
  196. package/dist/protocols/mcp/tools/MemoryUtilityTools.js.map +1 -1
  197. package/dist/protocols/mcp/tools/PlanningTools.d.ts +2 -1
  198. package/dist/protocols/mcp/tools/PlanningTools.d.ts.map +1 -1
  199. package/dist/protocols/mcp/tools/PlanningTools.js +111 -49
  200. package/dist/protocols/mcp/tools/PlanningTools.js.map +1 -1
  201. package/dist/protocols/mcp/tools/ProjectContextTools.d.ts.map +1 -1
  202. package/dist/protocols/mcp/tools/ProjectContextTools.js +18 -12
  203. package/dist/protocols/mcp/tools/ProjectContextTools.js.map +1 -1
  204. package/dist/protocols/mcp/tools/SafetyTools.d.ts.map +1 -1
  205. package/dist/protocols/mcp/tools/SafetyTools.js +16 -13
  206. package/dist/protocols/mcp/tools/SafetyTools.js.map +1 -1
  207. package/dist/protocols/mcp/tools/SearchProjectTools.d.ts +24 -7
  208. package/dist/protocols/mcp/tools/SearchProjectTools.d.ts.map +1 -1
  209. package/dist/protocols/mcp/tools/SearchProjectTools.js +226 -126
  210. package/dist/protocols/mcp/tools/SearchProjectTools.js.map +1 -1
  211. package/dist/protocols/mcp/tools/TaskPlanningTools.d.ts +0 -32
  212. package/dist/protocols/mcp/tools/TaskPlanningTools.d.ts.map +1 -1
  213. package/dist/protocols/mcp/tools/TaskPlanningTools.js +363 -450
  214. package/dist/protocols/mcp/tools/TaskPlanningTools.js.map +1 -1
  215. package/dist/protocols/mcp/tools/TestTools.d.ts.map +1 -1
  216. package/dist/protocols/mcp/tools/TestTools.js +18 -11
  217. package/dist/protocols/mcp/tools/TestTools.js.map +1 -1
  218. package/dist/protocols/mcp/tools/TypeScriptTools.d.ts.map +1 -1
  219. package/dist/protocols/mcp/tools/TypeScriptTools.js +22 -12
  220. package/dist/protocols/mcp/tools/TypeScriptTools.js.map +1 -1
  221. package/dist/protocols/mcp/tools/UserInputTools.d.ts.map +1 -1
  222. package/dist/protocols/mcp/tools/UserInputTools.js +14 -1
  223. package/dist/protocols/mcp/tools/UserInputTools.js.map +1 -1
  224. package/dist/protocols/mcp/tools/UserMemoryTools.d.ts +3 -1
  225. package/dist/protocols/mcp/tools/UserMemoryTools.d.ts.map +1 -1
  226. package/dist/protocols/mcp/tools/UserMemoryTools.js +27 -62
  227. package/dist/protocols/mcp/tools/UserMemoryTools.js.map +1 -1
  228. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.d.ts.map +1 -1
  229. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.js +14 -60
  230. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.js.map +1 -1
  231. package/dist/protocols/mcp/tools/shell/ShellSandbox.d.ts.map +1 -1
  232. package/dist/protocols/mcp/tools/shell/ShellSandbox.js +9 -27
  233. package/dist/protocols/mcp/tools/shell/ShellSandbox.js.map +1 -1
  234. package/dist/repositories/interfaces/IKnowledgeGraphRepository.d.ts +40 -30
  235. package/dist/repositories/interfaces/IKnowledgeGraphRepository.d.ts.map +1 -1
  236. package/dist/schemas/EventPayloadSchema.d.ts +28 -0
  237. package/dist/schemas/EventPayloadSchema.d.ts.map +1 -1
  238. package/dist/schemas/EventPayloadSchema.js +30 -1
  239. package/dist/schemas/EventPayloadSchema.js.map +1 -1
  240. package/dist/schemas/MxpProtocolSchemas.d.ts +6 -6
  241. package/dist/services/AgentPerformanceService.d.ts +11 -0
  242. package/dist/services/AgentPerformanceService.d.ts.map +1 -1
  243. package/dist/services/AgentPerformanceService.js +59 -33
  244. package/dist/services/AgentPerformanceService.js.map +1 -1
  245. package/dist/services/AutoCorrectionService.d.ts +3 -0
  246. package/dist/services/AutoCorrectionService.d.ts.map +1 -1
  247. package/dist/services/AutoCorrectionService.js +19 -2
  248. package/dist/services/AutoCorrectionService.js.map +1 -1
  249. package/dist/services/BackgroundTaskManager.d.ts +23 -7
  250. package/dist/services/BackgroundTaskManager.d.ts.map +1 -1
  251. package/dist/services/BackgroundTaskManager.js +137 -57
  252. package/dist/services/BackgroundTaskManager.js.map +1 -1
  253. package/dist/services/BrowserManager.d.ts +2 -0
  254. package/dist/services/BrowserManager.d.ts.map +1 -1
  255. package/dist/services/BrowserManager.js +18 -15
  256. package/dist/services/BrowserManager.js.map +1 -1
  257. package/dist/services/ChannelContextMemoryOperations.d.ts +8 -1
  258. package/dist/services/ChannelContextMemoryOperations.d.ts.map +1 -1
  259. package/dist/services/ChannelContextMemoryOperations.js +89 -165
  260. package/dist/services/ChannelContextMemoryOperations.js.map +1 -1
  261. package/dist/services/ChannelContextMessageOperations.d.ts +4 -3
  262. package/dist/services/ChannelContextMessageOperations.d.ts.map +1 -1
  263. package/dist/services/ChannelContextMessageOperations.js +72 -212
  264. package/dist/services/ChannelContextMessageOperations.js.map +1 -1
  265. package/dist/services/MemoryService.d.ts +52 -21
  266. package/dist/services/MemoryService.d.ts.map +1 -1
  267. package/dist/services/MemoryService.js +775 -548
  268. package/dist/services/MemoryService.js.map +1 -1
  269. package/dist/services/PatternLearningService.d.ts +5 -0
  270. package/dist/services/PatternLearningService.d.ts.map +1 -1
  271. package/dist/services/PatternLearningService.js +26 -3
  272. package/dist/services/PatternLearningService.js.map +1 -1
  273. package/dist/services/PerformanceOptimizationService.d.ts +2 -1
  274. package/dist/services/PerformanceOptimizationService.d.ts.map +1 -1
  275. package/dist/services/PerformanceOptimizationService.js +21 -6
  276. package/dist/services/PerformanceOptimizationService.js.map +1 -1
  277. package/dist/services/PredictiveAnalyticsService.d.ts +1 -0
  278. package/dist/services/PredictiveAnalyticsService.d.ts.map +1 -1
  279. package/dist/services/PredictiveAnalyticsService.js +18 -6
  280. package/dist/services/PredictiveAnalyticsService.js.map +1 -1
  281. package/dist/services/ProactiveValidationService.d.ts +6 -0
  282. package/dist/services/ProactiveValidationService.d.ts.map +1 -1
  283. package/dist/services/ProactiveValidationService.js +58 -39
  284. package/dist/services/ProactiveValidationService.js.map +1 -1
  285. package/dist/services/TaskEffectivenessService.d.ts +55 -31
  286. package/dist/services/TaskEffectivenessService.d.ts.map +1 -1
  287. package/dist/services/TaskEffectivenessService.js +243 -125
  288. package/dist/services/TaskEffectivenessService.js.map +1 -1
  289. package/dist/services/ToolExecutionInterceptor.d.ts +4 -0
  290. package/dist/services/ToolExecutionInterceptor.d.ts.map +1 -1
  291. package/dist/services/ToolExecutionInterceptor.js +31 -5
  292. package/dist/services/ToolExecutionInterceptor.js.map +1 -1
  293. package/dist/services/UserInputRequestManager.d.ts +13 -3
  294. package/dist/services/UserInputRequestManager.d.ts.map +1 -1
  295. package/dist/services/UserInputRequestManager.js +42 -6
  296. package/dist/services/UserInputRequestManager.js.map +1 -1
  297. package/dist/services/UserMemoryService.d.ts +2 -0
  298. package/dist/services/UserMemoryService.d.ts.map +1 -1
  299. package/dist/services/UserMemoryService.js +9 -4
  300. package/dist/services/UserMemoryService.js.map +1 -1
  301. package/dist/services/ValidationAnalyticsService.d.ts +4 -0
  302. package/dist/services/ValidationAnalyticsService.d.ts.map +1 -1
  303. package/dist/services/ValidationAnalyticsService.js +30 -8
  304. package/dist/services/ValidationAnalyticsService.js.map +1 -1
  305. package/dist/services/ValidationCacheService.d.ts +3 -1
  306. package/dist/services/ValidationCacheService.d.ts.map +1 -1
  307. package/dist/services/ValidationCacheService.js +25 -4
  308. package/dist/services/ValidationCacheService.js.map +1 -1
  309. package/dist/services/ValidationMiddleware.d.ts +7 -0
  310. package/dist/services/ValidationMiddleware.d.ts.map +1 -1
  311. package/dist/services/ValidationMiddleware.js +53 -10
  312. package/dist/services/ValidationMiddleware.js.map +1 -1
  313. package/dist/services/ValidationPerformanceService.d.ts +3 -0
  314. package/dist/services/ValidationPerformanceService.d.ts.map +1 -1
  315. package/dist/services/ValidationPerformanceService.js +28 -11
  316. package/dist/services/ValidationPerformanceService.js.map +1 -1
  317. package/dist/services/WebSearchService.d.ts.map +1 -1
  318. package/dist/services/WebSearchService.js +9 -0
  319. package/dist/services/WebSearchService.js.map +1 -1
  320. package/dist/services/dag/TaskDagService.d.ts +3 -0
  321. package/dist/services/dag/TaskDagService.d.ts.map +1 -1
  322. package/dist/services/dag/TaskDagService.js +18 -0
  323. package/dist/services/dag/TaskDagService.js.map +1 -1
  324. package/dist/services/kg/EntityQValueManager.d.ts +3 -1
  325. package/dist/services/kg/EntityQValueManager.d.ts.map +1 -1
  326. package/dist/services/kg/EntityQValueManager.js +10 -10
  327. package/dist/services/kg/EntityQValueManager.js.map +1 -1
  328. package/dist/services/kg/GraphSurpriseCalculator.d.ts +0 -4
  329. package/dist/services/kg/GraphSurpriseCalculator.d.ts.map +1 -1
  330. package/dist/services/kg/GraphSurpriseCalculator.js +0 -9
  331. package/dist/services/kg/GraphSurpriseCalculator.js.map +1 -1
  332. package/dist/services/kg/KnowledgeGraphService.d.ts +12 -12
  333. package/dist/services/kg/KnowledgeGraphService.d.ts.map +1 -1
  334. package/dist/services/kg/KnowledgeGraphService.js +43 -51
  335. package/dist/services/kg/KnowledgeGraphService.js.map +1 -1
  336. package/dist/services/kg/OrparGraphIntegration.d.ts.map +1 -1
  337. package/dist/services/kg/OrparGraphIntegration.js +6 -5
  338. package/dist/services/kg/OrparGraphIntegration.js.map +1 -1
  339. package/dist/services/orpar-memory/CycleConsolidationTrigger.d.ts +1 -0
  340. package/dist/services/orpar-memory/CycleConsolidationTrigger.d.ts.map +1 -1
  341. package/dist/services/orpar-memory/CycleConsolidationTrigger.js +8 -1
  342. package/dist/services/orpar-memory/CycleConsolidationTrigger.js.map +1 -1
  343. package/dist/services/orpar-memory/OrparMemoryCoordinator.d.ts +8 -1
  344. package/dist/services/orpar-memory/OrparMemoryCoordinator.d.ts.map +1 -1
  345. package/dist/services/orpar-memory/OrparMemoryCoordinator.js +93 -45
  346. package/dist/services/orpar-memory/OrparMemoryCoordinator.js.map +1 -1
  347. package/dist/services/orpar-memory/SurpriseOrparAdapter.d.ts +1 -0
  348. package/dist/services/orpar-memory/SurpriseOrparAdapter.d.ts.map +1 -1
  349. package/dist/services/orpar-memory/SurpriseOrparAdapter.js +8 -1
  350. package/dist/services/orpar-memory/SurpriseOrparAdapter.js.map +1 -1
  351. package/dist/types/ChannelContext.d.ts +2 -1
  352. package/dist/types/ChannelContext.d.ts.map +1 -1
  353. package/dist/types/EffectivenessTypes.d.ts +4 -1
  354. package/dist/types/EffectivenessTypes.d.ts.map +1 -1
  355. package/dist/types/TaskCompletionTypes.d.ts +7 -5
  356. package/dist/types/TaskCompletionTypes.d.ts.map +1 -1
  357. package/dist/types/TaskTypes.d.ts +8 -1
  358. package/dist/types/TaskTypes.d.ts.map +1 -1
  359. package/dist/utils/GlobMatcher.d.ts +37 -0
  360. package/dist/utils/GlobMatcher.d.ts.map +1 -0
  361. package/dist/utils/GlobMatcher.js +131 -0
  362. package/dist/utils/GlobMatcher.js.map +1 -0
  363. package/package.json +1 -1
  364. package/src/config/ModelContextLimits.ts +7 -1
  365. package/src/constants/CoreTools.ts +6 -5
  366. package/src/constants/DefaultPhaseProfiles.ts +29 -0
  367. package/src/constants/ReservedIdentities.ts +51 -0
  368. package/src/database/adapters/mongodb/MongoKnowledgeGraphRepository.ts +115 -36
  369. package/src/events/ClientEventBus.ts +117 -48
  370. package/src/events/EventBus.ts +32 -2
  371. package/src/events/EventBusBase.ts +132 -39
  372. package/src/events/EventNames.ts +43 -36
  373. package/src/events/PublicEvents.ts +8 -0
  374. package/src/events/ServerEventBus.ts +9 -128
  375. package/src/events/event-definitions/ControlLoopEvents.ts +12 -0
  376. package/src/events/event-definitions/SdkEvents.ts +58 -0
  377. package/src/events/event-definitions/TaskEvents.ts +2 -2
  378. package/src/index.ts +15 -0
  379. package/src/interfaces/AgentInterfaces.ts +5 -0
  380. package/src/interfaces/ChannelConfig.ts +2 -2
  381. package/src/interfaces/ConversationMessage.ts +5 -0
  382. package/src/interfaces/IMemoryPersistence.ts +55 -1
  383. package/src/interfaces/SocketServiceInterface.ts +3 -2
  384. package/src/interfaces/TaskInterfaces.ts +16 -1
  385. package/src/models/agent.ts +0 -6
  386. package/src/models/agentIdentityReservation.ts +77 -0
  387. package/src/models/channel.ts +2 -0
  388. package/src/models/channelKey.ts +10 -0
  389. package/src/models/memory.ts +18 -19
  390. package/src/models/memoryStrata.ts +9 -23
  391. package/src/models/plan.ts +3 -3
  392. package/src/models/taskEffectiveness.ts +9 -2
  393. package/src/models/user.ts +12 -0
  394. package/src/protocols/mcp/LlmTestEnvironmentGuard.ts +30 -0
  395. package/src/protocols/mcp/McpServerTypes.ts +9 -0
  396. package/src/protocols/mcp/providers/AnthropicMcpClient.ts +2 -0
  397. package/src/protocols/mcp/providers/AzureOpenAiMcpClient.ts +1 -0
  398. package/src/protocols/mcp/providers/BaseMcpClient.ts +13 -0
  399. package/src/protocols/mcp/providers/CustomMcpClient.ts +7 -0
  400. package/src/protocols/mcp/providers/GeminiMcpClient.ts +2 -0
  401. package/src/protocols/mcp/providers/OllamaMcpClient.ts +3 -1
  402. package/src/protocols/mcp/providers/OpenAiMcpClient.ts +2 -0
  403. package/src/protocols/mcp/providers/OpenRouterMcpClient.ts +3 -0
  404. package/src/protocols/mcp/providers/XaiMcpClient.ts +2 -0
  405. package/src/protocols/mcp/security/BrowserTargetGuard.ts +64 -0
  406. package/src/protocols/mcp/security/ExternalMcpRegistrationPolicy.ts +38 -0
  407. package/src/protocols/mcp/security/HttpTargetGuard.ts +77 -6
  408. package/src/protocols/mcp/security/McpSecurityGuard.ts +7 -5
  409. package/src/protocols/mcp/security/McpToolPolicy.ts +74 -0
  410. package/src/protocols/mcp/services/ExternalMcpServerManager.ts +146 -17
  411. package/src/protocols/mcp/services/ExternalServerConfigs.ts +26 -8
  412. package/src/protocols/mcp/tools/AnalyticsTools.ts +167 -641
  413. package/src/protocols/mcp/tools/CodeAnalysisTools.ts +44 -14
  414. package/src/protocols/mcp/tools/EffectivenessTools.ts +185 -45
  415. package/src/protocols/mcp/tools/GitTools.ts +15 -5
  416. package/src/protocols/mcp/tools/InfrastructureTools.ts +42 -90
  417. package/src/protocols/mcp/tools/JsonTools.ts +7 -4
  418. package/src/protocols/mcp/tools/KnowledgeGraphTools.ts +313 -164
  419. package/src/protocols/mcp/tools/MemorySearchTools.ts +158 -46
  420. package/src/protocols/mcp/tools/MemoryUtilityTools.ts +85 -232
  421. package/src/protocols/mcp/tools/PlanningTools.ts +137 -59
  422. package/src/protocols/mcp/tools/ProjectContextTools.ts +33 -12
  423. package/src/protocols/mcp/tools/SafetyTools.ts +49 -13
  424. package/src/protocols/mcp/tools/SearchProjectTools.ts +294 -153
  425. package/src/protocols/mcp/tools/TaskPlanningTools.ts +437 -514
  426. package/src/protocols/mcp/tools/TestTools.ts +41 -11
  427. package/src/protocols/mcp/tools/TypeScriptTools.ts +61 -12
  428. package/src/protocols/mcp/tools/UserInputTools.ts +15 -1
  429. package/src/protocols/mcp/tools/UserMemoryTools.ts +27 -62
  430. package/src/protocols/mcp/tools/shell/ShellExecuteHandler.ts +26 -84
  431. package/src/protocols/mcp/tools/shell/ShellSandbox.ts +13 -31
  432. package/src/repositories/interfaces/IKnowledgeGraphRepository.ts +45 -27
  433. package/src/schemas/EventPayloadSchema.ts +45 -1
  434. package/src/services/AgentPerformanceService.ts +85 -36
  435. package/src/services/AutoCorrectionService.ts +25 -6
  436. package/src/services/BackgroundTaskManager.ts +183 -76
  437. package/src/services/BrowserManager.ts +20 -16
  438. package/src/services/ChannelContextMemoryOperations.ts +169 -202
  439. package/src/services/ChannelContextMessageOperations.ts +112 -274
  440. package/src/services/MemoryService.ts +1053 -760
  441. package/src/services/PatternLearningService.ts +32 -7
  442. package/src/services/PerformanceOptimizationService.ts +26 -9
  443. package/src/services/PredictiveAnalyticsService.ts +23 -10
  444. package/src/services/ProactiveValidationService.ts +66 -40
  445. package/src/services/TaskEffectivenessService.ts +421 -206
  446. package/src/services/ToolExecutionInterceptor.ts +40 -9
  447. package/src/services/UserInputRequestManager.ts +51 -6
  448. package/src/services/UserMemoryService.ts +12 -3
  449. package/src/services/ValidationAnalyticsService.ts +36 -11
  450. package/src/services/ValidationCacheService.ts +30 -7
  451. package/src/services/ValidationMiddleware.ts +62 -14
  452. package/src/services/ValidationPerformanceService.ts +47 -25
  453. package/src/services/WebSearchService.ts +16 -4
  454. package/src/services/dag/TaskDagService.ts +20 -1
  455. package/src/services/kg/EntityQValueManager.ts +21 -10
  456. package/src/services/kg/GraphSurpriseCalculator.ts +0 -14
  457. package/src/services/kg/KnowledgeGraphService.ts +56 -48
  458. package/src/services/kg/OrparGraphIntegration.ts +11 -5
  459. package/src/services/orpar-memory/CycleConsolidationTrigger.ts +10 -1
  460. package/src/services/orpar-memory/OrparMemoryCoordinator.ts +142 -71
  461. package/src/services/orpar-memory/SurpriseOrparAdapter.ts +10 -1
  462. package/src/types/ChannelContext.ts +3 -1
  463. package/src/types/EffectivenessTypes.ts +6 -2
  464. package/src/types/TaskCompletionTypes.ts +9 -9
  465. package/src/types/TaskTypes.ts +12 -1
  466. package/src/utils/GlobMatcher.ts +157 -0
@@ -25,7 +25,7 @@
25
25
  * pattern learning and cross-agent pattern sharing capabilities.
26
26
  */
27
27
 
28
- import { Observable, Subject } from 'rxjs';
28
+ import { Observable, Subject, Subscription } from 'rxjs';
29
29
  import { Logger } from '../utils/Logger.js';
30
30
  import { EventBus } from '../events/EventBus.js';
31
31
  import { Events } from '../events/EventNames.js';
@@ -69,8 +69,11 @@ export class PatternLearningService {
69
69
  private readonly patternCache = new Map<string, EnhancedParameterPattern[]>();
70
70
  private readonly cacheExpiry = new Map<string, number>();
71
71
  private readonly CACHE_TTL = 5 * 60 * 1000; // 5 minutes
72
-
73
- private static instance: PatternLearningService;
72
+ private validationEventSubscription?: Subscription;
73
+ private patternCleanupInterval?: ReturnType<typeof setInterval>;
74
+ private cacheCleanupInterval?: ReturnType<typeof setInterval>;
75
+
76
+ private static instance: PatternLearningService | undefined;
74
77
 
75
78
  private constructor() {
76
79
  this.logger = new Logger('info', 'PatternLearningService', 'server');
@@ -985,7 +988,7 @@ export class PatternLearningService {
985
988
 
986
989
  private setupEventListeners(): void {
987
990
  // Listen to validation events from ValidationPerformanceService
988
- this.validationService.validationEvents.subscribe(event => {
991
+ this.validationEventSubscription = this.validationService.validationEvents.subscribe(event => {
989
992
  // Convert validation events to pattern learning events when appropriate
990
993
  if (event.eventType === 'validation_success' && event.details.parameters) {
991
994
  this.storeSuccessfulPattern(
@@ -1013,16 +1016,17 @@ export class PatternLearningService {
1013
1016
 
1014
1017
  private startPeriodicTasks(): void {
1015
1018
  // Pattern cleanup task - runs every hour
1016
- setInterval(async () => {
1019
+ this.patternCleanupInterval = setInterval(async () => {
1017
1020
  try {
1018
1021
  await this.cleanupStalePatterns();
1019
1022
  } catch (error) {
1020
1023
  this.logger.error('Pattern cleanup task failed:', error);
1021
1024
  }
1022
1025
  }, 60 * 60 * 1000);
1026
+ this.patternCleanupInterval.unref?.();
1023
1027
 
1024
1028
  // Cache cleanup task - runs every 10 minutes
1025
- setInterval(() => {
1029
+ this.cacheCleanupInterval = setInterval(() => {
1026
1030
  const now = Date.now();
1027
1031
  for (const [key, expiry] of this.cacheExpiry.entries()) {
1028
1032
  if (now > expiry) {
@@ -1030,6 +1034,7 @@ export class PatternLearningService {
1030
1034
  }
1031
1035
  }
1032
1036
  }, 10 * 60 * 1000);
1037
+ this.cacheCleanupInterval.unref?.();
1033
1038
  }
1034
1039
 
1035
1040
  private async cleanupStalePatterns(): Promise<void> {
@@ -1081,4 +1086,24 @@ export class PatternLearningService {
1081
1086
  public getConfig(): PatternLearningConfig {
1082
1087
  return { ...this.config };
1083
1088
  }
1084
- }
1089
+
1090
+ /** Release every timer and subscription owned by this singleton. */
1091
+ public shutdown(): void {
1092
+ if (this.patternCleanupInterval) {
1093
+ clearInterval(this.patternCleanupInterval);
1094
+ this.patternCleanupInterval = undefined;
1095
+ }
1096
+ if (this.cacheCleanupInterval) {
1097
+ clearInterval(this.cacheCleanupInterval);
1098
+ this.cacheCleanupInterval = undefined;
1099
+ }
1100
+ this.validationEventSubscription?.unsubscribe();
1101
+ this.validationEventSubscription = undefined;
1102
+ this.clearAllCaches();
1103
+ this.patternLearningEvents$.complete();
1104
+
1105
+ if (PatternLearningService.instance === this) {
1106
+ PatternLearningService.instance = undefined;
1107
+ }
1108
+ }
1109
+ }
@@ -32,6 +32,7 @@
32
32
  import { createBaseEventPayload } from '../schemas/EventPayloadSchema.js';
33
33
  import * as os from 'os';
34
34
  import { EventEmitter } from 'events';
35
+ import type { Subscription } from 'rxjs';
35
36
  import { Logger } from '../utils/Logger.js';
36
37
  import { EventBus } from '../events/EventBus.js';
37
38
  import { Events } from '../events/EventNames.js';
@@ -195,8 +196,9 @@ export class PerformanceOptimizationService extends EventEmitter {
195
196
  optimizationsApplied: 0,
196
197
  performanceImprovement: 0
197
198
  };
198
-
199
- private static instance: PerformanceOptimizationService;
199
+ private readonly eventSubscriptions: Subscription[] = [];
200
+
201
+ private static instance: PerformanceOptimizationService | undefined;
200
202
 
201
203
  private constructor() {
202
204
  super();
@@ -880,8 +882,9 @@ proactiveValidationService.updateConfig({
880
882
  }
881
883
 
882
884
  this.autoTuningInterval = setInterval(() => {
883
- this.performAutoTuning();
885
+ void this.performAutoTuning();
884
886
  }, this.autoTuningConfig.tuningInterval);
887
+ this.autoTuningInterval.unref?.();
885
888
 
886
889
  }
887
890
 
@@ -1002,6 +1005,7 @@ proactiveValidationService.updateConfig({
1002
1005
  // Emit resource update
1003
1006
  this.emit('resource_update', usage);
1004
1007
  }, 5000); // Every 5 seconds
1008
+ this.resourceMonitorInterval.unref?.();
1005
1009
  }
1006
1010
 
1007
1011
  /**
@@ -1071,13 +1075,13 @@ proactiveValidationService.updateConfig({
1071
1075
  */
1072
1076
  private setupEventListeners(): void {
1073
1077
  // Listen to validation events for performance tracking
1074
- EventBus.server.on(Events.Mcp.TOOL_VALIDATION_STARTED, (event) => {
1078
+ this.eventSubscriptions.push(EventBus.server.on(Events.Mcp.TOOL_VALIDATION_STARTED, (_event) => {
1075
1079
  // Track validation start times
1076
- });
1080
+ }));
1077
1081
 
1078
- EventBus.server.on(Events.Mcp.TOOL_VALIDATION_COMPLETED, (event) => {
1082
+ this.eventSubscriptions.push(EventBus.server.on(Events.Mcp.TOOL_VALIDATION_COMPLETED, (_event) => {
1079
1083
  // Track validation completion times
1080
- });
1084
+ }));
1081
1085
  }
1082
1086
 
1083
1087
  // =============================================================================
@@ -1121,12 +1125,25 @@ proactiveValidationService.updateConfig({
1121
1125
  /**
1122
1126
  * Cleanup
1123
1127
  */
1124
- public cleanup(): void {
1128
+ public shutdown(): void {
1125
1129
  if (this.resourceMonitorInterval) {
1126
1130
  clearInterval(this.resourceMonitorInterval);
1131
+ this.resourceMonitorInterval = undefined;
1127
1132
  }
1128
1133
  if (this.autoTuningInterval) {
1129
1134
  clearInterval(this.autoTuningInterval);
1135
+ this.autoTuningInterval = undefined;
1136
+ }
1137
+ for (const subscription of this.eventSubscriptions) {
1138
+ subscription.unsubscribe();
1139
+ }
1140
+ this.eventSubscriptions.length = 0;
1141
+ this.activeProfiles.clear();
1142
+ this.clearMetrics();
1143
+ this.removeAllListeners();
1144
+
1145
+ if (PerformanceOptimizationService.instance === this) {
1146
+ PerformanceOptimizationService.instance = undefined;
1130
1147
  }
1131
1148
  }
1132
- }
1149
+ }
@@ -32,6 +32,7 @@
32
32
  import { createBaseEventPayload } from '../schemas/EventPayloadSchema.js';
33
33
  import * as os from 'os';
34
34
  import { EventEmitter } from 'events';
35
+ import type { Subscription } from 'rxjs';
35
36
  import { Logger } from '../utils/Logger.js';
36
37
  import { EventBus } from '../events/EventBus.js';
37
38
  import { Events } from '../events/EventNames.js';
@@ -291,9 +292,10 @@ export class PredictiveAnalyticsService extends EventEmitter {
291
292
  predictionAccuracy: 0
292
293
  };
293
294
 
294
- private retrainInterval?: NodeJS.Timeout;
295
-
296
- private static instance: PredictiveAnalyticsService;
295
+ private retrainInterval?: ReturnType<typeof setInterval>;
296
+ private readonly eventSubscriptions: Subscription[] = [];
297
+
298
+ private static instance: PredictiveAnalyticsService | undefined;
297
299
 
298
300
  private constructor() {
299
301
  super();
@@ -307,9 +309,8 @@ export class PredictiveAnalyticsService extends EventEmitter {
307
309
  this.startRetrainSchedule();
308
310
 
309
311
  // TF.js model initialization is deferred to initializeTensorFlowModels().
310
- // This service is instantiated at module load time (via validationAnalyticsController),
311
- // which runs BEFORE MxfMLService.initialize() in server Step 2.8.
312
- // The server calls initializeTensorFlowModels() after MxfMLService is ready.
312
+ // The server owns this service explicitly and calls initializeTensorFlowModels()
313
+ // only after MxfMLService is ready.
313
314
  }
314
315
 
315
316
  /**
@@ -2239,7 +2240,7 @@ export class PredictiveAnalyticsService extends EventEmitter {
2239
2240
  */
2240
2241
  private setupEventListeners(): void {
2241
2242
  // Collect training data from events
2242
- EventBus.server.on(Events.Mcp.TOOL_RESULT, async (event) => {
2243
+ this.eventSubscriptions.push(EventBus.server.on(Events.Mcp.TOOL_RESULT, async (event) => {
2243
2244
  try {
2244
2245
  const features = await this.extractFeatures(
2245
2246
  event.agentId,
@@ -2265,7 +2266,7 @@ export class PredictiveAnalyticsService extends EventEmitter {
2265
2266
  } catch (error) {
2266
2267
  this.logger.warn('Failed to collect training data:', error);
2267
2268
  }
2268
- });
2269
+ }));
2269
2270
  }
2270
2271
 
2271
2272
  /**
@@ -2289,8 +2290,9 @@ export class PredictiveAnalyticsService extends EventEmitter {
2289
2290
  return;
2290
2291
  }
2291
2292
  this.retrainInterval = setInterval(() => {
2292
- this.trainModels();
2293
+ void this.trainModels();
2293
2294
  }, this.config.retrainInterval);
2295
+ this.retrainInterval.unref?.();
2294
2296
  }
2295
2297
 
2296
2298
  // =============================================================================
@@ -2342,8 +2344,19 @@ export class PredictiveAnalyticsService extends EventEmitter {
2342
2344
  public cleanup(): void {
2343
2345
  if (this.retrainInterval) {
2344
2346
  clearInterval(this.retrainInterval);
2347
+ this.retrainInterval = undefined;
2348
+ }
2349
+ for (const subscription of this.eventSubscriptions) {
2350
+ subscription?.unsubscribe();
2351
+ }
2352
+ this.eventSubscriptions.length = 0;
2353
+ this.clearTrainingData();
2354
+ this.modelMetadata.clear();
2355
+ this.removeAllListeners();
2356
+ if (PredictiveAnalyticsService.instance === this) {
2357
+ PredictiveAnalyticsService.instance = undefined;
2345
2358
  }
2346
2359
  this.tfErrorPredictionReady = false;
2347
2360
  this.tfAnomalyAutoencoderReady = false;
2348
2361
  }
2349
- }
2362
+ }
@@ -25,7 +25,7 @@
25
25
  * Provides proactive validation to prevent errors before tool execution.
26
26
  */
27
27
 
28
- import { Observable, Subject } from 'rxjs';
28
+ import { Observable, Subject, Subscription } from 'rxjs';
29
29
  import { Logger } from '../utils/Logger.js';
30
30
  import { EventBus } from '../events/EventBus.js';
31
31
  import { Events } from '../events/EventNames.js';
@@ -206,8 +206,12 @@ export class ProactiveValidationService {
206
206
  warningsGenerated: 0,
207
207
  suggestionsProvided: 0
208
208
  };
209
-
210
- private static instance: ProactiveValidationService;
209
+ private readonly eventSubscriptions: Subscription[] = [];
210
+ private metricsInterval?: ReturnType<typeof setInterval>;
211
+ private riskProfileInterval?: ReturnType<typeof setInterval>;
212
+ private cacheCleanupInterval?: ReturnType<typeof setInterval>;
213
+
214
+ private static instance: ProactiveValidationService | undefined;
211
215
 
212
216
  private constructor() {
213
217
  this.logger = new Logger('info', 'ProactiveValidationService', 'server');
@@ -882,30 +886,23 @@ export class ProactiveValidationService {
882
886
  }
883
887
 
884
888
  private async performBackgroundValidation(context: ValidationContext): Promise<void> {
885
- // Perform validation without blocking
886
- setTimeout(async () => {
887
- try {
888
- const result = await this.performBlockingValidation(context);
889
-
890
- // Store results for future reference
891
- if (!result.valid) {
892
- this.logger.warn(`Background validation found issues for ${context.toolName}:`, result.errors);
893
-
894
- // Could emit events or store for analytics
895
- this.emitValidationEvent({
896
- timestamp: Date.now(),
897
- agentId: context.agentId,
898
- channelId: context.channelId,
899
- toolName: context.toolName,
900
- eventType: 'VALIDATION_COMPLETE',
901
- validationId: `bg_${context.requestId}`,
902
- details: { backgroundValidation: true, result }
903
- });
904
- }
905
- } catch (error) {
906
- this.logger.warn(`Background validation failed for ${context.toolName}:`, error);
907
- }
908
- }, 0);
889
+ const result = await this.performBlockingValidation(context);
890
+
891
+ // Store results for future reference
892
+ if (!result.valid) {
893
+ this.logger.warn(`Background validation found issues for ${context.toolName}:`, result.errors);
894
+
895
+ // Could emit events or store for analytics
896
+ this.emitValidationEvent({
897
+ timestamp: Date.now(),
898
+ agentId: context.agentId,
899
+ channelId: context.channelId,
900
+ toolName: context.toolName,
901
+ eventType: 'VALIDATION_COMPLETE',
902
+ validationId: `bg_${context.requestId}`,
903
+ details: { backgroundValidation: true, result }
904
+ });
905
+ }
909
906
  }
910
907
 
911
908
  private async previewValidationErrors(
@@ -1193,39 +1190,41 @@ export class ProactiveValidationService {
1193
1190
  }
1194
1191
 
1195
1192
  private setupEventListeners(): void {
1196
- // Listen to tool execution events for learning
1197
- EventBus.server.on(Events.Mcp.TOOL_ERROR, (payload) => {
1198
- // Learn from validation failures
1193
+ // Listen to tool execution events for learning. Each handler returns its
1194
+ // promise so the EventBus shutdown drain waits for in-flight learning.
1195
+ this.eventSubscriptions.push(EventBus.server.on(Events.Mcp.TOOL_ERROR, (payload): Promise<void> =>
1199
1196
  this.learnFromValidationFailure(payload).catch(error => {
1200
1197
  this.logger.warn('Failed to learn from validation failure:', error);
1201
- });
1202
- });
1198
+ })
1199
+ ));
1203
1200
 
1204
- EventBus.server.on(Events.Mcp.TOOL_RESULT, (payload) => {
1205
- // Learn from successful validations
1201
+ this.eventSubscriptions.push(EventBus.server.on(Events.Mcp.TOOL_RESULT, (payload): Promise<void> =>
1206
1202
  this.learnFromValidationSuccess(payload).catch(error => {
1207
1203
  this.logger.warn('Failed to learn from validation success:', error);
1208
- });
1209
- });
1204
+ })
1205
+ ));
1210
1206
  }
1211
1207
 
1212
1208
  private startPeriodicTasks(): void {
1213
1209
  // Performance metrics reporting
1214
- setInterval(() => {
1210
+ this.metricsInterval = setInterval(() => {
1215
1211
  this.reportPerformanceMetrics();
1216
1212
  }, 60 * 1000); // Every minute
1213
+ this.metricsInterval.unref?.();
1217
1214
 
1218
1215
  // Risk profile updates
1219
- setInterval(() => {
1216
+ this.riskProfileInterval = setInterval(() => {
1220
1217
  this.updateRiskProfiles().catch(error => {
1221
1218
  this.logger.warn('Failed to update risk profiles:', error);
1222
1219
  });
1223
1220
  }, 10 * 60 * 1000); // Every 10 minutes
1221
+ this.riskProfileInterval.unref?.();
1224
1222
 
1225
1223
  // Cache cleanup
1226
- setInterval(() => {
1224
+ this.cacheCleanupInterval = setInterval(() => {
1227
1225
  this.cleanupExpiredCaches();
1228
1226
  }, 5 * 60 * 1000); // Every 5 minutes
1227
+ this.cacheCleanupInterval.unref?.();
1229
1228
  }
1230
1229
 
1231
1230
  private async learnFromValidationFailure(payload: any): Promise<void> {
@@ -1382,4 +1381,31 @@ export class ProactiveValidationService {
1382
1381
  this.toolRiskProfiles.clear();
1383
1382
  this.toolRiskCacheExpiry.clear();
1384
1383
  }
1385
- }
1384
+
1385
+ /** Release every timer and subscription owned by this singleton. */
1386
+ public shutdown(): void {
1387
+ if (this.metricsInterval) {
1388
+ clearInterval(this.metricsInterval);
1389
+ this.metricsInterval = undefined;
1390
+ }
1391
+ if (this.riskProfileInterval) {
1392
+ clearInterval(this.riskProfileInterval);
1393
+ this.riskProfileInterval = undefined;
1394
+ }
1395
+ if (this.cacheCleanupInterval) {
1396
+ clearInterval(this.cacheCleanupInterval);
1397
+ this.cacheCleanupInterval = undefined;
1398
+ }
1399
+ for (const subscription of this.eventSubscriptions) {
1400
+ subscription.unsubscribe();
1401
+ }
1402
+ this.eventSubscriptions.length = 0;
1403
+ this.activeValidations.clear();
1404
+ this.clearCaches();
1405
+ this.validationEvents$.complete();
1406
+
1407
+ if (ProactiveValidationService.instance === this) {
1408
+ ProactiveValidationService.instance = undefined;
1409
+ }
1410
+ }
1411
+ }