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.
Files changed (326) 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 +133 -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/BaseAgent.d.ts +56 -49
  11. package/dist/agents/BaseAgent.d.ts.map +1 -1
  12. package/dist/agents/BaseAgent.js +208 -604
  13. package/dist/agents/BaseAgent.js.map +1 -1
  14. package/dist/agents/FlakyTestHunterAgent.d.ts +2 -2
  15. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  16. package/dist/agents/FlakyTestHunterAgent.js +8 -104
  17. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  18. package/dist/agents/SONAIntegration.d.ts +109 -0
  19. package/dist/agents/SONAIntegration.d.ts.map +1 -0
  20. package/dist/agents/SONAIntegration.js +167 -0
  21. package/dist/agents/SONAIntegration.js.map +1 -0
  22. package/dist/agents/TestExecutorAgent.d.ts +1 -1
  23. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  24. package/dist/agents/TestExecutorAgent.js +4 -46
  25. package/dist/agents/TestExecutorAgent.js.map +1 -1
  26. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  27. package/dist/agents/TestGeneratorAgent.js +15 -35
  28. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  29. package/dist/agents/adapters/CoordinatorAdapter.d.ts +47 -0
  30. package/dist/agents/adapters/CoordinatorAdapter.d.ts.map +1 -0
  31. package/dist/agents/adapters/CoordinatorAdapter.js +266 -0
  32. package/dist/agents/adapters/CoordinatorAdapter.js.map +1 -0
  33. package/dist/agents/adapters/LearningEngineAdapter.d.ts +45 -0
  34. package/dist/agents/adapters/LearningEngineAdapter.d.ts.map +1 -0
  35. package/dist/agents/adapters/LearningEngineAdapter.js +279 -0
  36. package/dist/agents/adapters/LearningEngineAdapter.js.map +1 -0
  37. package/dist/agents/adapters/LifecycleManagerAdapter.d.ts +45 -0
  38. package/dist/agents/adapters/LifecycleManagerAdapter.d.ts.map +1 -0
  39. package/dist/agents/adapters/LifecycleManagerAdapter.js +128 -0
  40. package/dist/agents/adapters/LifecycleManagerAdapter.js.map +1 -0
  41. package/dist/agents/adapters/MemoryServiceAdapter.d.ts +96 -0
  42. package/dist/agents/adapters/MemoryServiceAdapter.d.ts.map +1 -0
  43. package/dist/agents/adapters/MemoryServiceAdapter.js +266 -0
  44. package/dist/agents/adapters/MemoryServiceAdapter.js.map +1 -0
  45. package/dist/agents/adapters/index.d.ts +14 -0
  46. package/dist/agents/adapters/index.d.ts.map +1 -0
  47. package/dist/agents/adapters/index.js +25 -0
  48. package/dist/agents/adapters/index.js.map +1 -0
  49. package/dist/agents/index.d.ts +3 -0
  50. package/dist/agents/index.d.ts.map +1 -1
  51. package/dist/agents/index.js +93 -2
  52. package/dist/agents/index.js.map +1 -1
  53. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
  54. package/dist/agents/lifecycle/AgentLifecycleManager.js +12 -6
  55. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
  56. package/dist/cli/init/agents.js +1 -1
  57. package/dist/cli/init/claude-config.js +2 -2
  58. package/dist/cli/init/database-init.js +1 -1
  59. package/dist/core/cache/BinaryCacheBuilder.d.ts +84 -0
  60. package/dist/core/cache/BinaryCacheBuilder.d.ts.map +1 -0
  61. package/dist/core/cache/BinaryCacheBuilder.js +225 -0
  62. package/dist/core/cache/BinaryCacheBuilder.js.map +1 -0
  63. package/dist/core/cache/BinaryCacheImpl.d.ts +161 -0
  64. package/dist/core/cache/BinaryCacheImpl.d.ts.map +1 -0
  65. package/dist/core/cache/BinaryCacheImpl.js +685 -0
  66. package/dist/core/cache/BinaryCacheImpl.js.map +1 -0
  67. package/dist/core/cache/BinaryCacheManager.d.ts +142 -0
  68. package/dist/core/cache/BinaryCacheManager.d.ts.map +1 -0
  69. package/dist/core/cache/BinaryCacheManager.js +354 -0
  70. package/dist/core/cache/BinaryCacheManager.js.map +1 -0
  71. package/dist/core/cache/BinaryCacheReader.d.ts +129 -0
  72. package/dist/core/cache/BinaryCacheReader.d.ts.map +1 -0
  73. package/dist/core/cache/BinaryCacheReader.js +243 -0
  74. package/dist/core/cache/BinaryCacheReader.js.map +1 -0
  75. package/dist/core/cache/BinaryMetadataCache.d.ts +777 -0
  76. package/dist/core/cache/BinaryMetadataCache.d.ts.map +1 -0
  77. package/dist/core/cache/BinaryMetadataCache.js +204 -0
  78. package/dist/core/cache/BinaryMetadataCache.js.map +1 -0
  79. package/dist/core/cache/CacheInvalidator.d.ts +103 -0
  80. package/dist/core/cache/CacheInvalidator.d.ts.map +1 -0
  81. package/dist/core/cache/CacheInvalidator.js +152 -0
  82. package/dist/core/cache/CacheInvalidator.js.map +1 -0
  83. package/dist/core/cache/CacheValidator.d.ts +69 -0
  84. package/dist/core/cache/CacheValidator.d.ts.map +1 -0
  85. package/dist/core/cache/CacheValidator.js +189 -0
  86. package/dist/core/cache/CacheValidator.js.map +1 -0
  87. package/dist/core/cache/MessagePackSerializer.d.ts +163 -0
  88. package/dist/core/cache/MessagePackSerializer.d.ts.map +1 -0
  89. package/dist/core/cache/MessagePackSerializer.js +274 -0
  90. package/dist/core/cache/MessagePackSerializer.js.map +1 -0
  91. package/dist/core/cache/index.d.ts +59 -0
  92. package/dist/core/cache/index.d.ts.map +1 -0
  93. package/dist/core/cache/index.js +111 -0
  94. package/dist/core/cache/index.js.map +1 -0
  95. package/dist/core/index.d.ts +2 -0
  96. package/dist/core/index.d.ts.map +1 -1
  97. package/dist/core/index.js +18 -0
  98. package/dist/core/index.js.map +1 -1
  99. package/dist/core/memory/AgentDBService.d.ts +30 -4
  100. package/dist/core/memory/AgentDBService.d.ts.map +1 -1
  101. package/dist/core/memory/AgentDBService.js +122 -12
  102. package/dist/core/memory/AgentDBService.js.map +1 -1
  103. package/dist/core/memory/CachedHNSWVectorMemory.d.ts +153 -0
  104. package/dist/core/memory/CachedHNSWVectorMemory.d.ts.map +1 -0
  105. package/dist/core/memory/CachedHNSWVectorMemory.js +329 -0
  106. package/dist/core/memory/CachedHNSWVectorMemory.js.map +1 -0
  107. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  108. package/dist/core/memory/PatternStoreFactory.d.ts +28 -0
  109. package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -1
  110. package/dist/core/memory/PatternStoreFactory.js +68 -3
  111. package/dist/core/memory/PatternStoreFactory.js.map +1 -1
  112. package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
  113. package/dist/core/memory/RuVectorPatternStore.js +8 -2
  114. package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
  115. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts +50 -0
  116. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts.map +1 -1
  117. package/dist/core/memory/UnifiedMemoryCoordinator.js +206 -0
  118. package/dist/core/memory/UnifiedMemoryCoordinator.js.map +1 -1
  119. package/dist/core/memory/index.d.ts +2 -0
  120. package/dist/core/memory/index.d.ts.map +1 -1
  121. package/dist/core/memory/index.js +8 -1
  122. package/dist/core/memory/index.js.map +1 -1
  123. package/dist/core/optimization/RecursiveOptimizer.d.ts +233 -0
  124. package/dist/core/optimization/RecursiveOptimizer.d.ts.map +1 -0
  125. package/dist/core/optimization/RecursiveOptimizer.js +509 -0
  126. package/dist/core/optimization/RecursiveOptimizer.js.map +1 -0
  127. package/dist/core/platform/FileOperations.d.ts +124 -0
  128. package/dist/core/platform/FileOperations.d.ts.map +1 -0
  129. package/dist/core/platform/FileOperations.js +371 -0
  130. package/dist/core/platform/FileOperations.js.map +1 -0
  131. package/dist/core/platform/PlatformDetector.d.ts +53 -0
  132. package/dist/core/platform/PlatformDetector.d.ts.map +1 -0
  133. package/dist/core/platform/PlatformDetector.js +251 -0
  134. package/dist/core/platform/PlatformDetector.js.map +1 -0
  135. package/dist/core/platform/index.d.ts +12 -0
  136. package/dist/core/platform/index.d.ts.map +1 -0
  137. package/dist/core/platform/index.js +28 -0
  138. package/dist/core/platform/index.js.map +1 -0
  139. package/dist/core/strategies/AcceleratedLearningStrategy.d.ts +74 -0
  140. package/dist/core/strategies/AcceleratedLearningStrategy.d.ts.map +1 -0
  141. package/dist/core/strategies/AcceleratedLearningStrategy.js +200 -0
  142. package/dist/core/strategies/AcceleratedLearningStrategy.js.map +1 -0
  143. package/dist/core/strategies/AgentCoordinationStrategy.d.ts +157 -0
  144. package/dist/core/strategies/AgentCoordinationStrategy.d.ts.map +1 -0
  145. package/dist/core/strategies/AgentCoordinationStrategy.js +12 -0
  146. package/dist/core/strategies/AgentCoordinationStrategy.js.map +1 -0
  147. package/dist/core/strategies/AgentLearningStrategy.d.ts +200 -0
  148. package/dist/core/strategies/AgentLearningStrategy.d.ts.map +1 -0
  149. package/dist/core/strategies/AgentLearningStrategy.js +13 -0
  150. package/dist/core/strategies/AgentLearningStrategy.js.map +1 -0
  151. package/dist/core/strategies/AgentLifecycleStrategy.d.ts +116 -0
  152. package/dist/core/strategies/AgentLifecycleStrategy.d.ts.map +1 -0
  153. package/dist/core/strategies/AgentLifecycleStrategy.js +12 -0
  154. package/dist/core/strategies/AgentLifecycleStrategy.js.map +1 -0
  155. package/dist/core/strategies/AgentMemoryStrategy.d.ts +154 -0
  156. package/dist/core/strategies/AgentMemoryStrategy.d.ts.map +1 -0
  157. package/dist/core/strategies/AgentMemoryStrategy.js +13 -0
  158. package/dist/core/strategies/AgentMemoryStrategy.js.map +1 -0
  159. package/dist/core/strategies/DefaultCoordinationStrategy.d.ts +105 -0
  160. package/dist/core/strategies/DefaultCoordinationStrategy.d.ts.map +1 -0
  161. package/dist/core/strategies/DefaultCoordinationStrategy.js +332 -0
  162. package/dist/core/strategies/DefaultCoordinationStrategy.js.map +1 -0
  163. package/dist/core/strategies/DefaultLearningStrategy.d.ts +120 -0
  164. package/dist/core/strategies/DefaultLearningStrategy.d.ts.map +1 -0
  165. package/dist/core/strategies/DefaultLearningStrategy.js +365 -0
  166. package/dist/core/strategies/DefaultLearningStrategy.js.map +1 -0
  167. package/dist/core/strategies/DefaultLifecycleStrategy.d.ts +129 -0
  168. package/dist/core/strategies/DefaultLifecycleStrategy.d.ts.map +1 -0
  169. package/dist/core/strategies/DefaultLifecycleStrategy.js +297 -0
  170. package/dist/core/strategies/DefaultLifecycleStrategy.js.map +1 -0
  171. package/dist/core/strategies/DefaultMemoryStrategy.d.ts +91 -0
  172. package/dist/core/strategies/DefaultMemoryStrategy.d.ts.map +1 -0
  173. package/dist/core/strategies/DefaultMemoryStrategy.js +257 -0
  174. package/dist/core/strategies/DefaultMemoryStrategy.js.map +1 -0
  175. package/dist/core/strategies/DistributedMemoryStrategy.d.ts +85 -0
  176. package/dist/core/strategies/DistributedMemoryStrategy.d.ts.map +1 -0
  177. package/dist/core/strategies/DistributedMemoryStrategy.js +126 -0
  178. package/dist/core/strategies/DistributedMemoryStrategy.js.map +1 -0
  179. package/dist/core/strategies/SONALearningStrategy.d.ts +115 -0
  180. package/dist/core/strategies/SONALearningStrategy.d.ts.map +1 -0
  181. package/dist/core/strategies/SONALearningStrategy.js +656 -0
  182. package/dist/core/strategies/SONALearningStrategy.js.map +1 -0
  183. package/dist/core/strategies/TRMLearningStrategy.d.ts +162 -0
  184. package/dist/core/strategies/TRMLearningStrategy.d.ts.map +1 -0
  185. package/dist/core/strategies/TRMLearningStrategy.js +670 -0
  186. package/dist/core/strategies/TRMLearningStrategy.js.map +1 -0
  187. package/dist/core/strategies/index.d.ts +104 -0
  188. package/dist/core/strategies/index.d.ts.map +1 -0
  189. package/dist/core/strategies/index.js +68 -0
  190. package/dist/core/strategies/index.js.map +1 -0
  191. package/dist/learning/PerformanceOptimizer.js +2 -2
  192. package/dist/learning/PerformanceOptimizer.js.map +1 -1
  193. package/dist/learning/SONAFeedbackLoop.d.ts +168 -0
  194. package/dist/learning/SONAFeedbackLoop.d.ts.map +1 -0
  195. package/dist/learning/SONAFeedbackLoop.js +344 -0
  196. package/dist/learning/SONAFeedbackLoop.js.map +1 -0
  197. package/dist/learning/baselines/BaselineCollector.d.ts +1 -1
  198. package/dist/learning/baselines/BaselineCollector.js +1 -1
  199. package/dist/learning/baselines/StandardTaskSuite.d.ts +1 -1
  200. package/dist/learning/baselines/StandardTaskSuite.js +1 -1
  201. package/dist/learning/index.d.ts +2 -0
  202. package/dist/learning/index.d.ts.map +1 -1
  203. package/dist/learning/index.js +6 -1
  204. package/dist/learning/index.js.map +1 -1
  205. package/dist/mcp/handlers/base-handler.d.ts +28 -1
  206. package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
  207. package/dist/mcp/handlers/base-handler.js +41 -0
  208. package/dist/mcp/handlers/base-handler.js.map +1 -1
  209. package/dist/mcp/server-instructions.d.ts +1 -1
  210. package/dist/mcp/server-instructions.js +1 -1
  211. package/dist/mcp/server.d.ts.map +1 -1
  212. package/dist/mcp/server.js +23 -16
  213. package/dist/mcp/server.js.map +1 -1
  214. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  215. package/dist/mcp/services/AgentRegistry.js +6 -1
  216. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  217. package/dist/mcp/tools/qe/accessibility/accname-computation.d.ts +114 -0
  218. package/dist/mcp/tools/qe/accessibility/accname-computation.d.ts.map +1 -0
  219. package/dist/mcp/tools/qe/accessibility/accname-computation.js +566 -0
  220. package/dist/mcp/tools/qe/accessibility/accname-computation.js.map +1 -0
  221. package/dist/mcp/tools/qe/accessibility/apg-patterns.d.ts +103 -0
  222. package/dist/mcp/tools/qe/accessibility/apg-patterns.d.ts.map +1 -0
  223. package/dist/mcp/tools/qe/accessibility/apg-patterns.js +1028 -0
  224. package/dist/mcp/tools/qe/accessibility/apg-patterns.js.map +1 -0
  225. package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.d.ts +48 -0
  226. package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.d.ts.map +1 -0
  227. package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.js +565 -0
  228. package/dist/mcp/tools/qe/accessibility/en-301-549-mapping.js.map +1 -0
  229. package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.d.ts +117 -0
  230. package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.d.ts.map +1 -0
  231. package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.js +571 -0
  232. package/dist/mcp/tools/qe/accessibility/eu-accessibility-act.js.map +1 -0
  233. package/dist/mcp/tools/qe/accessibility/html-report-generator.d.ts +23 -0
  234. package/dist/mcp/tools/qe/accessibility/html-report-generator.d.ts.map +1 -0
  235. package/dist/mcp/tools/qe/accessibility/html-report-generator.js +1152 -0
  236. package/dist/mcp/tools/qe/accessibility/html-report-generator.js.map +1 -0
  237. package/dist/mcp/tools/qe/accessibility/index.d.ts +22 -0
  238. package/dist/mcp/tools/qe/accessibility/index.d.ts.map +1 -0
  239. package/dist/mcp/tools/qe/accessibility/index.js +38 -0
  240. package/dist/mcp/tools/qe/accessibility/index.js.map +1 -0
  241. package/dist/mcp/tools/qe/accessibility/markdown-report-generator.d.ts +18 -0
  242. package/dist/mcp/tools/qe/accessibility/markdown-report-generator.d.ts.map +1 -0
  243. package/dist/mcp/tools/qe/accessibility/markdown-report-generator.js +549 -0
  244. package/dist/mcp/tools/qe/accessibility/markdown-report-generator.js.map +1 -0
  245. package/dist/mcp/tools/qe/accessibility/remediation-code-generator.d.ts +139 -0
  246. package/dist/mcp/tools/qe/accessibility/remediation-code-generator.d.ts.map +1 -0
  247. package/dist/mcp/tools/qe/accessibility/remediation-code-generator.js +1300 -0
  248. package/dist/mcp/tools/qe/accessibility/remediation-code-generator.js.map +1 -0
  249. package/dist/mcp/tools/qe/accessibility/scan-comprehensive.d.ts +138 -0
  250. package/dist/mcp/tools/qe/accessibility/scan-comprehensive.d.ts.map +1 -0
  251. package/dist/mcp/tools/qe/accessibility/scan-comprehensive.js +1326 -0
  252. package/dist/mcp/tools/qe/accessibility/scan-comprehensive.js.map +1 -0
  253. package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.d.ts +50 -0
  254. package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.d.ts.map +1 -0
  255. package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.js +469 -0
  256. package/dist/mcp/tools/qe/accessibility/video-vision-analyzer.js.map +1 -0
  257. package/dist/mcp/tools/qe/accessibility/webvtt-generator.d.ts +193 -0
  258. package/dist/mcp/tools/qe/accessibility/webvtt-generator.d.ts.map +1 -0
  259. package/dist/mcp/tools/qe/accessibility/webvtt-generator.js +511 -0
  260. package/dist/mcp/tools/qe/accessibility/webvtt-generator.js.map +1 -0
  261. package/dist/mcp/tools.d.ts +1 -0
  262. package/dist/mcp/tools.d.ts.map +1 -1
  263. package/dist/mcp/tools.js +61 -0
  264. package/dist/mcp/tools.js.map +1 -1
  265. package/dist/output/AIActionSuggester.d.ts +98 -0
  266. package/dist/output/AIActionSuggester.d.ts.map +1 -0
  267. package/dist/output/AIActionSuggester.js +499 -0
  268. package/dist/output/AIActionSuggester.js.map +1 -0
  269. package/dist/output/CLIOutputHelper.d.ts +169 -0
  270. package/dist/output/CLIOutputHelper.d.ts.map +1 -0
  271. package/dist/output/CLIOutputHelper.js +320 -0
  272. package/dist/output/CLIOutputHelper.js.map +1 -0
  273. package/dist/output/OutputFormatter.d.ts +764 -0
  274. package/dist/output/OutputFormatter.d.ts.map +1 -0
  275. package/dist/output/OutputFormatter.js +125 -0
  276. package/dist/output/OutputFormatter.js.map +1 -0
  277. package/dist/output/OutputFormatterImpl.d.ts +131 -0
  278. package/dist/output/OutputFormatterImpl.d.ts.map +1 -0
  279. package/dist/output/OutputFormatterImpl.js +556 -0
  280. package/dist/output/OutputFormatterImpl.js.map +1 -0
  281. package/dist/output/examples.d.ts +38 -0
  282. package/dist/output/examples.d.ts.map +1 -0
  283. package/dist/output/examples.js +503 -0
  284. package/dist/output/examples.js.map +1 -0
  285. package/dist/output/index.d.ts +16 -0
  286. package/dist/output/index.d.ts.map +1 -0
  287. package/dist/output/index.js +58 -0
  288. package/dist/output/index.js.map +1 -0
  289. package/dist/providers/HybridRouter.d.ts +34 -3
  290. package/dist/providers/HybridRouter.d.ts.map +1 -1
  291. package/dist/providers/HybridRouter.js +69 -4
  292. package/dist/providers/HybridRouter.js.map +1 -1
  293. package/dist/providers/LLMProviderFactory.d.ts +68 -1
  294. package/dist/providers/LLMProviderFactory.d.ts.map +1 -1
  295. package/dist/providers/LLMProviderFactory.js +173 -6
  296. package/dist/providers/LLMProviderFactory.js.map +1 -1
  297. package/dist/providers/OpenRouterProvider.d.ts +150 -0
  298. package/dist/providers/OpenRouterProvider.d.ts.map +1 -0
  299. package/dist/providers/OpenRouterProvider.js +545 -0
  300. package/dist/providers/OpenRouterProvider.js.map +1 -0
  301. package/dist/providers/RuvllmProvider.d.ts +130 -16
  302. package/dist/providers/RuvllmProvider.d.ts.map +1 -1
  303. package/dist/providers/RuvllmProvider.js +399 -83
  304. package/dist/providers/RuvllmProvider.js.map +1 -1
  305. package/dist/providers/index.d.ts +33 -4
  306. package/dist/providers/index.d.ts.map +1 -1
  307. package/dist/providers/index.js +72 -21
  308. package/dist/providers/index.js.map +1 -1
  309. package/dist/telemetry/instrumentation/agent.d.ts +1 -1
  310. package/dist/telemetry/instrumentation/agent.js +1 -1
  311. package/dist/telemetry/instrumentation/index.d.ts +1 -1
  312. package/dist/telemetry/instrumentation/index.js +1 -1
  313. package/dist/types/index.d.ts +2 -1
  314. package/dist/types/index.d.ts.map +1 -1
  315. package/dist/types/index.js +2 -0
  316. package/dist/types/index.js.map +1 -1
  317. package/dist/types/ruvllm.d.ts +97 -0
  318. package/dist/types/ruvllm.d.ts.map +1 -0
  319. package/dist/types/ruvllm.js +46 -0
  320. package/dist/types/ruvllm.js.map +1 -0
  321. package/dist/utils/ruvllm-loader.d.ts +94 -0
  322. package/dist/utils/ruvllm-loader.d.ts.map +1 -0
  323. package/dist/utils/ruvllm-loader.js +87 -0
  324. package/dist/utils/ruvllm-loader.js.map +1 -0
  325. package/docs/reference/agents.md +36 -1
  326. package/package.json +7 -2
@@ -0,0 +1,566 @@
1
+ "use strict";
2
+ /**
3
+ * Accessible Name and Description Computation (AccName)
4
+ *
5
+ * Implementation of W3C Accessible Name and Description Computation 1.2
6
+ * Version: Based on W3C Recommendation (2023)
7
+ *
8
+ * Purpose: Compute accessible names and descriptions for elements as perceived by assistive technologies
9
+ * Reference: https://www.w3.org/TR/accname-1.2/
10
+ *
11
+ * WCAG Success Criteria:
12
+ * - 4.1.2 Name, Role, Value - Level A
13
+ * - 2.4.6 Headings and Labels - Level AA
14
+ * - 3.3.2 Labels or Instructions - Level A
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ACCNAME_EXAMPLES = void 0;
18
+ exports.computeAccessibleName = computeAccessibleName;
19
+ exports.generateAccessibleNameRecommendation = generateAccessibleNameRecommendation;
20
+ exports.visualizeAccNameComputation = visualizeAccNameComputation;
21
+ /**
22
+ * Compute accessible name for an element
23
+ *
24
+ * Implements the W3C AccName algorithm
25
+ */
26
+ function computeAccessibleName(element, options = {}) {
27
+ const trace = [];
28
+ const allSources = [];
29
+ if (options.includeTrace) {
30
+ trace.push(`Starting AccName computation for <${element.tagName}${element.role ? ` role="${element.role}"` : ''}>`);
31
+ }
32
+ let accessibleName = '';
33
+ let source = null;
34
+ // Step 1: Check aria-labelledby (highest priority)
35
+ const ariaLabelledBy = element.attributes['aria-labelledby'];
36
+ if (ariaLabelledBy) {
37
+ trace.push(`Found aria-labelledby="${ariaLabelledBy}"`);
38
+ // In real implementation, would fetch referenced element's text
39
+ // For this implementation, we'll note it exists
40
+ const labelledBySource = {
41
+ type: 'aria-labelledby',
42
+ value: `[Referenced element: ${ariaLabelledBy}]`,
43
+ priority: 1,
44
+ recommended: true,
45
+ details: 'Highest priority - references visible label element(s)'
46
+ };
47
+ allSources.push(labelledBySource);
48
+ if (!source) {
49
+ source = labelledBySource;
50
+ accessibleName = labelledBySource.value;
51
+ trace.push(`✓ Using aria-labelledby (priority 1)`);
52
+ }
53
+ }
54
+ // Step 2: Check aria-label
55
+ const ariaLabel = element.attributes['aria-label'];
56
+ if (ariaLabel) {
57
+ trace.push(`Found aria-label="${ariaLabel}"`);
58
+ const ariaLabelSource = {
59
+ type: 'aria-label',
60
+ value: ariaLabel,
61
+ priority: 2,
62
+ recommended: true,
63
+ details: 'Direct text label - good for icon buttons or when visual label inadequate'
64
+ };
65
+ allSources.push(ariaLabelSource);
66
+ if (!source) {
67
+ source = ariaLabelSource;
68
+ accessibleName = ariaLabel;
69
+ trace.push(`✓ Using aria-label (priority 2)`);
70
+ }
71
+ }
72
+ // Step 3: Check for native label (for form inputs)
73
+ const id = element.attributes['id'];
74
+ const nativeLabel = element.attributes['_native-label']; // Placeholder for <label for="id">
75
+ if (id && nativeLabel) {
76
+ trace.push(`Found <label for="${id}"> with text: "${nativeLabel}"`);
77
+ const nativeLabelSource = {
78
+ type: 'native-label',
79
+ value: nativeLabel,
80
+ priority: 3,
81
+ recommended: true,
82
+ details: 'Native HTML label - preferred for form inputs'
83
+ };
84
+ allSources.push(nativeLabelSource);
85
+ if (!source) {
86
+ source = nativeLabelSource;
87
+ accessibleName = nativeLabel;
88
+ trace.push(`✓ Using native <label> (priority 3)`);
89
+ }
90
+ }
91
+ // Step 4: Check native semantics
92
+ const nativeSemantics = getNativeSemanticName(element);
93
+ if (nativeSemantics) {
94
+ trace.push(`Native semantics provide: "${nativeSemantics.value}"`);
95
+ allSources.push(nativeSemantics);
96
+ if (!source) {
97
+ source = nativeSemantics;
98
+ accessibleName = nativeSemantics.value;
99
+ trace.push(`✓ Using native semantics (priority 4)`);
100
+ }
101
+ }
102
+ // Step 5: Check title attribute
103
+ const title = element.attributes['title'];
104
+ if (title) {
105
+ trace.push(`Found title="${title}"`);
106
+ const titleSource = {
107
+ type: 'title',
108
+ value: title,
109
+ priority: 5,
110
+ recommended: false,
111
+ details: 'Title attribute - discouraged as primary name source (not always announced)'
112
+ };
113
+ allSources.push(titleSource);
114
+ if (!source) {
115
+ source = titleSource;
116
+ accessibleName = title;
117
+ trace.push(`⚠ Using title attribute (priority 5) - not recommended as primary source`);
118
+ }
119
+ }
120
+ // Step 6: Check placeholder (for inputs only)
121
+ const placeholder = element.attributes['placeholder'];
122
+ if (placeholder && (element.tagName.toLowerCase() === 'input' || element.tagName.toLowerCase() === 'textarea')) {
123
+ trace.push(`Found placeholder="${placeholder}"`);
124
+ const placeholderSource = {
125
+ type: 'placeholder',
126
+ value: placeholder,
127
+ priority: 6,
128
+ recommended: false,
129
+ details: 'Placeholder - strongly discouraged as accessible name (disappears on focus)'
130
+ };
131
+ allSources.push(placeholderSource);
132
+ if (!source) {
133
+ source = placeholderSource;
134
+ accessibleName = placeholder;
135
+ trace.push(`❌ Using placeholder (priority 6) - NOT RECOMMENDED`);
136
+ }
137
+ }
138
+ // If no source found, accessible name is empty
139
+ if (!source) {
140
+ source = {
141
+ type: 'none',
142
+ value: '',
143
+ priority: 99,
144
+ recommended: false,
145
+ details: 'No accessible name found - CRITICAL ISSUE'
146
+ };
147
+ trace.push(`❌ No accessible name found!`);
148
+ }
149
+ // Compute accessible description
150
+ const accessibleDescription = computeAccessibleDescription(element, trace);
151
+ // Validate and score the accessible name
152
+ const validation = validateAccessibleName(accessibleName, source, element);
153
+ return {
154
+ accessibleName,
155
+ source,
156
+ allSources,
157
+ accessibleDescription,
158
+ sufficient: validation.sufficient,
159
+ quality: validation.quality,
160
+ issues: validation.issues,
161
+ trace: options.includeTrace ? trace : []
162
+ };
163
+ }
164
+ /**
165
+ * Get accessible name from native HTML semantics
166
+ */
167
+ function getNativeSemanticName(element) {
168
+ const tagName = element.tagName.toLowerCase();
169
+ // Image alt text
170
+ if (tagName === 'img') {
171
+ const alt = element.attributes['alt'];
172
+ if (alt !== undefined) {
173
+ return {
174
+ type: 'native-semantics',
175
+ value: alt,
176
+ priority: 4,
177
+ recommended: true,
178
+ details: 'Alt attribute on <img> - required for accessibility'
179
+ };
180
+ }
181
+ }
182
+ // Button or link text content
183
+ if (tagName === 'button' || tagName === 'a') {
184
+ const textContent = element.textContent?.trim();
185
+ if (textContent) {
186
+ return {
187
+ type: 'native-semantics',
188
+ value: textContent,
189
+ priority: 4,
190
+ recommended: true,
191
+ details: 'Text content of interactive element'
192
+ };
193
+ }
194
+ }
195
+ // Input type="submit" or type="button" value
196
+ if (tagName === 'input') {
197
+ const type = element.attributes['type'];
198
+ if (type === 'submit' || type === 'button' || type === 'reset') {
199
+ const value = element.attributes['value'];
200
+ if (value) {
201
+ return {
202
+ type: 'native-semantics',
203
+ value,
204
+ priority: 4,
205
+ recommended: true,
206
+ details: `Value attribute on <input type="${type}">`
207
+ };
208
+ }
209
+ }
210
+ }
211
+ // Area element with alt
212
+ if (tagName === 'area') {
213
+ const alt = element.attributes['alt'];
214
+ if (alt !== undefined) {
215
+ return {
216
+ type: 'native-semantics',
217
+ value: alt,
218
+ priority: 4,
219
+ recommended: true,
220
+ details: 'Alt attribute on <area> (image map)'
221
+ };
222
+ }
223
+ }
224
+ return null;
225
+ }
226
+ /**
227
+ * Compute accessible description
228
+ */
229
+ function computeAccessibleDescription(element, trace) {
230
+ // aria-describedby (highest priority)
231
+ const ariaDescribedBy = element.attributes['aria-describedby'];
232
+ if (ariaDescribedBy) {
233
+ trace.push(`Description: Found aria-describedby="${ariaDescribedBy}"`);
234
+ return `[Referenced element: ${ariaDescribedBy}]`;
235
+ }
236
+ // title attribute (if not used for name)
237
+ const title = element.attributes['title'];
238
+ if (title) {
239
+ trace.push(`Description: Using title="${title}"`);
240
+ return title;
241
+ }
242
+ trace.push(`Description: None found`);
243
+ return undefined;
244
+ }
245
+ /**
246
+ * Validate accessible name quality
247
+ */
248
+ function validateAccessibleName(name, source, element) {
249
+ const issues = [];
250
+ let quality = 100;
251
+ // Check if name exists
252
+ if (!name || name.trim().length === 0) {
253
+ issues.push({
254
+ severity: 'error',
255
+ message: 'No accessible name found',
256
+ recommendation: 'Add aria-label, aria-labelledby, or native label to this element'
257
+ });
258
+ quality = 0;
259
+ return { sufficient: false, quality, issues };
260
+ }
261
+ // Check if using non-recommended source
262
+ if (!source.recommended) {
263
+ if (source.type === 'placeholder') {
264
+ issues.push({
265
+ severity: 'error',
266
+ message: 'Using placeholder as accessible name',
267
+ recommendation: 'Add a proper <label> or aria-label. Placeholder disappears when user starts typing.'
268
+ });
269
+ quality -= 50;
270
+ }
271
+ else if (source.type === 'title') {
272
+ issues.push({
273
+ severity: 'warning',
274
+ message: 'Using title attribute as accessible name',
275
+ recommendation: 'Title is not consistently announced by screen readers. Use aria-label or visible label instead.'
276
+ });
277
+ quality -= 30;
278
+ }
279
+ }
280
+ // Check name length
281
+ if (name.length < 2) {
282
+ issues.push({
283
+ severity: 'warning',
284
+ message: `Accessible name is very short: "${name}"`,
285
+ recommendation: 'Provide more descriptive name for better context'
286
+ });
287
+ quality -= 20;
288
+ }
289
+ if (name.length > 100) {
290
+ issues.push({
291
+ severity: 'warning',
292
+ message: `Accessible name is very long (${name.length} characters)`,
293
+ recommendation: 'Consider using aria-describedby for detailed information, keep name concise'
294
+ });
295
+ quality -= 10;
296
+ }
297
+ // Check for generic names
298
+ const genericNames = ['button', 'link', 'click here', 'read more', 'submit', 'image', 'icon'];
299
+ const nameLower = name.toLowerCase().trim();
300
+ if (genericNames.includes(nameLower)) {
301
+ issues.push({
302
+ severity: 'warning',
303
+ message: `Accessible name is too generic: "${name}"`,
304
+ recommendation: 'Provide specific, descriptive name (e.g., "Submit Contact Form" instead of "Submit")'
305
+ });
306
+ quality -= 25;
307
+ }
308
+ // Check for technical content (IDs, class names)
309
+ if (/^[a-z0-9-_]+$/.test(name) && name.includes('-')) {
310
+ issues.push({
311
+ severity: 'warning',
312
+ message: `Accessible name looks like technical identifier: "${name}"`,
313
+ recommendation: 'Use human-readable text instead of IDs or class names'
314
+ });
315
+ quality -= 30;
316
+ }
317
+ // Element-specific validation
318
+ if (element.tagName.toLowerCase() === 'img' && source.type === 'native-semantics') {
319
+ if (name === '') {
320
+ // Empty alt is valid for decorative images
321
+ issues.push({
322
+ severity: 'info',
323
+ message: 'Image has empty alt attribute (alt="")',
324
+ recommendation: 'This is correct for decorative images. If image conveys information, add descriptive alt text.'
325
+ });
326
+ }
327
+ }
328
+ // Form input specific checks
329
+ if (['input', 'select', 'textarea'].includes(element.tagName.toLowerCase())) {
330
+ if (source.type !== 'native-label' && source.type !== 'aria-labelledby' && source.type !== 'aria-label') {
331
+ issues.push({
332
+ severity: 'error',
333
+ message: 'Form input lacks proper label',
334
+ recommendation: 'Add <label for="inputId"> or aria-label for form inputs'
335
+ });
336
+ quality -= 40;
337
+ }
338
+ }
339
+ // Interactive element checks
340
+ if (['button', 'a'].includes(element.tagName.toLowerCase()) || element.role === 'button' || element.role === 'link') {
341
+ if (!name || name.trim().length === 0) {
342
+ issues.push({
343
+ severity: 'error',
344
+ message: 'Interactive element has no accessible name',
345
+ recommendation: 'Add visible text content or aria-label to describe the action'
346
+ });
347
+ quality = 0;
348
+ }
349
+ }
350
+ const sufficient = quality >= 60 && issues.filter(i => i.severity === 'error').length === 0;
351
+ return {
352
+ sufficient,
353
+ quality: Math.max(0, quality),
354
+ issues
355
+ };
356
+ }
357
+ /**
358
+ * Generate accessible name recommendation
359
+ */
360
+ function generateAccessibleNameRecommendation(computation, element) {
361
+ const tagName = element.tagName.toLowerCase();
362
+ const role = element.role;
363
+ // No accessible name - CRITICAL
364
+ if (!computation.accessibleName || computation.accessibleName.trim().length === 0) {
365
+ if (tagName === 'img') {
366
+ return {
367
+ recommendation: 'Add descriptive alt attribute to image',
368
+ codeExample: `<img src="..." alt="Description of what the image shows">`,
369
+ priority: 'critical'
370
+ };
371
+ }
372
+ if (tagName === 'button' || role === 'button') {
373
+ const context = element.context?.toLowerCase() || '';
374
+ const suggestedLabel = context.includes('close') ? 'Close dialog' :
375
+ context.includes('menu') ? 'Open menu' :
376
+ context.includes('search') ? 'Search' :
377
+ 'Describe button action';
378
+ return {
379
+ recommendation: 'Add accessible name to button',
380
+ codeExample: `<!-- Option 1: Visible text (preferred) -->
381
+ <button type="button">${suggestedLabel}</button>
382
+
383
+ <!-- Option 2: aria-label for icon buttons -->
384
+ <button type="button" aria-label="${suggestedLabel}">
385
+ <svg aria-hidden="true">...</svg>
386
+ </button>`,
387
+ priority: 'critical'
388
+ };
389
+ }
390
+ if (['input', 'select', 'textarea'].includes(tagName)) {
391
+ const type = element.attributes['type'] || 'text';
392
+ return {
393
+ recommendation: 'Add label to form input',
394
+ codeExample: `<!-- Preferred: Visible label -->
395
+ <label for="inputId">Field label:</label>
396
+ <input type="${type}" id="inputId" name="...">
397
+
398
+ <!-- Alternative: aria-label if visible label not possible -->
399
+ <input type="${type}" aria-label="Field label">`,
400
+ priority: 'critical'
401
+ };
402
+ }
403
+ return {
404
+ recommendation: 'Add accessible name via aria-label or aria-labelledby',
405
+ codeExample: `<${tagName} aria-label="Descriptive name">...</${tagName}>`,
406
+ priority: 'critical'
407
+ };
408
+ }
409
+ // Using placeholder as name - HIGH PRIORITY FIX
410
+ if (computation.source.type === 'placeholder') {
411
+ return {
412
+ recommendation: 'Replace placeholder with proper label',
413
+ codeExample: `<!-- WRONG (current) -->
414
+ <input type="text" placeholder="Enter email">
415
+
416
+ <!-- CORRECT -->
417
+ <label for="email">Email address:</label>
418
+ <input type="text" id="email" placeholder="you@example.com">`,
419
+ priority: 'high'
420
+ };
421
+ }
422
+ // Using title as name - MEDIUM PRIORITY
423
+ if (computation.source.type === 'title') {
424
+ return {
425
+ recommendation: 'Replace title with aria-label or visible label',
426
+ codeExample: `<!-- WRONG (current) -->
427
+ <button title="Submit form">→</button>
428
+
429
+ <!-- CORRECT -->
430
+ <button type="button" aria-label="Submit form">→</button>
431
+
432
+ <!-- BETTER: Visible text -->
433
+ <button type="button">Submit Form</button>`,
434
+ priority: 'medium'
435
+ };
436
+ }
437
+ // Name too generic - MEDIUM PRIORITY
438
+ if (computation.quality < 70) {
439
+ return {
440
+ recommendation: 'Make accessible name more descriptive',
441
+ codeExample: `<!-- Current: Generic -->
442
+ <button>Click Here</button>
443
+
444
+ <!-- Better: Specific -->
445
+ <button>Download PDF Report</button>`,
446
+ priority: 'medium'
447
+ };
448
+ }
449
+ return {
450
+ recommendation: 'Accessible name is adequate',
451
+ codeExample: '',
452
+ priority: 'low'
453
+ };
454
+ }
455
+ /**
456
+ * Visualize accessible name computation for debugging
457
+ */
458
+ function visualizeAccNameComputation(computation) {
459
+ let output = '=== Accessible Name Computation ===\n\n';
460
+ output += `Final Name: "${computation.accessibleName}"\n`;
461
+ output += `Quality Score: ${computation.quality}/100\n`;
462
+ output += `Sufficient: ${computation.sufficient ? '✓ Yes' : '✗ No'}\n`;
463
+ output += `Source: ${computation.source.type} (priority ${computation.source.priority})\n`;
464
+ if (computation.accessibleDescription) {
465
+ output += `Description: "${computation.accessibleDescription}"\n`;
466
+ }
467
+ output += '\n--- All Sources (Priority Order) ---\n';
468
+ computation.allSources.forEach(source => {
469
+ const icon = source === computation.source ? '→' : ' ';
470
+ output += `${icon} [${source.priority}] ${source.type}: "${source.value}"\n`;
471
+ output += ` ${source.recommended ? '✓' : '⚠'} ${source.details}\n`;
472
+ });
473
+ if (computation.issues.length > 0) {
474
+ output += '\n--- Issues ---\n';
475
+ computation.issues.forEach(issue => {
476
+ const icon = issue.severity === 'error' ? '❌' :
477
+ issue.severity === 'warning' ? '⚠️' : 'ℹ️';
478
+ output += `${icon} ${issue.message}\n`;
479
+ output += ` Recommendation: ${issue.recommendation}\n`;
480
+ });
481
+ }
482
+ if (computation.trace.length > 0) {
483
+ output += '\n--- Computation Trace ---\n';
484
+ computation.trace.forEach(step => {
485
+ output += `${step}\n`;
486
+ });
487
+ }
488
+ return output;
489
+ }
490
+ /**
491
+ * Example usage and test cases
492
+ */
493
+ exports.ACCNAME_EXAMPLES = {
494
+ /**
495
+ * Perfect accessible name (visible label)
496
+ */
497
+ perfectButton: () => {
498
+ return computeAccessibleName({
499
+ tagName: 'button',
500
+ attributes: {},
501
+ textContent: 'Submit Contact Form'
502
+ }, { includeTrace: true });
503
+ },
504
+ /**
505
+ * Icon button with aria-label
506
+ */
507
+ iconButton: () => {
508
+ return computeAccessibleName({
509
+ tagName: 'button',
510
+ role: 'button',
511
+ attributes: {
512
+ 'aria-label': 'Close navigation menu'
513
+ },
514
+ textContent: '' // No visible text
515
+ }, { includeTrace: true });
516
+ },
517
+ /**
518
+ * Form input with label
519
+ */
520
+ formInput: () => {
521
+ return computeAccessibleName({
522
+ tagName: 'input',
523
+ attributes: {
524
+ 'type': 'email',
525
+ 'id': 'user-email',
526
+ '_native-label': 'Email Address' // Simulated <label for="user-email">
527
+ }
528
+ }, { includeTrace: true });
529
+ },
530
+ /**
531
+ * WRONG: Using placeholder as name
532
+ */
533
+ wrongPlaceholder: () => {
534
+ return computeAccessibleName({
535
+ tagName: 'input',
536
+ attributes: {
537
+ 'type': 'text',
538
+ 'placeholder': 'Enter your name'
539
+ // Missing: aria-label or <label>
540
+ }
541
+ }, { includeTrace: true });
542
+ },
543
+ /**
544
+ * Image with alt text
545
+ */
546
+ imageWithAlt: () => {
547
+ return computeAccessibleName({
548
+ tagName: 'img',
549
+ attributes: {
550
+ 'src': 'logo.png',
551
+ 'alt': 'Company Logo'
552
+ }
553
+ }, { includeTrace: true });
554
+ },
555
+ /**
556
+ * Missing accessible name
557
+ */
558
+ missingName: () => {
559
+ return computeAccessibleName({
560
+ tagName: 'button',
561
+ attributes: {},
562
+ textContent: '' // Empty button
563
+ }, { includeTrace: true });
564
+ }
565
+ };
566
+ //# sourceMappingURL=accname-computation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accname-computation.js","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/accessibility/accname-computation.ts"],"names":[],"mappings":"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"}