@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
@@ -26,8 +26,8 @@
26
26
  */
27
27
 
28
28
  import * as path from 'path';
29
- import * as os from 'os';
30
29
  import { ExternalServerConfig } from './ExternalMcpServerManager.js';
30
+ import { getWorkspaceRoot } from '../security/McpToolPolicy.js';
31
31
 
32
32
  /**
33
33
  * Configuration for the Calculator MCP Server
@@ -72,28 +72,34 @@ export const SEQUENTIAL_THINKING_SERVER_CONFIG: ExternalServerConfig = {
72
72
  };
73
73
 
74
74
  /**
75
- * Configuration for the Filesystem MCP Server
76
- * Provides secure file operations with access controls
77
- *
78
- * NOTE: Configured to allow access to project root directory.
79
- * The server receives the current working directory as an allowed path.
75
+ * Configuration for the Filesystem MCP Server.
76
+ *
77
+ * The allowed roots are the configured workspace directory plus a scratch
78
+ * directory. This used to pass `os.homedir()`, which handed every agent read
79
+ * access to the entire home directory including ~/.ssh, ~/.aws, and
80
+ * ~/.mxf/config.json, which is where the MXF CLI stores its own credentials.
81
+ *
82
+ * The server only auto-starts when MXF_WORKSPACE_ROOT is set. There is no default:
83
+ * a filesystem server needs an operator to say which directory agents may touch,
84
+ * and the previous default answered that question with "all of them".
80
85
  */
81
86
  export const FILESYSTEM_SERVER_CONFIG: ExternalServerConfig = {
82
87
  id: 'filesystem',
83
88
  name: 'Filesystem Server',
84
89
  version: '0.6.0',
85
- description: 'Secure file operations with configurable access controls',
90
+ description: 'File operations scoped to the configured workspace directory',
86
91
  command: 'npx',
87
- // MCP filesystem server accepts multiple allowed directory paths as args.
88
- // Include the user's home directory so agents can access any folder the
89
- // user selects as their working directory (e.g., via the desktop folder picker).
92
+ // The MCP filesystem server takes its allowed directories as positional args.
90
93
  args: [
91
94
  '-y',
92
95
  '@modelcontextprotocol/server-filesystem',
93
- os.homedir(), // Allow access to user's home directory (covers any selected folder)
94
- '/tmp' // Also allow /tmp for temporary files
95
- ],
96
- autoStart: true, // Enable auto-start for file operations
96
+ // Empty when unset. getFilesystemServerConfig() below is what callers
97
+ // should use it fails fast rather than spawning a server with no root.
98
+ getWorkspaceRoot() ?? '',
99
+ '/tmp/mcp-workspace'
100
+ ].filter(arg => arg.length > 0),
101
+ // Only auto-start when a workspace is configured.
102
+ autoStart: getWorkspaceRoot() !== undefined,
97
103
  restartOnCrash: true,
98
104
  healthCheckInterval: 30000,
99
105
  maxRestartAttempts: 3,
@@ -169,24 +175,45 @@ export const MEMORY_SERVER_CONFIG: ExternalServerConfig = {
169
175
  };
170
176
 
171
177
  /**
172
- * Configuration for the MongoDB Lens MCP Server
173
- * Provides database schema analysis, query optimization, and MongoDB intelligence
178
+ * Configuration for the MongoDB Lens MCP Server.
179
+ *
180
+ * OFF by default, and it must stay that way unless you have pointed it somewhere
181
+ * safe.
182
+ *
183
+ * This server hands agents a query interface to whatever MONGODB_URI names. In a
184
+ * default MXF deployment that is the framework's own database — the one holding
185
+ * the users collection, personal access tokens, and agent API keys. It used to
186
+ * auto-start against exactly that.
187
+ *
188
+ * To enable it:
189
+ * 1. Create a MongoDB user with read-only access to a SEPARATE database — not
190
+ * the one MXF stores its credentials in.
191
+ * 2. Set MONGODB_LENS_URI to that user's connection string.
192
+ * 3. Set autoStart, or start the server explicitly through the hybrid MCP API.
193
+ *
194
+ * MONGODB_LENS_URI is deliberately a different variable from MONGODB_URI, so that
195
+ * enabling this server cannot silently reuse the framework's own credentials.
174
196
  */
175
197
  export const MONGODB_LENS_SERVER_CONFIG: ExternalServerConfig = {
176
198
  id: 'mongodb-lens',
177
199
  name: 'MongoDB Lens Server',
178
200
  version: '1.0.0',
179
- description: 'Database schema analysis, query optimization, aggregation pipeline building, and MongoDB intelligence',
201
+ description: 'Schema analysis, query optimization and aggregation building against a configured MongoDB database',
180
202
  command: 'npx',
181
203
  args: ['-y', 'mongodb-lens'],
182
- autoStart: true, // ENABLED: Real package exists (furey/mongodb-lens)
204
+ // Opt-in only. Never point this at the database that holds MXF's users, PATs
205
+ // and API keys.
206
+ autoStart: false,
183
207
  restartOnCrash: true,
184
208
  healthCheckInterval: 30000,
185
209
  maxRestartAttempts: 3,
186
210
  startupTimeout: 15000, // MongoDB connection may take longer
187
211
  environmentVariables: {
188
212
  NODE_ENV: 'production',
189
- MONGODB_URI: process.env.MONGODB_URI ?? '' // validated non-empty at spawn time by ExternalMcpServerManager
213
+ // Validated non-empty at spawn time by ExternalMcpServerManager, so starting
214
+ // this server without MONGODB_LENS_URI set fails with a clear error instead
215
+ // of falling back to the framework's own database.
216
+ MONGODB_URI: process.env.MONGODB_LENS_URI ?? ''
190
217
  }
191
218
  };
192
219
 
@@ -285,6 +312,42 @@ export const EXTERNAL_SERVER_CONFIGS: ExternalServerConfig[] = [
285
312
  // FETCH_SERVER_CONFIG, // DISABLED: MCP protocol integration issues (replaced by internal web tools)
286
313
  ];
287
314
 
315
+ /**
316
+ * The filesystem server's configuration, or a thrown error explaining why it
317
+ * cannot be started.
318
+ *
319
+ * Use this instead of FILESYSTEM_SERVER_CONFIG when starting the server on
320
+ * purpose: it refuses to hand out a filesystem server with no configured root,
321
+ * rather than spawning one whose allowed directories are whatever happens to be
322
+ * left in the args array.
323
+ *
324
+ * @throws Error when MXF_WORKSPACE_ROOT is not set
325
+ */
326
+ export const getFilesystemServerConfig = (): ExternalServerConfig => {
327
+ const workspaceRoot = getWorkspaceRoot();
328
+
329
+ if (!workspaceRoot) {
330
+ throw new Error(
331
+ 'The filesystem MCP server needs a workspace directory, but MXF_WORKSPACE_ROOT is not set. ' +
332
+ 'Set it to the directory agents may read and write ' +
333
+ '(for example: MXF_WORKSPACE_ROOT=/Users/you/projects/my-app). ' +
334
+ 'It has no default — the previous default was your home directory, which exposed ' +
335
+ '~/.ssh, ~/.aws and ~/.mxf/config.json to every agent.'
336
+ );
337
+ }
338
+
339
+ return {
340
+ ...FILESYSTEM_SERVER_CONFIG,
341
+ args: [
342
+ '-y',
343
+ '@modelcontextprotocol/server-filesystem',
344
+ workspaceRoot,
345
+ '/tmp/mcp-workspace'
346
+ ],
347
+ autoStart: true
348
+ };
349
+ };
350
+
288
351
  /**
289
352
  * Get configurations for auto-start servers only
290
353
  */
@@ -347,7 +347,7 @@ export const analytics_task_completion: McpToolDefinition = {
347
347
  timeRange === '7d' ? 7 * 24 * 60 * 60 * 1000 :
348
348
  30 * 24 * 60 * 60 * 1000;
349
349
  const startTime = now - timeRangeMs;
350
- const taskAnalytics = effectivenessService.getAnalytics(startTime, now, channelId);
350
+ const taskAnalytics = await effectivenessService.getAnalytics(startTime, now, channelId);
351
351
 
352
352
  return createToolResult(true, {
353
353
  timeRange,
@@ -258,6 +258,11 @@ export const analyzeCodebaseTool = {
258
258
  '-o', '-name', '*.js',
259
259
  '-o', '-name', '*.jsx'
260
260
  ], {
261
+ context: {
262
+ agentId: context.agentId,
263
+ channelId: context.channelId,
264
+ requestId: context.requestId
265
+ },
261
266
  workingDirectory: workingDir,
262
267
  captureOutput: true
263
268
  });
@@ -371,6 +376,11 @@ export const findFunctionsTool = {
371
376
  '--no-heading',
372
377
  `(function\\s+${args.functionName}|const\\s+${args.functionName}\\s*=|${args.functionName}\\s*:\\s*function|${args.functionName}\\s*:\\s*\\()`
373
378
  ], {
379
+ context: {
380
+ agentId: context.agentId,
381
+ channelId: context.channelId,
382
+ requestId: context.requestId
383
+ },
374
384
  workingDirectory: workingDir,
375
385
  captureOutput: true
376
386
  });
@@ -494,6 +504,11 @@ export const traceDependenciesTool = {
494
504
  '--no-heading',
495
505
  `from\\s+['"].*${importPattern}['"]`
496
506
  ], {
507
+ context: {
508
+ agentId: context.agentId,
509
+ channelId: context.channelId,
510
+ requestId: context.requestId
511
+ },
497
512
  workingDirectory: workingDir,
498
513
  captureOutput: true
499
514
  });
@@ -279,7 +279,7 @@ export const task_effectiveness_complete: McpToolDefinition = {
279
279
  });
280
280
  }
281
281
 
282
- const comparison = effectivenessService.compareWithBaseline(taskId);
282
+ const comparison = await effectivenessService.compareWithBaseline(taskId);
283
283
 
284
284
  return createToolResult(true, {
285
285
  message: 'Task completed and effectiveness measured',
@@ -338,7 +338,7 @@ export const task_effectiveness_analytics: McpToolDefinition = {
338
338
  };
339
339
 
340
340
  const startTime = now - ranges[timeRange as keyof typeof ranges];
341
- const analytics = await effectivenessService.getEnhancedAnalytics(
341
+ const analytics = await effectivenessService.getAnalytics(
342
342
  startTime,
343
343
  now,
344
344
  channelId as ChannelId,
@@ -395,7 +395,7 @@ export const task_effectiveness_compare: McpToolDefinition = {
395
395
  handler: async ({ taskId }: any) => {
396
396
  const effectivenessService = TaskEffectivenessService.getInstance();
397
397
  try {
398
- const comparison = effectivenessService.compareWithBaseline(taskId);
398
+ const comparison = await effectivenessService.compareWithBaseline(taskId);
399
399
  if (!comparison) {
400
400
  return createToolResult(false, {
401
401
  error: 'Task not found or no comparison available'