@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
|
@@ -32,9 +32,91 @@ import { EntityExtractionService } from '../../../services/kg/EntityExtractionSe
|
|
|
32
32
|
import { OrparGraphIntegration } from '../../../services/kg/OrparGraphIntegration.js';
|
|
33
33
|
import { isKnowledgeGraphEnabled } from '../../../config/knowledge-graph.config.js';
|
|
34
34
|
import { EntityType, RelationshipType } from '../../../types/KnowledgeGraphTypes.js';
|
|
35
|
+
import { McpToolHandlerContext } from '../McpServerTypes.js';
|
|
35
36
|
|
|
36
37
|
const logger = new Logger('info', 'KnowledgeGraphTools', 'server');
|
|
37
38
|
|
|
39
|
+
interface KnowledgeGraphIdentity {
|
|
40
|
+
agentId: string;
|
|
41
|
+
channelId: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface KnowledgeGraphToolArguments extends Record<string, unknown> {
|
|
45
|
+
channelId?: string;
|
|
46
|
+
entityId?: string;
|
|
47
|
+
name?: string;
|
|
48
|
+
exact?: boolean;
|
|
49
|
+
limit?: number;
|
|
50
|
+
direction?: 'incoming' | 'outgoing' | 'both';
|
|
51
|
+
relationshipType?: RelationshipType;
|
|
52
|
+
fromEntityId?: string;
|
|
53
|
+
toEntityId?: string;
|
|
54
|
+
maxHops?: number;
|
|
55
|
+
taskId?: string;
|
|
56
|
+
keywords?: string[];
|
|
57
|
+
type?: string;
|
|
58
|
+
aliases?: string[];
|
|
59
|
+
description?: string;
|
|
60
|
+
confidence?: number;
|
|
61
|
+
label?: string;
|
|
62
|
+
text?: string;
|
|
63
|
+
sourceId?: string;
|
|
64
|
+
memoryId?: string;
|
|
65
|
+
memoryContent?: string;
|
|
66
|
+
phase?: 'observation' | 'reasoning' | 'planning' | 'action' | 'reflection';
|
|
67
|
+
taskContent?: string;
|
|
68
|
+
entityIds?: string[];
|
|
69
|
+
threshold?: number;
|
|
70
|
+
targetEntityId?: string;
|
|
71
|
+
sourceEntityIds?: string[];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function requireKnowledgeGraphIdentity(
|
|
75
|
+
args: { channelId?: unknown },
|
|
76
|
+
context: McpToolHandlerContext
|
|
77
|
+
): KnowledgeGraphIdentity {
|
|
78
|
+
if (typeof context.agentId !== 'string' || context.agentId.trim().length === 0 ||
|
|
79
|
+
typeof context.channelId !== 'string' || context.channelId.trim().length === 0) {
|
|
80
|
+
throw new Error('Authenticated agentId and channelId are required for Knowledge Graph tools');
|
|
81
|
+
}
|
|
82
|
+
const agentId = context.agentId.trim();
|
|
83
|
+
const channelId = context.channelId.trim();
|
|
84
|
+
if (args.channelId !== undefined && (
|
|
85
|
+
typeof args.channelId !== 'string' || args.channelId.trim() !== channelId
|
|
86
|
+
)) {
|
|
87
|
+
throw new Error('channelId must match the authenticated tool context');
|
|
88
|
+
}
|
|
89
|
+
return { agentId, channelId };
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const errorMessage = (error: unknown): string => (
|
|
93
|
+
error instanceof Error ? error.message : String(error)
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
const requireStringArgument = (
|
|
97
|
+
args: KnowledgeGraphToolArguments,
|
|
98
|
+
name: keyof KnowledgeGraphToolArguments
|
|
99
|
+
): string => {
|
|
100
|
+
const value = args[name];
|
|
101
|
+
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
102
|
+
throw new Error(`${String(name)} must be a non-empty string`);
|
|
103
|
+
}
|
|
104
|
+
return value.trim();
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const requireStringArrayArgument = (
|
|
108
|
+
args: KnowledgeGraphToolArguments,
|
|
109
|
+
name: keyof KnowledgeGraphToolArguments
|
|
110
|
+
): string[] => {
|
|
111
|
+
const value = args[name];
|
|
112
|
+
if (!Array.isArray(value) || value.length === 0 || value.some(item => (
|
|
113
|
+
typeof item !== 'string' || item.trim().length === 0
|
|
114
|
+
))) {
|
|
115
|
+
throw new Error(`${String(name)} must be a non-empty array of non-empty strings`);
|
|
116
|
+
}
|
|
117
|
+
return value.map(item => (item as string).trim());
|
|
118
|
+
};
|
|
119
|
+
|
|
38
120
|
/**
|
|
39
121
|
* Helper to get Knowledge Graph service
|
|
40
122
|
*/
|
|
@@ -72,8 +154,12 @@ export const kg_get_entity = {
|
|
|
72
154
|
},
|
|
73
155
|
required: ['entityId'],
|
|
74
156
|
},
|
|
75
|
-
handler: async (
|
|
157
|
+
handler: async (
|
|
158
|
+
args: KnowledgeGraphToolArguments,
|
|
159
|
+
context: McpToolHandlerContext
|
|
160
|
+
): Promise<Record<string, unknown>> => {
|
|
76
161
|
try {
|
|
162
|
+
const identity = requireKnowledgeGraphIdentity(args, context);
|
|
77
163
|
if (!isKnowledgeGraphEnabled()) {
|
|
78
164
|
return {
|
|
79
165
|
success: false,
|
|
@@ -83,13 +169,14 @@ export const kg_get_entity = {
|
|
|
83
169
|
}
|
|
84
170
|
|
|
85
171
|
const kgService = getKgService();
|
|
86
|
-
const
|
|
172
|
+
const entityId = requireStringArgument(args, 'entityId');
|
|
173
|
+
const entity = await kgService.getEntity(entityId, identity.channelId);
|
|
87
174
|
|
|
88
175
|
if (!entity) {
|
|
89
176
|
return {
|
|
90
177
|
success: false,
|
|
91
178
|
entity: null,
|
|
92
|
-
message: `Entity not found: ${
|
|
179
|
+
message: `Entity not found: ${entityId}`,
|
|
93
180
|
};
|
|
94
181
|
}
|
|
95
182
|
|
|
@@ -98,13 +185,13 @@ export const kg_get_entity = {
|
|
|
98
185
|
entity,
|
|
99
186
|
message: `Found entity: ${entity.name} (${entity.type})`,
|
|
100
187
|
};
|
|
101
|
-
} catch (error:
|
|
102
|
-
logger.error('Failed to get entity', { error: error
|
|
188
|
+
} catch (error: unknown) {
|
|
189
|
+
logger.error('Failed to get entity', { error: errorMessage(error) });
|
|
103
190
|
return {
|
|
104
191
|
success: false,
|
|
105
192
|
entity: null,
|
|
106
193
|
message: 'Failed to get entity',
|
|
107
|
-
error: error
|
|
194
|
+
error: errorMessage(error),
|
|
108
195
|
};
|
|
109
196
|
}
|
|
110
197
|
},
|
|
@@ -142,8 +229,12 @@ export const kg_find_entity = {
|
|
|
142
229
|
},
|
|
143
230
|
required: ['name'],
|
|
144
231
|
},
|
|
145
|
-
handler: async (
|
|
232
|
+
handler: async (
|
|
233
|
+
args: KnowledgeGraphToolArguments,
|
|
234
|
+
context: McpToolHandlerContext
|
|
235
|
+
): Promise<Record<string, unknown>> => {
|
|
146
236
|
try {
|
|
237
|
+
const identity = requireKnowledgeGraphIdentity(args, context);
|
|
147
238
|
if (!isKnowledgeGraphEnabled()) {
|
|
148
239
|
return {
|
|
149
240
|
success: false,
|
|
@@ -152,19 +243,11 @@ export const kg_find_entity = {
|
|
|
152
243
|
};
|
|
153
244
|
}
|
|
154
245
|
|
|
155
|
-
const channelId = args.channelId || context.channelId;
|
|
156
|
-
if (!channelId) {
|
|
157
|
-
return {
|
|
158
|
-
success: false,
|
|
159
|
-
entities: [],
|
|
160
|
-
message: 'channelId is required but not provided',
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
|
|
164
246
|
const kgService = getKgService();
|
|
247
|
+
const name = requireStringArgument(args, 'name');
|
|
165
248
|
const entities = await kgService.findEntityByName(
|
|
166
|
-
channelId,
|
|
167
|
-
|
|
249
|
+
identity.channelId,
|
|
250
|
+
name,
|
|
168
251
|
args.exact || false
|
|
169
252
|
);
|
|
170
253
|
|
|
@@ -176,16 +259,16 @@ export const kg_find_entity = {
|
|
|
176
259
|
count: limitedEntities.length,
|
|
177
260
|
totalFound: entities.length,
|
|
178
261
|
message: entities.length > 0
|
|
179
|
-
? `Found ${entities.length} entities matching "${
|
|
180
|
-
: `No entities found matching "${
|
|
262
|
+
? `Found ${entities.length} entities matching "${name}"`
|
|
263
|
+
: `No entities found matching "${name}"`,
|
|
181
264
|
};
|
|
182
|
-
} catch (error:
|
|
183
|
-
logger.error('Failed to find entity', { error: error
|
|
265
|
+
} catch (error: unknown) {
|
|
266
|
+
logger.error('Failed to find entity', { error: errorMessage(error) });
|
|
184
267
|
return {
|
|
185
268
|
success: false,
|
|
186
269
|
entities: [],
|
|
187
270
|
message: 'Failed to find entity',
|
|
188
|
-
error: error
|
|
271
|
+
error: errorMessage(error),
|
|
189
272
|
};
|
|
190
273
|
}
|
|
191
274
|
},
|
|
@@ -224,8 +307,12 @@ export const kg_get_neighbors = {
|
|
|
224
307
|
},
|
|
225
308
|
required: ['entityId'],
|
|
226
309
|
},
|
|
227
|
-
handler: async (
|
|
310
|
+
handler: async (
|
|
311
|
+
args: KnowledgeGraphToolArguments,
|
|
312
|
+
context: McpToolHandlerContext
|
|
313
|
+
): Promise<Record<string, unknown>> => {
|
|
228
314
|
try {
|
|
315
|
+
const identity = requireKnowledgeGraphIdentity(args, context);
|
|
229
316
|
if (!isKnowledgeGraphEnabled()) {
|
|
230
317
|
return {
|
|
231
318
|
success: false,
|
|
@@ -236,11 +323,21 @@ export const kg_get_neighbors = {
|
|
|
236
323
|
}
|
|
237
324
|
|
|
238
325
|
const kgService = getKgService();
|
|
239
|
-
const
|
|
326
|
+
const entityId = requireStringArgument(args, 'entityId');
|
|
327
|
+
const entity = await kgService.getEntity(entityId, identity.channelId);
|
|
328
|
+
if (!entity) {
|
|
329
|
+
return {
|
|
330
|
+
success: false,
|
|
331
|
+
entities: [],
|
|
332
|
+
relationships: [],
|
|
333
|
+
message: `Entity not found: ${entityId}`,
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
const result = await kgService.getNeighbors(entityId, {
|
|
240
337
|
direction: args.direction || 'both',
|
|
241
338
|
relationshipType: args.relationshipType as RelationshipType | undefined,
|
|
242
339
|
limit: args.limit || 20,
|
|
243
|
-
});
|
|
340
|
+
}, identity.channelId);
|
|
244
341
|
|
|
245
342
|
return {
|
|
246
343
|
success: true,
|
|
@@ -250,14 +347,14 @@ export const kg_get_neighbors = {
|
|
|
250
347
|
relationshipCount: result.relationships.length,
|
|
251
348
|
message: `Found ${result.entities.length} connected entities`,
|
|
252
349
|
};
|
|
253
|
-
} catch (error:
|
|
254
|
-
logger.error('Failed to get neighbors', { error: error
|
|
350
|
+
} catch (error: unknown) {
|
|
351
|
+
logger.error('Failed to get neighbors', { error: errorMessage(error) });
|
|
255
352
|
return {
|
|
256
353
|
success: false,
|
|
257
354
|
entities: [],
|
|
258
355
|
relationships: [],
|
|
259
356
|
message: 'Failed to get neighbors',
|
|
260
|
-
error: error
|
|
357
|
+
error: errorMessage(error),
|
|
261
358
|
};
|
|
262
359
|
}
|
|
263
360
|
},
|
|
@@ -290,8 +387,12 @@ export const kg_find_path = {
|
|
|
290
387
|
},
|
|
291
388
|
required: ['fromEntityId', 'toEntityId'],
|
|
292
389
|
},
|
|
293
|
-
handler: async (
|
|
390
|
+
handler: async (
|
|
391
|
+
args: KnowledgeGraphToolArguments,
|
|
392
|
+
context: McpToolHandlerContext
|
|
393
|
+
): Promise<Record<string, unknown>> => {
|
|
294
394
|
try {
|
|
395
|
+
const identity = requireKnowledgeGraphIdentity(args, context);
|
|
295
396
|
if (!isKnowledgeGraphEnabled()) {
|
|
296
397
|
return {
|
|
297
398
|
success: false,
|
|
@@ -301,10 +402,25 @@ export const kg_find_path = {
|
|
|
301
402
|
}
|
|
302
403
|
|
|
303
404
|
const kgService = getKgService();
|
|
405
|
+
const fromEntityId = requireStringArgument(args, 'fromEntityId');
|
|
406
|
+
const toEntityId = requireStringArgument(args, 'toEntityId');
|
|
407
|
+
const [fromEntity, toEntity] = await Promise.all([
|
|
408
|
+
kgService.getEntity(fromEntityId, identity.channelId),
|
|
409
|
+
kgService.getEntity(toEntityId, identity.channelId)
|
|
410
|
+
]);
|
|
411
|
+
if (!fromEntity || !toEntity) {
|
|
412
|
+
return {
|
|
413
|
+
success: false,
|
|
414
|
+
path: null,
|
|
415
|
+
found: false,
|
|
416
|
+
message: 'Both path endpoints must belong to the authenticated channel',
|
|
417
|
+
};
|
|
418
|
+
}
|
|
304
419
|
const path = await kgService.findPath(
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
args.maxHops || 5
|
|
420
|
+
fromEntityId,
|
|
421
|
+
toEntityId,
|
|
422
|
+
args.maxHops || 5,
|
|
423
|
+
identity.channelId
|
|
308
424
|
);
|
|
309
425
|
|
|
310
426
|
if (!path) {
|
|
@@ -316,6 +432,18 @@ export const kg_find_path = {
|
|
|
316
432
|
};
|
|
317
433
|
}
|
|
318
434
|
|
|
435
|
+
const pathEntities = await Promise.all(
|
|
436
|
+
path.entityIds.map(entityId => kgService.getEntity(entityId, identity.channelId))
|
|
437
|
+
);
|
|
438
|
+
if (pathEntities.some(entity => !entity)) {
|
|
439
|
+
return {
|
|
440
|
+
success: false,
|
|
441
|
+
path: null,
|
|
442
|
+
found: false,
|
|
443
|
+
message: 'The resolved path is not wholly contained in the authenticated channel',
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
|
|
319
447
|
return {
|
|
320
448
|
success: true,
|
|
321
449
|
path,
|
|
@@ -323,13 +451,13 @@ export const kg_find_path = {
|
|
|
323
451
|
hopCount: path.relationshipIds.length,
|
|
324
452
|
message: `Found path with ${path.relationshipIds.length} hops`,
|
|
325
453
|
};
|
|
326
|
-
} catch (error:
|
|
327
|
-
logger.error('Failed to find path', { error: error
|
|
454
|
+
} catch (error: unknown) {
|
|
455
|
+
logger.error('Failed to find path', { error: errorMessage(error) });
|
|
328
456
|
return {
|
|
329
457
|
success: false,
|
|
330
458
|
path: null,
|
|
331
459
|
message: 'Failed to find path',
|
|
332
|
-
error: error
|
|
460
|
+
error: errorMessage(error),
|
|
333
461
|
};
|
|
334
462
|
}
|
|
335
463
|
},
|
|
@@ -360,8 +488,12 @@ export const kg_get_context = {
|
|
|
360
488
|
},
|
|
361
489
|
required: [],
|
|
362
490
|
},
|
|
363
|
-
handler: async (
|
|
491
|
+
handler: async (
|
|
492
|
+
args: KnowledgeGraphToolArguments,
|
|
493
|
+
context: McpToolHandlerContext
|
|
494
|
+
): Promise<Record<string, unknown>> => {
|
|
364
495
|
try {
|
|
496
|
+
const identity = requireKnowledgeGraphIdentity(args, context);
|
|
365
497
|
if (!isKnowledgeGraphEnabled()) {
|
|
366
498
|
return {
|
|
367
499
|
success: false,
|
|
@@ -370,18 +502,9 @@ export const kg_get_context = {
|
|
|
370
502
|
};
|
|
371
503
|
}
|
|
372
504
|
|
|
373
|
-
const channelId = args.channelId || context.channelId;
|
|
374
|
-
if (!channelId) {
|
|
375
|
-
return {
|
|
376
|
-
success: false,
|
|
377
|
-
context: null,
|
|
378
|
-
message: 'channelId is required but not provided',
|
|
379
|
-
};
|
|
380
|
-
}
|
|
381
|
-
|
|
382
505
|
const kgService = getKgService();
|
|
383
506
|
const graphContext = await kgService.getGraphContext(
|
|
384
|
-
channelId,
|
|
507
|
+
identity.channelId,
|
|
385
508
|
args.taskId,
|
|
386
509
|
args.keywords
|
|
387
510
|
);
|
|
@@ -392,13 +515,13 @@ export const kg_get_context = {
|
|
|
392
515
|
stats: graphContext.stats,
|
|
393
516
|
message: `Retrieved context with ${graphContext.stats.entityCount} entities and ${graphContext.stats.relationshipCount} relationships`,
|
|
394
517
|
};
|
|
395
|
-
} catch (error:
|
|
396
|
-
logger.error('Failed to get context', { error: error
|
|
518
|
+
} catch (error: unknown) {
|
|
519
|
+
logger.error('Failed to get context', { error: errorMessage(error) });
|
|
397
520
|
return {
|
|
398
521
|
success: false,
|
|
399
522
|
context: null,
|
|
400
523
|
message: 'Failed to get context',
|
|
401
|
-
error: error
|
|
524
|
+
error: errorMessage(error),
|
|
402
525
|
};
|
|
403
526
|
}
|
|
404
527
|
},
|
|
@@ -427,8 +550,12 @@ export const kg_get_high_utility_entities = {
|
|
|
427
550
|
},
|
|
428
551
|
required: [],
|
|
429
552
|
},
|
|
430
|
-
handler: async (
|
|
553
|
+
handler: async (
|
|
554
|
+
args: KnowledgeGraphToolArguments,
|
|
555
|
+
context: McpToolHandlerContext
|
|
556
|
+
): Promise<Record<string, unknown>> => {
|
|
431
557
|
try {
|
|
558
|
+
const identity = requireKnowledgeGraphIdentity(args, context);
|
|
432
559
|
if (!isKnowledgeGraphEnabled()) {
|
|
433
560
|
return {
|
|
434
561
|
success: false,
|
|
@@ -437,18 +564,9 @@ export const kg_get_high_utility_entities = {
|
|
|
437
564
|
};
|
|
438
565
|
}
|
|
439
566
|
|
|
440
|
-
const channelId = args.channelId || context.channelId;
|
|
441
|
-
if (!channelId) {
|
|
442
|
-
return {
|
|
443
|
-
success: false,
|
|
444
|
-
entities: [],
|
|
445
|
-
message: 'channelId is required but not provided',
|
|
446
|
-
};
|
|
447
|
-
}
|
|
448
|
-
|
|
449
567
|
const kgService = getKgService();
|
|
450
568
|
const entities = await kgService.getHighUtilityEntities(
|
|
451
|
-
channelId,
|
|
569
|
+
identity.channelId,
|
|
452
570
|
args.limit || 10
|
|
453
571
|
);
|
|
454
572
|
|
|
@@ -458,13 +576,13 @@ export const kg_get_high_utility_entities = {
|
|
|
458
576
|
count: entities.length,
|
|
459
577
|
message: `Found ${entities.length} high-utility entities`,
|
|
460
578
|
};
|
|
461
|
-
} catch (error:
|
|
462
|
-
logger.error('Failed to get high utility entities', { error: error
|
|
579
|
+
} catch (error: unknown) {
|
|
580
|
+
logger.error('Failed to get high utility entities', { error: errorMessage(error) });
|
|
463
581
|
return {
|
|
464
582
|
success: false,
|
|
465
583
|
entities: [],
|
|
466
584
|
message: 'Failed to get high utility entities',
|
|
467
|
-
error: error
|
|
585
|
+
error: errorMessage(error),
|
|
468
586
|
};
|
|
469
587
|
}
|
|
470
588
|
},
|
|
@@ -511,8 +629,12 @@ export const kg_create_entity = {
|
|
|
511
629
|
},
|
|
512
630
|
required: ['name', 'type'],
|
|
513
631
|
},
|
|
514
|
-
handler: async (
|
|
632
|
+
handler: async (
|
|
633
|
+
args: KnowledgeGraphToolArguments,
|
|
634
|
+
context: McpToolHandlerContext
|
|
635
|
+
): Promise<Record<string, unknown>> => {
|
|
515
636
|
try {
|
|
637
|
+
const identity = requireKnowledgeGraphIdentity(args, context);
|
|
516
638
|
if (!isKnowledgeGraphEnabled()) {
|
|
517
639
|
return {
|
|
518
640
|
success: false,
|
|
@@ -521,27 +643,20 @@ export const kg_create_entity = {
|
|
|
521
643
|
};
|
|
522
644
|
}
|
|
523
645
|
|
|
524
|
-
const channelId = args.channelId || context.channelId;
|
|
525
|
-
if (!channelId) {
|
|
526
|
-
return {
|
|
527
|
-
success: false,
|
|
528
|
-
entity: null,
|
|
529
|
-
message: 'channelId is required but not provided',
|
|
530
|
-
};
|
|
531
|
-
}
|
|
532
|
-
|
|
533
646
|
const kgService = getKgService();
|
|
647
|
+
const name = requireStringArgument(args, 'name');
|
|
648
|
+
const type = requireStringArgument(args, 'type') as EntityType;
|
|
534
649
|
const entity = await kgService.findOrCreateEntity(
|
|
535
650
|
{
|
|
536
|
-
channelId,
|
|
537
|
-
name
|
|
538
|
-
type
|
|
651
|
+
channelId: identity.channelId,
|
|
652
|
+
name,
|
|
653
|
+
type,
|
|
539
654
|
aliases: args.aliases,
|
|
540
655
|
description: args.description,
|
|
541
656
|
confidence: args.confidence || 0.8,
|
|
542
657
|
source: 'manual',
|
|
543
658
|
},
|
|
544
|
-
|
|
659
|
+
identity.agentId
|
|
545
660
|
);
|
|
546
661
|
|
|
547
662
|
return {
|
|
@@ -549,13 +664,13 @@ export const kg_create_entity = {
|
|
|
549
664
|
entity,
|
|
550
665
|
message: `Created entity: ${entity.name} (${entity.type})`,
|
|
551
666
|
};
|
|
552
|
-
} catch (error:
|
|
553
|
-
logger.error('Failed to create entity', { error: error
|
|
667
|
+
} catch (error: unknown) {
|
|
668
|
+
logger.error('Failed to create entity', { error: errorMessage(error) });
|
|
554
669
|
return {
|
|
555
670
|
success: false,
|
|
556
671
|
entity: null,
|
|
557
672
|
message: 'Failed to create entity',
|
|
558
|
-
error: error
|
|
673
|
+
error: errorMessage(error),
|
|
559
674
|
};
|
|
560
675
|
}
|
|
561
676
|
},
|
|
@@ -601,8 +716,12 @@ export const kg_create_relationship = {
|
|
|
601
716
|
},
|
|
602
717
|
required: ['fromEntityId', 'toEntityId', 'type'],
|
|
603
718
|
},
|
|
604
|
-
handler: async (
|
|
719
|
+
handler: async (
|
|
720
|
+
args: KnowledgeGraphToolArguments,
|
|
721
|
+
context: McpToolHandlerContext
|
|
722
|
+
): Promise<Record<string, unknown>> => {
|
|
605
723
|
try {
|
|
724
|
+
const identity = requireKnowledgeGraphIdentity(args, context);
|
|
606
725
|
if (!isKnowledgeGraphEnabled()) {
|
|
607
726
|
return {
|
|
608
727
|
success: false,
|
|
@@ -611,41 +730,46 @@ export const kg_create_relationship = {
|
|
|
611
730
|
};
|
|
612
731
|
}
|
|
613
732
|
|
|
614
|
-
const
|
|
615
|
-
|
|
733
|
+
const kgService = getKgService();
|
|
734
|
+
const fromEntityId = requireStringArgument(args, 'fromEntityId');
|
|
735
|
+
const toEntityId = requireStringArgument(args, 'toEntityId');
|
|
736
|
+
const type = requireStringArgument(args, 'type') as RelationshipType;
|
|
737
|
+
const [fromEntity, toEntity] = await Promise.all([
|
|
738
|
+
kgService.getEntity(fromEntityId, identity.channelId),
|
|
739
|
+
kgService.getEntity(toEntityId, identity.channelId)
|
|
740
|
+
]);
|
|
741
|
+
if (!fromEntity || !toEntity) {
|
|
616
742
|
return {
|
|
617
743
|
success: false,
|
|
618
744
|
relationship: null,
|
|
619
|
-
message: '
|
|
745
|
+
message: 'Both relationship endpoints must belong to the authenticated channel',
|
|
620
746
|
};
|
|
621
747
|
}
|
|
622
|
-
|
|
623
|
-
const kgService = getKgService();
|
|
624
748
|
const relationship = await kgService.createRelationship(
|
|
625
749
|
{
|
|
626
|
-
channelId,
|
|
627
|
-
fromEntityId
|
|
628
|
-
toEntityId
|
|
629
|
-
type
|
|
750
|
+
channelId: identity.channelId,
|
|
751
|
+
fromEntityId,
|
|
752
|
+
toEntityId,
|
|
753
|
+
type,
|
|
630
754
|
label: args.label,
|
|
631
755
|
confidence: args.confidence || 0.8,
|
|
632
756
|
source: 'manual',
|
|
633
757
|
},
|
|
634
|
-
|
|
758
|
+
identity.agentId
|
|
635
759
|
);
|
|
636
760
|
|
|
637
761
|
return {
|
|
638
762
|
success: true,
|
|
639
763
|
relationship,
|
|
640
|
-
message: `Created relationship: ${
|
|
764
|
+
message: `Created relationship: ${type}`,
|
|
641
765
|
};
|
|
642
|
-
} catch (error:
|
|
643
|
-
logger.error('Failed to create relationship', { error: error
|
|
766
|
+
} catch (error: unknown) {
|
|
767
|
+
logger.error('Failed to create relationship', { error: errorMessage(error) });
|
|
644
768
|
return {
|
|
645
769
|
success: false,
|
|
646
770
|
relationship: null,
|
|
647
771
|
message: 'Failed to create relationship',
|
|
648
|
-
error: error
|
|
772
|
+
error: errorMessage(error),
|
|
649
773
|
};
|
|
650
774
|
}
|
|
651
775
|
},
|
|
@@ -675,8 +799,12 @@ export const kg_extract_from_text = {
|
|
|
675
799
|
},
|
|
676
800
|
required: ['text'],
|
|
677
801
|
},
|
|
678
|
-
handler: async (
|
|
802
|
+
handler: async (
|
|
803
|
+
args: KnowledgeGraphToolArguments,
|
|
804
|
+
context: McpToolHandlerContext
|
|
805
|
+
): Promise<Record<string, unknown>> => {
|
|
679
806
|
try {
|
|
807
|
+
const identity = requireKnowledgeGraphIdentity(args, context);
|
|
680
808
|
if (!isKnowledgeGraphEnabled()) {
|
|
681
809
|
return {
|
|
682
810
|
success: false,
|
|
@@ -685,19 +813,11 @@ export const kg_extract_from_text = {
|
|
|
685
813
|
};
|
|
686
814
|
}
|
|
687
815
|
|
|
688
|
-
const channelId = args.channelId || context.channelId;
|
|
689
|
-
if (!channelId) {
|
|
690
|
-
return {
|
|
691
|
-
success: false,
|
|
692
|
-
result: null,
|
|
693
|
-
message: 'channelId is required but not provided',
|
|
694
|
-
};
|
|
695
|
-
}
|
|
696
|
-
|
|
697
816
|
const extractionService = getExtractionService();
|
|
817
|
+
const text = requireStringArgument(args, 'text');
|
|
698
818
|
const result = await extractionService.extractFromText(
|
|
699
|
-
channelId,
|
|
700
|
-
|
|
819
|
+
identity.channelId,
|
|
820
|
+
text,
|
|
701
821
|
args.sourceId
|
|
702
822
|
);
|
|
703
823
|
|
|
@@ -709,13 +829,13 @@ export const kg_extract_from_text = {
|
|
|
709
829
|
executionTimeMs: result.executionTimeMs,
|
|
710
830
|
message: `Extracted ${result.entitiesExtracted} entities and ${result.relationshipsExtracted} relationships`,
|
|
711
831
|
};
|
|
712
|
-
} catch (error:
|
|
713
|
-
logger.error('Failed to extract from text', { error: error
|
|
832
|
+
} catch (error: unknown) {
|
|
833
|
+
logger.error('Failed to extract from text', { error: errorMessage(error) });
|
|
714
834
|
return {
|
|
715
835
|
success: false,
|
|
716
836
|
result: null,
|
|
717
837
|
message: 'Failed to extract from text',
|
|
718
|
-
error: error
|
|
838
|
+
error: errorMessage(error),
|
|
719
839
|
};
|
|
720
840
|
}
|
|
721
841
|
},
|
|
@@ -745,8 +865,12 @@ export const kg_extract_from_memory = {
|
|
|
745
865
|
},
|
|
746
866
|
required: ['memoryId', 'memoryContent'],
|
|
747
867
|
},
|
|
748
|
-
handler: async (
|
|
868
|
+
handler: async (
|
|
869
|
+
args: KnowledgeGraphToolArguments,
|
|
870
|
+
context: McpToolHandlerContext
|
|
871
|
+
): Promise<Record<string, unknown>> => {
|
|
749
872
|
try {
|
|
873
|
+
const identity = requireKnowledgeGraphIdentity(args, context);
|
|
750
874
|
if (!isKnowledgeGraphEnabled()) {
|
|
751
875
|
return {
|
|
752
876
|
success: false,
|
|
@@ -755,20 +879,13 @@ export const kg_extract_from_memory = {
|
|
|
755
879
|
};
|
|
756
880
|
}
|
|
757
881
|
|
|
758
|
-
const channelId = args.channelId || context.channelId;
|
|
759
|
-
if (!channelId) {
|
|
760
|
-
return {
|
|
761
|
-
success: false,
|
|
762
|
-
result: null,
|
|
763
|
-
message: 'channelId is required but not provided',
|
|
764
|
-
};
|
|
765
|
-
}
|
|
766
|
-
|
|
767
882
|
const extractionService = getExtractionService();
|
|
883
|
+
const memoryId = requireStringArgument(args, 'memoryId');
|
|
884
|
+
const memoryContent = requireStringArgument(args, 'memoryContent');
|
|
768
885
|
const result = await extractionService.processMemory(
|
|
769
|
-
channelId,
|
|
770
|
-
|
|
771
|
-
|
|
886
|
+
identity.channelId,
|
|
887
|
+
memoryId,
|
|
888
|
+
memoryContent
|
|
772
889
|
);
|
|
773
890
|
|
|
774
891
|
return {
|
|
@@ -779,13 +896,13 @@ export const kg_extract_from_memory = {
|
|
|
779
896
|
executionTimeMs: result.executionTimeMs,
|
|
780
897
|
message: `Extracted ${result.entitiesExtracted} entities and ${result.relationshipsExtracted} relationships from memory`,
|
|
781
898
|
};
|
|
782
|
-
} catch (error:
|
|
783
|
-
logger.error('Failed to extract from memory', { error: error
|
|
899
|
+
} catch (error: unknown) {
|
|
900
|
+
logger.error('Failed to extract from memory', { error: errorMessage(error) });
|
|
784
901
|
return {
|
|
785
902
|
success: false,
|
|
786
903
|
result: null,
|
|
787
904
|
message: 'Failed to extract from memory',
|
|
788
|
-
error: error
|
|
905
|
+
error: errorMessage(error),
|
|
789
906
|
};
|
|
790
907
|
}
|
|
791
908
|
},
|
|
@@ -821,8 +938,12 @@ export const kg_get_phase_context = {
|
|
|
821
938
|
},
|
|
822
939
|
required: ['phase'],
|
|
823
940
|
},
|
|
824
|
-
handler: async (
|
|
941
|
+
handler: async (
|
|
942
|
+
args: KnowledgeGraphToolArguments,
|
|
943
|
+
context: McpToolHandlerContext
|
|
944
|
+
): Promise<Record<string, unknown>> => {
|
|
825
945
|
try {
|
|
946
|
+
const identity = requireKnowledgeGraphIdentity(args, context);
|
|
826
947
|
if (!isKnowledgeGraphEnabled()) {
|
|
827
948
|
return {
|
|
828
949
|
success: false,
|
|
@@ -831,22 +952,37 @@ export const kg_get_phase_context = {
|
|
|
831
952
|
};
|
|
832
953
|
}
|
|
833
954
|
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
955
|
+
if (args.entityIds !== undefined && (
|
|
956
|
+
!Array.isArray(args.entityIds) ||
|
|
957
|
+
args.entityIds.some((entityId: unknown) => (
|
|
958
|
+
typeof entityId !== 'string' || entityId.trim().length === 0
|
|
959
|
+
))
|
|
960
|
+
)) {
|
|
961
|
+
throw new Error('entityIds must contain only non-empty entity identifiers');
|
|
962
|
+
}
|
|
963
|
+
const entityIds = (args.entityIds || []) as string[];
|
|
964
|
+
if (entityIds.length > 0) {
|
|
965
|
+
const kgService = getKgService();
|
|
966
|
+
const scopedEntities = await Promise.all(
|
|
967
|
+
entityIds.map(entityId => kgService.getEntity(entityId, identity.channelId))
|
|
968
|
+
);
|
|
969
|
+
if (scopedEntities.some(entity => !entity)) {
|
|
970
|
+
return {
|
|
971
|
+
success: false,
|
|
972
|
+
phaseContext: null,
|
|
973
|
+
message: 'Every phase-context entity must belong to the authenticated channel',
|
|
974
|
+
};
|
|
975
|
+
}
|
|
841
976
|
}
|
|
842
977
|
|
|
843
978
|
const orparIntegration = getOrparIntegration();
|
|
979
|
+
const phase = requireStringArgument(args, 'phase') as KnowledgeGraphToolArguments['phase'];
|
|
844
980
|
const phaseContext = await orparIntegration.getPhaseContext(
|
|
845
|
-
channelId,
|
|
846
|
-
|
|
847
|
-
|
|
981
|
+
identity.channelId,
|
|
982
|
+
identity.agentId,
|
|
983
|
+
phase!,
|
|
848
984
|
args.taskContent,
|
|
849
|
-
|
|
985
|
+
entityIds
|
|
850
986
|
);
|
|
851
987
|
|
|
852
988
|
return {
|
|
@@ -858,13 +994,13 @@ export const kg_get_phase_context = {
|
|
|
858
994
|
executionTimeMs: phaseContext.executionTimeMs,
|
|
859
995
|
message: phaseContext.summary,
|
|
860
996
|
};
|
|
861
|
-
} catch (error:
|
|
862
|
-
logger.error('Failed to get phase context', { error: error
|
|
997
|
+
} catch (error: unknown) {
|
|
998
|
+
logger.error('Failed to get phase context', { error: errorMessage(error) });
|
|
863
999
|
return {
|
|
864
1000
|
success: false,
|
|
865
1001
|
phaseContext: null,
|
|
866
1002
|
message: 'Failed to get phase context',
|
|
867
|
-
error: error
|
|
1003
|
+
error: errorMessage(error),
|
|
868
1004
|
};
|
|
869
1005
|
}
|
|
870
1006
|
},
|
|
@@ -893,8 +1029,12 @@ export const kg_find_duplicates = {
|
|
|
893
1029
|
},
|
|
894
1030
|
required: [],
|
|
895
1031
|
},
|
|
896
|
-
handler: async (
|
|
1032
|
+
handler: async (
|
|
1033
|
+
args: KnowledgeGraphToolArguments,
|
|
1034
|
+
context: McpToolHandlerContext
|
|
1035
|
+
): Promise<Record<string, unknown>> => {
|
|
897
1036
|
try {
|
|
1037
|
+
const identity = requireKnowledgeGraphIdentity(args, context);
|
|
898
1038
|
if (!isKnowledgeGraphEnabled()) {
|
|
899
1039
|
return {
|
|
900
1040
|
success: false,
|
|
@@ -903,18 +1043,9 @@ export const kg_find_duplicates = {
|
|
|
903
1043
|
};
|
|
904
1044
|
}
|
|
905
1045
|
|
|
906
|
-
const channelId = args.channelId || context.channelId;
|
|
907
|
-
if (!channelId) {
|
|
908
|
-
return {
|
|
909
|
-
success: false,
|
|
910
|
-
duplicates: [],
|
|
911
|
-
message: 'channelId is required but not provided',
|
|
912
|
-
};
|
|
913
|
-
}
|
|
914
|
-
|
|
915
1046
|
const kgService = getKgService();
|
|
916
1047
|
const duplicates = await kgService.findSimilarEntities(
|
|
917
|
-
channelId,
|
|
1048
|
+
identity.channelId,
|
|
918
1049
|
args.threshold || 0.8
|
|
919
1050
|
);
|
|
920
1051
|
|
|
@@ -926,13 +1057,13 @@ export const kg_find_duplicates = {
|
|
|
926
1057
|
? `Found ${duplicates.length} potential duplicate pairs`
|
|
927
1058
|
: 'No potential duplicates found',
|
|
928
1059
|
};
|
|
929
|
-
} catch (error:
|
|
930
|
-
logger.error('Failed to find duplicates', { error: error
|
|
1060
|
+
} catch (error: unknown) {
|
|
1061
|
+
logger.error('Failed to find duplicates', { error: errorMessage(error) });
|
|
931
1062
|
return {
|
|
932
1063
|
success: false,
|
|
933
1064
|
duplicates: [],
|
|
934
1065
|
message: 'Failed to find duplicates',
|
|
935
|
-
error: error
|
|
1066
|
+
error: errorMessage(error),
|
|
936
1067
|
};
|
|
937
1068
|
}
|
|
938
1069
|
},
|
|
@@ -959,8 +1090,12 @@ export const kg_merge_entities = {
|
|
|
959
1090
|
},
|
|
960
1091
|
required: ['targetEntityId', 'sourceEntityIds'],
|
|
961
1092
|
},
|
|
962
|
-
handler: async (
|
|
1093
|
+
handler: async (
|
|
1094
|
+
args: KnowledgeGraphToolArguments,
|
|
1095
|
+
context: McpToolHandlerContext
|
|
1096
|
+
): Promise<Record<string, unknown>> => {
|
|
963
1097
|
try {
|
|
1098
|
+
const identity = requireKnowledgeGraphIdentity(args, context);
|
|
964
1099
|
if (!isKnowledgeGraphEnabled()) {
|
|
965
1100
|
return {
|
|
966
1101
|
success: false,
|
|
@@ -970,26 +1105,40 @@ export const kg_merge_entities = {
|
|
|
970
1105
|
}
|
|
971
1106
|
|
|
972
1107
|
const kgService = getKgService();
|
|
1108
|
+
const targetEntityId = requireStringArgument(args, 'targetEntityId');
|
|
1109
|
+
const sourceEntityIds = requireStringArrayArgument(args, 'sourceEntityIds');
|
|
1110
|
+
const entityIds = [targetEntityId, ...sourceEntityIds];
|
|
1111
|
+
const scopedEntities = await Promise.all(
|
|
1112
|
+
entityIds.map((entityId: string) => kgService.getEntity(entityId, identity.channelId))
|
|
1113
|
+
);
|
|
1114
|
+
if (scopedEntities.some(entity => !entity)) {
|
|
1115
|
+
return {
|
|
1116
|
+
success: false,
|
|
1117
|
+
result: null,
|
|
1118
|
+
message: 'Every merged entity must belong to the authenticated channel',
|
|
1119
|
+
};
|
|
1120
|
+
}
|
|
973
1121
|
const result = await kgService.mergeEntities(
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
1122
|
+
targetEntityId,
|
|
1123
|
+
sourceEntityIds,
|
|
1124
|
+
identity.agentId,
|
|
1125
|
+
identity.channelId
|
|
977
1126
|
);
|
|
978
1127
|
|
|
979
1128
|
return {
|
|
980
1129
|
success: result.success,
|
|
981
1130
|
result,
|
|
982
1131
|
message: result.success
|
|
983
|
-
? `Successfully merged ${
|
|
1132
|
+
? `Successfully merged ${sourceEntityIds.length} entities into target`
|
|
984
1133
|
: result.error || 'Merge failed',
|
|
985
1134
|
};
|
|
986
|
-
} catch (error:
|
|
987
|
-
logger.error('Failed to merge entities', { error: error
|
|
1135
|
+
} catch (error: unknown) {
|
|
1136
|
+
logger.error('Failed to merge entities', { error: errorMessage(error) });
|
|
988
1137
|
return {
|
|
989
1138
|
success: false,
|
|
990
1139
|
result: null,
|
|
991
1140
|
message: 'Failed to merge entities',
|
|
992
|
-
error: error
|
|
1141
|
+
error: errorMessage(error),
|
|
993
1142
|
};
|
|
994
1143
|
}
|
|
995
1144
|
},
|