agentic-qe 2.3.5 → 2.5.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/.claude/agents/qe-a11y-ally.md +751 -0
- package/.claude/agents/qx-partner.md +120 -4
- package/.claude/skills/testability-scoring/SKILL.md +107 -6
- package/CHANGELOG.md +133 -0
- package/README.md +7 -6
- package/dist/agents/AccessibilityAllyAgent.d.ts +168 -0
- package/dist/agents/AccessibilityAllyAgent.d.ts.map +1 -0
- package/dist/agents/AccessibilityAllyAgent.js +462 -0
- package/dist/agents/AccessibilityAllyAgent.js.map +1 -0
- package/dist/agents/BaseAgent.d.ts +56 -49
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +208 -604
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +2 -2
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +8 -104
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/SONAIntegration.d.ts +109 -0
- package/dist/agents/SONAIntegration.d.ts.map +1 -0
- package/dist/agents/SONAIntegration.js +167 -0
- package/dist/agents/SONAIntegration.js.map +1 -0
- package/dist/agents/TestExecutorAgent.d.ts +1 -1
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +4 -46
- package/dist/agents/TestExecutorAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +15 -35
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/adapters/CoordinatorAdapter.d.ts +47 -0
- package/dist/agents/adapters/CoordinatorAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/CoordinatorAdapter.js +266 -0
- package/dist/agents/adapters/CoordinatorAdapter.js.map +1 -0
- package/dist/agents/adapters/LearningEngineAdapter.d.ts +45 -0
- package/dist/agents/adapters/LearningEngineAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/LearningEngineAdapter.js +279 -0
- package/dist/agents/adapters/LearningEngineAdapter.js.map +1 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.d.ts +45 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.js +128 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.js.map +1 -0
- package/dist/agents/adapters/MemoryServiceAdapter.d.ts +96 -0
- package/dist/agents/adapters/MemoryServiceAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/MemoryServiceAdapter.js +266 -0
- package/dist/agents/adapters/MemoryServiceAdapter.js.map +1 -0
- package/dist/agents/adapters/index.d.ts +14 -0
- package/dist/agents/adapters/index.d.ts.map +1 -0
- package/dist/agents/adapters/index.js +25 -0
- package/dist/agents/adapters/index.js.map +1 -0
- package/dist/agents/index.d.ts +3 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +93 -2
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.js +12 -6
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
- package/dist/cli/init/agents.js +1 -1
- package/dist/cli/init/claude-config.js +2 -2
- package/dist/cli/init/database-init.js +1 -1
- package/dist/core/cache/BinaryCacheBuilder.d.ts +84 -0
- package/dist/core/cache/BinaryCacheBuilder.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheBuilder.js +225 -0
- package/dist/core/cache/BinaryCacheBuilder.js.map +1 -0
- package/dist/core/cache/BinaryCacheImpl.d.ts +161 -0
- package/dist/core/cache/BinaryCacheImpl.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheImpl.js +685 -0
- package/dist/core/cache/BinaryCacheImpl.js.map +1 -0
- package/dist/core/cache/BinaryCacheManager.d.ts +142 -0
- package/dist/core/cache/BinaryCacheManager.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheManager.js +354 -0
- package/dist/core/cache/BinaryCacheManager.js.map +1 -0
- package/dist/core/cache/BinaryCacheReader.d.ts +129 -0
- package/dist/core/cache/BinaryCacheReader.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheReader.js +243 -0
- package/dist/core/cache/BinaryCacheReader.js.map +1 -0
- package/dist/core/cache/BinaryMetadataCache.d.ts +777 -0
- package/dist/core/cache/BinaryMetadataCache.d.ts.map +1 -0
- package/dist/core/cache/BinaryMetadataCache.js +204 -0
- package/dist/core/cache/BinaryMetadataCache.js.map +1 -0
- package/dist/core/cache/CacheInvalidator.d.ts +103 -0
- package/dist/core/cache/CacheInvalidator.d.ts.map +1 -0
- package/dist/core/cache/CacheInvalidator.js +152 -0
- package/dist/core/cache/CacheInvalidator.js.map +1 -0
- package/dist/core/cache/CacheValidator.d.ts +69 -0
- package/dist/core/cache/CacheValidator.d.ts.map +1 -0
- package/dist/core/cache/CacheValidator.js +189 -0
- package/dist/core/cache/CacheValidator.js.map +1 -0
- package/dist/core/cache/MessagePackSerializer.d.ts +163 -0
- package/dist/core/cache/MessagePackSerializer.d.ts.map +1 -0
- package/dist/core/cache/MessagePackSerializer.js +274 -0
- package/dist/core/cache/MessagePackSerializer.js.map +1 -0
- package/dist/core/cache/index.d.ts +59 -0
- package/dist/core/cache/index.d.ts.map +1 -0
- package/dist/core/cache/index.js +111 -0
- package/dist/core/cache/index.js.map +1 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +18 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/memory/AgentDBService.d.ts +30 -4
- package/dist/core/memory/AgentDBService.d.ts.map +1 -1
- package/dist/core/memory/AgentDBService.js +122 -12
- package/dist/core/memory/AgentDBService.js.map +1 -1
- package/dist/core/memory/CachedHNSWVectorMemory.d.ts +153 -0
- package/dist/core/memory/CachedHNSWVectorMemory.d.ts.map +1 -0
- package/dist/core/memory/CachedHNSWVectorMemory.js +329 -0
- package/dist/core/memory/CachedHNSWVectorMemory.js.map +1 -0
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/core/memory/PatternStoreFactory.d.ts +28 -0
- package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -1
- package/dist/core/memory/PatternStoreFactory.js +68 -3
- package/dist/core/memory/PatternStoreFactory.js.map +1 -1
- package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
- package/dist/core/memory/RuVectorPatternStore.js +8 -2
- package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
- package/dist/core/memory/UnifiedMemoryCoordinator.d.ts +50 -0
- package/dist/core/memory/UnifiedMemoryCoordinator.d.ts.map +1 -1
- package/dist/core/memory/UnifiedMemoryCoordinator.js +206 -0
- package/dist/core/memory/UnifiedMemoryCoordinator.js.map +1 -1
- package/dist/core/memory/index.d.ts +2 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +8 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/optimization/RecursiveOptimizer.d.ts +233 -0
- package/dist/core/optimization/RecursiveOptimizer.d.ts.map +1 -0
- package/dist/core/optimization/RecursiveOptimizer.js +509 -0
- package/dist/core/optimization/RecursiveOptimizer.js.map +1 -0
- package/dist/core/platform/FileOperations.d.ts +124 -0
- package/dist/core/platform/FileOperations.d.ts.map +1 -0
- package/dist/core/platform/FileOperations.js +371 -0
- package/dist/core/platform/FileOperations.js.map +1 -0
- package/dist/core/platform/PlatformDetector.d.ts +53 -0
- package/dist/core/platform/PlatformDetector.d.ts.map +1 -0
- package/dist/core/platform/PlatformDetector.js +251 -0
- package/dist/core/platform/PlatformDetector.js.map +1 -0
- package/dist/core/platform/index.d.ts +12 -0
- package/dist/core/platform/index.d.ts.map +1 -0
- package/dist/core/platform/index.js +28 -0
- package/dist/core/platform/index.js.map +1 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.d.ts +74 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.js +200 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.js.map +1 -0
- package/dist/core/strategies/AgentCoordinationStrategy.d.ts +157 -0
- package/dist/core/strategies/AgentCoordinationStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentCoordinationStrategy.js +12 -0
- package/dist/core/strategies/AgentCoordinationStrategy.js.map +1 -0
- package/dist/core/strategies/AgentLearningStrategy.d.ts +200 -0
- package/dist/core/strategies/AgentLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentLearningStrategy.js +13 -0
- package/dist/core/strategies/AgentLearningStrategy.js.map +1 -0
- package/dist/core/strategies/AgentLifecycleStrategy.d.ts +116 -0
- package/dist/core/strategies/AgentLifecycleStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentLifecycleStrategy.js +12 -0
- package/dist/core/strategies/AgentLifecycleStrategy.js.map +1 -0
- package/dist/core/strategies/AgentMemoryStrategy.d.ts +154 -0
- package/dist/core/strategies/AgentMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentMemoryStrategy.js +13 -0
- package/dist/core/strategies/AgentMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.d.ts +105 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.js +332 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultLearningStrategy.d.ts +120 -0
- package/dist/core/strategies/DefaultLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultLearningStrategy.js +365 -0
- package/dist/core/strategies/DefaultLearningStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.d.ts +129 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.js +297 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultMemoryStrategy.d.ts +91 -0
- package/dist/core/strategies/DefaultMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultMemoryStrategy.js +257 -0
- package/dist/core/strategies/DefaultMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/DistributedMemoryStrategy.d.ts +85 -0
- package/dist/core/strategies/DistributedMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DistributedMemoryStrategy.js +126 -0
- package/dist/core/strategies/DistributedMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/SONALearningStrategy.d.ts +115 -0
- package/dist/core/strategies/SONALearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/SONALearningStrategy.js +656 -0
- package/dist/core/strategies/SONALearningStrategy.js.map +1 -0
- package/dist/core/strategies/TRMLearningStrategy.d.ts +162 -0
- package/dist/core/strategies/TRMLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/TRMLearningStrategy.js +670 -0
- package/dist/core/strategies/TRMLearningStrategy.js.map +1 -0
- package/dist/core/strategies/index.d.ts +104 -0
- package/dist/core/strategies/index.d.ts.map +1 -0
- package/dist/core/strategies/index.js +68 -0
- package/dist/core/strategies/index.js.map +1 -0
- package/dist/learning/PerformanceOptimizer.js +2 -2
- package/dist/learning/PerformanceOptimizer.js.map +1 -1
- package/dist/learning/SONAFeedbackLoop.d.ts +168 -0
- package/dist/learning/SONAFeedbackLoop.d.ts.map +1 -0
- package/dist/learning/SONAFeedbackLoop.js +344 -0
- package/dist/learning/SONAFeedbackLoop.js.map +1 -0
- package/dist/learning/baselines/BaselineCollector.d.ts +1 -1
- package/dist/learning/baselines/BaselineCollector.js +1 -1
- package/dist/learning/baselines/StandardTaskSuite.d.ts +1 -1
- package/dist/learning/baselines/StandardTaskSuite.js +1 -1
- package/dist/learning/index.d.ts +2 -0
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +6 -1
- package/dist/learning/index.js.map +1 -1
- package/dist/mcp/handlers/base-handler.d.ts +28 -1
- package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
- package/dist/mcp/handlers/base-handler.js +41 -0
- package/dist/mcp/handlers/base-handler.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +23 -16
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +6 -1
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/dist/mcp/tools/qe/accessibility/accname-computation.d.ts +114 -0
- package/dist/mcp/tools/qe/accessibility/accname-computation.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/accname-computation.js +566 -0
- package/dist/mcp/tools/qe/accessibility/accname-computation.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/apg-patterns.d.ts +103 -0
- package/dist/mcp/tools/qe/accessibility/apg-patterns.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/apg-patterns.js +1028 -0
- package/dist/mcp/tools/qe/accessibility/apg-patterns.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.d.ts +48 -0
- package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.js +565 -0
- package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.d.ts +117 -0
- package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.js +571 -0
- package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/html-report-generator.d.ts +23 -0
- package/dist/mcp/tools/qe/accessibility/html-report-generator.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/html-report-generator.js +1152 -0
- package/dist/mcp/tools/qe/accessibility/html-report-generator.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/index.d.ts +22 -0
- package/dist/mcp/tools/qe/accessibility/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/index.js +38 -0
- package/dist/mcp/tools/qe/accessibility/index.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/markdown-report-generator.d.ts +18 -0
- package/dist/mcp/tools/qe/accessibility/markdown-report-generator.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/markdown-report-generator.js +549 -0
- package/dist/mcp/tools/qe/accessibility/markdown-report-generator.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/remediation-code-generator.d.ts +139 -0
- package/dist/mcp/tools/qe/accessibility/remediation-code-generator.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/remediation-code-generator.js +1300 -0
- package/dist/mcp/tools/qe/accessibility/remediation-code-generator.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/scan-comprehensive.d.ts +138 -0
- package/dist/mcp/tools/qe/accessibility/scan-comprehensive.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/scan-comprehensive.js +1326 -0
- package/dist/mcp/tools/qe/accessibility/scan-comprehensive.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.d.ts +50 -0
- package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.js +469 -0
- package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.js.map +1 -0
- package/dist/mcp/tools/qe/accessibility/webvtt-generator.d.ts +193 -0
- package/dist/mcp/tools/qe/accessibility/webvtt-generator.d.ts.map +1 -0
- package/dist/mcp/tools/qe/accessibility/webvtt-generator.js +511 -0
- package/dist/mcp/tools/qe/accessibility/webvtt-generator.js.map +1 -0
- package/dist/mcp/tools.d.ts +1 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +61 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/output/AIActionSuggester.d.ts +98 -0
- package/dist/output/AIActionSuggester.d.ts.map +1 -0
- package/dist/output/AIActionSuggester.js +499 -0
- package/dist/output/AIActionSuggester.js.map +1 -0
- package/dist/output/CLIOutputHelper.d.ts +169 -0
- package/dist/output/CLIOutputHelper.d.ts.map +1 -0
- package/dist/output/CLIOutputHelper.js +320 -0
- package/dist/output/CLIOutputHelper.js.map +1 -0
- package/dist/output/OutputFormatter.d.ts +764 -0
- package/dist/output/OutputFormatter.d.ts.map +1 -0
- package/dist/output/OutputFormatter.js +125 -0
- package/dist/output/OutputFormatter.js.map +1 -0
- package/dist/output/OutputFormatterImpl.d.ts +131 -0
- package/dist/output/OutputFormatterImpl.d.ts.map +1 -0
- package/dist/output/OutputFormatterImpl.js +556 -0
- package/dist/output/OutputFormatterImpl.js.map +1 -0
- package/dist/output/examples.d.ts +38 -0
- package/dist/output/examples.d.ts.map +1 -0
- package/dist/output/examples.js +503 -0
- package/dist/output/examples.js.map +1 -0
- package/dist/output/index.d.ts +16 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +58 -0
- package/dist/output/index.js.map +1 -0
- package/dist/providers/HybridRouter.d.ts +34 -3
- package/dist/providers/HybridRouter.d.ts.map +1 -1
- package/dist/providers/HybridRouter.js +69 -4
- package/dist/providers/HybridRouter.js.map +1 -1
- package/dist/providers/LLMProviderFactory.d.ts +68 -1
- package/dist/providers/LLMProviderFactory.d.ts.map +1 -1
- package/dist/providers/LLMProviderFactory.js +173 -6
- package/dist/providers/LLMProviderFactory.js.map +1 -1
- package/dist/providers/OpenRouterProvider.d.ts +150 -0
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/providers/OpenRouterProvider.js +545 -0
- package/dist/providers/OpenRouterProvider.js.map +1 -0
- package/dist/providers/RuvllmProvider.d.ts +130 -16
- package/dist/providers/RuvllmProvider.d.ts.map +1 -1
- package/dist/providers/RuvllmProvider.js +399 -83
- package/dist/providers/RuvllmProvider.js.map +1 -1
- package/dist/providers/index.d.ts +33 -4
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +72 -21
- package/dist/providers/index.js.map +1 -1
- package/dist/telemetry/instrumentation/agent.d.ts +1 -1
- package/dist/telemetry/instrumentation/agent.js +1 -1
- package/dist/telemetry/instrumentation/index.d.ts +1 -1
- package/dist/telemetry/instrumentation/index.js +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/ruvllm.d.ts +97 -0
- package/dist/types/ruvllm.d.ts.map +1 -0
- package/dist/types/ruvllm.js +46 -0
- package/dist/types/ruvllm.js.map +1 -0
- package/dist/utils/ruvllm-loader.d.ts +94 -0
- package/dist/utils/ruvllm-loader.d.ts.map +1 -0
- package/dist/utils/ruvllm-loader.js +87 -0
- package/dist/utils/ruvllm-loader.js.map +1 -0
- package/docs/reference/agents.md +36 -1
- package/package.json +7 -2
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AccessibilityAllyAgent - Intelligent Accessibility Testing Agent
|
|
3
|
+
*
|
|
4
|
+
* Provides comprehensive WCAG 2.2 compliance testing with context-aware
|
|
5
|
+
* remediation recommendations, intelligent ARIA suggestions, and
|
|
6
|
+
* AI-powered video analysis for accessibility.
|
|
7
|
+
*
|
|
8
|
+
* Key Capabilities:
|
|
9
|
+
* - WCAG 2.2 Level A, AA, AAA validation using axe-core
|
|
10
|
+
* - Context-aware ARIA label generation based on element semantics
|
|
11
|
+
* - Intelligent remediation suggestions with code examples
|
|
12
|
+
* - Keyboard navigation and screen reader testing
|
|
13
|
+
* - Color contrast optimization with specific fix recommendations
|
|
14
|
+
* - AI video analysis with multi-provider cascade (OpenAI > Anthropic > Ollama > moondream)
|
|
15
|
+
* - WebVTT caption generation for videos
|
|
16
|
+
* - EN 301 549 EU compliance mapping
|
|
17
|
+
* - ARIA Authoring Practices Guide (APG) pattern suggestions
|
|
18
|
+
*
|
|
19
|
+
* @version 1.0.0
|
|
20
|
+
* @author Agentic QE Team
|
|
21
|
+
*/
|
|
22
|
+
import { BaseAgent, BaseAgentConfig } from './BaseAgent';
|
|
23
|
+
import { QETask, AgentCapability, AgentContext, MemoryStore } from '../types';
|
|
24
|
+
import { EventEmitter } from 'events';
|
|
25
|
+
/**
|
|
26
|
+
* Configuration for AccessibilityAllyAgent
|
|
27
|
+
*/
|
|
28
|
+
export interface AccessibilityAllyConfig extends BaseAgentConfig {
|
|
29
|
+
/** WCAG level to test against */
|
|
30
|
+
wcagLevel?: 'A' | 'AA' | 'AAA';
|
|
31
|
+
/** Enable vision API for video analysis */
|
|
32
|
+
enableVisionAPI?: boolean;
|
|
33
|
+
/** Preferred vision provider */
|
|
34
|
+
visionProvider?: 'ollama' | 'anthropic' | 'openai';
|
|
35
|
+
/** Ollama server URL */
|
|
36
|
+
ollamaBaseUrl?: string;
|
|
37
|
+
/** Ollama vision model */
|
|
38
|
+
ollamaModel?: string;
|
|
39
|
+
/** Enable context-aware remediation */
|
|
40
|
+
contextAwareRemediation?: boolean;
|
|
41
|
+
/** Generate HTML reports */
|
|
42
|
+
generateHTMLReport?: boolean;
|
|
43
|
+
/** Generate Markdown reports */
|
|
44
|
+
generateMarkdownReport?: boolean;
|
|
45
|
+
/** Thresholds for compliance scoring */
|
|
46
|
+
thresholds?: {
|
|
47
|
+
minComplianceScore?: number;
|
|
48
|
+
maxCriticalViolations?: number;
|
|
49
|
+
maxSeriousViolations?: number;
|
|
50
|
+
};
|
|
51
|
+
/** EU compliance settings */
|
|
52
|
+
euCompliance?: {
|
|
53
|
+
enabled?: boolean;
|
|
54
|
+
en301549Mapping?: boolean;
|
|
55
|
+
euAccessibilityAct?: boolean;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Task types supported by AccessibilityAllyAgent
|
|
60
|
+
*/
|
|
61
|
+
export type AccessibilityTaskType = 'scan' | 'scan-comprehensive' | 'generate-remediations' | 'analyze-video' | 'generate-webvtt' | 'check-compliance' | 'analyze-keyboard-nav' | 'generate-aria-labels';
|
|
62
|
+
/**
|
|
63
|
+
* Result of an accessibility scan
|
|
64
|
+
*/
|
|
65
|
+
export interface AccessibilityScanTaskResult {
|
|
66
|
+
scanId: string;
|
|
67
|
+
url: string;
|
|
68
|
+
compliance: {
|
|
69
|
+
status: 'compliant' | 'partially-compliant' | 'non-compliant';
|
|
70
|
+
score: number;
|
|
71
|
+
level: string;
|
|
72
|
+
productionReady: boolean;
|
|
73
|
+
};
|
|
74
|
+
violations: {
|
|
75
|
+
total: number;
|
|
76
|
+
critical: number;
|
|
77
|
+
serious: number;
|
|
78
|
+
moderate: number;
|
|
79
|
+
minor: number;
|
|
80
|
+
details: unknown[];
|
|
81
|
+
};
|
|
82
|
+
remediations?: unknown[];
|
|
83
|
+
performance: {
|
|
84
|
+
scanTime: number;
|
|
85
|
+
elementsAnalyzed: number;
|
|
86
|
+
};
|
|
87
|
+
reportPath?: string;
|
|
88
|
+
}
|
|
89
|
+
interface Logger {
|
|
90
|
+
info(message: string, ...args: unknown[]): void;
|
|
91
|
+
warn(message: string, ...args: unknown[]): void;
|
|
92
|
+
error(message: string, ...args: unknown[]): void;
|
|
93
|
+
debug(message: string, ...args: unknown[]): void;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* AccessibilityAllyAgent - Intelligent accessibility testing with context-aware remediation
|
|
97
|
+
*/
|
|
98
|
+
export declare class AccessibilityAllyAgent extends BaseAgent {
|
|
99
|
+
private readonly agentConfig;
|
|
100
|
+
protected readonly logger: Logger;
|
|
101
|
+
constructor(config: AccessibilityAllyConfig & {
|
|
102
|
+
context: AgentContext;
|
|
103
|
+
memoryStore: MemoryStore;
|
|
104
|
+
eventBus: EventEmitter;
|
|
105
|
+
});
|
|
106
|
+
/**
|
|
107
|
+
* Get default capabilities for AccessibilityAllyAgent
|
|
108
|
+
*/
|
|
109
|
+
static getDefaultCapabilities(): AgentCapability[];
|
|
110
|
+
/**
|
|
111
|
+
* Initialize agent-specific components
|
|
112
|
+
*/
|
|
113
|
+
protected initializeComponents(): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* Load domain knowledge for accessibility testing
|
|
116
|
+
*/
|
|
117
|
+
protected loadKnowledge(): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* Perform the actual accessibility task
|
|
120
|
+
*/
|
|
121
|
+
protected performTask(task: QETask): Promise<unknown>;
|
|
122
|
+
/**
|
|
123
|
+
* Cleanup agent resources
|
|
124
|
+
*/
|
|
125
|
+
protected cleanup(): Promise<void>;
|
|
126
|
+
/**
|
|
127
|
+
* Execute a comprehensive accessibility scan
|
|
128
|
+
*/
|
|
129
|
+
private executeScan;
|
|
130
|
+
/**
|
|
131
|
+
* Generate context-aware remediations for violations
|
|
132
|
+
*/
|
|
133
|
+
private generateRemediations;
|
|
134
|
+
/**
|
|
135
|
+
* Get remediation recommendation for a violation
|
|
136
|
+
*/
|
|
137
|
+
private getRemediationRecommendation;
|
|
138
|
+
/**
|
|
139
|
+
* Generate code example for fixing a violation
|
|
140
|
+
*/
|
|
141
|
+
private generateCodeExample;
|
|
142
|
+
/**
|
|
143
|
+
* Estimate remediation effort
|
|
144
|
+
*/
|
|
145
|
+
private estimateRemediationEffort;
|
|
146
|
+
/**
|
|
147
|
+
* Analyze video content for accessibility
|
|
148
|
+
*/
|
|
149
|
+
private analyzeVideo;
|
|
150
|
+
/**
|
|
151
|
+
* Generate WebVTT caption file from video analysis
|
|
152
|
+
*/
|
|
153
|
+
private generateWebVTT;
|
|
154
|
+
/**
|
|
155
|
+
* Check compliance status against thresholds
|
|
156
|
+
*/
|
|
157
|
+
private checkCompliance;
|
|
158
|
+
/**
|
|
159
|
+
* Analyze keyboard navigation paths
|
|
160
|
+
*/
|
|
161
|
+
private analyzeKeyboardNavigation;
|
|
162
|
+
/**
|
|
163
|
+
* Generate intelligent ARIA labels for elements
|
|
164
|
+
*/
|
|
165
|
+
private generateAriaLabels;
|
|
166
|
+
}
|
|
167
|
+
export default AccessibilityAllyAgent;
|
|
168
|
+
//# sourceMappingURL=AccessibilityAllyAgent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessibilityAllyAgent.d.ts","sourceRoot":"","sources":["../../src/agents/AccessibilityAllyAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AccessibilityAllyAgent - Intelligent Accessibility Testing Agent
|
|
4
|
+
*
|
|
5
|
+
* Provides comprehensive WCAG 2.2 compliance testing with context-aware
|
|
6
|
+
* remediation recommendations, intelligent ARIA suggestions, and
|
|
7
|
+
* AI-powered video analysis for accessibility.
|
|
8
|
+
*
|
|
9
|
+
* Key Capabilities:
|
|
10
|
+
* - WCAG 2.2 Level A, AA, AAA validation using axe-core
|
|
11
|
+
* - Context-aware ARIA label generation based on element semantics
|
|
12
|
+
* - Intelligent remediation suggestions with code examples
|
|
13
|
+
* - Keyboard navigation and screen reader testing
|
|
14
|
+
* - Color contrast optimization with specific fix recommendations
|
|
15
|
+
* - AI video analysis with multi-provider cascade (OpenAI > Anthropic > Ollama > moondream)
|
|
16
|
+
* - WebVTT caption generation for videos
|
|
17
|
+
* - EN 301 549 EU compliance mapping
|
|
18
|
+
* - ARIA Authoring Practices Guide (APG) pattern suggestions
|
|
19
|
+
*
|
|
20
|
+
* @version 1.0.0
|
|
21
|
+
* @author Agentic QE Team
|
|
22
|
+
*/
|
|
23
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
24
|
+
if (k2 === undefined) k2 = k;
|
|
25
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
26
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
27
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
28
|
+
}
|
|
29
|
+
Object.defineProperty(o, k2, desc);
|
|
30
|
+
}) : (function(o, m, k, k2) {
|
|
31
|
+
if (k2 === undefined) k2 = k;
|
|
32
|
+
o[k2] = m[k];
|
|
33
|
+
}));
|
|
34
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
35
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
36
|
+
}) : function(o, v) {
|
|
37
|
+
o["default"] = v;
|
|
38
|
+
});
|
|
39
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
40
|
+
var ownKeys = function(o) {
|
|
41
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
42
|
+
var ar = [];
|
|
43
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
44
|
+
return ar;
|
|
45
|
+
};
|
|
46
|
+
return ownKeys(o);
|
|
47
|
+
};
|
|
48
|
+
return function (mod) {
|
|
49
|
+
if (mod && mod.__esModule) return mod;
|
|
50
|
+
var result = {};
|
|
51
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
52
|
+
__setModuleDefault(result, mod);
|
|
53
|
+
return result;
|
|
54
|
+
};
|
|
55
|
+
})();
|
|
56
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
57
|
+
exports.AccessibilityAllyAgent = void 0;
|
|
58
|
+
const BaseAgent_1 = require("./BaseAgent");
|
|
59
|
+
const types_1 = require("../types");
|
|
60
|
+
class ConsoleLogger {
|
|
61
|
+
info(message, ...args) {
|
|
62
|
+
console.log(`[A11Y-ALLY] [INFO] ${message}`, ...args);
|
|
63
|
+
}
|
|
64
|
+
warn(message, ...args) {
|
|
65
|
+
console.warn(`[A11Y-ALLY] [WARN] ${message}`, ...args);
|
|
66
|
+
}
|
|
67
|
+
error(message, ...args) {
|
|
68
|
+
console.error(`[A11Y-ALLY] [ERROR] ${message}`, ...args);
|
|
69
|
+
}
|
|
70
|
+
debug(message, ...args) {
|
|
71
|
+
console.debug(`[A11Y-ALLY] [DEBUG] ${message}`, ...args);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* AccessibilityAllyAgent - Intelligent accessibility testing with context-aware remediation
|
|
76
|
+
*/
|
|
77
|
+
class AccessibilityAllyAgent extends BaseAgent_1.BaseAgent {
|
|
78
|
+
constructor(config) {
|
|
79
|
+
const baseConfig = {
|
|
80
|
+
type: types_1.QEAgentType.ACCESSIBILITY_ALLY,
|
|
81
|
+
capabilities: AccessibilityAllyAgent.getDefaultCapabilities(),
|
|
82
|
+
context: config.context,
|
|
83
|
+
memoryStore: config.memoryStore,
|
|
84
|
+
eventBus: config.eventBus,
|
|
85
|
+
enableLearning: true
|
|
86
|
+
};
|
|
87
|
+
super(baseConfig);
|
|
88
|
+
this.logger = new ConsoleLogger();
|
|
89
|
+
this.agentConfig = {
|
|
90
|
+
wcagLevel: config.wcagLevel || 'AA',
|
|
91
|
+
enableVisionAPI: config.enableVisionAPI ?? true,
|
|
92
|
+
visionProvider: config.visionProvider || 'ollama',
|
|
93
|
+
ollamaBaseUrl: config.ollamaBaseUrl || 'http://localhost:11434',
|
|
94
|
+
ollamaModel: config.ollamaModel || 'llava',
|
|
95
|
+
contextAwareRemediation: config.contextAwareRemediation ?? true,
|
|
96
|
+
generateHTMLReport: config.generateHTMLReport ?? false,
|
|
97
|
+
generateMarkdownReport: config.generateMarkdownReport ?? true,
|
|
98
|
+
thresholds: config.thresholds || {
|
|
99
|
+
minComplianceScore: 85,
|
|
100
|
+
maxCriticalViolations: 0,
|
|
101
|
+
maxSeriousViolations: 3
|
|
102
|
+
},
|
|
103
|
+
euCompliance: config.euCompliance || {
|
|
104
|
+
enabled: true,
|
|
105
|
+
en301549Mapping: true,
|
|
106
|
+
euAccessibilityAct: true
|
|
107
|
+
},
|
|
108
|
+
...config
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get default capabilities for AccessibilityAllyAgent
|
|
113
|
+
*/
|
|
114
|
+
static getDefaultCapabilities() {
|
|
115
|
+
return [
|
|
116
|
+
{
|
|
117
|
+
name: 'wcag-2.2-validation',
|
|
118
|
+
version: '1.0.0',
|
|
119
|
+
description: 'Comprehensive WCAG 2.2 compliance testing (Level A, AA, AAA)'
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
name: 'context-aware-remediation',
|
|
123
|
+
version: '1.0.0',
|
|
124
|
+
description: 'Intelligent remediation suggestions with context-specific code examples'
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
name: 'aria-intelligence',
|
|
128
|
+
version: '1.0.0',
|
|
129
|
+
description: 'Smart ARIA label generation based on element semantics and context'
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: 'video-accessibility-analysis',
|
|
133
|
+
version: '1.0.0',
|
|
134
|
+
description: 'AI-powered video analysis with multi-provider cascade (FREE with Ollama)'
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: 'webvtt-generation',
|
|
138
|
+
version: '1.0.0',
|
|
139
|
+
description: 'Automatic WebVTT caption file generation with detailed scene descriptions'
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
name: 'en301549-compliance',
|
|
143
|
+
version: '1.0.0',
|
|
144
|
+
description: 'EN 301 549 EU accessibility standard compliance mapping'
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
name: 'apg-pattern-suggestions',
|
|
148
|
+
version: '1.0.0',
|
|
149
|
+
description: 'ARIA Authoring Practices Guide pattern recommendations'
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
name: 'keyboard-navigation-testing',
|
|
153
|
+
version: '1.0.0',
|
|
154
|
+
description: 'Keyboard navigation path validation and focus management'
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: 'color-contrast-optimization',
|
|
158
|
+
version: '1.0.0',
|
|
159
|
+
description: 'Color contrast analysis with specific fix recommendations'
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
name: 'learning-integration',
|
|
163
|
+
version: '1.0.0',
|
|
164
|
+
description: 'Learn from remediation feedback to improve future recommendations'
|
|
165
|
+
}
|
|
166
|
+
];
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Initialize agent-specific components
|
|
170
|
+
*/
|
|
171
|
+
async initializeComponents() {
|
|
172
|
+
this.logger.info(`AccessibilityAllyAgent initializing with WCAG Level ${this.agentConfig.wcagLevel}`);
|
|
173
|
+
this.logger.info(`Vision API: ${this.agentConfig.enableVisionAPI ? 'enabled' : 'disabled'} (provider: ${this.agentConfig.visionProvider})`);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Load domain knowledge for accessibility testing
|
|
177
|
+
*/
|
|
178
|
+
async loadKnowledge() {
|
|
179
|
+
this.logger.debug('Loading accessibility testing knowledge base');
|
|
180
|
+
// Knowledge is primarily loaded via the accessibility-testing skill
|
|
181
|
+
// and the embedded axe-core rules
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Perform the actual accessibility task
|
|
185
|
+
*/
|
|
186
|
+
async performTask(task) {
|
|
187
|
+
const taskType = task.type;
|
|
188
|
+
this.logger.info(`Performing accessibility task: ${taskType}`);
|
|
189
|
+
try {
|
|
190
|
+
switch (taskType) {
|
|
191
|
+
case 'scan':
|
|
192
|
+
case 'scan-comprehensive':
|
|
193
|
+
return await this.executeScan(task);
|
|
194
|
+
case 'generate-remediations':
|
|
195
|
+
return await this.generateRemediations(task);
|
|
196
|
+
case 'analyze-video':
|
|
197
|
+
return await this.analyzeVideo(task);
|
|
198
|
+
case 'generate-webvtt':
|
|
199
|
+
return await this.generateWebVTT(task);
|
|
200
|
+
case 'check-compliance':
|
|
201
|
+
return await this.checkCompliance(task);
|
|
202
|
+
case 'analyze-keyboard-nav':
|
|
203
|
+
return await this.analyzeKeyboardNavigation(task);
|
|
204
|
+
case 'generate-aria-labels':
|
|
205
|
+
return await this.generateAriaLabels(task);
|
|
206
|
+
default:
|
|
207
|
+
// Default to comprehensive scan
|
|
208
|
+
return await this.executeScan(task);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
this.logger.error(`Task ${taskType} failed:`, error);
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Cleanup agent resources
|
|
218
|
+
*/
|
|
219
|
+
async cleanup() {
|
|
220
|
+
this.logger.info('Cleaning up AccessibilityAllyAgent resources');
|
|
221
|
+
// No specific cleanup needed for this agent
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Execute a comprehensive accessibility scan
|
|
225
|
+
*/
|
|
226
|
+
async executeScan(task) {
|
|
227
|
+
const payload = task.payload || {};
|
|
228
|
+
const url = payload.url || payload.target;
|
|
229
|
+
if (!url) {
|
|
230
|
+
throw new Error('URL is required for accessibility scan');
|
|
231
|
+
}
|
|
232
|
+
this.logger.info(`Starting comprehensive scan for: ${url}`);
|
|
233
|
+
// Import the scan function dynamically to avoid circular dependencies
|
|
234
|
+
const { scanComprehensive } = await Promise.resolve().then(() => __importStar(require('../mcp/tools/qe/accessibility/scan-comprehensive.js')));
|
|
235
|
+
const result = await scanComprehensive({
|
|
236
|
+
url,
|
|
237
|
+
level: payload.level || this.agentConfig.wcagLevel || 'AA',
|
|
238
|
+
options: {
|
|
239
|
+
includeContext: this.agentConfig.contextAwareRemediation,
|
|
240
|
+
generateMarkdownReport: this.agentConfig.generateMarkdownReport,
|
|
241
|
+
generateHTMLReport: this.agentConfig.generateHTMLReport,
|
|
242
|
+
enableVisionAPI: this.agentConfig.enableVisionAPI,
|
|
243
|
+
visionProvider: this.agentConfig.visionProvider,
|
|
244
|
+
ollamaBaseUrl: this.agentConfig.ollamaBaseUrl,
|
|
245
|
+
ollamaModel: this.agentConfig.ollamaModel,
|
|
246
|
+
...payload.options
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
// Extract data from QEToolResponse
|
|
250
|
+
const data = result.data;
|
|
251
|
+
// Store results in memory for learning
|
|
252
|
+
if (this.memoryStore && data) {
|
|
253
|
+
await this.memoryStore.store(`aqe/accessibility/scan-results/${data.scanId || 'unknown'}`, {
|
|
254
|
+
timestamp: Date.now(),
|
|
255
|
+
url,
|
|
256
|
+
compliance: data.compliance,
|
|
257
|
+
violationCount: data.summary?.total || 0
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
return {
|
|
261
|
+
scanId: data?.scanId || 'unknown',
|
|
262
|
+
url,
|
|
263
|
+
compliance: data?.compliance || {
|
|
264
|
+
status: 'non-compliant',
|
|
265
|
+
score: 0,
|
|
266
|
+
level: this.agentConfig.wcagLevel || 'AA',
|
|
267
|
+
productionReady: false
|
|
268
|
+
},
|
|
269
|
+
violations: {
|
|
270
|
+
total: data?.summary?.total || 0,
|
|
271
|
+
critical: data?.summary?.critical || 0,
|
|
272
|
+
serious: data?.summary?.serious || 0,
|
|
273
|
+
moderate: data?.summary?.moderate || 0,
|
|
274
|
+
minor: data?.summary?.minor || 0,
|
|
275
|
+
details: data?.violations || []
|
|
276
|
+
},
|
|
277
|
+
remediations: data?.remediations,
|
|
278
|
+
performance: data?.performance || {
|
|
279
|
+
scanTime: 0,
|
|
280
|
+
elementsAnalyzed: 0
|
|
281
|
+
},
|
|
282
|
+
reportPath: data?.htmlReportPath
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Generate context-aware remediations for violations
|
|
287
|
+
*/
|
|
288
|
+
async generateRemediations(task) {
|
|
289
|
+
const payload = task.payload || {};
|
|
290
|
+
const violations = payload.violations || [];
|
|
291
|
+
this.logger.info(`Generating remediations for ${violations.length} violations`);
|
|
292
|
+
// Generate remediations based on violation patterns
|
|
293
|
+
const remediations = violations.map((violation) => ({
|
|
294
|
+
violationId: violation.id,
|
|
295
|
+
wcagCriterion: violation.wcagCriterion,
|
|
296
|
+
recommendation: this.getRemediationRecommendation(violation),
|
|
297
|
+
codeExample: this.generateCodeExample(violation),
|
|
298
|
+
effort: this.estimateRemediationEffort(violation)
|
|
299
|
+
}));
|
|
300
|
+
return {
|
|
301
|
+
success: true,
|
|
302
|
+
remediationsGenerated: remediations.length,
|
|
303
|
+
remediations
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Get remediation recommendation for a violation
|
|
308
|
+
*/
|
|
309
|
+
getRemediationRecommendation(violation) {
|
|
310
|
+
const recommendations = {
|
|
311
|
+
'color-contrast': 'Increase the color contrast ratio to meet WCAG requirements',
|
|
312
|
+
'label': 'Add a visible label or aria-label to the form control',
|
|
313
|
+
'image-alt': 'Add descriptive alt text that conveys the image content',
|
|
314
|
+
'link-name': 'Add descriptive text content or aria-label to the link',
|
|
315
|
+
'button-name': 'Add visible text content or aria-label to the button'
|
|
316
|
+
};
|
|
317
|
+
return recommendations[violation.id] || 'Review and fix the accessibility issue';
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Generate code example for fixing a violation
|
|
321
|
+
*/
|
|
322
|
+
generateCodeExample(violation) {
|
|
323
|
+
// Simple code example generation
|
|
324
|
+
if (violation.elements && violation.elements[0]) {
|
|
325
|
+
const element = violation.elements[0];
|
|
326
|
+
return `<!-- Current: ${element.html || 'N/A'} -->\n<!-- Recommended: Add appropriate ARIA attributes -->`;
|
|
327
|
+
}
|
|
328
|
+
return '<!-- See violation details for specific fix -->';
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Estimate remediation effort
|
|
332
|
+
*/
|
|
333
|
+
estimateRemediationEffort(violation) {
|
|
334
|
+
const effortMap = {
|
|
335
|
+
critical: 'High - 2-4 hours',
|
|
336
|
+
serious: 'Medium - 1-2 hours',
|
|
337
|
+
moderate: 'Low - 30 minutes',
|
|
338
|
+
minor: 'Trivial - 15 minutes'
|
|
339
|
+
};
|
|
340
|
+
return effortMap[violation.severity] || 'Medium - 1 hour';
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Analyze video content for accessibility
|
|
344
|
+
*/
|
|
345
|
+
async analyzeVideo(task) {
|
|
346
|
+
const payload = task.payload || {};
|
|
347
|
+
const videoUrl = payload.url || payload.videoUrl;
|
|
348
|
+
if (!videoUrl) {
|
|
349
|
+
throw new Error('Video URL is required for video analysis');
|
|
350
|
+
}
|
|
351
|
+
this.logger.info(`Analyzing video: ${videoUrl}`);
|
|
352
|
+
// Import video analyzer
|
|
353
|
+
const { analyzeVideoWithVision } = await Promise.resolve().then(() => __importStar(require('../mcp/tools/qe/accessibility/video-vision-analyzer.js')));
|
|
354
|
+
// Note: analyzeVideoWithVision expects frames, not URL directly
|
|
355
|
+
// This is a simplified implementation that would need frame extraction first
|
|
356
|
+
return {
|
|
357
|
+
success: true,
|
|
358
|
+
videoUrl,
|
|
359
|
+
message: 'Video analysis requires frame extraction. Use scan-comprehensive with enableVisionAPI for full video analysis.',
|
|
360
|
+
recommendation: 'Run a comprehensive scan with video analysis enabled to get detailed frame-by-frame descriptions'
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Generate WebVTT caption file from video analysis
|
|
365
|
+
*/
|
|
366
|
+
async generateWebVTT(task) {
|
|
367
|
+
const payload = task.payload || {};
|
|
368
|
+
const frameDescriptions = payload.frameDescriptions || [];
|
|
369
|
+
this.logger.info(`Generating WebVTT for ${frameDescriptions.length} frames`);
|
|
370
|
+
// Import WebVTT generator
|
|
371
|
+
const { generateWebVTT } = await Promise.resolve().then(() => __importStar(require('../mcp/tools/qe/accessibility/webvtt-generator.js')));
|
|
372
|
+
const webvtt = generateWebVTT(frameDescriptions);
|
|
373
|
+
return {
|
|
374
|
+
success: true,
|
|
375
|
+
frameCount: frameDescriptions.length,
|
|
376
|
+
webvtt
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Check compliance status against thresholds
|
|
381
|
+
*/
|
|
382
|
+
async checkCompliance(task) {
|
|
383
|
+
const payload = task.payload || {};
|
|
384
|
+
const scanResult = payload.scanResult;
|
|
385
|
+
if (!scanResult) {
|
|
386
|
+
throw new Error('Scan result is required for compliance check');
|
|
387
|
+
}
|
|
388
|
+
const thresholds = this.agentConfig.thresholds || {};
|
|
389
|
+
const minScore = thresholds.minComplianceScore || 85;
|
|
390
|
+
const maxCritical = thresholds.maxCriticalViolations || 0;
|
|
391
|
+
const maxSerious = thresholds.maxSeriousViolations || 3;
|
|
392
|
+
const score = scanResult.compliance?.score || 0;
|
|
393
|
+
const critical = scanResult.summary?.critical || 0;
|
|
394
|
+
const serious = scanResult.summary?.serious || 0;
|
|
395
|
+
const passes = score >= minScore && critical <= maxCritical && serious <= maxSerious;
|
|
396
|
+
return {
|
|
397
|
+
success: true,
|
|
398
|
+
passes,
|
|
399
|
+
details: {
|
|
400
|
+
score: { actual: score, required: minScore, passes: score >= minScore },
|
|
401
|
+
criticalViolations: {
|
|
402
|
+
actual: critical,
|
|
403
|
+
maxAllowed: maxCritical,
|
|
404
|
+
passes: critical <= maxCritical
|
|
405
|
+
},
|
|
406
|
+
seriousViolations: {
|
|
407
|
+
actual: serious,
|
|
408
|
+
maxAllowed: maxSerious,
|
|
409
|
+
passes: serious <= maxSerious
|
|
410
|
+
}
|
|
411
|
+
},
|
|
412
|
+
recommendation: passes
|
|
413
|
+
? 'Application meets accessibility compliance thresholds'
|
|
414
|
+
: 'Application does not meet accessibility compliance thresholds - remediation required'
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Analyze keyboard navigation paths
|
|
419
|
+
*/
|
|
420
|
+
async analyzeKeyboardNavigation(task) {
|
|
421
|
+
const payload = task.payload || {};
|
|
422
|
+
const url = payload.url;
|
|
423
|
+
if (!url) {
|
|
424
|
+
throw new Error('URL is required for keyboard navigation analysis');
|
|
425
|
+
}
|
|
426
|
+
this.logger.info(`Analyzing keyboard navigation for: ${url}`);
|
|
427
|
+
// This would use Playwright to test keyboard navigation
|
|
428
|
+
// For now, return a placeholder indicating the capability
|
|
429
|
+
return {
|
|
430
|
+
success: true,
|
|
431
|
+
url,
|
|
432
|
+
analysis: {
|
|
433
|
+
focusOrder: 'Analysis pending - requires Playwright browser automation',
|
|
434
|
+
keyboardTraps: [],
|
|
435
|
+
skipLinks: [],
|
|
436
|
+
focusIndicators: []
|
|
437
|
+
},
|
|
438
|
+
message: 'Full keyboard navigation analysis available via scan-comprehensive with keyboard option'
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Generate intelligent ARIA labels for elements
|
|
443
|
+
*/
|
|
444
|
+
async generateAriaLabels(task) {
|
|
445
|
+
const payload = task.payload || {};
|
|
446
|
+
const elements = payload.elements || [];
|
|
447
|
+
this.logger.info(`Generating ARIA labels for ${elements.length} elements`);
|
|
448
|
+
// Import AccName computation
|
|
449
|
+
const { generateAccessibleNameRecommendation } = await Promise.resolve().then(() => __importStar(require('../mcp/tools/qe/accessibility/accname-computation.js')));
|
|
450
|
+
const recommendations = elements.map((element) => {
|
|
451
|
+
return generateAccessibleNameRecommendation(element, element.context || {});
|
|
452
|
+
});
|
|
453
|
+
return {
|
|
454
|
+
success: true,
|
|
455
|
+
elementCount: elements.length,
|
|
456
|
+
recommendations
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
exports.AccessibilityAllyAgent = AccessibilityAllyAgent;
|
|
461
|
+
exports.default = AccessibilityAllyAgent;
|
|
462
|
+
//# sourceMappingURL=AccessibilityAllyAgent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessibilityAllyAgent.js","sourceRoot":"","sources":["../../src/agents/AccessibilityAllyAgent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2CAAyD;AACzD,oCAMkB;AAsFlB,MAAM,aAAa;IACjB,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,OAAO,CAAC,IAAI,CAAC,sBAAsB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,OAAO,CAAC,KAAK,CAAC,uBAAuB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,OAAO,CAAC,KAAK,CAAC,uBAAuB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3D,CAAC;CACF;AAED;;GAEG;AACH,MAAa,sBAAuB,SAAQ,qBAAS;IAInD,YACE,MAIC;QAED,MAAM,UAAU,GAAoB;YAClC,IAAI,EAAE,mBAAW,CAAC,kBAAkB;YACpC,YAAY,EAAE,sBAAsB,CAAC,sBAAsB,EAAE;YAC7D,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,cAAc,EAAE,IAAI;SACrB,CAAC;QAEF,KAAK,CAAC,UAAU,CAAC,CAAC;QAlBD,WAAM,GAAW,IAAI,aAAa,EAAE,CAAC;QAoBtD,IAAI,CAAC,WAAW,GAAG;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;YACnC,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI;YAC/C,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,QAAQ;YACjD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,wBAAwB;YAC/D,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,OAAO;YAC1C,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,IAAI,IAAI;YAC/D,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,KAAK;YACtD,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,IAAI,IAAI;YAC7D,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI;gBAC/B,kBAAkB,EAAE,EAAE;gBACtB,qBAAqB,EAAE,CAAC;gBACxB,oBAAoB,EAAE,CAAC;aACxB;YACD,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI;gBACnC,OAAO,EAAE,IAAI;gBACb,eAAe,EAAE,IAAI;gBACrB,kBAAkB,EAAE,IAAI;aACzB;YACD,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,sBAAsB;QAC3B,OAAO;YACL;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,8DAA8D;aAC5E;YACD;gBACE,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE,OAAO;gBAChB,WAAW,EACT,yEAAyE;aAC5E;YACD;gBACE,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,OAAO;gBAChB,WAAW,EACT,oEAAoE;aACvE;YACD;gBACE,IAAI,EAAE,8BAA8B;gBACpC,OAAO,EAAE,OAAO;gBAChB,WAAW,EACT,0EAA0E;aAC7E;YACD;gBACE,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,OAAO;gBAChB,WAAW,EACT,2EAA2E;aAC9E;YACD;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,yDAAyD;aACvE;YACD;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,OAAO;gBAChB,WAAW,EACT,wDAAwD;aAC3D;YACD;gBACE,IAAI,EAAE,6BAA6B;gBACnC,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,0DAA0D;aACxE;YACD;gBACE,IAAI,EAAE,6BAA6B;gBACnC,OAAO,EAAE,OAAO;gBAChB,WAAW,EACT,2DAA2D;aAC9D;YACD;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EAAE,OAAO;gBAChB,WAAW,EACT,mEAAmE;aACtE;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,oBAAoB;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,uDAAuD,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CACpF,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,eAAe,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,eAAe,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAC1H,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,aAAa;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,oEAAoE;QACpE,kCAAkC;IACpC,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,WAAW,CAAC,IAAY;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAA6B,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAC;QAE/D,IAAI,CAAC;YACH,QAAQ,QAAQ,EAAE,CAAC;gBACjB,KAAK,MAAM,CAAC;gBACZ,KAAK,oBAAoB;oBACvB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAEtC,KAAK,uBAAuB;oBAC1B,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBAE/C,KAAK,eAAe;oBAClB,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAEvC,KAAK,iBAAiB;oBACpB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAEzC,KAAK,kBAAkB;oBACrB,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAE1C,KAAK,sBAAsB;oBACzB,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;gBAEpD,KAAK,sBAAsB;oBACzB,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAE7C;oBACE,gCAAgC;oBAChC,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,QAAQ,UAAU,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,OAAO;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QACjE,4CAA4C;IAC9C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,IAAY;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;QAE1C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;QAE5D,sEAAsE;QACtE,MAAM,EAAE,iBAAiB,EAAE,GAAG,wDAC5B,qDAAqD,GACtD,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,GAAG;YACH,KAAK,EAAG,OAAO,CAAC,KAA4B,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI;YAClF,OAAO,EAAE;gBACP,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,uBAAuB;gBACxD,sBAAsB,EAAE,IAAI,CAAC,WAAW,CAAC,sBAAsB;gBAC/D,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,kBAAkB;gBACvD,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,eAAe;gBACjD,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,cAAwC;gBACzE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa;gBAC7C,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW;gBACzC,GAAG,OAAO,CAAC,OAAO;aACnB;SACF,CAAC,CAAC;QAEH,mCAAmC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEzB,uCAAuC;QACvC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAC1B,kCAAkC,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,EAC5D;gBACE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,GAAG;gBACH,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC;aACzC,CACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,SAAS;YACjC,GAAG;YACH,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI;gBAC9B,MAAM,EAAE,eAAe;gBACvB,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI;gBACzC,eAAe,EAAE,KAAK;aACvB;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;gBAChC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC;gBACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC;gBACpC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC;gBACtC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;gBAChC,OAAO,EAAE,IAAI,EAAE,UAAU,IAAI,EAAE;aAChC;YACD,YAAY,EAAE,IAAI,EAAE,YAAY;YAChC,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI;gBAChC,QAAQ,EAAE,CAAC;gBACX,gBAAgB,EAAE,CAAC;aACpB;YACD,UAAU,EAAE,IAAI,EAAE,cAAc;SACjC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,IAAY;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;QAE5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,UAAU,CAAC,MAAM,aAAa,CAAC,CAAC;QAEhF,oDAAoD;QACpD,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAc,EAAE,EAAE,CAAC,CAAC;YACvD,WAAW,EAAE,SAAS,CAAC,EAAE;YACzB,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,cAAc,EAAE,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC;YAC5D,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;YAChD,MAAM,EAAE,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;SAClD,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE,IAAI;YACb,qBAAqB,EAAE,YAAY,CAAC,MAAM;YAC1C,YAAY;SACb,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,4BAA4B,CAAC,SAAc;QACjD,MAAM,eAAe,GAA2B;YAC9C,gBAAgB,EAAE,6DAA6D;YAC/E,OAAO,EAAE,uDAAuD;YAChE,WAAW,EAAE,yDAAyD;YACtE,WAAW,EAAE,wDAAwD;YACrE,aAAa,EAAE,sDAAsD;SACtE,CAAC;QACF,OAAO,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,wCAAwC,CAAC;IACnF,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,SAAc;QACxC,iCAAiC;QACjC,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,iBAAiB,OAAO,CAAC,IAAI,IAAI,KAAK,6DAA6D,CAAC;QAC7G,CAAC;QACD,OAAO,iDAAiD,CAAC;IAC3D,CAAC;IAED;;OAEG;IACK,yBAAyB,CAAC,SAAc;QAC9C,MAAM,SAAS,GAA2B;YACxC,QAAQ,EAAE,kBAAkB;YAC5B,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE,kBAAkB;YAC5B,KAAK,EAAE,sBAAsB;SAC9B,CAAC;QACF,OAAO,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC;IAC5D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,IAAY;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;QAEjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;QAEjD,wBAAwB;QACxB,MAAM,EAAE,sBAAsB,EAAE,GAAG,wDACjC,wDAAwD,GACzD,CAAC;QAEF,gEAAgE;QAChE,6EAA6E;QAC7E,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ;YACR,OAAO,EAAE,gHAAgH;YACzH,cAAc,EAAE,kGAAkG;SACnH,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,IAAY;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC;QAE1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,iBAAiB,CAAC,MAAM,SAAS,CAAC,CAAC;QAE7E,0BAA0B;QAC1B,MAAM,EAAE,cAAc,EAAE,GAAG,wDACzB,mDAAmD,GACpD,CAAC;QAEF,MAAM,MAAM,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAEjD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,iBAAiB,CAAC,MAAM;YACpC,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,IAAY;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAEtC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,UAAU,CAAC,kBAAkB,IAAI,EAAE,CAAC;QACrD,MAAM,WAAW,GAAG,UAAU,CAAC,qBAAqB,IAAI,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,UAAU,CAAC,oBAAoB,IAAI,CAAC,CAAC;QAExD,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC;QAEjD,MAAM,MAAM,GACV,KAAK,IAAI,QAAQ,IAAI,QAAQ,IAAI,WAAW,IAAI,OAAO,IAAI,UAAU,CAAC;QAExE,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM;YACN,OAAO,EAAE;gBACP,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,QAAQ,EAAE;gBACvE,kBAAkB,EAAE;oBAClB,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,WAAW;oBACvB,MAAM,EAAE,QAAQ,IAAI,WAAW;iBAChC;gBACD,iBAAiB,EAAE;oBACjB,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,UAAU;oBACtB,MAAM,EAAE,OAAO,IAAI,UAAU;iBAC9B;aACF;YACD,cAAc,EAAE,MAAM;gBACpB,CAAC,CAAC,uDAAuD;gBACzD,CAAC,CAAC,sFAAsF;SAC3F,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,yBAAyB,CAAC,IAAY;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QAExB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,GAAG,EAAE,CAAC,CAAC;QAE9D,wDAAwD;QACxD,0DAA0D;QAC1D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,GAAG;YACH,QAAQ,EAAE;gBACR,UAAU,EAAE,2DAA2D;gBACvE,aAAa,EAAE,EAAE;gBACjB,SAAS,EAAE,EAAE;gBACb,eAAe,EAAE,EAAE;aACpB;YACD,OAAO,EACL,yFAAyF;SAC5F,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,IAAY;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;QAE3E,6BAA6B;QAC7B,MAAM,EAAE,oCAAoC,EAAE,GAAG,wDAC/C,sDAAsD,GACvD,CAAC;QAEF,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE;YACpD,OAAO,oCAAoC,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,QAAQ,CAAC,MAAM;YAC7B,eAAe;SAChB,CAAC;IACJ,CAAC;CACF;AArdD,wDAqdC;AAED,kBAAe,sBAAsB,CAAC"}
|