agentic-qe 2.4.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/.claude/agents/qe-a11y-ally.md +855 -0
  2. package/.claude/agents/qx-partner.md +120 -4
  3. package/.claude/skills/testability-scoring/SKILL.md +107 -6
  4. package/CHANGELOG.md +135 -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 +1298 -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 +5 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-comprehensive.js","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/accessibility/scan-comprehensive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { Page } from 'playwright';
2
+ export interface VideoFrame {
3
+ timestamp: number;
4
+ dataUrl: string;
5
+ }
6
+ export interface SceneDescription {
7
+ timestamp: number;
8
+ description: string;
9
+ duration: number;
10
+ }
11
+ export interface VideoAnalysisResult {
12
+ overallDescription: string;
13
+ sceneDescriptions: SceneDescription[];
14
+ webVTT: string;
15
+ extendedDescription: string;
16
+ }
17
+ export type VisionProvider = 'openai' | 'anthropic' | 'ollama' | 'moondream' | 'context' | 'auto';
18
+ export interface VisionOptions {
19
+ provider?: VisionProvider;
20
+ openaiApiKey?: string;
21
+ anthropicApiKey?: string;
22
+ ollamaBaseUrl?: string;
23
+ ollamaModel?: string;
24
+ moondreamBaseUrl?: string;
25
+ videoContext?: VideoContext;
26
+ enableCascade?: boolean;
27
+ }
28
+ export interface VideoContext {
29
+ pageTitle?: string;
30
+ videoTitle?: string;
31
+ videoSrc?: string;
32
+ posterSrc?: string;
33
+ nearbyHeadings?: string[];
34
+ nearbyText?: string[];
35
+ pageUrl?: string;
36
+ duration?: number;
37
+ }
38
+ /**
39
+ * Extract frames from video element using browser canvas API
40
+ */
41
+ export declare function extractVideoFrames(page: Page, videoSelector: string, options?: {
42
+ maxFrames?: number;
43
+ intervalSeconds?: number;
44
+ }): Promise<VideoFrame[]>;
45
+ /**
46
+ * Main function: Analyze video frames using configured vision provider
47
+ * Defaults to FREE Ollama (no API key required)
48
+ */
49
+ export declare function analyzeVideoWithVision(frames: VideoFrame[], options?: VisionOptions): Promise<VideoAnalysisResult>;
50
+ //# sourceMappingURL=video-vision-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-vision-analyzer.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/accessibility/video-vision-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;AAElG,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB,GACL,OAAO,CAAC,UAAU,EAAE,CAAC,CA0DvB;AAycD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CAoB9B"}
@@ -0,0 +1,469 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.extractVideoFrames = extractVideoFrames;
7
+ exports.analyzeVideoWithVision = analyzeVideoWithVision;
8
+ const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
9
+ /**
10
+ * Extract frames from video element using browser canvas API
11
+ */
12
+ async function extractVideoFrames(page, videoSelector, options = {}) {
13
+ const { maxFrames = 6, intervalSeconds = 5 } = options;
14
+ const frames = await page.evaluate(async ({ selector, interval, max }) => {
15
+ const video = document.querySelector(selector);
16
+ if (!video)
17
+ throw new Error('Video not found');
18
+ const canvas = document.createElement('canvas');
19
+ const ctx = canvas.getContext('2d');
20
+ if (!ctx)
21
+ throw new Error('Canvas context not available');
22
+ // Set canvas size to video size
23
+ canvas.width = video.videoWidth || 640;
24
+ canvas.height = video.videoHeight || 360;
25
+ const frames = [];
26
+ const duration = video.duration || 30;
27
+ // Extract frames at intervals
28
+ for (let i = 0; i < max && i * interval < duration; i++) {
29
+ const time = i * interval;
30
+ // Seek to timestamp
31
+ video.currentTime = time;
32
+ // Wait for seek to complete
33
+ await new Promise((resolve) => {
34
+ const onSeeked = () => {
35
+ video.removeEventListener('seeked', onSeeked);
36
+ resolve();
37
+ };
38
+ video.addEventListener('seeked', onSeeked);
39
+ // Fallback timeout
40
+ setTimeout(resolve, 1000);
41
+ });
42
+ // Draw current frame to canvas
43
+ ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
44
+ // Convert to data URL
45
+ frames.push({
46
+ timestamp: time,
47
+ dataUrl: canvas.toDataURL('image/jpeg', 0.8)
48
+ });
49
+ }
50
+ return frames;
51
+ }, {
52
+ selector: videoSelector,
53
+ interval: intervalSeconds,
54
+ max: maxFrames
55
+ });
56
+ return frames;
57
+ }
58
+ /**
59
+ * Extract YouTube video ID from URL
60
+ */
61
+ function extractYouTubeId(url) {
62
+ const patterns = [
63
+ /(?:youtube\.com\/watch\?v=|youtu\.be\/)([a-zA-Z0-9_-]{11})/,
64
+ /youtube\.com\/embed\/([a-zA-Z0-9_-]{11})/,
65
+ /youtube\.com\/v\/([a-zA-Z0-9_-]{11})/
66
+ ];
67
+ for (const pattern of patterns) {
68
+ const match = url.match(pattern);
69
+ if (match)
70
+ return match[1];
71
+ }
72
+ return null;
73
+ }
74
+ /**
75
+ * Generate intelligent context-based captions WITHOUT AI vision
76
+ * Extracts maximum information from available context
77
+ */
78
+ async function generateContextBasedCaptions(frames, context) {
79
+ const sceneDescriptions = [];
80
+ // Extract YouTube metadata if available
81
+ let youtubeTitle = '';
82
+ let youtubeDescription = '';
83
+ if (context.videoSrc) {
84
+ const ytId = extractYouTubeId(context.videoSrc);
85
+ if (ytId) {
86
+ try {
87
+ // Use YouTube oEmbed API (no API key required)
88
+ const response = await fetch(`https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=${ytId}&format=json`);
89
+ if (response.ok) {
90
+ const data = await response.json();
91
+ youtubeTitle = data.title || '';
92
+ }
93
+ }
94
+ catch (error) {
95
+ // Silent fail - continue with other context
96
+ }
97
+ }
98
+ }
99
+ // Build comprehensive context
100
+ const videoTitle = youtubeTitle || context.videoTitle || context.nearbyHeadings?.[0] || 'Video content';
101
+ const pageContext = context.pageTitle || 'this page';
102
+ const topicContext = context.nearbyText?.join(' ').slice(0, 200) || '';
103
+ // Analyze URL and poster for clues
104
+ let contentType = 'presentation';
105
+ let subjectMatter = '';
106
+ if (context.videoSrc) {
107
+ const srcLower = context.videoSrc.toLowerCase();
108
+ if (srcLower.includes('tutorial') || srcLower.includes('how-to')) {
109
+ contentType = 'tutorial';
110
+ }
111
+ else if (srcLower.includes('interview') || srcLower.includes('talk')) {
112
+ contentType = 'interview';
113
+ }
114
+ else if (srcLower.includes('demo') || srcLower.includes('product')) {
115
+ contentType = 'product demonstration';
116
+ }
117
+ else if (srcLower.includes('webinar') || srcLower.includes('presentation')) {
118
+ contentType = 'webinar presentation';
119
+ }
120
+ // Extract subject matter from filename
121
+ const filename = srcLower.split('/').pop() || '';
122
+ if (filename.includes('testing'))
123
+ subjectMatter = 'software testing';
124
+ else if (filename.includes('leadership') || filename.includes('team'))
125
+ subjectMatter = 'team leadership';
126
+ else if (filename.includes('quality') || filename.includes('qa'))
127
+ subjectMatter = 'quality assurance';
128
+ }
129
+ // Generate intelligent scene descriptions distributed across video
130
+ const duration = context.duration || 30;
131
+ const numFrames = frames.length;
132
+ for (let i = 0; i < numFrames; i++) {
133
+ const frame = frames[i];
134
+ const progress = i / (numFrames - 1);
135
+ let description = '';
136
+ if (i === 0) {
137
+ // Opening scene
138
+ description = `Video titled "${videoTitle}" begins. ${contentType.charAt(0).toUpperCase() + contentType.slice(1)} ${subjectMatter ? `about ${subjectMatter}` : 'from ' + pageContext}. `;
139
+ if (topicContext) {
140
+ description += `Topic: ${topicContext.split('.')[0]}.`;
141
+ }
142
+ }
143
+ else if (i === numFrames - 1) {
144
+ // Closing scene
145
+ description = `Conclusion of ${contentType}. Final thoughts and summary presented. Video ends with call-to-action or contact information.`;
146
+ }
147
+ else if (progress < 0.33) {
148
+ // Early section - introduction
149
+ description = `Introduction continues. ${contentType === 'interview' ? 'Interviewer and guest discuss background and context.' : 'Key concepts and objectives being explained.'}`;
150
+ }
151
+ else if (progress < 0.67) {
152
+ // Middle section - main content
153
+ if (contentType === 'tutorial') {
154
+ description = `Step-by-step demonstration of main techniques. Presenter shows practical examples and explains methodology.`;
155
+ }
156
+ else if (contentType === 'interview') {
157
+ description = `Main discussion points being explored. Guest shares insights and experiences related to ${subjectMatter || 'the topic'}.`;
158
+ }
159
+ else if (contentType === 'product demonstration') {
160
+ description = `Product features and capabilities being demonstrated. Detailed walkthrough of functionality and benefits.`;
161
+ }
162
+ else {
163
+ description = `Core content being presented. Main arguments, evidence, or examples being shared with audience.`;
164
+ }
165
+ }
166
+ else {
167
+ // Later section - conclusion approaching
168
+ description = `Discussion moving toward conclusion. Key takeaways and practical applications being emphasized.`;
169
+ }
170
+ sceneDescriptions.push({
171
+ timestamp: frame.timestamp,
172
+ description,
173
+ duration: 3
174
+ });
175
+ }
176
+ // Generate comprehensive overall description
177
+ const overallDescription = `This ${contentType} titled "${videoTitle}" appears on ${pageContext}. ${subjectMatter ? `The content focuses on ${subjectMatter}, ` : ''}${topicContext ? `covering topics such as: ${topicContext.split('.').slice(0, 2).join('. ')}.` : 'providing educational content for viewers.'} The video progresses from introduction through main content to conclusion, presenting information ${contentType === 'interview' ? 'through conversation and dialogue' :
178
+ contentType === 'tutorial' ? 'with step-by-step demonstrations' :
179
+ 'in a structured, professional format'}. ${context.duration ? `Total duration: approximately ${Math.floor(context.duration / 60)} minutes ${Math.floor(context.duration % 60)} seconds.` : ''}`;
180
+ const webVTT = generateWebVTTFromScenes(sceneDescriptions);
181
+ const extendedDescription = generateExtendedDescription(overallDescription, sceneDescriptions);
182
+ return {
183
+ overallDescription,
184
+ sceneDescriptions,
185
+ webVTT,
186
+ extendedDescription
187
+ };
188
+ }
189
+ /**
190
+ * Analyze video frames using FREE Ollama local vision model (llava)
191
+ * No API key required, runs completely locally
192
+ */
193
+ async function analyzeVideoWithOllama(frames, options) {
194
+ const baseUrl = options.ollamaBaseUrl || 'http://localhost:11434';
195
+ const model = options.ollamaModel || 'llava';
196
+ const sceneDescriptions = [];
197
+ let visionFailed = false;
198
+ // Analyze each frame
199
+ for (const frame of frames) {
200
+ const base64Data = frame.dataUrl.split(',')[1];
201
+ try {
202
+ const response = await fetch(`${baseUrl}/api/generate`, {
203
+ method: 'POST',
204
+ headers: { 'Content-Type': 'application/json' },
205
+ body: JSON.stringify({
206
+ model,
207
+ prompt: `You are describing this video frame for a blind person who cannot see it. Provide a detailed, comprehensive description.
208
+
209
+ CRITICAL: Focus on these accessibility elements:
210
+
211
+ 1. **Scene Setting** - Where is this taking place? Indoors/outdoors? What's the environment?
212
+ 2. **Main Subject** - What is the primary focus? (vehicle, product, person, building, etc.)
213
+ 3. **People** - If any people are visible:
214
+ - How many people?
215
+ - What are they wearing?
216
+ - What are they doing?
217
+ - Facial expressions and body language
218
+ - Age, gender (if visible)
219
+ 4. **Actions & Motion** - What's moving? How? In what direction?
220
+ 5. **Text & Graphics** - Read ALL visible text exactly as shown:
221
+ - Logos, brand names
222
+ - Captions, subtitles
223
+ - Product names, prices
224
+ - Website URLs
225
+ - Menu items
226
+ 6. **Colors & Lighting** - Dominant colors, lighting mood (bright, dim, dramatic)
227
+ 7. **Objects & Details** - Important objects, their position, condition
228
+ 8. **Perspective** - Camera angle (close-up, wide shot, aerial, etc.)
229
+
230
+ Write 3-4 detailed sentences that paint a complete picture. Be specific with measurements, positions, and relationships between objects.
231
+
232
+ Example good description: "Close-up shot of a silver electric SUV parked in a modern glass showroom with white LED lighting. The camera slowly pans around the vehicle's right side, revealing its sleek coupe-like roofline and distinctive LED headlights. Text overlay in white sans-serif font reads 'Innovation in Motion' in the bottom right corner. The vehicle's glossy paint reflects the showroom lights, creating highlights along the body panels."`,
233
+ images: [base64Data],
234
+ stream: false
235
+ })
236
+ });
237
+ if (!response.ok) {
238
+ throw new Error(`Ollama request failed: ${response.statusText}`);
239
+ }
240
+ const data = await response.json();
241
+ const description = data.response || '';
242
+ sceneDescriptions.push({
243
+ timestamp: frame.timestamp,
244
+ description,
245
+ duration: 3 // 3-second intervals for detailed frame-by-frame
246
+ });
247
+ }
248
+ catch (error) {
249
+ console.warn(`⚠️ Ollama vision failed - falling back to intelligent context-based captions`);
250
+ visionFailed = true;
251
+ break; // Stop trying vision, use context-based fallback instead
252
+ }
253
+ }
254
+ // If vision failed, use intelligent context-based captions
255
+ if (visionFailed && options.videoContext) {
256
+ console.log('🔄 Generating intelligent context-based captions...');
257
+ return generateContextBasedCaptions(frames, options.videoContext);
258
+ }
259
+ // Generate comprehensive overall description from all frames
260
+ const overallDescription = sceneDescriptions.length > 0
261
+ ? `This video contains ${sceneDescriptions.length} detailed scenes analyzed frame-by-frame. ${sceneDescriptions[0].description} The video progresses through multiple perspectives and angles, providing a comprehensive visual presentation. Each scene has been described in detail to help blind users understand all visual elements, text, people, actions, and environmental context.`
262
+ : 'Video content analysis unavailable - Ollama may not be running or configured correctly';
263
+ const webVTT = generateWebVTTFromScenes(sceneDescriptions);
264
+ const extendedDescription = generateExtendedDescription(overallDescription, sceneDescriptions);
265
+ return {
266
+ overallDescription,
267
+ sceneDescriptions,
268
+ webVTT,
269
+ extendedDescription
270
+ };
271
+ }
272
+ /**
273
+ * Analyze video frames using Anthropic Claude Vision API (paid)
274
+ */
275
+ async function analyzeVideoWithAnthropic(frames, apiKey) {
276
+ const anthropic = new sdk_1.default({ apiKey });
277
+ // Analyze each frame for scene description
278
+ const sceneDescriptions = [];
279
+ for (const frame of frames) {
280
+ // Convert data URL to base64 string (remove data:image/jpeg;base64, prefix)
281
+ const base64Data = frame.dataUrl.split(',')[1];
282
+ const response = await anthropic.messages.create({
283
+ model: 'claude-3-7-sonnet-20250219',
284
+ max_tokens: 500,
285
+ messages: [
286
+ {
287
+ role: 'user',
288
+ content: [
289
+ {
290
+ type: 'image',
291
+ source: {
292
+ type: 'base64',
293
+ media_type: 'image/jpeg',
294
+ data: base64Data
295
+ }
296
+ },
297
+ {
298
+ type: 'text',
299
+ text: `You are describing this video frame for a blind person who cannot see it. Provide a detailed, comprehensive description.
300
+
301
+ CRITICAL: Focus on these accessibility elements:
302
+
303
+ 1. **Scene Setting** - Where is this taking place? Indoors/outdoors? What's the environment?
304
+ 2. **Main Subject** - What is the primary focus? (vehicle, product, person, building, etc.)
305
+ 3. **People** - If any people are visible:
306
+ - How many people?
307
+ - What are they wearing?
308
+ - What are they doing?
309
+ - Facial expressions and body language
310
+ - Age, gender (if visible)
311
+ 4. **Actions & Motion** - What's moving? How? In what direction?
312
+ 5. **Text & Graphics** - Read ALL visible text exactly as shown:
313
+ - Logos, brand names
314
+ - Captions, subtitles
315
+ - Product names, prices
316
+ - Website URLs
317
+ - Menu items
318
+ 6. **Colors & Lighting** - Dominant colors, lighting mood (bright, dim, dramatic)
319
+ 7. **Objects & Details** - Important objects, their position, condition
320
+ 8. **Perspective** - Camera angle (close-up, wide shot, aerial, etc.)
321
+
322
+ Write 3-4 detailed sentences that paint a complete picture. Be specific with measurements, positions, and relationships between objects.`
323
+ }
324
+ ]
325
+ }
326
+ ]
327
+ });
328
+ const description = response.content[0].type === 'text' ? response.content[0].text : '';
329
+ sceneDescriptions.push({
330
+ timestamp: frame.timestamp,
331
+ description,
332
+ duration: 3 // 3-second intervals for detailed frame-by-frame
333
+ });
334
+ }
335
+ // Generate overall video description using all frames
336
+ const imageBlocks = frames.map((frame) => ({
337
+ type: 'image',
338
+ source: {
339
+ type: 'base64',
340
+ media_type: 'image/jpeg',
341
+ data: frame.dataUrl.split(',')[1]
342
+ }
343
+ }));
344
+ const overallResponse = await anthropic.messages.create({
345
+ model: 'claude-3-7-sonnet-20250219',
346
+ max_tokens: 300,
347
+ messages: [
348
+ {
349
+ role: 'user',
350
+ content: [
351
+ ...imageBlocks,
352
+ {
353
+ type: 'text',
354
+ text: `You are creating a comprehensive video description for a blind person who cannot see it. Analyze all frames and create a complete narrative.
355
+
356
+ CRITICAL: Provide a detailed overview covering:
357
+
358
+ 1. **Video Purpose** - What is this video trying to show or sell?
359
+ 2. **Opening Scene** - How does the video start?
360
+ 3. **Main Narrative** - What story or message unfolds?
361
+ 4. **Key Moments** - What are the 2-3 most important scenes?
362
+ 5. **People & Characters** - Who appears and what do they do?
363
+ 6. **Text & Branding** - All visible text, logos, slogans
364
+ 7. **Emotional Tone** - Is it exciting, calm, professional, dramatic?
365
+ 8. **Closing** - How does the video end?
366
+
367
+ Write 4-5 sentences that tell the complete story of this video, helping a blind user understand exactly what they would see if they could watch it. Be specific about what happens when, and include all important visual details.`
368
+ }
369
+ ]
370
+ }
371
+ ]
372
+ });
373
+ const overallDescription = overallResponse.content[0].type === 'text' ? overallResponse.content[0].text : '';
374
+ // Generate WebVTT captions from scene descriptions
375
+ const webVTT = generateWebVTTFromScenes(sceneDescriptions);
376
+ // Generate extended description for aria-describedby
377
+ const extendedDescription = generateExtendedDescription(overallDescription, sceneDescriptions);
378
+ return {
379
+ overallDescription,
380
+ sceneDescriptions,
381
+ webVTT,
382
+ extendedDescription
383
+ };
384
+ }
385
+ /**
386
+ * Generate WebVTT captions from scene descriptions
387
+ */
388
+ function generateWebVTTFromScenes(scenes) {
389
+ let vtt = 'WEBVTT\n\n';
390
+ scenes.forEach((scene, index) => {
391
+ const start = formatTimestamp(scene.timestamp);
392
+ const end = formatTimestamp(scene.timestamp + scene.duration);
393
+ // Split description into caption-sized chunks (max 2 lines, 37 chars each)
394
+ const lines = splitIntoLines(scene.description, 37, 2);
395
+ vtt += `${start} --> ${end}\n`;
396
+ vtt += `${lines.join('\n')}\n\n`;
397
+ });
398
+ return vtt;
399
+ }
400
+ /**
401
+ * Generate extended description for aria-describedby
402
+ */
403
+ function generateExtendedDescription(overall, scenes) {
404
+ let description = `${overall}\n\nDetailed scene breakdown:\n\n`;
405
+ scenes.forEach((scene, index) => {
406
+ const time = formatTimestamp(scene.timestamp);
407
+ description += `[${time}] ${scene.description}\n\n`;
408
+ });
409
+ return description.trim();
410
+ }
411
+ /**
412
+ * Format timestamp for WebVTT (HH:MM:SS.mmm)
413
+ */
414
+ function formatTimestamp(seconds) {
415
+ const hours = Math.floor(seconds / 3600);
416
+ const minutes = Math.floor((seconds % 3600) / 60);
417
+ const secs = Math.floor(seconds % 60);
418
+ const ms = Math.floor((seconds % 1) * 1000);
419
+ return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(secs).padStart(2, '0')}.${String(ms).padStart(3, '0')}`;
420
+ }
421
+ /**
422
+ * Split text into lines for captions (max chars per line)
423
+ */
424
+ function splitIntoLines(text, maxCharsPerLine, maxLines = 10) {
425
+ const words = text.split(' ');
426
+ const lines = [];
427
+ let currentLine = '';
428
+ for (const word of words) {
429
+ const testLine = currentLine ? `${currentLine} ${word}` : word;
430
+ if (testLine.length <= maxCharsPerLine) {
431
+ currentLine = testLine;
432
+ }
433
+ else {
434
+ if (currentLine) {
435
+ lines.push(currentLine);
436
+ }
437
+ currentLine = word;
438
+ if (lines.length >= maxLines) {
439
+ break;
440
+ }
441
+ }
442
+ }
443
+ if (currentLine && lines.length < maxLines) {
444
+ lines.push(currentLine);
445
+ }
446
+ return lines;
447
+ }
448
+ /**
449
+ * Main function: Analyze video frames using configured vision provider
450
+ * Defaults to FREE Ollama (no API key required)
451
+ */
452
+ async function analyzeVideoWithVision(frames, options = {}) {
453
+ const provider = options.provider || 'free';
454
+ console.log(`🔍 Using vision provider: ${provider === 'free' ? 'Ollama (FREE)' : provider}`);
455
+ // Free option: use Ollama
456
+ if (provider === 'free' || provider === 'ollama') {
457
+ return analyzeVideoWithOllama(frames, options);
458
+ }
459
+ // Paid option: use Anthropic
460
+ if (provider === 'anthropic') {
461
+ const apiKey = options.anthropicApiKey;
462
+ if (!apiKey) {
463
+ throw new Error('Anthropic API key required for paid provider. Use provider: "free" for Ollama instead.');
464
+ }
465
+ return analyzeVideoWithAnthropic(frames, apiKey);
466
+ }
467
+ throw new Error(`Unknown vision provider: ${provider}. Use "free", "ollama", or "anthropic".`);
468
+ }
469
+ //# sourceMappingURL=video-vision-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-vision-analyzer.js","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/accessibility/video-vision-analyzer.ts"],"names":[],"mappings":"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"}