@mxf-dev/core 2.0.5 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/dist/config/ModelContextLimits.d.ts.map +1 -1
  2. package/dist/config/ModelContextLimits.js +7 -1
  3. package/dist/config/ModelContextLimits.js.map +1 -1
  4. package/dist/constants/CoreTools.d.ts +6 -5
  5. package/dist/constants/CoreTools.d.ts.map +1 -1
  6. package/dist/constants/CoreTools.js +6 -5
  7. package/dist/constants/CoreTools.js.map +1 -1
  8. package/dist/constants/DefaultPhaseProfiles.d.ts.map +1 -1
  9. package/dist/constants/DefaultPhaseProfiles.js +29 -0
  10. package/dist/constants/DefaultPhaseProfiles.js.map +1 -1
  11. package/dist/constants/ReservedIdentities.d.ts +14 -0
  12. package/dist/constants/ReservedIdentities.d.ts.map +1 -0
  13. package/dist/constants/ReservedIdentities.js +42 -0
  14. package/dist/constants/ReservedIdentities.js.map +1 -0
  15. package/dist/database/adapters/mongodb/MongoKnowledgeGraphRepository.d.ts +16 -16
  16. package/dist/database/adapters/mongodb/MongoKnowledgeGraphRepository.d.ts.map +1 -1
  17. package/dist/database/adapters/mongodb/MongoKnowledgeGraphRepository.js +98 -36
  18. package/dist/database/adapters/mongodb/MongoKnowledgeGraphRepository.js.map +1 -1
  19. package/dist/events/ClientEventBus.d.ts +28 -0
  20. package/dist/events/ClientEventBus.d.ts.map +1 -1
  21. package/dist/events/ClientEventBus.js +87 -40
  22. package/dist/events/ClientEventBus.js.map +1 -1
  23. package/dist/events/EventBus.d.ts +19 -1
  24. package/dist/events/EventBus.d.ts.map +1 -1
  25. package/dist/events/EventBus.js +23 -0
  26. package/dist/events/EventBus.js.map +1 -1
  27. package/dist/events/EventBusBase.d.ts +37 -6
  28. package/dist/events/EventBusBase.d.ts.map +1 -1
  29. package/dist/events/EventBusBase.js +75 -27
  30. package/dist/events/EventBusBase.js.map +1 -1
  31. package/dist/events/EventNames.d.ts +49 -36
  32. package/dist/events/EventNames.d.ts.map +1 -1
  33. package/dist/events/EventNames.js +38 -36
  34. package/dist/events/EventNames.js.map +1 -1
  35. package/dist/events/PublicEvents.d.ts +5 -1
  36. package/dist/events/PublicEvents.d.ts.map +1 -1
  37. package/dist/events/PublicEvents.js +7 -0
  38. package/dist/events/PublicEvents.js.map +1 -1
  39. package/dist/events/ServerEventBus.d.ts +7 -54
  40. package/dist/events/ServerEventBus.d.ts.map +1 -1
  41. package/dist/events/ServerEventBus.js +10 -96
  42. package/dist/events/ServerEventBus.js.map +1 -1
  43. package/dist/events/event-definitions/ControlLoopEvents.d.ts +35 -0
  44. package/dist/events/event-definitions/ControlLoopEvents.d.ts.map +1 -1
  45. package/dist/events/event-definitions/ControlLoopEvents.js +6 -0
  46. package/dist/events/event-definitions/ControlLoopEvents.js.map +1 -1
  47. package/dist/events/event-definitions/SdkEvents.d.ts +55 -0
  48. package/dist/events/event-definitions/SdkEvents.d.ts.map +1 -0
  49. package/dist/events/event-definitions/SdkEvents.js +36 -0
  50. package/dist/events/event-definitions/SdkEvents.js.map +1 -0
  51. package/dist/events/event-definitions/TaskEvents.d.ts +2 -7
  52. package/dist/events/event-definitions/TaskEvents.d.ts.map +1 -1
  53. package/dist/index.d.ts +4 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +2 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/interfaces/AgentInterfaces.d.ts +5 -0
  58. package/dist/interfaces/AgentInterfaces.d.ts.map +1 -1
  59. package/dist/interfaces/ChannelConfig.d.ts +2 -2
  60. package/dist/interfaces/ChannelConfig.d.ts.map +1 -1
  61. package/dist/interfaces/ConversationMessage.d.ts +1 -1
  62. package/dist/interfaces/ConversationMessage.d.ts.map +1 -1
  63. package/dist/interfaces/IMemoryPersistence.d.ts +47 -1
  64. package/dist/interfaces/IMemoryPersistence.d.ts.map +1 -1
  65. package/dist/interfaces/SocketServiceInterface.d.ts +3 -2
  66. package/dist/interfaces/SocketServiceInterface.d.ts.map +1 -1
  67. package/dist/interfaces/TaskInterfaces.d.ts +14 -1
  68. package/dist/interfaces/TaskInterfaces.d.ts.map +1 -1
  69. package/dist/models/agent.d.ts +0 -1
  70. package/dist/models/agent.d.ts.map +1 -1
  71. package/dist/models/agent.js +0 -5
  72. package/dist/models/agent.js.map +1 -1
  73. package/dist/models/agentIdentityReservation.d.ts +42 -0
  74. package/dist/models/agentIdentityReservation.d.ts.map +1 -0
  75. package/dist/models/agentIdentityReservation.js +52 -0
  76. package/dist/models/agentIdentityReservation.js.map +1 -0
  77. package/dist/models/channel.d.ts +2 -0
  78. package/dist/models/channel.d.ts.map +1 -1
  79. package/dist/models/channel.js.map +1 -1
  80. package/dist/models/channelKey.d.ts +1 -0
  81. package/dist/models/channelKey.d.ts.map +1 -1
  82. package/dist/models/channelKey.js +5 -0
  83. package/dist/models/channelKey.js.map +1 -1
  84. package/dist/models/memory.d.ts +1 -1
  85. package/dist/models/memory.d.ts.map +1 -1
  86. package/dist/models/memory.js +9 -12
  87. package/dist/models/memory.js.map +1 -1
  88. package/dist/models/memoryStrata.d.ts +3 -16
  89. package/dist/models/memoryStrata.d.ts.map +1 -1
  90. package/dist/models/memoryStrata.js +3 -5
  91. package/dist/models/memoryStrata.js.map +1 -1
  92. package/dist/models/plan.d.ts +2 -2
  93. package/dist/models/plan.d.ts.map +1 -1
  94. package/dist/models/plan.js +1 -1
  95. package/dist/models/plan.js.map +1 -1
  96. package/dist/models/taskEffectiveness.d.ts +1 -0
  97. package/dist/models/taskEffectiveness.d.ts.map +1 -1
  98. package/dist/models/taskEffectiveness.js +7 -1
  99. package/dist/models/taskEffectiveness.js.map +1 -1
  100. package/dist/models/user.d.ts +4 -0
  101. package/dist/models/user.d.ts.map +1 -1
  102. package/dist/models/user.js +8 -0
  103. package/dist/models/user.js.map +1 -1
  104. package/dist/protocols/mcp/LlmTestEnvironmentGuard.d.ts +16 -0
  105. package/dist/protocols/mcp/LlmTestEnvironmentGuard.d.ts.map +1 -0
  106. package/dist/protocols/mcp/LlmTestEnvironmentGuard.js +25 -0
  107. package/dist/protocols/mcp/LlmTestEnvironmentGuard.js.map +1 -0
  108. package/dist/protocols/mcp/McpServerTypes.d.ts +9 -0
  109. package/dist/protocols/mcp/McpServerTypes.d.ts.map +1 -1
  110. package/dist/protocols/mcp/providers/AnthropicMcpClient.d.ts.map +1 -1
  111. package/dist/protocols/mcp/providers/AnthropicMcpClient.js +1 -0
  112. package/dist/protocols/mcp/providers/AnthropicMcpClient.js.map +1 -1
  113. package/dist/protocols/mcp/providers/AzureOpenAiMcpClient.d.ts.map +1 -1
  114. package/dist/protocols/mcp/providers/AzureOpenAiMcpClient.js +1 -0
  115. package/dist/protocols/mcp/providers/AzureOpenAiMcpClient.js.map +1 -1
  116. package/dist/protocols/mcp/providers/BaseMcpClient.d.ts +4 -0
  117. package/dist/protocols/mcp/providers/BaseMcpClient.d.ts.map +1 -1
  118. package/dist/protocols/mcp/providers/BaseMcpClient.js +10 -0
  119. package/dist/protocols/mcp/providers/BaseMcpClient.js.map +1 -1
  120. package/dist/protocols/mcp/providers/CustomMcpClient.d.ts.map +1 -1
  121. package/dist/protocols/mcp/providers/CustomMcpClient.js +7 -0
  122. package/dist/protocols/mcp/providers/CustomMcpClient.js.map +1 -1
  123. package/dist/protocols/mcp/providers/GeminiMcpClient.d.ts.map +1 -1
  124. package/dist/protocols/mcp/providers/GeminiMcpClient.js +1 -0
  125. package/dist/protocols/mcp/providers/GeminiMcpClient.js.map +1 -1
  126. package/dist/protocols/mcp/providers/OllamaMcpClient.d.ts +1 -0
  127. package/dist/protocols/mcp/providers/OllamaMcpClient.d.ts.map +1 -1
  128. package/dist/protocols/mcp/providers/OllamaMcpClient.js +1 -0
  129. package/dist/protocols/mcp/providers/OllamaMcpClient.js.map +1 -1
  130. package/dist/protocols/mcp/providers/OpenAiMcpClient.d.ts.map +1 -1
  131. package/dist/protocols/mcp/providers/OpenAiMcpClient.js +1 -0
  132. package/dist/protocols/mcp/providers/OpenAiMcpClient.js.map +1 -1
  133. package/dist/protocols/mcp/providers/OpenRouterMcpClient.d.ts.map +1 -1
  134. package/dist/protocols/mcp/providers/OpenRouterMcpClient.js +2 -0
  135. package/dist/protocols/mcp/providers/OpenRouterMcpClient.js.map +1 -1
  136. package/dist/protocols/mcp/providers/XaiMcpClient.d.ts.map +1 -1
  137. package/dist/protocols/mcp/providers/XaiMcpClient.js +1 -0
  138. package/dist/protocols/mcp/providers/XaiMcpClient.js.map +1 -1
  139. package/dist/protocols/mcp/security/BrowserTargetGuard.d.ts +14 -0
  140. package/dist/protocols/mcp/security/BrowserTargetGuard.d.ts.map +1 -0
  141. package/dist/protocols/mcp/security/BrowserTargetGuard.js +55 -0
  142. package/dist/protocols/mcp/security/BrowserTargetGuard.js.map +1 -0
  143. package/dist/protocols/mcp/security/ExternalMcpRegistrationPolicy.d.ts +24 -0
  144. package/dist/protocols/mcp/security/ExternalMcpRegistrationPolicy.d.ts.map +1 -0
  145. package/dist/protocols/mcp/security/ExternalMcpRegistrationPolicy.js +33 -0
  146. package/dist/protocols/mcp/security/ExternalMcpRegistrationPolicy.js.map +1 -0
  147. package/dist/protocols/mcp/security/HttpTargetGuard.d.ts.map +1 -1
  148. package/dist/protocols/mcp/security/HttpTargetGuard.js +68 -6
  149. package/dist/protocols/mcp/security/HttpTargetGuard.js.map +1 -1
  150. package/dist/protocols/mcp/security/McpSecurityGuard.d.ts.map +1 -1
  151. package/dist/protocols/mcp/security/McpSecurityGuard.js +7 -5
  152. package/dist/protocols/mcp/security/McpSecurityGuard.js.map +1 -1
  153. package/dist/protocols/mcp/security/McpToolPolicy.d.ts +18 -0
  154. package/dist/protocols/mcp/security/McpToolPolicy.d.ts.map +1 -1
  155. package/dist/protocols/mcp/security/McpToolPolicy.js +60 -0
  156. package/dist/protocols/mcp/security/McpToolPolicy.js.map +1 -1
  157. package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts +25 -0
  158. package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts.map +1 -1
  159. package/dist/protocols/mcp/services/ExternalMcpServerManager.js +93 -17
  160. package/dist/protocols/mcp/services/ExternalMcpServerManager.js.map +1 -1
  161. package/dist/protocols/mcp/services/ExternalServerConfigs.d.ts +2 -2
  162. package/dist/protocols/mcp/services/ExternalServerConfigs.d.ts.map +1 -1
  163. package/dist/protocols/mcp/services/ExternalServerConfigs.js +25 -8
  164. package/dist/protocols/mcp/services/ExternalServerConfigs.js.map +1 -1
  165. package/dist/protocols/mcp/tools/AnalyticsTools.d.ts +3 -37
  166. package/dist/protocols/mcp/tools/AnalyticsTools.d.ts.map +1 -1
  167. package/dist/protocols/mcp/tools/AnalyticsTools.js +134 -614
  168. package/dist/protocols/mcp/tools/AnalyticsTools.js.map +1 -1
  169. package/dist/protocols/mcp/tools/CodeAnalysisTools.d.ts.map +1 -1
  170. package/dist/protocols/mcp/tools/CodeAnalysisTools.js +16 -13
  171. package/dist/protocols/mcp/tools/CodeAnalysisTools.js.map +1 -1
  172. package/dist/protocols/mcp/tools/EffectivenessTools.d.ts.map +1 -1
  173. package/dist/protocols/mcp/tools/EffectivenessTools.js +94 -30
  174. package/dist/protocols/mcp/tools/EffectivenessTools.js.map +1 -1
  175. package/dist/protocols/mcp/tools/GitTools.d.ts.map +1 -1
  176. package/dist/protocols/mcp/tools/GitTools.js +9 -5
  177. package/dist/protocols/mcp/tools/GitTools.js.map +1 -1
  178. package/dist/protocols/mcp/tools/InfrastructureTools.d.ts +10 -40
  179. package/dist/protocols/mcp/tools/InfrastructureTools.d.ts.map +1 -1
  180. package/dist/protocols/mcp/tools/InfrastructureTools.js +29 -70
  181. package/dist/protocols/mcp/tools/InfrastructureTools.js.map +1 -1
  182. package/dist/protocols/mcp/tools/JsonTools.d.ts.map +1 -1
  183. package/dist/protocols/mcp/tools/JsonTools.js +4 -4
  184. package/dist/protocols/mcp/tools/JsonTools.js.map +1 -1
  185. package/dist/protocols/mcp/tools/KnowledgeGraphTools.d.ts +55 -592
  186. package/dist/protocols/mcp/tools/KnowledgeGraphTools.d.ts.map +1 -1
  187. package/dist/protocols/mcp/tools/KnowledgeGraphTools.js +169 -119
  188. package/dist/protocols/mcp/tools/KnowledgeGraphTools.js.map +1 -1
  189. package/dist/protocols/mcp/tools/MemorySearchTools.d.ts +6 -6
  190. package/dist/protocols/mcp/tools/MemorySearchTools.d.ts.map +1 -1
  191. package/dist/protocols/mcp/tools/MemorySearchTools.js +107 -39
  192. package/dist/protocols/mcp/tools/MemorySearchTools.js.map +1 -1
  193. package/dist/protocols/mcp/tools/MemoryUtilityTools.d.ts +4 -5
  194. package/dist/protocols/mcp/tools/MemoryUtilityTools.d.ts.map +1 -1
  195. package/dist/protocols/mcp/tools/MemoryUtilityTools.js +59 -208
  196. package/dist/protocols/mcp/tools/MemoryUtilityTools.js.map +1 -1
  197. package/dist/protocols/mcp/tools/PlanningTools.d.ts +2 -1
  198. package/dist/protocols/mcp/tools/PlanningTools.d.ts.map +1 -1
  199. package/dist/protocols/mcp/tools/PlanningTools.js +111 -49
  200. package/dist/protocols/mcp/tools/PlanningTools.js.map +1 -1
  201. package/dist/protocols/mcp/tools/ProjectContextTools.d.ts.map +1 -1
  202. package/dist/protocols/mcp/tools/ProjectContextTools.js +18 -12
  203. package/dist/protocols/mcp/tools/ProjectContextTools.js.map +1 -1
  204. package/dist/protocols/mcp/tools/SafetyTools.d.ts.map +1 -1
  205. package/dist/protocols/mcp/tools/SafetyTools.js +16 -13
  206. package/dist/protocols/mcp/tools/SafetyTools.js.map +1 -1
  207. package/dist/protocols/mcp/tools/SearchProjectTools.d.ts +24 -7
  208. package/dist/protocols/mcp/tools/SearchProjectTools.d.ts.map +1 -1
  209. package/dist/protocols/mcp/tools/SearchProjectTools.js +226 -126
  210. package/dist/protocols/mcp/tools/SearchProjectTools.js.map +1 -1
  211. package/dist/protocols/mcp/tools/TaskPlanningTools.d.ts +0 -32
  212. package/dist/protocols/mcp/tools/TaskPlanningTools.d.ts.map +1 -1
  213. package/dist/protocols/mcp/tools/TaskPlanningTools.js +363 -450
  214. package/dist/protocols/mcp/tools/TaskPlanningTools.js.map +1 -1
  215. package/dist/protocols/mcp/tools/TestTools.d.ts.map +1 -1
  216. package/dist/protocols/mcp/tools/TestTools.js +18 -11
  217. package/dist/protocols/mcp/tools/TestTools.js.map +1 -1
  218. package/dist/protocols/mcp/tools/TypeScriptTools.d.ts.map +1 -1
  219. package/dist/protocols/mcp/tools/TypeScriptTools.js +22 -12
  220. package/dist/protocols/mcp/tools/TypeScriptTools.js.map +1 -1
  221. package/dist/protocols/mcp/tools/UserInputTools.d.ts.map +1 -1
  222. package/dist/protocols/mcp/tools/UserInputTools.js +14 -1
  223. package/dist/protocols/mcp/tools/UserInputTools.js.map +1 -1
  224. package/dist/protocols/mcp/tools/UserMemoryTools.d.ts +3 -1
  225. package/dist/protocols/mcp/tools/UserMemoryTools.d.ts.map +1 -1
  226. package/dist/protocols/mcp/tools/UserMemoryTools.js +27 -62
  227. package/dist/protocols/mcp/tools/UserMemoryTools.js.map +1 -1
  228. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.d.ts.map +1 -1
  229. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.js +14 -60
  230. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.js.map +1 -1
  231. package/dist/protocols/mcp/tools/shell/ShellSandbox.d.ts.map +1 -1
  232. package/dist/protocols/mcp/tools/shell/ShellSandbox.js +9 -27
  233. package/dist/protocols/mcp/tools/shell/ShellSandbox.js.map +1 -1
  234. package/dist/repositories/interfaces/IKnowledgeGraphRepository.d.ts +40 -30
  235. package/dist/repositories/interfaces/IKnowledgeGraphRepository.d.ts.map +1 -1
  236. package/dist/schemas/EventPayloadSchema.d.ts +28 -0
  237. package/dist/schemas/EventPayloadSchema.d.ts.map +1 -1
  238. package/dist/schemas/EventPayloadSchema.js +30 -1
  239. package/dist/schemas/EventPayloadSchema.js.map +1 -1
  240. package/dist/schemas/MxpProtocolSchemas.d.ts +6 -6
  241. package/dist/services/AgentPerformanceService.d.ts +11 -0
  242. package/dist/services/AgentPerformanceService.d.ts.map +1 -1
  243. package/dist/services/AgentPerformanceService.js +59 -33
  244. package/dist/services/AgentPerformanceService.js.map +1 -1
  245. package/dist/services/AutoCorrectionService.d.ts +3 -0
  246. package/dist/services/AutoCorrectionService.d.ts.map +1 -1
  247. package/dist/services/AutoCorrectionService.js +19 -2
  248. package/dist/services/AutoCorrectionService.js.map +1 -1
  249. package/dist/services/BackgroundTaskManager.d.ts +23 -7
  250. package/dist/services/BackgroundTaskManager.d.ts.map +1 -1
  251. package/dist/services/BackgroundTaskManager.js +137 -57
  252. package/dist/services/BackgroundTaskManager.js.map +1 -1
  253. package/dist/services/BrowserManager.d.ts +2 -0
  254. package/dist/services/BrowserManager.d.ts.map +1 -1
  255. package/dist/services/BrowserManager.js +18 -15
  256. package/dist/services/BrowserManager.js.map +1 -1
  257. package/dist/services/ChannelContextMemoryOperations.d.ts +8 -1
  258. package/dist/services/ChannelContextMemoryOperations.d.ts.map +1 -1
  259. package/dist/services/ChannelContextMemoryOperations.js +89 -165
  260. package/dist/services/ChannelContextMemoryOperations.js.map +1 -1
  261. package/dist/services/ChannelContextMessageOperations.d.ts +4 -3
  262. package/dist/services/ChannelContextMessageOperations.d.ts.map +1 -1
  263. package/dist/services/ChannelContextMessageOperations.js +72 -212
  264. package/dist/services/ChannelContextMessageOperations.js.map +1 -1
  265. package/dist/services/MemoryService.d.ts +52 -21
  266. package/dist/services/MemoryService.d.ts.map +1 -1
  267. package/dist/services/MemoryService.js +775 -548
  268. package/dist/services/MemoryService.js.map +1 -1
  269. package/dist/services/PatternLearningService.d.ts +5 -0
  270. package/dist/services/PatternLearningService.d.ts.map +1 -1
  271. package/dist/services/PatternLearningService.js +26 -3
  272. package/dist/services/PatternLearningService.js.map +1 -1
  273. package/dist/services/PerformanceOptimizationService.d.ts +2 -1
  274. package/dist/services/PerformanceOptimizationService.d.ts.map +1 -1
  275. package/dist/services/PerformanceOptimizationService.js +21 -6
  276. package/dist/services/PerformanceOptimizationService.js.map +1 -1
  277. package/dist/services/PredictiveAnalyticsService.d.ts +1 -0
  278. package/dist/services/PredictiveAnalyticsService.d.ts.map +1 -1
  279. package/dist/services/PredictiveAnalyticsService.js +18 -6
  280. package/dist/services/PredictiveAnalyticsService.js.map +1 -1
  281. package/dist/services/ProactiveValidationService.d.ts +6 -0
  282. package/dist/services/ProactiveValidationService.d.ts.map +1 -1
  283. package/dist/services/ProactiveValidationService.js +58 -39
  284. package/dist/services/ProactiveValidationService.js.map +1 -1
  285. package/dist/services/TaskEffectivenessService.d.ts +55 -31
  286. package/dist/services/TaskEffectivenessService.d.ts.map +1 -1
  287. package/dist/services/TaskEffectivenessService.js +243 -125
  288. package/dist/services/TaskEffectivenessService.js.map +1 -1
  289. package/dist/services/ToolExecutionInterceptor.d.ts +4 -0
  290. package/dist/services/ToolExecutionInterceptor.d.ts.map +1 -1
  291. package/dist/services/ToolExecutionInterceptor.js +31 -5
  292. package/dist/services/ToolExecutionInterceptor.js.map +1 -1
  293. package/dist/services/UserInputRequestManager.d.ts +13 -3
  294. package/dist/services/UserInputRequestManager.d.ts.map +1 -1
  295. package/dist/services/UserInputRequestManager.js +42 -6
  296. package/dist/services/UserInputRequestManager.js.map +1 -1
  297. package/dist/services/UserMemoryService.d.ts +2 -0
  298. package/dist/services/UserMemoryService.d.ts.map +1 -1
  299. package/dist/services/UserMemoryService.js +9 -4
  300. package/dist/services/UserMemoryService.js.map +1 -1
  301. package/dist/services/ValidationAnalyticsService.d.ts +4 -0
  302. package/dist/services/ValidationAnalyticsService.d.ts.map +1 -1
  303. package/dist/services/ValidationAnalyticsService.js +30 -8
  304. package/dist/services/ValidationAnalyticsService.js.map +1 -1
  305. package/dist/services/ValidationCacheService.d.ts +3 -1
  306. package/dist/services/ValidationCacheService.d.ts.map +1 -1
  307. package/dist/services/ValidationCacheService.js +25 -4
  308. package/dist/services/ValidationCacheService.js.map +1 -1
  309. package/dist/services/ValidationMiddleware.d.ts +7 -0
  310. package/dist/services/ValidationMiddleware.d.ts.map +1 -1
  311. package/dist/services/ValidationMiddleware.js +53 -10
  312. package/dist/services/ValidationMiddleware.js.map +1 -1
  313. package/dist/services/ValidationPerformanceService.d.ts +3 -0
  314. package/dist/services/ValidationPerformanceService.d.ts.map +1 -1
  315. package/dist/services/ValidationPerformanceService.js +28 -11
  316. package/dist/services/ValidationPerformanceService.js.map +1 -1
  317. package/dist/services/WebSearchService.d.ts.map +1 -1
  318. package/dist/services/WebSearchService.js +9 -0
  319. package/dist/services/WebSearchService.js.map +1 -1
  320. package/dist/services/dag/TaskDagService.d.ts +3 -0
  321. package/dist/services/dag/TaskDagService.d.ts.map +1 -1
  322. package/dist/services/dag/TaskDagService.js +18 -0
  323. package/dist/services/dag/TaskDagService.js.map +1 -1
  324. package/dist/services/kg/EntityQValueManager.d.ts +3 -1
  325. package/dist/services/kg/EntityQValueManager.d.ts.map +1 -1
  326. package/dist/services/kg/EntityQValueManager.js +10 -10
  327. package/dist/services/kg/EntityQValueManager.js.map +1 -1
  328. package/dist/services/kg/GraphSurpriseCalculator.d.ts +0 -4
  329. package/dist/services/kg/GraphSurpriseCalculator.d.ts.map +1 -1
  330. package/dist/services/kg/GraphSurpriseCalculator.js +0 -9
  331. package/dist/services/kg/GraphSurpriseCalculator.js.map +1 -1
  332. package/dist/services/kg/KnowledgeGraphService.d.ts +12 -12
  333. package/dist/services/kg/KnowledgeGraphService.d.ts.map +1 -1
  334. package/dist/services/kg/KnowledgeGraphService.js +43 -51
  335. package/dist/services/kg/KnowledgeGraphService.js.map +1 -1
  336. package/dist/services/kg/OrparGraphIntegration.d.ts.map +1 -1
  337. package/dist/services/kg/OrparGraphIntegration.js +6 -5
  338. package/dist/services/kg/OrparGraphIntegration.js.map +1 -1
  339. package/dist/services/orpar-memory/CycleConsolidationTrigger.d.ts +1 -0
  340. package/dist/services/orpar-memory/CycleConsolidationTrigger.d.ts.map +1 -1
  341. package/dist/services/orpar-memory/CycleConsolidationTrigger.js +8 -1
  342. package/dist/services/orpar-memory/CycleConsolidationTrigger.js.map +1 -1
  343. package/dist/services/orpar-memory/OrparMemoryCoordinator.d.ts +8 -1
  344. package/dist/services/orpar-memory/OrparMemoryCoordinator.d.ts.map +1 -1
  345. package/dist/services/orpar-memory/OrparMemoryCoordinator.js +93 -45
  346. package/dist/services/orpar-memory/OrparMemoryCoordinator.js.map +1 -1
  347. package/dist/services/orpar-memory/SurpriseOrparAdapter.d.ts +1 -0
  348. package/dist/services/orpar-memory/SurpriseOrparAdapter.d.ts.map +1 -1
  349. package/dist/services/orpar-memory/SurpriseOrparAdapter.js +8 -1
  350. package/dist/services/orpar-memory/SurpriseOrparAdapter.js.map +1 -1
  351. package/dist/types/ChannelContext.d.ts +2 -1
  352. package/dist/types/ChannelContext.d.ts.map +1 -1
  353. package/dist/types/EffectivenessTypes.d.ts +4 -1
  354. package/dist/types/EffectivenessTypes.d.ts.map +1 -1
  355. package/dist/types/TaskCompletionTypes.d.ts +7 -5
  356. package/dist/types/TaskCompletionTypes.d.ts.map +1 -1
  357. package/dist/types/TaskTypes.d.ts +8 -1
  358. package/dist/types/TaskTypes.d.ts.map +1 -1
  359. package/dist/utils/GlobMatcher.d.ts +37 -0
  360. package/dist/utils/GlobMatcher.d.ts.map +1 -0
  361. package/dist/utils/GlobMatcher.js +131 -0
  362. package/dist/utils/GlobMatcher.js.map +1 -0
  363. package/package.json +1 -1
  364. package/src/config/ModelContextLimits.ts +7 -1
  365. package/src/constants/CoreTools.ts +6 -5
  366. package/src/constants/DefaultPhaseProfiles.ts +29 -0
  367. package/src/constants/ReservedIdentities.ts +51 -0
  368. package/src/database/adapters/mongodb/MongoKnowledgeGraphRepository.ts +115 -36
  369. package/src/events/ClientEventBus.ts +117 -48
  370. package/src/events/EventBus.ts +32 -2
  371. package/src/events/EventBusBase.ts +132 -39
  372. package/src/events/EventNames.ts +43 -36
  373. package/src/events/PublicEvents.ts +8 -0
  374. package/src/events/ServerEventBus.ts +9 -128
  375. package/src/events/event-definitions/ControlLoopEvents.ts +12 -0
  376. package/src/events/event-definitions/SdkEvents.ts +58 -0
  377. package/src/events/event-definitions/TaskEvents.ts +2 -2
  378. package/src/index.ts +15 -0
  379. package/src/interfaces/AgentInterfaces.ts +5 -0
  380. package/src/interfaces/ChannelConfig.ts +2 -2
  381. package/src/interfaces/ConversationMessage.ts +5 -0
  382. package/src/interfaces/IMemoryPersistence.ts +55 -1
  383. package/src/interfaces/SocketServiceInterface.ts +3 -2
  384. package/src/interfaces/TaskInterfaces.ts +16 -1
  385. package/src/models/agent.ts +0 -6
  386. package/src/models/agentIdentityReservation.ts +77 -0
  387. package/src/models/channel.ts +2 -0
  388. package/src/models/channelKey.ts +10 -0
  389. package/src/models/memory.ts +18 -19
  390. package/src/models/memoryStrata.ts +9 -23
  391. package/src/models/plan.ts +3 -3
  392. package/src/models/taskEffectiveness.ts +9 -2
  393. package/src/models/user.ts +12 -0
  394. package/src/protocols/mcp/LlmTestEnvironmentGuard.ts +30 -0
  395. package/src/protocols/mcp/McpServerTypes.ts +9 -0
  396. package/src/protocols/mcp/providers/AnthropicMcpClient.ts +2 -0
  397. package/src/protocols/mcp/providers/AzureOpenAiMcpClient.ts +1 -0
  398. package/src/protocols/mcp/providers/BaseMcpClient.ts +13 -0
  399. package/src/protocols/mcp/providers/CustomMcpClient.ts +7 -0
  400. package/src/protocols/mcp/providers/GeminiMcpClient.ts +2 -0
  401. package/src/protocols/mcp/providers/OllamaMcpClient.ts +3 -1
  402. package/src/protocols/mcp/providers/OpenAiMcpClient.ts +2 -0
  403. package/src/protocols/mcp/providers/OpenRouterMcpClient.ts +3 -0
  404. package/src/protocols/mcp/providers/XaiMcpClient.ts +2 -0
  405. package/src/protocols/mcp/security/BrowserTargetGuard.ts +64 -0
  406. package/src/protocols/mcp/security/ExternalMcpRegistrationPolicy.ts +38 -0
  407. package/src/protocols/mcp/security/HttpTargetGuard.ts +77 -6
  408. package/src/protocols/mcp/security/McpSecurityGuard.ts +7 -5
  409. package/src/protocols/mcp/security/McpToolPolicy.ts +74 -0
  410. package/src/protocols/mcp/services/ExternalMcpServerManager.ts +146 -17
  411. package/src/protocols/mcp/services/ExternalServerConfigs.ts +26 -8
  412. package/src/protocols/mcp/tools/AnalyticsTools.ts +167 -641
  413. package/src/protocols/mcp/tools/CodeAnalysisTools.ts +44 -14
  414. package/src/protocols/mcp/tools/EffectivenessTools.ts +185 -45
  415. package/src/protocols/mcp/tools/GitTools.ts +15 -5
  416. package/src/protocols/mcp/tools/InfrastructureTools.ts +42 -90
  417. package/src/protocols/mcp/tools/JsonTools.ts +7 -4
  418. package/src/protocols/mcp/tools/KnowledgeGraphTools.ts +313 -164
  419. package/src/protocols/mcp/tools/MemorySearchTools.ts +158 -46
  420. package/src/protocols/mcp/tools/MemoryUtilityTools.ts +85 -232
  421. package/src/protocols/mcp/tools/PlanningTools.ts +137 -59
  422. package/src/protocols/mcp/tools/ProjectContextTools.ts +33 -12
  423. package/src/protocols/mcp/tools/SafetyTools.ts +49 -13
  424. package/src/protocols/mcp/tools/SearchProjectTools.ts +294 -153
  425. package/src/protocols/mcp/tools/TaskPlanningTools.ts +437 -514
  426. package/src/protocols/mcp/tools/TestTools.ts +41 -11
  427. package/src/protocols/mcp/tools/TypeScriptTools.ts +61 -12
  428. package/src/protocols/mcp/tools/UserInputTools.ts +15 -1
  429. package/src/protocols/mcp/tools/UserMemoryTools.ts +27 -62
  430. package/src/protocols/mcp/tools/shell/ShellExecuteHandler.ts +26 -84
  431. package/src/protocols/mcp/tools/shell/ShellSandbox.ts +13 -31
  432. package/src/repositories/interfaces/IKnowledgeGraphRepository.ts +45 -27
  433. package/src/schemas/EventPayloadSchema.ts +45 -1
  434. package/src/services/AgentPerformanceService.ts +85 -36
  435. package/src/services/AutoCorrectionService.ts +25 -6
  436. package/src/services/BackgroundTaskManager.ts +183 -76
  437. package/src/services/BrowserManager.ts +20 -16
  438. package/src/services/ChannelContextMemoryOperations.ts +169 -202
  439. package/src/services/ChannelContextMessageOperations.ts +112 -274
  440. package/src/services/MemoryService.ts +1053 -760
  441. package/src/services/PatternLearningService.ts +32 -7
  442. package/src/services/PerformanceOptimizationService.ts +26 -9
  443. package/src/services/PredictiveAnalyticsService.ts +23 -10
  444. package/src/services/ProactiveValidationService.ts +66 -40
  445. package/src/services/TaskEffectivenessService.ts +421 -206
  446. package/src/services/ToolExecutionInterceptor.ts +40 -9
  447. package/src/services/UserInputRequestManager.ts +51 -6
  448. package/src/services/UserMemoryService.ts +12 -3
  449. package/src/services/ValidationAnalyticsService.ts +36 -11
  450. package/src/services/ValidationCacheService.ts +30 -7
  451. package/src/services/ValidationMiddleware.ts +62 -14
  452. package/src/services/ValidationPerformanceService.ts +47 -25
  453. package/src/services/WebSearchService.ts +16 -4
  454. package/src/services/dag/TaskDagService.ts +20 -1
  455. package/src/services/kg/EntityQValueManager.ts +21 -10
  456. package/src/services/kg/GraphSurpriseCalculator.ts +0 -14
  457. package/src/services/kg/KnowledgeGraphService.ts +56 -48
  458. package/src/services/kg/OrparGraphIntegration.ts +11 -5
  459. package/src/services/orpar-memory/CycleConsolidationTrigger.ts +10 -1
  460. package/src/services/orpar-memory/OrparMemoryCoordinator.ts +142 -71
  461. package/src/services/orpar-memory/SurpriseOrparAdapter.ts +10 -1
  462. package/src/types/ChannelContext.ts +3 -1
  463. package/src/types/EffectivenessTypes.ts +6 -2
  464. package/src/types/TaskCompletionTypes.ts +9 -9
  465. package/src/types/TaskTypes.ts +12 -1
  466. package/src/utils/GlobMatcher.ts +157 -0
@@ -39,7 +39,13 @@ const DEFAULT_CONTEXT_LIMIT = 128_000;
39
39
  * then walks prefixes so "claude-3.5-sonnet-20241022" matches "claude-3.5-sonnet".
40
40
  */
41
41
  const MODEL_CONTEXT_LIMITS: Record<string, number> = {
42
- // Claude models
42
+ // Claude models. The `-latest` rows are OpenRouter's `~anthropic/...-latest`
43
+ // aliases, which resolve to the newest model in each family. Windows are
44
+ // as OpenRouter listed them on 2026-08-21; they move with each release.
45
+ 'claude-fable-latest': 1_000_000,
46
+ 'claude-opus-latest': 1_000_000,
47
+ 'claude-sonnet-latest': 1_000_000,
48
+ 'claude-haiku-latest': 200_000,
43
49
  'claude-opus-4': 200_000,
44
50
  'claude-sonnet-4': 200_000,
45
51
  'claude-3.5-sonnet': 200_000,
@@ -19,18 +19,19 @@
19
19
  */
20
20
 
21
21
  /**
22
- * Core MXF Tools - Essential tools that should be available when allowedTools is empty/missing
22
+ * Core MXF Tools - Essential tools available when allowedTools is omitted
23
23
  *
24
24
  * These tools provide a curated selection that demonstrates the MXF ecosystem
25
25
  * without overwhelming agents with all 180+ available tools.
26
26
  *
27
- * IMPORTANT: allowedTools always takes priority - if specified, only those tools are allowed.
28
- * This core set is only used as a fallback when allowedTools is empty or missing.
27
+ * IMPORTANT: allowedTools always takes priority when specified. An explicit
28
+ * empty array denies every tool; this core set is used only when the policy is
29
+ * undefined.
29
30
  */
30
31
 
31
32
  /**
32
- * Essential core MXF tools that should always be available as fallback
33
- * when allowedTools is empty or missing
33
+ * Essential core MXF tools available as the fallback when allowedTools is
34
+ * undefined.
34
35
  */
35
36
  export const CORE_MXF_TOOLS = [
36
37
  // Meta-discovery tools (most important - gateway to other tools)
@@ -560,6 +560,13 @@ export const MODEL_COST_ESTIMATES: Record<string, ParameterCostEstimate> = {
560
560
  outputCostPer1k: 0.00125,
561
561
  tier: 'budget'
562
562
  },
563
+ // OpenRouter `~anthropic/...-latest` aliases resolve to the newest model in
564
+ // each family; these rows carry the family's current rate.
565
+ '~anthropic/claude-haiku-latest': {
566
+ inputCostPer1k: 0.00100,
567
+ outputCostPer1k: 0.00500,
568
+ tier: 'budget'
569
+ },
563
570
 
564
571
  // Standard tier (under $5.00/1M tokens)
565
572
  'google/gemini-2.5-pro': {
@@ -582,6 +589,12 @@ export const MODEL_COST_ESTIMATES: Record<string, ParameterCostEstimate> = {
582
589
  reasoningCostPer1k: 0.01500,
583
590
  tier: 'premium'
584
591
  },
592
+ '~anthropic/claude-sonnet-latest': {
593
+ inputCostPer1k: 0.00200,
594
+ outputCostPer1k: 0.01000,
595
+ reasoningCostPer1k: 0.01000,
596
+ tier: 'premium'
597
+ },
585
598
  'openai/gpt-4.1': {
586
599
  inputCostPer1k: 0.00250,
587
600
  outputCostPer1k: 0.01000,
@@ -595,6 +608,22 @@ export const MODEL_COST_ESTIMATES: Record<string, ParameterCostEstimate> = {
595
608
  outputCostPer1k: 0.07500,
596
609
  reasoningCostPer1k: 0.07500,
597
610
  tier: 'ultra_premium'
611
+ },
612
+ // The `~anthropic/...-latest` alias rows carry the rates OpenRouter listed
613
+ // for them on 2026-08-21 (USD per 1k tokens); they move with each release.
614
+ '~anthropic/claude-opus-latest': {
615
+ inputCostPer1k: 0.00500,
616
+ outputCostPer1k: 0.02500,
617
+ reasoningCostPer1k: 0.02500,
618
+ tier: 'ultra_premium'
619
+ },
620
+ // Listed so a configured fable model is priced; nothing in the framework,
621
+ // demos, or tests selects it.
622
+ '~anthropic/claude-fable-latest': {
623
+ inputCostPer1k: 0.01000,
624
+ outputCostPer1k: 0.05000,
625
+ reasoningCostPer1k: 0.05000,
626
+ tier: 'ultra_premium'
598
627
  }
599
628
  };
600
629
 
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Identifiers used by MXF as internal routing sentinels.
3
+ *
4
+ * Agent and channel ids are also socket-routing coordinates. Letting an
5
+ * external tenant claim one of these values would turn a framework-emitted
6
+ * event into traffic for that tenant's socket. Comparisons are intentionally
7
+ * case-insensitive so visually equivalent aliases cannot be persisted and
8
+ * later confused with an internal principal.
9
+ */
10
+
11
+ const RESERVED_AGENT_IDS = new Set([
12
+ 'system',
13
+ 'system_agent',
14
+ 'sdk_system_agent',
15
+ 'system-service',
16
+ 'mxf-server'
17
+ ]);
18
+
19
+ const RESERVED_CHANNEL_IDS = new Set([
20
+ 'system',
21
+ 'no_channel',
22
+ 'global',
23
+ 'config_channel'
24
+ ]);
25
+
26
+ const normalizeIdentity = (value: unknown): string | null => {
27
+ if (typeof value !== 'string') {
28
+ return null;
29
+ }
30
+
31
+ const normalized = value.trim().toLowerCase();
32
+ return normalized.length > 0 ? normalized : null;
33
+ };
34
+
35
+ /** Return true when an agent id is reserved for framework-originated work. */
36
+ export const isReservedAgentId = (value: unknown): boolean => {
37
+ const normalized = normalizeIdentity(value);
38
+ return normalized !== null && (
39
+ RESERVED_AGENT_IDS.has(normalized) ||
40
+ normalized.startsWith('system:')
41
+ );
42
+ };
43
+
44
+ /** Return true when a channel id denotes a framework/global routing scope. */
45
+ export const isReservedChannelId = (value: unknown): boolean => {
46
+ const normalized = normalizeIdentity(value);
47
+ return normalized !== null && (
48
+ RESERVED_CHANNEL_IDS.has(normalized) ||
49
+ normalized.startsWith('system:')
50
+ );
51
+ };
@@ -52,6 +52,18 @@ import { Logger } from '../../../utils/Logger.js';
52
52
 
53
53
  const logger = new Logger('info', 'MongoKnowledgeGraphRepository', 'server');
54
54
 
55
+ /**
56
+ * Every mutation and id-list read is bound to one channel. A blank channel
57
+ * would turn the predicate into "any channel", so it is rejected before the
58
+ * query is built.
59
+ */
60
+ const requireChannelId = (channelId: ChannelId, operation: string): ChannelId => {
61
+ if (typeof channelId !== 'string' || channelId.trim().length === 0) {
62
+ throw new Error(`${operation} requires a non-empty channelId`);
63
+ }
64
+ return channelId;
65
+ };
66
+
55
67
  /**
56
68
  * MongoDB implementation of IKnowledgeGraphRepository
57
69
  */
@@ -95,25 +107,30 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
95
107
  return toEntityObject(saved);
96
108
  }
97
109
 
98
- async getEntity(entityId: string): Promise<Entity | null> {
99
- const doc = await EntityModel.findById(entityId);
110
+ async getEntity(entityId: string, channelId?: ChannelId): Promise<Entity | null> {
111
+ const doc = await EntityModel.findOne({
112
+ _id: entityId,
113
+ ...(channelId ? { channelId } : {})
114
+ });
100
115
  return doc ? toEntityObject(doc) : null;
101
116
  }
102
117
 
103
- async updateEntity(entityId: string, updates: Partial<Entity>): Promise<Entity | null> {
104
- const doc = await EntityModel.findByIdAndUpdate(
105
- entityId,
118
+ async updateEntity(entityId: string, channelId: ChannelId, updates: Partial<Entity>): Promise<Entity | null> {
119
+ const doc = await EntityModel.findOneAndUpdate(
120
+ { _id: entityId, channelId: requireChannelId(channelId, 'updateEntity') },
106
121
  { $set: updates },
107
122
  { new: true }
108
123
  );
109
124
  return doc ? toEntityObject(doc) : null;
110
125
  }
111
126
 
112
- async deleteEntity(entityId: string): Promise<boolean> {
113
- const result = await EntityModel.deleteOne({ _id: entityId });
127
+ async deleteEntity(entityId: string, channelId: ChannelId): Promise<boolean> {
128
+ const exactChannelId = requireChannelId(channelId, 'deleteEntity');
129
+ const result = await EntityModel.deleteOne({ _id: entityId, channelId: exactChannelId });
114
130
  if (result.deletedCount > 0) {
115
131
  // Also delete relationships involving this entity
116
132
  await RelationshipModel.deleteMany({
133
+ channelId: exactChannelId,
117
134
  $or: [
118
135
  { fromEntityId: entityId },
119
136
  { toEntityId: entityId },
@@ -224,9 +241,13 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
224
241
 
225
242
  async mergeEntities(
226
243
  targetEntityId: string,
227
- sourceEntityIds: string[]
244
+ sourceEntityIds: string[],
245
+ channelId?: ChannelId
228
246
  ): Promise<EntityMergeResult> {
229
- const target = await EntityModel.findById(targetEntityId);
247
+ const target = await EntityModel.findOne({
248
+ _id: targetEntityId,
249
+ ...(channelId ? { channelId } : {})
250
+ });
230
251
  if (!target) {
231
252
  return {
232
253
  success: false,
@@ -235,12 +256,23 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
235
256
  };
236
257
  }
237
258
 
238
- const sources = await EntityModel.find({ _id: { $in: sourceEntityIds } });
239
- if (sources.length === 0) {
259
+ const uniqueSourceEntityIds = [...new Set(sourceEntityIds)];
260
+ if (uniqueSourceEntityIds.includes(targetEntityId)) {
261
+ return {
262
+ success: false,
263
+ sourceEntityIds,
264
+ error: 'The merge target cannot also be a source entity',
265
+ };
266
+ }
267
+ const sources = await EntityModel.find({
268
+ _id: { $in: uniqueSourceEntityIds },
269
+ ...(channelId ? { channelId } : {})
270
+ });
271
+ if (sources.length !== uniqueSourceEntityIds.length) {
240
272
  return {
241
273
  success: false,
242
274
  sourceEntityIds,
243
- error: 'No source entities found',
275
+ error: 'Every source entity must exist in the authorized channel',
244
276
  };
245
277
  }
246
278
 
@@ -261,7 +293,10 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
261
293
 
262
294
  // Mark sources as merged
263
295
  await EntityModel.updateMany(
264
- { _id: { $in: sourceEntityIds } },
296
+ {
297
+ _id: { $in: uniqueSourceEntityIds },
298
+ ...(channelId ? { channelId } : {})
299
+ },
265
300
  {
266
301
  $set: {
267
302
  merged: true,
@@ -272,11 +307,17 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
272
307
 
273
308
  // Update relationships to point to target
274
309
  await RelationshipModel.updateMany(
275
- { fromEntityId: { $in: sourceEntityIds } },
310
+ {
311
+ fromEntityId: { $in: uniqueSourceEntityIds },
312
+ ...(channelId ? { channelId } : {})
313
+ },
276
314
  { $set: { fromEntityId: targetEntityId } }
277
315
  );
278
316
  await RelationshipModel.updateMany(
279
- { toEntityId: { $in: sourceEntityIds } },
317
+ {
318
+ toEntityId: { $in: uniqueSourceEntityIds },
319
+ ...(channelId ? { channelId } : {})
320
+ },
280
321
  { $set: { toEntityId: targetEntityId } }
281
322
  );
282
323
 
@@ -423,18 +464,22 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
423
464
 
424
465
  async updateRelationship(
425
466
  relationshipId: string,
467
+ channelId: ChannelId,
426
468
  updates: Partial<Relationship>
427
469
  ): Promise<Relationship | null> {
428
- const doc = await RelationshipModel.findByIdAndUpdate(
429
- relationshipId,
470
+ const doc = await RelationshipModel.findOneAndUpdate(
471
+ { _id: relationshipId, channelId: requireChannelId(channelId, 'updateRelationship') },
430
472
  { $set: updates },
431
473
  { new: true }
432
474
  );
433
475
  return doc ? toRelationshipObject(doc) : null;
434
476
  }
435
477
 
436
- async deleteRelationship(relationshipId: string): Promise<boolean> {
437
- const result = await RelationshipModel.deleteOne({ _id: relationshipId });
478
+ async deleteRelationship(relationshipId: string, channelId: ChannelId): Promise<boolean> {
479
+ const result = await RelationshipModel.deleteOne({
480
+ _id: relationshipId,
481
+ channelId: requireChannelId(channelId, 'deleteRelationship')
482
+ });
438
483
  return result.deletedCount > 0;
439
484
  }
440
485
 
@@ -497,7 +542,8 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
497
542
  entityType?: EntityType | EntityType[];
498
543
  maxDepth?: number;
499
544
  limit?: number;
500
- }
545
+ },
546
+ channelId?: ChannelId
501
547
  ): Promise<{ entities: Entity[]; relationships: Relationship[] }> {
502
548
  const direction = options?.direction || 'both';
503
549
  const limit = options?.limit || 100;
@@ -519,6 +565,9 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
519
565
  ? { $in: options.relationshipType }
520
566
  : options.relationshipType;
521
567
  }
568
+ if (channelId) {
569
+ relationshipQuery.channelId = channelId;
570
+ }
522
571
 
523
572
  const relationships = await RelationshipModel.find(relationshipQuery)
524
573
  .limit(limit)
@@ -533,6 +582,7 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
533
582
  let entityQuery: any = {
534
583
  _id: { $in: Array.from(neighborIds) },
535
584
  merged: false,
585
+ ...(channelId ? { channelId } : {})
536
586
  };
537
587
 
538
588
  if (options?.entityType) {
@@ -542,19 +592,37 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
542
592
  }
543
593
 
544
594
  const entities = await EntityModel.find(entityQuery).lean();
595
+ const scopedEntities = entities.map(doc => toEntityObject(doc as unknown as IEntity));
596
+ const scopedEntityIds = new Set<string>([
597
+ entityId,
598
+ ...scopedEntities.map(entity => entity.id)
599
+ ]);
600
+ const scopedRelationships = relationships
601
+ .map(doc => toRelationshipObject(doc as unknown as IRelationship))
602
+ .filter(relationship => (
603
+ scopedEntityIds.has(relationship.fromEntityId) &&
604
+ scopedEntityIds.has(relationship.toEntityId)
605
+ ));
545
606
 
546
607
  return {
547
- entities: entities.map((doc: any) => toEntityObject(doc as IEntity)),
548
- relationships: relationships.map((doc: any) => toRelationshipObject(doc as IRelationship)),
608
+ entities: scopedEntities,
609
+ relationships: scopedRelationships,
549
610
  };
550
611
  }
551
612
 
552
613
  async findPath(
553
614
  fromEntityId: string,
554
615
  toEntityId: string,
555
- maxHops?: number
616
+ maxHops?: number,
617
+ channelId?: ChannelId
556
618
  ): Promise<GraphPath | null> {
557
- const paths = await this.findAllPaths(fromEntityId, toEntityId, maxHops, 1);
619
+ const paths = await this.findAllPaths(
620
+ fromEntityId,
621
+ toEntityId,
622
+ maxHops,
623
+ 1,
624
+ channelId
625
+ );
558
626
  return paths.length > 0 ? paths[0] : null;
559
627
  }
560
628
 
@@ -562,7 +630,8 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
562
630
  fromEntityId: string,
563
631
  toEntityId: string,
564
632
  maxHops?: number,
565
- limit?: number
633
+ limit?: number,
634
+ channelId?: ChannelId
566
635
  ): Promise<GraphPath[]> {
567
636
  const maxDepth = maxHops ?? 5;
568
637
  const maxPaths = limit ?? 10;
@@ -613,6 +682,7 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
613
682
  // Get outgoing relationships
614
683
  const rels = await RelationshipModel.find({
615
684
  fromEntityId: current.currentId,
685
+ ...(channelId ? { channelId } : {})
616
686
  }).lean();
617
687
 
618
688
  for (const rel of rels) {
@@ -687,7 +757,8 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
687
757
  async getSubgraph(
688
758
  entityId: string,
689
759
  depth?: number,
690
- limit?: number
760
+ limit?: number,
761
+ channelId?: ChannelId
691
762
  ): Promise<{ entities: Entity[]; relationships: Relationship[] }> {
692
763
  const maxDepth = depth ?? 2;
693
764
  const maxEntities = limit ?? 50;
@@ -703,7 +774,7 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
703
774
  for (const id of currentLevel) {
704
775
  const neighbors = await this.getNeighbors(id, {
705
776
  limit: Math.min(10, maxEntities - entityIds.size),
706
- });
777
+ }, channelId);
707
778
 
708
779
  for (const rel of neighbors.relationships) {
709
780
  if (!relationships.find((r) => r.id === rel.id)) {
@@ -724,6 +795,7 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
724
795
 
725
796
  const entities = await EntityModel.find({
726
797
  _id: { $in: Array.from(entityIds) },
798
+ ...(channelId ? { channelId } : {})
727
799
  }).lean();
728
800
 
729
801
  return {
@@ -736,24 +808,28 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
736
808
  // Batch Operations
737
809
  // ========================================================================
738
810
 
739
- async getEntitiesByIds(entityIds: string[]): Promise<Entity[]> {
811
+ async getEntitiesByIds(channelId: ChannelId, entityIds: string[]): Promise<Entity[]> {
812
+ const exactChannelId = requireChannelId(channelId, 'getEntitiesByIds');
740
813
  if (entityIds.length === 0) {
741
814
  return [];
742
815
  }
743
816
 
744
817
  const docs = await EntityModel.find({
745
818
  _id: { $in: entityIds },
819
+ channelId: exactChannelId,
746
820
  merged: false,
747
821
  }).lean();
748
822
  return docs.map((doc: any) => toEntityObject(doc as IEntity));
749
823
  }
750
824
 
751
- async getRelationshipsByEntityIds(entityIds: string[]): Promise<Relationship[]> {
825
+ async getRelationshipsByEntityIds(channelId: ChannelId, entityIds: string[]): Promise<Relationship[]> {
826
+ const exactChannelId = requireChannelId(channelId, 'getRelationshipsByEntityIds');
752
827
  if (entityIds.length === 0) {
753
828
  return [];
754
829
  }
755
830
 
756
831
  const docs = await RelationshipModel.find({
832
+ channelId: exactChannelId,
757
833
  $or: [
758
834
  { fromEntityId: { $in: entityIds } },
759
835
  { toEntityId: { $in: entityIds } },
@@ -792,11 +868,12 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
792
868
 
793
869
  async updateEntityQValue(
794
870
  entityId: string,
871
+ channelId: ChannelId,
795
872
  newQValue: number,
796
873
  reason: string
797
874
  ): Promise<Entity | null> {
798
- const doc = await EntityModel.findByIdAndUpdate(
799
- entityId,
875
+ const doc = await EntityModel.findOneAndUpdate(
876
+ { _id: entityId, channelId: requireChannelId(channelId, 'updateEntityQValue') },
800
877
  {
801
878
  $set: {
802
879
  'utility.qValue': newQValue,
@@ -814,11 +891,13 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
814
891
  }
815
892
 
816
893
  async batchUpdateQValues(
894
+ channelId: ChannelId,
817
895
  updates: Array<{ entityId: string; qValue: number; reason: string }>
818
896
  ): Promise<void> {
897
+ const exactChannelId = requireChannelId(channelId, 'batchUpdateQValues');
819
898
  const bulkOps = updates.map((update) => ({
820
899
  updateOne: {
821
- filter: { _id: update.entityId },
900
+ filter: { _id: update.entityId, channelId: exactChannelId },
822
901
  update: {
823
902
  $set: {
824
903
  'utility.qValue': update.qValue,
@@ -861,9 +940,9 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
861
940
  return docs.map((doc: any) => toEntityObject(doc as IEntity));
862
941
  }
863
942
 
864
- async incrementRetrievalCount(entityIds: string[]): Promise<void> {
943
+ async incrementRetrievalCount(channelId: ChannelId, entityIds: string[]): Promise<void> {
865
944
  await EntityModel.updateMany(
866
- { _id: { $in: entityIds } },
945
+ { _id: { $in: entityIds }, channelId: requireChannelId(channelId, 'incrementRetrievalCount') },
867
946
  {
868
947
  $inc: { 'utility.retrievalCount': 1 },
869
948
  $set: { 'utility.lastAccessedAt': Date.now() },
@@ -871,10 +950,10 @@ export class MongoKnowledgeGraphRepository implements IKnowledgeGraphRepository
871
950
  );
872
951
  }
873
952
 
874
- async recordOutcome(entityIds: string[], success: boolean): Promise<void> {
953
+ async recordOutcome(channelId: ChannelId, entityIds: string[], success: boolean): Promise<void> {
875
954
  const field = success ? 'utility.successCount' : 'utility.failureCount';
876
955
  await EntityModel.updateMany(
877
- { _id: { $in: entityIds } },
956
+ { _id: { $in: entityIds }, channelId: requireChannelId(channelId, 'recordOutcome') },
878
957
  { $inc: { [field]: 1 } }
879
958
  );
880
959
  }