@mxf-dev/core 1.0.1 → 2.0.1
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/README.md +18 -0
- package/dist/adapters/FrameworkAdapter.js +1 -1
- package/dist/adapters/FrameworkAdapter.js.map +1 -1
- package/dist/config/ConfigManager.d.ts +9 -8
- package/dist/config/ConfigManager.d.ts.map +1 -1
- package/dist/config/ConfigManager.js +47 -17
- package/dist/config/ConfigManager.js.map +1 -1
- package/dist/config/memory-strata.config.d.ts +25 -0
- package/dist/config/memory-strata.config.d.ts.map +1 -0
- package/dist/config/memory-strata.config.js +107 -0
- package/dist/config/memory-strata.config.js.map +1 -0
- package/dist/constants/ToolNames.d.ts +1 -29
- package/dist/constants/ToolNames.d.ts.map +1 -1
- package/dist/constants/ToolNames.js +4 -17
- package/dist/constants/ToolNames.js.map +1 -1
- package/dist/database/DatabaseAdapterFactory.d.ts +14 -2
- package/dist/database/DatabaseAdapterFactory.d.ts.map +1 -1
- package/dist/database/DatabaseAdapterFactory.js +21 -6
- package/dist/database/DatabaseAdapterFactory.js.map +1 -1
- package/dist/database/adapters/mongodb/MongoBaseRepository.d.ts +7 -1
- package/dist/database/adapters/mongodb/MongoBaseRepository.d.ts.map +1 -1
- package/dist/database/adapters/mongodb/MongoBaseRepository.js +12 -2
- package/dist/database/adapters/mongodb/MongoBaseRepository.js.map +1 -1
- package/dist/events/ClientEventBus.d.ts +16 -77
- package/dist/events/ClientEventBus.d.ts.map +1 -1
- package/dist/events/ClientEventBus.js +38 -311
- package/dist/events/ClientEventBus.js.map +1 -1
- package/dist/events/EventBus.d.ts +1 -1
- package/dist/events/EventBus.d.ts.map +1 -1
- package/dist/events/EventBus.js +5 -4
- package/dist/events/EventBus.js.map +1 -1
- package/dist/events/EventBusBase.d.ts +139 -34
- package/dist/events/EventBusBase.d.ts.map +1 -1
- package/dist/events/EventBusBase.js +366 -88
- package/dist/events/EventBusBase.js.map +1 -1
- package/dist/events/EventNames.d.ts +10 -1
- package/dist/events/EventNames.d.ts.map +1 -1
- package/dist/events/EventNames.js +3 -0
- package/dist/events/EventNames.js.map +1 -1
- package/dist/events/PublicEvents.d.ts +6 -2
- package/dist/events/PublicEvents.d.ts.map +1 -1
- package/dist/events/PublicEvents.js +7 -4
- package/dist/events/PublicEvents.js.map +1 -1
- package/dist/events/ServerEventBus.d.ts +23 -112
- package/dist/events/ServerEventBus.d.ts.map +1 -1
- package/dist/events/ServerEventBus.js +58 -323
- package/dist/events/ServerEventBus.js.map +1 -1
- package/dist/events/event-definitions/LlmBudgetEvents.d.ts +68 -0
- package/dist/events/event-definitions/LlmBudgetEvents.d.ts.map +1 -0
- package/dist/events/event-definitions/LlmBudgetEvents.js +35 -0
- package/dist/events/event-definitions/LlmBudgetEvents.js.map +1 -0
- package/dist/interfaces/IMemoryPersistence.d.ts +41 -0
- package/dist/interfaces/IMemoryPersistence.d.ts.map +1 -0
- package/dist/interfaces/IMemoryPersistence.js +15 -0
- package/dist/interfaces/IMemoryPersistence.js.map +1 -0
- package/dist/middleware/MxpMiddleware.d.ts +8 -1
- package/dist/middleware/MxpMiddleware.d.ts.map +1 -1
- package/dist/middleware/MxpMiddleware.js +42 -20
- package/dist/middleware/MxpMiddleware.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/memoryUtility.d.ts +39 -0
- package/dist/models/memoryUtility.d.ts.map +1 -0
- package/dist/models/memoryUtility.js +39 -0
- package/dist/models/memoryUtility.js.map +1 -0
- package/dist/models/user.d.ts.map +1 -1
- package/dist/models/user.js +23 -1
- package/dist/models/user.js.map +1 -1
- package/dist/mxp/BinaryProtocolLayer.d.ts +24 -8
- package/dist/mxp/BinaryProtocolLayer.d.ts.map +1 -1
- package/dist/mxp/BinaryProtocolLayer.js +90 -103
- package/dist/mxp/BinaryProtocolLayer.js.map +1 -1
- package/dist/mxp/ContextCompressionEngine.d.ts +57 -10
- package/dist/mxp/ContextCompressionEngine.d.ts.map +1 -1
- package/dist/mxp/ContextCompressionEngine.js +170 -128
- package/dist/mxp/ContextCompressionEngine.js.map +1 -1
- package/dist/mxp/MxpTokenOptimizer.d.ts +7 -3
- package/dist/mxp/MxpTokenOptimizer.d.ts.map +1 -1
- package/dist/mxp/MxpTokenOptimizer.js +8 -5
- package/dist/mxp/MxpTokenOptimizer.js.map +1 -1
- package/dist/prompts/MxfAgentSystemPrompt.d.ts +1 -1
- package/dist/prompts/MxfAgentSystemPrompt.d.ts.map +1 -1
- package/dist/prompts/MxfAgentSystemPrompt.js +47 -57
- package/dist/prompts/MxfAgentSystemPrompt.js.map +1 -1
- package/dist/protocols/mcp/ToolError.d.ts +123 -0
- package/dist/protocols/mcp/ToolError.d.ts.map +1 -0
- package/dist/protocols/mcp/ToolError.js +108 -0
- package/dist/protocols/mcp/ToolError.js.map +1 -0
- package/dist/protocols/mcp/defineTool.d.ts +133 -0
- package/dist/protocols/mcp/defineTool.d.ts.map +1 -0
- package/dist/protocols/mcp/defineTool.js +236 -0
- package/dist/protocols/mcp/defineTool.js.map +1 -0
- package/dist/protocols/mcp/security/HttpTargetGuard.d.ts +38 -0
- package/dist/protocols/mcp/security/HttpTargetGuard.d.ts.map +1 -0
- package/dist/protocols/mcp/security/HttpTargetGuard.js +227 -0
- package/dist/protocols/mcp/security/HttpTargetGuard.js.map +1 -0
- package/dist/protocols/mcp/security/McpSecurityGuard.d.ts +9 -1
- package/dist/protocols/mcp/security/McpSecurityGuard.d.ts.map +1 -1
- package/dist/protocols/mcp/security/McpSecurityGuard.js +10 -2
- package/dist/protocols/mcp/security/McpSecurityGuard.js.map +1 -1
- package/dist/protocols/mcp/security/McpToolPolicy.d.ts +81 -0
- package/dist/protocols/mcp/security/McpToolPolicy.d.ts.map +1 -0
- package/dist/protocols/mcp/security/McpToolPolicy.js +202 -0
- package/dist/protocols/mcp/security/McpToolPolicy.js.map +1 -0
- package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts +51 -18
- package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts.map +1 -1
- package/dist/protocols/mcp/services/ExternalMcpServerManager.js +256 -283
- package/dist/protocols/mcp/services/ExternalMcpServerManager.js.map +1 -1
- package/dist/protocols/mcp/services/ExternalServerConfigs.d.ts +39 -6
- package/dist/protocols/mcp/services/ExternalServerConfigs.d.ts.map +1 -1
- package/dist/protocols/mcp/services/ExternalServerConfigs.js +76 -18
- package/dist/protocols/mcp/services/ExternalServerConfigs.js.map +1 -1
- package/dist/protocols/mcp/tools/AnalyticsTools.js +1 -1
- 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 +15 -0
- package/dist/protocols/mcp/tools/CodeAnalysisTools.js.map +1 -1
- package/dist/protocols/mcp/tools/EffectivenessTools.js +3 -3
- package/dist/protocols/mcp/tools/EffectivenessTools.js.map +1 -1
- package/dist/protocols/mcp/tools/GitTools.d.ts +9 -369
- package/dist/protocols/mcp/tools/GitTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/GitTools.js +222 -517
- package/dist/protocols/mcp/tools/GitTools.js.map +1 -1
- package/dist/protocols/mcp/tools/InfrastructureTools.d.ts +56 -24
- package/dist/protocols/mcp/tools/InfrastructureTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/InfrastructureTools.js +117 -26
- package/dist/protocols/mcp/tools/InfrastructureTools.js.map +1 -1
- package/dist/protocols/mcp/tools/MemorySearchTools.d.ts +0 -3
- package/dist/protocols/mcp/tools/MemorySearchTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/MemorySearchTools.js +58 -1
- package/dist/protocols/mcp/tools/MemorySearchTools.js.map +1 -1
- package/dist/protocols/mcp/tools/OrparTools.d.ts +8 -0
- package/dist/protocols/mcp/tools/OrparTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/OrparTools.js +66 -0
- package/dist/protocols/mcp/tools/OrparTools.js.map +1 -1
- package/dist/protocols/mcp/tools/SafetyTools.d.ts +7 -525
- package/dist/protocols/mcp/tools/SafetyTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/SafetyTools.js +349 -514
- package/dist/protocols/mcp/tools/SafetyTools.js.map +1 -1
- package/dist/protocols/mcp/tools/TaskPlanningTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/TaskPlanningTools.js +56 -26
- package/dist/protocols/mcp/tools/TaskPlanningTools.js.map +1 -1
- package/dist/protocols/mcp/tools/TestTools.d.ts +15 -376
- package/dist/protocols/mcp/tools/TestTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/TestTools.js +241 -363
- package/dist/protocols/mcp/tools/TestTools.js.map +1 -1
- package/dist/protocols/mcp/tools/TypeScriptTools.d.ts +6 -276
- package/dist/protocols/mcp/tools/TypeScriptTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/TypeScriptTools.js +223 -337
- package/dist/protocols/mcp/tools/TypeScriptTools.js.map +1 -1
- package/dist/protocols/mcp/tools/WebTools.d.ts +15 -728
- package/dist/protocols/mcp/tools/WebTools.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/WebTools.js +151 -257
- package/dist/protocols/mcp/tools/WebTools.js.map +1 -1
- package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.d.ts +5 -3
- package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.d.ts.map +1 -1
- package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.js +31 -6
- package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.js.map +1 -1
- package/dist/schemas/EventPayloadSchema.d.ts +21 -0
- package/dist/schemas/EventPayloadSchema.d.ts.map +1 -1
- package/dist/schemas/EventPayloadSchema.js +14 -0
- package/dist/schemas/EventPayloadSchema.js.map +1 -1
- package/dist/services/BackgroundTaskManager.d.ts.map +1 -1
- package/dist/services/BackgroundTaskManager.js +12 -4
- package/dist/services/BackgroundTaskManager.js.map +1 -1
- package/dist/services/BrowserManager.d.ts +1 -1
- package/dist/services/BrowserManager.d.ts.map +1 -1
- package/dist/services/BrowserManager.js +26 -3
- package/dist/services/BrowserManager.js.map +1 -1
- package/dist/services/MemoryCompressor.d.ts +11 -2
- package/dist/services/MemoryCompressor.d.ts.map +1 -1
- package/dist/services/MemoryCompressor.js +8 -26
- package/dist/services/MemoryCompressor.js.map +1 -1
- package/dist/services/MemoryService.d.ts +16 -3
- package/dist/services/MemoryService.d.ts.map +1 -1
- package/dist/services/MemoryService.js +79 -55
- package/dist/services/MemoryService.js.map +1 -1
- package/dist/services/MxfMLService.d.ts +5 -0
- package/dist/services/MxfMLService.d.ts.map +1 -1
- package/dist/services/MxfMLService.js +32 -6
- package/dist/services/MxfMLService.js.map +1 -1
- package/dist/services/PredictiveAnalyticsService.d.ts +45 -9
- package/dist/services/PredictiveAnalyticsService.d.ts.map +1 -1
- package/dist/services/PredictiveAnalyticsService.js +82 -44
- package/dist/services/PredictiveAnalyticsService.js.map +1 -1
- package/dist/services/QValueManager.d.ts +7 -0
- package/dist/services/QValueManager.d.ts.map +1 -1
- package/dist/services/QValueManager.js +9 -0
- package/dist/services/QValueManager.js.map +1 -1
- package/dist/services/RewardSignalProcessor.d.ts +38 -1
- package/dist/services/RewardSignalProcessor.d.ts.map +1 -1
- package/dist/services/RewardSignalProcessor.js +109 -7
- package/dist/services/RewardSignalProcessor.js.map +1 -1
- package/dist/services/SharedStateService.d.ts +16 -2
- package/dist/services/SharedStateService.d.ts.map +1 -1
- package/dist/services/SharedStateService.js +44 -3
- package/dist/services/SharedStateService.js.map +1 -1
- package/dist/services/TaskEffectivenessService.d.ts +34 -18
- package/dist/services/TaskEffectivenessService.d.ts.map +1 -1
- package/dist/services/TaskEffectivenessService.js +91 -155
- package/dist/services/TaskEffectivenessService.js.map +1 -1
- package/dist/services/WebSearchService.d.ts.map +1 -1
- package/dist/services/WebSearchService.js.map +1 -1
- package/dist/services/dag/TaskDagService.d.ts.map +1 -1
- package/dist/services/dag/TaskDagService.js +2 -0
- package/dist/services/dag/TaskDagService.js.map +1 -1
- package/dist/services/orpar-memory/OrparMemoryCoordinator.d.ts +7 -0
- package/dist/services/orpar-memory/OrparMemoryCoordinator.d.ts.map +1 -1
- package/dist/services/orpar-memory/OrparMemoryCoordinator.js +71 -10
- package/dist/services/orpar-memory/OrparMemoryCoordinator.js.map +1 -1
- package/dist/types/MemoryUtilityTypes.d.ts +2 -0
- package/dist/types/MemoryUtilityTypes.d.ts.map +1 -1
- package/dist/types/MemoryUtilityTypes.js.map +1 -1
- package/dist/utils/Logger.d.ts +43 -3
- package/dist/utils/Logger.d.ts.map +1 -1
- package/dist/utils/Logger.js +78 -36
- package/dist/utils/Logger.js.map +1 -1
- package/dist/utils/MxpEncryption.d.ts +19 -6
- package/dist/utils/MxpEncryption.d.ts.map +1 -1
- package/dist/utils/MxpEncryption.js +48 -16
- package/dist/utils/MxpEncryption.js.map +1 -1
- package/package.json +19 -4
- package/src/adapters/FrameworkAdapter.ts +1 -1
- package/src/config/ConfigManager.ts +52 -19
- package/src/config/memory-strata.config.ts +136 -0
- package/src/constants/ToolNames.ts +4 -18
- package/src/database/DatabaseAdapterFactory.ts +23 -6
- package/src/database/adapters/mongodb/MongoBaseRepository.ts +16 -2
- package/src/events/ClientEventBus.ts +68 -403
- package/src/events/EventBus.ts +7 -8
- package/src/events/EventBusBase.ts +479 -116
- package/src/events/EventNames.ts +6 -0
- package/src/events/PublicEvents.ts +7 -4
- package/src/events/ServerEventBus.ts +78 -473
- package/src/events/event-definitions/LlmBudgetEvents.ts +74 -0
- package/src/interfaces/IMemoryPersistence.ts +51 -0
- package/src/middleware/MxpMiddleware.ts +51 -24
- package/src/models/channelKey.ts +18 -4
- package/src/models/memoryUtility.ts +64 -0
- package/src/models/user.ts +36 -4
- package/src/mxp/BinaryProtocolLayer.ts +108 -124
- package/src/mxp/ContextCompressionEngine.ts +219 -161
- package/src/mxp/MxpTokenOptimizer.ts +10 -10
- package/src/prompts/MxfAgentSystemPrompt.ts +45 -55
- package/src/protocols/mcp/ToolError.ts +201 -0
- package/src/protocols/mcp/defineTool.ts +379 -0
- package/src/protocols/mcp/security/HttpTargetGuard.ts +267 -0
- package/src/protocols/mcp/security/McpSecurityGuard.ts +10 -3
- package/src/protocols/mcp/security/McpToolPolicy.ts +221 -0
- package/src/protocols/mcp/services/ExternalMcpServerManager.ts +340 -322
- package/src/protocols/mcp/services/ExternalServerConfigs.ts +82 -19
- package/src/protocols/mcp/tools/AnalyticsTools.ts +1 -1
- package/src/protocols/mcp/tools/CodeAnalysisTools.ts +15 -0
- package/src/protocols/mcp/tools/EffectivenessTools.ts +3 -3
- package/src/protocols/mcp/tools/GitTools.ts +290 -569
- package/src/protocols/mcp/tools/InfrastructureTools.ts +189 -43
- package/src/protocols/mcp/tools/MemorySearchTools.ts +77 -1
- package/src/protocols/mcp/tools/OrparTools.ts +87 -0
- package/src/protocols/mcp/tools/SafetyTools.ts +501 -579
- package/src/protocols/mcp/tools/TaskPlanningTools.ts +81 -39
- package/src/protocols/mcp/tools/TestTools.ts +339 -419
- package/src/protocols/mcp/tools/TypeScriptTools.ts +316 -376
- package/src/protocols/mcp/tools/WebTools.ts +209 -307
- package/src/protocols/mcp/tools/shell/ShellExecuteHandler.ts +53 -14
- package/src/schemas/EventPayloadSchema.ts +37 -0
- package/src/services/BackgroundTaskManager.ts +12 -4
- package/src/services/BrowserManager.ts +41 -1
- package/src/services/MemoryCompressor.ts +20 -32
- package/src/services/MemoryService.ts +96 -58
- package/src/services/MxfMLService.ts +41 -7
- package/src/services/PredictiveAnalyticsService.ts +101 -51
- package/src/services/QValueManager.ts +10 -0
- package/src/services/RewardSignalProcessor.ts +138 -9
- package/src/services/SharedStateService.ts +56 -8
- package/src/services/TaskEffectivenessService.ts +114 -187
- package/src/services/WebSearchService.ts +2 -1
- package/src/services/dag/TaskDagService.ts +2 -0
- package/src/services/orpar-memory/OrparMemoryCoordinator.ts +86 -10
- package/src/types/MemoryUtilityTypes.ts +2 -0
- package/src/utils/Logger.ts +116 -40
- package/src/utils/MxpEncryption.ts +69 -34
- package/dist/mxp/MxpEventForwardingEnhancer.d.ts +0 -134
- package/dist/mxp/MxpEventForwardingEnhancer.d.ts.map +0 -1
- package/dist/mxp/MxpEventForwardingEnhancer.js +0 -361
- package/dist/mxp/MxpEventForwardingEnhancer.js.map +0 -1
- package/dist/protocols/mcp/services/ToolSchemaEnhancements.d.ts +0 -56
- package/dist/protocols/mcp/services/ToolSchemaEnhancements.d.ts.map +0 -1
- package/dist/protocols/mcp/services/ToolSchemaEnhancements.js +0 -57
- package/dist/protocols/mcp/services/ToolSchemaEnhancements.js.map +0 -1
- package/dist/protocols/mcp/tools/ControlLoopLifecycle.d.ts +0 -270
- package/dist/protocols/mcp/tools/ControlLoopLifecycle.d.ts.map +0 -1
- package/dist/protocols/mcp/tools/ControlLoopLifecycle.js +0 -256
- package/dist/protocols/mcp/tools/ControlLoopLifecycle.js.map +0 -1
- package/dist/protocols/mcp/tools/LspTools.d.ts +0 -495
- package/dist/protocols/mcp/tools/LspTools.d.ts.map +0 -1
- package/dist/protocols/mcp/tools/LspTools.js +0 -469
- package/dist/protocols/mcp/tools/LspTools.js.map +0 -1
- package/src/mxp/MxpEventForwardingEnhancer.ts +0 -471
- package/src/protocols/mcp/services/ToolSchemaEnhancements.ts +0 -92
- package/src/protocols/mcp/tools/ControlLoopLifecycle.ts +0 -302
- package/src/protocols/mcp/tools/LspTools.ts +0 -476
|
@@ -1,361 +0,0 @@
|
|
|
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
|
-
* MXP Event Forwarding Queue Enhancer
|
|
22
|
-
*
|
|
23
|
-
* Enhances the existing EventForwardingQueue with MXP 2.0 compression and optimization.
|
|
24
|
-
* Integrates binary protocol, message batching, and priority-aware compression.
|
|
25
|
-
* Only activates when bandwidth optimization is enabled.
|
|
26
|
-
*/
|
|
27
|
-
import { v4 as uuidv4 } from 'uuid';
|
|
28
|
-
import { Logger } from '../utils/Logger.js';
|
|
29
|
-
import { createStrictValidator } from '../utils/validation.js';
|
|
30
|
-
import { MxpConfigManager } from './MxpConfigManager.js';
|
|
31
|
-
import { BinaryProtocolLayer } from './BinaryProtocolLayer.js';
|
|
32
|
-
// Event priority levels (matching existing system)
|
|
33
|
-
export var EventPriority;
|
|
34
|
-
(function (EventPriority) {
|
|
35
|
-
EventPriority[EventPriority["CRITICAL"] = 0] = "CRITICAL";
|
|
36
|
-
EventPriority[EventPriority["HIGH"] = 1] = "HIGH";
|
|
37
|
-
EventPriority[EventPriority["NORMAL"] = 2] = "NORMAL";
|
|
38
|
-
EventPriority[EventPriority["LOW"] = 3] = "LOW";
|
|
39
|
-
EventPriority[EventPriority["BACKGROUND"] = 4] = "BACKGROUND"; // Memory updates, analytics
|
|
40
|
-
})(EventPriority || (EventPriority = {}));
|
|
41
|
-
// Default MXP-enhanced configuration
|
|
42
|
-
const defaultMxpQueueConfig = {
|
|
43
|
-
enabled: true,
|
|
44
|
-
batchSize: 10,
|
|
45
|
-
processingDelayMs: 25,
|
|
46
|
-
maxQueueSize: 1000,
|
|
47
|
-
maxRetries: 3,
|
|
48
|
-
mxpEnabled: true,
|
|
49
|
-
compressionByPriority: {
|
|
50
|
-
[EventPriority.CRITICAL]: {
|
|
51
|
-
enabled: false, // Speed over size for critical events
|
|
52
|
-
algorithm: 'none',
|
|
53
|
-
minSize: 0
|
|
54
|
-
},
|
|
55
|
-
[EventPriority.HIGH]: {
|
|
56
|
-
enabled: true, // Light compression for high priority
|
|
57
|
-
algorithm: 'msgpack',
|
|
58
|
-
minSize: 512 // 512 bytes minimum
|
|
59
|
-
},
|
|
60
|
-
[EventPriority.NORMAL]: {
|
|
61
|
-
enabled: true, // Standard compression
|
|
62
|
-
algorithm: 'msgpack',
|
|
63
|
-
minSize: 256 // 256 bytes minimum
|
|
64
|
-
},
|
|
65
|
-
[EventPriority.LOW]: {
|
|
66
|
-
enabled: true, // Aggressive compression for low priority
|
|
67
|
-
algorithm: 'msgpack-compressed',
|
|
68
|
-
minSize: 128 // 128 bytes minimum
|
|
69
|
-
},
|
|
70
|
-
[EventPriority.BACKGROUND]: {
|
|
71
|
-
enabled: true, // Maximum compression for background
|
|
72
|
-
algorithm: 'msgpack-compressed',
|
|
73
|
-
minSize: 64 // 64 bytes minimum
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
export class MxpEventForwardingEnhancer {
|
|
78
|
-
static instance = null;
|
|
79
|
-
logger;
|
|
80
|
-
validator = createStrictValidator('MxpEventForwardingEnhancer');
|
|
81
|
-
config;
|
|
82
|
-
// Enhanced queues with MXP support
|
|
83
|
-
enhancedQueues = new Map();
|
|
84
|
-
processing = false;
|
|
85
|
-
processingTimer = null;
|
|
86
|
-
// Statistics tracking
|
|
87
|
-
stats = {
|
|
88
|
-
totalEvents: 0,
|
|
89
|
-
compressedEvents: 0,
|
|
90
|
-
totalBandwidthSaved: 0,
|
|
91
|
-
averageCompressionRatio: 0,
|
|
92
|
-
processingTimeMs: 0
|
|
93
|
-
};
|
|
94
|
-
constructor(config = defaultMxpQueueConfig) {
|
|
95
|
-
this.config = { ...config };
|
|
96
|
-
this.logger = new Logger('info', 'MxpEventForwardingEnhancer', 'server');
|
|
97
|
-
// Initialize enhanced priority queues
|
|
98
|
-
Object.values(EventPriority).forEach(priority => {
|
|
99
|
-
if (typeof priority === 'number') {
|
|
100
|
-
this.enhancedQueues.set(priority, []);
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Get the singleton instance of MxpEventForwardingEnhancer
|
|
106
|
-
*/
|
|
107
|
-
static getInstance() {
|
|
108
|
-
if (!MxpEventForwardingEnhancer.instance) {
|
|
109
|
-
MxpEventForwardingEnhancer.instance = new MxpEventForwardingEnhancer();
|
|
110
|
-
}
|
|
111
|
-
return MxpEventForwardingEnhancer.instance;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Enhanced event queueing with MXP compression support
|
|
115
|
-
* Only applies compression when bandwidth optimization is enabled
|
|
116
|
-
*/
|
|
117
|
-
async enqueueEvent(eventName, payload, priority, targetId, type, channelId, excludedAgentId) {
|
|
118
|
-
this.validator.assertIsNonEmptyString(eventName, 'Event name is required');
|
|
119
|
-
this.validator.assertIsObject(payload, 'Event payload must be an object');
|
|
120
|
-
this.validator.assertIsNonEmptyString(targetId, 'Target ID is required');
|
|
121
|
-
try {
|
|
122
|
-
const startTime = Date.now();
|
|
123
|
-
// Check if MXP bandwidth optimization is enabled for this context
|
|
124
|
-
const isBandwidthOptEnabled = channelId ?
|
|
125
|
-
MxpConfigManager.getInstance().isFeatureEnabled(channelId, 'bandwidthOptimization', targetId) :
|
|
126
|
-
false;
|
|
127
|
-
// Create base event
|
|
128
|
-
const event = {
|
|
129
|
-
id: `mxp_event_${uuidv4()}`,
|
|
130
|
-
priority,
|
|
131
|
-
type,
|
|
132
|
-
eventName,
|
|
133
|
-
payload,
|
|
134
|
-
targetId,
|
|
135
|
-
excludedAgentId,
|
|
136
|
-
timestamp: Date.now(),
|
|
137
|
-
retryCount: 0,
|
|
138
|
-
compressionEnabled: isBandwidthOptEnabled && this.config.mxpEnabled,
|
|
139
|
-
channelId
|
|
140
|
-
};
|
|
141
|
-
// Apply MXP compression if enabled
|
|
142
|
-
if (event.compressionEnabled && this.shouldCompressEvent(event)) {
|
|
143
|
-
await this.applyMxpCompression(event);
|
|
144
|
-
}
|
|
145
|
-
// Add to appropriate priority queue
|
|
146
|
-
const queue = this.enhancedQueues.get(priority);
|
|
147
|
-
if (queue) {
|
|
148
|
-
// Check queue size limits
|
|
149
|
-
if (queue.length >= this.config.maxQueueSize) {
|
|
150
|
-
this.logger.warn(`Queue full for priority ${priority}, dropping oldest event`);
|
|
151
|
-
queue.shift(); // Remove oldest event
|
|
152
|
-
}
|
|
153
|
-
queue.push(event);
|
|
154
|
-
this.stats.totalEvents++;
|
|
155
|
-
// ;
|
|
156
|
-
}
|
|
157
|
-
// Start processing if not already running
|
|
158
|
-
if (!this.processing && this.config.enabled) {
|
|
159
|
-
this.startProcessing();
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
catch (error) {
|
|
163
|
-
this.logger.error('Failed to enqueue MXP event', {
|
|
164
|
-
error: error instanceof Error ? error.message : String(error),
|
|
165
|
-
eventName,
|
|
166
|
-
priority: EventPriority[priority],
|
|
167
|
-
targetId
|
|
168
|
-
});
|
|
169
|
-
throw error;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Enhanced batch processing with MXP compression awareness
|
|
174
|
-
*/
|
|
175
|
-
async processBatch() {
|
|
176
|
-
const batch = [];
|
|
177
|
-
const batchStartTime = Date.now();
|
|
178
|
-
// Collect events by priority (CRITICAL first)
|
|
179
|
-
for (const priority of [EventPriority.CRITICAL, EventPriority.HIGH, EventPriority.NORMAL, EventPriority.LOW, EventPriority.BACKGROUND]) {
|
|
180
|
-
const queue = this.enhancedQueues.get(priority);
|
|
181
|
-
if (queue && queue.length > 0) {
|
|
182
|
-
const batchSize = Math.min(this.config.batchSize - batch.length, queue.length);
|
|
183
|
-
batch.push(...queue.splice(0, batchSize));
|
|
184
|
-
if (batch.length >= this.config.batchSize)
|
|
185
|
-
break;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
if (batch.length === 0)
|
|
189
|
-
return;
|
|
190
|
-
try {
|
|
191
|
-
// Group events by compression status for efficient processing
|
|
192
|
-
const compressedEvents = batch.filter(e => e.compressedData);
|
|
193
|
-
const uncompressedEvents = batch.filter(e => !e.compressedData);
|
|
194
|
-
// ;
|
|
195
|
-
// Process compressed events (may need decompression for forwarding)
|
|
196
|
-
for (const event of compressedEvents) {
|
|
197
|
-
await this.processCompressedEvent(event);
|
|
198
|
-
}
|
|
199
|
-
// Process uncompressed events normally
|
|
200
|
-
for (const event of uncompressedEvents) {
|
|
201
|
-
await this.processUncompressedEvent(event);
|
|
202
|
-
}
|
|
203
|
-
// Update statistics
|
|
204
|
-
this.stats.processingTimeMs += (Date.now() - batchStartTime);
|
|
205
|
-
}
|
|
206
|
-
catch (error) {
|
|
207
|
-
this.logger.error('Batch processing failed', {
|
|
208
|
-
error: error instanceof Error ? error.message : String(error),
|
|
209
|
-
batchSize: batch.length
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Apply MXP compression to an event if warranted
|
|
215
|
-
*/
|
|
216
|
-
async applyMxpCompression(event) {
|
|
217
|
-
const priorityConfig = this.config.compressionByPriority[event.priority];
|
|
218
|
-
if (!priorityConfig.enabled) {
|
|
219
|
-
return; // Compression disabled for this priority level
|
|
220
|
-
}
|
|
221
|
-
try {
|
|
222
|
-
// Calculate payload size
|
|
223
|
-
const payloadString = JSON.stringify(event.payload);
|
|
224
|
-
const payloadSize = Buffer.byteLength(payloadString, 'utf8');
|
|
225
|
-
event.originalSize = payloadSize;
|
|
226
|
-
// Check minimum size threshold
|
|
227
|
-
if (payloadSize < priorityConfig.minSize) {
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
// Create MXP message for compression
|
|
231
|
-
const mxpMessage = {
|
|
232
|
-
type: event.eventName,
|
|
233
|
-
payload: event.payload,
|
|
234
|
-
metadata: {
|
|
235
|
-
eventId: event.id,
|
|
236
|
-
priority: event.priority,
|
|
237
|
-
timestamp: event.timestamp
|
|
238
|
-
},
|
|
239
|
-
size: payloadSize
|
|
240
|
-
};
|
|
241
|
-
// Apply compression using BinaryProtocolLayer
|
|
242
|
-
const compressionResult = BinaryProtocolLayer.getInstance().encodeMessage(mxpMessage, event.channelId || 'default', event.targetId);
|
|
243
|
-
if (compressionResult) {
|
|
244
|
-
event.compressedData = compressionResult;
|
|
245
|
-
this.stats.compressedEvents++;
|
|
246
|
-
this.stats.totalBandwidthSaved += (compressionResult.originalSize - compressionResult.compressedSize);
|
|
247
|
-
// Update average compression ratio
|
|
248
|
-
const totalCompressed = this.stats.compressedEvents;
|
|
249
|
-
this.stats.averageCompressionRatio =
|
|
250
|
-
((this.stats.averageCompressionRatio * (totalCompressed - 1)) + compressionResult.compressionRatio) / totalCompressed;
|
|
251
|
-
// ;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
catch (error) {
|
|
255
|
-
this.logger.warn('MXP compression failed, proceeding without compression', {
|
|
256
|
-
error: error instanceof Error ? error.message : String(error),
|
|
257
|
-
eventId: event.id
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Check if an event should be compressed based on configuration
|
|
263
|
-
*/
|
|
264
|
-
shouldCompressEvent(event) {
|
|
265
|
-
const priorityConfig = this.config.compressionByPriority[event.priority];
|
|
266
|
-
return priorityConfig.enabled && this.config.mxpEnabled;
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Process a compressed event (placeholder for actual forwarding logic)
|
|
270
|
-
*/
|
|
271
|
-
async processCompressedEvent(event) {
|
|
272
|
-
// In full implementation, this would forward the compressed event
|
|
273
|
-
// For now, we'll decompress and forward normally as a placeholder
|
|
274
|
-
if (event.compressedData) {
|
|
275
|
-
// Optionally decompress for forwarding (depends on receiving end capability)
|
|
276
|
-
const decompressed = BinaryProtocolLayer.getInstance().decodeMessage(event.compressedData);
|
|
277
|
-
if (decompressed) {
|
|
278
|
-
// Forward the decompressed message
|
|
279
|
-
// ;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Process an uncompressed event (placeholder for actual forwarding logic)
|
|
285
|
-
*/
|
|
286
|
-
async processUncompressedEvent(event) {
|
|
287
|
-
// In full implementation, this would forward the event normally
|
|
288
|
-
// ;
|
|
289
|
-
}
|
|
290
|
-
/**
|
|
291
|
-
* Start enhanced batch processing
|
|
292
|
-
*/
|
|
293
|
-
startProcessing() {
|
|
294
|
-
if (this.processing || !this.config.enabled)
|
|
295
|
-
return;
|
|
296
|
-
this.processing = true;
|
|
297
|
-
this.scheduleNextBatch();
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* Stop enhanced batch processing
|
|
301
|
-
*/
|
|
302
|
-
stopProcessing() {
|
|
303
|
-
this.processing = false;
|
|
304
|
-
if (this.processingTimer) {
|
|
305
|
-
clearTimeout(this.processingTimer);
|
|
306
|
-
this.processingTimer = null;
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Schedule next batch processing
|
|
311
|
-
*/
|
|
312
|
-
scheduleNextBatch() {
|
|
313
|
-
if (!this.processing)
|
|
314
|
-
return;
|
|
315
|
-
this.processingTimer = setTimeout(() => {
|
|
316
|
-
this.processBatch();
|
|
317
|
-
this.scheduleNextBatch();
|
|
318
|
-
}, this.config.processingDelayMs);
|
|
319
|
-
}
|
|
320
|
-
/**
|
|
321
|
-
* Get MXP-enhanced queue statistics
|
|
322
|
-
*/
|
|
323
|
-
getEnhancedStats() {
|
|
324
|
-
const queueSizes = {};
|
|
325
|
-
for (const [priority, queue] of this.enhancedQueues.entries()) {
|
|
326
|
-
queueSizes[EventPriority[priority]] = queue.length;
|
|
327
|
-
}
|
|
328
|
-
return {
|
|
329
|
-
totalEvents: this.stats.totalEvents,
|
|
330
|
-
compressedEvents: this.stats.compressedEvents,
|
|
331
|
-
compressionRate: this.stats.totalEvents > 0 ?
|
|
332
|
-
Math.round((this.stats.compressedEvents / this.stats.totalEvents) * 100) : 0,
|
|
333
|
-
totalBandwidthSaved: this.stats.totalBandwidthSaved,
|
|
334
|
-
averageCompressionRatio: this.stats.averageCompressionRatio,
|
|
335
|
-
queueSizes,
|
|
336
|
-
processingTimeMs: this.stats.processingTimeMs
|
|
337
|
-
};
|
|
338
|
-
}
|
|
339
|
-
/**
|
|
340
|
-
* Update configuration at runtime
|
|
341
|
-
*/
|
|
342
|
-
updateConfig(newConfig) {
|
|
343
|
-
this.config = { ...this.config, ...newConfig };
|
|
344
|
-
}
|
|
345
|
-
/**
|
|
346
|
-
* Clear all queues (useful for testing or shutdown)
|
|
347
|
-
*/
|
|
348
|
-
clearQueues() {
|
|
349
|
-
for (const queue of this.enhancedQueues.values()) {
|
|
350
|
-
queue.length = 0;
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
/**
|
|
354
|
-
* Check if MXP enhancement is enabled
|
|
355
|
-
*/
|
|
356
|
-
isMxpEnabled() {
|
|
357
|
-
return this.config.mxpEnabled;
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
// Note: Use MxpEventForwardingEnhancer.getInstance() to get the singleton instance
|
|
361
|
-
//# sourceMappingURL=MxpEventForwardingEnhancer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MxpEventForwardingEnhancer.js","sourceRoot":"","sources":["../../src/mxp/MxpEventForwardingEnhancer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;;;GAMG;AAEH,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAqB,MAAM,0BAA0B,CAAC;AAElF,mDAAmD;AACnD,MAAM,CAAN,IAAY,aAMX;AAND,WAAY,aAAa;IACrB,yDAAY,CAAA;IACZ,iDAAQ,CAAA;IACR,qDAAU,CAAA;IACV,+CAAO,CAAA;IACP,6DAAc,CAAA,CAAG,4BAA4B;AACjD,CAAC,EANW,aAAa,KAAb,aAAa,QAMxB;AAwCD,qCAAqC;AACrC,MAAM,qBAAqB,GAAwB;IAC/C,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,EAAE;IACb,iBAAiB,EAAE,EAAE;IACrB,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,CAAC;IAEb,UAAU,EAAE,IAAI;IAChB,qBAAqB,EAAE;QACnB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;YACtB,OAAO,EAAE,KAAK,EAAS,sCAAsC;YAC7D,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,CAAC;SACb;QACD,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;YAClB,OAAO,EAAE,IAAI,EAAU,sCAAsC;YAC7D,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,GAAG,CAAW,oBAAoB;SAC9C;QACD,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YACpB,OAAO,EAAE,IAAI,EAAU,uBAAuB;YAC9C,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,GAAG,CAAW,oBAAoB;SAC9C;QACD,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;YACjB,OAAO,EAAE,IAAI,EAAU,0CAA0C;YACjE,SAAS,EAAE,oBAAoB;YAC/B,OAAO,EAAE,GAAG,CAAW,oBAAoB;SAC9C;QACD,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;YACxB,OAAO,EAAE,IAAI,EAAU,qCAAqC;YAC5D,SAAS,EAAE,oBAAoB;YAC/B,OAAO,EAAE,EAAE,CAAY,mBAAmB;SAC7C;KACJ;CACJ,CAAC;AAEF,MAAM,OAAO,0BAA0B;IAC3B,MAAM,CAAC,QAAQ,GAAsC,IAAI,CAAC;IAEjD,MAAM,CAAS;IACf,SAAS,GAAG,qBAAqB,CAAC,4BAA4B,CAAC,CAAC;IACzE,MAAM,CAAsB;IAEpC,mCAAmC;IAC3B,cAAc,GAAyC,IAAI,GAAG,EAAE,CAAC;IACjE,UAAU,GAAY,KAAK,CAAC;IAC5B,eAAe,GAA0B,IAAI,CAAC;IAEtD,sBAAsB;IACd,KAAK,GAAG;QACZ,WAAW,EAAE,CAAC;QACd,gBAAgB,EAAE,CAAC;QACnB,mBAAmB,EAAE,CAAC;QACtB,uBAAuB,EAAE,CAAC;QAC1B,gBAAgB,EAAE,CAAC;KACtB,CAAC;IAEF,YAAoB,SAA8B,qBAAqB;QACnE,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,4BAA4B,EAAE,QAAQ,CAAC,CAAC;QAEzE,sCAAsC;QACtC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC5C,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC,CAAC,CAAC;IAEP,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,CAAC;YACvC,0BAA0B,CAAC,QAAQ,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC3E,CAAC;QACD,OAAO,0BAA0B,CAAC,QAAQ,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,YAAY,CACrB,SAAiB,EACjB,OAAY,EACZ,QAAuB,EACvB,QAAgB,EAChB,IAAyB,EACzB,SAAkB,EAClB,eAAwB;QAExB,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,iCAAiC,CAAC,CAAC;QAC1E,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;QAEzE,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE7B,kEAAkE;YAClE,MAAM,qBAAqB,GAAG,SAAS,CAAC,CAAC;gBACrC,gBAAgB,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC/F,KAAK,CAAC;YAEV,oBAAoB;YACpB,MAAM,KAAK,GAAmB;gBAC1B,EAAE,EAAE,aAAa,MAAM,EAAE,EAAE;gBAC3B,QAAQ;gBACR,IAAI;gBACJ,SAAS;gBACT,OAAO;gBACP,QAAQ;gBACR,eAAe;gBACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,UAAU,EAAE,CAAC;gBACb,kBAAkB,EAAE,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU;gBACnE,SAAS;aACZ,CAAC;YAEF,mCAAmC;YACnC,IAAI,KAAK,CAAC,kBAAkB,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9D,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC;YAED,oCAAoC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,KAAK,EAAE,CAAC;gBACR,0BAA0B;gBAC1B,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;oBAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,QAAQ,yBAAyB,CAAC,CAAC;oBAC/E,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,sBAAsB;gBACzC,CAAC;gBAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBAEzB,IAAI;YACR,CAAC;YAED,0CAA0C;YAC1C,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC1C,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3B,CAAC;QAEL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;gBAC7C,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,SAAS;gBACT,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;gBACjC,QAAQ;aACX,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY;QACtB,MAAM,KAAK,GAAqB,EAAE,CAAC;QACnC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAElC,8CAA8C;QAC9C,KAAK,MAAM,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;YACrI,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC/E,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBAE1C,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS;oBAAE,MAAM;YACrD,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE/B,IAAI,CAAC;YACD,8DAA8D;YAC9D,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAC7D,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAEhE,IAAI;YAEJ,oEAAoE;YACpE,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;gBACnC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC;YAED,uCAAuC;YACvC,KAAK,MAAM,KAAK,IAAI,kBAAkB,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAC/C,CAAC;YAED,oBAAoB;YACpB,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC,CAAC;QAGjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;gBACzC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,SAAS,EAAE,KAAK,CAAC,MAAM;aAC1B,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAAC,KAAqB;QACnD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEzE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO,CAAC,+CAA+C;QAC3D,CAAC;QAED,IAAI,CAAC;YACD,yBAAyB;YACzB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAC7D,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;YAEjC,+BAA+B;YAC/B,IAAI,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;gBACvC,OAAO;YACX,CAAC;YAED,qCAAqC;YACrC,MAAM,UAAU,GAAG;gBACf,IAAI,EAAE,KAAK,CAAC,SAAS;gBACrB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ,EAAE;oBACN,OAAO,EAAE,KAAK,CAAC,EAAE;oBACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC7B;gBACD,IAAI,EAAE,WAAW;aACpB,CAAC;YAEF,8CAA8C;YAC9C,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC,aAAa,CACrE,UAAU,EACV,KAAK,CAAC,SAAS,IAAI,SAAS,EAC5B,KAAK,CAAC,QAAQ,CACjB,CAAC;YAEF,IAAI,iBAAiB,EAAE,CAAC;gBACpB,KAAK,CAAC,cAAc,GAAG,iBAAiB,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;gBAEtG,mCAAmC;gBACnC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;gBACpD,IAAI,CAAC,KAAK,CAAC,uBAAuB;oBAC9B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,eAAe,CAAC;gBAE1H,IAAI;YACR,CAAC;QAEL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wDAAwD,EAAE;gBACvE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,OAAO,EAAE,KAAK,CAAC,EAAE;aACpB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,KAAqB;QAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzE,OAAO,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAC5D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB,CAAC,KAAqB;QACtD,kEAAkE;QAClE,kEAAkE;QAElE,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,6EAA6E;YAC7E,MAAM,YAAY,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC3F,IAAI,YAAY,EAAE,CAAC;gBACf,mCAAmC;gBACnC,IAAI;YACR,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,wBAAwB,CAAC,KAAqB;QACxD,gEAAgE;QAChE,IAAI;IACR,CAAC;IAED;;OAEG;IACI,eAAe;QAClB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QAEpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,cAAc;QACjB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAChC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,iBAAiB;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAE7B,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,gBAAgB;QASnB,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACvD,CAAC;QAED,OAAO;YACH,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;YACnC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAC7C,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChF,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB;YACnD,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB;YAC3D,UAAU;YACV,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;SAChD,CAAC;IACN,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,SAAuC;QACvD,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IACnD,CAAC;IAED;;OAEG;IACI,WAAW;QACd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;IAED;;OAEG;IACI,YAAY;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAClC,CAAC;;AAGL,mFAAmF"}
|
|
@@ -1,56 +0,0 @@
|
|
|
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
|
-
* ToolSchemaEnhancements.ts
|
|
22
|
-
*
|
|
23
|
-
* Provides enhanced schemas and examples for external MCP tools to improve
|
|
24
|
-
* agent understanding of complex tool structures. This is particularly useful
|
|
25
|
-
* for tools with nested objects or domain-specific knowledge (like n8n workflows).
|
|
26
|
-
*/
|
|
27
|
-
/**
|
|
28
|
-
* Schema enhancement for a specific tool
|
|
29
|
-
*/
|
|
30
|
-
export interface ToolSchemaEnhancement {
|
|
31
|
-
/** Tool name to enhance */
|
|
32
|
-
toolName: string;
|
|
33
|
-
/** Server ID that provides the tool */
|
|
34
|
-
serverId: string;
|
|
35
|
-
/** Examples to add to the schema */
|
|
36
|
-
examples?: any[];
|
|
37
|
-
/** Additional schema properties to merge */
|
|
38
|
-
propertyEnhancements?: Record<string, any>;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* All tool schema enhancements
|
|
42
|
-
*
|
|
43
|
-
* NOTE: Previously contained n8n workflow enhancements, but those are no longer
|
|
44
|
-
* needed since the actual n8n-mcp server (czlonkowski/n8n-mcp) has built-in
|
|
45
|
-
* validation, autofix, and example support.
|
|
46
|
-
*/
|
|
47
|
-
export declare const TOOL_SCHEMA_ENHANCEMENTS: ToolSchemaEnhancement[];
|
|
48
|
-
/**
|
|
49
|
-
* Find enhancement for a specific tool
|
|
50
|
-
*/
|
|
51
|
-
export declare const findToolEnhancement: (toolName: string, serverId: string) => ToolSchemaEnhancement | undefined;
|
|
52
|
-
/**
|
|
53
|
-
* Apply enhancements to a tool's input schema
|
|
54
|
-
*/
|
|
55
|
-
export declare const enhanceToolSchema: (toolName: string, serverId: string, originalSchema: Record<string, any>) => Record<string, any>;
|
|
56
|
-
//# sourceMappingURL=ToolSchemaEnhancements.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ToolSchemaEnhancements.d.ts","sourceRoot":"","sources":["../../../../src/protocols/mcp/services/ToolSchemaEnhancements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9C;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,qBAAqB,EAAO,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,UAAU,MAAM,EAAE,UAAU,MAAM,KAAG,qBAAqB,GAAG,SAIhG,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC1B,UAAU,MAAM,EAChB,UAAU,MAAM,EAChB,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KACpC,MAAM,CAAC,MAAM,EAAE,GAAG,CAwBpB,CAAC"}
|
|
@@ -1,57 +0,0 @@
|
|
|
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
|
-
* All tool schema enhancements
|
|
22
|
-
*
|
|
23
|
-
* NOTE: Previously contained n8n workflow enhancements, but those are no longer
|
|
24
|
-
* needed since the actual n8n-mcp server (czlonkowski/n8n-mcp) has built-in
|
|
25
|
-
* validation, autofix, and example support.
|
|
26
|
-
*/
|
|
27
|
-
export const TOOL_SCHEMA_ENHANCEMENTS = [];
|
|
28
|
-
/**
|
|
29
|
-
* Find enhancement for a specific tool
|
|
30
|
-
*/
|
|
31
|
-
export const findToolEnhancement = (toolName, serverId) => {
|
|
32
|
-
return TOOL_SCHEMA_ENHANCEMENTS.find(enhancement => enhancement.toolName === toolName && enhancement.serverId === serverId);
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* Apply enhancements to a tool's input schema
|
|
36
|
-
*/
|
|
37
|
-
export const enhanceToolSchema = (toolName, serverId, originalSchema) => {
|
|
38
|
-
const enhancement = findToolEnhancement(toolName, serverId);
|
|
39
|
-
if (!enhancement) {
|
|
40
|
-
return originalSchema;
|
|
41
|
-
}
|
|
42
|
-
// Create enhanced schema by merging
|
|
43
|
-
const enhancedSchema = { ...originalSchema };
|
|
44
|
-
// Add examples if provided
|
|
45
|
-
if (enhancement.examples && enhancement.examples.length > 0) {
|
|
46
|
-
enhancedSchema.examples = enhancement.examples;
|
|
47
|
-
}
|
|
48
|
-
// Enhance property definitions if provided
|
|
49
|
-
if (enhancement.propertyEnhancements && enhancedSchema.properties) {
|
|
50
|
-
enhancedSchema.properties = {
|
|
51
|
-
...enhancedSchema.properties,
|
|
52
|
-
...enhancement.propertyEnhancements
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
return enhancedSchema;
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=ToolSchemaEnhancements.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ToolSchemaEnhancements.js","sourceRoot":"","sources":["../../../../src/protocols/mcp/services/ToolSchemaEnhancements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAwBH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAA4B,EAAE,CAAC;AAEpE;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,QAAgB,EAAqC,EAAE;IACzG,OAAO,wBAAwB,CAAC,IAAI,CAChC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,KAAK,QAAQ,IAAI,WAAW,CAAC,QAAQ,KAAK,QAAQ,CACxF,CAAC;AACN,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,QAAgB,EAChB,QAAgB,EAChB,cAAmC,EAChB,EAAE;IACrB,MAAM,WAAW,GAAG,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE5D,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,oCAAoC;IACpC,MAAM,cAAc,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;IAE7C,2BAA2B;IAC3B,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,cAAc,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IACnD,CAAC;IAED,2CAA2C;IAC3C,IAAI,WAAW,CAAC,oBAAoB,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;QAChE,cAAc,CAAC,UAAU,GAAG;YACxB,GAAG,cAAc,CAAC,UAAU;YAC5B,GAAG,WAAW,CAAC,oBAAoB;SACtC,CAAC;IACN,CAAC;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC,CAAC"}
|