@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
@@ -32,9 +32,91 @@ import { EntityExtractionService } from '../../../services/kg/EntityExtractionSe
32
32
  import { OrparGraphIntegration } from '../../../services/kg/OrparGraphIntegration.js';
33
33
  import { isKnowledgeGraphEnabled } from '../../../config/knowledge-graph.config.js';
34
34
  import { EntityType, RelationshipType } from '../../../types/KnowledgeGraphTypes.js';
35
+ import { McpToolHandlerContext } from '../McpServerTypes.js';
35
36
 
36
37
  const logger = new Logger('info', 'KnowledgeGraphTools', 'server');
37
38
 
39
+ interface KnowledgeGraphIdentity {
40
+ agentId: string;
41
+ channelId: string;
42
+ }
43
+
44
+ export interface KnowledgeGraphToolArguments extends Record<string, unknown> {
45
+ channelId?: string;
46
+ entityId?: string;
47
+ name?: string;
48
+ exact?: boolean;
49
+ limit?: number;
50
+ direction?: 'incoming' | 'outgoing' | 'both';
51
+ relationshipType?: RelationshipType;
52
+ fromEntityId?: string;
53
+ toEntityId?: string;
54
+ maxHops?: number;
55
+ taskId?: string;
56
+ keywords?: string[];
57
+ type?: string;
58
+ aliases?: string[];
59
+ description?: string;
60
+ confidence?: number;
61
+ label?: string;
62
+ text?: string;
63
+ sourceId?: string;
64
+ memoryId?: string;
65
+ memoryContent?: string;
66
+ phase?: 'observation' | 'reasoning' | 'planning' | 'action' | 'reflection';
67
+ taskContent?: string;
68
+ entityIds?: string[];
69
+ threshold?: number;
70
+ targetEntityId?: string;
71
+ sourceEntityIds?: string[];
72
+ }
73
+
74
+ function requireKnowledgeGraphIdentity(
75
+ args: { channelId?: unknown },
76
+ context: McpToolHandlerContext
77
+ ): KnowledgeGraphIdentity {
78
+ if (typeof context.agentId !== 'string' || context.agentId.trim().length === 0 ||
79
+ typeof context.channelId !== 'string' || context.channelId.trim().length === 0) {
80
+ throw new Error('Authenticated agentId and channelId are required for Knowledge Graph tools');
81
+ }
82
+ const agentId = context.agentId.trim();
83
+ const channelId = context.channelId.trim();
84
+ if (args.channelId !== undefined && (
85
+ typeof args.channelId !== 'string' || args.channelId.trim() !== channelId
86
+ )) {
87
+ throw new Error('channelId must match the authenticated tool context');
88
+ }
89
+ return { agentId, channelId };
90
+ }
91
+
92
+ const errorMessage = (error: unknown): string => (
93
+ error instanceof Error ? error.message : String(error)
94
+ );
95
+
96
+ const requireStringArgument = (
97
+ args: KnowledgeGraphToolArguments,
98
+ name: keyof KnowledgeGraphToolArguments
99
+ ): string => {
100
+ const value = args[name];
101
+ if (typeof value !== 'string' || value.trim().length === 0) {
102
+ throw new Error(`${String(name)} must be a non-empty string`);
103
+ }
104
+ return value.trim();
105
+ };
106
+
107
+ const requireStringArrayArgument = (
108
+ args: KnowledgeGraphToolArguments,
109
+ name: keyof KnowledgeGraphToolArguments
110
+ ): string[] => {
111
+ const value = args[name];
112
+ if (!Array.isArray(value) || value.length === 0 || value.some(item => (
113
+ typeof item !== 'string' || item.trim().length === 0
114
+ ))) {
115
+ throw new Error(`${String(name)} must be a non-empty array of non-empty strings`);
116
+ }
117
+ return value.map(item => (item as string).trim());
118
+ };
119
+
38
120
  /**
39
121
  * Helper to get Knowledge Graph service
40
122
  */
@@ -72,8 +154,12 @@ export const kg_get_entity = {
72
154
  },
73
155
  required: ['entityId'],
74
156
  },
75
- handler: async (args: any, context: any) => {
157
+ handler: async (
158
+ args: KnowledgeGraphToolArguments,
159
+ context: McpToolHandlerContext
160
+ ): Promise<Record<string, unknown>> => {
76
161
  try {
162
+ const identity = requireKnowledgeGraphIdentity(args, context);
77
163
  if (!isKnowledgeGraphEnabled()) {
78
164
  return {
79
165
  success: false,
@@ -83,13 +169,14 @@ export const kg_get_entity = {
83
169
  }
84
170
 
85
171
  const kgService = getKgService();
86
- const entity = await kgService.getEntity(args.entityId);
172
+ const entityId = requireStringArgument(args, 'entityId');
173
+ const entity = await kgService.getEntity(entityId, identity.channelId);
87
174
 
88
175
  if (!entity) {
89
176
  return {
90
177
  success: false,
91
178
  entity: null,
92
- message: `Entity not found: ${args.entityId}`,
179
+ message: `Entity not found: ${entityId}`,
93
180
  };
94
181
  }
95
182
 
@@ -98,13 +185,13 @@ export const kg_get_entity = {
98
185
  entity,
99
186
  message: `Found entity: ${entity.name} (${entity.type})`,
100
187
  };
101
- } catch (error: any) {
102
- logger.error('Failed to get entity', { error: error.message });
188
+ } catch (error: unknown) {
189
+ logger.error('Failed to get entity', { error: errorMessage(error) });
103
190
  return {
104
191
  success: false,
105
192
  entity: null,
106
193
  message: 'Failed to get entity',
107
- error: error.message,
194
+ error: errorMessage(error),
108
195
  };
109
196
  }
110
197
  },
@@ -142,8 +229,12 @@ export const kg_find_entity = {
142
229
  },
143
230
  required: ['name'],
144
231
  },
145
- handler: async (args: any, context: any) => {
232
+ handler: async (
233
+ args: KnowledgeGraphToolArguments,
234
+ context: McpToolHandlerContext
235
+ ): Promise<Record<string, unknown>> => {
146
236
  try {
237
+ const identity = requireKnowledgeGraphIdentity(args, context);
147
238
  if (!isKnowledgeGraphEnabled()) {
148
239
  return {
149
240
  success: false,
@@ -152,19 +243,11 @@ export const kg_find_entity = {
152
243
  };
153
244
  }
154
245
 
155
- const channelId = args.channelId || context.channelId;
156
- if (!channelId) {
157
- return {
158
- success: false,
159
- entities: [],
160
- message: 'channelId is required but not provided',
161
- };
162
- }
163
-
164
246
  const kgService = getKgService();
247
+ const name = requireStringArgument(args, 'name');
165
248
  const entities = await kgService.findEntityByName(
166
- channelId,
167
- args.name,
249
+ identity.channelId,
250
+ name,
168
251
  args.exact || false
169
252
  );
170
253
 
@@ -176,16 +259,16 @@ export const kg_find_entity = {
176
259
  count: limitedEntities.length,
177
260
  totalFound: entities.length,
178
261
  message: entities.length > 0
179
- ? `Found ${entities.length} entities matching "${args.name}"`
180
- : `No entities found matching "${args.name}"`,
262
+ ? `Found ${entities.length} entities matching "${name}"`
263
+ : `No entities found matching "${name}"`,
181
264
  };
182
- } catch (error: any) {
183
- logger.error('Failed to find entity', { error: error.message });
265
+ } catch (error: unknown) {
266
+ logger.error('Failed to find entity', { error: errorMessage(error) });
184
267
  return {
185
268
  success: false,
186
269
  entities: [],
187
270
  message: 'Failed to find entity',
188
- error: error.message,
271
+ error: errorMessage(error),
189
272
  };
190
273
  }
191
274
  },
@@ -224,8 +307,12 @@ export const kg_get_neighbors = {
224
307
  },
225
308
  required: ['entityId'],
226
309
  },
227
- handler: async (args: any, context: any) => {
310
+ handler: async (
311
+ args: KnowledgeGraphToolArguments,
312
+ context: McpToolHandlerContext
313
+ ): Promise<Record<string, unknown>> => {
228
314
  try {
315
+ const identity = requireKnowledgeGraphIdentity(args, context);
229
316
  if (!isKnowledgeGraphEnabled()) {
230
317
  return {
231
318
  success: false,
@@ -236,11 +323,21 @@ export const kg_get_neighbors = {
236
323
  }
237
324
 
238
325
  const kgService = getKgService();
239
- const result = await kgService.getNeighbors(args.entityId, {
326
+ const entityId = requireStringArgument(args, 'entityId');
327
+ const entity = await kgService.getEntity(entityId, identity.channelId);
328
+ if (!entity) {
329
+ return {
330
+ success: false,
331
+ entities: [],
332
+ relationships: [],
333
+ message: `Entity not found: ${entityId}`,
334
+ };
335
+ }
336
+ const result = await kgService.getNeighbors(entityId, {
240
337
  direction: args.direction || 'both',
241
338
  relationshipType: args.relationshipType as RelationshipType | undefined,
242
339
  limit: args.limit || 20,
243
- });
340
+ }, identity.channelId);
244
341
 
245
342
  return {
246
343
  success: true,
@@ -250,14 +347,14 @@ export const kg_get_neighbors = {
250
347
  relationshipCount: result.relationships.length,
251
348
  message: `Found ${result.entities.length} connected entities`,
252
349
  };
253
- } catch (error: any) {
254
- logger.error('Failed to get neighbors', { error: error.message });
350
+ } catch (error: unknown) {
351
+ logger.error('Failed to get neighbors', { error: errorMessage(error) });
255
352
  return {
256
353
  success: false,
257
354
  entities: [],
258
355
  relationships: [],
259
356
  message: 'Failed to get neighbors',
260
- error: error.message,
357
+ error: errorMessage(error),
261
358
  };
262
359
  }
263
360
  },
@@ -290,8 +387,12 @@ export const kg_find_path = {
290
387
  },
291
388
  required: ['fromEntityId', 'toEntityId'],
292
389
  },
293
- handler: async (args: any, context: any) => {
390
+ handler: async (
391
+ args: KnowledgeGraphToolArguments,
392
+ context: McpToolHandlerContext
393
+ ): Promise<Record<string, unknown>> => {
294
394
  try {
395
+ const identity = requireKnowledgeGraphIdentity(args, context);
295
396
  if (!isKnowledgeGraphEnabled()) {
296
397
  return {
297
398
  success: false,
@@ -301,10 +402,25 @@ export const kg_find_path = {
301
402
  }
302
403
 
303
404
  const kgService = getKgService();
405
+ const fromEntityId = requireStringArgument(args, 'fromEntityId');
406
+ const toEntityId = requireStringArgument(args, 'toEntityId');
407
+ const [fromEntity, toEntity] = await Promise.all([
408
+ kgService.getEntity(fromEntityId, identity.channelId),
409
+ kgService.getEntity(toEntityId, identity.channelId)
410
+ ]);
411
+ if (!fromEntity || !toEntity) {
412
+ return {
413
+ success: false,
414
+ path: null,
415
+ found: false,
416
+ message: 'Both path endpoints must belong to the authenticated channel',
417
+ };
418
+ }
304
419
  const path = await kgService.findPath(
305
- args.fromEntityId,
306
- args.toEntityId,
307
- args.maxHops || 5
420
+ fromEntityId,
421
+ toEntityId,
422
+ args.maxHops || 5,
423
+ identity.channelId
308
424
  );
309
425
 
310
426
  if (!path) {
@@ -316,6 +432,18 @@ export const kg_find_path = {
316
432
  };
317
433
  }
318
434
 
435
+ const pathEntities = await Promise.all(
436
+ path.entityIds.map(entityId => kgService.getEntity(entityId, identity.channelId))
437
+ );
438
+ if (pathEntities.some(entity => !entity)) {
439
+ return {
440
+ success: false,
441
+ path: null,
442
+ found: false,
443
+ message: 'The resolved path is not wholly contained in the authenticated channel',
444
+ };
445
+ }
446
+
319
447
  return {
320
448
  success: true,
321
449
  path,
@@ -323,13 +451,13 @@ export const kg_find_path = {
323
451
  hopCount: path.relationshipIds.length,
324
452
  message: `Found path with ${path.relationshipIds.length} hops`,
325
453
  };
326
- } catch (error: any) {
327
- logger.error('Failed to find path', { error: error.message });
454
+ } catch (error: unknown) {
455
+ logger.error('Failed to find path', { error: errorMessage(error) });
328
456
  return {
329
457
  success: false,
330
458
  path: null,
331
459
  message: 'Failed to find path',
332
- error: error.message,
460
+ error: errorMessage(error),
333
461
  };
334
462
  }
335
463
  },
@@ -360,8 +488,12 @@ export const kg_get_context = {
360
488
  },
361
489
  required: [],
362
490
  },
363
- handler: async (args: any, context: any) => {
491
+ handler: async (
492
+ args: KnowledgeGraphToolArguments,
493
+ context: McpToolHandlerContext
494
+ ): Promise<Record<string, unknown>> => {
364
495
  try {
496
+ const identity = requireKnowledgeGraphIdentity(args, context);
365
497
  if (!isKnowledgeGraphEnabled()) {
366
498
  return {
367
499
  success: false,
@@ -370,18 +502,9 @@ export const kg_get_context = {
370
502
  };
371
503
  }
372
504
 
373
- const channelId = args.channelId || context.channelId;
374
- if (!channelId) {
375
- return {
376
- success: false,
377
- context: null,
378
- message: 'channelId is required but not provided',
379
- };
380
- }
381
-
382
505
  const kgService = getKgService();
383
506
  const graphContext = await kgService.getGraphContext(
384
- channelId,
507
+ identity.channelId,
385
508
  args.taskId,
386
509
  args.keywords
387
510
  );
@@ -392,13 +515,13 @@ export const kg_get_context = {
392
515
  stats: graphContext.stats,
393
516
  message: `Retrieved context with ${graphContext.stats.entityCount} entities and ${graphContext.stats.relationshipCount} relationships`,
394
517
  };
395
- } catch (error: any) {
396
- logger.error('Failed to get context', { error: error.message });
518
+ } catch (error: unknown) {
519
+ logger.error('Failed to get context', { error: errorMessage(error) });
397
520
  return {
398
521
  success: false,
399
522
  context: null,
400
523
  message: 'Failed to get context',
401
- error: error.message,
524
+ error: errorMessage(error),
402
525
  };
403
526
  }
404
527
  },
@@ -427,8 +550,12 @@ export const kg_get_high_utility_entities = {
427
550
  },
428
551
  required: [],
429
552
  },
430
- handler: async (args: any, context: any) => {
553
+ handler: async (
554
+ args: KnowledgeGraphToolArguments,
555
+ context: McpToolHandlerContext
556
+ ): Promise<Record<string, unknown>> => {
431
557
  try {
558
+ const identity = requireKnowledgeGraphIdentity(args, context);
432
559
  if (!isKnowledgeGraphEnabled()) {
433
560
  return {
434
561
  success: false,
@@ -437,18 +564,9 @@ export const kg_get_high_utility_entities = {
437
564
  };
438
565
  }
439
566
 
440
- const channelId = args.channelId || context.channelId;
441
- if (!channelId) {
442
- return {
443
- success: false,
444
- entities: [],
445
- message: 'channelId is required but not provided',
446
- };
447
- }
448
-
449
567
  const kgService = getKgService();
450
568
  const entities = await kgService.getHighUtilityEntities(
451
- channelId,
569
+ identity.channelId,
452
570
  args.limit || 10
453
571
  );
454
572
 
@@ -458,13 +576,13 @@ export const kg_get_high_utility_entities = {
458
576
  count: entities.length,
459
577
  message: `Found ${entities.length} high-utility entities`,
460
578
  };
461
- } catch (error: any) {
462
- logger.error('Failed to get high utility entities', { error: error.message });
579
+ } catch (error: unknown) {
580
+ logger.error('Failed to get high utility entities', { error: errorMessage(error) });
463
581
  return {
464
582
  success: false,
465
583
  entities: [],
466
584
  message: 'Failed to get high utility entities',
467
- error: error.message,
585
+ error: errorMessage(error),
468
586
  };
469
587
  }
470
588
  },
@@ -511,8 +629,12 @@ export const kg_create_entity = {
511
629
  },
512
630
  required: ['name', 'type'],
513
631
  },
514
- handler: async (args: any, context: any) => {
632
+ handler: async (
633
+ args: KnowledgeGraphToolArguments,
634
+ context: McpToolHandlerContext
635
+ ): Promise<Record<string, unknown>> => {
515
636
  try {
637
+ const identity = requireKnowledgeGraphIdentity(args, context);
516
638
  if (!isKnowledgeGraphEnabled()) {
517
639
  return {
518
640
  success: false,
@@ -521,27 +643,20 @@ export const kg_create_entity = {
521
643
  };
522
644
  }
523
645
 
524
- const channelId = args.channelId || context.channelId;
525
- if (!channelId) {
526
- return {
527
- success: false,
528
- entity: null,
529
- message: 'channelId is required but not provided',
530
- };
531
- }
532
-
533
646
  const kgService = getKgService();
647
+ const name = requireStringArgument(args, 'name');
648
+ const type = requireStringArgument(args, 'type') as EntityType;
534
649
  const entity = await kgService.findOrCreateEntity(
535
650
  {
536
- channelId,
537
- name: args.name,
538
- type: args.type as EntityType,
651
+ channelId: identity.channelId,
652
+ name,
653
+ type,
539
654
  aliases: args.aliases,
540
655
  description: args.description,
541
656
  confidence: args.confidence || 0.8,
542
657
  source: 'manual',
543
658
  },
544
- context.agentId
659
+ identity.agentId
545
660
  );
546
661
 
547
662
  return {
@@ -549,13 +664,13 @@ export const kg_create_entity = {
549
664
  entity,
550
665
  message: `Created entity: ${entity.name} (${entity.type})`,
551
666
  };
552
- } catch (error: any) {
553
- logger.error('Failed to create entity', { error: error.message });
667
+ } catch (error: unknown) {
668
+ logger.error('Failed to create entity', { error: errorMessage(error) });
554
669
  return {
555
670
  success: false,
556
671
  entity: null,
557
672
  message: 'Failed to create entity',
558
- error: error.message,
673
+ error: errorMessage(error),
559
674
  };
560
675
  }
561
676
  },
@@ -601,8 +716,12 @@ export const kg_create_relationship = {
601
716
  },
602
717
  required: ['fromEntityId', 'toEntityId', 'type'],
603
718
  },
604
- handler: async (args: any, context: any) => {
719
+ handler: async (
720
+ args: KnowledgeGraphToolArguments,
721
+ context: McpToolHandlerContext
722
+ ): Promise<Record<string, unknown>> => {
605
723
  try {
724
+ const identity = requireKnowledgeGraphIdentity(args, context);
606
725
  if (!isKnowledgeGraphEnabled()) {
607
726
  return {
608
727
  success: false,
@@ -611,41 +730,46 @@ export const kg_create_relationship = {
611
730
  };
612
731
  }
613
732
 
614
- const channelId = args.channelId || context.channelId;
615
- if (!channelId) {
733
+ const kgService = getKgService();
734
+ const fromEntityId = requireStringArgument(args, 'fromEntityId');
735
+ const toEntityId = requireStringArgument(args, 'toEntityId');
736
+ const type = requireStringArgument(args, 'type') as RelationshipType;
737
+ const [fromEntity, toEntity] = await Promise.all([
738
+ kgService.getEntity(fromEntityId, identity.channelId),
739
+ kgService.getEntity(toEntityId, identity.channelId)
740
+ ]);
741
+ if (!fromEntity || !toEntity) {
616
742
  return {
617
743
  success: false,
618
744
  relationship: null,
619
- message: 'channelId is required but not provided',
745
+ message: 'Both relationship endpoints must belong to the authenticated channel',
620
746
  };
621
747
  }
622
-
623
- const kgService = getKgService();
624
748
  const relationship = await kgService.createRelationship(
625
749
  {
626
- channelId,
627
- fromEntityId: args.fromEntityId,
628
- toEntityId: args.toEntityId,
629
- type: args.type as RelationshipType,
750
+ channelId: identity.channelId,
751
+ fromEntityId,
752
+ toEntityId,
753
+ type,
630
754
  label: args.label,
631
755
  confidence: args.confidence || 0.8,
632
756
  source: 'manual',
633
757
  },
634
- context.agentId
758
+ identity.agentId
635
759
  );
636
760
 
637
761
  return {
638
762
  success: true,
639
763
  relationship,
640
- message: `Created relationship: ${args.type}`,
764
+ message: `Created relationship: ${type}`,
641
765
  };
642
- } catch (error: any) {
643
- logger.error('Failed to create relationship', { error: error.message });
766
+ } catch (error: unknown) {
767
+ logger.error('Failed to create relationship', { error: errorMessage(error) });
644
768
  return {
645
769
  success: false,
646
770
  relationship: null,
647
771
  message: 'Failed to create relationship',
648
- error: error.message,
772
+ error: errorMessage(error),
649
773
  };
650
774
  }
651
775
  },
@@ -675,8 +799,12 @@ export const kg_extract_from_text = {
675
799
  },
676
800
  required: ['text'],
677
801
  },
678
- handler: async (args: any, context: any) => {
802
+ handler: async (
803
+ args: KnowledgeGraphToolArguments,
804
+ context: McpToolHandlerContext
805
+ ): Promise<Record<string, unknown>> => {
679
806
  try {
807
+ const identity = requireKnowledgeGraphIdentity(args, context);
680
808
  if (!isKnowledgeGraphEnabled()) {
681
809
  return {
682
810
  success: false,
@@ -685,19 +813,11 @@ export const kg_extract_from_text = {
685
813
  };
686
814
  }
687
815
 
688
- const channelId = args.channelId || context.channelId;
689
- if (!channelId) {
690
- return {
691
- success: false,
692
- result: null,
693
- message: 'channelId is required but not provided',
694
- };
695
- }
696
-
697
816
  const extractionService = getExtractionService();
817
+ const text = requireStringArgument(args, 'text');
698
818
  const result = await extractionService.extractFromText(
699
- channelId,
700
- args.text,
819
+ identity.channelId,
820
+ text,
701
821
  args.sourceId
702
822
  );
703
823
 
@@ -709,13 +829,13 @@ export const kg_extract_from_text = {
709
829
  executionTimeMs: result.executionTimeMs,
710
830
  message: `Extracted ${result.entitiesExtracted} entities and ${result.relationshipsExtracted} relationships`,
711
831
  };
712
- } catch (error: any) {
713
- logger.error('Failed to extract from text', { error: error.message });
832
+ } catch (error: unknown) {
833
+ logger.error('Failed to extract from text', { error: errorMessage(error) });
714
834
  return {
715
835
  success: false,
716
836
  result: null,
717
837
  message: 'Failed to extract from text',
718
- error: error.message,
838
+ error: errorMessage(error),
719
839
  };
720
840
  }
721
841
  },
@@ -745,8 +865,12 @@ export const kg_extract_from_memory = {
745
865
  },
746
866
  required: ['memoryId', 'memoryContent'],
747
867
  },
748
- handler: async (args: any, context: any) => {
868
+ handler: async (
869
+ args: KnowledgeGraphToolArguments,
870
+ context: McpToolHandlerContext
871
+ ): Promise<Record<string, unknown>> => {
749
872
  try {
873
+ const identity = requireKnowledgeGraphIdentity(args, context);
750
874
  if (!isKnowledgeGraphEnabled()) {
751
875
  return {
752
876
  success: false,
@@ -755,20 +879,13 @@ export const kg_extract_from_memory = {
755
879
  };
756
880
  }
757
881
 
758
- const channelId = args.channelId || context.channelId;
759
- if (!channelId) {
760
- return {
761
- success: false,
762
- result: null,
763
- message: 'channelId is required but not provided',
764
- };
765
- }
766
-
767
882
  const extractionService = getExtractionService();
883
+ const memoryId = requireStringArgument(args, 'memoryId');
884
+ const memoryContent = requireStringArgument(args, 'memoryContent');
768
885
  const result = await extractionService.processMemory(
769
- channelId,
770
- args.memoryId,
771
- args.memoryContent
886
+ identity.channelId,
887
+ memoryId,
888
+ memoryContent
772
889
  );
773
890
 
774
891
  return {
@@ -779,13 +896,13 @@ export const kg_extract_from_memory = {
779
896
  executionTimeMs: result.executionTimeMs,
780
897
  message: `Extracted ${result.entitiesExtracted} entities and ${result.relationshipsExtracted} relationships from memory`,
781
898
  };
782
- } catch (error: any) {
783
- logger.error('Failed to extract from memory', { error: error.message });
899
+ } catch (error: unknown) {
900
+ logger.error('Failed to extract from memory', { error: errorMessage(error) });
784
901
  return {
785
902
  success: false,
786
903
  result: null,
787
904
  message: 'Failed to extract from memory',
788
- error: error.message,
905
+ error: errorMessage(error),
789
906
  };
790
907
  }
791
908
  },
@@ -821,8 +938,12 @@ export const kg_get_phase_context = {
821
938
  },
822
939
  required: ['phase'],
823
940
  },
824
- handler: async (args: any, context: any) => {
941
+ handler: async (
942
+ args: KnowledgeGraphToolArguments,
943
+ context: McpToolHandlerContext
944
+ ): Promise<Record<string, unknown>> => {
825
945
  try {
946
+ const identity = requireKnowledgeGraphIdentity(args, context);
826
947
  if (!isKnowledgeGraphEnabled()) {
827
948
  return {
828
949
  success: false,
@@ -831,22 +952,37 @@ export const kg_get_phase_context = {
831
952
  };
832
953
  }
833
954
 
834
- const channelId = args.channelId || context.channelId;
835
- if (!channelId) {
836
- return {
837
- success: false,
838
- phaseContext: null,
839
- message: 'channelId is required but not provided',
840
- };
955
+ if (args.entityIds !== undefined && (
956
+ !Array.isArray(args.entityIds) ||
957
+ args.entityIds.some((entityId: unknown) => (
958
+ typeof entityId !== 'string' || entityId.trim().length === 0
959
+ ))
960
+ )) {
961
+ throw new Error('entityIds must contain only non-empty entity identifiers');
962
+ }
963
+ const entityIds = (args.entityIds || []) as string[];
964
+ if (entityIds.length > 0) {
965
+ const kgService = getKgService();
966
+ const scopedEntities = await Promise.all(
967
+ entityIds.map(entityId => kgService.getEntity(entityId, identity.channelId))
968
+ );
969
+ if (scopedEntities.some(entity => !entity)) {
970
+ return {
971
+ success: false,
972
+ phaseContext: null,
973
+ message: 'Every phase-context entity must belong to the authenticated channel',
974
+ };
975
+ }
841
976
  }
842
977
 
843
978
  const orparIntegration = getOrparIntegration();
979
+ const phase = requireStringArgument(args, 'phase') as KnowledgeGraphToolArguments['phase'];
844
980
  const phaseContext = await orparIntegration.getPhaseContext(
845
- channelId,
846
- context.agentId,
847
- args.phase,
981
+ identity.channelId,
982
+ identity.agentId,
983
+ phase!,
848
984
  args.taskContent,
849
- args.entityIds
985
+ entityIds
850
986
  );
851
987
 
852
988
  return {
@@ -858,13 +994,13 @@ export const kg_get_phase_context = {
858
994
  executionTimeMs: phaseContext.executionTimeMs,
859
995
  message: phaseContext.summary,
860
996
  };
861
- } catch (error: any) {
862
- logger.error('Failed to get phase context', { error: error.message });
997
+ } catch (error: unknown) {
998
+ logger.error('Failed to get phase context', { error: errorMessage(error) });
863
999
  return {
864
1000
  success: false,
865
1001
  phaseContext: null,
866
1002
  message: 'Failed to get phase context',
867
- error: error.message,
1003
+ error: errorMessage(error),
868
1004
  };
869
1005
  }
870
1006
  },
@@ -893,8 +1029,12 @@ export const kg_find_duplicates = {
893
1029
  },
894
1030
  required: [],
895
1031
  },
896
- handler: async (args: any, context: any) => {
1032
+ handler: async (
1033
+ args: KnowledgeGraphToolArguments,
1034
+ context: McpToolHandlerContext
1035
+ ): Promise<Record<string, unknown>> => {
897
1036
  try {
1037
+ const identity = requireKnowledgeGraphIdentity(args, context);
898
1038
  if (!isKnowledgeGraphEnabled()) {
899
1039
  return {
900
1040
  success: false,
@@ -903,18 +1043,9 @@ export const kg_find_duplicates = {
903
1043
  };
904
1044
  }
905
1045
 
906
- const channelId = args.channelId || context.channelId;
907
- if (!channelId) {
908
- return {
909
- success: false,
910
- duplicates: [],
911
- message: 'channelId is required but not provided',
912
- };
913
- }
914
-
915
1046
  const kgService = getKgService();
916
1047
  const duplicates = await kgService.findSimilarEntities(
917
- channelId,
1048
+ identity.channelId,
918
1049
  args.threshold || 0.8
919
1050
  );
920
1051
 
@@ -926,13 +1057,13 @@ export const kg_find_duplicates = {
926
1057
  ? `Found ${duplicates.length} potential duplicate pairs`
927
1058
  : 'No potential duplicates found',
928
1059
  };
929
- } catch (error: any) {
930
- logger.error('Failed to find duplicates', { error: error.message });
1060
+ } catch (error: unknown) {
1061
+ logger.error('Failed to find duplicates', { error: errorMessage(error) });
931
1062
  return {
932
1063
  success: false,
933
1064
  duplicates: [],
934
1065
  message: 'Failed to find duplicates',
935
- error: error.message,
1066
+ error: errorMessage(error),
936
1067
  };
937
1068
  }
938
1069
  },
@@ -959,8 +1090,12 @@ export const kg_merge_entities = {
959
1090
  },
960
1091
  required: ['targetEntityId', 'sourceEntityIds'],
961
1092
  },
962
- handler: async (args: any, context: any) => {
1093
+ handler: async (
1094
+ args: KnowledgeGraphToolArguments,
1095
+ context: McpToolHandlerContext
1096
+ ): Promise<Record<string, unknown>> => {
963
1097
  try {
1098
+ const identity = requireKnowledgeGraphIdentity(args, context);
964
1099
  if (!isKnowledgeGraphEnabled()) {
965
1100
  return {
966
1101
  success: false,
@@ -970,26 +1105,40 @@ export const kg_merge_entities = {
970
1105
  }
971
1106
 
972
1107
  const kgService = getKgService();
1108
+ const targetEntityId = requireStringArgument(args, 'targetEntityId');
1109
+ const sourceEntityIds = requireStringArrayArgument(args, 'sourceEntityIds');
1110
+ const entityIds = [targetEntityId, ...sourceEntityIds];
1111
+ const scopedEntities = await Promise.all(
1112
+ entityIds.map((entityId: string) => kgService.getEntity(entityId, identity.channelId))
1113
+ );
1114
+ if (scopedEntities.some(entity => !entity)) {
1115
+ return {
1116
+ success: false,
1117
+ result: null,
1118
+ message: 'Every merged entity must belong to the authenticated channel',
1119
+ };
1120
+ }
973
1121
  const result = await kgService.mergeEntities(
974
- args.targetEntityId,
975
- args.sourceEntityIds,
976
- context.agentId
1122
+ targetEntityId,
1123
+ sourceEntityIds,
1124
+ identity.agentId,
1125
+ identity.channelId
977
1126
  );
978
1127
 
979
1128
  return {
980
1129
  success: result.success,
981
1130
  result,
982
1131
  message: result.success
983
- ? `Successfully merged ${args.sourceEntityIds.length} entities into target`
1132
+ ? `Successfully merged ${sourceEntityIds.length} entities into target`
984
1133
  : result.error || 'Merge failed',
985
1134
  };
986
- } catch (error: any) {
987
- logger.error('Failed to merge entities', { error: error.message });
1135
+ } catch (error: unknown) {
1136
+ logger.error('Failed to merge entities', { error: errorMessage(error) });
988
1137
  return {
989
1138
  success: false,
990
1139
  result: null,
991
1140
  message: 'Failed to merge entities',
992
- error: error.message,
1141
+ error: errorMessage(error),
993
1142
  };
994
1143
  }
995
1144
  },