@mxf-dev/core 2.0.5 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/ModelContextLimits.d.ts.map +1 -1
- package/dist/config/ModelContextLimits.js +7 -1
- package/dist/config/ModelContextLimits.js.map +1 -1
- package/dist/constants/CoreTools.d.ts +6 -5
- package/dist/constants/CoreTools.d.ts.map +1 -1
- package/dist/constants/CoreTools.js +6 -5
- package/dist/constants/CoreTools.js.map +1 -1
- package/dist/constants/DefaultPhaseProfiles.d.ts.map +1 -1
- package/dist/constants/DefaultPhaseProfiles.js +29 -0
- package/dist/constants/DefaultPhaseProfiles.js.map +1 -1
- package/dist/constants/ReservedIdentities.d.ts +14 -0
- package/dist/constants/ReservedIdentities.d.ts.map +1 -0
- package/dist/constants/ReservedIdentities.js +42 -0
- package/dist/constants/ReservedIdentities.js.map +1 -0
- package/dist/database/adapters/mongodb/MongoKnowledgeGraphRepository.d.ts +16 -16
- package/dist/database/adapters/mongodb/MongoKnowledgeGraphRepository.d.ts.map +1 -1
- package/dist/database/adapters/mongodb/MongoKnowledgeGraphRepository.js +98 -36
- package/dist/database/adapters/mongodb/MongoKnowledgeGraphRepository.js.map +1 -1
- package/dist/events/ClientEventBus.d.ts +28 -0
- package/dist/events/ClientEventBus.d.ts.map +1 -1
- package/dist/events/ClientEventBus.js +87 -40
- package/dist/events/ClientEventBus.js.map +1 -1
- package/dist/events/EventBus.d.ts +19 -1
- package/dist/events/EventBus.d.ts.map +1 -1
- package/dist/events/EventBus.js +23 -0
- package/dist/events/EventBus.js.map +1 -1
- package/dist/events/EventBusBase.d.ts +37 -6
- package/dist/events/EventBusBase.d.ts.map +1 -1
- package/dist/events/EventBusBase.js +75 -27
- package/dist/events/EventBusBase.js.map +1 -1
- package/dist/events/EventNames.d.ts +49 -36
- package/dist/events/EventNames.d.ts.map +1 -1
- package/dist/events/EventNames.js +38 -36
- package/dist/events/EventNames.js.map +1 -1
- package/dist/events/PublicEvents.d.ts +5 -1
- package/dist/events/PublicEvents.d.ts.map +1 -1
- package/dist/events/PublicEvents.js +7 -0
- package/dist/events/PublicEvents.js.map +1 -1
- package/dist/events/ServerEventBus.d.ts +7 -54
- package/dist/events/ServerEventBus.d.ts.map +1 -1
- package/dist/events/ServerEventBus.js +10 -96
- package/dist/events/ServerEventBus.js.map +1 -1
- package/dist/events/event-definitions/ControlLoopEvents.d.ts +35 -0
- package/dist/events/event-definitions/ControlLoopEvents.d.ts.map +1 -1
- package/dist/events/event-definitions/ControlLoopEvents.js +6 -0
- package/dist/events/event-definitions/ControlLoopEvents.js.map +1 -1
- package/dist/events/event-definitions/SdkEvents.d.ts +55 -0
- package/dist/events/event-definitions/SdkEvents.d.ts.map +1 -0
- package/dist/events/event-definitions/SdkEvents.js +36 -0
- package/dist/events/event-definitions/SdkEvents.js.map +1 -0
- package/dist/events/event-definitions/TaskEvents.d.ts +2 -7
- package/dist/events/event-definitions/TaskEvents.d.ts.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/AgentInterfaces.d.ts +5 -0
- package/dist/interfaces/AgentInterfaces.d.ts.map +1 -1
- package/dist/interfaces/ChannelConfig.d.ts +2 -2
- package/dist/interfaces/ChannelConfig.d.ts.map +1 -1
- package/dist/interfaces/ConversationMessage.d.ts +1 -1
- package/dist/interfaces/ConversationMessage.d.ts.map +1 -1
- package/dist/interfaces/IMemoryPersistence.d.ts +47 -1
- package/dist/interfaces/IMemoryPersistence.d.ts.map +1 -1
- package/dist/interfaces/SocketServiceInterface.d.ts +3 -2
- package/dist/interfaces/SocketServiceInterface.d.ts.map +1 -1
- package/dist/interfaces/TaskInterfaces.d.ts +14 -1
- package/dist/interfaces/TaskInterfaces.d.ts.map +1 -1
- package/dist/models/agent.d.ts +0 -1
- package/dist/models/agent.d.ts.map +1 -1
- package/dist/models/agent.js +0 -5
- package/dist/models/agent.js.map +1 -1
- package/dist/models/agentIdentityReservation.d.ts +42 -0
- package/dist/models/agentIdentityReservation.d.ts.map +1 -0
- package/dist/models/agentIdentityReservation.js +52 -0
- package/dist/models/agentIdentityReservation.js.map +1 -0
- package/dist/models/channel.d.ts +2 -0
- package/dist/models/channel.d.ts.map +1 -1
- package/dist/models/channel.js.map +1 -1
- package/dist/models/channelKey.d.ts +1 -0
- package/dist/models/channelKey.d.ts.map +1 -1
- package/dist/models/channelKey.js +5 -0
- package/dist/models/channelKey.js.map +1 -1
- package/dist/models/memory.d.ts +1 -1
- package/dist/models/memory.d.ts.map +1 -1
- package/dist/models/memory.js +9 -12
- package/dist/models/memory.js.map +1 -1
- package/dist/models/memoryStrata.d.ts +3 -16
- package/dist/models/memoryStrata.d.ts.map +1 -1
- package/dist/models/memoryStrata.js +3 -5
- package/dist/models/memoryStrata.js.map +1 -1
- package/dist/models/plan.d.ts +2 -2
- package/dist/models/plan.d.ts.map +1 -1
- package/dist/models/plan.js +1 -1
- package/dist/models/plan.js.map +1 -1
- package/dist/models/taskEffectiveness.d.ts +1 -0
- package/dist/models/taskEffectiveness.d.ts.map +1 -1
- package/dist/models/taskEffectiveness.js +7 -1
- package/dist/models/taskEffectiveness.js.map +1 -1
- package/dist/models/user.d.ts +4 -0
- package/dist/models/user.d.ts.map +1 -1
- package/dist/models/user.js +8 -0
- package/dist/models/user.js.map +1 -1
- package/dist/protocols/mcp/LlmTestEnvironmentGuard.d.ts +16 -0
- package/dist/protocols/mcp/LlmTestEnvironmentGuard.d.ts.map +1 -0
- package/dist/protocols/mcp/LlmTestEnvironmentGuard.js +25 -0
- package/dist/protocols/mcp/LlmTestEnvironmentGuard.js.map +1 -0
- package/dist/protocols/mcp/McpServerTypes.d.ts +9 -0
- package/dist/protocols/mcp/McpServerTypes.d.ts.map +1 -1
- package/dist/protocols/mcp/providers/AnthropicMcpClient.d.ts.map +1 -1
- package/dist/protocols/mcp/providers/AnthropicMcpClient.js +1 -0
- package/dist/protocols/mcp/providers/AnthropicMcpClient.js.map +1 -1
- package/dist/protocols/mcp/providers/AzureOpenAiMcpClient.d.ts.map +1 -1
- package/dist/protocols/mcp/providers/AzureOpenAiMcpClient.js +1 -0
- package/dist/protocols/mcp/providers/AzureOpenAiMcpClient.js.map +1 -1
- package/dist/protocols/mcp/providers/BaseMcpClient.d.ts +4 -0
- package/dist/protocols/mcp/providers/BaseMcpClient.d.ts.map +1 -1
- package/dist/protocols/mcp/providers/BaseMcpClient.js +10 -0
- package/dist/protocols/mcp/providers/BaseMcpClient.js.map +1 -1
- package/dist/protocols/mcp/providers/CustomMcpClient.d.ts.map +1 -1
- package/dist/protocols/mcp/providers/CustomMcpClient.js +7 -0
- package/dist/protocols/mcp/providers/CustomMcpClient.js.map +1 -1
- package/dist/protocols/mcp/providers/GeminiMcpClient.d.ts.map +1 -1
- package/dist/protocols/mcp/providers/GeminiMcpClient.js +1 -0
- package/dist/protocols/mcp/providers/GeminiMcpClient.js.map +1 -1
- package/dist/protocols/mcp/providers/OllamaMcpClient.d.ts +1 -0
- package/dist/protocols/mcp/providers/OllamaMcpClient.d.ts.map +1 -1
- package/dist/protocols/mcp/providers/OllamaMcpClient.js +1 -0
- package/dist/protocols/mcp/providers/OllamaMcpClient.js.map +1 -1
- package/dist/protocols/mcp/providers/OpenAiMcpClient.d.ts.map +1 -1
- package/dist/protocols/mcp/providers/OpenAiMcpClient.js +1 -0
- package/dist/protocols/mcp/providers/OpenAiMcpClient.js.map +1 -1
- package/dist/protocols/mcp/providers/OpenRouterMcpClient.d.ts.map +1 -1
- package/dist/protocols/mcp/providers/OpenRouterMcpClient.js +2 -0
- package/dist/protocols/mcp/providers/OpenRouterMcpClient.js.map +1 -1
- package/dist/protocols/mcp/providers/XaiMcpClient.d.ts.map +1 -1
- package/dist/protocols/mcp/providers/XaiMcpClient.js +1 -0
- package/dist/protocols/mcp/providers/XaiMcpClient.js.map +1 -1
- package/dist/protocols/mcp/security/BrowserTargetGuard.d.ts +14 -0
- package/dist/protocols/mcp/security/BrowserTargetGuard.d.ts.map +1 -0
- package/dist/protocols/mcp/security/BrowserTargetGuard.js +55 -0
- package/dist/protocols/mcp/security/BrowserTargetGuard.js.map +1 -0
- package/dist/protocols/mcp/security/ExternalMcpRegistrationPolicy.d.ts +24 -0
- package/dist/protocols/mcp/security/ExternalMcpRegistrationPolicy.d.ts.map +1 -0
- package/dist/protocols/mcp/security/ExternalMcpRegistrationPolicy.js +33 -0
- package/dist/protocols/mcp/security/ExternalMcpRegistrationPolicy.js.map +1 -0
- package/dist/protocols/mcp/security/HttpTargetGuard.d.ts.map +1 -1
- package/dist/protocols/mcp/security/HttpTargetGuard.js +68 -6
- package/dist/protocols/mcp/security/HttpTargetGuard.js.map +1 -1
- package/dist/protocols/mcp/security/McpSecurityGuard.d.ts.map +1 -1
- package/dist/protocols/mcp/security/McpSecurityGuard.js +7 -5
- package/dist/protocols/mcp/security/McpSecurityGuard.js.map +1 -1
- package/dist/protocols/mcp/security/McpToolPolicy.d.ts +18 -0
- package/dist/protocols/mcp/security/McpToolPolicy.d.ts.map +1 -1
- package/dist/protocols/mcp/security/McpToolPolicy.js +60 -0
- package/dist/protocols/mcp/security/McpToolPolicy.js.map +1 -1
- package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts +25 -0
- package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts.map +1 -1
- package/dist/protocols/mcp/services/ExternalMcpServerManager.js +93 -17
- package/dist/protocols/mcp/services/ExternalMcpServerManager.js.map +1 -1
- package/dist/protocols/mcp/services/ExternalServerConfigs.d.ts +2 -2
- package/dist/protocols/mcp/services/ExternalServerConfigs.d.ts.map +1 -1
- package/dist/protocols/mcp/services/ExternalServerConfigs.js +25 -8
- package/dist/protocols/mcp/services/ExternalServerConfigs.js.map +1 -1
- package/dist/protocols/mcp/tools/AnalyticsTools.d.ts +3 -37
- package/dist/protocols/mcp/tools/AnalyticsTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/AnalyticsTools.js +134 -614
- package/dist/protocols/mcp/tools/AnalyticsTools.js.map +1 -1
- package/dist/protocols/mcp/tools/CodeAnalysisTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/CodeAnalysisTools.js +16 -13
- package/dist/protocols/mcp/tools/CodeAnalysisTools.js.map +1 -1
- package/dist/protocols/mcp/tools/EffectivenessTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/EffectivenessTools.js +94 -30
- package/dist/protocols/mcp/tools/EffectivenessTools.js.map +1 -1
- package/dist/protocols/mcp/tools/GitTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/GitTools.js +9 -5
- package/dist/protocols/mcp/tools/GitTools.js.map +1 -1
- package/dist/protocols/mcp/tools/InfrastructureTools.d.ts +10 -40
- package/dist/protocols/mcp/tools/InfrastructureTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/InfrastructureTools.js +29 -70
- package/dist/protocols/mcp/tools/InfrastructureTools.js.map +1 -1
- package/dist/protocols/mcp/tools/JsonTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/JsonTools.js +4 -4
- package/dist/protocols/mcp/tools/JsonTools.js.map +1 -1
- package/dist/protocols/mcp/tools/KnowledgeGraphTools.d.ts +55 -592
- package/dist/protocols/mcp/tools/KnowledgeGraphTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/KnowledgeGraphTools.js +169 -119
- package/dist/protocols/mcp/tools/KnowledgeGraphTools.js.map +1 -1
- package/dist/protocols/mcp/tools/MemorySearchTools.d.ts +6 -6
- package/dist/protocols/mcp/tools/MemorySearchTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/MemorySearchTools.js +107 -39
- package/dist/protocols/mcp/tools/MemorySearchTools.js.map +1 -1
- package/dist/protocols/mcp/tools/MemoryUtilityTools.d.ts +4 -5
- package/dist/protocols/mcp/tools/MemoryUtilityTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/MemoryUtilityTools.js +59 -208
- package/dist/protocols/mcp/tools/MemoryUtilityTools.js.map +1 -1
- package/dist/protocols/mcp/tools/PlanningTools.d.ts +2 -1
- package/dist/protocols/mcp/tools/PlanningTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/PlanningTools.js +111 -49
- package/dist/protocols/mcp/tools/PlanningTools.js.map +1 -1
- package/dist/protocols/mcp/tools/ProjectContextTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/ProjectContextTools.js +18 -12
- package/dist/protocols/mcp/tools/ProjectContextTools.js.map +1 -1
- package/dist/protocols/mcp/tools/SafetyTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/SafetyTools.js +16 -13
- package/dist/protocols/mcp/tools/SafetyTools.js.map +1 -1
- package/dist/protocols/mcp/tools/SearchProjectTools.d.ts +24 -7
- package/dist/protocols/mcp/tools/SearchProjectTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/SearchProjectTools.js +226 -126
- package/dist/protocols/mcp/tools/SearchProjectTools.js.map +1 -1
- package/dist/protocols/mcp/tools/TaskPlanningTools.d.ts +0 -32
- package/dist/protocols/mcp/tools/TaskPlanningTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/TaskPlanningTools.js +363 -450
- package/dist/protocols/mcp/tools/TaskPlanningTools.js.map +1 -1
- package/dist/protocols/mcp/tools/TestTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/TestTools.js +18 -11
- package/dist/protocols/mcp/tools/TestTools.js.map +1 -1
- package/dist/protocols/mcp/tools/TypeScriptTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/TypeScriptTools.js +22 -12
- package/dist/protocols/mcp/tools/TypeScriptTools.js.map +1 -1
- package/dist/protocols/mcp/tools/UserInputTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/UserInputTools.js +14 -1
- package/dist/protocols/mcp/tools/UserInputTools.js.map +1 -1
- package/dist/protocols/mcp/tools/UserMemoryTools.d.ts +3 -1
- package/dist/protocols/mcp/tools/UserMemoryTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/UserMemoryTools.js +27 -62
- package/dist/protocols/mcp/tools/UserMemoryTools.js.map +1 -1
- package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.js +14 -60
- package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.js.map +1 -1
- package/dist/protocols/mcp/tools/shell/ShellSandbox.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/shell/ShellSandbox.js +9 -27
- package/dist/protocols/mcp/tools/shell/ShellSandbox.js.map +1 -1
- package/dist/repositories/interfaces/IKnowledgeGraphRepository.d.ts +40 -30
- package/dist/repositories/interfaces/IKnowledgeGraphRepository.d.ts.map +1 -1
- package/dist/schemas/EventPayloadSchema.d.ts +28 -0
- package/dist/schemas/EventPayloadSchema.d.ts.map +1 -1
- package/dist/schemas/EventPayloadSchema.js +30 -1
- package/dist/schemas/EventPayloadSchema.js.map +1 -1
- package/dist/schemas/MxpProtocolSchemas.d.ts +6 -6
- package/dist/services/AgentPerformanceService.d.ts +11 -0
- package/dist/services/AgentPerformanceService.d.ts.map +1 -1
- package/dist/services/AgentPerformanceService.js +59 -33
- package/dist/services/AgentPerformanceService.js.map +1 -1
- package/dist/services/AutoCorrectionService.d.ts +3 -0
- package/dist/services/AutoCorrectionService.d.ts.map +1 -1
- package/dist/services/AutoCorrectionService.js +19 -2
- package/dist/services/AutoCorrectionService.js.map +1 -1
- package/dist/services/BackgroundTaskManager.d.ts +23 -7
- package/dist/services/BackgroundTaskManager.d.ts.map +1 -1
- package/dist/services/BackgroundTaskManager.js +137 -57
- package/dist/services/BackgroundTaskManager.js.map +1 -1
- package/dist/services/BrowserManager.d.ts +2 -0
- package/dist/services/BrowserManager.d.ts.map +1 -1
- package/dist/services/BrowserManager.js +18 -15
- package/dist/services/BrowserManager.js.map +1 -1
- package/dist/services/ChannelContextMemoryOperations.d.ts +8 -1
- package/dist/services/ChannelContextMemoryOperations.d.ts.map +1 -1
- package/dist/services/ChannelContextMemoryOperations.js +89 -165
- package/dist/services/ChannelContextMemoryOperations.js.map +1 -1
- package/dist/services/ChannelContextMessageOperations.d.ts +4 -3
- package/dist/services/ChannelContextMessageOperations.d.ts.map +1 -1
- package/dist/services/ChannelContextMessageOperations.js +72 -212
- package/dist/services/ChannelContextMessageOperations.js.map +1 -1
- package/dist/services/MemoryService.d.ts +52 -21
- package/dist/services/MemoryService.d.ts.map +1 -1
- package/dist/services/MemoryService.js +775 -548
- package/dist/services/MemoryService.js.map +1 -1
- package/dist/services/PatternLearningService.d.ts +5 -0
- package/dist/services/PatternLearningService.d.ts.map +1 -1
- package/dist/services/PatternLearningService.js +26 -3
- package/dist/services/PatternLearningService.js.map +1 -1
- package/dist/services/PerformanceOptimizationService.d.ts +2 -1
- package/dist/services/PerformanceOptimizationService.d.ts.map +1 -1
- package/dist/services/PerformanceOptimizationService.js +21 -6
- package/dist/services/PerformanceOptimizationService.js.map +1 -1
- package/dist/services/PredictiveAnalyticsService.d.ts +1 -0
- package/dist/services/PredictiveAnalyticsService.d.ts.map +1 -1
- package/dist/services/PredictiveAnalyticsService.js +18 -6
- package/dist/services/PredictiveAnalyticsService.js.map +1 -1
- package/dist/services/ProactiveValidationService.d.ts +6 -0
- package/dist/services/ProactiveValidationService.d.ts.map +1 -1
- package/dist/services/ProactiveValidationService.js +58 -39
- package/dist/services/ProactiveValidationService.js.map +1 -1
- package/dist/services/TaskEffectivenessService.d.ts +55 -31
- package/dist/services/TaskEffectivenessService.d.ts.map +1 -1
- package/dist/services/TaskEffectivenessService.js +243 -125
- package/dist/services/TaskEffectivenessService.js.map +1 -1
- package/dist/services/ToolExecutionInterceptor.d.ts +4 -0
- package/dist/services/ToolExecutionInterceptor.d.ts.map +1 -1
- package/dist/services/ToolExecutionInterceptor.js +31 -5
- package/dist/services/ToolExecutionInterceptor.js.map +1 -1
- package/dist/services/UserInputRequestManager.d.ts +13 -3
- package/dist/services/UserInputRequestManager.d.ts.map +1 -1
- package/dist/services/UserInputRequestManager.js +42 -6
- package/dist/services/UserInputRequestManager.js.map +1 -1
- package/dist/services/UserMemoryService.d.ts +2 -0
- package/dist/services/UserMemoryService.d.ts.map +1 -1
- package/dist/services/UserMemoryService.js +9 -4
- package/dist/services/UserMemoryService.js.map +1 -1
- package/dist/services/ValidationAnalyticsService.d.ts +4 -0
- package/dist/services/ValidationAnalyticsService.d.ts.map +1 -1
- package/dist/services/ValidationAnalyticsService.js +30 -8
- package/dist/services/ValidationAnalyticsService.js.map +1 -1
- package/dist/services/ValidationCacheService.d.ts +3 -1
- package/dist/services/ValidationCacheService.d.ts.map +1 -1
- package/dist/services/ValidationCacheService.js +25 -4
- package/dist/services/ValidationCacheService.js.map +1 -1
- package/dist/services/ValidationMiddleware.d.ts +7 -0
- package/dist/services/ValidationMiddleware.d.ts.map +1 -1
- package/dist/services/ValidationMiddleware.js +53 -10
- package/dist/services/ValidationMiddleware.js.map +1 -1
- package/dist/services/ValidationPerformanceService.d.ts +3 -0
- package/dist/services/ValidationPerformanceService.d.ts.map +1 -1
- package/dist/services/ValidationPerformanceService.js +28 -11
- package/dist/services/ValidationPerformanceService.js.map +1 -1
- package/dist/services/WebSearchService.d.ts.map +1 -1
- package/dist/services/WebSearchService.js +9 -0
- package/dist/services/WebSearchService.js.map +1 -1
- package/dist/services/dag/TaskDagService.d.ts +3 -0
- package/dist/services/dag/TaskDagService.d.ts.map +1 -1
- package/dist/services/dag/TaskDagService.js +18 -0
- package/dist/services/dag/TaskDagService.js.map +1 -1
- package/dist/services/kg/EntityQValueManager.d.ts +3 -1
- package/dist/services/kg/EntityQValueManager.d.ts.map +1 -1
- package/dist/services/kg/EntityQValueManager.js +10 -10
- package/dist/services/kg/EntityQValueManager.js.map +1 -1
- package/dist/services/kg/GraphSurpriseCalculator.d.ts +0 -4
- package/dist/services/kg/GraphSurpriseCalculator.d.ts.map +1 -1
- package/dist/services/kg/GraphSurpriseCalculator.js +0 -9
- package/dist/services/kg/GraphSurpriseCalculator.js.map +1 -1
- package/dist/services/kg/KnowledgeGraphService.d.ts +12 -12
- package/dist/services/kg/KnowledgeGraphService.d.ts.map +1 -1
- package/dist/services/kg/KnowledgeGraphService.js +43 -51
- package/dist/services/kg/KnowledgeGraphService.js.map +1 -1
- package/dist/services/kg/OrparGraphIntegration.d.ts.map +1 -1
- package/dist/services/kg/OrparGraphIntegration.js +6 -5
- package/dist/services/kg/OrparGraphIntegration.js.map +1 -1
- package/dist/services/orpar-memory/CycleConsolidationTrigger.d.ts +1 -0
- package/dist/services/orpar-memory/CycleConsolidationTrigger.d.ts.map +1 -1
- package/dist/services/orpar-memory/CycleConsolidationTrigger.js +8 -1
- package/dist/services/orpar-memory/CycleConsolidationTrigger.js.map +1 -1
- package/dist/services/orpar-memory/OrparMemoryCoordinator.d.ts +8 -1
- package/dist/services/orpar-memory/OrparMemoryCoordinator.d.ts.map +1 -1
- package/dist/services/orpar-memory/OrparMemoryCoordinator.js +93 -45
- package/dist/services/orpar-memory/OrparMemoryCoordinator.js.map +1 -1
- package/dist/services/orpar-memory/SurpriseOrparAdapter.d.ts +1 -0
- package/dist/services/orpar-memory/SurpriseOrparAdapter.d.ts.map +1 -1
- package/dist/services/orpar-memory/SurpriseOrparAdapter.js +8 -1
- package/dist/services/orpar-memory/SurpriseOrparAdapter.js.map +1 -1
- package/dist/types/ChannelContext.d.ts +2 -1
- package/dist/types/ChannelContext.d.ts.map +1 -1
- package/dist/types/EffectivenessTypes.d.ts +4 -1
- package/dist/types/EffectivenessTypes.d.ts.map +1 -1
- package/dist/types/TaskCompletionTypes.d.ts +7 -5
- package/dist/types/TaskCompletionTypes.d.ts.map +1 -1
- package/dist/types/TaskTypes.d.ts +8 -1
- package/dist/types/TaskTypes.d.ts.map +1 -1
- package/dist/utils/GlobMatcher.d.ts +37 -0
- package/dist/utils/GlobMatcher.d.ts.map +1 -0
- package/dist/utils/GlobMatcher.js +131 -0
- package/dist/utils/GlobMatcher.js.map +1 -0
- package/package.json +1 -1
- package/src/config/ModelContextLimits.ts +7 -1
- package/src/constants/CoreTools.ts +6 -5
- package/src/constants/DefaultPhaseProfiles.ts +29 -0
- package/src/constants/ReservedIdentities.ts +51 -0
- package/src/database/adapters/mongodb/MongoKnowledgeGraphRepository.ts +115 -36
- package/src/events/ClientEventBus.ts +117 -48
- package/src/events/EventBus.ts +32 -2
- package/src/events/EventBusBase.ts +132 -39
- package/src/events/EventNames.ts +43 -36
- package/src/events/PublicEvents.ts +8 -0
- package/src/events/ServerEventBus.ts +9 -128
- package/src/events/event-definitions/ControlLoopEvents.ts +12 -0
- package/src/events/event-definitions/SdkEvents.ts +58 -0
- package/src/events/event-definitions/TaskEvents.ts +2 -2
- package/src/index.ts +15 -0
- package/src/interfaces/AgentInterfaces.ts +5 -0
- package/src/interfaces/ChannelConfig.ts +2 -2
- package/src/interfaces/ConversationMessage.ts +5 -0
- package/src/interfaces/IMemoryPersistence.ts +55 -1
- package/src/interfaces/SocketServiceInterface.ts +3 -2
- package/src/interfaces/TaskInterfaces.ts +16 -1
- package/src/models/agent.ts +0 -6
- package/src/models/agentIdentityReservation.ts +77 -0
- package/src/models/channel.ts +2 -0
- package/src/models/channelKey.ts +10 -0
- package/src/models/memory.ts +18 -19
- package/src/models/memoryStrata.ts +9 -23
- package/src/models/plan.ts +3 -3
- package/src/models/taskEffectiveness.ts +9 -2
- package/src/models/user.ts +12 -0
- package/src/protocols/mcp/LlmTestEnvironmentGuard.ts +30 -0
- package/src/protocols/mcp/McpServerTypes.ts +9 -0
- package/src/protocols/mcp/providers/AnthropicMcpClient.ts +2 -0
- package/src/protocols/mcp/providers/AzureOpenAiMcpClient.ts +1 -0
- package/src/protocols/mcp/providers/BaseMcpClient.ts +13 -0
- package/src/protocols/mcp/providers/CustomMcpClient.ts +7 -0
- package/src/protocols/mcp/providers/GeminiMcpClient.ts +2 -0
- package/src/protocols/mcp/providers/OllamaMcpClient.ts +3 -1
- package/src/protocols/mcp/providers/OpenAiMcpClient.ts +2 -0
- package/src/protocols/mcp/providers/OpenRouterMcpClient.ts +3 -0
- package/src/protocols/mcp/providers/XaiMcpClient.ts +2 -0
- package/src/protocols/mcp/security/BrowserTargetGuard.ts +64 -0
- package/src/protocols/mcp/security/ExternalMcpRegistrationPolicy.ts +38 -0
- package/src/protocols/mcp/security/HttpTargetGuard.ts +77 -6
- package/src/protocols/mcp/security/McpSecurityGuard.ts +7 -5
- package/src/protocols/mcp/security/McpToolPolicy.ts +74 -0
- package/src/protocols/mcp/services/ExternalMcpServerManager.ts +146 -17
- package/src/protocols/mcp/services/ExternalServerConfigs.ts +26 -8
- package/src/protocols/mcp/tools/AnalyticsTools.ts +167 -641
- package/src/protocols/mcp/tools/CodeAnalysisTools.ts +44 -14
- package/src/protocols/mcp/tools/EffectivenessTools.ts +185 -45
- package/src/protocols/mcp/tools/GitTools.ts +15 -5
- package/src/protocols/mcp/tools/InfrastructureTools.ts +42 -90
- package/src/protocols/mcp/tools/JsonTools.ts +7 -4
- package/src/protocols/mcp/tools/KnowledgeGraphTools.ts +313 -164
- package/src/protocols/mcp/tools/MemorySearchTools.ts +158 -46
- package/src/protocols/mcp/tools/MemoryUtilityTools.ts +85 -232
- package/src/protocols/mcp/tools/PlanningTools.ts +137 -59
- package/src/protocols/mcp/tools/ProjectContextTools.ts +33 -12
- package/src/protocols/mcp/tools/SafetyTools.ts +49 -13
- package/src/protocols/mcp/tools/SearchProjectTools.ts +294 -153
- package/src/protocols/mcp/tools/TaskPlanningTools.ts +437 -514
- package/src/protocols/mcp/tools/TestTools.ts +41 -11
- package/src/protocols/mcp/tools/TypeScriptTools.ts +61 -12
- package/src/protocols/mcp/tools/UserInputTools.ts +15 -1
- package/src/protocols/mcp/tools/UserMemoryTools.ts +27 -62
- package/src/protocols/mcp/tools/shell/ShellExecuteHandler.ts +26 -84
- package/src/protocols/mcp/tools/shell/ShellSandbox.ts +13 -31
- package/src/repositories/interfaces/IKnowledgeGraphRepository.ts +45 -27
- package/src/schemas/EventPayloadSchema.ts +45 -1
- package/src/services/AgentPerformanceService.ts +85 -36
- package/src/services/AutoCorrectionService.ts +25 -6
- package/src/services/BackgroundTaskManager.ts +183 -76
- package/src/services/BrowserManager.ts +20 -16
- package/src/services/ChannelContextMemoryOperations.ts +169 -202
- package/src/services/ChannelContextMessageOperations.ts +112 -274
- package/src/services/MemoryService.ts +1053 -760
- package/src/services/PatternLearningService.ts +32 -7
- package/src/services/PerformanceOptimizationService.ts +26 -9
- package/src/services/PredictiveAnalyticsService.ts +23 -10
- package/src/services/ProactiveValidationService.ts +66 -40
- package/src/services/TaskEffectivenessService.ts +421 -206
- package/src/services/ToolExecutionInterceptor.ts +40 -9
- package/src/services/UserInputRequestManager.ts +51 -6
- package/src/services/UserMemoryService.ts +12 -3
- package/src/services/ValidationAnalyticsService.ts +36 -11
- package/src/services/ValidationCacheService.ts +30 -7
- package/src/services/ValidationMiddleware.ts +62 -14
- package/src/services/ValidationPerformanceService.ts +47 -25
- package/src/services/WebSearchService.ts +16 -4
- package/src/services/dag/TaskDagService.ts +20 -1
- package/src/services/kg/EntityQValueManager.ts +21 -10
- package/src/services/kg/GraphSurpriseCalculator.ts +0 -14
- package/src/services/kg/KnowledgeGraphService.ts +56 -48
- package/src/services/kg/OrparGraphIntegration.ts +11 -5
- package/src/services/orpar-memory/CycleConsolidationTrigger.ts +10 -1
- package/src/services/orpar-memory/OrparMemoryCoordinator.ts +142 -71
- package/src/services/orpar-memory/SurpriseOrparAdapter.ts +10 -1
- package/src/types/ChannelContext.ts +3 -1
- package/src/types/EffectivenessTypes.ts +6 -2
- package/src/types/TaskCompletionTypes.ts +9 -9
- package/src/types/TaskTypes.ts +12 -1
- package/src/utils/GlobMatcher.ts +157 -0
|
@@ -24,12 +24,17 @@ const logger = new Logger('info', 'UserMemoryTools', 'server');
|
|
|
24
24
|
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
25
25
|
/** Valid memory types — used for input validation across all tools */
|
|
26
26
|
const VALID_TYPES = ['user', 'feedback', 'project', 'reference'];
|
|
27
|
-
/**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
/** Derive a collision-safe persistent scope from authenticated identity only. */
|
|
28
|
+
export function getUserMemoryScopeKey(context) {
|
|
29
|
+
if (typeof context.agentId !== 'string' || context.agentId.trim().length === 0 ||
|
|
30
|
+
typeof context.channelId !== 'string' || context.channelId.trim().length === 0) {
|
|
31
|
+
throw new Error('User memory requires exact authenticated agent and channel identity');
|
|
32
|
+
}
|
|
33
|
+
if (context.agentId !== context.agentId.trim() ||
|
|
34
|
+
context.channelId !== context.channelId.trim()) {
|
|
35
|
+
throw new Error('User memory identity must not contain surrounding whitespace');
|
|
36
|
+
}
|
|
37
|
+
return JSON.stringify([context.agentId, context.channelId]);
|
|
33
38
|
}
|
|
34
39
|
// ─── Tool: user_memory_save ───────────────────────────────────────────────────
|
|
35
40
|
/**
|
|
@@ -70,25 +75,20 @@ export const userMemorySaveTool = {
|
|
|
70
75
|
const { type, title, description, content } = input;
|
|
71
76
|
// Validate type is a recognised value
|
|
72
77
|
if (!VALID_TYPES.includes(type)) {
|
|
73
|
-
|
|
74
|
-
content: {
|
|
75
|
-
type: 'text',
|
|
76
|
-
data: `Invalid type "${type}". Must be one of: ${VALID_TYPES.join(', ')}.`
|
|
77
|
-
}
|
|
78
|
-
};
|
|
78
|
+
throw new Error(`Invalid type "${type}". Must be one of: ${VALID_TYPES.join(', ')}.`);
|
|
79
79
|
}
|
|
80
80
|
// Validate required string fields are non-empty
|
|
81
81
|
if (!title?.trim()) {
|
|
82
|
-
|
|
82
|
+
throw new Error('title must not be empty.');
|
|
83
83
|
}
|
|
84
84
|
if (!description?.trim()) {
|
|
85
|
-
|
|
85
|
+
throw new Error('description must not be empty.');
|
|
86
86
|
}
|
|
87
87
|
if (!content?.trim()) {
|
|
88
|
-
|
|
88
|
+
throw new Error('content must not be empty.');
|
|
89
89
|
}
|
|
90
90
|
try {
|
|
91
|
-
const userId =
|
|
91
|
+
const userId = getUserMemoryScopeKey(context);
|
|
92
92
|
const service = UserMemoryService.getInstance();
|
|
93
93
|
await service.save(userId, { type, title, description, content });
|
|
94
94
|
logger.info(`Saved user memory "${title}" (${type}) for userId=${userId}`);
|
|
@@ -102,12 +102,7 @@ export const userMemorySaveTool = {
|
|
|
102
102
|
catch (err) {
|
|
103
103
|
const message = err instanceof Error ? err.message : String(err);
|
|
104
104
|
logger.error('user_memory_save failed', err);
|
|
105
|
-
|
|
106
|
-
content: {
|
|
107
|
-
type: 'text',
|
|
108
|
-
data: `Failed to save memory: ${message}`
|
|
109
|
-
}
|
|
110
|
-
};
|
|
105
|
+
throw new Error(`Failed to save memory: ${message}`);
|
|
111
106
|
}
|
|
112
107
|
}
|
|
113
108
|
};
|
|
@@ -147,21 +142,16 @@ export const userMemoryRecallTool = {
|
|
|
147
142
|
const { query, type, limit } = input;
|
|
148
143
|
// Validate query is non-empty
|
|
149
144
|
if (!query?.trim()) {
|
|
150
|
-
|
|
145
|
+
throw new Error('query must not be empty.');
|
|
151
146
|
}
|
|
152
147
|
// Validate optional type
|
|
153
148
|
if (type !== undefined && !VALID_TYPES.includes(type)) {
|
|
154
|
-
|
|
155
|
-
content: {
|
|
156
|
-
type: 'text',
|
|
157
|
-
data: `Invalid type "${type}". Must be one of: ${VALID_TYPES.join(', ')}.`
|
|
158
|
-
}
|
|
159
|
-
};
|
|
149
|
+
throw new Error(`Invalid type "${type}". Must be one of: ${VALID_TYPES.join(', ')}.`);
|
|
160
150
|
}
|
|
161
151
|
// Clamp limit to 1–50
|
|
162
152
|
const resolvedLimit = limit !== undefined ? Math.min(50, Math.max(1, limit)) : 5;
|
|
163
153
|
try {
|
|
164
|
-
const userId =
|
|
154
|
+
const userId = getUserMemoryScopeKey(context);
|
|
165
155
|
const service = UserMemoryService.getInstance();
|
|
166
156
|
const results = await service.recall(userId, query, { type, limit: resolvedLimit });
|
|
167
157
|
if (results.length === 0) {
|
|
@@ -185,12 +175,7 @@ export const userMemoryRecallTool = {
|
|
|
185
175
|
catch (err) {
|
|
186
176
|
const message = err instanceof Error ? err.message : String(err);
|
|
187
177
|
logger.error('user_memory_recall failed', err);
|
|
188
|
-
|
|
189
|
-
content: {
|
|
190
|
-
type: 'text',
|
|
191
|
-
data: `Failed to recall memories: ${message}`
|
|
192
|
-
}
|
|
193
|
-
};
|
|
178
|
+
throw new Error(`Failed to recall memories: ${message}`);
|
|
194
179
|
}
|
|
195
180
|
}
|
|
196
181
|
};
|
|
@@ -221,15 +206,10 @@ export const userMemoryForgetTool = {
|
|
|
221
206
|
const { memoryId, searchTerm } = input;
|
|
222
207
|
// Require at least one deletion target
|
|
223
208
|
if (!memoryId?.trim() && !searchTerm?.trim()) {
|
|
224
|
-
|
|
225
|
-
content: {
|
|
226
|
-
type: 'text',
|
|
227
|
-
data: 'At least one of memoryId or searchTerm must be provided.'
|
|
228
|
-
}
|
|
229
|
-
};
|
|
209
|
+
throw new Error('At least one of memoryId or searchTerm must be provided.');
|
|
230
210
|
}
|
|
231
211
|
try {
|
|
232
|
-
const userId =
|
|
212
|
+
const userId = getUserMemoryScopeKey(context);
|
|
233
213
|
const service = UserMemoryService.getInstance();
|
|
234
214
|
const { deleted } = await service.forget(userId, {
|
|
235
215
|
memoryId: memoryId?.trim() || undefined,
|
|
@@ -250,12 +230,7 @@ export const userMemoryForgetTool = {
|
|
|
250
230
|
catch (err) {
|
|
251
231
|
const message = err instanceof Error ? err.message : String(err);
|
|
252
232
|
logger.error('user_memory_forget failed', err);
|
|
253
|
-
|
|
254
|
-
content: {
|
|
255
|
-
type: 'text',
|
|
256
|
-
data: `Failed to delete memory: ${message}`
|
|
257
|
-
}
|
|
258
|
-
};
|
|
233
|
+
throw new Error(`Failed to delete memory: ${message}`);
|
|
259
234
|
}
|
|
260
235
|
}
|
|
261
236
|
};
|
|
@@ -285,15 +260,10 @@ export const userMemoryShakeTool = {
|
|
|
285
260
|
const { thresholdDays } = input;
|
|
286
261
|
// Validate thresholdDays if provided
|
|
287
262
|
if (thresholdDays !== undefined && (typeof thresholdDays !== 'number' || thresholdDays < 1)) {
|
|
288
|
-
|
|
289
|
-
content: {
|
|
290
|
-
type: 'text',
|
|
291
|
-
data: 'thresholdDays must be a number >= 1.'
|
|
292
|
-
}
|
|
293
|
-
};
|
|
263
|
+
throw new Error('thresholdDays must be a number >= 1.');
|
|
294
264
|
}
|
|
295
265
|
try {
|
|
296
|
-
const userId =
|
|
266
|
+
const userId = getUserMemoryScopeKey(context);
|
|
297
267
|
const service = UserMemoryService.getInstance();
|
|
298
268
|
const stale = await service.shake(userId, thresholdDays);
|
|
299
269
|
if (stale.length === 0) {
|
|
@@ -320,12 +290,7 @@ export const userMemoryShakeTool = {
|
|
|
320
290
|
catch (err) {
|
|
321
291
|
const message = err instanceof Error ? err.message : String(err);
|
|
322
292
|
logger.error('user_memory_shake failed', err);
|
|
323
|
-
|
|
324
|
-
content: {
|
|
325
|
-
type: 'text',
|
|
326
|
-
data: `Failed to shake memories: ${message}`
|
|
327
|
-
}
|
|
328
|
-
};
|
|
293
|
+
throw new Error(`Failed to shake memories: ${message}`);
|
|
329
294
|
}
|
|
330
295
|
}
|
|
331
296
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserMemoryTools.js","sourceRoot":"","sources":["../../../../src/protocols/mcp/tools/UserMemoryTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAiBH,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAE/D,gFAAgF;AAEhF,sEAAsE;AACtE,MAAM,WAAW,GAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAEnF
|
|
1
|
+
{"version":3,"file":"UserMemoryTools.js","sourceRoot":"","sources":["../../../../src/protocols/mcp/tools/UserMemoryTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShellExecuteHandler.d.ts","sourceRoot":"","sources":["../../../../../src/protocols/mcp/tools/shell/ShellExecuteHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAuCH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"ShellExecuteHandler.d.ts","sourceRoot":"","sources":["../../../../../src/protocols/mcp/tools/shell/ShellExecuteHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAuCH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAezE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAC9B,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,qDAAqD;IACrD,SAAS,EAAE,SAAS,CAAC;IACrB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAC/B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,cAAc,CAAC,EAAE;QACb,iEAAiE;QACjE,QAAQ,EAAE,MAAM,CAAC;QACjB,0CAA0C;QAC1C,UAAU,EAAE,OAAO,CAAC;QACpB,+DAA+D;QAC/D,QAAQ,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAqCD;;;;;;;;;;;;GAYG;AACH,wBAAsB,OAAO,CACzB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAqR7B"}
|
|
@@ -25,28 +25,26 @@
|
|
|
25
25
|
* event emission. Replaces the inline handler in InfrastructureTools.ts.
|
|
26
26
|
*
|
|
27
27
|
* Key improvements over the original inline handler:
|
|
28
|
-
* -
|
|
28
|
+
* - Runs arbitrary commands only inside the Docker shell sandbox
|
|
29
29
|
* - Interprets exit codes semantically (e.g., grep returning 1 = no matches, not error)
|
|
30
30
|
* - Classifies commands (read-only, silent, category) for downstream decision-making
|
|
31
31
|
* - Emits lifecycle events (started, completed, failed, destructive warning)
|
|
32
32
|
* - Processes large output through LargeOutputHandler (truncation + MongoDB persistence)
|
|
33
33
|
* - Surfaces destructive command warnings as informational events
|
|
34
34
|
*/
|
|
35
|
-
import { spawn } from 'child_process';
|
|
36
35
|
import crypto from 'crypto';
|
|
37
36
|
import { Events } from '../../../../events/EventNames.js';
|
|
38
37
|
import { EventBus } from '../../../../events/EventBus.js';
|
|
39
38
|
import { createShellExecutionStartedPayload, createShellExecutionCompletedPayload, createShellExecutionFailedPayload, createShellDestructiveWarningPayload } from '../../../../schemas/ShellExecutionEventPayloads.js';
|
|
40
39
|
import { getSecurityGuard } from '../../security/McpSecurityGuard.js';
|
|
41
40
|
import { getConfirmationManager } from '../../security/McpConfirmationManager.js';
|
|
42
|
-
import { buildShellChildEnv,
|
|
41
|
+
import { assertCommandAllowlisted, buildShellChildEnv, isShellSandboxEnabled, requireWorkspaceRoot, resolveWorkspacePath } from '../../security/McpToolPolicy.js';
|
|
43
42
|
import { Logger } from '../../../../utils/Logger.js';
|
|
44
43
|
import { createStrictValidator } from '../../../../utils/validation.js';
|
|
45
44
|
import { classifyCommand } from './CommandClassification.js';
|
|
46
45
|
import { getDestructiveWarnings } from './DestructiveCommandWarnings.js';
|
|
47
46
|
import { interpretExitCode } from './CommandSemantics.js';
|
|
48
47
|
import { processOutput } from './LargeOutputHandler.js';
|
|
49
|
-
import { extractEffectiveCommands } from './ShellCommandParser.js';
|
|
50
48
|
import { executeInSandbox } from './ShellSandbox.js';
|
|
51
49
|
const logger = new Logger('info', 'ShellExecuteHandler', 'server');
|
|
52
50
|
const validator = createStrictValidator('ShellExecuteHandler');
|
|
@@ -77,39 +75,6 @@ function buildFullCommand(command, args) {
|
|
|
77
75
|
const escapedArgs = args.map(shellEscapeArg).join(' ');
|
|
78
76
|
return `${command} ${escapedArgs}`;
|
|
79
77
|
}
|
|
80
|
-
/**
|
|
81
|
-
* Execute a command using spawn() wrapped in a Promise.
|
|
82
|
-
* Returns stdout, stderr, and exit code once the process closes.
|
|
83
|
-
*/
|
|
84
|
-
function spawnCommand(fullCommand, cwd, env, timeout) {
|
|
85
|
-
return new Promise((resolve, reject) => {
|
|
86
|
-
const child = spawn(fullCommand, [], {
|
|
87
|
-
shell: true,
|
|
88
|
-
cwd,
|
|
89
|
-
env,
|
|
90
|
-
timeout
|
|
91
|
-
});
|
|
92
|
-
const stdoutChunks = [];
|
|
93
|
-
const stderrChunks = [];
|
|
94
|
-
child.stdout.on('data', (chunk) => {
|
|
95
|
-
stdoutChunks.push(chunk);
|
|
96
|
-
});
|
|
97
|
-
child.stderr.on('data', (chunk) => {
|
|
98
|
-
stderrChunks.push(chunk);
|
|
99
|
-
});
|
|
100
|
-
child.on('error', (err) => {
|
|
101
|
-
// Spawn-level error (e.g., command not found, ENOENT)
|
|
102
|
-
reject(err);
|
|
103
|
-
});
|
|
104
|
-
child.on('close', (exitCode) => {
|
|
105
|
-
resolve({
|
|
106
|
-
stdout: Buffer.concat(stdoutChunks).toString('utf-8'),
|
|
107
|
-
stderr: Buffer.concat(stderrChunks).toString('utf-8'),
|
|
108
|
-
exitCode: exitCode ?? 1
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
78
|
// ---------------------------------------------------------------------------
|
|
114
79
|
// Main execute function
|
|
115
80
|
// ---------------------------------------------------------------------------
|
|
@@ -130,13 +95,18 @@ export async function execute(input, context) {
|
|
|
130
95
|
try {
|
|
131
96
|
// ── 1. Validate input ──────────────────────────────────────────────
|
|
132
97
|
validator.assertIsString(input.command, 'command');
|
|
98
|
+
if (!isShellSandboxEnabled()) {
|
|
99
|
+
throw new Error('shell_execute requires MXF_SHELL_SANDBOX_ENABLED=true; ' +
|
|
100
|
+
'host shell execution is not workspace-contained');
|
|
101
|
+
}
|
|
102
|
+
const workingDirectory = resolveWorkspacePath(input.workingDirectory, 'shell_execute workingDirectory');
|
|
133
103
|
// ── 2. Classify the command ────────────────────────────────────────
|
|
134
104
|
const classification = classifyCommand(input.command);
|
|
135
105
|
// ── 3. Check for destructive warnings (informational only) ─────────
|
|
136
106
|
const destructiveWarnings = getDestructiveWarnings(input.command);
|
|
137
107
|
const warningMessages = destructiveWarnings.map(w => w.warning);
|
|
138
108
|
// ── 4. Security validation ─────────────────────────────────────────
|
|
139
|
-
const securityGuard = getSecurityGuard();
|
|
109
|
+
const securityGuard = getSecurityGuard(requireWorkspaceRoot('shell_execute'));
|
|
140
110
|
const confirmationManager = getConfirmationManager();
|
|
141
111
|
const securityContext = {
|
|
142
112
|
agentId: context.agentId,
|
|
@@ -174,21 +144,7 @@ export async function execute(input, context) {
|
|
|
174
144
|
// The allowlist comes from MXF_SHELL_ALLOWED_COMMANDS, not from the tool
|
|
175
145
|
// input. An allowlist passed as an argument is chosen by the model it is
|
|
176
146
|
// meant to restrict, which makes it decorative.
|
|
177
|
-
|
|
178
|
-
const allowedCommands = getShellAllowedCommands();
|
|
179
|
-
// Use the parser to extract the effective command, handling env
|
|
180
|
-
// prefixes (FOO=bar cmd) and wrappers (sudo cmd, timeout 5 cmd)
|
|
181
|
-
const effectiveCommands = extractEffectiveCommands(input.command);
|
|
182
|
-
for (const effectiveCmd of effectiveCommands) {
|
|
183
|
-
// extractEffectiveCommands yields the full command line; compare
|
|
184
|
-
// on the base binary so `git status` matches an allowlisted `git`.
|
|
185
|
-
const baseCommand = effectiveCmd.trim().split(/\s+/)[0];
|
|
186
|
-
if (!allowedCommands.includes(baseCommand)) {
|
|
187
|
-
throw new Error(`Command '${baseCommand}' is not in the configured allowlist ` +
|
|
188
|
-
`(MXF_SHELL_ALLOWED_COMMANDS). Allowed: ${allowedCommands.join(', ')}`);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
147
|
+
assertCommandAllowlisted(input.command);
|
|
192
148
|
// ── 7. Build command string and compute hash ───────────────────────
|
|
193
149
|
const fullCommand = buildFullCommand(input.command, input.args);
|
|
194
150
|
const commandHash = computeCommandHash(input.command);
|
|
@@ -222,13 +178,11 @@ export async function execute(input, context) {
|
|
|
222
178
|
// container with no network, a read-only root, dropped capabilities
|
|
223
179
|
// and resource limits. If Docker is unavailable, executeInSandbox
|
|
224
180
|
// throws — it never falls back to running on the host.
|
|
225
|
-
const result =
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
})
|
|
231
|
-
: await spawnCommand(fullCommand, input.workingDirectory || process.cwd(), childEnv, timeout);
|
|
181
|
+
const result = await executeInSandbox(fullCommand, { enabled: true }, {
|
|
182
|
+
timeout,
|
|
183
|
+
workingDirectory,
|
|
184
|
+
environment: childEnv
|
|
185
|
+
});
|
|
232
186
|
stdout = result.stdout;
|
|
233
187
|
stderr = result.stderr;
|
|
234
188
|
exitCode = result.exitCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShellExecuteHandler.js","sourceRoot":"","sources":["../../../../../src/protocols/mcp/tools/shell/ShellExecuteHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"ShellExecuteHandler.js","sourceRoot":"","sources":["../../../../../src/protocols/mcp/tools/shell/ShellExecuteHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShellSandbox.d.ts","sourceRoot":"","sources":["../../../../../src/protocols/mcp/tools/shell/ShellSandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAiCH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,+DAA+D;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,aAAa,EAAE,OAAO,CAAC;IACvB,wDAAwD;IACxD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,kCAAkC;IAClC,UAAU,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;KACrB,CAAC,CAAC;IACH,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,kBAO1C,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAc3D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gBAAgB,CAClC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACnC,OAAO,GAAE;IACL,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,GACP,OAAO,CAAC,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"ShellSandbox.d.ts","sourceRoot":"","sources":["../../../../../src/protocols/mcp/tools/shell/ShellSandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAiCH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,+DAA+D;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,aAAa,EAAE,OAAO,CAAC;IACvB,wDAAwD;IACxD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,kCAAkC;IAClC,UAAU,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;KACrB,CAAC,CAAC;IACH,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,kBAO1C,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAc3D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gBAAgB,CAClC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACnC,OAAO,GAAE;IACL,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,GACP,OAAO,CAAC,oBAAoB,CAAC,CA4K/B"}
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
* When Docker is unavailable, execution fails with an error — there is no
|
|
37
37
|
* silent fallback to host execution.
|
|
38
38
|
*/
|
|
39
|
-
import * as path from 'path';
|
|
40
39
|
import crypto from 'crypto';
|
|
41
40
|
import Docker from 'dockerode';
|
|
42
41
|
import { Logger } from '../../../../utils/Logger.js';
|
|
43
42
|
import { ContainerExecutionManager } from '../../../../services/ContainerExecutionManager.js';
|
|
43
|
+
import { resolveWorkspacePath } from '../../security/McpToolPolicy.js';
|
|
44
44
|
const logger = new Logger('info', 'ShellSandbox', 'server');
|
|
45
45
|
/** Docker image used for shell sandbox containers */
|
|
46
46
|
const SHELL_EXECUTOR_IMAGE = 'mxf/shell-executor:latest';
|
|
@@ -104,6 +104,7 @@ export async function executeInSandbox(command, config, options = {}) {
|
|
|
104
104
|
...DEFAULT_SHELL_SANDBOX_CONFIG,
|
|
105
105
|
...config
|
|
106
106
|
};
|
|
107
|
+
const workspaceDirectory = resolveWorkspacePath(options.workingDirectory, 'ShellSandbox workingDirectory');
|
|
107
108
|
// Verify Docker is available — fail fast, never fall back to host execution
|
|
108
109
|
const available = await isSandboxAvailable();
|
|
109
110
|
if (!available) {
|
|
@@ -118,15 +119,13 @@ export async function executeInSandbox(command, config, options = {}) {
|
|
|
118
119
|
`Build it with: docker build -t ${SHELL_EXECUTOR_IMAGE} docker/shell-executor/`);
|
|
119
120
|
}
|
|
120
121
|
// Build Docker volume mounts
|
|
121
|
-
const binds = buildBindMounts(mergedConfig,
|
|
122
|
+
const binds = buildBindMounts(mergedConfig, workspaceDirectory);
|
|
122
123
|
// Build environment variables for the container
|
|
123
124
|
const envVars = options.environment
|
|
124
125
|
? Object.entries(options.environment).map(([k, v]) => `${k}=${v}`)
|
|
125
126
|
: [];
|
|
126
127
|
// Determine the working directory inside the container
|
|
127
|
-
const containerWorkDir =
|
|
128
|
-
? mapHostPathToContainer(options.workingDirectory)
|
|
129
|
-
: '/workspace';
|
|
128
|
+
const containerWorkDir = '/workspace';
|
|
130
129
|
const containerId = `mxf-shell-${Date.now()}-${crypto.randomUUID().slice(0, 8)}`;
|
|
131
130
|
const timeout = options.timeout || 30000;
|
|
132
131
|
logger.info(`Executing sandboxed shell command in container ${containerId}`, {
|
|
@@ -268,38 +267,21 @@ async function checkShellExecutorImageExists() {
|
|
|
268
267
|
function buildBindMounts(config, workingDirectory) {
|
|
269
268
|
const binds = [];
|
|
270
269
|
// Mount the project directory (or working directory) as read-only at /workspace
|
|
271
|
-
const projectDir = workingDirectory
|
|
270
|
+
const projectDir = resolveWorkspacePath(workingDirectory, 'ShellSandbox project mount');
|
|
272
271
|
binds.push(`${projectDir}:/workspace:ro`);
|
|
273
272
|
// Mount writable paths — each gets mounted at the same path inside the container
|
|
274
273
|
for (const writablePath of config.writablePaths) {
|
|
275
|
-
|
|
274
|
+
const hostPath = resolveWorkspacePath(writablePath, 'ShellSandbox writable mount');
|
|
275
|
+
binds.push(`${hostPath}:${hostPath}:rw`);
|
|
276
276
|
}
|
|
277
277
|
// Mount custom mount configurations
|
|
278
278
|
for (const mount of config.mountPaths) {
|
|
279
279
|
const mode = mount.readOnly ? 'ro' : 'rw';
|
|
280
|
-
|
|
280
|
+
const hostPath = resolveWorkspacePath(mount.host, 'ShellSandbox custom mount');
|
|
281
|
+
binds.push(`${hostPath}:${mount.container}:${mode}`);
|
|
281
282
|
}
|
|
282
283
|
return binds;
|
|
283
284
|
}
|
|
284
|
-
/**
|
|
285
|
-
* Map a host filesystem path to its corresponding container path.
|
|
286
|
-
* The project root (process.cwd()) is mounted at /workspace, so subdirectories
|
|
287
|
-
* are resolved as relative paths under /workspace.
|
|
288
|
-
*
|
|
289
|
-
* @param hostPath - The host filesystem path
|
|
290
|
-
* @returns The corresponding path inside the container
|
|
291
|
-
*/
|
|
292
|
-
function mapHostPathToContainer(hostPath) {
|
|
293
|
-
const projectRoot = process.cwd();
|
|
294
|
-
const resolved = path.resolve(hostPath);
|
|
295
|
-
// If the host path is within the project root, compute relative path
|
|
296
|
-
if (resolved.startsWith(projectRoot)) {
|
|
297
|
-
const relative = resolved.substring(projectRoot.length);
|
|
298
|
-
return `/workspace${relative}`;
|
|
299
|
-
}
|
|
300
|
-
// Path is outside the project root — default to /workspace
|
|
301
|
-
return '/workspace';
|
|
302
|
-
}
|
|
303
285
|
/**
|
|
304
286
|
* Collect stdout and stderr from a Docker container after it finishes.
|
|
305
287
|
* Waits for the container to exit, then reads logs.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShellSandbox.js","sourceRoot":"","sources":["../../../../../src/protocols/mcp/tools/shell/ShellSandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"ShellSandbox.js","sourceRoot":"","sources":["../../../../../src/protocols/mcp/tools/shell/ShellSandbox.ts"],"names":[],"mappings":"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"}
|