@mxf-dev/core 1.0.1 → 2.0.1

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 (303) hide show
  1. package/README.md +18 -0
  2. package/dist/adapters/FrameworkAdapter.js +1 -1
  3. package/dist/adapters/FrameworkAdapter.js.map +1 -1
  4. package/dist/config/ConfigManager.d.ts +9 -8
  5. package/dist/config/ConfigManager.d.ts.map +1 -1
  6. package/dist/config/ConfigManager.js +47 -17
  7. package/dist/config/ConfigManager.js.map +1 -1
  8. package/dist/config/memory-strata.config.d.ts +25 -0
  9. package/dist/config/memory-strata.config.d.ts.map +1 -0
  10. package/dist/config/memory-strata.config.js +107 -0
  11. package/dist/config/memory-strata.config.js.map +1 -0
  12. package/dist/constants/ToolNames.d.ts +1 -29
  13. package/dist/constants/ToolNames.d.ts.map +1 -1
  14. package/dist/constants/ToolNames.js +4 -17
  15. package/dist/constants/ToolNames.js.map +1 -1
  16. package/dist/database/DatabaseAdapterFactory.d.ts +14 -2
  17. package/dist/database/DatabaseAdapterFactory.d.ts.map +1 -1
  18. package/dist/database/DatabaseAdapterFactory.js +21 -6
  19. package/dist/database/DatabaseAdapterFactory.js.map +1 -1
  20. package/dist/database/adapters/mongodb/MongoBaseRepository.d.ts +7 -1
  21. package/dist/database/adapters/mongodb/MongoBaseRepository.d.ts.map +1 -1
  22. package/dist/database/adapters/mongodb/MongoBaseRepository.js +12 -2
  23. package/dist/database/adapters/mongodb/MongoBaseRepository.js.map +1 -1
  24. package/dist/events/ClientEventBus.d.ts +16 -77
  25. package/dist/events/ClientEventBus.d.ts.map +1 -1
  26. package/dist/events/ClientEventBus.js +38 -311
  27. package/dist/events/ClientEventBus.js.map +1 -1
  28. package/dist/events/EventBus.d.ts +1 -1
  29. package/dist/events/EventBus.d.ts.map +1 -1
  30. package/dist/events/EventBus.js +5 -4
  31. package/dist/events/EventBus.js.map +1 -1
  32. package/dist/events/EventBusBase.d.ts +139 -34
  33. package/dist/events/EventBusBase.d.ts.map +1 -1
  34. package/dist/events/EventBusBase.js +366 -88
  35. package/dist/events/EventBusBase.js.map +1 -1
  36. package/dist/events/EventNames.d.ts +10 -1
  37. package/dist/events/EventNames.d.ts.map +1 -1
  38. package/dist/events/EventNames.js +3 -0
  39. package/dist/events/EventNames.js.map +1 -1
  40. package/dist/events/PublicEvents.d.ts +6 -2
  41. package/dist/events/PublicEvents.d.ts.map +1 -1
  42. package/dist/events/PublicEvents.js +7 -4
  43. package/dist/events/PublicEvents.js.map +1 -1
  44. package/dist/events/ServerEventBus.d.ts +23 -112
  45. package/dist/events/ServerEventBus.d.ts.map +1 -1
  46. package/dist/events/ServerEventBus.js +58 -323
  47. package/dist/events/ServerEventBus.js.map +1 -1
  48. package/dist/events/event-definitions/LlmBudgetEvents.d.ts +68 -0
  49. package/dist/events/event-definitions/LlmBudgetEvents.d.ts.map +1 -0
  50. package/dist/events/event-definitions/LlmBudgetEvents.js +35 -0
  51. package/dist/events/event-definitions/LlmBudgetEvents.js.map +1 -0
  52. package/dist/interfaces/IMemoryPersistence.d.ts +41 -0
  53. package/dist/interfaces/IMemoryPersistence.d.ts.map +1 -0
  54. package/dist/interfaces/IMemoryPersistence.js +15 -0
  55. package/dist/interfaces/IMemoryPersistence.js.map +1 -0
  56. package/dist/middleware/MxpMiddleware.d.ts +8 -1
  57. package/dist/middleware/MxpMiddleware.d.ts.map +1 -1
  58. package/dist/middleware/MxpMiddleware.js +42 -20
  59. package/dist/middleware/MxpMiddleware.js.map +1 -1
  60. package/dist/models/channelKey.d.ts +1 -0
  61. package/dist/models/channelKey.d.ts.map +1 -1
  62. package/dist/models/channelKey.js +5 -0
  63. package/dist/models/channelKey.js.map +1 -1
  64. package/dist/models/memoryUtility.d.ts +39 -0
  65. package/dist/models/memoryUtility.d.ts.map +1 -0
  66. package/dist/models/memoryUtility.js +39 -0
  67. package/dist/models/memoryUtility.js.map +1 -0
  68. package/dist/models/user.d.ts.map +1 -1
  69. package/dist/models/user.js +23 -1
  70. package/dist/models/user.js.map +1 -1
  71. package/dist/mxp/BinaryProtocolLayer.d.ts +24 -8
  72. package/dist/mxp/BinaryProtocolLayer.d.ts.map +1 -1
  73. package/dist/mxp/BinaryProtocolLayer.js +90 -103
  74. package/dist/mxp/BinaryProtocolLayer.js.map +1 -1
  75. package/dist/mxp/ContextCompressionEngine.d.ts +57 -10
  76. package/dist/mxp/ContextCompressionEngine.d.ts.map +1 -1
  77. package/dist/mxp/ContextCompressionEngine.js +170 -128
  78. package/dist/mxp/ContextCompressionEngine.js.map +1 -1
  79. package/dist/mxp/MxpTokenOptimizer.d.ts +7 -3
  80. package/dist/mxp/MxpTokenOptimizer.d.ts.map +1 -1
  81. package/dist/mxp/MxpTokenOptimizer.js +8 -5
  82. package/dist/mxp/MxpTokenOptimizer.js.map +1 -1
  83. package/dist/prompts/MxfAgentSystemPrompt.d.ts +1 -1
  84. package/dist/prompts/MxfAgentSystemPrompt.d.ts.map +1 -1
  85. package/dist/prompts/MxfAgentSystemPrompt.js +47 -57
  86. package/dist/prompts/MxfAgentSystemPrompt.js.map +1 -1
  87. package/dist/protocols/mcp/ToolError.d.ts +123 -0
  88. package/dist/protocols/mcp/ToolError.d.ts.map +1 -0
  89. package/dist/protocols/mcp/ToolError.js +108 -0
  90. package/dist/protocols/mcp/ToolError.js.map +1 -0
  91. package/dist/protocols/mcp/defineTool.d.ts +133 -0
  92. package/dist/protocols/mcp/defineTool.d.ts.map +1 -0
  93. package/dist/protocols/mcp/defineTool.js +236 -0
  94. package/dist/protocols/mcp/defineTool.js.map +1 -0
  95. package/dist/protocols/mcp/security/HttpTargetGuard.d.ts +38 -0
  96. package/dist/protocols/mcp/security/HttpTargetGuard.d.ts.map +1 -0
  97. package/dist/protocols/mcp/security/HttpTargetGuard.js +227 -0
  98. package/dist/protocols/mcp/security/HttpTargetGuard.js.map +1 -0
  99. package/dist/protocols/mcp/security/McpSecurityGuard.d.ts +9 -1
  100. package/dist/protocols/mcp/security/McpSecurityGuard.d.ts.map +1 -1
  101. package/dist/protocols/mcp/security/McpSecurityGuard.js +10 -2
  102. package/dist/protocols/mcp/security/McpSecurityGuard.js.map +1 -1
  103. package/dist/protocols/mcp/security/McpToolPolicy.d.ts +81 -0
  104. package/dist/protocols/mcp/security/McpToolPolicy.d.ts.map +1 -0
  105. package/dist/protocols/mcp/security/McpToolPolicy.js +202 -0
  106. package/dist/protocols/mcp/security/McpToolPolicy.js.map +1 -0
  107. package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts +51 -18
  108. package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts.map +1 -1
  109. package/dist/protocols/mcp/services/ExternalMcpServerManager.js +256 -283
  110. package/dist/protocols/mcp/services/ExternalMcpServerManager.js.map +1 -1
  111. package/dist/protocols/mcp/services/ExternalServerConfigs.d.ts +39 -6
  112. package/dist/protocols/mcp/services/ExternalServerConfigs.d.ts.map +1 -1
  113. package/dist/protocols/mcp/services/ExternalServerConfigs.js +76 -18
  114. package/dist/protocols/mcp/services/ExternalServerConfigs.js.map +1 -1
  115. package/dist/protocols/mcp/tools/AnalyticsTools.js +1 -1
  116. package/dist/protocols/mcp/tools/AnalyticsTools.js.map +1 -1
  117. package/dist/protocols/mcp/tools/CodeAnalysisTools.d.ts.map +1 -1
  118. package/dist/protocols/mcp/tools/CodeAnalysisTools.js +15 -0
  119. package/dist/protocols/mcp/tools/CodeAnalysisTools.js.map +1 -1
  120. package/dist/protocols/mcp/tools/EffectivenessTools.js +3 -3
  121. package/dist/protocols/mcp/tools/EffectivenessTools.js.map +1 -1
  122. package/dist/protocols/mcp/tools/GitTools.d.ts +9 -369
  123. package/dist/protocols/mcp/tools/GitTools.d.ts.map +1 -1
  124. package/dist/protocols/mcp/tools/GitTools.js +222 -517
  125. package/dist/protocols/mcp/tools/GitTools.js.map +1 -1
  126. package/dist/protocols/mcp/tools/InfrastructureTools.d.ts +56 -24
  127. package/dist/protocols/mcp/tools/InfrastructureTools.d.ts.map +1 -1
  128. package/dist/protocols/mcp/tools/InfrastructureTools.js +117 -26
  129. package/dist/protocols/mcp/tools/InfrastructureTools.js.map +1 -1
  130. package/dist/protocols/mcp/tools/MemorySearchTools.d.ts +0 -3
  131. package/dist/protocols/mcp/tools/MemorySearchTools.d.ts.map +1 -1
  132. package/dist/protocols/mcp/tools/MemorySearchTools.js +58 -1
  133. package/dist/protocols/mcp/tools/MemorySearchTools.js.map +1 -1
  134. package/dist/protocols/mcp/tools/OrparTools.d.ts +8 -0
  135. package/dist/protocols/mcp/tools/OrparTools.d.ts.map +1 -1
  136. package/dist/protocols/mcp/tools/OrparTools.js +66 -0
  137. package/dist/protocols/mcp/tools/OrparTools.js.map +1 -1
  138. package/dist/protocols/mcp/tools/SafetyTools.d.ts +7 -525
  139. package/dist/protocols/mcp/tools/SafetyTools.d.ts.map +1 -1
  140. package/dist/protocols/mcp/tools/SafetyTools.js +349 -514
  141. package/dist/protocols/mcp/tools/SafetyTools.js.map +1 -1
  142. package/dist/protocols/mcp/tools/TaskPlanningTools.d.ts.map +1 -1
  143. package/dist/protocols/mcp/tools/TaskPlanningTools.js +56 -26
  144. package/dist/protocols/mcp/tools/TaskPlanningTools.js.map +1 -1
  145. package/dist/protocols/mcp/tools/TestTools.d.ts +15 -376
  146. package/dist/protocols/mcp/tools/TestTools.d.ts.map +1 -1
  147. package/dist/protocols/mcp/tools/TestTools.js +241 -363
  148. package/dist/protocols/mcp/tools/TestTools.js.map +1 -1
  149. package/dist/protocols/mcp/tools/TypeScriptTools.d.ts +6 -276
  150. package/dist/protocols/mcp/tools/TypeScriptTools.d.ts.map +1 -1
  151. package/dist/protocols/mcp/tools/TypeScriptTools.js +223 -337
  152. package/dist/protocols/mcp/tools/TypeScriptTools.js.map +1 -1
  153. package/dist/protocols/mcp/tools/WebTools.d.ts +15 -728
  154. package/dist/protocols/mcp/tools/WebTools.d.ts.map +1 -1
  155. package/dist/protocols/mcp/tools/WebTools.js +151 -257
  156. package/dist/protocols/mcp/tools/WebTools.js.map +1 -1
  157. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.d.ts +5 -3
  158. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.d.ts.map +1 -1
  159. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.js +31 -6
  160. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.js.map +1 -1
  161. package/dist/schemas/EventPayloadSchema.d.ts +21 -0
  162. package/dist/schemas/EventPayloadSchema.d.ts.map +1 -1
  163. package/dist/schemas/EventPayloadSchema.js +14 -0
  164. package/dist/schemas/EventPayloadSchema.js.map +1 -1
  165. package/dist/services/BackgroundTaskManager.d.ts.map +1 -1
  166. package/dist/services/BackgroundTaskManager.js +12 -4
  167. package/dist/services/BackgroundTaskManager.js.map +1 -1
  168. package/dist/services/BrowserManager.d.ts +1 -1
  169. package/dist/services/BrowserManager.d.ts.map +1 -1
  170. package/dist/services/BrowserManager.js +26 -3
  171. package/dist/services/BrowserManager.js.map +1 -1
  172. package/dist/services/MemoryCompressor.d.ts +11 -2
  173. package/dist/services/MemoryCompressor.d.ts.map +1 -1
  174. package/dist/services/MemoryCompressor.js +8 -26
  175. package/dist/services/MemoryCompressor.js.map +1 -1
  176. package/dist/services/MemoryService.d.ts +16 -3
  177. package/dist/services/MemoryService.d.ts.map +1 -1
  178. package/dist/services/MemoryService.js +79 -55
  179. package/dist/services/MemoryService.js.map +1 -1
  180. package/dist/services/MxfMLService.d.ts +5 -0
  181. package/dist/services/MxfMLService.d.ts.map +1 -1
  182. package/dist/services/MxfMLService.js +32 -6
  183. package/dist/services/MxfMLService.js.map +1 -1
  184. package/dist/services/PredictiveAnalyticsService.d.ts +45 -9
  185. package/dist/services/PredictiveAnalyticsService.d.ts.map +1 -1
  186. package/dist/services/PredictiveAnalyticsService.js +82 -44
  187. package/dist/services/PredictiveAnalyticsService.js.map +1 -1
  188. package/dist/services/QValueManager.d.ts +7 -0
  189. package/dist/services/QValueManager.d.ts.map +1 -1
  190. package/dist/services/QValueManager.js +9 -0
  191. package/dist/services/QValueManager.js.map +1 -1
  192. package/dist/services/RewardSignalProcessor.d.ts +38 -1
  193. package/dist/services/RewardSignalProcessor.d.ts.map +1 -1
  194. package/dist/services/RewardSignalProcessor.js +109 -7
  195. package/dist/services/RewardSignalProcessor.js.map +1 -1
  196. package/dist/services/SharedStateService.d.ts +16 -2
  197. package/dist/services/SharedStateService.d.ts.map +1 -1
  198. package/dist/services/SharedStateService.js +44 -3
  199. package/dist/services/SharedStateService.js.map +1 -1
  200. package/dist/services/TaskEffectivenessService.d.ts +34 -18
  201. package/dist/services/TaskEffectivenessService.d.ts.map +1 -1
  202. package/dist/services/TaskEffectivenessService.js +91 -155
  203. package/dist/services/TaskEffectivenessService.js.map +1 -1
  204. package/dist/services/WebSearchService.d.ts.map +1 -1
  205. package/dist/services/WebSearchService.js.map +1 -1
  206. package/dist/services/dag/TaskDagService.d.ts.map +1 -1
  207. package/dist/services/dag/TaskDagService.js +2 -0
  208. package/dist/services/dag/TaskDagService.js.map +1 -1
  209. package/dist/services/orpar-memory/OrparMemoryCoordinator.d.ts +7 -0
  210. package/dist/services/orpar-memory/OrparMemoryCoordinator.d.ts.map +1 -1
  211. package/dist/services/orpar-memory/OrparMemoryCoordinator.js +71 -10
  212. package/dist/services/orpar-memory/OrparMemoryCoordinator.js.map +1 -1
  213. package/dist/types/MemoryUtilityTypes.d.ts +2 -0
  214. package/dist/types/MemoryUtilityTypes.d.ts.map +1 -1
  215. package/dist/types/MemoryUtilityTypes.js.map +1 -1
  216. package/dist/utils/Logger.d.ts +43 -3
  217. package/dist/utils/Logger.d.ts.map +1 -1
  218. package/dist/utils/Logger.js +78 -36
  219. package/dist/utils/Logger.js.map +1 -1
  220. package/dist/utils/MxpEncryption.d.ts +19 -6
  221. package/dist/utils/MxpEncryption.d.ts.map +1 -1
  222. package/dist/utils/MxpEncryption.js +48 -16
  223. package/dist/utils/MxpEncryption.js.map +1 -1
  224. package/package.json +19 -4
  225. package/src/adapters/FrameworkAdapter.ts +1 -1
  226. package/src/config/ConfigManager.ts +52 -19
  227. package/src/config/memory-strata.config.ts +136 -0
  228. package/src/constants/ToolNames.ts +4 -18
  229. package/src/database/DatabaseAdapterFactory.ts +23 -6
  230. package/src/database/adapters/mongodb/MongoBaseRepository.ts +16 -2
  231. package/src/events/ClientEventBus.ts +68 -403
  232. package/src/events/EventBus.ts +7 -8
  233. package/src/events/EventBusBase.ts +479 -116
  234. package/src/events/EventNames.ts +6 -0
  235. package/src/events/PublicEvents.ts +7 -4
  236. package/src/events/ServerEventBus.ts +78 -473
  237. package/src/events/event-definitions/LlmBudgetEvents.ts +74 -0
  238. package/src/interfaces/IMemoryPersistence.ts +51 -0
  239. package/src/middleware/MxpMiddleware.ts +51 -24
  240. package/src/models/channelKey.ts +18 -4
  241. package/src/models/memoryUtility.ts +64 -0
  242. package/src/models/user.ts +36 -4
  243. package/src/mxp/BinaryProtocolLayer.ts +108 -124
  244. package/src/mxp/ContextCompressionEngine.ts +219 -161
  245. package/src/mxp/MxpTokenOptimizer.ts +10 -10
  246. package/src/prompts/MxfAgentSystemPrompt.ts +45 -55
  247. package/src/protocols/mcp/ToolError.ts +201 -0
  248. package/src/protocols/mcp/defineTool.ts +379 -0
  249. package/src/protocols/mcp/security/HttpTargetGuard.ts +267 -0
  250. package/src/protocols/mcp/security/McpSecurityGuard.ts +10 -3
  251. package/src/protocols/mcp/security/McpToolPolicy.ts +221 -0
  252. package/src/protocols/mcp/services/ExternalMcpServerManager.ts +340 -322
  253. package/src/protocols/mcp/services/ExternalServerConfigs.ts +82 -19
  254. package/src/protocols/mcp/tools/AnalyticsTools.ts +1 -1
  255. package/src/protocols/mcp/tools/CodeAnalysisTools.ts +15 -0
  256. package/src/protocols/mcp/tools/EffectivenessTools.ts +3 -3
  257. package/src/protocols/mcp/tools/GitTools.ts +290 -569
  258. package/src/protocols/mcp/tools/InfrastructureTools.ts +189 -43
  259. package/src/protocols/mcp/tools/MemorySearchTools.ts +77 -1
  260. package/src/protocols/mcp/tools/OrparTools.ts +87 -0
  261. package/src/protocols/mcp/tools/SafetyTools.ts +501 -579
  262. package/src/protocols/mcp/tools/TaskPlanningTools.ts +81 -39
  263. package/src/protocols/mcp/tools/TestTools.ts +339 -419
  264. package/src/protocols/mcp/tools/TypeScriptTools.ts +316 -376
  265. package/src/protocols/mcp/tools/WebTools.ts +209 -307
  266. package/src/protocols/mcp/tools/shell/ShellExecuteHandler.ts +53 -14
  267. package/src/schemas/EventPayloadSchema.ts +37 -0
  268. package/src/services/BackgroundTaskManager.ts +12 -4
  269. package/src/services/BrowserManager.ts +41 -1
  270. package/src/services/MemoryCompressor.ts +20 -32
  271. package/src/services/MemoryService.ts +96 -58
  272. package/src/services/MxfMLService.ts +41 -7
  273. package/src/services/PredictiveAnalyticsService.ts +101 -51
  274. package/src/services/QValueManager.ts +10 -0
  275. package/src/services/RewardSignalProcessor.ts +138 -9
  276. package/src/services/SharedStateService.ts +56 -8
  277. package/src/services/TaskEffectivenessService.ts +114 -187
  278. package/src/services/WebSearchService.ts +2 -1
  279. package/src/services/dag/TaskDagService.ts +2 -0
  280. package/src/services/orpar-memory/OrparMemoryCoordinator.ts +86 -10
  281. package/src/types/MemoryUtilityTypes.ts +2 -0
  282. package/src/utils/Logger.ts +116 -40
  283. package/src/utils/MxpEncryption.ts +69 -34
  284. package/dist/mxp/MxpEventForwardingEnhancer.d.ts +0 -134
  285. package/dist/mxp/MxpEventForwardingEnhancer.d.ts.map +0 -1
  286. package/dist/mxp/MxpEventForwardingEnhancer.js +0 -361
  287. package/dist/mxp/MxpEventForwardingEnhancer.js.map +0 -1
  288. package/dist/protocols/mcp/services/ToolSchemaEnhancements.d.ts +0 -56
  289. package/dist/protocols/mcp/services/ToolSchemaEnhancements.d.ts.map +0 -1
  290. package/dist/protocols/mcp/services/ToolSchemaEnhancements.js +0 -57
  291. package/dist/protocols/mcp/services/ToolSchemaEnhancements.js.map +0 -1
  292. package/dist/protocols/mcp/tools/ControlLoopLifecycle.d.ts +0 -270
  293. package/dist/protocols/mcp/tools/ControlLoopLifecycle.d.ts.map +0 -1
  294. package/dist/protocols/mcp/tools/ControlLoopLifecycle.js +0 -256
  295. package/dist/protocols/mcp/tools/ControlLoopLifecycle.js.map +0 -1
  296. package/dist/protocols/mcp/tools/LspTools.d.ts +0 -495
  297. package/dist/protocols/mcp/tools/LspTools.d.ts.map +0 -1
  298. package/dist/protocols/mcp/tools/LspTools.js +0 -469
  299. package/dist/protocols/mcp/tools/LspTools.js.map +0 -1
  300. package/src/mxp/MxpEventForwardingEnhancer.ts +0 -471
  301. package/src/protocols/mcp/services/ToolSchemaEnhancements.ts +0 -92
  302. package/src/protocols/mcp/tools/ControlLoopLifecycle.ts +0 -302
  303. package/src/protocols/mcp/tools/LspTools.ts +0 -476
@@ -154,6 +154,10 @@ import { MeilisearchEvents } from './event-definitions/MeilisearchEvents.js';
154
154
  import type { MeilisearchPayloads } from './event-definitions/MeilisearchEvents.js';
155
155
  export { MeilisearchEvents };
156
156
  export type { MeilisearchPayloads };
157
+ import { LlmBudgetEvents } from './event-definitions/LlmBudgetEvents.js';
158
+ import type { LlmBudgetPayloads } from './event-definitions/LlmBudgetEvents.js';
159
+ export { LlmBudgetEvents };
160
+ export type { LlmBudgetPayloads };
157
161
 
158
162
  import { CodeExecutionEvents } from './event-definitions/CodeExecutionEvents.js';
159
163
  import type { CodeExecutionPayloads } from './event-definitions/CodeExecutionEvents.js';
@@ -252,6 +256,7 @@ export namespace Events {
252
256
  export const Auth = AuthEvents;
253
257
  export const Mxp = MxpEvents;
254
258
  export const Meilisearch = MeilisearchEvents;
259
+ export const LlmBudget = LlmBudgetEvents;
255
260
  export const CodeExecution = CodeExecutionEvents;
256
261
  export const Shell = ShellExecutionEvents;
257
262
  export const Workflow = WorkflowEvents;
@@ -288,6 +293,7 @@ export type EventMap =
288
293
  BulkPayloads &
289
294
  MxpPayloads &
290
295
  MeilisearchPayloads &
296
+ LlmBudgetPayloads &
291
297
  CodeExecutionPayloads &
292
298
  ShellExecutionPayloads &
293
299
  WorkflowPayloads &
@@ -154,12 +154,15 @@ export const PUBLIC_USER_INPUT_EVENTS = [
154
154
 
155
155
  /**
156
156
  * Public Meilisearch Events - Semantic search operations
157
+ *
158
+ * Result events only. The *:request events stay internal, and there is no
159
+ * search event: search is a request/response call, not something the framework
160
+ * publishes.
157
161
  */
158
162
  export const PUBLIC_MEILISEARCH_EVENTS = [
159
- 'meilisearch:index',
160
- 'meilisearch:backfill:complete',
161
- 'meilisearch:backfill:partial',
162
- 'meilisearch:search',
163
+ Events.Meilisearch.INDEX,
164
+ Events.Meilisearch.BACKFILL_COMPLETE,
165
+ Events.Meilisearch.BACKFILL_PARTIAL,
163
166
  ] as const;
164
167
 
165
168
  /**
@@ -26,29 +26,19 @@
26
26
  * and event routing to agents and channels.
27
27
  */
28
28
 
29
- import { Subject, Subscription } from 'rxjs';
30
- import { filter, map } from 'rxjs/operators';
31
- import type { Server as SocketIOServer, Socket } from 'socket.io';
32
- import { Events, ChannelActionTypes, MessageEvents } from './EventNames.js';
33
- import type { EventMap } from './EventNames.js';
29
+ import { Subject } from 'rxjs';
30
+ import type { Server as SocketIOServer } from 'socket.io';
34
31
  import { ControlLoopEvents } from './event-definitions/ControlLoopEvents.js';
35
32
  import { OrparEvents } from './event-definitions/OrparEvents.js';
36
33
  import { McpEvents } from './event-definitions/McpEvents.js';
37
34
  import { TaskEvents } from './event-definitions/TaskEvents.js';
38
- import {
39
- AnyEventName,
40
- BaseEventBusImplementation,
41
- EventHandler,
42
- EventMessage,
43
- SocketLike,
44
- validateEventName,
45
- isReservedEvent
46
- , invokeHandlerSafely, PayloadOf } from './EventBusBase.js';
47
- import {
48
- createAgentEventPayload,
49
- createChannelEventPayload,
50
- createBaseEventPayload
51
- } from '../schemas/EventPayloadSchema.js';
35
+ import {
36
+ AnyEventName,
37
+ BaseEventBusImplementation,
38
+ EventMessage,
39
+ isReservedEvent,
40
+ PayloadOf
41
+ } from './EventBusBase.js';
52
42
  import { createStrictValidator } from '../utils/validation.js';
53
43
  import { Logger } from '../utils/Logger.js';
54
44
 
@@ -75,91 +65,64 @@ export interface IServerEventBus extends BaseEventBusImplementation {
75
65
  */
76
66
  clearSocketServer(): this;
77
67
 
78
- /**
79
- * Emit an event
80
- * @param event Event name
81
- * @param payload Event payload
82
- */
83
- emit<K extends AnyEventName>(event: K, payload: PayloadOf<K>): void;
84
-
85
- /**
86
- * Subscribe to all events in the server event bus
87
- *
88
- * @param listener Listener function that receives both event type and payload
89
- * @returns Subscription that can be unsubscribed to stop listening
90
- */
91
- onAll(listener: (eventType: string, payload: any) => void): Subscription;
92
-
93
68
  /**
94
69
  * Remove all server event listeners
95
70
  * @returns this (for chaining)
96
71
  */
97
72
  removeAllSocketListeners(): this;
98
-
73
+
99
74
  /**
100
75
  * Clean up all subscriptions and listeners
101
76
  * @returns this (for chaining)
102
77
  */
103
78
  cleanup(): this;
104
-
105
- /**
106
- * Enable or disable debug mode to log all events
107
- *
108
- * @param enabled Whether debug mode should be enabled
109
- * @returns this (for chaining)
110
- */
111
- enableDebugMode(enabled?: boolean): this;
112
-
113
- /**
114
- * Subscribe to an event with category for grouped subscription management
115
- *
116
- * @param category Category name for grouping subscriptions
117
- * @param event Event name to subscribe to
118
- * @param listener Listener function to call when the event is emitted
119
- * @returns Subscription that can be unsubscribed to stop listening
120
- */
121
- onWithCategory<T extends AnyEventName>(
122
- category: string,
123
- event: T,
124
- listener: (payload: any) => void
125
- ): Subscription;
126
-
127
- /**
128
- * Unsubscribe from all events in a specific category
129
- *
130
- * @param category Category name to unsubscribe from
131
- * @returns this (for chaining)
132
- */
133
- unsubscribeCategory(category: string): this;
134
-
135
- /**
136
- * Remove all event listeners for a specific event or all events
137
- * @param event Optional specific event name to remove listeners for
138
- * @returns this (for chaining)
139
- */
140
- removeAllListeners(event?: AnyEventName): this;
141
79
  }
142
80
 
143
81
  /**
144
82
  * Server-side event bus implementation
145
83
  */
146
84
  export class ServerEventBus extends BaseEventBusImplementation implements IServerEventBus {
85
+ /**
86
+ * Events delivered to specific agents/channels by eventForwardingHandlers.
87
+ * Broadcasting these over io.emit() would deliver them twice.
88
+ */
89
+ private static readonly AGENT_SPECIFIC_EVENTS: ReadonlySet<string> = new Set<string>([
90
+ ...Object.values(ControlLoopEvents),
91
+ ...Object.values(OrparEvents),
92
+ // MCP response events
93
+ McpEvents.TOOL_RESULT,
94
+ McpEvents.TOOL_ERROR,
95
+ McpEvents.TOOL_REGISTERED,
96
+ McpEvents.TOOL_UNREGISTERED,
97
+ McpEvents.MXF_TOOL_LIST_RESULT,
98
+ McpEvents.MXF_TOOL_LIST_ERROR,
99
+ McpEvents.RESOURCE_RESULT,
100
+ McpEvents.RESOURCE_ERROR,
101
+ McpEvents.EXTERNAL_SERVER_REGISTERED,
102
+ McpEvents.EXTERNAL_SERVER_UNREGISTERED,
103
+ McpEvents.EXTERNAL_SERVER_REGISTRATION_FAILED,
104
+ McpEvents.CHANNEL_SERVER_REGISTERED,
105
+ McpEvents.CHANNEL_SERVER_UNREGISTERED,
106
+ McpEvents.CHANNEL_SERVER_REGISTRATION_FAILED,
107
+ // Task lifecycle events
108
+ TaskEvents.CREATED,
109
+ TaskEvents.ASSIGNED,
110
+ TaskEvents.STARTED,
111
+ TaskEvents.PROGRESS_UPDATED,
112
+ TaskEvents.COMPLETED,
113
+ TaskEvents.FAILED,
114
+ TaskEvents.ERROR,
115
+ TaskEvents.CANCELLED,
116
+ ]);
117
+
147
118
  private ioInstance: SocketIOServer | null = null;
148
- private subscriptions: Subscription[] = [];
149
- private categorySubscriptions: Map<string, Subscription[]> = new Map();
150
-
151
- // Track subscriptions by event and handler for proper off() support
152
- private handlerSubscriptions: Map<string, Map<EventHandler<any>, Subscription>> = new Map();
153
- private debugMode: boolean = false;
154
- private debugSubscription: Subscription | null = null;
155
-
119
+
156
120
  /**
157
121
  * Create a new ServerEventBus
158
122
  * @param eventSubject Subject to use for events
159
123
  */
160
124
  constructor(eventSubject: Subject<EventMessage>) {
161
- super(eventSubject);
162
- //;
125
+ super(eventSubject, logger);
163
126
  }
164
127
 
165
128
  /**
@@ -195,412 +158,54 @@ export class ServerEventBus extends BaseEventBusImplementation implements IServe
195
158
  }
196
159
 
197
160
  /**
198
- * Emit an event to the server event bus
199
- * All components listen to this event bus
200
- *
201
- * @param event Event name
202
- * @param payload Event payload
203
- */
204
- public emit<K extends AnyEventName>(event: K, payload: PayloadOf<K>): void {
205
- try {
206
- // Validate event name and payload
207
- validateEventName(event);
208
- this.validateEventPayload(event, payload);
209
-
210
- // Handle null/undefined payload
211
- if (payload === undefined || payload === null) {
212
- logger.warn(`[ServerEventBus] Warning: Emitting event '${event}' with ${payload === null ? 'null' : 'undefined'} payload.`);
213
- payload = {} as PayloadOf<K>;
214
- }
215
-
216
- // Special logging for critical events like agent registration
217
- if (event.startsWith('agent:')) {
218
- }
219
-
220
- // Emit to local event bus first
221
- this.eventSubject.next({
222
- type: event,
223
- payload,
224
- });
225
-
226
- // Also emit to the Socket.IO server if available
227
- // IMPORTANT: Do NOT broadcast agent-specific events via io.emit().
228
- // These events are forwarded to specific agents/channels via
229
- // eventForwardingHandlers.forwardEventToAgent()/forwardEventToChannel().
230
- // Broadcasting them causes duplicates: the SDK's ClientEventBus.setupClientSocketForwarding()
231
- // has socket.onAny() that re-injects received socket events back into the RxJS Subject,
232
- // so MxfChannelMonitor sees each broadcast event twice (once from Subject push, once from
233
- // socket re-injection).
234
- const agentSpecificEvents = new Set([
235
- ...Object.values(ControlLoopEvents),
236
- ...Object.values(OrparEvents),
237
- // MCP response events — already forwarded to specific agents via eventForwardingHandlers
238
- McpEvents.TOOL_RESULT,
239
- McpEvents.TOOL_ERROR,
240
- McpEvents.TOOL_REGISTERED,
241
- McpEvents.TOOL_UNREGISTERED,
242
- McpEvents.MXF_TOOL_LIST_RESULT,
243
- McpEvents.MXF_TOOL_LIST_ERROR,
244
- McpEvents.RESOURCE_RESULT,
245
- McpEvents.RESOURCE_ERROR,
246
- McpEvents.EXTERNAL_SERVER_REGISTERED,
247
- McpEvents.EXTERNAL_SERVER_UNREGISTERED,
248
- McpEvents.EXTERNAL_SERVER_REGISTRATION_FAILED,
249
- McpEvents.CHANNEL_SERVER_REGISTERED,
250
- McpEvents.CHANNEL_SERVER_UNREGISTERED,
251
- McpEvents.CHANNEL_SERVER_REGISTRATION_FAILED,
252
- // Task lifecycle events — already forwarded to specific agents/channels
253
- TaskEvents.CREATED,
254
- TaskEvents.ASSIGNED,
255
- TaskEvents.STARTED,
256
- TaskEvents.PROGRESS_UPDATED,
257
- TaskEvents.COMPLETED,
258
- TaskEvents.FAILED,
259
- TaskEvents.ERROR,
260
- TaskEvents.CANCELLED,
261
- ]);
262
-
263
- if (this.ioInstance && !isReservedEvent(event) && !agentSpecificEvents.has(event)) {
264
- //;
265
- this.ioInstance.emit(event, payload);
266
- }
267
-
268
- //;
269
- } catch (error) {
270
- logger.error(`[ServerEventBus] Error emitting event '${event}':`, error instanceof Error ? error.message : String(error));
271
-
272
- // Re-throw the error for the caller to handle
273
- throw error;
274
- }
275
- }
276
-
277
- /**
278
- * Override the base on method to track handlers and subscriptions
279
- * @param event Event name
280
- * @param handler Event handler function
281
- * @returns Subscription to use for unsubscribing
282
- */
283
- public override on<K extends AnyEventName>(event: K, handler: EventHandler<PayloadOf<K>>): Subscription {
284
- // Create a filtered observable for this event
285
- const observable = this.eventSubject.pipe(
286
- filter((e: EventMessage) => e.type === event),
287
- map((e: EventMessage) => e.payload)
288
- );
289
-
290
- // Subscribe with throw/rejection isolation so one bad handler cannot
291
- // kill the subscription or fail silently.
292
- const subscription = observable.subscribe((payload) =>
293
- invokeHandlerSafely(logger, event, handler, payload)
294
- );
295
-
296
- // Store the subscription for cleanup
297
- this.subscriptions.push(subscription);
298
-
299
- // Track handlers for off() support
300
- if (!this.handlerSubscriptions.has(event)) {
301
- this.handlerSubscriptions.set(event, new Map());
302
- }
303
-
304
- const eventHandlers = this.handlerSubscriptions.get(event);
305
- if (eventHandlers) {
306
- eventHandlers.set(handler, subscription);
307
- }
308
-
309
- return subscription;
310
- }
311
-
312
- /**
313
- * Override the base once method to track handlers and subscriptions
314
- * Once the event is fired, the subscription is automatically removed
315
- *
316
- * @param event Event name
317
- * @param handler Event handler function
318
- * @returns Subscription to use for unsubscribing
319
- */
320
- public override once<K extends AnyEventName>(event: K, handler: EventHandler<any>): Subscription {
321
- // Create a filtered observable for this event
322
- const observable = this.eventSubject.pipe(
323
- filter((e: EventMessage) => e.type === event),
324
- map((e: EventMessage) => e.payload)
325
- );
326
-
327
- // Create a wrapper handler that will unsubscribe after first execution
328
- const onceHandler = (payload: any) => {
329
- try {
330
- invokeHandlerSafely(logger, event, handler, payload);
331
- } finally {
332
- // Always unsubscribe — once means once, even when the handler throws.
333
- this.off(event, onceHandler);
334
- }
335
- };
336
-
337
- // Subscribe to the observable with the one-time handler
338
- const subscription = observable.subscribe(onceHandler);
339
-
340
- // Store the subscription for cleanup
341
- this.subscriptions.push(subscription);
342
-
343
- // Track handlers for off() support
344
- if (!this.handlerSubscriptions.has(event)) {
345
- this.handlerSubscriptions.set(event, new Map());
161
+ * Forward an emitted event to the Socket.IO server.
162
+ *
163
+ * Called by BaseEventBusImplementation.emit() after validation and local
164
+ * delivery.
165
+ *
166
+ * Agent-specific events are NOT broadcast with io.emit(). They are routed
167
+ * to individual agents/channels by eventForwardingHandlers. Broadcasting
168
+ * them would duplicate delivery: the SDK's ClientEventBus.setupClientSocketForwarding()
169
+ * re-injects everything the socket receives back into the shared RxJS Subject,
170
+ * so a broadcast event would be seen twice (once from the Subject push, once
171
+ * from the socket re-injection).
172
+ */
173
+ protected override forwardToTransport<K extends AnyEventName>(event: K, payload: PayloadOf<K>): void {
174
+ if (!this.ioInstance) {
175
+ return;
346
176
  }
347
-
348
- const eventHandlers = this.handlerSubscriptions.get(event);
349
- if (eventHandlers) {
350
- eventHandlers.set(handler, subscription);
177
+
178
+ const eventName = String(event);
179
+ if (isReservedEvent(eventName) || ServerEventBus.AGENT_SPECIFIC_EVENTS.has(eventName)) {
180
+ return;
351
181
  }
352
-
353
- return subscription;
354
- }
355
182
 
356
- /**
357
- * Subscribe to all events in the server event bus
358
- *
359
- * @param listener Listener function that receives both event type and payload
360
- * @returns Subscription that can be unsubscribed to stop listening
361
- */
362
- public onAll(listener: (eventType: string, payload: any) => void): Subscription {
363
- // Create an observable that passes both event type and payload
364
- const observable = this.eventSubject.pipe(
365
- map((e: EventMessage) => ({ type: e.type, payload: e.payload }))
366
- );
367
-
368
-
369
- // Subscribe to the observable with the listener
370
- const subscription = observable.subscribe(event => {
371
- listener(event.type, event.payload);
372
- });
373
-
374
- // Store the subscription for cleanup
375
- this.subscriptions.push(subscription);
376
-
377
- return subscription;
183
+ this.ioInstance.emit(eventName, payload);
378
184
  }
379
-
185
+
380
186
  /**
381
- * Remove all server event listeners
187
+ * Drop the Socket.IO server reference so no further events are broadcast.
188
+ *
189
+ * The bus attaches no listeners to the Socket.IO server — it only calls
190
+ * io.emit() — so there is nothing else to detach here.
191
+ *
382
192
  * @returns this (for chaining)
383
193
  */
384
194
  public removeAllSocketListeners(): this {
385
- if (this.ioInstance) {
386
- try {
387
- // Since Socket.IO Server doesn't have a direct equivalent to removeAllListeners(),
388
- // we would need to track all listeners separately if we want to remove them.
389
- // For now, we log that this operation is not fully implemented.
390
- } catch (error) {
391
- logger.error('[ServerEventBus] Error removing socket listeners:', error instanceof Error ? error.message : String(error));
392
- }
393
- }
394
-
195
+ this.ioInstance = null;
196
+
395
197
  return this;
396
198
  }
397
-
199
+
398
200
  /**
399
- * Clean up all subscriptions and listeners
201
+ * Dispose every subscription and detach the Socket.IO server.
202
+ *
400
203
  * @returns this (for chaining)
401
204
  */
402
205
  public cleanup(): this {
403
- // Clean up all subscriptions
404
- this.subscriptions.forEach(subscription => subscription.unsubscribe());
405
- this.subscriptions = [];
406
-
407
- // Clear category subscriptions
408
- this.categorySubscriptions.clear();
409
-
410
- // Remove socket listeners
206
+ this.removeAllListeners();
411
207
  this.removeAllSocketListeners();
412
-
413
- // Reset debug mode
414
- this.debugMode = false;
415
- this.debugSubscription = null;
416
-
417
-
418
- return this;
419
- }
420
-
421
- /**
422
- * Enable or disable debug mode to log all events
423
- *
424
- * @param enabled Whether debug mode should be enabled
425
- * @returns this (for chaining)
426
- */
427
- public enableDebugMode(enabled: boolean = true): this {
428
- // If already in the requested mode, do nothing
429
- if (this.debugMode === enabled) {
430
- return this;
431
- }
432
-
433
- this.debugMode = enabled;
434
-
435
- // If enabling debug mode
436
- if (enabled) {
437
-
438
- // Create a subscription to all events
439
- this.debugSubscription = this.onAll((eventType, payload) => {
440
- // ;
441
- });
442
-
443
- // Make sure it's tracked for cleanup
444
- if (this.debugSubscription) {
445
- this.subscriptions.push(this.debugSubscription);
446
- }
447
- }
448
- // If disabling debug mode
449
- else if (this.debugSubscription) {
450
-
451
- // Unsubscribe from the debug subscription
452
- this.debugSubscription.unsubscribe();
453
-
454
- // Remove from subscriptions array
455
- const index = this.subscriptions.indexOf(this.debugSubscription);
456
- if (index !== -1) {
457
- this.subscriptions.splice(index, 1);
458
- }
459
-
460
- this.debugSubscription = null;
461
- }
462
-
463
- return this;
464
- }
465
-
466
- /**
467
- * Subscribe to an event with category for grouped subscription management
468
- *
469
- * @param category Category name for grouping subscriptions
470
- * @param event Event name to subscribe to
471
- * @param listener Listener function to call when the event is emitted
472
- * @returns Subscription that can be unsubscribed to stop listening
473
- */
474
- public onWithCategory<T extends AnyEventName>(
475
- category: string,
476
- event: T,
477
- listener: (payload: any) => void
478
- ): Subscription {
479
- // Create a subscription using the standard on method
480
- const subscription = this.on(event, listener);
481
-
482
- // Store in the category map
483
- if (!this.categorySubscriptions.has(category)) {
484
- this.categorySubscriptions.set(category, []);
485
- }
486
-
487
- const categorySubs = this.categorySubscriptions.get(category);
488
- if (categorySubs) {
489
- categorySubs.push(subscription);
490
- }
491
-
492
- // ;
493
-
494
- return subscription;
495
- }
496
-
497
- /**
498
- * Unsubscribe from all events in a specific category
499
- *
500
- * @param category Category name to unsubscribe from
501
- * @returns this (for chaining)
502
- */
503
- public unsubscribeCategory(category: string): this {
504
- const subscriptions = this.categorySubscriptions.get(category) || [];
505
-
506
- if (subscriptions.length > 0) {
507
-
508
- // Unsubscribe from each subscription in the category
509
- subscriptions.forEach(subscription => {
510
- subscription.unsubscribe();
511
-
512
- // Also remove from the main subscriptions array
513
- const index = this.subscriptions.indexOf(subscription);
514
- if (index !== -1) {
515
- this.subscriptions.splice(index, 1);
516
- }
517
- });
518
-
519
- // Clear the category
520
- this.categorySubscriptions.delete(category);
521
- } else {
522
- // ;
523
- }
524
-
525
- return this;
526
- }
527
-
528
- /**
529
- * Unsubscribe from an event
530
- * @param event Event name
531
- * @param handler Event handler function (optional)
532
- */
533
- public override off<K extends AnyEventName>(event: K, handler?: EventHandler<any>): void {
534
- validateEventName(event);
535
-
536
- const eventHandlers = this.handlerSubscriptions.get(event);
537
- if (!eventHandlers) {
538
- // No handlers for this event found
539
- // ;
540
- return;
541
- }
542
-
543
- if (handler) {
544
- // If specific handler provided, just unsubscribe that one
545
- const subscription = eventHandlers.get(handler);
546
- if (subscription) {
547
- // Unsubscribe from the RxJS subscription
548
- subscription.unsubscribe();
549
-
550
- // Remove from our handler registry
551
- eventHandlers.delete(handler);
552
-
553
- // Remove from the array if present
554
- const index = this.subscriptions.indexOf(subscription);
555
- if (index !== -1) {
556
- this.subscriptions.splice(index, 1);
557
- }
558
-
559
- // ;
560
- } else {
561
- // ;
562
- }
563
- } else {
564
- // If no specific handler, unsubscribe all handlers for this event
565
- let unsubscribedCount = 0;
566
-
567
- eventHandlers.forEach((subscription) => {
568
- // Unsubscribe from the RxJS subscription
569
- subscription.unsubscribe();
570
-
571
- // Remove from the array if present
572
- const index = this.subscriptions.indexOf(subscription);
573
- if (index !== -1) {
574
- this.subscriptions.splice(index, 1);
575
- }
576
-
577
- unsubscribedCount++;
578
- });
579
-
580
- // Clear all handlers for this event
581
- eventHandlers.clear();
582
-
583
- // ;
584
- }
585
- }
586
-
587
- /**
588
- * Remove all event listeners for a specific event or all events
589
- * @param event Optional specific event name to remove listeners for
590
- * @returns this (for chaining)
591
- */
592
- public removeAllListeners(event?: AnyEventName): this {
593
- // Remove all event listeners
594
- this.eventSubject.observers = [];
595
-
596
- // Also clear our handler registries if appropriate
597
- if (event) {
598
- this.handlerSubscriptions.delete(event);
599
- } else {
600
- this.handlerSubscriptions.clear();
601
- }
602
-
603
-
208
+
604
209
  return this;
605
210
  }
606
211
  }