agentic-qe 2.3.3 → 2.3.5

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 (255) hide show
  1. package/CHANGELOG.md +122 -0
  2. package/README.md +1 -1
  3. package/dist/agents/ApiContractValidatorAgent.d.ts +5 -0
  4. package/dist/agents/ApiContractValidatorAgent.d.ts.map +1 -1
  5. package/dist/agents/ApiContractValidatorAgent.js +41 -0
  6. package/dist/agents/ApiContractValidatorAgent.js.map +1 -1
  7. package/dist/agents/BaseAgent.d.ts +10 -0
  8. package/dist/agents/BaseAgent.d.ts.map +1 -1
  9. package/dist/agents/BaseAgent.js +113 -0
  10. package/dist/agents/BaseAgent.js.map +1 -1
  11. package/dist/agents/CodeComplexityAnalyzerAgent.d.ts +5 -0
  12. package/dist/agents/CodeComplexityAnalyzerAgent.d.ts.map +1 -1
  13. package/dist/agents/CodeComplexityAnalyzerAgent.js +47 -0
  14. package/dist/agents/CodeComplexityAnalyzerAgent.js.map +1 -1
  15. package/dist/agents/CoverageAnalyzerAgent.d.ts +26 -0
  16. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  17. package/dist/agents/CoverageAnalyzerAgent.js +149 -1
  18. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  19. package/dist/agents/DeploymentReadinessAgent.d.ts +5 -0
  20. package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
  21. package/dist/agents/DeploymentReadinessAgent.js +41 -0
  22. package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
  23. package/dist/agents/FlakyTestHunterAgent.d.ts +5 -0
  24. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  25. package/dist/agents/FlakyTestHunterAgent.js +40 -0
  26. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  27. package/dist/agents/FleetCommanderAgent.d.ts +5 -0
  28. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
  29. package/dist/agents/FleetCommanderAgent.js +51 -0
  30. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  31. package/dist/agents/PerformanceTesterAgent.d.ts +5 -0
  32. package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
  33. package/dist/agents/PerformanceTesterAgent.js +44 -0
  34. package/dist/agents/PerformanceTesterAgent.js.map +1 -1
  35. package/dist/agents/ProductionIntelligenceAgent.d.ts +5 -0
  36. package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
  37. package/dist/agents/ProductionIntelligenceAgent.js +46 -0
  38. package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
  39. package/dist/agents/QXPartnerAgent.js +52 -0
  40. package/dist/agents/QXPartnerAgent.js.map +1 -1
  41. package/dist/agents/QualityAnalyzerAgent.d.ts +5 -0
  42. package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
  43. package/dist/agents/QualityAnalyzerAgent.js +45 -0
  44. package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
  45. package/dist/agents/QualityGateAgent.d.ts +40 -0
  46. package/dist/agents/QualityGateAgent.d.ts.map +1 -1
  47. package/dist/agents/QualityGateAgent.js +227 -1
  48. package/dist/agents/QualityGateAgent.js.map +1 -1
  49. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts +5 -0
  50. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
  51. package/dist/agents/RegressionRiskAnalyzerAgent.js +46 -0
  52. package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
  53. package/dist/agents/RequirementsValidatorAgent.d.ts +5 -0
  54. package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
  55. package/dist/agents/RequirementsValidatorAgent.js +42 -0
  56. package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
  57. package/dist/agents/SecurityScannerAgent.d.ts +5 -0
  58. package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
  59. package/dist/agents/SecurityScannerAgent.js +39 -0
  60. package/dist/agents/SecurityScannerAgent.js.map +1 -1
  61. package/dist/agents/TestDataArchitectAgent.d.ts +5 -0
  62. package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
  63. package/dist/agents/TestDataArchitectAgent.js +46 -0
  64. package/dist/agents/TestDataArchitectAgent.js.map +1 -1
  65. package/dist/agents/TestExecutorAgent.d.ts +5 -0
  66. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  67. package/dist/agents/TestExecutorAgent.js +48 -0
  68. package/dist/agents/TestExecutorAgent.js.map +1 -1
  69. package/dist/agents/TestGeneratorAgent.d.ts +5 -0
  70. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  71. package/dist/agents/TestGeneratorAgent.js +36 -0
  72. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  73. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
  74. package/dist/agents/lifecycle/AgentLifecycleManager.js +5 -2
  75. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
  76. package/dist/cli/commands/dream/index.d.ts +50 -0
  77. package/dist/cli/commands/dream/index.d.ts.map +1 -0
  78. package/dist/cli/commands/dream/index.js +282 -0
  79. package/dist/cli/commands/dream/index.js.map +1 -0
  80. package/dist/cli/commands/learn/index.d.ts +31 -5
  81. package/dist/cli/commands/learn/index.d.ts.map +1 -1
  82. package/dist/cli/commands/learn/index.js +183 -50
  83. package/dist/cli/commands/learn/index.js.map +1 -1
  84. package/dist/cli/commands/transfer/index.d.ts +55 -0
  85. package/dist/cli/commands/transfer/index.d.ts.map +1 -0
  86. package/dist/cli/commands/transfer/index.js +317 -0
  87. package/dist/cli/commands/transfer/index.js.map +1 -0
  88. package/dist/cli/index.js +224 -3
  89. package/dist/cli/index.js.map +1 -1
  90. package/dist/cli/init/index.d.ts.map +1 -1
  91. package/dist/cli/init/index.js +12 -4
  92. package/dist/cli/init/index.js.map +1 -1
  93. package/dist/cli/init/learning-init.d.ts +39 -0
  94. package/dist/cli/init/learning-init.d.ts.map +1 -0
  95. package/dist/cli/init/learning-init.js +239 -0
  96. package/dist/cli/init/learning-init.js.map +1 -0
  97. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  98. package/dist/learning/baselines/BaselineCollector.d.ts +178 -0
  99. package/dist/learning/baselines/BaselineCollector.d.ts.map +1 -0
  100. package/dist/learning/baselines/BaselineCollector.js +398 -0
  101. package/dist/learning/baselines/BaselineCollector.js.map +1 -0
  102. package/dist/learning/baselines/StandardTaskSuite.d.ts +88 -0
  103. package/dist/learning/baselines/StandardTaskSuite.d.ts.map +1 -0
  104. package/dist/learning/baselines/StandardTaskSuite.js +801 -0
  105. package/dist/learning/baselines/StandardTaskSuite.js.map +1 -0
  106. package/dist/learning/baselines/index.d.ts +10 -0
  107. package/dist/learning/baselines/index.d.ts.map +1 -0
  108. package/dist/learning/baselines/index.js +15 -0
  109. package/dist/learning/baselines/index.js.map +1 -0
  110. package/dist/learning/capture/ExecutionRecorder.d.ts +97 -0
  111. package/dist/learning/capture/ExecutionRecorder.d.ts.map +1 -0
  112. package/dist/learning/capture/ExecutionRecorder.js +195 -0
  113. package/dist/learning/capture/ExecutionRecorder.js.map +1 -0
  114. package/dist/learning/capture/ExperienceCapture.d.ts +177 -0
  115. package/dist/learning/capture/ExperienceCapture.d.ts.map +1 -0
  116. package/dist/learning/capture/ExperienceCapture.js +432 -0
  117. package/dist/learning/capture/ExperienceCapture.js.map +1 -0
  118. package/dist/learning/capture/ExperienceExtractor.d.ts +219 -0
  119. package/dist/learning/capture/ExperienceExtractor.d.ts.map +1 -0
  120. package/dist/learning/capture/ExperienceExtractor.js +536 -0
  121. package/dist/learning/capture/ExperienceExtractor.js.map +1 -0
  122. package/dist/learning/capture/ExperienceStore.d.ts +196 -0
  123. package/dist/learning/capture/ExperienceStore.d.ts.map +1 -0
  124. package/dist/learning/capture/ExperienceStore.js +453 -0
  125. package/dist/learning/capture/ExperienceStore.js.map +1 -0
  126. package/dist/learning/capture/index.d.ts +12 -0
  127. package/dist/learning/capture/index.d.ts.map +1 -0
  128. package/dist/learning/capture/index.js +17 -0
  129. package/dist/learning/capture/index.js.map +1 -0
  130. package/dist/learning/dashboard/MetricsDashboard.d.ts +63 -0
  131. package/dist/learning/dashboard/MetricsDashboard.d.ts.map +1 -0
  132. package/dist/learning/dashboard/MetricsDashboard.js +230 -0
  133. package/dist/learning/dashboard/MetricsDashboard.js.map +1 -0
  134. package/dist/learning/dashboard/index.d.ts +7 -0
  135. package/dist/learning/dashboard/index.d.ts.map +1 -0
  136. package/dist/learning/dashboard/index.js +23 -0
  137. package/dist/learning/dashboard/index.js.map +1 -0
  138. package/dist/learning/dream/ConceptGraph.d.ts +160 -0
  139. package/dist/learning/dream/ConceptGraph.d.ts.map +1 -0
  140. package/dist/learning/dream/ConceptGraph.js +445 -0
  141. package/dist/learning/dream/ConceptGraph.js.map +1 -0
  142. package/dist/learning/dream/DreamEngine.d.ts +150 -0
  143. package/dist/learning/dream/DreamEngine.d.ts.map +1 -0
  144. package/dist/learning/dream/DreamEngine.js +551 -0
  145. package/dist/learning/dream/DreamEngine.js.map +1 -0
  146. package/dist/learning/dream/InsightGenerator.d.ts +152 -0
  147. package/dist/learning/dream/InsightGenerator.d.ts.map +1 -0
  148. package/dist/learning/dream/InsightGenerator.js +463 -0
  149. package/dist/learning/dream/InsightGenerator.js.map +1 -0
  150. package/dist/learning/dream/SpreadingActivation.d.ts +138 -0
  151. package/dist/learning/dream/SpreadingActivation.d.ts.map +1 -0
  152. package/dist/learning/dream/SpreadingActivation.js +320 -0
  153. package/dist/learning/dream/SpreadingActivation.js.map +1 -0
  154. package/dist/learning/dream/index.d.ts +14 -0
  155. package/dist/learning/dream/index.d.ts.map +1 -0
  156. package/dist/learning/dream/index.js +22 -0
  157. package/dist/learning/dream/index.js.map +1 -0
  158. package/dist/learning/metrics/AlertManager.d.ts +107 -0
  159. package/dist/learning/metrics/AlertManager.d.ts.map +1 -0
  160. package/dist/learning/metrics/AlertManager.js +246 -0
  161. package/dist/learning/metrics/AlertManager.js.map +1 -0
  162. package/dist/learning/metrics/LearningMetrics.d.ts +184 -0
  163. package/dist/learning/metrics/LearningMetrics.d.ts.map +1 -0
  164. package/dist/learning/metrics/LearningMetrics.js +754 -0
  165. package/dist/learning/metrics/LearningMetrics.js.map +1 -0
  166. package/dist/learning/metrics/MetricsCollector.d.ts +108 -0
  167. package/dist/learning/metrics/MetricsCollector.d.ts.map +1 -0
  168. package/dist/learning/metrics/MetricsCollector.js +240 -0
  169. package/dist/learning/metrics/MetricsCollector.js.map +1 -0
  170. package/dist/learning/metrics/MetricsStore.d.ts +149 -0
  171. package/dist/learning/metrics/MetricsStore.d.ts.map +1 -0
  172. package/dist/learning/metrics/MetricsStore.js +502 -0
  173. package/dist/learning/metrics/MetricsStore.js.map +1 -0
  174. package/dist/learning/metrics/TrendAnalyzer.d.ts +85 -0
  175. package/dist/learning/metrics/TrendAnalyzer.d.ts.map +1 -0
  176. package/dist/learning/metrics/TrendAnalyzer.js +210 -0
  177. package/dist/learning/metrics/TrendAnalyzer.js.map +1 -0
  178. package/dist/learning/metrics/index.d.ts +13 -0
  179. package/dist/learning/metrics/index.d.ts.map +1 -0
  180. package/dist/learning/metrics/index.js +39 -0
  181. package/dist/learning/metrics/index.js.map +1 -0
  182. package/dist/learning/scheduler/IdleDetector.d.ts +126 -0
  183. package/dist/learning/scheduler/IdleDetector.d.ts.map +1 -0
  184. package/dist/learning/scheduler/IdleDetector.js +281 -0
  185. package/dist/learning/scheduler/IdleDetector.js.map +1 -0
  186. package/dist/learning/scheduler/SleepCycle.d.ts +150 -0
  187. package/dist/learning/scheduler/SleepCycle.d.ts.map +1 -0
  188. package/dist/learning/scheduler/SleepCycle.js +506 -0
  189. package/dist/learning/scheduler/SleepCycle.js.map +1 -0
  190. package/dist/learning/scheduler/SleepScheduler.d.ts +133 -0
  191. package/dist/learning/scheduler/SleepScheduler.d.ts.map +1 -0
  192. package/dist/learning/scheduler/SleepScheduler.js +301 -0
  193. package/dist/learning/scheduler/SleepScheduler.js.map +1 -0
  194. package/dist/learning/scheduler/TimeBasedTrigger.d.ts +108 -0
  195. package/dist/learning/scheduler/TimeBasedTrigger.d.ts.map +1 -0
  196. package/dist/learning/scheduler/TimeBasedTrigger.js +222 -0
  197. package/dist/learning/scheduler/TimeBasedTrigger.js.map +1 -0
  198. package/dist/learning/scheduler/index.d.ts +16 -0
  199. package/dist/learning/scheduler/index.d.ts.map +1 -0
  200. package/dist/learning/scheduler/index.js +23 -0
  201. package/dist/learning/scheduler/index.js.map +1 -0
  202. package/dist/learning/synthesis/ClusteringEngine.d.ts +122 -0
  203. package/dist/learning/synthesis/ClusteringEngine.d.ts.map +1 -0
  204. package/dist/learning/synthesis/ClusteringEngine.js +356 -0
  205. package/dist/learning/synthesis/ClusteringEngine.js.map +1 -0
  206. package/dist/learning/synthesis/PatternSynthesis.d.ts +162 -0
  207. package/dist/learning/synthesis/PatternSynthesis.d.ts.map +1 -0
  208. package/dist/learning/synthesis/PatternSynthesis.js +479 -0
  209. package/dist/learning/synthesis/PatternSynthesis.js.map +1 -0
  210. package/dist/learning/synthesis/index.d.ts +10 -0
  211. package/dist/learning/synthesis/index.d.ts.map +1 -0
  212. package/dist/learning/synthesis/index.js +14 -0
  213. package/dist/learning/synthesis/index.js.map +1 -0
  214. package/dist/learning/transfer/CompatibilityScorer.d.ts +115 -0
  215. package/dist/learning/transfer/CompatibilityScorer.d.ts.map +1 -0
  216. package/dist/learning/transfer/CompatibilityScorer.js +319 -0
  217. package/dist/learning/transfer/CompatibilityScorer.js.map +1 -0
  218. package/dist/learning/transfer/TransferProtocol.d.ts +172 -0
  219. package/dist/learning/transfer/TransferProtocol.d.ts.map +1 -0
  220. package/dist/learning/transfer/TransferProtocol.js +611 -0
  221. package/dist/learning/transfer/TransferProtocol.js.map +1 -0
  222. package/dist/learning/transfer/TransferPrototype.d.ts +93 -0
  223. package/dist/learning/transfer/TransferPrototype.d.ts.map +1 -0
  224. package/dist/learning/transfer/TransferPrototype.js +433 -0
  225. package/dist/learning/transfer/TransferPrototype.js.map +1 -0
  226. package/dist/learning/transfer/TransferRegistry.d.ts +245 -0
  227. package/dist/learning/transfer/TransferRegistry.d.ts.map +1 -0
  228. package/dist/learning/transfer/TransferRegistry.js +410 -0
  229. package/dist/learning/transfer/TransferRegistry.js.map +1 -0
  230. package/dist/learning/transfer/TransferValidator.d.ts +140 -0
  231. package/dist/learning/transfer/TransferValidator.d.ts.map +1 -0
  232. package/dist/learning/transfer/TransferValidator.js +413 -0
  233. package/dist/learning/transfer/TransferValidator.js.map +1 -0
  234. package/dist/learning/transfer/index.d.ts +14 -0
  235. package/dist/learning/transfer/index.d.ts.map +1 -0
  236. package/dist/learning/transfer/index.js +22 -0
  237. package/dist/learning/transfer/index.js.map +1 -0
  238. package/dist/mcp/handlers/task-orchestrate.d.ts +11 -0
  239. package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -1
  240. package/dist/mcp/handlers/task-orchestrate.js +297 -4
  241. package/dist/mcp/handlers/task-orchestrate.js.map +1 -1
  242. package/dist/mcp/handlers/test/test-generate-enhanced.d.ts +26 -2
  243. package/dist/mcp/handlers/test/test-generate-enhanced.d.ts.map +1 -1
  244. package/dist/mcp/handlers/test/test-generate-enhanced.js +159 -27
  245. package/dist/mcp/handlers/test/test-generate-enhanced.js.map +1 -1
  246. package/dist/mcp/server-instructions.d.ts +1 -1
  247. package/dist/mcp/server-instructions.js +1 -1
  248. package/dist/mcp/server.d.ts.map +1 -1
  249. package/dist/mcp/server.js +2 -1
  250. package/dist/mcp/server.js.map +1 -1
  251. package/dist/mcp/services/AgentRegistry.d.ts +6 -1
  252. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  253. package/dist/mcp/services/AgentRegistry.js +34 -3
  254. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  255. package/package.json +5 -2
@@ -0,0 +1,536 @@
1
+ "use strict";
2
+ /**
3
+ * ExperienceExtractor - Extract learnable content from agent executions
4
+ *
5
+ * Analyzes agent execution events to extract:
6
+ * - Patterns and techniques used
7
+ * - Decisions made during execution
8
+ * - Errors encountered and handled
9
+ * - Quality metrics and scores
10
+ * - Vector embeddings for similarity search
11
+ *
12
+ * Part of the Nightly-Learner Phase 1 implementation.
13
+ *
14
+ * @version 1.0.0
15
+ * @module src/learning/capture/ExperienceExtractor
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ExperienceExtractor = void 0;
19
+ const EmbeddingGenerator_1 = require("../../core/embeddings/EmbeddingGenerator");
20
+ const Logger_1 = require("../../utils/Logger");
21
+ /**
22
+ * ExperienceExtractor extracts learnable content from agent executions
23
+ *
24
+ * Analyzes execution events to identify patterns, decisions, and quality metrics
25
+ * that can be used for learning and improvement.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const extractor = new ExperienceExtractor({
30
+ * generateEmbeddings: true,
31
+ * useMLEmbeddings: false
32
+ * });
33
+ *
34
+ * const content = await extractor.extract(executionEvent);
35
+ * console.log('Patterns:', content.patterns);
36
+ * console.log('Quality:', content.qualityScore);
37
+ * ```
38
+ */
39
+ class ExperienceExtractor {
40
+ constructor(config) {
41
+ // Statistics tracking
42
+ this.totalExtractions = 0;
43
+ this.totalPatterns = 0;
44
+ this.totalDecisions = 0;
45
+ this.totalErrors = 0;
46
+ this.totalEmbeddings = 0;
47
+ this.totalQualityScore = 0;
48
+ this.totalExtractionTime = 0;
49
+ this.logger = Logger_1.Logger.getInstance();
50
+ this.config = {
51
+ generateEmbeddings: config?.generateEmbeddings ?? true,
52
+ useMLEmbeddings: config?.useMLEmbeddings ?? false,
53
+ embeddingDimension: config?.embeddingDimension ?? 256,
54
+ debug: config?.debug ?? false,
55
+ };
56
+ // Initialize embedding generator
57
+ this.embeddingGenerator = new EmbeddingGenerator_1.EmbeddingGenerator(10000, // Cache size
58
+ this.config.useMLEmbeddings // Auto-init ML models
59
+ );
60
+ }
61
+ /**
62
+ * Extract learnable content from an agent execution event
63
+ *
64
+ * @param event - Agent execution event to analyze
65
+ * @returns Extracted content with patterns, decisions, and embeddings
66
+ */
67
+ async extract(event) {
68
+ const startTime = Date.now();
69
+ try {
70
+ // Extract patterns from output
71
+ const patterns = this.extractPatterns(event.output);
72
+ // Extract decisions from output
73
+ const decisions = this.extractDecisions(event.output);
74
+ // Extract errors
75
+ const errors = this.extractErrors(event);
76
+ // Calculate quality score
77
+ const qualityScore = this.calculateQualityScore(event);
78
+ // Generate embedding if enabled
79
+ let embedding;
80
+ let embeddingDimension;
81
+ let embeddingMethod;
82
+ if (this.config.generateEmbeddings) {
83
+ const embeddingResult = await this.generateEmbedding(event);
84
+ embedding = embeddingResult.embedding;
85
+ embeddingDimension = embeddingResult.dimension;
86
+ embeddingMethod = embeddingResult.method;
87
+ this.totalEmbeddings++;
88
+ }
89
+ // Extract coverage metrics
90
+ const coverage = this.extractCoverage(event);
91
+ // Create content hash for deduplication
92
+ const contentHash = this.createContentHash(event);
93
+ // Update statistics
94
+ this.totalExtractions++;
95
+ this.totalPatterns += patterns.length;
96
+ this.totalDecisions += decisions.length;
97
+ this.totalErrors += errors.length;
98
+ this.totalQualityScore += qualityScore;
99
+ this.totalExtractionTime += Date.now() - startTime;
100
+ const extracted = {
101
+ patterns,
102
+ decisions,
103
+ errors,
104
+ qualityScore,
105
+ embedding,
106
+ coverage,
107
+ metadata: {
108
+ extractedAt: new Date(),
109
+ contentHash,
110
+ embeddingDimension,
111
+ embeddingMethod,
112
+ },
113
+ };
114
+ if (this.config.debug) {
115
+ this.logger.debug('[ExperienceExtractor] Content extracted', {
116
+ patterns: patterns.length,
117
+ decisions: decisions.length,
118
+ errors: errors.length,
119
+ qualityScore: qualityScore.toFixed(2),
120
+ hasEmbedding: !!embedding,
121
+ extractionTime: Date.now() - startTime,
122
+ });
123
+ }
124
+ return extracted;
125
+ }
126
+ catch (error) {
127
+ this.logger.error('[ExperienceExtractor] Extraction failed', { error });
128
+ throw new Error(`Extraction failed: ${error.message}`);
129
+ }
130
+ }
131
+ /**
132
+ * Extract patterns used during execution
133
+ *
134
+ * Looks for:
135
+ * - Explicit pattern references in output
136
+ * - Testing frameworks and strategies
137
+ * - Code patterns and techniques
138
+ * - Quality engineering approaches
139
+ *
140
+ * @param output - Execution output data
141
+ * @returns Array of pattern identifiers
142
+ */
143
+ extractPatterns(output) {
144
+ const patterns = [];
145
+ // Direct pattern references
146
+ if (output.patterns && Array.isArray(output.patterns)) {
147
+ patterns.push(...output.patterns.map((p) => {
148
+ if (typeof p === 'string')
149
+ return p;
150
+ if (p && typeof p === 'object' && 'id' in p)
151
+ return String(p.id);
152
+ if (p && typeof p === 'object' && 'name' in p)
153
+ return String(p.name);
154
+ return String(p);
155
+ }));
156
+ }
157
+ if (output.patternsApplied && Array.isArray(output.patternsApplied)) {
158
+ patterns.push(...output.patternsApplied.map(String));
159
+ }
160
+ if (output.patternsUsed && Array.isArray(output.patternsUsed)) {
161
+ patterns.push(...output.patternsUsed.map(String));
162
+ }
163
+ // Framework detection
164
+ if (output.framework) {
165
+ patterns.push(`framework:${output.framework}`);
166
+ }
167
+ if (output.testFramework) {
168
+ patterns.push(`test-framework:${output.testFramework}`);
169
+ }
170
+ // Strategy detection
171
+ if (output.strategy) {
172
+ patterns.push(`strategy:${output.strategy}`);
173
+ }
174
+ if (output.testStrategy) {
175
+ patterns.push(`test-strategy:${output.testStrategy}`);
176
+ }
177
+ // Technique detection
178
+ if (output.techniques && Array.isArray(output.techniques)) {
179
+ patterns.push(...output.techniques.map((t) => `technique:${t}`));
180
+ }
181
+ // Approach detection
182
+ if (output.approach) {
183
+ patterns.push(`approach:${output.approach}`);
184
+ }
185
+ // Method detection
186
+ if (output.methods && Array.isArray(output.methods)) {
187
+ patterns.push(...output.methods.map((m) => `method:${m}`));
188
+ }
189
+ // Tool detection
190
+ if (output.tools && Array.isArray(output.tools)) {
191
+ patterns.push(...output.tools.map((t) => `tool:${t}`));
192
+ }
193
+ // Remove duplicates and empty strings
194
+ return [...new Set(patterns)].filter(p => p && p.length > 0);
195
+ }
196
+ /**
197
+ * Extract decisions made during execution
198
+ *
199
+ * Looks for:
200
+ * - Strategic choices
201
+ * - Configuration decisions
202
+ * - Implementation approaches
203
+ * - Trade-off evaluations
204
+ *
205
+ * @param output - Execution output data
206
+ * @returns Array of decision descriptions
207
+ */
208
+ extractDecisions(output) {
209
+ const decisions = [];
210
+ // Direct decision references
211
+ if (output.decisions && Array.isArray(output.decisions)) {
212
+ decisions.push(...output.decisions.map(String));
213
+ }
214
+ if (output.decisionsMade && Array.isArray(output.decisionsMade)) {
215
+ decisions.push(...output.decisionsMade.map(String));
216
+ }
217
+ // Strategy decisions
218
+ if (output.strategy) {
219
+ decisions.push(`strategy:${output.strategy}`);
220
+ }
221
+ // Framework decisions
222
+ if (output.framework) {
223
+ decisions.push(`framework:${output.framework}`);
224
+ }
225
+ // Configuration decisions
226
+ if (output.config && typeof output.config === 'object') {
227
+ const config = output.config;
228
+ Object.entries(config).forEach(([key, value]) => {
229
+ if (value !== null && value !== undefined) {
230
+ decisions.push(`config:${key}=${JSON.stringify(value)}`);
231
+ }
232
+ });
233
+ }
234
+ // Coverage target decisions
235
+ if (output.coverageTarget) {
236
+ decisions.push(`coverage-target:${output.coverageTarget}`);
237
+ }
238
+ // Test type decisions
239
+ if (output.testType) {
240
+ decisions.push(`test-type:${output.testType}`);
241
+ }
242
+ if (output.testTypes && Array.isArray(output.testTypes)) {
243
+ decisions.push(...output.testTypes.map((t) => `test-type:${t}`));
244
+ }
245
+ // Assertion style decisions
246
+ if (output.assertionStyle) {
247
+ decisions.push(`assertion-style:${output.assertionStyle}`);
248
+ }
249
+ // Mock strategy decisions
250
+ if (output.mockStrategy) {
251
+ decisions.push(`mock-strategy:${output.mockStrategy}`);
252
+ }
253
+ // Architecture decisions
254
+ if (output.architecture) {
255
+ decisions.push(`architecture:${output.architecture}`);
256
+ }
257
+ // Remove duplicates and empty strings
258
+ return [...new Set(decisions)].filter(d => d && d.length > 0);
259
+ }
260
+ /**
261
+ * Extract errors encountered during execution
262
+ *
263
+ * @param event - Execution event
264
+ * @returns Array of error messages
265
+ */
266
+ extractErrors(event) {
267
+ const errors = [];
268
+ // Direct error from event
269
+ if (event.error) {
270
+ errors.push(event.error.message);
271
+ // Include stack trace hash for grouping similar errors
272
+ if (event.error.stack) {
273
+ const stackHash = this.hashString(event.error.stack.substring(0, 200));
274
+ errors.push(`stack-hash:${stackHash}`);
275
+ }
276
+ }
277
+ // Errors in output
278
+ if (event.output.errors && Array.isArray(event.output.errors)) {
279
+ errors.push(...event.output.errors.map((e) => {
280
+ if (typeof e === 'string')
281
+ return e;
282
+ if (e && typeof e === 'object' && 'message' in e)
283
+ return String(e.message);
284
+ return String(e);
285
+ }));
286
+ }
287
+ if (event.output.error) {
288
+ errors.push(String(event.output.error));
289
+ }
290
+ // Warnings as potential issues
291
+ if (event.output.warnings && Array.isArray(event.output.warnings)) {
292
+ errors.push(...event.output.warnings.map((w) => `warning:${w}`));
293
+ }
294
+ return [...new Set(errors)].filter(e => e && e.length > 0);
295
+ }
296
+ /**
297
+ * Calculate quality score for the execution
298
+ *
299
+ * Scoring factors:
300
+ * - Success/failure (0.5 base)
301
+ * - Coverage metrics (+0.2)
302
+ * - Tests generated (+0.1)
303
+ * - Execution speed (+0.1)
304
+ * - Error penalties (-0.2)
305
+ *
306
+ * @param event - Execution event
307
+ * @returns Quality score between 0 and 1
308
+ */
309
+ calculateQualityScore(event) {
310
+ let score = event.success ? 0.5 : 0.0;
311
+ // Metrics-based scoring
312
+ if (event.metrics) {
313
+ // Coverage bonus
314
+ if (event.metrics.coverage !== undefined) {
315
+ const coverage = Number(event.metrics.coverage);
316
+ if (coverage >= 90) {
317
+ score += 0.2;
318
+ }
319
+ else if (coverage >= 70) {
320
+ score += 0.15;
321
+ }
322
+ else if (coverage >= 50) {
323
+ score += 0.1;
324
+ }
325
+ }
326
+ // Tests generated bonus
327
+ if (event.metrics.testsGenerated !== undefined) {
328
+ const testsGenerated = Number(event.metrics.testsGenerated);
329
+ if (testsGenerated >= 10) {
330
+ score += 0.1;
331
+ }
332
+ else if (testsGenerated >= 5) {
333
+ score += 0.05;
334
+ }
335
+ }
336
+ // Execution speed bonus (fast execution)
337
+ if (event.duration !== undefined) {
338
+ if (event.duration < 3000) {
339
+ score += 0.1; // Very fast (< 3s)
340
+ }
341
+ else if (event.duration < 5000) {
342
+ score += 0.05; // Fast (< 5s)
343
+ }
344
+ }
345
+ // Code quality bonus
346
+ if (event.metrics.codeQuality !== undefined) {
347
+ const quality = Number(event.metrics.codeQuality);
348
+ score += quality * 0.1; // Up to +0.1 for perfect quality
349
+ }
350
+ // Coverage delta bonus (improvement)
351
+ if (event.metrics.coverage_delta !== undefined) {
352
+ const delta = Number(event.metrics.coverage_delta);
353
+ if (delta > 10) {
354
+ score += 0.05;
355
+ }
356
+ }
357
+ }
358
+ // Error penalties
359
+ if (event.error) {
360
+ score -= 0.2;
361
+ }
362
+ if (event.output.errors && Array.isArray(event.output.errors)) {
363
+ score -= Math.min(0.2, event.output.errors.length * 0.05);
364
+ }
365
+ // Ensure score is in valid range [0, 1]
366
+ return Math.max(0, Math.min(1, score));
367
+ }
368
+ /**
369
+ * Generate embedding for execution content
370
+ *
371
+ * Creates a vector embedding of the execution's content for similarity search.
372
+ * Combines input, output, patterns, and decisions into a single representation.
373
+ *
374
+ * @param event - Execution event
375
+ * @returns Embedding result with vector and metadata
376
+ */
377
+ async generateEmbedding(event) {
378
+ // Create a text representation of the execution
379
+ const content = this.serializeExecutionContent(event);
380
+ try {
381
+ // Generate text embedding
382
+ const result = await this.embeddingGenerator.generateTextEmbedding(content, {
383
+ useML: this.config.useMLEmbeddings,
384
+ useCache: true,
385
+ normalize: true,
386
+ dimension: this.config.embeddingDimension,
387
+ });
388
+ return {
389
+ embedding: result.embedding,
390
+ dimension: result.dimension,
391
+ method: result.method,
392
+ };
393
+ }
394
+ catch (error) {
395
+ // Fallback to hash-based embedding
396
+ this.logger.warn('[ExperienceExtractor] ML embedding failed, using hash-based', { error: error.message });
397
+ const embedding = this.embeddingGenerator.generateHashEmbedding(content, this.config.embeddingDimension);
398
+ return {
399
+ embedding,
400
+ dimension: embedding.length,
401
+ method: 'hash',
402
+ };
403
+ }
404
+ }
405
+ /**
406
+ * Extract coverage metrics from event
407
+ *
408
+ * @param event - Execution event
409
+ * @returns Coverage information
410
+ */
411
+ extractCoverage(event) {
412
+ if (!event.metrics)
413
+ return undefined;
414
+ const delta = event.metrics.coverage_delta !== undefined
415
+ ? Number(event.metrics.coverage_delta)
416
+ : 0;
417
+ const total = event.metrics.coverage !== undefined
418
+ ? Number(event.metrics.coverage)
419
+ : undefined;
420
+ return { delta, total };
421
+ }
422
+ /**
423
+ * Serialize execution content to text for embedding
424
+ *
425
+ * @param event - Execution event
426
+ * @returns Text representation
427
+ */
428
+ serializeExecutionContent(event) {
429
+ const parts = [
430
+ `agent:${event.agentType}`,
431
+ `task:${event.taskType}`,
432
+ `success:${event.success}`,
433
+ ];
434
+ // Add patterns
435
+ const patterns = this.extractPatterns(event.output);
436
+ if (patterns.length > 0) {
437
+ parts.push(`patterns:${patterns.join(',')}`);
438
+ }
439
+ // Add decisions
440
+ const decisions = this.extractDecisions(event.output);
441
+ if (decisions.length > 0) {
442
+ parts.push(`decisions:${decisions.join(',')}`);
443
+ }
444
+ // Add metrics
445
+ if (event.metrics) {
446
+ Object.entries(event.metrics).forEach(([key, value]) => {
447
+ parts.push(`metric:${key}=${value}`);
448
+ });
449
+ }
450
+ // Add input summary (avoid large objects)
451
+ if (event.input.description) {
452
+ parts.push(`input:${String(event.input.description).substring(0, 200)}`);
453
+ }
454
+ return parts.join('|');
455
+ }
456
+ /**
457
+ * Create content hash for deduplication
458
+ *
459
+ * @param event - Execution event
460
+ * @returns Content hash
461
+ */
462
+ createContentHash(event) {
463
+ const content = this.serializeExecutionContent(event);
464
+ return this.hashString(content);
465
+ }
466
+ /**
467
+ * Hash a string using simple algorithm
468
+ *
469
+ * @param str - String to hash
470
+ * @returns Hash string
471
+ */
472
+ hashString(str) {
473
+ let hash = 0;
474
+ for (let i = 0; i < str.length; i++) {
475
+ const char = str.charCodeAt(i);
476
+ hash = ((hash << 5) - hash) + char;
477
+ hash = hash & hash; // Convert to 32-bit integer
478
+ }
479
+ return Math.abs(hash).toString(16);
480
+ }
481
+ /**
482
+ * Get extraction statistics
483
+ *
484
+ * @returns Statistics about extraction operations
485
+ */
486
+ getStats() {
487
+ return {
488
+ totalExtractions: this.totalExtractions,
489
+ patternsExtracted: this.totalPatterns,
490
+ decisionsExtracted: this.totalDecisions,
491
+ errorsExtracted: this.totalErrors,
492
+ embeddingsGenerated: this.totalEmbeddings,
493
+ avgQualityScore: this.totalExtractions > 0
494
+ ? this.totalQualityScore / this.totalExtractions
495
+ : 0,
496
+ avgExtractionTime: this.totalExtractions > 0
497
+ ? this.totalExtractionTime / this.totalExtractions
498
+ : 0,
499
+ };
500
+ }
501
+ /**
502
+ * Reset statistics
503
+ */
504
+ resetStats() {
505
+ this.totalExtractions = 0;
506
+ this.totalPatterns = 0;
507
+ this.totalDecisions = 0;
508
+ this.totalErrors = 0;
509
+ this.totalEmbeddings = 0;
510
+ this.totalQualityScore = 0;
511
+ this.totalExtractionTime = 0;
512
+ }
513
+ /**
514
+ * Update configuration
515
+ *
516
+ * @param config - New configuration values
517
+ */
518
+ updateConfig(config) {
519
+ this.config = {
520
+ ...this.config,
521
+ ...config,
522
+ };
523
+ this.logger.info('[ExperienceExtractor] Configuration updated', this.config);
524
+ }
525
+ /**
526
+ * Get current configuration
527
+ *
528
+ * @returns Current configuration
529
+ */
530
+ getConfig() {
531
+ return { ...this.config };
532
+ }
533
+ }
534
+ exports.ExperienceExtractor = ExperienceExtractor;
535
+ exports.default = ExperienceExtractor;
536
+ //# sourceMappingURL=ExperienceExtractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExperienceExtractor.js","sourceRoot":"","sources":["../../../src/learning/capture/ExperienceExtractor.ts"],"names":[],"mappings":"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"}