@mxf-dev/core 2.0.4 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +118 -5
- package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts.map +1 -1
- package/dist/protocols/mcp/services/ExternalMcpServerManager.js +499 -98
- 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 +656 -111
- 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
|
@@ -34,6 +34,7 @@ import { Events } from '../../../events/EventNames.js';
|
|
|
34
34
|
import { createChannelMessageEventPayload, createAgentMessageEventPayload, createPlanStepCompletedEventPayload } from '../../../schemas/EventPayloadSchema.js';
|
|
35
35
|
import { createChannelMessage, createAgentMessage } from '../../../schemas/MessageSchemas.js';
|
|
36
36
|
import PlanModel from '../../../models/plan.js';
|
|
37
|
+
import { Channel } from '../../../models/channel.js';
|
|
37
38
|
|
|
38
39
|
const logger = new Logger('debug', 'PlanningTools', 'server');
|
|
39
40
|
|
|
@@ -52,9 +53,10 @@ export interface Plan {
|
|
|
52
53
|
id: string;
|
|
53
54
|
title: string;
|
|
54
55
|
createdBy: string;
|
|
56
|
+
channelId: string;
|
|
55
57
|
createdAt: number;
|
|
56
58
|
items: PlanItem[];
|
|
57
|
-
metadata?: Record<string,
|
|
59
|
+
metadata?: Record<string, unknown>;
|
|
58
60
|
}
|
|
59
61
|
|
|
60
62
|
/**
|
|
@@ -78,13 +80,31 @@ const LOCK_CLEANUP_INTERVAL_MS = 60000;
|
|
|
78
80
|
// Serialization locks to prevent parallel plan updates (like Cascade)
|
|
79
81
|
const planUpdateLocks = new Map<string, PlanLock>();
|
|
80
82
|
|
|
83
|
+
interface PlanningIdentity {
|
|
84
|
+
agentId: string;
|
|
85
|
+
channelId: string;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const requirePlanningIdentity = (context: McpToolHandlerContext): PlanningIdentity => {
|
|
89
|
+
if (typeof context.agentId !== 'string' || context.agentId.trim().length === 0 ||
|
|
90
|
+
typeof context.channelId !== 'string' || context.channelId.trim().length === 0) {
|
|
91
|
+
throw new Error('Authenticated agentId and channelId are required for planning tools');
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
agentId: context.agentId.trim(),
|
|
95
|
+
channelId: context.channelId.trim()
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const planLockKey = (channelId: string, planId: string): string => `${channelId}\0${planId}`;
|
|
100
|
+
|
|
81
101
|
/**
|
|
82
102
|
* Acquire a lock for a plan with TTL-based expiration.
|
|
83
103
|
* Returns true if lock acquired, false if plan is already locked.
|
|
84
104
|
*/
|
|
85
|
-
function acquirePlanLock(
|
|
105
|
+
function acquirePlanLock(lockKey: string, agentId?: string): boolean {
|
|
86
106
|
const now = Date.now();
|
|
87
|
-
const existingLock = planUpdateLocks.get(
|
|
107
|
+
const existingLock = planUpdateLocks.get(lockKey);
|
|
88
108
|
|
|
89
109
|
// Check if existing lock has expired
|
|
90
110
|
if (existingLock && (now - existingLock.acquiredAt) < LOCK_TIMEOUT_MS) {
|
|
@@ -93,29 +113,29 @@ function acquirePlanLock(planId: string, agentId?: string): boolean {
|
|
|
93
113
|
}
|
|
94
114
|
|
|
95
115
|
// Acquire or renew lock
|
|
96
|
-
planUpdateLocks.set(
|
|
116
|
+
planUpdateLocks.set(lockKey, { acquiredAt: now, agentId });
|
|
97
117
|
return true;
|
|
98
118
|
}
|
|
99
119
|
|
|
100
120
|
/**
|
|
101
121
|
* Release a lock for a plan.
|
|
102
122
|
*/
|
|
103
|
-
function releasePlanLock(
|
|
104
|
-
planUpdateLocks.delete(
|
|
123
|
+
function releasePlanLock(lockKey: string): void {
|
|
124
|
+
planUpdateLocks.delete(lockKey);
|
|
105
125
|
}
|
|
106
126
|
|
|
107
127
|
/**
|
|
108
128
|
* Check if a plan is currently locked.
|
|
109
129
|
* Returns lock info if locked, undefined if not locked.
|
|
110
130
|
*/
|
|
111
|
-
function getPlanLockInfo(
|
|
112
|
-
const lock = planUpdateLocks.get(
|
|
131
|
+
function getPlanLockInfo(lockKey: string): PlanLock | undefined {
|
|
132
|
+
const lock = planUpdateLocks.get(lockKey);
|
|
113
133
|
if (!lock) return undefined;
|
|
114
134
|
|
|
115
135
|
const now = Date.now();
|
|
116
136
|
if ((now - lock.acquiredAt) >= LOCK_TIMEOUT_MS) {
|
|
117
137
|
// Lock has expired, clean it up
|
|
118
|
-
planUpdateLocks.delete(
|
|
138
|
+
planUpdateLocks.delete(lockKey);
|
|
119
139
|
return undefined;
|
|
120
140
|
}
|
|
121
141
|
|
|
@@ -203,8 +223,12 @@ export const planning_create: McpToolDefinition = {
|
|
|
203
223
|
enabled: true,
|
|
204
224
|
handler: async (input: McpToolInput, context: McpToolHandlerContext): Promise<McpToolHandlerResult> => {
|
|
205
225
|
try {
|
|
226
|
+
const identity = requirePlanningIdentity(context);
|
|
206
227
|
const planId = uuidv4();
|
|
207
|
-
|
|
228
|
+
if (!Array.isArray(input.items)) {
|
|
229
|
+
throw new Error('items must be an array');
|
|
230
|
+
}
|
|
231
|
+
const planItems: PlanItem[] = (input.items as Array<Partial<PlanItem>>).map((item, index) => ({
|
|
208
232
|
id: `item-${index + 1}`,
|
|
209
233
|
title: item.title || 'Untitled Item',
|
|
210
234
|
description: item.description,
|
|
@@ -219,8 +243,8 @@ export const planning_create: McpToolDefinition = {
|
|
|
219
243
|
const planDoc = new PlanModel({
|
|
220
244
|
planId,
|
|
221
245
|
title: input.title,
|
|
222
|
-
createdBy:
|
|
223
|
-
channelId:
|
|
246
|
+
createdBy: identity.agentId,
|
|
247
|
+
channelId: identity.channelId,
|
|
224
248
|
items: planItems,
|
|
225
249
|
metadata: input.metadata
|
|
226
250
|
});
|
|
@@ -230,17 +254,18 @@ export const planning_create: McpToolDefinition = {
|
|
|
230
254
|
const plan: Plan = {
|
|
231
255
|
id: planId,
|
|
232
256
|
title: input.title,
|
|
233
|
-
createdBy:
|
|
257
|
+
createdBy: identity.agentId,
|
|
258
|
+
channelId: identity.channelId,
|
|
234
259
|
createdAt: planDoc.createdAt.getTime(),
|
|
235
260
|
items: planItems,
|
|
236
261
|
metadata: input.metadata
|
|
237
262
|
};
|
|
238
263
|
|
|
239
264
|
// Emit planning event
|
|
240
|
-
|
|
265
|
+
{
|
|
241
266
|
const channelMessage = createChannelMessage(
|
|
242
|
-
|
|
243
|
-
|
|
267
|
+
identity.channelId,
|
|
268
|
+
identity.agentId,
|
|
244
269
|
`📋 Created plan: ${plan.title} with ${plan.items.length} items`,
|
|
245
270
|
{
|
|
246
271
|
context: {
|
|
@@ -254,7 +279,7 @@ export const planning_create: McpToolDefinition = {
|
|
|
254
279
|
EventBus.server.emit(Events.Message.CHANNEL_MESSAGE,
|
|
255
280
|
createChannelMessageEventPayload(
|
|
256
281
|
Events.Message.CHANNEL_MESSAGE,
|
|
257
|
-
|
|
282
|
+
identity.agentId,
|
|
258
283
|
channelMessage
|
|
259
284
|
)
|
|
260
285
|
);
|
|
@@ -276,6 +301,7 @@ export const planning_create: McpToolDefinition = {
|
|
|
276
301
|
const content: McpToolResultContent = {
|
|
277
302
|
type: 'application/json',
|
|
278
303
|
data: {
|
|
304
|
+
success: false,
|
|
279
305
|
error: `Failed to create plan: ${error instanceof Error ? error.message : String(error)}`
|
|
280
306
|
}
|
|
281
307
|
};
|
|
@@ -316,13 +342,16 @@ export const planning_update_item: McpToolDefinition = {
|
|
|
316
342
|
enabled: true,
|
|
317
343
|
handler: async (input: McpToolInput, context: McpToolHandlerContext): Promise<McpToolHandlerResult> => {
|
|
318
344
|
try {
|
|
345
|
+
const identity = requirePlanningIdentity(context);
|
|
346
|
+
const lockKey = planLockKey(identity.channelId, input.planId);
|
|
319
347
|
// Check for serialization lock with TTL
|
|
320
|
-
const existingLock = getPlanLockInfo(
|
|
348
|
+
const existingLock = getPlanLockInfo(lockKey);
|
|
321
349
|
if (existingLock) {
|
|
322
350
|
const lockAgeMs = Date.now() - existingLock.acquiredAt;
|
|
323
351
|
const content: McpToolResultContent = {
|
|
324
352
|
type: 'application/json',
|
|
325
353
|
data: {
|
|
354
|
+
success: false,
|
|
326
355
|
error: `Plan ${input.planId} is currently being updated by another operation (locked ${Math.round(lockAgeMs / 1000)}s ago${existingLock.agentId ? ` by ${existingLock.agentId}` : ''}). Please try again.`
|
|
327
356
|
}
|
|
328
357
|
};
|
|
@@ -330,10 +359,11 @@ export const planning_update_item: McpToolDefinition = {
|
|
|
330
359
|
}
|
|
331
360
|
|
|
332
361
|
// Acquire lock with TTL
|
|
333
|
-
if (!acquirePlanLock(
|
|
362
|
+
if (!acquirePlanLock(lockKey, identity.agentId)) {
|
|
334
363
|
const content: McpToolResultContent = {
|
|
335
364
|
type: 'application/json',
|
|
336
365
|
data: {
|
|
366
|
+
success: false,
|
|
337
367
|
error: `Failed to acquire lock for plan ${input.planId}. Please try again.`
|
|
338
368
|
}
|
|
339
369
|
};
|
|
@@ -342,22 +372,27 @@ export const planning_update_item: McpToolDefinition = {
|
|
|
342
372
|
|
|
343
373
|
try {
|
|
344
374
|
// Fetch plan from MongoDB
|
|
345
|
-
const planDoc = await PlanModel.findOne({
|
|
375
|
+
const planDoc = await PlanModel.findOne({
|
|
376
|
+
planId: input.planId,
|
|
377
|
+
channelId: identity.channelId
|
|
378
|
+
});
|
|
346
379
|
if (!planDoc) {
|
|
347
380
|
const content: McpToolResultContent = {
|
|
348
381
|
type: 'application/json',
|
|
349
382
|
data: {
|
|
383
|
+
success: false,
|
|
350
384
|
error: `Plan not found: ${input.planId}`
|
|
351
385
|
}
|
|
352
386
|
};
|
|
353
387
|
return { content };
|
|
354
388
|
}
|
|
355
389
|
|
|
356
|
-
const item = planDoc.items.find(
|
|
390
|
+
const item = planDoc.items.find(i => i.id === input.itemId);
|
|
357
391
|
if (!item) {
|
|
358
392
|
const content: McpToolResultContent = {
|
|
359
393
|
type: 'application/json',
|
|
360
394
|
data: {
|
|
395
|
+
success: false,
|
|
361
396
|
error: `Item not found: ${input.itemId} in plan ${input.planId}`
|
|
362
397
|
}
|
|
363
398
|
};
|
|
@@ -372,31 +407,31 @@ export const planning_update_item: McpToolDefinition = {
|
|
|
372
407
|
await planDoc.save();
|
|
373
408
|
|
|
374
409
|
// Emit update event
|
|
375
|
-
|
|
410
|
+
{
|
|
376
411
|
const updateMessage = createChannelMessage(
|
|
377
|
-
|
|
378
|
-
|
|
412
|
+
identity.channelId,
|
|
413
|
+
identity.agentId,
|
|
379
414
|
`✅ Updated plan item: ${item.title} → ${input.status || 'updated'}${input.notes ? ` (${input.notes})` : ''}`,
|
|
380
415
|
{ context: { planId: input.planId, itemId: input.itemId, status: input.status, toolName: 'planning_update_item' } }
|
|
381
416
|
);
|
|
382
417
|
EventBus.server.emit(
|
|
383
418
|
Events.Message.CHANNEL_MESSAGE,
|
|
384
|
-
createChannelMessageEventPayload(Events.Message.CHANNEL_MESSAGE,
|
|
419
|
+
createChannelMessageEventPayload(Events.Message.CHANNEL_MESSAGE, identity.agentId, updateMessage)
|
|
385
420
|
);
|
|
386
421
|
}
|
|
387
422
|
|
|
388
423
|
// Emit plan step completion event for monitoring service
|
|
389
|
-
if (input.status === 'completed'
|
|
424
|
+
if (input.status === 'completed') {
|
|
390
425
|
EventBus.server.emit(
|
|
391
426
|
Events.Plan.PLAN_STEP_COMPLETED,
|
|
392
427
|
createPlanStepCompletedEventPayload(
|
|
393
428
|
Events.Plan.PLAN_STEP_COMPLETED,
|
|
394
|
-
|
|
395
|
-
|
|
429
|
+
identity.agentId,
|
|
430
|
+
identity.channelId,
|
|
396
431
|
{
|
|
397
432
|
planId: input.planId,
|
|
398
433
|
stepId: input.itemId,
|
|
399
|
-
completedBy:
|
|
434
|
+
completedBy: identity.agentId
|
|
400
435
|
}
|
|
401
436
|
)
|
|
402
437
|
);
|
|
@@ -415,13 +450,14 @@ export const planning_update_item: McpToolDefinition = {
|
|
|
415
450
|
return { content };
|
|
416
451
|
} finally {
|
|
417
452
|
// Always release lock
|
|
418
|
-
releasePlanLock(
|
|
453
|
+
releasePlanLock(lockKey);
|
|
419
454
|
}
|
|
420
455
|
} catch (error) {
|
|
421
456
|
logger.error(`Error updating plan item: ${error}`);
|
|
422
457
|
const content: McpToolResultContent = {
|
|
423
458
|
type: 'application/json',
|
|
424
459
|
data: {
|
|
460
|
+
success: false,
|
|
425
461
|
error: `Failed to update plan item: ${error instanceof Error ? error.message : String(error)}`
|
|
426
462
|
}
|
|
427
463
|
};
|
|
@@ -448,13 +484,18 @@ export const planning_view: McpToolDefinition = {
|
|
|
448
484
|
enabled: true,
|
|
449
485
|
handler: async (input: McpToolInput, context: McpToolHandlerContext): Promise<McpToolHandlerResult> => {
|
|
450
486
|
try {
|
|
487
|
+
const identity = requirePlanningIdentity(context);
|
|
451
488
|
if (input.planId) {
|
|
452
489
|
// Fetch specific plan from MongoDB
|
|
453
|
-
const planDoc = await PlanModel.findOne({
|
|
490
|
+
const planDoc = await PlanModel.findOne({
|
|
491
|
+
planId: input.planId,
|
|
492
|
+
channelId: identity.channelId
|
|
493
|
+
});
|
|
454
494
|
if (!planDoc) {
|
|
455
495
|
const content: McpToolResultContent = {
|
|
456
496
|
type: 'application/json',
|
|
457
497
|
data: {
|
|
498
|
+
success: false,
|
|
458
499
|
error: `Plan not found: ${input.planId}`
|
|
459
500
|
}
|
|
460
501
|
};
|
|
@@ -472,10 +513,10 @@ export const planning_view: McpToolDefinition = {
|
|
|
472
513
|
|
|
473
514
|
const summary = {
|
|
474
515
|
total: plan.items.length,
|
|
475
|
-
pending: plan.items.filter(
|
|
476
|
-
inProgress: plan.items.filter(
|
|
477
|
-
completed: plan.items.filter(
|
|
478
|
-
blocked: plan.items.filter(
|
|
516
|
+
pending: plan.items.filter(i => i.status === 'pending').length,
|
|
517
|
+
inProgress: plan.items.filter(i => i.status === 'in_progress').length,
|
|
518
|
+
completed: plan.items.filter(i => i.status === 'completed').length,
|
|
519
|
+
blocked: plan.items.filter(i => i.status === 'blocked').length
|
|
479
520
|
};
|
|
480
521
|
|
|
481
522
|
const content: McpToolResultContent = {
|
|
@@ -490,9 +531,9 @@ export const planning_view: McpToolDefinition = {
|
|
|
490
531
|
return { content };
|
|
491
532
|
} else {
|
|
492
533
|
// Return all plans for this channel from MongoDB
|
|
493
|
-
const planDocs =
|
|
494
|
-
|
|
495
|
-
|
|
534
|
+
const planDocs = await PlanModel.find({
|
|
535
|
+
channelId: identity.channelId
|
|
536
|
+
}).sort({ createdAt: -1 });
|
|
496
537
|
|
|
497
538
|
const channelPlans = planDocs.map(doc => ({
|
|
498
539
|
id: doc.planId,
|
|
@@ -503,10 +544,6 @@ export const planning_view: McpToolDefinition = {
|
|
|
503
544
|
metadata: doc.metadata
|
|
504
545
|
}));
|
|
505
546
|
|
|
506
|
-
const allPlansFiltered = channelPlans.filter(
|
|
507
|
-
p => !context.channelId || p.metadata?.channelId === context.channelId
|
|
508
|
-
);
|
|
509
|
-
|
|
510
547
|
const content: McpToolResultContent = {
|
|
511
548
|
type: 'application/json',
|
|
512
549
|
data: {
|
|
@@ -528,6 +565,7 @@ export const planning_view: McpToolDefinition = {
|
|
|
528
565
|
const content: McpToolResultContent = {
|
|
529
566
|
type: 'application/json',
|
|
530
567
|
data: {
|
|
568
|
+
success: false,
|
|
531
569
|
error: `Failed to view plan: ${error instanceof Error ? error.message : String(error)}`
|
|
532
570
|
}
|
|
533
571
|
};
|
|
@@ -564,12 +602,17 @@ export const planning_share: McpToolDefinition = {
|
|
|
564
602
|
enabled: true,
|
|
565
603
|
handler: async (input: McpToolInput, context: McpToolHandlerContext): Promise<McpToolHandlerResult> => {
|
|
566
604
|
try {
|
|
605
|
+
const identity = requirePlanningIdentity(context);
|
|
567
606
|
// Fetch plan from MongoDB
|
|
568
|
-
const planDoc = await PlanModel.findOne({
|
|
607
|
+
const planDoc = await PlanModel.findOne({
|
|
608
|
+
planId: input.planId,
|
|
609
|
+
channelId: identity.channelId
|
|
610
|
+
});
|
|
569
611
|
if (!planDoc) {
|
|
570
612
|
const content: McpToolResultContent = {
|
|
571
613
|
type: 'application/json',
|
|
572
614
|
data: {
|
|
615
|
+
success: false,
|
|
573
616
|
error: `Plan not found: ${input.planId}`
|
|
574
617
|
}
|
|
575
618
|
};
|
|
@@ -577,7 +620,7 @@ export const planning_share: McpToolDefinition = {
|
|
|
577
620
|
}
|
|
578
621
|
|
|
579
622
|
const planSummary = `📋 **${planDoc.title}**\n` +
|
|
580
|
-
planDoc.items.map((item
|
|
623
|
+
planDoc.items.map((item, idx: number) =>
|
|
581
624
|
`${idx + 1}. ${item.title} [${item.status}]${item.assignee ? ` - @${item.assignee}` : ''}`
|
|
582
625
|
).join('\n');
|
|
583
626
|
|
|
@@ -585,44 +628,77 @@ export const planning_share: McpToolDefinition = {
|
|
|
585
628
|
? `${input.message}\n\n${planSummary}`
|
|
586
629
|
: planSummary;
|
|
587
630
|
|
|
588
|
-
if (input.agentIds && input.agentIds
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
631
|
+
if (input.agentIds !== undefined && !Array.isArray(input.agentIds)) {
|
|
632
|
+
throw new Error('agentIds must be an array when provided');
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
if (Array.isArray(input.agentIds) && input.agentIds.length > 0) {
|
|
636
|
+
if (input.agentIds.some(
|
|
637
|
+
(targetAgentId: unknown) => typeof targetAgentId !== 'string' || targetAgentId.trim().length === 0
|
|
638
|
+
)) {
|
|
639
|
+
throw new Error('agentIds must contain only non-empty agent identifiers');
|
|
640
|
+
}
|
|
641
|
+
const targetAgentIds = [...new Set(
|
|
642
|
+
input.agentIds.map((targetAgentId: string) => targetAgentId.trim())
|
|
643
|
+
)];
|
|
644
|
+
const allTargetsAreCurrentParticipants = await Channel.exists({
|
|
645
|
+
channelId: identity.channelId,
|
|
646
|
+
active: true,
|
|
647
|
+
participants: { $all: targetAgentIds }
|
|
648
|
+
});
|
|
649
|
+
if (!allTargetsAreCurrentParticipants) {
|
|
650
|
+
const content: McpToolResultContent = {
|
|
651
|
+
type: 'application/json',
|
|
652
|
+
data: {
|
|
653
|
+
success: false,
|
|
654
|
+
error: 'Every share target must be a current participant of the authenticated channel'
|
|
655
|
+
}
|
|
656
|
+
};
|
|
657
|
+
return { content };
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
// Send only after all targets pass authorization so a mixed list
|
|
661
|
+
// cannot partially disclose the plan before reporting failure.
|
|
662
|
+
for (const targetAgentId of targetAgentIds) {
|
|
592
663
|
const agentMessage = createAgentMessage(
|
|
593
|
-
|
|
664
|
+
identity.agentId,
|
|
594
665
|
targetAgentId,
|
|
595
666
|
fullMessage,
|
|
596
667
|
{ context: { planId: input.planId, planShared: true, toolName: 'planning_share' } }
|
|
597
668
|
);
|
|
598
669
|
EventBus.server.emit(
|
|
599
670
|
Events.Message.AGENT_MESSAGE,
|
|
600
|
-
createAgentMessageEventPayload(
|
|
671
|
+
createAgentMessageEventPayload(
|
|
672
|
+
Events.Message.AGENT_MESSAGE,
|
|
673
|
+
identity.agentId,
|
|
674
|
+
identity.channelId,
|
|
675
|
+
agentMessage
|
|
676
|
+
)
|
|
601
677
|
);
|
|
602
|
-
}
|
|
603
678
|
}
|
|
604
679
|
|
|
605
680
|
const content: McpToolResultContent = {
|
|
606
681
|
type: 'application/json',
|
|
607
682
|
data: {
|
|
608
683
|
success: true,
|
|
609
|
-
message: `
|
|
610
|
-
sharedWith:
|
|
684
|
+
message: `Queued plan delivery for ${targetAgentIds.length} channel participants`,
|
|
685
|
+
sharedWith: targetAgentIds,
|
|
686
|
+
deliveryConfirmed: false
|
|
611
687
|
}
|
|
612
688
|
};
|
|
613
689
|
return { content };
|
|
614
690
|
} else {
|
|
615
691
|
// Broadcast to channel
|
|
616
|
-
|
|
692
|
+
{
|
|
617
693
|
const channelMessage = createChannelMessage(
|
|
618
|
-
|
|
619
|
-
|
|
694
|
+
identity.channelId,
|
|
695
|
+
identity.agentId,
|
|
620
696
|
fullMessage,
|
|
621
697
|
{ context: { planId: input.planId, planShared: true, toolName: 'planning_share' } }
|
|
622
698
|
);
|
|
623
699
|
EventBus.server.emit(
|
|
624
700
|
Events.Message.CHANNEL_MESSAGE,
|
|
625
|
-
createChannelMessageEventPayload(Events.Message.CHANNEL_MESSAGE,
|
|
701
|
+
createChannelMessageEventPayload(Events.Message.CHANNEL_MESSAGE, identity.agentId, channelMessage)
|
|
626
702
|
);
|
|
627
703
|
}
|
|
628
704
|
|
|
@@ -630,7 +706,8 @@ export const planning_share: McpToolDefinition = {
|
|
|
630
706
|
type: 'application/json',
|
|
631
707
|
data: {
|
|
632
708
|
success: true,
|
|
633
|
-
message: '
|
|
709
|
+
message: 'Queued plan broadcast to the authenticated channel',
|
|
710
|
+
deliveryConfirmed: false
|
|
634
711
|
}
|
|
635
712
|
};
|
|
636
713
|
return { content };
|
|
@@ -640,6 +717,7 @@ export const planning_share: McpToolDefinition = {
|
|
|
640
717
|
const content: McpToolResultContent = {
|
|
641
718
|
type: 'application/json',
|
|
642
719
|
data: {
|
|
720
|
+
success: false,
|
|
643
721
|
error: `Failed to share plan: ${error instanceof Error ? error.message : String(error)}`
|
|
644
722
|
}
|
|
645
723
|
};
|
|
@@ -657,4 +735,4 @@ export const PLANNING_TOOLS = [
|
|
|
657
735
|
];
|
|
658
736
|
|
|
659
737
|
// Export tool names for easy reference
|
|
660
|
-
export const PLANNING_TOOL_NAMES = PLANNING_TOOLS.map(tool => tool.name);
|
|
738
|
+
export const PLANNING_TOOL_NAMES = PLANNING_TOOLS.map(tool => tool.name);
|
|
@@ -31,7 +31,11 @@ import { McpToolInput } from '../IMcpClient.js';
|
|
|
31
31
|
import { Logger } from '../../../utils/Logger.js';
|
|
32
32
|
import * as fs from 'fs';
|
|
33
33
|
import * as path from 'path';
|
|
34
|
-
import {
|
|
34
|
+
import { execFileSync } from 'child_process';
|
|
35
|
+
import {
|
|
36
|
+
buildShellChildEnv,
|
|
37
|
+
resolveWorkspacePath
|
|
38
|
+
} from '../security/McpToolPolicy.js';
|
|
35
39
|
|
|
36
40
|
const logger = new Logger('info', 'ProjectContextTools', 'server');
|
|
37
41
|
|
|
@@ -128,10 +132,16 @@ function parseManifestInfo(filename: string, content: string): Record<string, an
|
|
|
128
132
|
*/
|
|
129
133
|
function getGitInfo(dir: string): Record<string, any> | null {
|
|
130
134
|
try {
|
|
131
|
-
const
|
|
132
|
-
|
|
135
|
+
const options = {
|
|
136
|
+
cwd: dir,
|
|
137
|
+
encoding: 'utf-8' as const,
|
|
138
|
+
env: buildShellChildEnv(),
|
|
139
|
+
timeout: 10_000
|
|
140
|
+
};
|
|
141
|
+
const branch = execFileSync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], options).trim();
|
|
142
|
+
const logOutput = execFileSync('git', ['log', '--oneline', '-5'], options).trim();
|
|
133
143
|
const recentCommits = logOutput ? logOutput.split('\n') : [];
|
|
134
|
-
const statusOutput =
|
|
144
|
+
const statusOutput = execFileSync('git', ['status', '--porcelain'], options).trim();
|
|
135
145
|
const dirtyLines = statusOutput ? statusOutput.split('\n').filter(l => l.trim()) : [];
|
|
136
146
|
const dirtyCount = dirtyLines.length;
|
|
137
147
|
|
|
@@ -154,11 +164,14 @@ function detectConfigFiles(dir: string): string[] {
|
|
|
154
164
|
const found: string[] = [];
|
|
155
165
|
|
|
156
166
|
for (const configFile of CONFIG_FILES) {
|
|
157
|
-
const fullPath = path.join(dir, configFile);
|
|
158
167
|
try {
|
|
168
|
+
const fullPath = resolveWorkspacePath(
|
|
169
|
+
path.join(dir, configFile.replace(/\/$/, '')),
|
|
170
|
+
'project_context config file'
|
|
171
|
+
);
|
|
159
172
|
// For directory entries (ending with /), check if it's a directory
|
|
160
173
|
if (configFile.endsWith('/')) {
|
|
161
|
-
const stat = fs.statSync(fullPath
|
|
174
|
+
const stat = fs.statSync(fullPath);
|
|
162
175
|
if (stat.isDirectory()) {
|
|
163
176
|
found.push(configFile);
|
|
164
177
|
}
|
|
@@ -188,7 +201,7 @@ export const project_context_tool: McpToolDefinition = {
|
|
|
188
201
|
properties: {
|
|
189
202
|
workingDirectory: {
|
|
190
203
|
type: 'string',
|
|
191
|
-
description: '
|
|
204
|
+
description: 'Directory under MXF_WORKSPACE_ROOT to scan. Defaults to MXF_WORKSPACE_ROOT.',
|
|
192
205
|
},
|
|
193
206
|
},
|
|
194
207
|
additionalProperties: false,
|
|
@@ -208,9 +221,11 @@ export const project_context_tool: McpToolDefinition = {
|
|
|
208
221
|
timeout: 10000,
|
|
209
222
|
},
|
|
210
223
|
|
|
211
|
-
async handler(input: McpToolInput,
|
|
212
|
-
const
|
|
213
|
-
|
|
224
|
+
async handler(input: McpToolInput, _context: McpToolHandlerContext): Promise<McpToolHandlerResult> {
|
|
225
|
+
const resolvedDir = resolveWorkspacePath(
|
|
226
|
+
input.workingDirectory,
|
|
227
|
+
'project_context workingDirectory'
|
|
228
|
+
);
|
|
214
229
|
|
|
215
230
|
logger.info('Scanning project context', { directory: resolvedDir });
|
|
216
231
|
|
|
@@ -266,8 +281,11 @@ export const project_context_tool: McpToolDefinition = {
|
|
|
266
281
|
let manifestFile: string | null = null;
|
|
267
282
|
|
|
268
283
|
for (const [filename, typeInfo] of Object.entries(MANIFEST_MAP)) {
|
|
269
|
-
const manifestPath = path.join(resolvedDir, filename);
|
|
270
284
|
try {
|
|
285
|
+
const manifestPath = resolveWorkspacePath(
|
|
286
|
+
path.join(resolvedDir, filename),
|
|
287
|
+
'project_context manifest'
|
|
288
|
+
);
|
|
271
289
|
fs.accessSync(manifestPath, fs.constants.F_OK);
|
|
272
290
|
projectType = typeInfo.projectType;
|
|
273
291
|
language = typeInfo.language;
|
|
@@ -281,7 +299,10 @@ export const project_context_tool: McpToolDefinition = {
|
|
|
281
299
|
// 3. If manifest found, read and parse basic info
|
|
282
300
|
if (manifestFile) {
|
|
283
301
|
try {
|
|
284
|
-
const manifestPath =
|
|
302
|
+
const manifestPath = resolveWorkspacePath(
|
|
303
|
+
path.join(resolvedDir, manifestFile),
|
|
304
|
+
'project_context manifest read'
|
|
305
|
+
);
|
|
285
306
|
const content = fs.readFileSync(manifestPath, 'utf-8').slice(0, 500);
|
|
286
307
|
const parsed = parseManifestInfo(manifestFile, content);
|
|
287
308
|
manifest = {
|