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,182 @@
1
+ "use strict";
2
+ /**
3
+ * Complexity Analyzer
4
+ * Analyzes task complexity for model selection
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ComplexityAnalyzer = void 0;
8
+ const types_1 = require("./types");
9
+ const ModelRules_1 = require("./ModelRules");
10
+ class ComplexityAnalyzer {
11
+ /**
12
+ * Analyze task complexity based on content and context
13
+ */
14
+ analyzeComplexity(task) {
15
+ const taskContent = this.extractTaskContent(task);
16
+ const keywords = this.extractKeywords(taskContent);
17
+ // Score each complexity level
18
+ const scores = {
19
+ [types_1.TaskComplexity.SIMPLE]: this.scoreComplexity(keywords, types_1.TaskComplexity.SIMPLE),
20
+ [types_1.TaskComplexity.MODERATE]: this.scoreComplexity(keywords, types_1.TaskComplexity.MODERATE),
21
+ [types_1.TaskComplexity.COMPLEX]: this.scoreComplexity(keywords, types_1.TaskComplexity.COMPLEX),
22
+ [types_1.TaskComplexity.CRITICAL]: this.scoreComplexity(keywords, types_1.TaskComplexity.CRITICAL),
23
+ };
24
+ // Determine complexity (highest score wins)
25
+ const complexity = this.determineComplexity(scores);
26
+ const confidence = this.calculateConfidence(scores, complexity);
27
+ // Estimate tokens based on complexity
28
+ const estimatedTokens = this.estimateTokens(complexity, taskContent);
29
+ // Analyze special requirements
30
+ const requiresReasoning = this.requiresReasoning(keywords);
31
+ const requiresSecurity = this.requiresSecurity(keywords);
32
+ const requiresPerformance = this.requiresPerformance(keywords);
33
+ return {
34
+ complexity,
35
+ estimatedTokens,
36
+ requiresReasoning,
37
+ requiresSecurity,
38
+ requiresPerformance,
39
+ confidence,
40
+ };
41
+ }
42
+ /**
43
+ * Extract task content for analysis
44
+ */
45
+ extractTaskContent(task) {
46
+ const parts = [];
47
+ if (task.type)
48
+ parts.push(task.type);
49
+ if (task.description)
50
+ parts.push(task.description);
51
+ if (task.data) {
52
+ if (typeof task.data === 'string') {
53
+ parts.push(task.data);
54
+ }
55
+ else if (typeof task.data === 'object') {
56
+ parts.push(JSON.stringify(task.data));
57
+ }
58
+ }
59
+ return parts.join(' ').toLowerCase();
60
+ }
61
+ /**
62
+ * Extract keywords from content
63
+ */
64
+ extractKeywords(content) {
65
+ const words = content
66
+ .split(/\s+/)
67
+ .map((w) => w.replace(/[^a-z0-9-]/g, ''))
68
+ .filter((w) => w.length > 2);
69
+ return new Set(words);
70
+ }
71
+ /**
72
+ * Score complexity level based on keyword matches
73
+ */
74
+ scoreComplexity(keywords, level) {
75
+ const levelKeywords = ModelRules_1.COMPLEXITY_KEYWORDS[level];
76
+ let score = 0;
77
+ levelKeywords.forEach((keyword) => {
78
+ if (keywords.has(keyword.toLowerCase())) {
79
+ score += 1;
80
+ }
81
+ });
82
+ // Apply weights based on level
83
+ const weights = {
84
+ [types_1.TaskComplexity.SIMPLE]: 1.0,
85
+ [types_1.TaskComplexity.MODERATE]: 1.2,
86
+ [types_1.TaskComplexity.COMPLEX]: 1.5,
87
+ [types_1.TaskComplexity.CRITICAL]: 2.0,
88
+ };
89
+ return score * weights[level];
90
+ }
91
+ /**
92
+ * Determine final complexity from scores
93
+ */
94
+ determineComplexity(scores) {
95
+ let maxScore = 0;
96
+ let complexity = types_1.TaskComplexity.SIMPLE;
97
+ Object.entries(scores).forEach(([level, score]) => {
98
+ if (score > maxScore) {
99
+ maxScore = score;
100
+ complexity = level;
101
+ }
102
+ });
103
+ // If all scores are zero, default to MODERATE
104
+ if (maxScore === 0) {
105
+ return types_1.TaskComplexity.MODERATE;
106
+ }
107
+ return complexity;
108
+ }
109
+ /**
110
+ * Calculate confidence in complexity determination
111
+ */
112
+ calculateConfidence(scores, selectedComplexity) {
113
+ const selectedScore = scores[selectedComplexity];
114
+ const totalScore = Object.values(scores).reduce((sum, s) => sum + s, 0);
115
+ if (totalScore === 0) {
116
+ return 0.5; // Low confidence with no keyword matches
117
+ }
118
+ return Math.min(selectedScore / totalScore, 1.0);
119
+ }
120
+ /**
121
+ * Estimate token count based on complexity
122
+ */
123
+ estimateTokens(complexity, content) {
124
+ const baseTokens = content.length / 4; // Rough estimate: 1 token per 4 chars
125
+ const multipliers = {
126
+ [types_1.TaskComplexity.SIMPLE]: 1.0,
127
+ [types_1.TaskComplexity.MODERATE]: 1.5,
128
+ [types_1.TaskComplexity.COMPLEX]: 2.5,
129
+ [types_1.TaskComplexity.CRITICAL]: 3.5,
130
+ };
131
+ return Math.round(baseTokens * multipliers[complexity]);
132
+ }
133
+ /**
134
+ * Check if task requires advanced reasoning
135
+ */
136
+ requiresReasoning(keywords) {
137
+ const reasoningKeywords = [
138
+ 'algorithm',
139
+ 'optimize',
140
+ 'design',
141
+ 'architecture',
142
+ 'pattern',
143
+ 'edge case',
144
+ 'property-based',
145
+ ];
146
+ return reasoningKeywords.some((kw) => keywords.has(kw));
147
+ }
148
+ /**
149
+ * Check if task requires security analysis
150
+ */
151
+ requiresSecurity(keywords) {
152
+ const securityKeywords = [
153
+ 'security',
154
+ 'authentication',
155
+ 'authorization',
156
+ 'encryption',
157
+ 'vulnerability',
158
+ 'injection',
159
+ 'xss',
160
+ 'csrf',
161
+ ];
162
+ return securityKeywords.some((kw) => keywords.has(kw));
163
+ }
164
+ /**
165
+ * Check if task requires performance analysis
166
+ */
167
+ requiresPerformance(keywords) {
168
+ const performanceKeywords = [
169
+ 'performance',
170
+ 'optimization',
171
+ 'memory',
172
+ 'leak',
173
+ 'bottleneck',
174
+ 'concurrent',
175
+ 'parallel',
176
+ 'scale',
177
+ ];
178
+ return performanceKeywords.some((kw) => keywords.has(kw));
179
+ }
180
+ }
181
+ exports.ComplexityAnalyzer = ComplexityAnalyzer;
182
+ //# sourceMappingURL=ComplexityAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComplexityAnalyzer.js","sourceRoot":"","sources":["../../../src/core/routing/ComplexityAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Cost Tracker
3
+ * Tracks model usage costs and provides analytics
4
+ */
5
+ import { AIModel, ModelCost, RouterStats } from './types';
6
+ import { SwarmMemoryManager } from '../memory/SwarmMemoryManager';
7
+ import { EventBus } from '../EventBus';
8
+ export declare class CostTracker {
9
+ private memoryStore;
10
+ private eventBus;
11
+ private costs;
12
+ private sessionStartTime;
13
+ constructor(memoryStore: SwarmMemoryManager, eventBus: EventBus);
14
+ /**
15
+ * Initialize cost tracking for all models
16
+ */
17
+ private initializeCosts;
18
+ /**
19
+ * Track cost for a model usage
20
+ */
21
+ trackCost(modelId: AIModel, tokens: number): Promise<void>;
22
+ /**
23
+ * Persist costs to SwarmMemoryManager
24
+ */
25
+ private persistCosts;
26
+ /**
27
+ * Load costs from SwarmMemoryManager
28
+ */
29
+ loadCosts(): Promise<void>;
30
+ /**
31
+ * Get router statistics
32
+ */
33
+ getStats(): Promise<RouterStats>;
34
+ /**
35
+ * Calculate average cost per test generated
36
+ */
37
+ private calculateAvgCostPerTest;
38
+ /**
39
+ * Export cost dashboard data
40
+ */
41
+ exportCostDashboard(): Promise<any>;
42
+ /**
43
+ * Format duration in human-readable format
44
+ */
45
+ private formatDuration;
46
+ /**
47
+ * Reset cost tracking (for testing)
48
+ */
49
+ reset(): Promise<void>;
50
+ /**
51
+ * Get cost for specific model
52
+ */
53
+ getModelCost(modelId: AIModel): ModelCost | undefined;
54
+ }
55
+ //# sourceMappingURL=CostTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CostTracker.d.ts","sourceRoot":"","sources":["../../../src/core/routing/CostTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,gBAAgB,CAAS;gBAErB,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ;IAQ/D;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BhE;;OAEG;YACW,YAAY;IAQ1B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBhC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC;IAgCtC;;OAEG;YACW,uBAAuB;IAqBrC;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC;IAmCzC;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS;CAGtD"}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ /**
3
+ * Cost Tracker
4
+ * Tracks model usage costs and provides analytics
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CostTracker = void 0;
8
+ const types_1 = require("./types");
9
+ const ModelRules_1 = require("./ModelRules");
10
+ class CostTracker {
11
+ constructor(memoryStore, eventBus) {
12
+ this.memoryStore = memoryStore;
13
+ this.eventBus = eventBus;
14
+ this.costs = new Map();
15
+ this.sessionStartTime = Date.now();
16
+ this.initializeCosts();
17
+ }
18
+ /**
19
+ * Initialize cost tracking for all models
20
+ */
21
+ initializeCosts() {
22
+ Object.values(types_1.AIModel).forEach((model) => {
23
+ this.costs.set(model, {
24
+ modelId: model,
25
+ tokensUsed: 0,
26
+ estimatedCost: 0,
27
+ requestCount: 0,
28
+ avgTokensPerRequest: 0,
29
+ timestamp: Date.now(),
30
+ });
31
+ });
32
+ }
33
+ /**
34
+ * Track cost for a model usage
35
+ */
36
+ async trackCost(modelId, tokens) {
37
+ const cost = this.costs.get(modelId);
38
+ if (!cost) {
39
+ throw new Error(`Unknown model: ${modelId}`);
40
+ }
41
+ const capability = ModelRules_1.MODEL_CAPABILITIES[modelId];
42
+ const estimatedCost = tokens * capability.costPerToken;
43
+ // Update local cost tracking
44
+ cost.tokensUsed += tokens;
45
+ cost.estimatedCost += estimatedCost;
46
+ cost.requestCount += 1;
47
+ cost.avgTokensPerRequest = cost.tokensUsed / cost.requestCount;
48
+ cost.timestamp = Date.now();
49
+ this.costs.set(modelId, cost);
50
+ // Persist to SwarmMemoryManager
51
+ await this.persistCosts();
52
+ // Emit cost tracking event
53
+ this.eventBus.emit('router:cost-tracked', {
54
+ model: modelId,
55
+ tokens,
56
+ cost: estimatedCost,
57
+ totalCost: cost.estimatedCost,
58
+ });
59
+ }
60
+ /**
61
+ * Persist costs to SwarmMemoryManager
62
+ */
63
+ async persistCosts() {
64
+ const costsArray = Array.from(this.costs.values());
65
+ await this.memoryStore.store('routing/costs', costsArray, {
66
+ partition: 'coordination',
67
+ ttl: 86400, // 24 hours
68
+ });
69
+ }
70
+ /**
71
+ * Load costs from SwarmMemoryManager
72
+ */
73
+ async loadCosts() {
74
+ try {
75
+ const stored = await this.memoryStore.retrieve('routing/costs', {
76
+ partition: 'coordination',
77
+ });
78
+ if (stored && Array.isArray(stored)) {
79
+ stored.forEach((cost) => {
80
+ this.costs.set(cost.modelId, cost);
81
+ });
82
+ }
83
+ }
84
+ catch (error) {
85
+ // No stored costs, use initialized values
86
+ }
87
+ }
88
+ /**
89
+ * Get router statistics
90
+ */
91
+ async getStats() {
92
+ const costsArray = Array.from(this.costs.values());
93
+ const totalRequests = costsArray.reduce((sum, c) => sum + c.requestCount, 0);
94
+ const totalCost = costsArray.reduce((sum, c) => sum + c.estimatedCost, 0);
95
+ // Calculate cost savings vs single model (Claude Sonnet 4.5)
96
+ const baselineModel = ModelRules_1.MODEL_CAPABILITIES[types_1.AIModel.CLAUDE_SONNET_4_5];
97
+ const totalTokens = costsArray.reduce((sum, c) => sum + c.tokensUsed, 0);
98
+ const baselineCost = totalTokens * baselineModel.costPerToken;
99
+ const costSavings = baselineCost - totalCost;
100
+ // Model distribution
101
+ const modelDistribution = {};
102
+ Object.values(types_1.AIModel).forEach((model) => {
103
+ const cost = this.costs.get(model);
104
+ modelDistribution[model] = cost?.requestCount || 0;
105
+ });
106
+ // Average costs
107
+ const avgCostPerTask = totalRequests > 0 ? totalCost / totalRequests : 0;
108
+ const avgCostPerTest = await this.calculateAvgCostPerTest();
109
+ return {
110
+ totalRequests,
111
+ totalCost,
112
+ costSavings,
113
+ modelDistribution,
114
+ avgCostPerTask,
115
+ avgCostPerTest,
116
+ };
117
+ }
118
+ /**
119
+ * Calculate average cost per test generated
120
+ */
121
+ async calculateAvgCostPerTest() {
122
+ try {
123
+ // Get test count from memory
124
+ const testMetrics = await this.memoryStore.retrieve('aqe/test-metrics', {
125
+ partition: 'coordination',
126
+ });
127
+ if (testMetrics && typeof testMetrics === 'object' && 'totalTests' in testMetrics) {
128
+ const totalTests = testMetrics.totalTests;
129
+ if (totalTests > 0) {
130
+ const stats = await this.getStats();
131
+ return stats.totalCost / totalTests;
132
+ }
133
+ }
134
+ }
135
+ catch (error) {
136
+ // No test metrics available
137
+ }
138
+ return 0;
139
+ }
140
+ /**
141
+ * Export cost dashboard data
142
+ */
143
+ async exportCostDashboard() {
144
+ const stats = await this.getStats();
145
+ const costsArray = Array.from(this.costs.values());
146
+ return {
147
+ summary: {
148
+ totalCost: stats.totalCost.toFixed(4),
149
+ totalRequests: stats.totalRequests,
150
+ costSavings: stats.costSavings.toFixed(4),
151
+ savingsPercentage: stats.totalCost > 0
152
+ ? ((stats.costSavings / (stats.totalCost + stats.costSavings)) * 100).toFixed(2)
153
+ : '0.00',
154
+ avgCostPerTask: stats.avgCostPerTask.toFixed(4),
155
+ avgCostPerTest: stats.avgCostPerTest.toFixed(4),
156
+ sessionDuration: this.formatDuration(Date.now() - this.sessionStartTime),
157
+ },
158
+ models: costsArray.map((cost) => {
159
+ const capability = ModelRules_1.MODEL_CAPABILITIES[cost.modelId];
160
+ return {
161
+ model: cost.modelId,
162
+ requests: cost.requestCount,
163
+ tokensUsed: cost.tokensUsed,
164
+ cost: cost.estimatedCost.toFixed(4),
165
+ avgTokensPerRequest: Math.round(cost.avgTokensPerRequest),
166
+ costPerToken: capability.costPerToken,
167
+ percentage: stats.totalCost > 0
168
+ ? ((cost.estimatedCost / stats.totalCost) * 100).toFixed(2)
169
+ : '0.00',
170
+ };
171
+ }),
172
+ distribution: stats.modelDistribution,
173
+ timestamp: new Date().toISOString(),
174
+ };
175
+ }
176
+ /**
177
+ * Format duration in human-readable format
178
+ */
179
+ formatDuration(ms) {
180
+ const seconds = Math.floor(ms / 1000);
181
+ const minutes = Math.floor(seconds / 60);
182
+ const hours = Math.floor(minutes / 60);
183
+ if (hours > 0) {
184
+ return `${hours}h ${minutes % 60}m`;
185
+ }
186
+ else if (minutes > 0) {
187
+ return `${minutes}m ${seconds % 60}s`;
188
+ }
189
+ else {
190
+ return `${seconds}s`;
191
+ }
192
+ }
193
+ /**
194
+ * Reset cost tracking (for testing)
195
+ */
196
+ async reset() {
197
+ this.costs.clear();
198
+ this.initializeCosts();
199
+ this.sessionStartTime = Date.now();
200
+ await this.persistCosts();
201
+ }
202
+ /**
203
+ * Get cost for specific model
204
+ */
205
+ getModelCost(modelId) {
206
+ return this.costs.get(modelId);
207
+ }
208
+ }
209
+ exports.CostTracker = CostTracker;
210
+ //# sourceMappingURL=CostTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CostTracker.js","sourceRoot":"","sources":["../../../src/core/routing/CostTracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * FleetManager Integration for Multi-Model Router
3
+ * Integrates the AdaptiveModelRouter with FleetManager
4
+ */
5
+ import { FleetManager } from '../FleetManager';
6
+ import { AdaptiveModelRouter } from './AdaptiveModelRouter';
7
+ import { SwarmMemoryManager } from '../memory/SwarmMemoryManager';
8
+ import { EventBus } from '../EventBus';
9
+ import { RouterConfig } from './types';
10
+ /**
11
+ * Extended FleetManager with routing capabilities
12
+ */
13
+ export declare class RoutingEnabledFleetManager {
14
+ private fleetManager;
15
+ private router;
16
+ private memoryStore;
17
+ private eventBus;
18
+ constructor(fleetManager: FleetManager, memoryStore: SwarmMemoryManager, eventBus: EventBus, routerConfig?: Partial<RouterConfig>);
19
+ /**
20
+ * Setup event handlers for router integration
21
+ */
22
+ private setupEventHandlers;
23
+ /**
24
+ * Handle task submission - select optimal model
25
+ */
26
+ private handleTaskSubmitted;
27
+ /**
28
+ * Handle task completion - track actual costs
29
+ */
30
+ private handleTaskCompleted;
31
+ /**
32
+ * Handle model failure - select fallback
33
+ */
34
+ private handleModelFailure;
35
+ /**
36
+ * Estimate tokens from result (fallback when not provided)
37
+ */
38
+ private estimateTokensFromResult;
39
+ /**
40
+ * Get router statistics
41
+ */
42
+ getRouterStats(): Promise<import("./types").RouterStats>;
43
+ /**
44
+ * Export cost dashboard
45
+ */
46
+ exportCostDashboard(): Promise<any>;
47
+ /**
48
+ * Enable or disable routing
49
+ */
50
+ setRoutingEnabled(enabled: boolean): void;
51
+ /**
52
+ * Update router configuration
53
+ */
54
+ updateRouterConfig(config: Partial<RouterConfig>): void;
55
+ /**
56
+ * Get underlying router instance
57
+ */
58
+ getRouter(): AdaptiveModelRouter;
59
+ /**
60
+ * Get underlying fleet manager instance
61
+ */
62
+ getFleetManager(): FleetManager;
63
+ }
64
+ /**
65
+ * Factory function to create routing-enabled fleet manager
66
+ */
67
+ export declare function createRoutingEnabledFleetManager(fleetManager: FleetManager, memoryStore: SwarmMemoryManager, eventBus: EventBus, routerConfig?: Partial<RouterConfig>): RoutingEnabledFleetManager;
68
+ //# sourceMappingURL=FleetManagerIntegration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FleetManagerIntegration.d.ts","sourceRoot":"","sources":["../../../src/core/routing/FleetManagerIntegration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAA2B,YAAY,EAAE,MAAM,SAAS,CAAC;AAGhE;;GAEG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAW;gBAGzB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,kBAAkB,EAC/B,QAAQ,EAAE,QAAQ,EAClB,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAUtC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;YACW,mBAAmB;IAwBjC;;OAEG;YACW,mBAAmB;IA6BjC;;OAEG;YACW,kBAAkB;IAwBhC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAOhC;;OAEG;IACG,cAAc;IAIpB;;OAEG;IACG,mBAAmB;IAIzB;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIzC;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAIvD;;OAEG;IACH,SAAS,IAAI,mBAAmB;IAIhC;;OAEG;IACH,eAAe,IAAI,YAAY;CAGhC;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,kBAAkB,EAC/B,QAAQ,EAAE,QAAQ,EAClB,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GACnC,0BAA0B,CAO5B"}