@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
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2024 Brad Anderson
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
* @author Brad Anderson <BradA1878@pm.me>
|
|
17
|
+
* @repository https://github.com/BradA1878/model-exchange-framework
|
|
18
|
+
* @documentation https://mxf-dev.github.io/mxf/
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import mongoose, { Document, Schema } from 'mongoose';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Permanent tenant ownership of a globally keyed agent identity.
|
|
25
|
+
*
|
|
26
|
+
* Reservations are intentionally never removed when an Agent or its channel
|
|
27
|
+
* keys are deleted. Releasing the row would let another tenant take over the
|
|
28
|
+
* same agentId and inherit resources that are keyed only by that identifier.
|
|
29
|
+
*/
|
|
30
|
+
export interface IAgentIdentityReservation extends Document<string> {
|
|
31
|
+
_id: string;
|
|
32
|
+
agentId: string;
|
|
33
|
+
ownerId: string;
|
|
34
|
+
claimedAt: Date;
|
|
35
|
+
createdAt: Date;
|
|
36
|
+
updatedAt: Date;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const AgentIdentityReservationSchema = new Schema<IAgentIdentityReservation>(
|
|
40
|
+
{
|
|
41
|
+
// MongoDB's built-in _id index is the race barrier. It exists before
|
|
42
|
+
// any application-created indexes, including during first startup.
|
|
43
|
+
_id: {
|
|
44
|
+
type: String,
|
|
45
|
+
required: true
|
|
46
|
+
},
|
|
47
|
+
agentId: {
|
|
48
|
+
type: String,
|
|
49
|
+
required: true,
|
|
50
|
+
immutable: true
|
|
51
|
+
},
|
|
52
|
+
ownerId: {
|
|
53
|
+
type: String,
|
|
54
|
+
required: true,
|
|
55
|
+
immutable: true,
|
|
56
|
+
index: true
|
|
57
|
+
},
|
|
58
|
+
claimedAt: {
|
|
59
|
+
type: Date,
|
|
60
|
+
required: true,
|
|
61
|
+
default: Date.now
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
collection: 'agent_identity_reservations',
|
|
66
|
+
timestamps: true
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
// The built-in `_id` index is the correctness boundary; no asynchronously
|
|
71
|
+
// created application index is required before claims are safe.
|
|
72
|
+
const AgentIdentityReservation = mongoose.model<IAgentIdentityReservation>(
|
|
73
|
+
'AgentIdentityReservation',
|
|
74
|
+
AgentIdentityReservationSchema
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
export default AgentIdentityReservation;
|
package/src/models/channel.ts
CHANGED
|
@@ -48,6 +48,8 @@ export interface IChannel extends Document {
|
|
|
48
48
|
maxAgents: number;
|
|
49
49
|
allowAnonymous: boolean;
|
|
50
50
|
showActiveAgents: boolean; // Whether agents can see other agents in the channel
|
|
51
|
+
allowedTools: string[]; // Empty means no additional channel-level restriction
|
|
52
|
+
systemLlmEnabled: boolean;
|
|
51
53
|
|
|
52
54
|
// Channel state
|
|
53
55
|
active: boolean;
|
package/src/models/channelKey.ts
CHANGED
|
@@ -51,6 +51,11 @@ export interface IChannelKey extends Document {
|
|
|
51
51
|
// chose its own agentId, so one shared key let a client present any agent identity.
|
|
52
52
|
agentId: string;
|
|
53
53
|
|
|
54
|
+
// Maximum tool capability carried by this credential. A connecting agent
|
|
55
|
+
// may narrow this list, but can never grant itself tools outside it.
|
|
56
|
+
// Omission means the curated core-tool maximum; [] denies every tool.
|
|
57
|
+
allowedTools?: string[];
|
|
58
|
+
|
|
54
59
|
// Optional name for the key (for user reference)
|
|
55
60
|
name?: string;
|
|
56
61
|
|
|
@@ -93,6 +98,11 @@ const ChannelKeySchema: Schema = new Schema({
|
|
|
93
98
|
required: true,
|
|
94
99
|
index: true,
|
|
95
100
|
},
|
|
101
|
+
allowedTools: {
|
|
102
|
+
type: [String],
|
|
103
|
+
required: false,
|
|
104
|
+
default: undefined,
|
|
105
|
+
},
|
|
96
106
|
name: {
|
|
97
107
|
type: String,
|
|
98
108
|
required: false,
|
package/src/models/memory.ts
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* These models define the database structure for different memory types.
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
|
-
import mongoose, { Schema,
|
|
28
|
+
import mongoose, { Schema, Model } from 'mongoose';
|
|
29
29
|
import { v4 as uuidv4 } from 'uuid';
|
|
30
30
|
|
|
31
31
|
import {
|
|
@@ -37,8 +37,6 @@ import {
|
|
|
37
37
|
} from '../types/MemoryTypes.js';
|
|
38
38
|
import {
|
|
39
39
|
MemoryUtilitySubdocument,
|
|
40
|
-
QValueHistoryEntry,
|
|
41
|
-
QValueInitSource,
|
|
42
40
|
DEFAULT_UTILITY_SUBDOCUMENT
|
|
43
41
|
} from '../types/MemoryUtilityTypes.js';
|
|
44
42
|
|
|
@@ -51,7 +49,7 @@ const baseMemorySchema = new Schema({
|
|
|
51
49
|
type: String,
|
|
52
50
|
required: true,
|
|
53
51
|
unique: true,
|
|
54
|
-
default: () => uuidv4()
|
|
52
|
+
default: (): string => uuidv4()
|
|
55
53
|
},
|
|
56
54
|
|
|
57
55
|
// Creation timestamp
|
|
@@ -131,14 +129,10 @@ const baseMemorySchema = new Schema({
|
|
|
131
129
|
default: 'default'
|
|
132
130
|
}
|
|
133
131
|
}, { _id: false }),
|
|
134
|
-
default: () => ({
|
|
135
|
-
|
|
132
|
+
default: (): MemoryUtilitySubdocument => ({
|
|
133
|
+
...DEFAULT_UTILITY_SUBDOCUMENT,
|
|
136
134
|
qValueHistory: [],
|
|
137
|
-
retrievalCount: 0,
|
|
138
|
-
successCount: 0,
|
|
139
|
-
failureCount: 0,
|
|
140
135
|
lastRewardAt: new Date(),
|
|
141
|
-
initializedFrom: 'default'
|
|
142
136
|
})
|
|
143
137
|
}
|
|
144
138
|
}, {
|
|
@@ -146,7 +140,7 @@ const baseMemorySchema = new Schema({
|
|
|
146
140
|
strict: false, // Allow for flexible schema evolution
|
|
147
141
|
id: false, // Don't create default MongoDB _id field
|
|
148
142
|
toJSON: {
|
|
149
|
-
transform: (
|
|
143
|
+
transform: (_document: unknown, ret: Record<string, unknown>): Record<string, unknown> => {
|
|
150
144
|
delete ret._id; // Remove MongoDB _id when converting to JSON
|
|
151
145
|
return ret;
|
|
152
146
|
}
|
|
@@ -160,8 +154,7 @@ const agentMemorySchema = new Schema({
|
|
|
160
154
|
// Reference to Agent ID
|
|
161
155
|
agentId: {
|
|
162
156
|
type: String,
|
|
163
|
-
required: true
|
|
164
|
-
index: true
|
|
157
|
+
required: true
|
|
165
158
|
},
|
|
166
159
|
|
|
167
160
|
// Conversation history
|
|
@@ -178,8 +171,7 @@ const channelMemorySchema = new Schema({
|
|
|
178
171
|
// Reference to Channel ID
|
|
179
172
|
channelId: {
|
|
180
173
|
type: String,
|
|
181
|
-
required: true
|
|
182
|
-
index: true
|
|
174
|
+
required: true
|
|
183
175
|
},
|
|
184
176
|
|
|
185
177
|
// Shared state visible to all agents in the channel
|
|
@@ -223,9 +215,6 @@ const relationshipMemorySchema = new Schema({
|
|
|
223
215
|
}
|
|
224
216
|
});
|
|
225
217
|
|
|
226
|
-
// Create compound index for relationship memory
|
|
227
|
-
relationshipMemorySchema.index({ agentId1: 1, agentId2: 1, channelId: 1 }, { unique: true });
|
|
228
|
-
|
|
229
218
|
// Complete memory models by combining base and specific schemas
|
|
230
219
|
const AgentMemorySchema = new Schema({
|
|
231
220
|
...baseMemorySchema.obj,
|
|
@@ -242,6 +231,14 @@ const RelationshipMemorySchema = new Schema({
|
|
|
242
231
|
...relationshipMemorySchema.obj
|
|
243
232
|
});
|
|
244
233
|
|
|
234
|
+
// Enforce one authoritative document for every memory identity on the final schemas.
|
|
235
|
+
AgentMemorySchema.index({ agentId: 1 }, { unique: true });
|
|
236
|
+
ChannelMemorySchema.index({ channelId: 1 }, { unique: true });
|
|
237
|
+
RelationshipMemorySchema.index(
|
|
238
|
+
{ agentId1: 1, agentId2: 1, channelId: 1 },
|
|
239
|
+
{ unique: true }
|
|
240
|
+
);
|
|
241
|
+
|
|
245
242
|
// Create indexes for Q-value queries (MULS optimization)
|
|
246
243
|
// Index for sorting by Q-value descending (top performers)
|
|
247
244
|
AgentMemorySchema.index({ 'utility.qValue': -1 });
|
|
@@ -296,7 +293,9 @@ export const RelationshipMemory: Model<RelationshipMemoryDocument> =
|
|
|
296
293
|
* @param scope Memory scope
|
|
297
294
|
* @returns The corresponding memory model
|
|
298
295
|
*/
|
|
299
|
-
export const getMemoryModelByScope = (
|
|
296
|
+
export const getMemoryModelByScope = (
|
|
297
|
+
scope: MemoryScope
|
|
298
|
+
): Model<AgentMemoryDocument> | Model<ChannelMemoryDocument> | Model<RelationshipMemoryDocument> => {
|
|
300
299
|
switch (scope) {
|
|
301
300
|
case MemoryScope.AGENT:
|
|
302
301
|
return AgentMemory;
|
|
@@ -30,8 +30,9 @@ import {
|
|
|
30
30
|
MemoryStratum,
|
|
31
31
|
MemoryImportance,
|
|
32
32
|
MemoryEntry as IMemoryEntry,
|
|
33
|
+
MemoryContext,
|
|
34
|
+
MemorySource,
|
|
33
35
|
SurpriseDetection,
|
|
34
|
-
MemoryPattern
|
|
35
36
|
} from '../types/MemoryStrataTypes.js';
|
|
36
37
|
|
|
37
38
|
/**
|
|
@@ -48,21 +49,8 @@ export interface IMemoryEntryDocument extends Document {
|
|
|
48
49
|
embedding?: number[];
|
|
49
50
|
importance: MemoryImportance;
|
|
50
51
|
tags: string[];
|
|
51
|
-
source:
|
|
52
|
-
|
|
53
|
-
agentId?: string;
|
|
54
|
-
channelId?: string;
|
|
55
|
-
eventId?: string;
|
|
56
|
-
data?: Record<string, unknown>;
|
|
57
|
-
};
|
|
58
|
-
context: {
|
|
59
|
-
agentId: string;
|
|
60
|
-
channelId?: string;
|
|
61
|
-
taskId?: string;
|
|
62
|
-
orparPhase?: string;
|
|
63
|
-
timestamp: Date;
|
|
64
|
-
data?: Record<string, unknown>;
|
|
65
|
-
};
|
|
52
|
+
source: MemorySource;
|
|
53
|
+
context: MemoryContext;
|
|
66
54
|
accessCount: number;
|
|
67
55
|
lastAccessed: Date;
|
|
68
56
|
createdAt: Date;
|
|
@@ -200,8 +188,7 @@ const MemoryEntrySchema: Schema = new Schema(
|
|
|
200
188
|
index: true
|
|
201
189
|
},
|
|
202
190
|
expiresAt: {
|
|
203
|
-
type: Date
|
|
204
|
-
index: true
|
|
191
|
+
type: Date
|
|
205
192
|
},
|
|
206
193
|
relatedMemories: {
|
|
207
194
|
type: [String],
|
|
@@ -237,8 +224,7 @@ const SurpriseHistorySchema: Schema = new Schema(
|
|
|
237
224
|
},
|
|
238
225
|
timestamp: {
|
|
239
226
|
type: Date,
|
|
240
|
-
default: Date.now
|
|
241
|
-
index: true
|
|
227
|
+
default: Date.now
|
|
242
228
|
},
|
|
243
229
|
momentarySurprise: {
|
|
244
230
|
type: Number,
|
|
@@ -397,7 +383,7 @@ export function memoryEntryToDocument(
|
|
|
397
383
|
importance: entry.importance,
|
|
398
384
|
tags: entry.tags,
|
|
399
385
|
source: entry.source,
|
|
400
|
-
context: entry.context
|
|
386
|
+
context: entry.context,
|
|
401
387
|
accessCount: entry.accessCount,
|
|
402
388
|
lastAccessed: entry.lastAccessed,
|
|
403
389
|
createdAt: entry.createdAt,
|
|
@@ -420,8 +406,8 @@ export function documentToMemoryEntry(doc: IMemoryEntryDocument): IMemoryEntry {
|
|
|
420
406
|
embedding: doc.embedding,
|
|
421
407
|
importance: doc.importance,
|
|
422
408
|
tags: doc.tags,
|
|
423
|
-
source: doc.source
|
|
424
|
-
context: doc.context
|
|
409
|
+
source: doc.source,
|
|
410
|
+
context: doc.context,
|
|
425
411
|
accessCount: doc.accessCount,
|
|
426
412
|
lastAccessed: doc.lastAccessed,
|
|
427
413
|
createdAt: doc.createdAt,
|
package/src/models/plan.ts
CHANGED
|
@@ -41,9 +41,9 @@ export interface IPlan extends Document {
|
|
|
41
41
|
planId: string;
|
|
42
42
|
title: string;
|
|
43
43
|
createdBy: string;
|
|
44
|
-
channelId
|
|
44
|
+
channelId: string;
|
|
45
45
|
items: IPlanItem[];
|
|
46
|
-
metadata?: Record<string,
|
|
46
|
+
metadata?: Record<string, unknown>;
|
|
47
47
|
createdAt: Date;
|
|
48
48
|
updatedAt: Date;
|
|
49
49
|
}
|
|
@@ -110,7 +110,7 @@ const PlanSchema: Schema = new Schema(
|
|
|
110
110
|
},
|
|
111
111
|
channelId: {
|
|
112
112
|
type: String,
|
|
113
|
-
required:
|
|
113
|
+
required: true,
|
|
114
114
|
index: true
|
|
115
115
|
},
|
|
116
116
|
items: {
|
|
@@ -32,6 +32,7 @@ import { TaskEffectivenessMetrics, TaskDefinition } from '../types/Effectiveness
|
|
|
32
32
|
*/
|
|
33
33
|
export interface ITaskEffectiveness extends Document {
|
|
34
34
|
taskId: string;
|
|
35
|
+
agentId: string;
|
|
35
36
|
channelId: string;
|
|
36
37
|
agentIds: string[];
|
|
37
38
|
definition: TaskDefinition;
|
|
@@ -48,7 +49,11 @@ const TaskEffectivenessSchema = new Schema<ITaskEffectiveness>({
|
|
|
48
49
|
taskId: {
|
|
49
50
|
type: String,
|
|
50
51
|
required: true,
|
|
51
|
-
|
|
52
|
+
index: true
|
|
53
|
+
},
|
|
54
|
+
agentId: {
|
|
55
|
+
type: String,
|
|
56
|
+
required: true,
|
|
52
57
|
index: true
|
|
53
58
|
},
|
|
54
59
|
channelId: {
|
|
@@ -62,6 +67,7 @@ const TaskEffectivenessSchema = new Schema<ITaskEffectiveness>({
|
|
|
62
67
|
}],
|
|
63
68
|
definition: {
|
|
64
69
|
taskId: String,
|
|
70
|
+
agentId: String,
|
|
65
71
|
channelId: String,
|
|
66
72
|
taskType: { type: String, index: true },
|
|
67
73
|
description: String,
|
|
@@ -134,6 +140,7 @@ const TaskEffectivenessSchema = new Schema<ITaskEffectiveness>({
|
|
|
134
140
|
});
|
|
135
141
|
|
|
136
142
|
// Indexes for analytics queries
|
|
143
|
+
TaskEffectivenessSchema.index({ agentId: 1, channelId: 1, taskId: 1 }, { unique: true });
|
|
137
144
|
TaskEffectivenessSchema.index({ channelId: 1, 'metrics.metadata.type': 1 });
|
|
138
145
|
TaskEffectivenessSchema.index({ 'metrics.metadata.startTime': 1, 'metrics.metadata.status': 1 });
|
|
139
146
|
TaskEffectivenessSchema.index({ agentIds: 1, completedAt: 1 });
|
|
@@ -149,4 +156,4 @@ TaskEffectivenessSchema.pre('save', function(next) {
|
|
|
149
156
|
});
|
|
150
157
|
|
|
151
158
|
// Create and export the model
|
|
152
|
-
export const TaskEffectivenessModel = mongoose.model<ITaskEffectiveness>('TaskEffectiveness', TaskEffectivenessSchema);
|
|
159
|
+
export const TaskEffectivenessModel = mongoose.model<ITaskEffectiveness>('TaskEffectiveness', TaskEffectivenessSchema);
|
package/src/models/user.ts
CHANGED
|
@@ -73,6 +73,10 @@ export interface IUser extends Document {
|
|
|
73
73
|
avatar?: string;
|
|
74
74
|
isActive: boolean;
|
|
75
75
|
lastLogin?: Date;
|
|
76
|
+
/** SHA-256 digest of the only currently valid magic-link nonce. */
|
|
77
|
+
magicLinkNonceHash?: string;
|
|
78
|
+
/** Server-side expiry used with the nonce for atomic one-time consumption. */
|
|
79
|
+
magicLinkExpiresAt?: Date;
|
|
76
80
|
createdAt: Date;
|
|
77
81
|
updatedAt: Date;
|
|
78
82
|
|
|
@@ -131,6 +135,14 @@ const UserSchema = new Schema<IUser>({
|
|
|
131
135
|
lastLogin: {
|
|
132
136
|
type: Date
|
|
133
137
|
},
|
|
138
|
+
magicLinkNonceHash: {
|
|
139
|
+
type: String,
|
|
140
|
+
select: false
|
|
141
|
+
},
|
|
142
|
+
magicLinkExpiresAt: {
|
|
143
|
+
type: Date,
|
|
144
|
+
select: false
|
|
145
|
+
},
|
|
134
146
|
createdAt: {
|
|
135
147
|
type: Date,
|
|
136
148
|
default: Date.now
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test-environment containment for external LLM calls.
|
|
3
|
+
*
|
|
4
|
+
* Unit and integration test processes must not spend money merely because a
|
|
5
|
+
* real API key is present in the developer's environment. Tests that
|
|
6
|
+
* intentionally exercise a live provider have to opt in explicitly.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export const EXTERNAL_LLM_TEST_OPT_IN_ENV = 'MXF_TEST_ALLOW_EXTERNAL_LLM_CALLS';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Fail before an external provider request can leave a test process.
|
|
13
|
+
*
|
|
14
|
+
* Only the exact value `true` enables live calls. This keeps misspellings and
|
|
15
|
+
* inherited non-empty values from weakening the safety boundary.
|
|
16
|
+
*/
|
|
17
|
+
export function assertExternalLlmCallAllowed(providerName: string): void {
|
|
18
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (process.env[EXTERNAL_LLM_TEST_OPT_IN_ENV] === 'true') {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
throw new Error(
|
|
27
|
+
`External LLM call blocked for ${providerName} because NODE_ENV=test. ` +
|
|
28
|
+
`Set ${EXTERNAL_LLM_TEST_OPT_IN_ENV}=true only for an explicitly authorized live-provider test.`
|
|
29
|
+
);
|
|
30
|
+
}
|
|
@@ -53,6 +53,15 @@ export interface McpToolHandlerContext {
|
|
|
53
53
|
agentId?: string;
|
|
54
54
|
/** Channel ID where the request originated */
|
|
55
55
|
channelId?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Server-derived credential capability for this exact request. Transport
|
|
58
|
+
* boundaries populate it from the validated channel key; callers must not
|
|
59
|
+
* construct it from agent-provided identity or allowlist fields.
|
|
60
|
+
*/
|
|
61
|
+
authorization?: {
|
|
62
|
+
keyId: string;
|
|
63
|
+
allowedTools?: string[];
|
|
64
|
+
};
|
|
56
65
|
/** Additional context data */
|
|
57
66
|
data?: Record<string, any>;
|
|
58
67
|
}
|
|
@@ -468,6 +468,8 @@ export class AnthropicMcpClient extends BaseMcpClient {
|
|
|
468
468
|
context: AgentContext,
|
|
469
469
|
options?: Record<string, any>
|
|
470
470
|
): Promise<McpApiResponse> {
|
|
471
|
+
this.assertExternalLlmCallAllowed();
|
|
472
|
+
|
|
471
473
|
// Structure messages for Anthropic based on context
|
|
472
474
|
const { systemPrompt, messages } = this.structureMessagesFromContext(context);
|
|
473
475
|
|
|
@@ -489,6 +489,7 @@ export class AzureOpenAiMcpClient extends BaseMcpClient {
|
|
|
489
489
|
context: AgentContext,
|
|
490
490
|
options?: Record<string, any>
|
|
491
491
|
): Promise<McpApiResponse> {
|
|
492
|
+
this.assertExternalLlmCallAllowed();
|
|
492
493
|
|
|
493
494
|
// Structure messages for Azure based on context
|
|
494
495
|
const azureMessages = this.structureMessagesFromContext(context);
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
import { Observable, from, of, throwError } from 'rxjs';
|
|
30
30
|
import { map, catchError } from 'rxjs/operators';
|
|
31
31
|
import { createStrictValidator } from '../../../utils/validation.js';
|
|
32
|
+
import { assertExternalLlmCallAllowed } from '../LlmTestEnvironmentGuard.js';
|
|
32
33
|
import {
|
|
33
34
|
IMcpClient,
|
|
34
35
|
McpClientConfig,
|
|
@@ -50,6 +51,9 @@ import {
|
|
|
50
51
|
* Abstract base class for MCP client implementations
|
|
51
52
|
*/
|
|
52
53
|
export abstract class BaseMcpClient implements IMcpClient {
|
|
54
|
+
/** Override only for providers guaranteed to stay on the local machine. */
|
|
55
|
+
protected isExternalLlmProvider = true;
|
|
56
|
+
|
|
53
57
|
// Configuration for this client - initialize with empty defaults to satisfy TypeScript
|
|
54
58
|
protected config: McpClientConfig = {
|
|
55
59
|
apiKey: '',
|
|
@@ -121,6 +125,13 @@ export abstract class BaseMcpClient implements IMcpClient {
|
|
|
121
125
|
tools?: McpTool[],
|
|
122
126
|
options?: Record<string, any>
|
|
123
127
|
): Promise<McpApiResponse>;
|
|
128
|
+
|
|
129
|
+
/** Enforce the test-process paid/external LLM safety boundary. */
|
|
130
|
+
protected assertExternalLlmCallAllowed(): void {
|
|
131
|
+
if (this.isExternalLlmProvider) {
|
|
132
|
+
assertExternalLlmCallAllowed(this.constructor.name);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
124
135
|
|
|
125
136
|
/**
|
|
126
137
|
* Send a message to the LLM
|
|
@@ -140,6 +151,8 @@ export abstract class BaseMcpClient implements IMcpClient {
|
|
|
140
151
|
}
|
|
141
152
|
|
|
142
153
|
try {
|
|
154
|
+
this.assertExternalLlmCallAllowed();
|
|
155
|
+
|
|
143
156
|
// Validate messages array
|
|
144
157
|
this.validator.assertIsArray(messages);
|
|
145
158
|
if (messages.length === 0) {
|
|
@@ -200,6 +200,13 @@ export class CustomMcpClient extends BaseMcpClient {
|
|
|
200
200
|
options?: Record<string, any>
|
|
201
201
|
): Observable<McpApiResponse> {
|
|
202
202
|
return new Observable<McpApiResponse>(subscriber => {
|
|
203
|
+
try {
|
|
204
|
+
this.assertExternalLlmCallAllowed();
|
|
205
|
+
} catch (error) {
|
|
206
|
+
subscriber.error(error);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
|
|
203
210
|
this.sendWithContextImpl(context, options)
|
|
204
211
|
.then(response => {
|
|
205
212
|
subscriber.next(response);
|
|
@@ -545,6 +545,8 @@ export class GeminiMcpClient extends BaseMcpClient {
|
|
|
545
545
|
context: AgentContext,
|
|
546
546
|
options?: Record<string, any>
|
|
547
547
|
): Promise<McpApiResponse> {
|
|
548
|
+
this.assertExternalLlmCallAllowed();
|
|
549
|
+
|
|
548
550
|
if (!this.genAiClient) {
|
|
549
551
|
throw new Error('Google Gen AI client not initialized');
|
|
550
552
|
}
|
|
@@ -113,6 +113,8 @@ const logger = new Logger('debug', 'OllamaMcpClient', 'server');
|
|
|
113
113
|
* Ollama MCP Client implementation
|
|
114
114
|
*/
|
|
115
115
|
export class OllamaMcpClient extends BaseMcpClient {
|
|
116
|
+
protected isExternalLlmProvider = false;
|
|
117
|
+
|
|
116
118
|
private baseUrl: string;
|
|
117
119
|
private timeout: number;
|
|
118
120
|
|
|
@@ -561,4 +563,4 @@ export class OllamaMcpClient extends BaseMcpClient {
|
|
|
561
563
|
|
|
562
564
|
return ollamaMsg;
|
|
563
565
|
}
|
|
564
|
-
}
|
|
566
|
+
}
|
|
@@ -601,6 +601,8 @@ export class OpenAiMcpClient extends BaseMcpClient {
|
|
|
601
601
|
context: AgentContext,
|
|
602
602
|
options?: Record<string, any>
|
|
603
603
|
): Promise<McpApiResponse> {
|
|
604
|
+
this.assertExternalLlmCallAllowed();
|
|
605
|
+
|
|
604
606
|
// Structure messages for OpenAI based on context
|
|
605
607
|
const openAiMessages = this.structureMessagesFromContext(context);
|
|
606
608
|
|
|
@@ -664,6 +664,7 @@ export class OpenRouterMcpClient extends BaseMcpClient {
|
|
|
664
664
|
context: AgentContext,
|
|
665
665
|
options?: Record<string, any>
|
|
666
666
|
): Promise<McpApiResponse> {
|
|
667
|
+
this.assertExternalLlmCallAllowed();
|
|
667
668
|
|
|
668
669
|
// Structure messages for OpenRouter based on context (returns OpenRouter format)
|
|
669
670
|
const openRouterMessages = this.structureMessagesFromContext(context);
|
|
@@ -729,6 +730,8 @@ export class OpenRouterMcpClient extends BaseMcpClient {
|
|
|
729
730
|
options: Record<string, any>,
|
|
730
731
|
onChunk: (chunk: McpStreamChunk) => void
|
|
731
732
|
): Promise<McpApiResponse> {
|
|
733
|
+
this.assertExternalLlmCallAllowed();
|
|
734
|
+
|
|
732
735
|
// Structure and transform messages same as non-streaming path
|
|
733
736
|
const openRouterMessages = this.structureMessagesFromContext(context);
|
|
734
737
|
const converter = getMessageConverter('client');
|
|
@@ -426,6 +426,8 @@ export class XaiMcpClient extends BaseMcpClient {
|
|
|
426
426
|
context: AgentContext,
|
|
427
427
|
options?: Record<string, any>
|
|
428
428
|
): Promise<McpApiResponse> {
|
|
429
|
+
this.assertExternalLlmCallAllowed();
|
|
430
|
+
|
|
429
431
|
// Structure messages for X.ai based on context
|
|
430
432
|
const xaiMessages = this.structureMessagesFromContext(context);
|
|
431
433
|
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fail-closed network policy for Puppeteer pages used by MXF web tools.
|
|
3
|
+
*
|
|
4
|
+
* Checking only the top-level URL is insufficient: redirects, scripts, images,
|
|
5
|
+
* frames, and fetch/XHR requests can each target a different host. Every browser
|
|
6
|
+
* request is therefore checked immediately before Puppeteer continues it.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { HTTPRequest, Page } from 'puppeteer';
|
|
10
|
+
|
|
11
|
+
import { checkHttpTarget } from './HttpTargetGuard.js';
|
|
12
|
+
|
|
13
|
+
const BROWSER_LOCAL_PROTOCOLS = new Set(['about:', 'blob:', 'data:']);
|
|
14
|
+
|
|
15
|
+
const isBrowserLocalUrl = (rawUrl: string): boolean => {
|
|
16
|
+
try {
|
|
17
|
+
return BROWSER_LOCAL_PROTOCOLS.has(new URL(rawUrl).protocol);
|
|
18
|
+
} catch {
|
|
19
|
+
return rawUrl === 'about:blank';
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/** Reject a top-level browser target before allocating a browser or page. */
|
|
24
|
+
export const requireAllowedBrowserTarget = async (rawUrl: string): Promise<void> => {
|
|
25
|
+
const decision = await checkHttpTarget(rawUrl);
|
|
26
|
+
if (!decision.allowed) {
|
|
27
|
+
throw new Error(decision.reason ?? `Browser target '${rawUrl}' is not allowed`);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const guardBrowserRequest = async (request: HTTPRequest): Promise<void> => {
|
|
32
|
+
if (request.isInterceptResolutionHandled()) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const rawUrl = request.url();
|
|
37
|
+
if (isBrowserLocalUrl(rawUrl)) {
|
|
38
|
+
await request.continue();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const decision = await checkHttpTarget(rawUrl);
|
|
43
|
+
if (request.isInterceptResolutionHandled()) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (!decision.allowed) {
|
|
47
|
+
await request.abort('blockedbyclient');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
await request.continue();
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/** Install the target policy before the first navigation on a Puppeteer page. */
|
|
55
|
+
export const installBrowserTargetGuard = async (page: Page): Promise<void> => {
|
|
56
|
+
await page.setRequestInterception(true);
|
|
57
|
+
page.on('request', (request: HTTPRequest) => {
|
|
58
|
+
void guardBrowserRequest(request).catch(async () => {
|
|
59
|
+
if (!request.isInterceptResolutionHandled()) {
|
|
60
|
+
await request.abort('blockedbyclient');
|
|
61
|
+
}
|
|
62
|
+
}).catch(() => undefined);
|
|
63
|
+
});
|
|
64
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy for caller-supplied stdio MCP server registrations.
|
|
3
|
+
*
|
|
4
|
+
* A stdio registration is equivalent to asking the host to execute a command.
|
|
5
|
+
* It is therefore off by default and may only be exposed by a server entry
|
|
6
|
+
* point after that entry point has independently established an administrator
|
|
7
|
+
* principal. Built-in, server-owned configurations do not pass through this
|
|
8
|
+
* policy because their commands come from source-controlled configuration.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export const UNSAFE_STDIO_MCP_ENV = 'MXF_UNSAFE_STDIO_MCP_ENABLED';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* True only for the exact, explicit opt-in value.
|
|
15
|
+
*/
|
|
16
|
+
export const isUnsafeStdioMcpEnabled = (): boolean => {
|
|
17
|
+
return process.env[UNSAFE_STDIO_MCP_ENV] === 'true';
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* External server payloads historically omitted transport and were treated as
|
|
22
|
+
* stdio, so an absent transport must remain on the dangerous side of the gate.
|
|
23
|
+
*/
|
|
24
|
+
export const isStdioMcpTransport = (transport: unknown): boolean => {
|
|
25
|
+
return transport === undefined || transport === null || transport === '' || transport === 'stdio';
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Fail closed when a caller-controlled registration would execute a process.
|
|
30
|
+
*/
|
|
31
|
+
export const assertUnsafeStdioMcpEnabled = (transport: unknown): void => {
|
|
32
|
+
if (isStdioMcpTransport(transport) && !isUnsafeStdioMcpEnabled()) {
|
|
33
|
+
throw new Error(
|
|
34
|
+
`Caller-supplied stdio MCP registration is disabled. ` +
|
|
35
|
+
`An administrator must explicitly set ${UNSAFE_STDIO_MCP_ENV}=true to expose this unsafe capability.`
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
};
|