@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
|
@@ -39,7 +39,10 @@ import { AgentId, ChannelId } from '../types/ChannelContext.js';
|
|
|
39
39
|
import { Logger } from '../utils/Logger.js';
|
|
40
40
|
import { Events } from '../events/EventNames.js';
|
|
41
41
|
import { EventBus } from '../events/EventBus.js';
|
|
42
|
-
import {
|
|
42
|
+
import {
|
|
43
|
+
buildShellChildEnv,
|
|
44
|
+
resolveWorkspacePath
|
|
45
|
+
} from '../protocols/mcp/security/McpToolPolicy.js';
|
|
43
46
|
import {
|
|
44
47
|
createShellExecutionProgressPayload,
|
|
45
48
|
createShellBackgroundStartedPayload,
|
|
@@ -106,6 +109,12 @@ export interface BackgroundTaskInfo {
|
|
|
106
109
|
channelId: ChannelId;
|
|
107
110
|
}
|
|
108
111
|
|
|
112
|
+
/** Authenticated principal allowed to inspect or mutate a background task. */
|
|
113
|
+
export interface BackgroundTaskPrincipal {
|
|
114
|
+
agentId: AgentId;
|
|
115
|
+
channelId: ChannelId;
|
|
116
|
+
}
|
|
117
|
+
|
|
109
118
|
/** Internal task entry extending BackgroundTask with the child process handle and tracking metadata */
|
|
110
119
|
interface InternalTask extends BackgroundTask {
|
|
111
120
|
/** The spawned child process (cleared after exit) */
|
|
@@ -116,12 +125,19 @@ interface InternalTask extends BackgroundTask {
|
|
|
116
125
|
lastProgressEmit: number;
|
|
117
126
|
/** Timeout timer handle (if a timeout was specified) */
|
|
118
127
|
timeoutTimer?: ReturnType<typeof setTimeout>;
|
|
128
|
+
/** SIGTERM-to-SIGKILL escalation timer. */
|
|
129
|
+
forceKillTimer?: ReturnType<typeof setTimeout>;
|
|
130
|
+
/** Settles after terminal process callbacks and their final event emission complete. */
|
|
131
|
+
completion: Promise<void>;
|
|
132
|
+
resolveCompletion: () => void;
|
|
133
|
+
/** Guards Node's error-then-close sequence from reporting completion twice. */
|
|
134
|
+
terminalFinalized: boolean;
|
|
119
135
|
}
|
|
120
136
|
|
|
121
137
|
// ---- BackgroundTaskManager ----
|
|
122
138
|
|
|
123
139
|
export class BackgroundTaskManager {
|
|
124
|
-
private static instance: BackgroundTaskManager;
|
|
140
|
+
private static instance: BackgroundTaskManager | undefined;
|
|
125
141
|
|
|
126
142
|
/** Map of taskId -> internal task state */
|
|
127
143
|
private tasks: Map<string, InternalTask> = new Map();
|
|
@@ -139,6 +155,8 @@ export class BackgroundTaskManager {
|
|
|
139
155
|
|
|
140
156
|
/** Handle for the periodic cleanup timer */
|
|
141
157
|
private cleanupTimer?: ReturnType<typeof setInterval>;
|
|
158
|
+
private shutdownPromise: Promise<void> | undefined;
|
|
159
|
+
private isShuttingDown = false;
|
|
142
160
|
|
|
143
161
|
private constructor() {
|
|
144
162
|
// Start periodic cleanup of completed tasks older than cleanupIntervalMs
|
|
@@ -157,6 +175,16 @@ export class BackgroundTaskManager {
|
|
|
157
175
|
return BackgroundTaskManager.instance;
|
|
158
176
|
}
|
|
159
177
|
|
|
178
|
+
/** Stop the live singleton without constructing one solely for teardown. */
|
|
179
|
+
static async shutdownExisting(): Promise<boolean> {
|
|
180
|
+
const instance = BackgroundTaskManager.instance;
|
|
181
|
+
if (!instance) {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
await instance.shutdown();
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
|
|
160
188
|
/**
|
|
161
189
|
* Start a command in the background. Returns immediately with a taskId that
|
|
162
190
|
* can be used to query status, retrieve output, or cancel the task.
|
|
@@ -177,6 +205,10 @@ export class BackgroundTaskManager {
|
|
|
177
205
|
},
|
|
178
206
|
context: { agentId: AgentId; channelId: ChannelId; requestId: string }
|
|
179
207
|
): Promise<{ taskId: string }> {
|
|
208
|
+
if (this.isShuttingDown) {
|
|
209
|
+
throw new Error('BackgroundTaskManager is shutting down');
|
|
210
|
+
}
|
|
211
|
+
|
|
180
212
|
// Validate concurrent task limit
|
|
181
213
|
const runningCount = this.getRunningTaskCount();
|
|
182
214
|
if (runningCount >= this.maxConcurrentTasks) {
|
|
@@ -196,13 +228,20 @@ export class BackgroundTaskManager {
|
|
|
196
228
|
// get the same stripped environment the guarded shell path builds.
|
|
197
229
|
const spawnOptions: SpawnOptions = {
|
|
198
230
|
shell: true,
|
|
199
|
-
cwd:
|
|
231
|
+
cwd: resolveWorkspacePath(
|
|
232
|
+
options.workingDirectory,
|
|
233
|
+
'BackgroundTaskManager.startBackground'
|
|
234
|
+
),
|
|
200
235
|
env: buildShellChildEnv(options.environment),
|
|
201
236
|
};
|
|
202
237
|
|
|
203
238
|
const childProcess = spawn(command, [], spawnOptions);
|
|
204
239
|
|
|
205
240
|
// Create the internal task entry
|
|
241
|
+
let resolveCompletion!: () => void;
|
|
242
|
+
const completion = new Promise<void>(resolve => {
|
|
243
|
+
resolveCompletion = resolve;
|
|
244
|
+
});
|
|
206
245
|
const task: InternalTask = {
|
|
207
246
|
taskId,
|
|
208
247
|
command,
|
|
@@ -217,6 +256,9 @@ export class BackgroundTaskManager {
|
|
|
217
256
|
process: childProcess,
|
|
218
257
|
totalOutputBytes: 0,
|
|
219
258
|
lastProgressEmit: 0,
|
|
259
|
+
completion,
|
|
260
|
+
resolveCompletion,
|
|
261
|
+
terminalFinalized: false,
|
|
220
262
|
};
|
|
221
263
|
|
|
222
264
|
this.tasks.set(taskId, task);
|
|
@@ -257,6 +299,10 @@ export class BackgroundTaskManager {
|
|
|
257
299
|
|
|
258
300
|
// Handle process exit
|
|
259
301
|
childProcess.on('close', (code: number | null) => {
|
|
302
|
+
if (task.terminalFinalized) {
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
task.terminalFinalized = true;
|
|
260
306
|
const exitCode = code ?? 1;
|
|
261
307
|
task.exitCode = exitCode;
|
|
262
308
|
task.endTime = Date.now();
|
|
@@ -271,6 +317,10 @@ export class BackgroundTaskManager {
|
|
|
271
317
|
clearTimeout(task.timeoutTimer);
|
|
272
318
|
task.timeoutTimer = undefined;
|
|
273
319
|
}
|
|
320
|
+
if (task.forceKillTimer) {
|
|
321
|
+
clearTimeout(task.forceKillTimer);
|
|
322
|
+
task.forceKillTimer = undefined;
|
|
323
|
+
}
|
|
274
324
|
|
|
275
325
|
const elapsedSeconds = (task.endTime - task.startTime) / 1000;
|
|
276
326
|
|
|
@@ -280,27 +330,36 @@ export class BackgroundTaskManager {
|
|
|
280
330
|
);
|
|
281
331
|
|
|
282
332
|
// Emit SHELL_BACKGROUND_COMPLETED event
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
333
|
+
try {
|
|
334
|
+
EventBus.server.emit(
|
|
335
|
+
Events.Shell.SHELL_BACKGROUND_COMPLETED,
|
|
336
|
+
createShellBackgroundCompletedPayload(
|
|
337
|
+
task.agentId,
|
|
338
|
+
task.channelId,
|
|
339
|
+
{
|
|
340
|
+
requestId: task.requestId,
|
|
341
|
+
taskId,
|
|
342
|
+
command: task.command,
|
|
343
|
+
exitCode,
|
|
344
|
+
isError: exitCode !== 0,
|
|
345
|
+
executionTime: (task.endTime! - task.startTime),
|
|
346
|
+
outputSize: task.totalOutputBytes
|
|
347
|
+
}
|
|
348
|
+
)
|
|
349
|
+
);
|
|
350
|
+
} finally {
|
|
351
|
+
task.resolveCompletion();
|
|
352
|
+
}
|
|
299
353
|
});
|
|
300
354
|
|
|
301
355
|
// Handle spawn errors (e.g., command not found)
|
|
302
356
|
childProcess.on('error', (error: Error) => {
|
|
357
|
+
if (task.terminalFinalized) {
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
task.terminalFinalized = true;
|
|
303
361
|
task.status = 'failed';
|
|
362
|
+
task.exitCode = 1;
|
|
304
363
|
task.endTime = Date.now();
|
|
305
364
|
task.process = undefined;
|
|
306
365
|
|
|
@@ -309,28 +368,34 @@ export class BackgroundTaskManager {
|
|
|
309
368
|
clearTimeout(task.timeoutTimer);
|
|
310
369
|
task.timeoutTimer = undefined;
|
|
311
370
|
}
|
|
371
|
+
if (task.forceKillTimer) {
|
|
372
|
+
clearTimeout(task.forceKillTimer);
|
|
373
|
+
task.forceKillTimer = undefined;
|
|
374
|
+
}
|
|
312
375
|
|
|
313
376
|
this.logger.error(`Background task error: ${taskId} — ${error.message}`);
|
|
314
377
|
|
|
315
|
-
const elapsedSeconds = (task.endTime - task.startTime) / 1000;
|
|
316
|
-
|
|
317
378
|
// Emit SHELL_BACKGROUND_COMPLETED with failed status
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
379
|
+
try {
|
|
380
|
+
EventBus.server.emit(
|
|
381
|
+
Events.Shell.SHELL_BACKGROUND_COMPLETED,
|
|
382
|
+
createShellBackgroundCompletedPayload(
|
|
383
|
+
task.agentId,
|
|
384
|
+
task.channelId,
|
|
385
|
+
{
|
|
386
|
+
requestId: task.requestId,
|
|
387
|
+
taskId,
|
|
388
|
+
command: task.command,
|
|
389
|
+
exitCode: 1,
|
|
390
|
+
isError: true,
|
|
391
|
+
executionTime: (task.endTime! - task.startTime),
|
|
392
|
+
outputSize: task.totalOutputBytes
|
|
393
|
+
}
|
|
394
|
+
)
|
|
395
|
+
);
|
|
396
|
+
} finally {
|
|
397
|
+
task.resolveCompletion();
|
|
398
|
+
}
|
|
334
399
|
});
|
|
335
400
|
|
|
336
401
|
// Set up timeout if specified
|
|
@@ -341,14 +406,10 @@ export class BackgroundTaskManager {
|
|
|
341
406
|
`Background task timed out after ${options.timeout}s: ${taskId}`
|
|
342
407
|
);
|
|
343
408
|
task.process.kill('SIGTERM');
|
|
344
|
-
|
|
345
|
-
setTimeout(() => {
|
|
346
|
-
if (task.status === 'running' && task.process) {
|
|
347
|
-
task.process.kill('SIGKILL');
|
|
348
|
-
}
|
|
349
|
-
}, 5000);
|
|
409
|
+
this.scheduleForceKill(task, taskId);
|
|
350
410
|
}
|
|
351
411
|
}, options.timeout * 1000);
|
|
412
|
+
task.timeoutTimer.unref?.();
|
|
352
413
|
}
|
|
353
414
|
|
|
354
415
|
return { taskId };
|
|
@@ -360,8 +421,8 @@ export class BackgroundTaskManager {
|
|
|
360
421
|
* @param taskId - The task identifier returned by startBackground()
|
|
361
422
|
* @returns BackgroundTaskInfo with current status and output preview, or null if not found
|
|
362
423
|
*/
|
|
363
|
-
getTaskStatus(taskId: string): BackgroundTaskInfo | null {
|
|
364
|
-
const task = this.
|
|
424
|
+
getTaskStatus(taskId: string, principal: BackgroundTaskPrincipal): BackgroundTaskInfo | null {
|
|
425
|
+
const task = this.getOwnedTask(taskId, principal);
|
|
365
426
|
if (!task) {
|
|
366
427
|
return null;
|
|
367
428
|
}
|
|
@@ -375,8 +436,8 @@ export class BackgroundTaskManager {
|
|
|
375
436
|
* @param taskId - The task identifier returned by startBackground()
|
|
376
437
|
* @returns The accumulated stdout output, or null if the task is not found
|
|
377
438
|
*/
|
|
378
|
-
getTaskOutput(taskId: string): string | null {
|
|
379
|
-
const task = this.
|
|
439
|
+
getTaskOutput(taskId: string, principal: BackgroundTaskPrincipal): string | null {
|
|
440
|
+
const task = this.getOwnedTask(taskId, principal);
|
|
380
441
|
if (!task) {
|
|
381
442
|
return null;
|
|
382
443
|
}
|
|
@@ -390,8 +451,8 @@ export class BackgroundTaskManager {
|
|
|
390
451
|
* @param taskId - The task identifier returned by startBackground()
|
|
391
452
|
* @returns true if the task was found and cancellation was initiated, false otherwise
|
|
392
453
|
*/
|
|
393
|
-
cancelTask(taskId: string): boolean {
|
|
394
|
-
const task = this.
|
|
454
|
+
cancelTask(taskId: string, principal: BackgroundTaskPrincipal): boolean {
|
|
455
|
+
const task = this.getOwnedTask(taskId, principal);
|
|
395
456
|
if (!task) {
|
|
396
457
|
this.logger.warn(`Cannot cancel task: ${taskId} — task not found`);
|
|
397
458
|
return false;
|
|
@@ -422,32 +483,21 @@ export class BackgroundTaskManager {
|
|
|
422
483
|
task.process.kill('SIGTERM');
|
|
423
484
|
|
|
424
485
|
// Escalate to SIGKILL after 5 seconds if still alive
|
|
425
|
-
|
|
426
|
-
if (task.process) {
|
|
427
|
-
this.logger.warn(`Force-killing background task: ${taskId} (SIGKILL)`);
|
|
428
|
-
task.process.kill('SIGKILL');
|
|
429
|
-
}
|
|
430
|
-
}, 5000);
|
|
431
|
-
|
|
432
|
-
// Clean up the kill timer when the process actually exits
|
|
433
|
-
const originalClose = task.process;
|
|
434
|
-
originalClose.on('close', () => {
|
|
435
|
-
clearTimeout(killTimer);
|
|
436
|
-
});
|
|
486
|
+
this.scheduleForceKill(task, taskId);
|
|
437
487
|
|
|
438
488
|
return true;
|
|
439
489
|
}
|
|
440
490
|
|
|
441
491
|
/**
|
|
442
|
-
* List
|
|
492
|
+
* List background tasks owned by the exact authenticated agent/channel pair.
|
|
443
493
|
*
|
|
444
|
-
* @param
|
|
494
|
+
* @param principal - Authenticated agent and channel identity
|
|
445
495
|
* @returns Array of BackgroundTaskInfo for matching tasks
|
|
446
496
|
*/
|
|
447
|
-
listTasks(
|
|
497
|
+
listTasks(principal: BackgroundTaskPrincipal): BackgroundTaskInfo[] {
|
|
448
498
|
const results: BackgroundTaskInfo[] = [];
|
|
449
499
|
for (const task of this.tasks.values()) {
|
|
450
|
-
if (agentId
|
|
500
|
+
if (task.agentId !== principal.agentId || task.channelId !== principal.channelId) {
|
|
451
501
|
continue;
|
|
452
502
|
}
|
|
453
503
|
results.push(this.toTaskInfo(task));
|
|
@@ -459,7 +509,19 @@ export class BackgroundTaskManager {
|
|
|
459
509
|
* Shutdown the manager: cancel all running tasks, clear timers, and release resources.
|
|
460
510
|
* Called during server shutdown to ensure clean process cleanup.
|
|
461
511
|
*/
|
|
462
|
-
shutdown(): void {
|
|
512
|
+
shutdown(): Promise<void> {
|
|
513
|
+
if (!this.shutdownPromise) {
|
|
514
|
+
this.isShuttingDown = true;
|
|
515
|
+
this.shutdownPromise = this.performShutdown().finally((): void => {
|
|
516
|
+
if (BackgroundTaskManager.instance === this) {
|
|
517
|
+
BackgroundTaskManager.instance = undefined;
|
|
518
|
+
}
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
return this.shutdownPromise;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
private async performShutdown(): Promise<void> {
|
|
463
525
|
this.logger.info('Shutting down BackgroundTaskManager...');
|
|
464
526
|
|
|
465
527
|
// Clear the periodic cleanup timer
|
|
@@ -468,27 +530,72 @@ export class BackgroundTaskManager {
|
|
|
468
530
|
this.cleanupTimer = undefined;
|
|
469
531
|
}
|
|
470
532
|
|
|
471
|
-
|
|
533
|
+
const completions: Promise<void>[] = [];
|
|
534
|
+
|
|
535
|
+
// Terminate every live child and retain ownership until its terminal
|
|
536
|
+
// callback has emitted the final lifecycle event. A task can already be
|
|
537
|
+
// marked cancelled while its process is still exiting, so process
|
|
538
|
+
// ownership — not status — defines what shutdown must drain.
|
|
472
539
|
for (const task of this.tasks.values()) {
|
|
473
|
-
if (task.
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
540
|
+
if (task.timeoutTimer) {
|
|
541
|
+
clearTimeout(task.timeoutTimer);
|
|
542
|
+
task.timeoutTimer = undefined;
|
|
543
|
+
}
|
|
544
|
+
if (task.forceKillTimer) {
|
|
545
|
+
clearTimeout(task.forceKillTimer);
|
|
546
|
+
task.forceKillTimer = undefined;
|
|
547
|
+
}
|
|
479
548
|
|
|
480
|
-
|
|
481
|
-
task.
|
|
549
|
+
if (!task.terminalFinalized && task.process) {
|
|
550
|
+
if (task.status === 'running') {
|
|
551
|
+
task.status = 'cancelled';
|
|
552
|
+
}
|
|
553
|
+
task.endTime ??= Date.now();
|
|
554
|
+
completions.push(task.completion);
|
|
482
555
|
task.process.kill('SIGKILL');
|
|
483
|
-
task.process = undefined;
|
|
484
556
|
}
|
|
485
557
|
}
|
|
486
558
|
|
|
559
|
+
await Promise.all(completions);
|
|
560
|
+
|
|
487
561
|
this.logger.info('BackgroundTaskManager shut down successfully');
|
|
488
562
|
}
|
|
489
563
|
|
|
564
|
+
private scheduleForceKill(task: InternalTask, taskId: string): void {
|
|
565
|
+
if (task.forceKillTimer) {
|
|
566
|
+
clearTimeout(task.forceKillTimer);
|
|
567
|
+
}
|
|
568
|
+
task.forceKillTimer = setTimeout(() => {
|
|
569
|
+
task.forceKillTimer = undefined;
|
|
570
|
+
if (task.process) {
|
|
571
|
+
this.logger.warn(`Force-killing background task: ${taskId} (SIGKILL)`);
|
|
572
|
+
task.process.kill('SIGKILL');
|
|
573
|
+
}
|
|
574
|
+
}, 5000);
|
|
575
|
+
task.forceKillTimer.unref?.();
|
|
576
|
+
}
|
|
577
|
+
|
|
490
578
|
// ---- Private helpers ----
|
|
491
579
|
|
|
580
|
+
/**
|
|
581
|
+
* Resolve a task only when it belongs to the authenticated principal. Returning
|
|
582
|
+
* null for both missing and foreign task IDs avoids leaking task existence.
|
|
583
|
+
*/
|
|
584
|
+
private getOwnedTask(
|
|
585
|
+
taskId: string,
|
|
586
|
+
principal: BackgroundTaskPrincipal
|
|
587
|
+
): InternalTask | null {
|
|
588
|
+
const task = this.tasks.get(taskId);
|
|
589
|
+
if (
|
|
590
|
+
!task ||
|
|
591
|
+
task.agentId !== principal.agentId ||
|
|
592
|
+
task.channelId !== principal.channelId
|
|
593
|
+
) {
|
|
594
|
+
return null;
|
|
595
|
+
}
|
|
596
|
+
return task;
|
|
597
|
+
}
|
|
598
|
+
|
|
492
599
|
/**
|
|
493
600
|
* Append output to a task's buffer with ring-buffer semantics.
|
|
494
601
|
* When the buffer exceeds maxOutputBufferSize, the front is trimmed.
|
|
@@ -74,6 +74,21 @@ export interface BrowserConfig {
|
|
|
74
74
|
userAgent?: string;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
/** Chromium launch flags that preserve its OS sandbox boundary. */
|
|
78
|
+
export const getSecureBrowserLaunchArgs = (): string[] => [
|
|
79
|
+
'--disable-dev-shm-usage',
|
|
80
|
+
'--disable-gpu',
|
|
81
|
+
'--disable-background-timer-throttling',
|
|
82
|
+
'--disable-backgrounding-occluded-windows',
|
|
83
|
+
'--disable-renderer-backgrounding',
|
|
84
|
+
'--disable-features=TranslateUI',
|
|
85
|
+
'--disable-ipc-flooding-protection',
|
|
86
|
+
'--no-first-run',
|
|
87
|
+
'--no-default-browser-check',
|
|
88
|
+
'--disable-default-apps',
|
|
89
|
+
'--disable-extensions'
|
|
90
|
+
];
|
|
91
|
+
|
|
77
92
|
export class BrowserManager {
|
|
78
93
|
private pools: Map<string, BrowserInstance[]> = new Map();
|
|
79
94
|
private maxPoolSize: number;
|
|
@@ -176,21 +191,10 @@ export class BrowserManager {
|
|
|
176
191
|
const puppeteer = await loadPuppeteer();
|
|
177
192
|
const browser = await puppeteer.launch({
|
|
178
193
|
headless: this.config.headless ?? true,
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
'--disable-gpu',
|
|
184
|
-
'--disable-background-timer-throttling',
|
|
185
|
-
'--disable-backgrounding-occluded-windows',
|
|
186
|
-
'--disable-renderer-backgrounding',
|
|
187
|
-
'--disable-features=TranslateUI',
|
|
188
|
-
'--disable-ipc-flooding-protection',
|
|
189
|
-
'--no-first-run',
|
|
190
|
-
'--no-default-browser-check',
|
|
191
|
-
'--disable-default-apps',
|
|
192
|
-
'--disable-extensions'
|
|
193
|
-
]
|
|
194
|
+
// Never pass --no-sandbox or --disable-setuid-sandbox. A deployment
|
|
195
|
+
// that cannot start Chromium with its OS sandbox intact must fail
|
|
196
|
+
// instead of silently executing hostile pages without isolation.
|
|
197
|
+
args: getSecureBrowserLaunchArgs()
|
|
194
198
|
});
|
|
195
199
|
|
|
196
200
|
const instance: BrowserInstance = {
|
|
@@ -287,4 +291,4 @@ export class BrowserManager {
|
|
|
287
291
|
await Promise.all(closePromises);
|
|
288
292
|
this.logger?.info('Browser cleanup completed');
|
|
289
293
|
}
|
|
290
|
-
}
|
|
294
|
+
}
|