@mxf-dev/core 2.0.4 → 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 +118 -5
  158. package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts.map +1 -1
  159. package/dist/protocols/mcp/services/ExternalMcpServerManager.js +499 -98
  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 +656 -111
  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
@@ -23,6 +23,7 @@ import { executeShellCommand } from './InfrastructureTools.js';
23
23
  import { paginationInputSchema, paginateArray, paginateMultipleArrays, checkResultSize } from '../../../utils/ToolPaginationUtils.js';
24
24
  import * as fs from 'fs/promises';
25
25
  import * as path from 'path';
26
+ import { resolveWorkspacePath } from '../security/McpToolPolicy.js';
26
27
 
27
28
  const logger = new Logger('info', 'CodeAnalysisTools', 'server');
28
29
 
@@ -234,7 +235,10 @@ export const analyzeCodebaseTool = {
234
235
  handler: async (args: any, context: any) => {
235
236
 
236
237
  try {
237
- const workingDir = args.workingDirectory || process.cwd();
238
+ const workingDir = resolveWorkspacePath(
239
+ args.workingDirectory,
240
+ 'analyze_codebase workingDirectory'
241
+ );
238
242
  const analysis: {
239
243
  structure: any;
240
244
  dependencies: any;
@@ -284,7 +288,11 @@ export const analyzeCodebaseTool = {
284
288
 
285
289
  // Analyze dependencies using package.json
286
290
  try {
287
- const packageJson = await fs.readFile(path.join(workingDir, 'package.json'), 'utf-8');
291
+ const packageJsonPath = resolveWorkspacePath(
292
+ path.join(workingDir, 'package.json'),
293
+ 'analyze_codebase package.json'
294
+ );
295
+ const packageJson = await fs.readFile(packageJsonPath, 'utf-8');
288
296
  const pkg = JSON.parse(packageJson);
289
297
  analysis.dependencies = {
290
298
  production: Object.keys(pkg.dependencies || {}),
@@ -297,7 +305,10 @@ export const analyzeCodebaseTool = {
297
305
 
298
306
  // Analyze TypeScript configuration
299
307
  try {
300
- const tsconfigPath = path.join(workingDir, 'tsconfig.json');
308
+ const tsconfigPath = resolveWorkspacePath(
309
+ path.join(workingDir, 'tsconfig.json'),
310
+ 'analyze_codebase tsconfig.json'
311
+ );
301
312
  const tsconfig = await fs.readFile(tsconfigPath, 'utf-8');
302
313
  const config = JSON.parse(tsconfig);
303
314
  analysis.patterns = {
@@ -363,7 +374,10 @@ export const findFunctionsTool = {
363
374
  handler: async (args: any, context: any) => {
364
375
 
365
376
  try {
366
- const workingDir = args.workingDirectory || process.cwd();
377
+ const workingDir = resolveWorkspacePath(
378
+ args.workingDirectory,
379
+ 'find_functions workingDirectory'
380
+ );
367
381
  const limit = args.limit ?? 50;
368
382
  const offset = args.offset ?? 0;
369
383
  const allFunctions: any[] = [];
@@ -457,7 +471,10 @@ export const traceDependenciesTool = {
457
471
  handler: async (args: any, context: any) => {
458
472
 
459
473
  try {
460
- const workingDir = args.workingDirectory || process.cwd();
474
+ const workingDir = resolveWorkspacePath(
475
+ args.workingDirectory,
476
+ 'trace_dependencies workingDirectory'
477
+ );
461
478
  const limit = args.limit ?? 50;
462
479
  const offset = args.offset ?? 0;
463
480
  const allImports: any[] = [];
@@ -465,7 +482,10 @@ export const traceDependenciesTool = {
465
482
  const allDependents: any[] = [];
466
483
 
467
484
  // Read the target file
468
- const fullPath = path.resolve(workingDir, args.filePath);
485
+ const fullPath = resolveWorkspacePath(
486
+ path.resolve(workingDir, args.filePath),
487
+ 'trace_dependencies filePath'
488
+ );
469
489
  const content = await fs.readFile(fullPath, 'utf-8');
470
490
 
471
491
  // Extract imports
@@ -494,7 +514,7 @@ export const traceDependenciesTool = {
494
514
  }
495
515
 
496
516
  // Find files that import this file
497
- const relativePath = path.relative(workingDir, args.filePath);
517
+ const relativePath = path.relative(workingDir, fullPath);
498
518
  const importPattern = relativePath.replace(/\\/g, '/').replace(/\.(ts|tsx|js|jsx)$/, '');
499
519
 
500
520
  const dependentsResult = await executeShellCommand('rg', [
@@ -580,13 +600,19 @@ export const suggestRefactoringTool = {
580
600
  handler: async (args: any, context: any) => {
581
601
 
582
602
  try {
583
- const workingDir = args.workingDirectory || process.cwd();
603
+ const workingDir = resolveWorkspacePath(
604
+ args.workingDirectory,
605
+ 'suggest_refactoring workingDirectory'
606
+ );
584
607
  const limit = args.limit ?? 50;
585
608
  const offset = args.offset ?? 0;
586
609
  const allSuggestions: any[] = [];
587
610
 
588
611
  // Read the file
589
- const fullPath = path.resolve(workingDir, args.filePath);
612
+ const fullPath = resolveWorkspacePath(
613
+ path.resolve(workingDir, args.filePath),
614
+ 'suggest_refactoring filePath'
615
+ );
590
616
  const content = await fs.readFile(fullPath, 'utf-8');
591
617
  const lines = content.split('\n');
592
618
 
@@ -673,23 +699,27 @@ export const validateArchitectureTool = {
673
699
  const allViolations: any[] = [];
674
700
 
675
701
  for (const filePath of args.filePaths) {
676
- const content = await fs.readFile(filePath, 'utf-8');
702
+ const resolvedFilePath = resolveWorkspacePath(
703
+ filePath,
704
+ 'validate_architecture filePath'
705
+ );
706
+ const content = await fs.readFile(resolvedFilePath, 'utf-8');
677
707
 
678
708
  // Validate layering
679
709
  if (args.rules.includes('layering')) {
680
- const layerViolations = validateLayering(filePath, content);
710
+ const layerViolations = validateLayering(resolvedFilePath, content);
681
711
  allViolations.push(...layerViolations);
682
712
  }
683
713
 
684
714
  // Validate dependencies
685
715
  if (args.rules.includes('dependencies')) {
686
- const depViolations = validateDependencies(filePath, content);
716
+ const depViolations = validateDependencies(resolvedFilePath, content);
687
717
  allViolations.push(...depViolations);
688
718
  }
689
719
 
690
720
  // Validate naming
691
721
  if (args.rules.includes('naming')) {
692
- const namingViolations = validateNaming(filePath, content);
722
+ const namingViolations = validateNaming(resolvedFilePath, content);
693
723
  allViolations.push(...namingViolations);
694
724
  }
695
725
  }
@@ -727,4 +757,4 @@ export const codeAnalysisTools = [
727
757
  traceDependenciesTool,
728
758
  suggestRefactoringTool,
729
759
  validateArchitectureTool
730
- ];
760
+ ];
@@ -24,20 +24,97 @@
24
24
  * Enables agents to track and measure their own effectiveness
25
25
  */
26
26
 
27
- import { McpToolDefinition, McpToolHandlerResult } from '../McpServerTypes.js';
27
+ import {
28
+ McpToolDefinition,
29
+ McpToolHandlerContext,
30
+ McpToolHandlerResult
31
+ } from '../McpServerTypes.js';
28
32
  import { TaskEffectivenessService } from '../../../services/TaskEffectivenessService.js';
29
33
  import { AgentId } from '../../../types/Agent.js';
30
34
  import { ChannelId } from '../../../types/ChannelContext.js';
31
35
  import {
32
36
  TaskDefinition,
33
37
  TaskExecutionEvent,
34
- EffectivenessComparison,
35
- EffectivenessAnalytics
38
+ TaskEffectivenessMetrics
36
39
  } from '../../../types/EffectivenessTypes.js';
37
40
  import { v4 as uuidv4 } from 'uuid';
38
41
 
42
+ interface EffectivenessTenantIdentity {
43
+ agentId: AgentId;
44
+ channelId: ChannelId;
45
+ }
46
+
47
+ interface EffectivenessStartInput extends Record<string, unknown> {
48
+ taskType: string;
49
+ description: string;
50
+ successCriteria?: TaskDefinition['successCriteria'];
51
+ baselineMetrics?: {
52
+ completionTime?: number;
53
+ humanInterventions?: number;
54
+ };
55
+ }
56
+
57
+ interface EffectivenessEventInput extends Record<string, unknown> {
58
+ taskId: string;
59
+ eventType: TaskExecutionEvent['type'];
60
+ details?: Record<string, unknown>;
61
+ }
62
+
63
+ interface EffectivenessQualityInput extends Record<string, unknown> {
64
+ taskId: string;
65
+ completenessScore?: number;
66
+ iterationCount?: number;
67
+ customMetrics?: Record<string, number>;
68
+ }
69
+
70
+ interface EffectivenessCompleteInput extends Record<string, unknown> {
71
+ taskId: string;
72
+ success: boolean;
73
+ customMetrics?: Record<string, number>;
74
+ }
75
+
76
+ interface EffectivenessAnalyticsInput extends Record<string, unknown> {
77
+ timeRange: 'hour' | 'day' | 'week' | 'month';
78
+ taskType?: string;
79
+ }
80
+
81
+ interface EffectivenessCompareInput extends Record<string, unknown> {
82
+ taskId: string;
83
+ }
84
+
85
+ function requireTenantIdentity(context: McpToolHandlerContext): EffectivenessTenantIdentity {
86
+ if (!context.agentId?.trim() || !context.channelId?.trim() ||
87
+ context.agentId !== context.agentId.trim() ||
88
+ context.channelId !== context.channelId.trim()) {
89
+ throw new Error('Authenticated agent and channel context are required');
90
+ }
91
+
92
+ return {
93
+ agentId: context.agentId as AgentId,
94
+ channelId: context.channelId as ChannelId
95
+ };
96
+ }
97
+
98
+ function rejectCallerSelectedTenant(input: Record<string, unknown>): void {
99
+ if (Object.prototype.hasOwnProperty.call(input, 'agentId') ||
100
+ Object.prototype.hasOwnProperty.call(input, 'channelId')) {
101
+ throw new Error('Agent and channel identity are derived from authenticated tool context');
102
+ }
103
+ }
104
+
105
+ function errorMessage(error: unknown): string {
106
+ return error instanceof Error ? error.message : String(error);
107
+ }
108
+
109
+ function requireObjectInput<T extends Record<string, unknown>>(input: unknown): T {
110
+ if (input === null || typeof input !== 'object' || Array.isArray(input)) {
111
+ throw new Error('Tool input must be an object');
112
+ }
113
+ return input as T;
114
+ }
115
+
39
116
  // Helper to create tool result
40
- function createToolResult(success: boolean, data: any): McpToolHandlerResult {
117
+ function createToolResult(success: boolean, data: Record<string, unknown>): McpToolHandlerResult {
41
118
  return {
42
119
  content: {
43
120
  type: 'application/json',
@@ -94,15 +171,24 @@ export const task_effectiveness_start: McpToolDefinition = {
94
171
  }
95
172
  }
96
173
  },
97
- required: ['taskType', 'description']
174
+ required: ['taskType', 'description'],
175
+ additionalProperties: false
98
176
  },
99
177
  enabled: true,
100
- handler: async ({ taskType, description, successCriteria, baselineMetrics }: any, { agentId, channelId }: any) => {
178
+ handler: async (
179
+ rawInput: unknown,
180
+ context: McpToolHandlerContext
181
+ ): Promise<McpToolHandlerResult> => {
101
182
  const effectivenessService = TaskEffectivenessService.getInstance();
102
183
  try {
184
+ const input = requireObjectInput<EffectivenessStartInput>(rawInput);
185
+ rejectCallerSelectedTenant(input);
186
+ const { taskType, description, successCriteria, baselineMetrics } = input;
187
+ const { agentId, channelId } = requireTenantIdentity(context);
103
188
  const definition: TaskDefinition = {
104
189
  taskId: uuidv4(),
105
- channelId: channelId as ChannelId,
190
+ agentId,
191
+ channelId,
106
192
  taskType,
107
193
  description,
108
194
  successCriteria,
@@ -111,7 +197,7 @@ export const task_effectiveness_start: McpToolDefinition = {
111
197
  metrics: {
112
198
  performance: {
113
199
  completionTime: baselineMetrics.completionTime,
114
- humanInterventions: baselineMetrics.humanInterventions,
200
+ humanInterventions: baselineMetrics.humanInterventions ?? 0,
115
201
  autonomyScore: 0, // Human baseline has 0 autonomy
116
202
  stepCount: 0,
117
203
  toolsUsed: 0,
@@ -129,9 +215,9 @@ export const task_effectiveness_start: McpToolDefinition = {
129
215
  message: `Started tracking effectiveness for ${taskType} task`,
130
216
  trackingStarted: Date.now()
131
217
  });
132
- } catch (error) {
218
+ } catch (error: unknown) {
133
219
  return createToolResult(false, {
134
- error: `Failed to start effectiveness tracking: ${error}`
220
+ error: `Failed to start effectiveness tracking: ${errorMessage(error)}`
135
221
  });
136
222
  }
137
223
  }
@@ -160,18 +246,27 @@ export const task_effectiveness_event: McpToolDefinition = {
160
246
  description: 'Event-specific details (e.g., tool name, error message, milestone name)'
161
247
  }
162
248
  },
163
- required: ['taskId', 'eventType']
249
+ required: ['taskId', 'eventType'],
250
+ additionalProperties: false
164
251
  },
165
252
  enabled: true,
166
- handler: async ({ taskId, eventType, details = {} }: any, { agentId }: any) => {
253
+ handler: async (
254
+ rawInput: unknown,
255
+ context: McpToolHandlerContext
256
+ ): Promise<McpToolHandlerResult> => {
167
257
  const effectivenessService = TaskEffectivenessService.getInstance();
168
258
  try {
259
+ const input = requireObjectInput<EffectivenessEventInput>(rawInput);
260
+ rejectCallerSelectedTenant(input);
261
+ const { taskId, eventType, details = {} } = input;
262
+ const { agentId, channelId } = requireTenantIdentity(context);
169
263
  const event: TaskExecutionEvent = {
170
264
  eventId: uuidv4(),
171
265
  taskId,
172
266
  timestamp: Date.now(),
173
- type: eventType as any,
174
- agentId: agentId as AgentId,
267
+ type: eventType,
268
+ agentId,
269
+ channelId,
175
270
  details
176
271
  };
177
272
 
@@ -181,9 +276,9 @@ export const task_effectiveness_event: McpToolDefinition = {
181
276
  message: `Recorded ${eventType} event for task`,
182
277
  eventId: event.eventId
183
278
  });
184
- } catch (error) {
279
+ } catch (error: unknown) {
185
280
  return createToolResult(false, {
186
- error: `Failed to record event: ${error}`
281
+ error: `Failed to record event: ${errorMessage(error)}`
187
282
  });
188
283
  }
189
284
  }
@@ -218,26 +313,34 @@ export const task_effectiveness_quality: McpToolDefinition = {
218
313
  additionalProperties: { type: 'number' }
219
314
  }
220
315
  },
221
- required: ['taskId']
316
+ required: ['taskId'],
317
+ additionalProperties: false
222
318
  },
223
319
  enabled: true,
224
- handler: async ({ taskId, completenessScore, iterationCount, customMetrics }: any, { agentId }: any) => {
320
+ handler: async (
321
+ rawInput: unknown,
322
+ context: McpToolHandlerContext
323
+ ): Promise<McpToolHandlerResult> => {
225
324
  const effectivenessService = TaskEffectivenessService.getInstance();
226
325
  try {
227
- const updates: any = {};
326
+ const input = requireObjectInput<EffectivenessQualityInput>(rawInput);
327
+ rejectCallerSelectedTenant(input);
328
+ const { taskId, completenessScore, iterationCount, customMetrics } = input;
329
+ const { agentId, channelId } = requireTenantIdentity(context);
330
+ const updates: Partial<TaskEffectivenessMetrics['quality']> = {};
228
331
  if (completenessScore !== undefined) updates.completenessScore = completenessScore;
229
332
  if (iterationCount !== undefined) updates.iterationCount = iterationCount;
230
333
  if (customMetrics) updates.customMetrics = customMetrics;
231
334
 
232
- effectivenessService.updateQuality(taskId, updates, agentId as AgentId);
335
+ effectivenessService.updateQuality(taskId, agentId, channelId, updates);
233
336
 
234
337
  return createToolResult(true, {
235
338
  message: 'Updated quality metrics',
236
339
  updates
237
340
  });
238
- } catch (error) {
341
+ } catch (error: unknown) {
239
342
  return createToolResult(false, {
240
- error: `Failed to update quality metrics: ${error}`
343
+ error: `Failed to update quality metrics: ${errorMessage(error)}`
241
344
  });
242
345
  }
243
346
  }
@@ -266,20 +369,39 @@ export const task_effectiveness_complete: McpToolDefinition = {
266
369
  additionalProperties: { type: 'number' }
267
370
  }
268
371
  },
269
- required: ['taskId', 'success']
372
+ required: ['taskId', 'success'],
373
+ additionalProperties: false
270
374
  },
271
375
  enabled: true,
272
- handler: async ({ taskId, success, customMetrics }: any) => {
376
+ handler: async (
377
+ rawInput: unknown,
378
+ context: McpToolHandlerContext
379
+ ): Promise<McpToolHandlerResult> => {
273
380
  const effectivenessService = TaskEffectivenessService.getInstance();
274
381
  try {
275
- const metrics = await effectivenessService.completeTask(taskId, success, customMetrics);
382
+ const input = requireObjectInput<EffectivenessCompleteInput>(rawInput);
383
+ rejectCallerSelectedTenant(input);
384
+ const { taskId, success, customMetrics } = input;
385
+ const { agentId, channelId } = requireTenantIdentity(context);
386
+ const metrics = await effectivenessService.completeTask(
387
+ taskId,
388
+ agentId,
389
+ channelId,
390
+ success,
391
+ customMetrics
392
+ );
276
393
  if (!metrics) {
277
394
  return createToolResult(false, {
278
395
  error: 'Task not found or already completed'
279
396
  });
280
397
  }
281
398
 
282
- const comparison = await effectivenessService.compareWithBaseline(taskId);
399
+ const comparison = await effectivenessService.compareWithBaseline(taskId, agentId, channelId);
400
+ if (!comparison) {
401
+ return createToolResult(false, {
402
+ error: 'Task completed, but its persisted comparison could not be loaded'
403
+ });
404
+ }
283
405
 
284
406
  return createToolResult(true, {
285
407
  message: 'Task completed and effectiveness measured',
@@ -288,17 +410,17 @@ export const task_effectiveness_complete: McpToolDefinition = {
288
410
  autonomyScore: metrics.performance.autonomyScore,
289
411
  toolsUsed: metrics.performance.toolsUsed,
290
412
  errorCount: metrics.quality.errorCount,
291
- overallScore: comparison?.summary.overallScore || 0
413
+ overallScore: comparison.summary.overallScore
292
414
  },
293
- comparison: comparison ? {
415
+ comparison: {
294
416
  speedImprovement: `${comparison.improvements.speedImprovement.toFixed(1)}%`,
295
417
  achievements: comparison.summary.achievements,
296
418
  recommendations: comparison.summary.recommendations
297
- } : undefined
419
+ }
298
420
  });
299
- } catch (error) {
421
+ } catch (error: unknown) {
300
422
  return createToolResult(false, {
301
- error: `Failed to complete task: ${error}`
423
+ error: `Failed to complete task: ${errorMessage(error)}`
302
424
  });
303
425
  }
304
426
  }
@@ -323,12 +445,20 @@ export const task_effectiveness_analytics: McpToolDefinition = {
323
445
  description: 'Optional: Filter by specific task type'
324
446
  }
325
447
  },
326
- required: ['timeRange']
448
+ required: ['timeRange'],
449
+ additionalProperties: false
327
450
  },
328
451
  enabled: true,
329
- handler: async ({ timeRange, taskType }: any, { channelId }: any) => {
452
+ handler: async (
453
+ rawInput: unknown,
454
+ context: McpToolHandlerContext
455
+ ): Promise<McpToolHandlerResult> => {
330
456
  const effectivenessService = TaskEffectivenessService.getInstance();
331
457
  try {
458
+ const input = requireObjectInput<EffectivenessAnalyticsInput>(rawInput);
459
+ rejectCallerSelectedTenant(input);
460
+ const { timeRange, taskType } = input;
461
+ const { agentId, channelId } = requireTenantIdentity(context);
332
462
  const now = Date.now();
333
463
  const ranges = {
334
464
  hour: 60 * 60 * 1000,
@@ -337,18 +467,20 @@ export const task_effectiveness_analytics: McpToolDefinition = {
337
467
  month: 30 * 24 * 60 * 60 * 1000
338
468
  };
339
469
 
340
- const startTime = now - ranges[timeRange as keyof typeof ranges];
470
+ const startTime = now - ranges[timeRange];
341
471
  const analytics = await effectivenessService.getAnalytics(
342
472
  startTime,
343
- now,
344
- channelId as ChannelId,
473
+ now,
474
+ agentId,
475
+ channelId,
345
476
  taskType
346
477
  );
347
478
 
348
479
  // Filter by task type if specified
349
480
  let relevantStats = analytics.byTaskType;
350
481
  if (taskType) {
351
- relevantStats = { [taskType]: analytics.byTaskType[taskType] };
482
+ const taskStats = analytics.byTaskType[taskType];
483
+ relevantStats = taskStats ? { [taskType]: taskStats } : {};
352
484
  }
353
485
 
354
486
  return createToolResult(true, {
@@ -367,9 +499,9 @@ export const task_effectiveness_analytics: McpToolDefinition = {
367
499
  }
368
500
  }
369
501
  });
370
- } catch (error) {
502
+ } catch (error: unknown) {
371
503
  return createToolResult(false, {
372
- error: `Failed to get analytics: ${error}`
504
+ error: `Failed to get analytics: ${errorMessage(error)}`
373
505
  });
374
506
  }
375
507
  }
@@ -389,13 +521,21 @@ export const task_effectiveness_compare: McpToolDefinition = {
389
521
  description: 'Current task ID to compare'
390
522
  }
391
523
  },
392
- required: ['taskId']
524
+ required: ['taskId'],
525
+ additionalProperties: false
393
526
  },
394
527
  enabled: true,
395
- handler: async ({ taskId }: any) => {
528
+ handler: async (
529
+ rawInput: unknown,
530
+ context: McpToolHandlerContext
531
+ ): Promise<McpToolHandlerResult> => {
396
532
  const effectivenessService = TaskEffectivenessService.getInstance();
397
533
  try {
398
- const comparison = await effectivenessService.compareWithBaseline(taskId);
534
+ const input = requireObjectInput<EffectivenessCompareInput>(rawInput);
535
+ rejectCallerSelectedTenant(input);
536
+ const { taskId } = input;
537
+ const { agentId, channelId } = requireTenantIdentity(context);
538
+ const comparison = await effectivenessService.compareWithBaseline(taskId, agentId, channelId);
399
539
  if (!comparison) {
400
540
  return createToolResult(false, {
401
541
  error: 'Task not found or no comparison available'
@@ -415,9 +555,9 @@ export const task_effectiveness_compare: McpToolDefinition = {
415
555
  recommendations: comparison.summary.recommendations
416
556
  }
417
557
  });
418
- } catch (error) {
558
+ } catch (error: unknown) {
419
559
  return createToolResult(false, {
420
- error: `Failed to compare task: ${error}`
560
+ error: `Failed to compare task: ${errorMessage(error)}`
421
561
  });
422
562
  }
423
563
  }
@@ -431,4 +571,4 @@ export const effectivenessTools: McpToolDefinition[] = [
431
571
  task_effectiveness_complete,
432
572
  task_effectiveness_analytics,
433
573
  task_effectiveness_compare
434
- ];
574
+ ];
@@ -34,11 +34,13 @@ import { TOOL_CATEGORIES } from '../../../constants/ToolNames.js';
34
34
  import { defineTool, ToolRunContext } from '../defineTool.js';
35
35
  import { ToolError } from '../ToolError.js';
36
36
  import { executeShellCommand, ShellCommandResult } from './InfrastructureTools.js';
37
+ import * as path from 'path';
38
+ import { resolveWorkspacePath } from '../security/McpToolPolicy.js';
37
39
 
38
40
  /** Working-directory property shared by every git tool's schema. */
39
41
  const workingDirectoryProperty = {
40
42
  type: 'string',
41
- description: 'Working directory path (defaults to the server working directory)'
43
+ description: 'Working directory under MXF_WORKSPACE_ROOT (defaults to MXF_WORKSPACE_ROOT)'
42
44
  };
43
45
 
44
46
  /**
@@ -58,7 +60,7 @@ async function runGit(
58
60
  channelId: context.channelId,
59
61
  requestId: context.requestId
60
62
  },
61
- workingDirectory: workingDirectory || process.cwd(),
63
+ workingDirectory,
62
64
  captureOutput: true
63
65
  });
64
66
 
@@ -164,11 +166,19 @@ export const gitAddTool = defineTool<
164
166
  required: ['files']
165
167
  },
166
168
  run: async (input, context) => {
167
- await runGit(['add', ...input.files], input.workingDirectory, context);
169
+ const workingDirectory = resolveWorkspacePath(
170
+ input.workingDirectory,
171
+ 'git_add workingDirectory'
172
+ );
173
+ const files = input.files.map(file => resolveWorkspacePath(
174
+ path.resolve(workingDirectory, file),
175
+ 'git_add file'
176
+ ));
177
+ await runGit(['add', ...files], workingDirectory, context);
168
178
 
169
179
  return {
170
- stagedCount: input.files.length,
171
- files: input.files
180
+ stagedCount: files.length,
181
+ files
172
182
  };
173
183
  }
174
184
  });