@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
@@ -25,6 +25,10 @@
25
25
 
26
26
  import { BrowserManager, BrowserConfig } from './BrowserManager.js';
27
27
  import { ContentProcessor, OptimizationOptions } from './ContentProcessor.js';
28
+ import {
29
+ installBrowserTargetGuard,
30
+ requireAllowedBrowserTarget
31
+ } from '../protocols/mcp/security/BrowserTargetGuard.js';
28
32
  // Type-only: erased at compile time, so puppeteer stays an optional peer dependency.
29
33
  import type { Page } from 'puppeteer';
30
34
 
@@ -90,6 +94,7 @@ export class WebSearchService {
90
94
  try {
91
95
  // Set user agent
92
96
  await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36');
97
+ await installBrowserTargetGuard(page);
93
98
 
94
99
  // Perform search based on engine
95
100
  let results: SearchResult[] = [];
@@ -131,6 +136,7 @@ export class WebSearchService {
131
136
 
132
137
  async navigate(args: WebNavigationArgs): Promise<any> {
133
138
  try {
139
+ await requireAllowedBrowserTarget(args.url);
134
140
  const browserInstance = await this.browserManager.getBrowser();
135
141
  const browser = browserInstance.browser;
136
142
  const page = await browser.newPage();
@@ -138,6 +144,7 @@ export class WebSearchService {
138
144
  try {
139
145
  // Set viewport if needed
140
146
  await page.setViewport({ width: 1280, height: 720 });
147
+ await installBrowserTargetGuard(page);
141
148
 
142
149
  // Navigate to URL
143
150
  const response = await page.goto(args.url, {
@@ -223,6 +230,7 @@ export class WebSearchService {
223
230
 
224
231
  async screenshot(args: WebScreenshotArgs): Promise<Buffer> {
225
232
  try {
233
+ await requireAllowedBrowserTarget(args.url);
226
234
  const browserInstance = await this.browserManager.getBrowser();
227
235
  const browser = browserInstance.browser;
228
236
  const page = await browser.newPage();
@@ -233,6 +241,7 @@ export class WebSearchService {
233
241
  width: args.width || 1280,
234
242
  height: args.height || 720
235
243
  });
244
+ await installBrowserTargetGuard(page);
236
245
 
237
246
  // Navigate to URL
238
247
  await page.goto(args.url, {
@@ -261,7 +270,8 @@ export class WebSearchService {
261
270
 
262
271
  private async searchGoogle(page: Page, query: string, maxResults: number): Promise<SearchResult[]> {
263
272
  const searchUrl = `https://www.google.com/search?q=${encodeURIComponent(query)}&num=${maxResults}`;
264
-
273
+
274
+ await requireAllowedBrowserTarget(searchUrl);
265
275
  await page.goto(searchUrl, { waitUntil: 'networkidle2' });
266
276
 
267
277
  // Extract search results
@@ -291,7 +301,8 @@ export class WebSearchService {
291
301
 
292
302
  private async searchBing(page: Page, query: string, maxResults: number): Promise<SearchResult[]> {
293
303
  const searchUrl = `https://www.bing.com/search?q=${encodeURIComponent(query)}&count=${maxResults}`;
294
-
304
+
305
+ await requireAllowedBrowserTarget(searchUrl);
295
306
  await page.goto(searchUrl, { waitUntil: 'networkidle2' });
296
307
 
297
308
  // Extract search results
@@ -320,7 +331,8 @@ export class WebSearchService {
320
331
 
321
332
  private async searchDuckDuckGo(page: Page, query: string, maxResults: number): Promise<SearchResult[]> {
322
333
  const searchUrl = `https://duckduckgo.com/?q=${encodeURIComponent(query)}`;
323
-
334
+
335
+ await requireAllowedBrowserTarget(searchUrl);
324
336
  await page.goto(searchUrl, { waitUntil: 'networkidle2' });
325
337
 
326
338
  // Extract search results
@@ -380,4 +392,4 @@ export class WebSearchService {
380
392
  async cleanup(): Promise<void> {
381
393
  await this.browserManager.cleanup();
382
394
  }
383
- }
395
+ }
@@ -107,7 +107,7 @@ interface DagCacheEntry {
107
107
  * TaskDagService manages Task DAGs for all channels
108
108
  */
109
109
  export class TaskDagService {
110
- private static instance: TaskDagService;
110
+ private static instance: TaskDagService | undefined;
111
111
  private logger: Logger;
112
112
  private enabled: boolean = false;
113
113
 
@@ -119,6 +119,7 @@ export class TaskDagService {
119
119
 
120
120
  // Cache cleanup interval
121
121
  private cleanupInterval: NodeJS.Timeout | null = null;
122
+ private shutdownComplete = false;
122
123
 
123
124
  private constructor() {
124
125
  this.logger = new Logger('info', 'TaskDagService', 'server');
@@ -135,6 +136,16 @@ export class TaskDagService {
135
136
  return TaskDagService.instance;
136
137
  }
137
138
 
139
+ /** Stop the live singleton without constructing one solely for teardown. */
140
+ public static shutdownExisting(): boolean {
141
+ const instance = TaskDagService.instance;
142
+ if (!instance) {
143
+ return false;
144
+ }
145
+ instance.shutdown();
146
+ return true;
147
+ }
148
+
138
149
  /**
139
150
  * Initialize the service
140
151
  */
@@ -1048,12 +1059,20 @@ export class TaskDagService {
1048
1059
  * Shutdown the service
1049
1060
  */
1050
1061
  public shutdown(): void {
1062
+ if (this.shutdownComplete) {
1063
+ return;
1064
+ }
1065
+ this.shutdownComplete = true;
1051
1066
  if (this.cleanupInterval) {
1052
1067
  clearInterval(this.cleanupInterval);
1053
1068
  this.cleanupInterval = null;
1054
1069
  }
1055
1070
  this.channelLocks.clear();
1056
1071
  this.clearAllCaches();
1072
+ this.enabled = false;
1073
+ if (TaskDagService.instance === this) {
1074
+ TaskDagService.instance = undefined;
1075
+ }
1057
1076
  this.logger.info('TaskDagService shutdown complete');
1058
1077
  }
1059
1078
  }
@@ -50,6 +50,8 @@ import { createBaseEventPayload } from '../../schemas/EventPayloadSchema.js';
50
50
  */
51
51
  export interface EntityRewardSignal {
52
52
  entityId: string;
53
+ /** Channel the entity belongs to; the update is bound to it. */
54
+ channelId: ChannelId;
53
55
  reward: number; // -1 to 1
54
56
  reason: string;
55
57
  taskId?: string;
@@ -122,7 +124,7 @@ export class EntityQValueManager {
122
124
  return null;
123
125
  }
124
126
 
125
- const entity = await this.repository.getEntity(signal.entityId);
127
+ const entity = await this.repository.getEntity(signal.entityId, signal.channelId);
126
128
  if (!entity) {
127
129
  this.logger.warn(`Entity not found for Q-value update: ${signal.entityId}`);
128
130
  return null;
@@ -141,7 +143,12 @@ export class EntityQValueManager {
141
143
  const clampedQValue = Math.max(0, Math.min(1, newQValue));
142
144
 
143
145
  // Update in database
144
- await this.repository.updateEntityQValue(signal.entityId, clampedQValue, signal.reason);
146
+ await this.repository.updateEntityQValue(
147
+ signal.entityId,
148
+ signal.channelId,
149
+ clampedQValue,
150
+ signal.reason
151
+ );
145
152
 
146
153
  const result: QValueUpdateResult = {
147
154
  entityId: signal.entityId,
@@ -184,7 +191,7 @@ export class EntityQValueManager {
184
191
  const updates: Array<{ entityId: string; qValue: number; reason: string }> = [];
185
192
 
186
193
  for (const entityId of entityIds) {
187
- const entity = await this.repository.getEntity(entityId);
194
+ const entity = await this.repository.getEntity(entityId, channelId);
188
195
  if (!entity) continue;
189
196
 
190
197
  const alpha = getQValueLearningRate();
@@ -208,10 +215,10 @@ export class EntityQValueManager {
208
215
 
209
216
  // Batch update
210
217
  if (updates.length > 0) {
211
- await this.repository.batchUpdateQValues(updates);
218
+ await this.repository.batchUpdateQValues(channelId, updates);
212
219
 
213
220
  // Record outcomes for statistics
214
- await this.repository.recordOutcome(entityIds, taskOutcome.success);
221
+ await this.repository.recordOutcome(channelId, entityIds, taskOutcome.success);
215
222
 
216
223
  // Emit batch event
217
224
  this.emitBatchQValueUpdatedEvent(channelId, results, taskOutcome.taskId);
@@ -251,7 +258,7 @@ export class EntityQValueManager {
251
258
  }
252
259
 
253
260
  if (updates.length > 0) {
254
- await this.repository.batchUpdateQValues(updates);
261
+ await this.repository.batchUpdateQValues(channelId, updates);
255
262
  this.logger.info(`Decayed Q-values for ${updates.length} unused entities in channel ${channelId}`);
256
263
  }
257
264
 
@@ -262,19 +269,23 @@ export class EntityQValueManager {
262
269
  * Boost Q-value for retrieved entities
263
270
  * Called when entities are used in context retrieval
264
271
  */
265
- public async boostRetrievedEntities(entityIds: string[], boostAmount: number = 0.05): Promise<void> {
272
+ public async boostRetrievedEntities(
273
+ channelId: ChannelId,
274
+ entityIds: string[],
275
+ boostAmount: number = 0.05
276
+ ): Promise<void> {
266
277
  if (!this.enabled || entityIds.length === 0) {
267
278
  return;
268
279
  }
269
280
 
270
281
  // Increment retrieval counts
271
- await this.repository.incrementRetrievalCount(entityIds);
282
+ await this.repository.incrementRetrievalCount(channelId, entityIds);
272
283
 
273
284
  // Small Q-value boost for being retrieved
274
285
  const updates: Array<{ entityId: string; qValue: number; reason: string }> = [];
275
286
 
276
287
  for (const entityId of entityIds) {
277
- const entity = await this.repository.getEntity(entityId);
288
+ const entity = await this.repository.getEntity(entityId, channelId);
278
289
  if (entity) {
279
290
  const newQValue = Math.min(1, entity.utility.qValue + boostAmount);
280
291
  if (newQValue !== entity.utility.qValue) {
@@ -288,7 +299,7 @@ export class EntityQValueManager {
288
299
  }
289
300
 
290
301
  if (updates.length > 0) {
291
- await this.repository.batchUpdateQValues(updates);
302
+ await this.repository.batchUpdateQValues(channelId, updates);
292
303
  }
293
304
  }
294
305
 
@@ -309,20 +309,6 @@ export class GraphSurpriseCalculator {
309
309
  return analyses.sort((a, b) => b.surpriseScore - a.surpriseScore);
310
310
  }
311
311
 
312
- /**
313
- * Update surprise score for a relationship after analysis
314
- */
315
- public async updateRelationshipSurprise(
316
- relationshipId: string,
317
- surpriseScore: number
318
- ): Promise<void> {
319
- if (!this.enabled) {
320
- return;
321
- }
322
-
323
- await this.repository.updateRelationship(relationshipId, { surpriseScore });
324
- }
325
-
326
312
  /**
327
313
  * Emit high surprise relationship event
328
314
  */
@@ -176,12 +176,12 @@ export class KnowledgeGraphService {
176
176
  /**
177
177
  * Get entity by ID
178
178
  */
179
- public async getEntity(entityId: string): Promise<Entity | null> {
179
+ public async getEntity(entityId: string, channelId?: ChannelId): Promise<Entity | null> {
180
180
  if (!this.enabled) {
181
181
  return null;
182
182
  }
183
183
 
184
- return this.repository.getEntity(entityId);
184
+ return this.repository.getEntity(entityId, channelId);
185
185
  }
186
186
 
187
187
  /**
@@ -219,6 +219,7 @@ export class KnowledgeGraphService {
219
219
  */
220
220
  public async updateEntity(
221
221
  entityId: string,
222
+ channelId: ChannelId,
222
223
  updates: Partial<Entity>,
223
224
  updatedBy?: AgentId
224
225
  ): Promise<Entity | null> {
@@ -226,12 +227,12 @@ export class KnowledgeGraphService {
226
227
  return null;
227
228
  }
228
229
 
229
- const original = await this.repository.getEntity(entityId);
230
+ const original = await this.repository.getEntity(entityId, channelId);
230
231
  if (!original) {
231
232
  return null;
232
233
  }
233
234
 
234
- const updated = await this.repository.updateEntity(entityId, updates);
235
+ const updated = await this.repository.updateEntity(entityId, channelId, updates);
235
236
 
236
237
  if (updated) {
237
238
  // Build changes object
@@ -261,6 +262,7 @@ export class KnowledgeGraphService {
261
262
  */
262
263
  public async deleteEntity(
263
264
  entityId: string,
265
+ channelId: ChannelId,
264
266
  deletedBy?: AgentId,
265
267
  reason?: string
266
268
  ): Promise<boolean> {
@@ -268,12 +270,12 @@ export class KnowledgeGraphService {
268
270
  return false;
269
271
  }
270
272
 
271
- const entity = await this.repository.getEntity(entityId);
273
+ const entity = await this.repository.getEntity(entityId, channelId);
272
274
  if (!entity) {
273
275
  return false;
274
276
  }
275
277
 
276
- const deleted = await this.repository.deleteEntity(entityId);
278
+ const deleted = await this.repository.deleteEntity(entityId, channelId);
277
279
 
278
280
  if (deleted) {
279
281
  this.emitEvent(KnowledgeGraphEvents.ENTITY_DELETED, entity.channelId, deletedBy || 'system', {
@@ -293,13 +295,18 @@ export class KnowledgeGraphService {
293
295
  public async mergeEntities(
294
296
  targetEntityId: string,
295
297
  sourceEntityIds: string[],
296
- mergedBy?: AgentId
298
+ mergedBy?: AgentId,
299
+ channelId?: ChannelId
297
300
  ): Promise<EntityMergeResult> {
298
301
  if (!this.enabled) {
299
302
  return { success: false, sourceEntityIds, error: 'Knowledge Graph not enabled' };
300
303
  }
301
304
 
302
- const result = await this.repository.mergeEntities(targetEntityId, sourceEntityIds);
305
+ const result = await this.repository.mergeEntities(
306
+ targetEntityId,
307
+ sourceEntityIds,
308
+ channelId
309
+ );
303
310
 
304
311
  if (result.success && result.mergedEntity) {
305
312
  this.emitEvent(
@@ -399,6 +406,7 @@ export class KnowledgeGraphService {
399
406
  */
400
407
  public async updateRelationship(
401
408
  relationshipId: string,
409
+ channelId: ChannelId,
402
410
  updates: Partial<Relationship>,
403
411
  updatedBy?: AgentId
404
412
  ): Promise<Relationship | null> {
@@ -407,11 +415,11 @@ export class KnowledgeGraphService {
407
415
  }
408
416
 
409
417
  const original = await this.repository.getRelationship(relationshipId);
410
- if (!original) {
418
+ if (!original || original.channelId !== channelId) {
411
419
  return null;
412
420
  }
413
421
 
414
- const updated = await this.repository.updateRelationship(relationshipId, updates);
422
+ const updated = await this.repository.updateRelationship(relationshipId, channelId, updates);
415
423
 
416
424
  if (updated) {
417
425
  const changes: Record<string, { old: any; new: any }> = {};
@@ -445,6 +453,7 @@ export class KnowledgeGraphService {
445
453
  */
446
454
  public async deleteRelationship(
447
455
  relationshipId: string,
456
+ channelId: ChannelId,
448
457
  deletedBy?: AgentId,
449
458
  reason?: string
450
459
  ): Promise<boolean> {
@@ -453,11 +462,11 @@ export class KnowledgeGraphService {
453
462
  }
454
463
 
455
464
  const relationship = await this.repository.getRelationship(relationshipId);
456
- if (!relationship) {
465
+ if (!relationship || relationship.channelId !== channelId) {
457
466
  return false;
458
467
  }
459
468
 
460
- const deleted = await this.repository.deleteRelationship(relationshipId);
469
+ const deleted = await this.repository.deleteRelationship(relationshipId, channelId);
461
470
 
462
471
  if (deleted) {
463
472
  this.emitEvent(
@@ -518,13 +527,14 @@ export class KnowledgeGraphService {
518
527
  entityType?: EntityType | EntityType[];
519
528
  maxDepth?: number;
520
529
  limit?: number;
521
- }
530
+ },
531
+ channelId?: ChannelId
522
532
  ): Promise<{ entities: Entity[]; relationships: Relationship[] }> {
523
533
  if (!this.enabled) {
524
534
  return { entities: [], relationships: [] };
525
535
  }
526
536
 
527
- return this.repository.getNeighbors(entityId, options);
537
+ return this.repository.getNeighbors(entityId, options, channelId);
528
538
  }
529
539
 
530
540
  /**
@@ -533,13 +543,14 @@ export class KnowledgeGraphService {
533
543
  public async findPath(
534
544
  fromEntityId: string,
535
545
  toEntityId: string,
536
- maxHops?: number
546
+ maxHops?: number,
547
+ channelId?: ChannelId
537
548
  ): Promise<GraphPath | null> {
538
549
  if (!this.enabled) {
539
550
  return null;
540
551
  }
541
552
 
542
- return this.repository.findPath(fromEntityId, toEntityId, maxHops);
553
+ return this.repository.findPath(fromEntityId, toEntityId, maxHops, channelId);
543
554
  }
544
555
 
545
556
  /**
@@ -547,13 +558,14 @@ export class KnowledgeGraphService {
547
558
  */
548
559
  public async getEntityContext(
549
560
  entityId: string,
550
- depth?: number
561
+ depth?: number,
562
+ channelId?: ChannelId
551
563
  ): Promise<{ entities: Entity[]; relationships: Relationship[] }> {
552
564
  if (!this.enabled) {
553
565
  return { entities: [], relationships: [] };
554
566
  }
555
567
 
556
- return this.repository.getSubgraph(entityId, depth);
568
+ return this.repository.getSubgraph(entityId, depth, undefined, channelId);
557
569
  }
558
570
 
559
571
  /**
@@ -599,6 +611,7 @@ export class KnowledgeGraphService {
599
611
  * Uses batch queries to avoid N+1 database calls.
600
612
  */
601
613
  public async findConnections(
614
+ channelId: ChannelId,
602
615
  entityIds: string[],
603
616
  maxHops?: number
604
617
  ): Promise<{ entities: Entity[]; relationships: Relationship[]; paths: GraphPath[] }> {
@@ -616,7 +629,8 @@ export class KnowledgeGraphService {
616
629
  entityIds[i],
617
630
  entityIds[j],
618
631
  maxHops ?? 3,
619
- 5
632
+ 5,
633
+ channelId
620
634
  );
621
635
  allPaths.push(...paths);
622
636
 
@@ -630,10 +644,10 @@ export class KnowledgeGraphService {
630
644
  }
631
645
 
632
646
  // Batch fetch all entities in one query instead of N individual calls
633
- const entities = await this.repository.getEntitiesByIds(Array.from(entitySet));
647
+ const entities = await this.repository.getEntitiesByIds(channelId, Array.from(entitySet));
634
648
 
635
649
  // Batch fetch all relationships involving these entities in one query
636
- const allRels = await this.repository.getRelationshipsByEntityIds(Array.from(entitySet));
650
+ const allRels = await this.repository.getRelationshipsByEntityIds(channelId, Array.from(entitySet));
637
651
 
638
652
  // Filter to only relationships where both endpoints are in our entity set
639
653
  const seenRelIds = new Set<string>();
@@ -665,6 +679,7 @@ export class KnowledgeGraphService {
665
679
  */
666
680
  public async updateEntityQValue(
667
681
  entityId: string,
682
+ channelId: ChannelId,
668
683
  reward: number,
669
684
  reason: string
670
685
  ): Promise<Entity | null> {
@@ -672,7 +687,7 @@ export class KnowledgeGraphService {
672
687
  return null;
673
688
  }
674
689
 
675
- const entity = await this.repository.getEntity(entityId);
690
+ const entity = await this.repository.getEntity(entityId, channelId);
676
691
  if (!entity) {
677
692
  return null;
678
693
  }
@@ -682,7 +697,7 @@ export class KnowledgeGraphService {
682
697
  const oldQValue = entity.utility.qValue;
683
698
  const newQValue = oldQValue + alpha * (reward - oldQValue);
684
699
 
685
- const updated = await this.repository.updateEntityQValue(entityId, newQValue, reason);
700
+ const updated = await this.repository.updateEntityQValue(entityId, channelId, newQValue, reason);
686
701
 
687
702
  if (updated) {
688
703
  this.emitEvent(
@@ -706,6 +721,7 @@ export class KnowledgeGraphService {
706
721
  * Propagate reward to entities involved in a task
707
722
  */
708
723
  public async propagateReward(
724
+ channelId: ChannelId,
709
725
  entityIds: string[],
710
726
  reward: number,
711
727
  taskId?: string
@@ -716,13 +732,10 @@ export class KnowledgeGraphService {
716
732
 
717
733
  const updates: Array<{ entityId: string; qValue: number; reason: string }> = [];
718
734
  const alpha = getQValueLearningRate();
719
- let channelId: ChannelId | null = null;
720
735
 
721
736
  for (const entityId of entityIds) {
722
- const entity = await this.repository.getEntity(entityId);
737
+ const entity = await this.repository.getEntity(entityId, channelId);
723
738
  if (entity) {
724
- if (!channelId) channelId = entity.channelId;
725
-
726
739
  const newQValue = entity.utility.qValue + alpha * (reward - entity.utility.qValue);
727
740
  updates.push({
728
741
  entityId,
@@ -733,32 +746,27 @@ export class KnowledgeGraphService {
733
746
  }
734
747
 
735
748
  if (updates.length > 0) {
736
- await this.repository.batchUpdateQValues(updates);
749
+ await this.repository.batchUpdateQValues(channelId, updates);
737
750
 
738
751
  // Record outcome
739
- await this.repository.recordOutcome(entityIds, reward > 0.5);
752
+ await this.repository.recordOutcome(channelId, entityIds, reward > 0.5);
740
753
 
741
754
  // Emit batch update event
742
- if (channelId) {
743
- this.emitEvent(
744
- KnowledgeGraphEvents.ENTITY_QVALUE_BATCH_UPDATED,
755
+ this.emitEvent(
756
+ KnowledgeGraphEvents.ENTITY_QVALUE_BATCH_UPDATED,
757
+ channelId,
758
+ 'system',
759
+ {
745
760
  channelId,
746
- 'system',
747
- {
748
- channelId,
749
- updates: updates.map((u) => {
750
- const entity = entityIds.find((id) => id === u.entityId);
751
- return {
752
- entityId: u.entityId,
753
- oldQValue: 0, // We don't track old values in batch
754
- newQValue: u.qValue,
755
- };
756
- }),
757
- reason: taskId ? `Task ${taskId} outcome` : 'Reward propagation',
758
- taskId,
759
- }
760
- );
761
- }
761
+ updates: updates.map((u) => ({
762
+ entityId: u.entityId,
763
+ oldQValue: 0, // We don't track old values in batch
764
+ newQValue: u.qValue,
765
+ })),
766
+ reason: taskId ? `Task ${taskId} outcome` : 'Reward propagation',
767
+ taskId,
768
+ }
769
+ );
762
770
  }
763
771
  }
764
772
 
@@ -236,7 +236,11 @@ export class OrparGraphIntegration {
236
236
  // Get relationships between matching entities
237
237
  const relationships: Relationship[] = [];
238
238
  for (const entity of matchingEntities) {
239
- const neighbors = await this.kgService.getNeighbors(entity.id, { limit: 5 });
239
+ const neighbors = await this.kgService.getNeighbors(
240
+ entity.id,
241
+ { limit: 5 },
242
+ channelId
243
+ );
240
244
  for (const rel of neighbors.relationships) {
241
245
  if (!relationships.find((r) => r.id === rel.id)) {
242
246
  relationships.push(rel);
@@ -300,7 +304,7 @@ export class OrparGraphIntegration {
300
304
  }
301
305
 
302
306
  for (const entityId of centralEntityIds) {
303
- const subgraph = await this.kgService.getEntityContext(entityId, 2);
307
+ const subgraph = await this.kgService.getEntityContext(entityId, 2, channelId);
304
308
  for (const entity of subgraph.entities) {
305
309
  if (!allEntities.find((e) => e.id === entity.id)) {
306
310
  allEntities.push(entity);
@@ -320,7 +324,8 @@ export class OrparGraphIntegration {
320
324
  const path = await this.kgService.findPath(
321
325
  centralEntityIds[i],
322
326
  centralEntityIds[i + 1],
323
- 3
327
+ 3,
328
+ channelId
324
329
  );
325
330
  if (path) {
326
331
  const fromEntity = allEntities.find((e) => e.id === centralEntityIds[i]);
@@ -400,7 +405,7 @@ export class OrparGraphIntegration {
400
405
 
401
406
  // Get entities and their dependencies
402
407
  for (const entityId of taskEntityIds) {
403
- const entity = await this.kgService.getEntity(entityId);
408
+ const entity = await this.kgService.getEntity(entityId, channelId);
404
409
  if (entity) {
405
410
  entities.push(entity);
406
411
 
@@ -408,7 +413,7 @@ export class OrparGraphIntegration {
408
413
  const neighbors = await this.kgService.getNeighbors(entityId, {
409
414
  direction: 'both',
410
415
  limit: 20,
411
- });
416
+ }, channelId);
412
417
 
413
418
  for (const rel of neighbors.relationships) {
414
419
  if (!relationships.find((r) => r.id === rel.id)) {
@@ -544,6 +549,7 @@ export class OrparGraphIntegration {
544
549
  for (const qUpdate of update.qValueUpdates) {
545
550
  const result = await this.qValueManager.updateEntityQValue({
546
551
  entityId: qUpdate.entityId,
552
+ channelId,
547
553
  reward: qUpdate.reward,
548
554
  reason: qUpdate.reason,
549
555
  });
@@ -37,6 +37,7 @@
37
37
  */
38
38
 
39
39
  import { createBaseEventPayload } from '../../schemas/EventPayloadSchema.js';
40
+ import type { Subscription } from 'rxjs';
40
41
  import { Logger } from '../../utils/Logger.js';
41
42
  import { EventBus } from '../../events/EventBus.js';
42
43
  import { Events, ControlLoopEvents } from '../../events/EventNames.js';
@@ -88,6 +89,7 @@ export class CycleConsolidationTrigger {
88
89
  private qValueManager: QValueManager;
89
90
  private enabled: boolean = false;
90
91
  private rules: ConsolidationRule[];
92
+ private cycleCompletedSubscription?: Subscription;
91
93
 
92
94
  // Track success/failure counts per memory
93
95
  private memorySuccessCounts: Map<string, number> = new Map();
@@ -132,8 +134,13 @@ export class CycleConsolidationTrigger {
132
134
  * Setup event listeners for ORPAR cycle completion
133
135
  */
134
136
  private setupEventListeners(): void {
137
+ if (this.cycleCompletedSubscription && !this.cycleCompletedSubscription.closed) {
138
+ return;
139
+ }
140
+ this.cycleCompletedSubscription = undefined;
141
+
135
142
  // Listen to cycle completed events
136
- EventBus.server.on(OrparMemoryEvents.CYCLE_COMPLETED, async (payload: any) => {
143
+ this.cycleCompletedSubscription = EventBus.server.on(OrparMemoryEvents.CYCLE_COMPLETED, async payload => {
137
144
  if (this.enabled) {
138
145
  await this.onCycleCompleted(payload);
139
146
  }
@@ -686,6 +693,8 @@ export class CycleConsolidationTrigger {
686
693
  */
687
694
  public reset(): void {
688
695
  this.enabled = false;
696
+ this.cycleCompletedSubscription?.unsubscribe();
697
+ this.cycleCompletedSubscription = undefined;
689
698
  this.rules = DEFAULT_CONSOLIDATION_RULES;
690
699
  this.memorySuccessCounts.clear();
691
700
  this.memoryFailureCounts.clear();