agentic-qe 2.4.0 → 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.
Files changed (174) hide show
  1. package/.claude/agents/qe-a11y-ally.md +751 -0
  2. package/.claude/agents/qx-partner.md +120 -4
  3. package/.claude/skills/testability-scoring/SKILL.md +107 -6
  4. package/CHANGELOG.md +86 -0
  5. package/README.md +7 -6
  6. package/dist/agents/AccessibilityAllyAgent.d.ts +168 -0
  7. package/dist/agents/AccessibilityAllyAgent.d.ts.map +1 -0
  8. package/dist/agents/AccessibilityAllyAgent.js +462 -0
  9. package/dist/agents/AccessibilityAllyAgent.js.map +1 -0
  10. package/dist/agents/SONAIntegration.d.ts +109 -0
  11. package/dist/agents/SONAIntegration.d.ts.map +1 -0
  12. package/dist/agents/SONAIntegration.js +167 -0
  13. package/dist/agents/SONAIntegration.js.map +1 -0
  14. package/dist/agents/index.d.ts +3 -0
  15. package/dist/agents/index.d.ts.map +1 -1
  16. package/dist/agents/index.js +93 -2
  17. package/dist/agents/index.js.map +1 -1
  18. package/dist/cli/init/agents.js +1 -1
  19. package/dist/cli/init/claude-config.js +2 -2
  20. package/dist/cli/init/database-init.js +1 -1
  21. package/dist/core/cache/BinaryCacheImpl.d.ts +161 -0
  22. package/dist/core/cache/BinaryCacheImpl.d.ts.map +1 -0
  23. package/dist/core/cache/BinaryCacheImpl.js +685 -0
  24. package/dist/core/cache/BinaryCacheImpl.js.map +1 -0
  25. package/dist/core/cache/BinaryMetadataCache.d.ts +244 -0
  26. package/dist/core/cache/BinaryMetadataCache.d.ts.map +1 -1
  27. package/dist/core/cache/BinaryMetadataCache.js +63 -1
  28. package/dist/core/cache/BinaryMetadataCache.js.map +1 -1
  29. package/dist/core/cache/index.d.ts +1 -0
  30. package/dist/core/cache/index.d.ts.map +1 -1
  31. package/dist/core/cache/index.js +10 -1
  32. package/dist/core/cache/index.js.map +1 -1
  33. package/dist/core/memory/AgentDBService.d.ts +30 -4
  34. package/dist/core/memory/AgentDBService.d.ts.map +1 -1
  35. package/dist/core/memory/AgentDBService.js +122 -12
  36. package/dist/core/memory/AgentDBService.js.map +1 -1
  37. package/dist/core/memory/CachedHNSWVectorMemory.d.ts +153 -0
  38. package/dist/core/memory/CachedHNSWVectorMemory.d.ts.map +1 -0
  39. package/dist/core/memory/CachedHNSWVectorMemory.js +329 -0
  40. package/dist/core/memory/CachedHNSWVectorMemory.js.map +1 -0
  41. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  42. package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
  43. package/dist/core/memory/RuVectorPatternStore.js +8 -2
  44. package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
  45. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts +50 -0
  46. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts.map +1 -1
  47. package/dist/core/memory/UnifiedMemoryCoordinator.js +206 -0
  48. package/dist/core/memory/UnifiedMemoryCoordinator.js.map +1 -1
  49. package/dist/core/memory/index.d.ts +2 -0
  50. package/dist/core/memory/index.d.ts.map +1 -1
  51. package/dist/core/memory/index.js +8 -1
  52. package/dist/core/memory/index.js.map +1 -1
  53. package/dist/core/optimization/RecursiveOptimizer.d.ts +233 -0
  54. package/dist/core/optimization/RecursiveOptimizer.d.ts.map +1 -0
  55. package/dist/core/optimization/RecursiveOptimizer.js +509 -0
  56. package/dist/core/optimization/RecursiveOptimizer.js.map +1 -0
  57. package/dist/core/strategies/SONALearningStrategy.d.ts +115 -0
  58. package/dist/core/strategies/SONALearningStrategy.d.ts.map +1 -0
  59. package/dist/core/strategies/SONALearningStrategy.js +656 -0
  60. package/dist/core/strategies/SONALearningStrategy.js.map +1 -0
  61. package/dist/core/strategies/TRMLearningStrategy.d.ts +162 -0
  62. package/dist/core/strategies/TRMLearningStrategy.d.ts.map +1 -0
  63. package/dist/core/strategies/TRMLearningStrategy.js +670 -0
  64. package/dist/core/strategies/TRMLearningStrategy.js.map +1 -0
  65. package/dist/core/strategies/index.d.ts +10 -1
  66. package/dist/core/strategies/index.d.ts.map +1 -1
  67. package/dist/core/strategies/index.js +4 -1
  68. package/dist/core/strategies/index.js.map +1 -1
  69. package/dist/learning/SONAFeedbackLoop.d.ts +168 -0
  70. package/dist/learning/SONAFeedbackLoop.d.ts.map +1 -0
  71. package/dist/learning/SONAFeedbackLoop.js +344 -0
  72. package/dist/learning/SONAFeedbackLoop.js.map +1 -0
  73. package/dist/learning/baselines/BaselineCollector.d.ts +1 -1
  74. package/dist/learning/baselines/BaselineCollector.js +1 -1
  75. package/dist/learning/baselines/StandardTaskSuite.d.ts +1 -1
  76. package/dist/learning/baselines/StandardTaskSuite.js +1 -1
  77. package/dist/learning/index.d.ts +2 -0
  78. package/dist/learning/index.d.ts.map +1 -1
  79. package/dist/learning/index.js +6 -1
  80. package/dist/learning/index.js.map +1 -1
  81. package/dist/mcp/server-instructions.d.ts +1 -1
  82. package/dist/mcp/server-instructions.js +1 -1
  83. package/dist/mcp/server.d.ts.map +1 -1
  84. package/dist/mcp/server.js +23 -16
  85. package/dist/mcp/server.js.map +1 -1
  86. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  87. package/dist/mcp/services/AgentRegistry.js +6 -1
  88. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  89. package/dist/mcp/tools/qe/accessibility/accname-computation.d.ts +114 -0
  90. package/dist/mcp/tools/qe/accessibility/accname-computation.d.ts.map +1 -0
  91. package/dist/mcp/tools/qe/accessibility/accname-computation.js +566 -0
  92. package/dist/mcp/tools/qe/accessibility/accname-computation.js.map +1 -0
  93. package/dist/mcp/tools/qe/accessibility/apg-patterns.d.ts +103 -0
  94. package/dist/mcp/tools/qe/accessibility/apg-patterns.d.ts.map +1 -0
  95. package/dist/mcp/tools/qe/accessibility/apg-patterns.js +1028 -0
  96. package/dist/mcp/tools/qe/accessibility/apg-patterns.js.map +1 -0
  97. package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.d.ts +48 -0
  98. package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.d.ts.map +1 -0
  99. package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.js +565 -0
  100. package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.js.map +1 -0
  101. package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.d.ts +117 -0
  102. package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.d.ts.map +1 -0
  103. package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.js +571 -0
  104. package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.js.map +1 -0
  105. package/dist/mcp/tools/qe/accessibility/html-report-generator.d.ts +23 -0
  106. package/dist/mcp/tools/qe/accessibility/html-report-generator.d.ts.map +1 -0
  107. package/dist/mcp/tools/qe/accessibility/html-report-generator.js +1152 -0
  108. package/dist/mcp/tools/qe/accessibility/html-report-generator.js.map +1 -0
  109. package/dist/mcp/tools/qe/accessibility/index.d.ts +22 -0
  110. package/dist/mcp/tools/qe/accessibility/index.d.ts.map +1 -0
  111. package/dist/mcp/tools/qe/accessibility/index.js +38 -0
  112. package/dist/mcp/tools/qe/accessibility/index.js.map +1 -0
  113. package/dist/mcp/tools/qe/accessibility/markdown-report-generator.d.ts +18 -0
  114. package/dist/mcp/tools/qe/accessibility/markdown-report-generator.d.ts.map +1 -0
  115. package/dist/mcp/tools/qe/accessibility/markdown-report-generator.js +549 -0
  116. package/dist/mcp/tools/qe/accessibility/markdown-report-generator.js.map +1 -0
  117. package/dist/mcp/tools/qe/accessibility/remediation-code-generator.d.ts +139 -0
  118. package/dist/mcp/tools/qe/accessibility/remediation-code-generator.d.ts.map +1 -0
  119. package/dist/mcp/tools/qe/accessibility/remediation-code-generator.js +1300 -0
  120. package/dist/mcp/tools/qe/accessibility/remediation-code-generator.js.map +1 -0
  121. package/dist/mcp/tools/qe/accessibility/scan-comprehensive.d.ts +138 -0
  122. package/dist/mcp/tools/qe/accessibility/scan-comprehensive.d.ts.map +1 -0
  123. package/dist/mcp/tools/qe/accessibility/scan-comprehensive.js +1326 -0
  124. package/dist/mcp/tools/qe/accessibility/scan-comprehensive.js.map +1 -0
  125. package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.d.ts +50 -0
  126. package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.d.ts.map +1 -0
  127. package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.js +469 -0
  128. package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.js.map +1 -0
  129. package/dist/mcp/tools/qe/accessibility/webvtt-generator.d.ts +193 -0
  130. package/dist/mcp/tools/qe/accessibility/webvtt-generator.d.ts.map +1 -0
  131. package/dist/mcp/tools/qe/accessibility/webvtt-generator.js +511 -0
  132. package/dist/mcp/tools/qe/accessibility/webvtt-generator.js.map +1 -0
  133. package/dist/mcp/tools.d.ts +1 -0
  134. package/dist/mcp/tools.d.ts.map +1 -1
  135. package/dist/mcp/tools.js +61 -0
  136. package/dist/mcp/tools.js.map +1 -1
  137. package/dist/providers/HybridRouter.d.ts +34 -3
  138. package/dist/providers/HybridRouter.d.ts.map +1 -1
  139. package/dist/providers/HybridRouter.js +69 -4
  140. package/dist/providers/HybridRouter.js.map +1 -1
  141. package/dist/providers/LLMProviderFactory.d.ts +68 -1
  142. package/dist/providers/LLMProviderFactory.d.ts.map +1 -1
  143. package/dist/providers/LLMProviderFactory.js +173 -6
  144. package/dist/providers/LLMProviderFactory.js.map +1 -1
  145. package/dist/providers/OpenRouterProvider.d.ts +150 -0
  146. package/dist/providers/OpenRouterProvider.d.ts.map +1 -0
  147. package/dist/providers/OpenRouterProvider.js +545 -0
  148. package/dist/providers/OpenRouterProvider.js.map +1 -0
  149. package/dist/providers/RuvllmProvider.d.ts +130 -16
  150. package/dist/providers/RuvllmProvider.d.ts.map +1 -1
  151. package/dist/providers/RuvllmProvider.js +399 -83
  152. package/dist/providers/RuvllmProvider.js.map +1 -1
  153. package/dist/providers/index.d.ts +33 -4
  154. package/dist/providers/index.d.ts.map +1 -1
  155. package/dist/providers/index.js +72 -21
  156. package/dist/providers/index.js.map +1 -1
  157. package/dist/telemetry/instrumentation/agent.d.ts +1 -1
  158. package/dist/telemetry/instrumentation/agent.js +1 -1
  159. package/dist/telemetry/instrumentation/index.d.ts +1 -1
  160. package/dist/telemetry/instrumentation/index.js +1 -1
  161. package/dist/types/index.d.ts +2 -1
  162. package/dist/types/index.d.ts.map +1 -1
  163. package/dist/types/index.js +2 -0
  164. package/dist/types/index.js.map +1 -1
  165. package/dist/types/ruvllm.d.ts +97 -0
  166. package/dist/types/ruvllm.d.ts.map +1 -0
  167. package/dist/types/ruvllm.js +46 -0
  168. package/dist/types/ruvllm.js.map +1 -0
  169. package/dist/utils/ruvllm-loader.d.ts +94 -0
  170. package/dist/utils/ruvllm-loader.d.ts.map +1 -0
  171. package/dist/utils/ruvllm-loader.js +87 -0
  172. package/dist/utils/ruvllm-loader.js.map +1 -0
  173. package/docs/reference/agents.md +36 -1
  174. package/package.json +4 -2
@@ -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":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * SONA Integration for QE Agents
3
+ *
4
+ * Provides easy-to-use factory functions and utilities for integrating
5
+ * SONA (Self-Organizing Neural Architecture) learning into QE agents.
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * import { createSONAEnabledAgent, withSONALearning } from './agents/SONAIntegration';
10
+ *
11
+ * // Create a new SONA-enabled agent
12
+ * const agent = await createSONAEnabledAgent('test-generator', {
13
+ * enableSONA: true,
14
+ * enableFeedbackLoop: true,
15
+ * });
16
+ *
17
+ * // Or enhance an existing agent with SONA
18
+ * const enhancedAgent = withSONALearning(existingAgent);
19
+ * ```
20
+ *
21
+ * @module agents/SONAIntegration
22
+ * @version 1.0.0
23
+ */
24
+ import { SONALearningStrategy, type SONALearningConfig } from '../core/strategies/SONALearningStrategy';
25
+ import { SONAFeedbackLoop, type FeedbackLoopConfig, type FeedbackEvent } from '../learning/SONAFeedbackLoop';
26
+ import type { AgentLearningStrategy, LearnedPattern } from '../core/strategies';
27
+ /**
28
+ * SONA integration configuration
29
+ */
30
+ export interface SONAIntegrationConfig {
31
+ /** Enable SONA adaptive learning */
32
+ enableSONA?: boolean;
33
+ /** Enable continuous feedback loop */
34
+ enableFeedbackLoop?: boolean;
35
+ /** MicroLoRA rank (1-2 for instant adaptation) */
36
+ microLoraRank?: number;
37
+ /** BaseLoRA rank (4-16 for long-term learning) */
38
+ baseLoraRank?: number;
39
+ /** Consolidation interval (default: 100 tasks) */
40
+ consolidationInterval?: number;
41
+ /** Maximum patterns to store */
42
+ maxPatterns?: number;
43
+ /** Feedback loop configuration */
44
+ feedbackConfig?: FeedbackLoopConfig;
45
+ }
46
+ /**
47
+ * SONA-enabled agent context
48
+ */
49
+ export interface SONAAgentContext {
50
+ /** Learning strategy */
51
+ strategy: SONALearningStrategy;
52
+ /** Feedback loop (if enabled) */
53
+ feedbackLoop?: SONAFeedbackLoop;
54
+ /** Record execution and provide feedback */
55
+ recordExecution: (event: FeedbackEvent) => Promise<void>;
56
+ /** Get learning status */
57
+ getStatus: () => ReturnType<SONALearningStrategy['getStatus']>;
58
+ /** Get metrics - returns SONAMetrics via Promise */
59
+ getMetrics: () => ReturnType<SONALearningStrategy['getMetrics']>;
60
+ /** Train the model - returns TrainingResult via Promise */
61
+ train: (iterations?: number) => ReturnType<SONALearningStrategy['train']>;
62
+ /** Store a pattern */
63
+ storePattern: (pattern: LearnedPattern) => Promise<void>;
64
+ /** Find similar patterns */
65
+ findSimilar: (embedding: number[], limit?: number) => Promise<LearnedPattern[]>;
66
+ /** Clean up resources */
67
+ shutdown: () => Promise<void>;
68
+ }
69
+ /**
70
+ * Create a SONA-enabled agent context
71
+ *
72
+ * This creates all the necessary SONA components and wires them together.
73
+ * The returned context provides a simple API for agents to use SONA.
74
+ */
75
+ export declare function createSONAContext(config?: SONAIntegrationConfig): Promise<SONAAgentContext>;
76
+ /**
77
+ * Decorator/wrapper to add SONA learning to any agent
78
+ *
79
+ * This can be used to enhance existing agents with SONA capabilities
80
+ * without modifying their implementation.
81
+ */
82
+ export declare function withSONALearning<T extends {
83
+ id: string;
84
+ type: string;
85
+ }>(agent: T, config?: SONAIntegrationConfig): T & {
86
+ sonaContext: SONAAgentContext | null;
87
+ initSONA: () => Promise<void>;
88
+ };
89
+ /**
90
+ * Check if SONA components are available
91
+ */
92
+ export declare function isSONAAvailable(): Promise<{
93
+ available: boolean;
94
+ ruvllmAvailable: boolean;
95
+ reason?: string;
96
+ }>;
97
+ /**
98
+ * Get recommended SONA configuration based on environment
99
+ */
100
+ export declare function getRecommendedConfig(): Promise<SONAIntegrationConfig>;
101
+ /**
102
+ * Quick start helper - creates a fully configured SONA context with defaults
103
+ */
104
+ export declare function quickStartSONA(): Promise<SONAAgentContext>;
105
+ /**
106
+ * Export strategy factory for use in agent configuration
107
+ */
108
+ export declare function createLearningStrategyFactory(config?: SONALearningConfig): () => AgentLearningStrategy;
109
+ //# sourceMappingURL=SONAIntegration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SONAIntegration.d.ts","sourceRoot":"","sources":["../../src/agents/SONAIntegration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EACL,oBAAoB,EAEpB,KAAK,kBAAkB,EACxB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,gBAAgB,EAEhB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIhF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB;IACxB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,iCAAiC;IACjC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,4CAA4C;IAC5C,eAAe,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,0BAA0B;IAC1B,SAAS,EAAE,MAAM,UAAU,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/D,oDAAoD;IACpD,UAAU,EAAE,MAAM,UAAU,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC;IACjE,2DAA2D;IAC3D,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,sBAAsB;IACtB,YAAY,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,4BAA4B;IAC5B,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAChF,yBAAyB;IACzB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAID;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,GAAE,qBAA0B,GACjC,OAAO,CAAC,gBAAgB,CAAC,CA0E3B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACrE,KAAK,EAAE,CAAC,EACR,MAAM,GAAE,qBAA0B,GACjC,CAAC,GAAG;IAAE,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAc7E;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,CAUD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAuB3E;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAGhE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,GAAE,kBAAuB,GAC9B,MAAM,qBAAqB,CAE7B"}