agentic-qe 1.0.4 → 1.1.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 (197) hide show
  1. package/.claude/agents/qe-quality-analyzer.md +405 -0
  2. package/CHANGELOG.md +109 -0
  3. package/CONTRIBUTING.md +51 -0
  4. package/README.md +690 -134
  5. package/bin/aqe +90 -938
  6. package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
  7. package/dist/adapters/MemoryStoreAdapter.js +6 -0
  8. package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
  9. package/dist/agents/CoverageAnalyzerAgent.d.ts +58 -3
  10. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  11. package/dist/agents/CoverageAnalyzerAgent.js +316 -48
  12. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  13. package/dist/agents/FlakyTestHunterAgent.d.ts +48 -4
  14. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  15. package/dist/agents/FlakyTestHunterAgent.js +217 -10
  16. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  17. package/dist/agents/LearningAgent.d.ts +75 -0
  18. package/dist/agents/LearningAgent.d.ts.map +1 -0
  19. package/dist/agents/LearningAgent.js +177 -0
  20. package/dist/agents/LearningAgent.js.map +1 -0
  21. package/dist/agents/TestGeneratorAgent.d.ts +42 -2
  22. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  23. package/dist/agents/TestGeneratorAgent.js +232 -13
  24. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  25. package/dist/cli/commands/improve/index.d.ts +70 -0
  26. package/dist/cli/commands/improve/index.d.ts.map +1 -0
  27. package/dist/cli/commands/improve/index.js +530 -0
  28. package/dist/cli/commands/improve/index.js.map +1 -0
  29. package/dist/cli/commands/init.d.ts +34 -0
  30. package/dist/cli/commands/init.d.ts.map +1 -1
  31. package/dist/cli/commands/init.js +875 -42
  32. package/dist/cli/commands/init.js.map +1 -1
  33. package/dist/cli/commands/learn/index.d.ts +68 -0
  34. package/dist/cli/commands/learn/index.d.ts.map +1 -0
  35. package/dist/cli/commands/learn/index.js +431 -0
  36. package/dist/cli/commands/learn/index.js.map +1 -0
  37. package/dist/cli/commands/patterns/index.d.ts +75 -0
  38. package/dist/cli/commands/patterns/index.d.ts.map +1 -0
  39. package/dist/cli/commands/patterns/index.js +502 -0
  40. package/dist/cli/commands/patterns/index.js.map +1 -0
  41. package/dist/cli/commands/routing/index.d.ts +95 -0
  42. package/dist/cli/commands/routing/index.d.ts.map +1 -0
  43. package/dist/cli/commands/routing/index.js +399 -0
  44. package/dist/cli/commands/routing/index.js.map +1 -0
  45. package/dist/cli/index.js +455 -8
  46. package/dist/cli/index.js.map +1 -1
  47. package/dist/core/memory/SwarmMemoryManager.d.ts +5 -0
  48. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  49. package/dist/core/memory/SwarmMemoryManager.js +7 -0
  50. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  51. package/dist/core/routing/AdaptiveModelRouter.d.ts +86 -0
  52. package/dist/core/routing/AdaptiveModelRouter.d.ts.map +1 -0
  53. package/dist/core/routing/AdaptiveModelRouter.js +264 -0
  54. package/dist/core/routing/AdaptiveModelRouter.js.map +1 -0
  55. package/dist/core/routing/ComplexityAnalyzer.d.ts +49 -0
  56. package/dist/core/routing/ComplexityAnalyzer.d.ts.map +1 -0
  57. package/dist/core/routing/ComplexityAnalyzer.js +182 -0
  58. package/dist/core/routing/ComplexityAnalyzer.js.map +1 -0
  59. package/dist/core/routing/CostTracker.d.ts +55 -0
  60. package/dist/core/routing/CostTracker.d.ts.map +1 -0
  61. package/dist/core/routing/CostTracker.js +210 -0
  62. package/dist/core/routing/CostTracker.js.map +1 -0
  63. package/dist/core/routing/FleetManagerIntegration.d.ts +68 -0
  64. package/dist/core/routing/FleetManagerIntegration.d.ts.map +1 -0
  65. package/dist/core/routing/FleetManagerIntegration.js +170 -0
  66. package/dist/core/routing/FleetManagerIntegration.js.map +1 -0
  67. package/dist/core/routing/ModelRules.d.ts +38 -0
  68. package/dist/core/routing/ModelRules.d.ts.map +1 -0
  69. package/dist/core/routing/ModelRules.js +170 -0
  70. package/dist/core/routing/ModelRules.js.map +1 -0
  71. package/dist/core/routing/QETask.d.ts +12 -0
  72. package/dist/core/routing/QETask.d.ts.map +1 -0
  73. package/dist/core/routing/QETask.js +21 -0
  74. package/dist/core/routing/QETask.js.map +1 -0
  75. package/dist/core/routing/index.d.ts +19 -0
  76. package/dist/core/routing/index.d.ts.map +1 -0
  77. package/dist/core/routing/index.js +50 -0
  78. package/dist/core/routing/index.js.map +1 -0
  79. package/dist/core/routing/types.d.ts +136 -0
  80. package/dist/core/routing/types.d.ts.map +1 -0
  81. package/dist/core/routing/types.js +28 -0
  82. package/dist/core/routing/types.js.map +1 -0
  83. package/dist/index.d.ts +10 -0
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +10 -0
  86. package/dist/index.js.map +1 -1
  87. package/dist/learning/FlakyFixRecommendations.d.ts +40 -0
  88. package/dist/learning/FlakyFixRecommendations.d.ts.map +1 -0
  89. package/dist/learning/FlakyFixRecommendations.js +247 -0
  90. package/dist/learning/FlakyFixRecommendations.js.map +1 -0
  91. package/dist/learning/FlakyPredictionModel.d.ts +57 -0
  92. package/dist/learning/FlakyPredictionModel.d.ts.map +1 -0
  93. package/dist/learning/FlakyPredictionModel.js +289 -0
  94. package/dist/learning/FlakyPredictionModel.js.map +1 -0
  95. package/dist/learning/FlakyTestDetector.d.ts +46 -0
  96. package/dist/learning/FlakyTestDetector.d.ts.map +1 -0
  97. package/dist/learning/FlakyTestDetector.js +215 -0
  98. package/dist/learning/FlakyTestDetector.js.map +1 -0
  99. package/dist/learning/ImprovementLoop.d.ts +119 -0
  100. package/dist/learning/ImprovementLoop.d.ts.map +1 -0
  101. package/dist/learning/ImprovementLoop.js +353 -0
  102. package/dist/learning/ImprovementLoop.js.map +1 -0
  103. package/dist/learning/LearningEngine.d.ts +144 -0
  104. package/dist/learning/LearningEngine.d.ts.map +1 -0
  105. package/dist/learning/LearningEngine.js +531 -0
  106. package/dist/learning/LearningEngine.js.map +1 -0
  107. package/dist/learning/PerformanceTracker.d.ts +118 -0
  108. package/dist/learning/PerformanceTracker.d.ts.map +1 -0
  109. package/dist/learning/PerformanceTracker.js +376 -0
  110. package/dist/learning/PerformanceTracker.js.map +1 -0
  111. package/dist/learning/StatisticalAnalysis.d.ts +47 -0
  112. package/dist/learning/StatisticalAnalysis.d.ts.map +1 -0
  113. package/dist/learning/StatisticalAnalysis.js +170 -0
  114. package/dist/learning/StatisticalAnalysis.js.map +1 -0
  115. package/dist/learning/SwarmIntegration.d.ts +107 -0
  116. package/dist/learning/SwarmIntegration.d.ts.map +1 -0
  117. package/dist/learning/SwarmIntegration.js +191 -0
  118. package/dist/learning/SwarmIntegration.js.map +1 -0
  119. package/dist/learning/index.d.ts +10 -0
  120. package/dist/learning/index.d.ts.map +1 -0
  121. package/dist/learning/index.js +16 -0
  122. package/dist/learning/index.js.map +1 -0
  123. package/dist/learning/types.d.ts +288 -0
  124. package/dist/learning/types.d.ts.map +1 -0
  125. package/dist/learning/types.js +9 -0
  126. package/dist/learning/types.js.map +1 -0
  127. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts +175 -0
  128. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -0
  129. package/dist/mcp/handlers/phase2/Phase2Tools.js +693 -0
  130. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -0
  131. package/dist/mcp/server.d.ts.map +1 -1
  132. package/dist/mcp/server.js +171 -9
  133. package/dist/mcp/server.js.map +1 -1
  134. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts +112 -0
  135. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts.map +1 -0
  136. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js +341 -0
  137. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js.map +1 -0
  138. package/dist/mcp/streaming/StreamingMCPTool.d.ts +80 -0
  139. package/dist/mcp/streaming/StreamingMCPTool.d.ts.map +1 -0
  140. package/dist/mcp/streaming/StreamingMCPTool.js +276 -0
  141. package/dist/mcp/streaming/StreamingMCPTool.js.map +1 -0
  142. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts +73 -0
  143. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts.map +1 -0
  144. package/dist/mcp/streaming/TestExecuteStreamHandler.js +436 -0
  145. package/dist/mcp/streaming/TestExecuteStreamHandler.js.map +1 -0
  146. package/dist/mcp/streaming/index.d.ts +14 -0
  147. package/dist/mcp/streaming/index.d.ts.map +1 -0
  148. package/dist/mcp/streaming/index.js +30 -0
  149. package/dist/mcp/streaming/index.js.map +1 -0
  150. package/dist/mcp/streaming/types.d.ts +117 -0
  151. package/dist/mcp/streaming/types.d.ts.map +1 -0
  152. package/dist/mcp/streaming/types.js +88 -0
  153. package/dist/mcp/streaming/types.js.map +1 -0
  154. package/dist/mcp/tools.d.ts +18 -1
  155. package/dist/mcp/tools.d.ts.map +1 -1
  156. package/dist/mcp/tools.js +123 -1
  157. package/dist/mcp/tools.js.map +1 -1
  158. package/dist/reasoning/CodeSignatureGenerator.d.ts +98 -0
  159. package/dist/reasoning/CodeSignatureGenerator.d.ts.map +1 -0
  160. package/dist/reasoning/CodeSignatureGenerator.js +427 -0
  161. package/dist/reasoning/CodeSignatureGenerator.js.map +1 -0
  162. package/dist/reasoning/PatternClassifier.d.ts +98 -0
  163. package/dist/reasoning/PatternClassifier.d.ts.map +1 -0
  164. package/dist/reasoning/PatternClassifier.js +345 -0
  165. package/dist/reasoning/PatternClassifier.js.map +1 -0
  166. package/dist/reasoning/PatternExtractor.d.ts +131 -0
  167. package/dist/reasoning/PatternExtractor.d.ts.map +1 -0
  168. package/dist/reasoning/PatternExtractor.js +539 -0
  169. package/dist/reasoning/PatternExtractor.js.map +1 -0
  170. package/dist/reasoning/PatternMemoryIntegration.d.ts +102 -0
  171. package/dist/reasoning/PatternMemoryIntegration.d.ts.map +1 -0
  172. package/dist/reasoning/PatternMemoryIntegration.js +336 -0
  173. package/dist/reasoning/PatternMemoryIntegration.js.map +1 -0
  174. package/dist/reasoning/QEReasoningBank.d.ts +121 -0
  175. package/dist/reasoning/QEReasoningBank.d.ts.map +1 -0
  176. package/dist/reasoning/QEReasoningBank.js +235 -0
  177. package/dist/reasoning/QEReasoningBank.js.map +1 -0
  178. package/dist/reasoning/TestTemplateCreator.d.ts +95 -0
  179. package/dist/reasoning/TestTemplateCreator.d.ts.map +1 -0
  180. package/dist/reasoning/TestTemplateCreator.js +535 -0
  181. package/dist/reasoning/TestTemplateCreator.js.map +1 -0
  182. package/dist/reasoning/index.d.ts +10 -0
  183. package/dist/reasoning/index.d.ts.map +1 -0
  184. package/dist/reasoning/index.js +31 -0
  185. package/dist/reasoning/index.js.map +1 -0
  186. package/dist/reasoning/types.d.ts +717 -0
  187. package/dist/reasoning/types.d.ts.map +1 -0
  188. package/dist/reasoning/types.js +57 -0
  189. package/dist/reasoning/types.js.map +1 -0
  190. package/dist/types/index.d.ts +20 -1
  191. package/dist/types/index.d.ts.map +1 -1
  192. package/dist/types/index.js.map +1 -1
  193. package/dist/types/pattern.types.d.ts +364 -0
  194. package/dist/types/pattern.types.d.ts.map +1 -0
  195. package/dist/types/pattern.types.js +60 -0
  196. package/dist/types/pattern.types.js.map +1 -0
  197. package/package.json +25 -3
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ /**
3
+ * QEReasoningBank - Intelligent Test Pattern Storage and Retrieval System
4
+ *
5
+ * @module reasoning/QEReasoningBank
6
+ * @version 1.1.0
7
+ *
8
+ * @description
9
+ * The QEReasoningBank provides a centralized system for storing, retrieving,
10
+ * and sharing test patterns across projects and frameworks. It uses in-memory
11
+ * storage with indexing for high-performance pattern matching.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { QEReasoningBank } from './reasoning/QEReasoningBank';
16
+ * import { TestPattern, PatternQuery } from './reasoning/types';
17
+ *
18
+ * // Initialize ReasoningBank
19
+ * const reasoningBank = new QEReasoningBank();
20
+ *
21
+ * // Store a pattern
22
+ * await reasoningBank.storePattern(pattern);
23
+ *
24
+ * // Find similar patterns
25
+ * const matches = await reasoningBank.findMatchingPatterns({
26
+ * codeType: 'test',
27
+ * framework: 'jest',
28
+ * keywords: ['api', 'controller']
29
+ * });
30
+ * ```
31
+ */
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.QEReasoningBank = void 0;
34
+ /**
35
+ * QEReasoningBank - Main class for pattern storage and retrieval
36
+ *
37
+ * **Key Features:**
38
+ * - In-memory pattern storage with indexing
39
+ * - Fast pattern matching (< 50ms p95)
40
+ * - Pattern versioning and history tracking
41
+ * - Usage tracking and analytics
42
+ * - Pattern quality scoring
43
+ *
44
+ * **Performance Characteristics:**
45
+ * - Pattern lookup: < 50ms (p95)
46
+ * - Pattern storage: < 25ms (p95)
47
+ * - Supports 100+ patterns per project
48
+ *
49
+ * @public
50
+ */
51
+ class QEReasoningBank {
52
+ constructor() {
53
+ this.patterns = new Map();
54
+ this.patternIndex = new Map();
55
+ this.versionHistory = new Map();
56
+ }
57
+ /**
58
+ * Store a new test pattern
59
+ */
60
+ async storePattern(pattern) {
61
+ // Validate pattern
62
+ if (!pattern.id || !pattern.name || !pattern.template) {
63
+ throw new Error('Invalid pattern: id, name, and template are required');
64
+ }
65
+ if (pattern.confidence < 0 || pattern.confidence > 1) {
66
+ throw new Error('Confidence must be between 0 and 1');
67
+ }
68
+ // Version existing pattern
69
+ if (this.patterns.has(pattern.id)) {
70
+ const existing = this.patterns.get(pattern.id);
71
+ const history = this.versionHistory.get(pattern.id) || [];
72
+ history.push({ ...existing });
73
+ this.versionHistory.set(pattern.id, history);
74
+ }
75
+ // Store pattern
76
+ this.patterns.set(pattern.id, { ...pattern });
77
+ // Update index for fast lookup
78
+ this.updateIndex(pattern);
79
+ }
80
+ /**
81
+ * Retrieve pattern by ID
82
+ */
83
+ async getPattern(id) {
84
+ return this.patterns.get(id) || null;
85
+ }
86
+ /**
87
+ * Find matching patterns for a code context
88
+ */
89
+ async findMatchingPatterns(context, limit = 10) {
90
+ const matches = [];
91
+ for (const pattern of Array.from(this.patterns.values())) {
92
+ const confidence = this.calculateMatchConfidence(pattern, context);
93
+ if (confidence > 0.3) { // Threshold
94
+ matches.push({
95
+ pattern,
96
+ confidence,
97
+ reasoning: this.generateReasoning(pattern, context),
98
+ applicability: confidence * pattern.successRate
99
+ });
100
+ }
101
+ }
102
+ // Sort by applicability
103
+ matches.sort((a, b) => b.applicability - a.applicability);
104
+ return matches.slice(0, limit);
105
+ }
106
+ /**
107
+ * Update pattern success metrics
108
+ */
109
+ async updatePatternMetrics(patternId, success) {
110
+ const pattern = this.patterns.get(patternId);
111
+ if (!pattern) {
112
+ throw new Error(`Pattern not found: ${patternId}`);
113
+ }
114
+ // Update usage count
115
+ pattern.usageCount++;
116
+ // Update success rate using exponential moving average
117
+ const alpha = 0.3;
118
+ pattern.successRate =
119
+ pattern.successRate * (1 - alpha) + (success ? 1 : 0) * alpha;
120
+ // Update timestamp
121
+ pattern.metadata.updatedAt = new Date();
122
+ }
123
+ /**
124
+ * Get pattern statistics
125
+ */
126
+ async getStatistics() {
127
+ const patterns = Array.from(this.patterns.values());
128
+ const stats = {
129
+ totalPatterns: patterns.length,
130
+ averageConfidence: patterns.reduce((sum, p) => sum + p.confidence, 0) / patterns.length || 0,
131
+ averageSuccessRate: patterns.reduce((sum, p) => sum + p.successRate, 0) / patterns.length || 0,
132
+ byCategory: {},
133
+ byFramework: {}
134
+ };
135
+ for (const pattern of patterns) {
136
+ stats.byCategory[pattern.category] = (stats.byCategory[pattern.category] || 0) + 1;
137
+ stats.byFramework[pattern.framework] = (stats.byFramework[pattern.framework] || 0) + 1;
138
+ }
139
+ return stats;
140
+ }
141
+ /**
142
+ * Get version history for a pattern
143
+ */
144
+ async getVersionHistory(patternId) {
145
+ return this.versionHistory.get(patternId) || [];
146
+ }
147
+ /**
148
+ * Search patterns by tags
149
+ */
150
+ async searchByTags(tags) {
151
+ const results = [];
152
+ for (const pattern of Array.from(this.patterns.values())) {
153
+ const matchCount = pattern.metadata.tags.filter(tag => tags.includes(tag)).length;
154
+ if (matchCount > 0) {
155
+ results.push(pattern);
156
+ }
157
+ }
158
+ // Sort by tag match count and success rate
159
+ results.sort((a, b) => {
160
+ const aMatches = a.metadata.tags.filter(t => tags.includes(t)).length;
161
+ const bMatches = b.metadata.tags.filter(t => tags.includes(t)).length;
162
+ if (aMatches !== bMatches) {
163
+ return bMatches - aMatches;
164
+ }
165
+ return b.successRate - a.successRate;
166
+ });
167
+ return results;
168
+ }
169
+ // Private helper methods
170
+ updateIndex(pattern) {
171
+ // Index by category
172
+ if (!this.patternIndex.has(pattern.category)) {
173
+ this.patternIndex.set(pattern.category, new Set());
174
+ }
175
+ this.patternIndex.get(pattern.category).add(pattern.id);
176
+ // Index by tags
177
+ for (const tag of pattern.metadata.tags) {
178
+ if (!this.patternIndex.has(`tag:${tag}`)) {
179
+ this.patternIndex.set(`tag:${tag}`, new Set());
180
+ }
181
+ this.patternIndex.get(`tag:${tag}`).add(pattern.id);
182
+ }
183
+ }
184
+ calculateMatchConfidence(pattern, context) {
185
+ let score = 0;
186
+ let factors = 0;
187
+ // Framework match (35% weight)
188
+ if (context.framework) {
189
+ factors++;
190
+ if (pattern.framework === context.framework) {
191
+ score += 0.35;
192
+ }
193
+ }
194
+ // Language match (25% weight)
195
+ if (context.language) {
196
+ factors++;
197
+ if (pattern.language === context.language) {
198
+ score += 0.25;
199
+ }
200
+ }
201
+ // Keyword match (30% weight)
202
+ if (context.keywords && context.keywords.length > 0) {
203
+ factors++;
204
+ const matchingKeywords = context.keywords.filter(kw => pattern.metadata.tags.includes(kw) ||
205
+ pattern.name.toLowerCase().includes(kw.toLowerCase()) ||
206
+ pattern.description.toLowerCase().includes(kw.toLowerCase()));
207
+ score += (matchingKeywords.length / context.keywords.length) * 0.30;
208
+ }
209
+ // Pattern confidence (10% weight)
210
+ factors++;
211
+ score += pattern.confidence * 0.10;
212
+ return factors > 0 ? Math.min(score, 1.0) : 0;
213
+ }
214
+ generateReasoning(pattern, context) {
215
+ const reasons = [];
216
+ if (context.framework && pattern.framework === context.framework) {
217
+ reasons.push(`Framework match: ${pattern.framework}`);
218
+ }
219
+ if (context.language && pattern.language === context.language) {
220
+ reasons.push(`Language match: ${pattern.language}`);
221
+ }
222
+ if (context.keywords) {
223
+ const matchingKeywords = context.keywords.filter(kw => pattern.metadata.tags.includes(kw));
224
+ if (matchingKeywords.length > 0) {
225
+ reasons.push(`Tag matches: ${matchingKeywords.join(', ')}`);
226
+ }
227
+ }
228
+ reasons.push(`Success rate: ${(pattern.successRate * 100).toFixed(1)}%`);
229
+ reasons.push(`Used ${pattern.usageCount} times`);
230
+ return reasons.join('; ');
231
+ }
232
+ }
233
+ exports.QEReasoningBank = QEReasoningBank;
234
+ exports.default = QEReasoningBank;
235
+ //# sourceMappingURL=QEReasoningBank.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QEReasoningBank.js","sourceRoot":"","sources":["../../src/reasoning/QEReasoningBank.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * TestTemplateCreator - Create reusable test templates from patterns
3
+ * Phase 2 (v1.1.0) - Pattern Extraction Specialist
4
+ *
5
+ * Generalizes specific tests into reusable templates by:
6
+ * - Parameterizing test inputs
7
+ * - Creating framework-agnostic structures
8
+ * - Supporting template validation
9
+ * - Generating code for multiple frameworks
10
+ */
11
+ import { TestTemplate, TestPattern, TestFramework } from '../types/pattern.types';
12
+ export declare class TestTemplateCreator {
13
+ private logger;
14
+ constructor();
15
+ /**
16
+ * Create template from test pattern
17
+ */
18
+ createTemplate(pattern: TestPattern): Promise<TestTemplate>;
19
+ /**
20
+ * Create templates from multiple patterns
21
+ */
22
+ createTemplates(patterns: TestPattern[]): Promise<TestTemplate[]>;
23
+ /**
24
+ * Build template structure from pattern
25
+ */
26
+ private buildTemplateStructure;
27
+ /**
28
+ * Extract parameters from pattern
29
+ */
30
+ private extractParameters;
31
+ /**
32
+ * Create validation rules
33
+ */
34
+ private createValidationRules;
35
+ /**
36
+ * Create code generators for different frameworks
37
+ */
38
+ private createCodeGenerators;
39
+ /**
40
+ * Generate Jest code
41
+ */
42
+ private generateJestCode;
43
+ /**
44
+ * Generate Mocha code
45
+ */
46
+ private generateMochaCode;
47
+ /**
48
+ * Generate Cypress code
49
+ */
50
+ private generateCypressCode;
51
+ /**
52
+ * Generate Vitest code
53
+ */
54
+ private generateVitestCode;
55
+ /**
56
+ * Generate Jasmine code
57
+ */
58
+ private generateJasmineCode;
59
+ /**
60
+ * Generate AVA code
61
+ */
62
+ private generateAvaCode;
63
+ /**
64
+ * Get pattern-specific setup code
65
+ */
66
+ private getPatternSpecificSetup;
67
+ /**
68
+ * Get pattern-specific assertion code
69
+ */
70
+ private getPatternSpecificAssertion;
71
+ /**
72
+ * Helper methods for structure building
73
+ */
74
+ private needsSetup;
75
+ private needsTeardown;
76
+ private createSetupNode;
77
+ private createArrangeNode;
78
+ private createActNode;
79
+ private createAssertNode;
80
+ private createTeardownNode;
81
+ private generateTemplateId;
82
+ private generateDescription;
83
+ /**
84
+ * Validate template
85
+ */
86
+ validateTemplate(template: TestTemplate, params: Record<string, any>): Promise<{
87
+ valid: boolean;
88
+ errors: string[];
89
+ }>;
90
+ /**
91
+ * Instantiate template with parameters
92
+ */
93
+ instantiateTemplate(template: TestTemplate, framework: TestFramework, params: Record<string, any>): Promise<string>;
94
+ }
95
+ //# sourceMappingURL=TestTemplateCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestTemplateCreator.d.ts","sourceRoot":"","sources":["../../src/reasoning/TestTemplateCreator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,YAAY,EACZ,WAAW,EAKX,aAAa,EAEd,MAAM,wBAAwB,CAAC;AAIhC,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;;IAMvB;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA0BjE;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAevE;;OAEG;YACW,sBAAsB;IA0CpC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4GzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgC7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAa/B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAenC;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAoB1H;;OAEG;IACG,mBAAmB,CACvB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,OAAO,CAAC,MAAM,CAAC;CAsBnB"}