@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
@@ -52,6 +52,7 @@
52
52
  */
53
53
 
54
54
  import { v4 as uuidv4 } from 'uuid';
55
+ import type { Subscription } from 'rxjs';
55
56
  import { Logger } from '../../utils/Logger.js';
56
57
  import { EventBus } from '../../events/EventBus.js';
57
58
  import { Events, ControlLoopEvents } from '../../events/EventNames.js';
@@ -94,6 +95,8 @@ export class OrparMemoryCoordinator {
94
95
  private static instance: OrparMemoryCoordinator;
95
96
  private logger: Logger;
96
97
  private enabled: boolean = false;
98
+ private initialized: boolean = false;
99
+ private eventSubscriptions: Subscription[] = [];
97
100
 
98
101
  // Component services
99
102
  private phaseStrataRouter: PhaseStrataRouter;
@@ -112,6 +115,7 @@ export class OrparMemoryCoordinator {
112
115
  outcome: CycleOutcome;
113
116
  completedAt: number;
114
117
  }> = new Map();
118
+ private recentlyCompletedExpiryTimers: Map<string, NodeJS.Timeout> = new Map();
115
119
  private static readonly RECENTLY_COMPLETED_TTL_MS = 60_000;
116
120
 
117
121
  // Fix #2: Per-cycle locking to prevent race conditions
@@ -147,25 +151,36 @@ export class OrparMemoryCoordinator {
147
151
  * Initialize the coordinator and all component services
148
152
  */
149
153
  public initialize(): void {
154
+ if (this.initialized) {
155
+ return;
156
+ }
157
+
150
158
  this.enabled = isOrparMemoryIntegrationEnabled();
151
159
 
152
160
  if (this.enabled) {
153
- // Initialize all component services
154
- this.phaseStrataRouter.initialize();
155
- this.surpriseAdapter.initialize();
156
- this.phaseRewarder.initialize();
157
- this.consolidationTrigger.initialize();
158
- this.memoryOperations.initialize();
159
-
160
- // Setup event listeners
161
- this.setupEventListeners();
162
-
163
- // Fix #3: Start stale cycle cleanup
164
- this.startStaleCycleCleanup();
165
-
166
- this.logger.info('[OrparMemoryCoordinator] Initialized with ORPAR-Memory integration ENABLED');
167
- this.logger.info('[OrparMemoryCoordinator] All component services initialized');
161
+ try {
162
+ // Initialize all component services
163
+ this.phaseStrataRouter.initialize();
164
+ this.surpriseAdapter.initialize();
165
+ this.phaseRewarder.initialize();
166
+ this.consolidationTrigger.initialize();
167
+ this.memoryOperations.initialize();
168
+
169
+ // Setup event listeners
170
+ this.setupEventListeners();
171
+
172
+ // Fix #3: Start stale cycle cleanup
173
+ this.startStaleCycleCleanup();
174
+ this.initialized = true;
175
+
176
+ this.logger.info('[OrparMemoryCoordinator] Initialized with ORPAR-Memory integration ENABLED');
177
+ this.logger.info('[OrparMemoryCoordinator] All component services initialized');
178
+ } catch (error) {
179
+ this.shutdown();
180
+ throw error;
181
+ }
168
182
  } else {
183
+ this.initialized = true;
169
184
  this.logger.info(
170
185
  '[OrparMemoryCoordinator] ORPAR-Memory integration is DISABLED. ' +
171
186
  'Enable with ORPAR_MEMORY_INTEGRATION_ENABLED=true'
@@ -284,46 +299,58 @@ export class OrparMemoryCoordinator {
284
299
  */
285
300
  private setupEventListeners(): void {
286
301
  // Listen to control loop events to track cycle phases (server-side ControlLoop)
287
- EventBus.server.on(ControlLoopEvents.OBSERVATION, (payload: any) => {
288
- this.onPhaseEvent('observation', payload, 'controlLoop');
289
- });
290
-
291
- EventBus.server.on(ControlLoopEvents.REASONING, (payload: any) => {
292
- this.onPhaseEvent('reasoning', payload, 'controlLoop');
293
- });
294
-
295
- EventBus.server.on(ControlLoopEvents.PLAN, (payload: any) => {
296
- this.onPhaseEvent('planning', payload, 'controlLoop');
297
- });
298
-
299
- EventBus.server.on(ControlLoopEvents.EXECUTION, (payload: any) => {
300
- this.onPhaseEvent('action', payload, 'controlLoop');
301
- });
302
-
303
- EventBus.server.on(ControlLoopEvents.REFLECTION, (payload: any) => {
304
- this.onPhaseEvent('reflection', payload, 'controlLoop');
305
- });
302
+ this.eventSubscriptions.push(
303
+ EventBus.server.on(ControlLoopEvents.OBSERVATION, payload => {
304
+ this.onPhaseEvent('observation', payload, 'controlLoop');
305
+ })
306
+ );
307
+ this.eventSubscriptions.push(
308
+ EventBus.server.on(ControlLoopEvents.REASONING, payload => {
309
+ this.onPhaseEvent('reasoning', payload, 'controlLoop');
310
+ })
311
+ );
312
+ this.eventSubscriptions.push(
313
+ EventBus.server.on(ControlLoopEvents.PLAN, payload => {
314
+ this.onPhaseEvent('planning', payload, 'controlLoop');
315
+ })
316
+ );
317
+ this.eventSubscriptions.push(
318
+ EventBus.server.on(ControlLoopEvents.EXECUTION, payload => {
319
+ this.onPhaseEvent('action', payload, 'controlLoop');
320
+ })
321
+ );
322
+ this.eventSubscriptions.push(
323
+ EventBus.server.on(ControlLoopEvents.REFLECTION, payload => {
324
+ this.onPhaseEvent('reflection', payload, 'controlLoop');
325
+ })
326
+ );
306
327
 
307
328
  // Listen to ORPAR tool events (agent-driven ORPAR tools)
308
- EventBus.server.on(OrparEvents.OBSERVE, (payload: any) => {
309
- this.onOrparToolEvent('observation', payload);
310
- });
311
-
312
- EventBus.server.on(OrparEvents.REASON, (payload: any) => {
313
- this.onOrparToolEvent('reasoning', payload);
314
- });
315
-
316
- EventBus.server.on(OrparEvents.PLAN, (payload: any) => {
317
- this.onOrparToolEvent('planning', payload);
318
- });
319
-
320
- EventBus.server.on(OrparEvents.ACT, (payload: any) => {
321
- this.onOrparToolEvent('action', payload);
322
- });
323
-
324
- EventBus.server.on(OrparEvents.REFLECT, (payload: any) => {
325
- this.onOrparToolEvent('reflection', payload);
326
- });
329
+ this.eventSubscriptions.push(
330
+ EventBus.server.on(OrparEvents.OBSERVE, payload => {
331
+ this.onOrparToolEvent('observation', payload);
332
+ })
333
+ );
334
+ this.eventSubscriptions.push(
335
+ EventBus.server.on(OrparEvents.REASON, payload => {
336
+ this.onOrparToolEvent('reasoning', payload);
337
+ })
338
+ );
339
+ this.eventSubscriptions.push(
340
+ EventBus.server.on(OrparEvents.PLAN, payload => {
341
+ this.onOrparToolEvent('planning', payload);
342
+ })
343
+ );
344
+ this.eventSubscriptions.push(
345
+ EventBus.server.on(OrparEvents.ACT, payload => {
346
+ this.onOrparToolEvent('action', payload);
347
+ })
348
+ );
349
+ this.eventSubscriptions.push(
350
+ EventBus.server.on(OrparEvents.REFLECT, payload => {
351
+ this.onOrparToolEvent('reflection', payload);
352
+ })
353
+ );
327
354
 
328
355
  // Fill phase memory usage from actual retrievals.
329
356
  //
@@ -333,19 +360,26 @@ export class OrparMemoryCoordinator {
333
360
  // therefore always empty, so PhaseWeightedRewarder returned no rewards and cycle
334
361
  // consolidation iterated zero memories. Subscribing here is what makes
335
362
  // phase-weighted rewards real.
336
- EventBus.server.on(OrparMemoryEvents.PHASE_MEMORY_RETRIEVED, (payload: any) => {
337
- if (this.enabled) {
338
- this.onPhaseMemoryRetrieved(payload);
339
- }
340
- });
363
+ this.eventSubscriptions.push(
364
+ EventBus.server.on(OrparMemoryEvents.PHASE_MEMORY_RETRIEVED, payload => {
365
+ if (this.enabled) {
366
+ this.onPhaseMemoryRetrieved(payload);
367
+ }
368
+ })
369
+ );
341
370
 
342
371
  // Listen for task completion to retroactively update rewards when
343
372
  // the ORPAR cycle completed before task_complete was called
344
- EventBus.server.on(Events.Task.COMPLETED, (payload: any) => {
345
- if (this.enabled) {
346
- this.onTaskCompleted(payload);
347
- }
348
- });
373
+ this.eventSubscriptions.push(
374
+ EventBus.server.on(Events.Task.COMPLETED, (payload): Promise<void> | undefined => {
375
+ if (this.enabled) {
376
+ // Return the persistence chain so EventBus.drain() keeps the
377
+ // database open until retroactive Q-value updates finish.
378
+ return this.onTaskCompleted(payload);
379
+ }
380
+ return undefined;
381
+ })
382
+ );
349
383
 
350
384
  this.logger.debug('[OrparMemoryCoordinator] Event listeners registered for ControlLoop, OrparTools, PhaseMemory, and TaskEvents');
351
385
  }
@@ -688,9 +722,7 @@ export class OrparMemoryCoordinator {
688
722
  outcome,
689
723
  completedAt: Date.now(),
690
724
  });
691
- setTimeout(() => {
692
- this.recentlyCompletedCycles.delete(cacheKey);
693
- }, OrparMemoryCoordinator.RECENTLY_COMPLETED_TTL_MS);
725
+ this.scheduleRecentlyCompletedExpiry(cacheKey);
694
726
  }
695
727
 
696
728
  // Remove from active cycles
@@ -718,7 +750,7 @@ export class OrparMemoryCoordinator {
718
750
 
719
751
  // Already successful — no recalculation needed
720
752
  if (cached.outcome.success) {
721
- this.recentlyCompletedCycles.delete(cacheKey);
753
+ this.clearRecentlyCompletedCycle(cacheKey);
722
754
  return;
723
755
  }
724
756
 
@@ -749,7 +781,30 @@ export class OrparMemoryCoordinator {
749
781
  );
750
782
  }
751
783
 
784
+ this.clearRecentlyCompletedCycle(cacheKey);
785
+ }
786
+
787
+ private scheduleRecentlyCompletedExpiry(cacheKey: string): void {
788
+ const existingTimer = this.recentlyCompletedExpiryTimers.get(cacheKey);
789
+ if (existingTimer) {
790
+ clearTimeout(existingTimer);
791
+ }
792
+
793
+ const expiryTimer = setTimeout(() => {
794
+ this.recentlyCompletedCycles.delete(cacheKey);
795
+ this.recentlyCompletedExpiryTimers.delete(cacheKey);
796
+ }, OrparMemoryCoordinator.RECENTLY_COMPLETED_TTL_MS);
797
+ expiryTimer.unref();
798
+ this.recentlyCompletedExpiryTimers.set(cacheKey, expiryTimer);
799
+ }
800
+
801
+ private clearRecentlyCompletedCycle(cacheKey: string): void {
752
802
  this.recentlyCompletedCycles.delete(cacheKey);
803
+ const expiryTimer = this.recentlyCompletedExpiryTimers.get(cacheKey);
804
+ if (expiryTimer) {
805
+ clearTimeout(expiryTimer);
806
+ this.recentlyCompletedExpiryTimers.delete(cacheKey);
807
+ }
753
808
  }
754
809
 
755
810
  // =========================================================================
@@ -1050,11 +1105,21 @@ export class OrparMemoryCoordinator {
1050
1105
  ].join('\n');
1051
1106
  }
1052
1107
 
1053
- /**
1054
- * Reset the coordinator (useful for testing)
1055
- */
1056
- public reset(): void {
1108
+ /** Release all coordinator-owned process resources and runtime state. */
1109
+ public shutdown(): void {
1057
1110
  this.enabled = false;
1111
+ this.initialized = false;
1112
+
1113
+ for (const subscription of this.eventSubscriptions) {
1114
+ subscription.unsubscribe();
1115
+ }
1116
+ this.eventSubscriptions = [];
1117
+
1118
+ for (const expiryTimer of this.recentlyCompletedExpiryTimers.values()) {
1119
+ clearTimeout(expiryTimer);
1120
+ }
1121
+ this.recentlyCompletedExpiryTimers.clear();
1122
+
1058
1123
  this.activeCycles.clear();
1059
1124
  this.recentlyCompletedCycles.clear();
1060
1125
 
@@ -1070,7 +1135,13 @@ export class OrparMemoryCoordinator {
1070
1135
  this.phaseRewarder.reset();
1071
1136
  this.consolidationTrigger.reset();
1072
1137
  this.memoryOperations.reset();
1138
+ }
1073
1139
 
1140
+ /**
1141
+ * Reset the coordinator and its cached configuration (useful for testing).
1142
+ */
1143
+ public reset(): void {
1144
+ this.shutdown();
1074
1145
  // Reset config
1075
1146
  resetOrparMemoryConfig();
1076
1147
  }
@@ -35,6 +35,7 @@
35
35
  */
36
36
 
37
37
  import { createBaseEventPayload } from '../../schemas/EventPayloadSchema.js';
38
+ import type { Subscription } from 'rxjs';
38
39
  import { Logger } from '../../utils/Logger.js';
39
40
  import { EventBus } from '../../events/EventBus.js';
40
41
  import {
@@ -87,6 +88,7 @@ export class SurpriseOrparAdapter {
87
88
  private logger: Logger;
88
89
  private enabled: boolean = false;
89
90
  private thresholds: SurpriseThresholds;
91
+ private graphSurpriseSubscription?: Subscription;
90
92
 
91
93
  // Track surprise momentum per agent/cycle
92
94
  private surpriseMomentum: Map<string, number[]> = new Map();
@@ -137,13 +139,18 @@ export class SurpriseOrparAdapter {
137
139
  * observation cycles.
138
140
  */
139
141
  private setupGraphSurpriseListener(): void {
142
+ if (this.graphSurpriseSubscription && !this.graphSurpriseSubscription.closed) {
143
+ return;
144
+ }
145
+ this.graphSurpriseSubscription = undefined;
146
+
140
147
  // Only set up listener if Knowledge Graph surprise detection is enabled
141
148
  if (!isKnowledgeGraphEnabled() || !isSurpriseDetectionEnabled()) {
142
149
  this.logger.debug('[SurpriseOrparAdapter] Knowledge Graph surprise integration disabled');
143
150
  return;
144
151
  }
145
152
 
146
- EventBus.server.on(
153
+ this.graphSurpriseSubscription = EventBus.server.on(
147
154
  KnowledgeGraphEvents.HIGH_SURPRISE_RELATIONSHIP,
148
155
  (payload: { data: HighSurpriseRelationshipEventData; agentId?: AgentId; channelId?: ChannelId }) => {
149
156
  this.handleGraphSurpriseEvent(payload);
@@ -567,6 +574,8 @@ export class SurpriseOrparAdapter {
567
574
  */
568
575
  public reset(): void {
569
576
  this.enabled = false;
577
+ this.graphSurpriseSubscription?.unsubscribe();
578
+ this.graphSurpriseSubscription = undefined;
570
579
  this.surpriseMomentum.clear();
571
580
  }
572
581
  }
@@ -272,12 +272,14 @@ export interface IChannelContextService {
272
272
  * @param channelId - Channel ID
273
273
  * @param context - Channel context to save
274
274
  * @param historyEntry - Optional history entry to record with this update
275
+ * @param expectedContextUpdatedAt - Persisted revision required for an update
275
276
  * @returns Observable of the saved context
276
277
  */
277
278
  saveContextToMemory(
278
279
  channelId: ChannelId,
279
280
  context: ChannelContextType,
280
- historyEntry?: ChannelContextHistoryEntry
281
+ historyEntry?: ChannelContextHistoryEntry,
282
+ expectedContextUpdatedAt?: number
281
283
  ): Observable<ChannelContextType>;
282
284
 
283
285
  /**
@@ -125,6 +125,9 @@ export interface TaskEffectivenessMetrics {
125
125
  export interface TaskDefinition {
126
126
  /** Unique task identifier */
127
127
  taskId: string;
128
+
129
+ /** Agent that owns this effectiveness record */
130
+ agentId: AgentId;
128
131
 
129
132
  /** Channel where task is executed */
130
133
  channelId: ChannelId;
@@ -267,9 +270,10 @@ export interface EffectivenessAnalytics {
267
270
  export interface TaskExecutionEvent {
268
271
  eventId: string;
269
272
  taskId: string;
273
+ agentId: AgentId;
274
+ channelId: ChannelId;
270
275
  timestamp: number;
271
276
  type: 'start' | 'step' | 'tool_use' | 'agent_join' | 'human_input' | 'error' | 'complete';
272
- agentId?: AgentId;
273
277
  details: Record<string, any>;
274
278
  }
275
279
 
@@ -300,4 +304,4 @@ export interface EffectivenessConfig {
300
304
  enabled: boolean;
301
305
  defaultBaselineType?: 'human' | 'previous_run' | 'traditional_method';
302
306
  };
303
- }
307
+ }
@@ -46,6 +46,7 @@ export interface SystemLLMEvalCompletion {
46
46
  objectives: string[]; // What needs to be achieved
47
47
  evaluationInterval: number; // How often to check (ms)
48
48
  confidenceThreshold: number; // 0-1, required confidence
49
+ maxEvaluations: number; // Hard provider-call budget
49
50
  }
50
51
 
51
52
  export interface OutputBasedCompletion {
@@ -67,7 +68,7 @@ export interface TimeBasedCompletion {
67
68
  export interface EventBasedCompletion {
68
69
  type: 'event-based';
69
70
  eventName: string; // Event that triggers completion
70
- eventData?: Record<string, any>; // Optional data to match
71
+ eventData?: Record<string, unknown>; // Optional data to match
71
72
  }
72
73
 
73
74
  export interface ConsensusCompletion {
@@ -79,7 +80,7 @@ export interface ConsensusCompletion {
79
80
  export interface CustomCompletion {
80
81
  type: 'custom';
81
82
  evaluatorFunction: string; // Name of custom evaluator
82
- parameters?: Record<string, any>;
83
+ parameters?: Record<string, unknown>;
83
84
  }
84
85
 
85
86
  export type TaskCompletionCriteria =
@@ -98,12 +99,9 @@ export interface TaskCompletionConfig {
98
99
  // Primary completion strategy
99
100
  primary: TaskCompletionCriteria;
100
101
 
101
- // Fallback strategies if primary doesn't complete
102
- fallbacks?: TaskCompletionCriteria[];
103
-
104
- // Global timeout (applies to all strategies)
102
+ // Optional hard deadline. A deadline may fail a task; it can never manufacture completion.
105
103
  absoluteTimeout?: number;
106
- timeoutBehavior?: 'complete' | 'fail' | 'alert';
104
+ timeoutBehavior?: 'fail';
107
105
 
108
106
  // Whether agents can still manually complete
109
107
  allowManualCompletion?: boolean;
@@ -111,6 +109,8 @@ export interface TaskCompletionConfig {
111
109
 
112
110
  export interface TaskMonitoringState {
113
111
  taskId: string;
112
+ channelId: string;
113
+ assignedAgentIds: string[];
114
114
  startTime: number;
115
115
  lastActivityTime: number;
116
116
  activityCount: number;
@@ -125,7 +125,7 @@ export interface TaskMonitoringState {
125
125
  toolCalls: Array<{
126
126
  agentId: string;
127
127
  toolName: string;
128
- result: any;
128
+ result: unknown;
129
129
  timestamp: number;
130
130
  }>;
131
131
  planProgress?: {
@@ -160,4 +160,4 @@ export interface TaskCompletionEvent {
160
160
  confidence: number;
161
161
  reason: string;
162
162
  duration: number;
163
- }
163
+ }
@@ -77,6 +77,7 @@ export interface ChannelTask {
77
77
  // Task coordination
78
78
  coordinationMode?: 'independent' | 'collaborative' | 'sequential' | 'hierarchical';
79
79
  leadAgentId?: AgentId; // Primary coordinator for collaborative tasks
80
+ completionAgentId?: AgentId; // Agent authorized to report the terminal outcome
80
81
 
81
82
  // Agent selection criteria
82
83
  agentSelectionCriteria?: {
@@ -147,6 +148,7 @@ export interface CreateTaskRequest {
147
148
  // Task coordination
148
149
  coordinationMode?: 'independent' | 'collaborative' | 'sequential' | 'hierarchical';
149
150
  leadAgentId?: AgentId; // Primary coordinator for collaborative tasks
151
+ completionAgentId?: AgentId; // Agent authorized to report the terminal outcome
150
152
 
151
153
  // Agent selection criteria
152
154
  agentSelectionCriteria?: {
@@ -176,6 +178,16 @@ export interface UpdateTaskRequest {
176
178
  tags?: string[];
177
179
  }
178
180
 
181
+ /**
182
+ * Fields that may be changed without performing a task lifecycle transition.
183
+ * Status and assignment changes go through dedicated operations so actor
184
+ * authorization and legal-state predicates remain on the database write.
185
+ */
186
+ export type NonLifecycleTaskUpdateRequest = Omit<
187
+ UpdateTaskRequest,
188
+ 'status' | 'assignedAgentId'
189
+ >;
190
+
179
191
  /**
180
192
  * Agent assignment analysis from SystemLLM
181
193
  */
@@ -275,7 +287,6 @@ export interface TaskOrchestrationConfig {
275
287
  // SystemLLM integration
276
288
  enableLlmAssignment: boolean;
277
289
  llmConfidenceThreshold: number; // Minimum confidence for LLM assignments
278
- fallbackStrategy: AssignmentStrategy;
279
290
 
280
291
  // Coordination behavior
281
292
  enableTaskDependencies: boolean;
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Glob matching for relative file paths without regular expressions.
3
+ *
4
+ * Supported syntax:
5
+ * - `*` any run of characters inside one path segment (never crosses `/`)
6
+ * - `?` exactly one character inside a path segment
7
+ * - `**` as a whole segment: zero or more whole directories. A `**` that
8
+ * is part of a larger segment behaves like `*`.
9
+ * Every other character is literal, including regex metacharacters.
10
+ *
11
+ * The matcher walks the pattern and the candidate with a single backtrack
12
+ * point per wildcard, so cost is bounded by pattern length × candidate
13
+ * length. A compiled regular expression is not used because patterns such
14
+ * as `*a*a*a*b` made the engine backtrack for seconds per file name, and
15
+ * the filesystem walk runs the matcher once per directory entry on the
16
+ * server's event loop.
17
+ */
18
+
19
+ /** Upper bound on `*` runs plus `?` characters in one pattern. */
20
+ export const MAX_GLOB_WILDCARDS = 32;
21
+
22
+ export interface GlobMatcher {
23
+ /**
24
+ * True when the pattern contains a path separator. Such a pattern must
25
+ * be tested against a relative path; a pattern without one addresses a
26
+ * bare file name.
27
+ */
28
+ readonly matchesPath: boolean;
29
+ /** Return true when `candidate` (segments separated by `/`) matches the whole pattern. */
30
+ test(candidate: string): boolean;
31
+ }
32
+
33
+ type PatternSegment =
34
+ | { readonly kind: 'globstar' }
35
+ | { readonly kind: 'segment'; readonly text: string };
36
+
37
+ const countWildcards = (pattern: string): number => {
38
+ let wildcards = 0;
39
+ for (let index = 0; index < pattern.length; index += 1) {
40
+ const character = pattern[index];
41
+ if (character === '?') {
42
+ wildcards += 1;
43
+ } else if (character === '*' && pattern[index - 1] !== '*') {
44
+ wildcards += 1;
45
+ }
46
+ }
47
+ return wildcards;
48
+ };
49
+
50
+ /**
51
+ * Match one path segment against a segment pattern containing `*` and `?`.
52
+ * Classic greedy wildcard matching with one backtrack point: O(p × t).
53
+ */
54
+ const matchSegment = (pattern: string, text: string): boolean => {
55
+ let patternIndex = 0;
56
+ let textIndex = 0;
57
+ let starIndex = -1;
58
+ let starTextIndex = -1;
59
+
60
+ while (textIndex < text.length) {
61
+ const patternCharacter = pattern[patternIndex];
62
+ if (patternIndex < pattern.length &&
63
+ (patternCharacter === '?' || patternCharacter === text[textIndex])) {
64
+ patternIndex += 1;
65
+ textIndex += 1;
66
+ } else if (patternIndex < pattern.length && patternCharacter === '*') {
67
+ starIndex = patternIndex;
68
+ starTextIndex = textIndex;
69
+ patternIndex += 1;
70
+ } else if (starIndex !== -1) {
71
+ patternIndex = starIndex + 1;
72
+ starTextIndex += 1;
73
+ textIndex = starTextIndex;
74
+ } else {
75
+ return false;
76
+ }
77
+ }
78
+
79
+ while (patternIndex < pattern.length && pattern[patternIndex] === '*') {
80
+ patternIndex += 1;
81
+ }
82
+ return patternIndex === pattern.length;
83
+ };
84
+
85
+ /**
86
+ * Match path segments against pattern segments. A `globstar` pattern
87
+ * segment plays the role `*` plays inside a segment: it absorbs zero or
88
+ * more whole path segments, with one backtrack point.
89
+ */
90
+ const matchSegments = (
91
+ patternSegments: readonly PatternSegment[],
92
+ pathSegments: readonly string[]
93
+ ): boolean => {
94
+ let patternIndex = 0;
95
+ let pathIndex = 0;
96
+ let globstarIndex = -1;
97
+ let globstarPathIndex = -1;
98
+
99
+ while (pathIndex < pathSegments.length) {
100
+ const patternSegment = patternSegments[patternIndex];
101
+ if (patternIndex < patternSegments.length && patternSegment.kind === 'globstar') {
102
+ globstarIndex = patternIndex;
103
+ globstarPathIndex = pathIndex;
104
+ patternIndex += 1;
105
+ } else if (patternIndex < patternSegments.length &&
106
+ patternSegment.kind === 'segment' &&
107
+ matchSegment(patternSegment.text, pathSegments[pathIndex])) {
108
+ patternIndex += 1;
109
+ pathIndex += 1;
110
+ } else if (globstarIndex !== -1) {
111
+ patternIndex = globstarIndex + 1;
112
+ globstarPathIndex += 1;
113
+ pathIndex = globstarPathIndex;
114
+ } else {
115
+ return false;
116
+ }
117
+ }
118
+
119
+ while (patternIndex < patternSegments.length &&
120
+ patternSegments[patternIndex].kind === 'globstar') {
121
+ patternIndex += 1;
122
+ }
123
+ return patternIndex === patternSegments.length;
124
+ };
125
+
126
+ /**
127
+ * Compile a glob pattern into a matcher.
128
+ *
129
+ * @throws Error when the pattern is empty or uses more than
130
+ * {@link MAX_GLOB_WILDCARDS} wildcards.
131
+ */
132
+ export function createGlobMatcher(pattern: string, caseSensitive: boolean): GlobMatcher {
133
+ if (typeof pattern !== 'string' || pattern.length === 0) {
134
+ throw new Error('Glob pattern must be a non-empty string');
135
+ }
136
+
137
+ const wildcards = countWildcards(pattern);
138
+ if (wildcards > MAX_GLOB_WILDCARDS) {
139
+ throw new Error(
140
+ `Glob pattern uses ${wildcards} wildcards; at most ${MAX_GLOB_WILDCARDS} are supported`
141
+ );
142
+ }
143
+
144
+ const normalizedPattern = caseSensitive ? pattern : pattern.toLowerCase();
145
+ const patternSegments: PatternSegment[] = normalizedPattern.split('/').map(segment => (
146
+ segment === '**' ? { kind: 'globstar' } : { kind: 'segment', text: segment }
147
+ ));
148
+ const matchesPath = pattern.includes('/');
149
+
150
+ return {
151
+ matchesPath,
152
+ test(candidate: string): boolean {
153
+ const normalizedCandidate = caseSensitive ? candidate : candidate.toLowerCase();
154
+ return matchSegments(patternSegments, normalizedCandidate.split('/'));
155
+ }
156
+ };
157
+ }