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,170 @@
1
+ "use strict";
2
+ /**
3
+ * FleetManager Integration for Multi-Model Router
4
+ * Integrates the AdaptiveModelRouter with FleetManager
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RoutingEnabledFleetManager = void 0;
8
+ exports.createRoutingEnabledFleetManager = createRoutingEnabledFleetManager;
9
+ const AdaptiveModelRouter_1 = require("./AdaptiveModelRouter");
10
+ const QETask_1 = require("./QETask");
11
+ /**
12
+ * Extended FleetManager with routing capabilities
13
+ */
14
+ class RoutingEnabledFleetManager {
15
+ constructor(fleetManager, memoryStore, eventBus, routerConfig) {
16
+ this.fleetManager = fleetManager;
17
+ this.memoryStore = memoryStore;
18
+ this.eventBus = eventBus;
19
+ this.router = new AdaptiveModelRouter_1.AdaptiveModelRouter(memoryStore, eventBus, routerConfig);
20
+ this.setupEventHandlers();
21
+ }
22
+ /**
23
+ * Setup event handlers for router integration
24
+ */
25
+ setupEventHandlers() {
26
+ // Listen for task submissions to perform model selection
27
+ this.eventBus.on('task:submitted', async (data) => {
28
+ await this.handleTaskSubmitted(data.task);
29
+ });
30
+ // Listen for task completions to track costs
31
+ this.eventBus.on('task:completed', async (data) => {
32
+ await this.handleTaskCompleted(data.task, data.result);
33
+ });
34
+ // Listen for model failures to trigger fallback
35
+ this.eventBus.on('model:failed', async (data) => {
36
+ await this.handleModelFailure(data.task, data.model, data.error);
37
+ });
38
+ }
39
+ /**
40
+ * Handle task submission - select optimal model
41
+ */
42
+ async handleTaskSubmitted(task) {
43
+ try {
44
+ const qeTask = (0, QETask_1.taskToQETask)(task);
45
+ const selection = await this.router.selectModel(qeTask);
46
+ // Store model selection in task metadata
47
+ task.metadata = {
48
+ ...task.metadata,
49
+ modelSelection: selection,
50
+ };
51
+ // Emit model selection event
52
+ this.eventBus.emit('router:model-assigned', {
53
+ taskId: task.getId(),
54
+ model: selection.model,
55
+ complexity: selection.complexity,
56
+ estimatedCost: selection.estimatedCost,
57
+ });
58
+ }
59
+ catch (error) {
60
+ console.error('Failed to select model for task:', error);
61
+ // Continue with default model
62
+ }
63
+ }
64
+ /**
65
+ * Handle task completion - track actual costs
66
+ */
67
+ async handleTaskCompleted(task, result) {
68
+ try {
69
+ const metadata = task.metadata;
70
+ if (!metadata || !metadata.modelSelection) {
71
+ return;
72
+ }
73
+ const selection = metadata.modelSelection;
74
+ const actualTokens = result.tokensUsed || this.estimateTokensFromResult(result);
75
+ // Track actual cost
76
+ await this.router.trackCost(selection.model, actualTokens);
77
+ // Calculate accuracy of cost estimation
78
+ const estimatedTokens = selection.estimatedCost / 0.00005; // Rough reverse calculation
79
+ const accuracy = actualTokens > 0 ? Math.abs(1 - estimatedTokens / actualTokens) : 0;
80
+ this.eventBus.emit('router:cost-accuracy', {
81
+ taskId: task.getId(),
82
+ model: selection.model,
83
+ estimatedTokens,
84
+ actualTokens,
85
+ accuracy,
86
+ });
87
+ }
88
+ catch (error) {
89
+ console.error('Failed to track task cost:', error);
90
+ }
91
+ }
92
+ /**
93
+ * Handle model failure - select fallback
94
+ */
95
+ async handleModelFailure(task, failedModel, error) {
96
+ try {
97
+ const qeTask = (0, QETask_1.taskToQETask)(task);
98
+ const fallbackModel = this.router.getFallbackModel(failedModel, qeTask);
99
+ // Update task metadata with fallback model
100
+ task.metadata = {
101
+ ...task.metadata,
102
+ fallbackModel,
103
+ originalModel: failedModel,
104
+ failureReason: error.message,
105
+ };
106
+ this.eventBus.emit('router:fallback-triggered', {
107
+ taskId: task.getId(),
108
+ failedModel,
109
+ fallbackModel,
110
+ error: error.message,
111
+ });
112
+ }
113
+ catch (error) {
114
+ console.error('Failed to handle model failure:', error);
115
+ }
116
+ }
117
+ /**
118
+ * Estimate tokens from result (fallback when not provided)
119
+ */
120
+ estimateTokensFromResult(result) {
121
+ if (!result)
122
+ return 0;
123
+ const resultStr = JSON.stringify(result);
124
+ return Math.round(resultStr.length / 4); // Rough estimate
125
+ }
126
+ /**
127
+ * Get router statistics
128
+ */
129
+ async getRouterStats() {
130
+ return await this.router.getStats();
131
+ }
132
+ /**
133
+ * Export cost dashboard
134
+ */
135
+ async exportCostDashboard() {
136
+ return await this.router.exportCostDashboard();
137
+ }
138
+ /**
139
+ * Enable or disable routing
140
+ */
141
+ setRoutingEnabled(enabled) {
142
+ this.router.setEnabled(enabled);
143
+ }
144
+ /**
145
+ * Update router configuration
146
+ */
147
+ updateRouterConfig(config) {
148
+ this.router.updateConfig(config);
149
+ }
150
+ /**
151
+ * Get underlying router instance
152
+ */
153
+ getRouter() {
154
+ return this.router;
155
+ }
156
+ /**
157
+ * Get underlying fleet manager instance
158
+ */
159
+ getFleetManager() {
160
+ return this.fleetManager;
161
+ }
162
+ }
163
+ exports.RoutingEnabledFleetManager = RoutingEnabledFleetManager;
164
+ /**
165
+ * Factory function to create routing-enabled fleet manager
166
+ */
167
+ function createRoutingEnabledFleetManager(fleetManager, memoryStore, eventBus, routerConfig) {
168
+ return new RoutingEnabledFleetManager(fleetManager, memoryStore, eventBus, routerConfig);
169
+ }
170
+ //# sourceMappingURL=FleetManagerIntegration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FleetManagerIntegration.js","sourceRoot":"","sources":["../../../src/core/routing/FleetManagerIntegration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Model Selection Rules
3
+ * Task-specific and complexity-based model selection rules
4
+ */
5
+ import { AIModel, TaskComplexity, ModelCapability } from './types';
6
+ /**
7
+ * Model capabilities and pricing
8
+ */
9
+ export declare const MODEL_CAPABILITIES: Record<AIModel, ModelCapability>;
10
+ /**
11
+ * Task-specific model selection rules by agent type and complexity
12
+ */
13
+ export declare const MODEL_RULES: Record<string, Record<TaskComplexity, AIModel>>;
14
+ /**
15
+ * Fallback chain for each model (ordered by capability)
16
+ */
17
+ export declare const FALLBACK_CHAINS: Record<AIModel, AIModel[]>;
18
+ /**
19
+ * Complexity detection keywords
20
+ */
21
+ export declare const COMPLEXITY_KEYWORDS: {
22
+ simple: string[];
23
+ moderate: string[];
24
+ complex: string[];
25
+ critical: string[];
26
+ };
27
+ /**
28
+ * Default router configuration
29
+ */
30
+ export declare const DEFAULT_ROUTER_CONFIG: {
31
+ enabled: boolean;
32
+ defaultModel: AIModel;
33
+ enableCostTracking: boolean;
34
+ enableFallback: boolean;
35
+ maxRetries: number;
36
+ costThreshold: number;
37
+ };
38
+ //# sourceMappingURL=ModelRules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelRules.d.ts","sourceRoot":"","sources":["../../../src/core/routing/ModelRules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,OAAO,EAAE,eAAe,CAiC/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CA2CvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAqBtD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;CAqC/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;CAOjC,CAAC"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ /**
3
+ * Model Selection Rules
4
+ * Task-specific and complexity-based model selection rules
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.DEFAULT_ROUTER_CONFIG = exports.COMPLEXITY_KEYWORDS = exports.FALLBACK_CHAINS = exports.MODEL_RULES = exports.MODEL_CAPABILITIES = void 0;
8
+ const types_1 = require("./types");
9
+ /**
10
+ * Model capabilities and pricing
11
+ */
12
+ exports.MODEL_CAPABILITIES = {
13
+ [types_1.AIModel.GPT_3_5_TURBO]: {
14
+ model: types_1.AIModel.GPT_3_5_TURBO,
15
+ maxTokens: 4096,
16
+ costPerToken: 0.000002, // $0.002 per 1K tokens
17
+ strengths: ['Fast', 'Cheap', 'Good for simple tasks'],
18
+ weaknesses: ['Limited reasoning', 'Less accurate on complex tasks'],
19
+ rateLimitPerMin: 3500,
20
+ },
21
+ [types_1.AIModel.CLAUDE_HAIKU]: {
22
+ model: types_1.AIModel.CLAUDE_HAIKU,
23
+ maxTokens: 8192,
24
+ costPerToken: 0.000004, // $0.004 per 1K tokens
25
+ strengths: ['Balanced speed/quality', 'Good reasoning', 'Cost-effective'],
26
+ weaknesses: ['Not best for critical tasks'],
27
+ rateLimitPerMin: 2000,
28
+ },
29
+ [types_1.AIModel.GPT_4]: {
30
+ model: types_1.AIModel.GPT_4,
31
+ maxTokens: 8192,
32
+ costPerToken: 0.00003, // $0.03 per 1K tokens
33
+ strengths: ['Excellent reasoning', 'Complex problem solving'],
34
+ weaknesses: ['Expensive', 'Slower'],
35
+ rateLimitPerMin: 500,
36
+ },
37
+ [types_1.AIModel.CLAUDE_SONNET_4_5]: {
38
+ model: types_1.AIModel.CLAUDE_SONNET_4_5,
39
+ maxTokens: 16384,
40
+ costPerToken: 0.00005, // $0.05 per 1K tokens
41
+ strengths: ['Best reasoning', 'Critical tasks', 'Security analysis'],
42
+ weaknesses: ['Most expensive', 'Overkill for simple tasks'],
43
+ rateLimitPerMin: 200,
44
+ },
45
+ };
46
+ /**
47
+ * Task-specific model selection rules by agent type and complexity
48
+ */
49
+ exports.MODEL_RULES = {
50
+ 'qe-test-generator': {
51
+ [types_1.TaskComplexity.SIMPLE]: types_1.AIModel.GPT_3_5_TURBO, // Unit tests, basic logic
52
+ [types_1.TaskComplexity.MODERATE]: types_1.AIModel.CLAUDE_HAIKU, // Integration tests
53
+ [types_1.TaskComplexity.COMPLEX]: types_1.AIModel.GPT_4, // Property-based, edge cases
54
+ [types_1.TaskComplexity.CRITICAL]: types_1.AIModel.CLAUDE_SONNET_4_5, // Security, performance
55
+ },
56
+ 'qe-test-executor': {
57
+ [types_1.TaskComplexity.SIMPLE]: types_1.AIModel.GPT_3_5_TURBO,
58
+ [types_1.TaskComplexity.MODERATE]: types_1.AIModel.GPT_3_5_TURBO,
59
+ [types_1.TaskComplexity.COMPLEX]: types_1.AIModel.CLAUDE_HAIKU,
60
+ [types_1.TaskComplexity.CRITICAL]: types_1.AIModel.GPT_4,
61
+ },
62
+ 'qe-coverage-analyzer': {
63
+ [types_1.TaskComplexity.SIMPLE]: types_1.AIModel.CLAUDE_HAIKU,
64
+ [types_1.TaskComplexity.MODERATE]: types_1.AIModel.CLAUDE_HAIKU,
65
+ [types_1.TaskComplexity.COMPLEX]: types_1.AIModel.GPT_4,
66
+ [types_1.TaskComplexity.CRITICAL]: types_1.AIModel.CLAUDE_SONNET_4_5,
67
+ },
68
+ 'qe-quality-gate': {
69
+ [types_1.TaskComplexity.SIMPLE]: types_1.AIModel.CLAUDE_HAIKU,
70
+ [types_1.TaskComplexity.MODERATE]: types_1.AIModel.GPT_4,
71
+ [types_1.TaskComplexity.COMPLEX]: types_1.AIModel.GPT_4,
72
+ [types_1.TaskComplexity.CRITICAL]: types_1.AIModel.CLAUDE_SONNET_4_5,
73
+ },
74
+ 'qe-performance-tester': {
75
+ [types_1.TaskComplexity.SIMPLE]: types_1.AIModel.CLAUDE_HAIKU,
76
+ [types_1.TaskComplexity.MODERATE]: types_1.AIModel.GPT_4,
77
+ [types_1.TaskComplexity.COMPLEX]: types_1.AIModel.GPT_4,
78
+ [types_1.TaskComplexity.CRITICAL]: types_1.AIModel.CLAUDE_SONNET_4_5,
79
+ },
80
+ 'qe-security-scanner': {
81
+ [types_1.TaskComplexity.SIMPLE]: types_1.AIModel.GPT_4,
82
+ [types_1.TaskComplexity.MODERATE]: types_1.AIModel.GPT_4,
83
+ [types_1.TaskComplexity.COMPLEX]: types_1.AIModel.CLAUDE_SONNET_4_5,
84
+ [types_1.TaskComplexity.CRITICAL]: types_1.AIModel.CLAUDE_SONNET_4_5,
85
+ },
86
+ 'default': {
87
+ [types_1.TaskComplexity.SIMPLE]: types_1.AIModel.GPT_3_5_TURBO,
88
+ [types_1.TaskComplexity.MODERATE]: types_1.AIModel.CLAUDE_HAIKU,
89
+ [types_1.TaskComplexity.COMPLEX]: types_1.AIModel.GPT_4,
90
+ [types_1.TaskComplexity.CRITICAL]: types_1.AIModel.CLAUDE_SONNET_4_5,
91
+ },
92
+ };
93
+ /**
94
+ * Fallback chain for each model (ordered by capability)
95
+ */
96
+ exports.FALLBACK_CHAINS = {
97
+ [types_1.AIModel.GPT_3_5_TURBO]: [
98
+ types_1.AIModel.CLAUDE_HAIKU,
99
+ types_1.AIModel.GPT_4,
100
+ types_1.AIModel.CLAUDE_SONNET_4_5,
101
+ ],
102
+ [types_1.AIModel.CLAUDE_HAIKU]: [
103
+ types_1.AIModel.GPT_3_5_TURBO,
104
+ types_1.AIModel.GPT_4,
105
+ types_1.AIModel.CLAUDE_SONNET_4_5,
106
+ ],
107
+ [types_1.AIModel.GPT_4]: [
108
+ types_1.AIModel.CLAUDE_SONNET_4_5,
109
+ types_1.AIModel.CLAUDE_HAIKU,
110
+ types_1.AIModel.GPT_3_5_TURBO,
111
+ ],
112
+ [types_1.AIModel.CLAUDE_SONNET_4_5]: [
113
+ types_1.AIModel.GPT_4,
114
+ types_1.AIModel.CLAUDE_HAIKU,
115
+ types_1.AIModel.GPT_3_5_TURBO,
116
+ ],
117
+ };
118
+ /**
119
+ * Complexity detection keywords
120
+ */
121
+ exports.COMPLEXITY_KEYWORDS = {
122
+ [types_1.TaskComplexity.SIMPLE]: [
123
+ 'unit test',
124
+ 'basic',
125
+ 'simple',
126
+ 'getter',
127
+ 'setter',
128
+ 'validation',
129
+ 'mock',
130
+ ],
131
+ [types_1.TaskComplexity.MODERATE]: [
132
+ 'integration',
133
+ 'api',
134
+ 'endpoint',
135
+ 'database',
136
+ 'middleware',
137
+ 'component',
138
+ ],
139
+ [types_1.TaskComplexity.COMPLEX]: [
140
+ 'property-based',
141
+ 'edge case',
142
+ 'algorithm',
143
+ 'concurrent',
144
+ 'race condition',
145
+ 'optimization',
146
+ 'complex logic',
147
+ ],
148
+ [types_1.TaskComplexity.CRITICAL]: [
149
+ 'security',
150
+ 'authentication',
151
+ 'authorization',
152
+ 'encryption',
153
+ 'performance',
154
+ 'memory leak',
155
+ 'critical path',
156
+ 'production',
157
+ ],
158
+ };
159
+ /**
160
+ * Default router configuration
161
+ */
162
+ exports.DEFAULT_ROUTER_CONFIG = {
163
+ enabled: false, // Feature flag - off by default
164
+ defaultModel: types_1.AIModel.CLAUDE_SONNET_4_5,
165
+ enableCostTracking: true,
166
+ enableFallback: true,
167
+ maxRetries: 3,
168
+ costThreshold: 0.50, // Max $0.50 per task
169
+ };
170
+ //# sourceMappingURL=ModelRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelRules.js","sourceRoot":"","sources":["../../../src/core/routing/ModelRules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * QETask Type Definition
3
+ * Bridge between Task and ModelRouter for model selection
4
+ */
5
+ import { Task } from '../Task';
6
+ import { QETask as QETaskType } from './types';
7
+ export type QETask = QETaskType;
8
+ /**
9
+ * Convert Task to QETask for router compatibility
10
+ */
11
+ export declare function taskToQETask(task: Task): QETask;
12
+ //# sourceMappingURL=QETask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QETask.d.ts","sourceRoot":"","sources":["../../../src/core/routing/QETask.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAG/C,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC;AAEhC;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAS/C"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /**
3
+ * QETask Type Definition
4
+ * Bridge between Task and ModelRouter for model selection
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.taskToQETask = taskToQETask;
8
+ /**
9
+ * Convert Task to QETask for router compatibility
10
+ */
11
+ function taskToQETask(task) {
12
+ return {
13
+ id: task.getId(),
14
+ type: task.getType(),
15
+ description: task.getName(),
16
+ data: task.getData(),
17
+ priority: 1, // Default priority
18
+ metadata: {},
19
+ };
20
+ }
21
+ //# sourceMappingURL=QETask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QETask.js","sourceRoot":"","sources":["../../../src/core/routing/QETask.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAWH,oCASC;AAZD;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAU;IACrC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;QAChB,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;QACpB,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE;QAC3B,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;QACpB,QAAQ,EAAE,CAAC,EAAE,mBAAmB;QAChC,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Multi-Model Router Module
3
+ * Export all routing functionality
4
+ */
5
+ export * from './types';
6
+ export * from './ModelRules';
7
+ export * from './ComplexityAnalyzer';
8
+ export * from './CostTracker';
9
+ export * from './AdaptiveModelRouter';
10
+ export * from './QETask';
11
+ export * from './FleetManagerIntegration';
12
+ export { AIModel, TaskComplexity, ModelSelection, RouterConfig, RouterStats, ModelRouter, ModelCapability, ModelCost, TaskAnalysis, } from './types';
13
+ export { DEFAULT_ROUTER_CONFIG, MODEL_CAPABILITIES, MODEL_RULES, FALLBACK_CHAINS, COMPLEXITY_KEYWORDS, } from './ModelRules';
14
+ export { AdaptiveModelRouter } from './AdaptiveModelRouter';
15
+ export { ComplexityAnalyzer } from './ComplexityAnalyzer';
16
+ export { CostTracker } from './CostTracker';
17
+ export { QETask, taskToQETask } from './QETask';
18
+ export { RoutingEnabledFleetManager, createRoutingEnabledFleetManager, } from './FleetManagerIntegration';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/routing/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAG1C,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW,EACX,WAAW,EACX,eAAe,EACf,SAAS,EACT,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,GACjC,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /**
3
+ * Multi-Model Router Module
4
+ * Export all routing functionality
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.createRoutingEnabledFleetManager = exports.RoutingEnabledFleetManager = exports.taskToQETask = exports.CostTracker = exports.ComplexityAnalyzer = exports.AdaptiveModelRouter = exports.COMPLEXITY_KEYWORDS = exports.FALLBACK_CHAINS = exports.MODEL_RULES = exports.MODEL_CAPABILITIES = exports.DEFAULT_ROUTER_CONFIG = exports.TaskComplexity = exports.AIModel = void 0;
22
+ __exportStar(require("./types"), exports);
23
+ __exportStar(require("./ModelRules"), exports);
24
+ __exportStar(require("./ComplexityAnalyzer"), exports);
25
+ __exportStar(require("./CostTracker"), exports);
26
+ __exportStar(require("./AdaptiveModelRouter"), exports);
27
+ __exportStar(require("./QETask"), exports);
28
+ __exportStar(require("./FleetManagerIntegration"), exports);
29
+ // Re-export commonly used types
30
+ var types_1 = require("./types");
31
+ Object.defineProperty(exports, "AIModel", { enumerable: true, get: function () { return types_1.AIModel; } });
32
+ Object.defineProperty(exports, "TaskComplexity", { enumerable: true, get: function () { return types_1.TaskComplexity; } });
33
+ var ModelRules_1 = require("./ModelRules");
34
+ Object.defineProperty(exports, "DEFAULT_ROUTER_CONFIG", { enumerable: true, get: function () { return ModelRules_1.DEFAULT_ROUTER_CONFIG; } });
35
+ Object.defineProperty(exports, "MODEL_CAPABILITIES", { enumerable: true, get: function () { return ModelRules_1.MODEL_CAPABILITIES; } });
36
+ Object.defineProperty(exports, "MODEL_RULES", { enumerable: true, get: function () { return ModelRules_1.MODEL_RULES; } });
37
+ Object.defineProperty(exports, "FALLBACK_CHAINS", { enumerable: true, get: function () { return ModelRules_1.FALLBACK_CHAINS; } });
38
+ Object.defineProperty(exports, "COMPLEXITY_KEYWORDS", { enumerable: true, get: function () { return ModelRules_1.COMPLEXITY_KEYWORDS; } });
39
+ var AdaptiveModelRouter_1 = require("./AdaptiveModelRouter");
40
+ Object.defineProperty(exports, "AdaptiveModelRouter", { enumerable: true, get: function () { return AdaptiveModelRouter_1.AdaptiveModelRouter; } });
41
+ var ComplexityAnalyzer_1 = require("./ComplexityAnalyzer");
42
+ Object.defineProperty(exports, "ComplexityAnalyzer", { enumerable: true, get: function () { return ComplexityAnalyzer_1.ComplexityAnalyzer; } });
43
+ var CostTracker_1 = require("./CostTracker");
44
+ Object.defineProperty(exports, "CostTracker", { enumerable: true, get: function () { return CostTracker_1.CostTracker; } });
45
+ var QETask_1 = require("./QETask");
46
+ Object.defineProperty(exports, "taskToQETask", { enumerable: true, get: function () { return QETask_1.taskToQETask; } });
47
+ var FleetManagerIntegration_1 = require("./FleetManagerIntegration");
48
+ Object.defineProperty(exports, "RoutingEnabledFleetManager", { enumerable: true, get: function () { return FleetManagerIntegration_1.RoutingEnabledFleetManager; } });
49
+ Object.defineProperty(exports, "createRoutingEnabledFleetManager", { enumerable: true, get: function () { return FleetManagerIntegration_1.createRoutingEnabledFleetManager; } });
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/routing/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,+CAA6B;AAC7B,uDAAqC;AACrC,gDAA8B;AAC9B,wDAAsC;AACtC,2CAAyB;AACzB,4DAA0C;AAE1C,gCAAgC;AAChC,iCAUiB;AATf,gGAAA,OAAO,OAAA;AACP,uGAAA,cAAc,OAAA;AAUhB,2CAMsB;AALpB,mHAAA,qBAAqB,OAAA;AACrB,gHAAA,kBAAkB,OAAA;AAClB,yGAAA,WAAW,OAAA;AACX,6GAAA,eAAe,OAAA;AACf,iHAAA,mBAAmB,OAAA;AAGrB,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,mCAAgD;AAA/B,sGAAA,YAAY,OAAA;AAC7B,qEAGmC;AAFjC,qIAAA,0BAA0B,OAAA;AAC1B,2IAAA,gCAAgC,OAAA"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Multi-Model Router Types
3
+ * Core interfaces and types for the adaptive model routing system
4
+ */
5
+ /**
6
+ * QE Task interface for routing
7
+ */
8
+ export interface QETask {
9
+ id: string;
10
+ type: string;
11
+ description?: string;
12
+ data: any;
13
+ priority: number;
14
+ metadata?: Record<string, any>;
15
+ }
16
+ /**
17
+ * Supported AI models with their capabilities and costs
18
+ */
19
+ export declare enum AIModel {
20
+ GPT_4 = "gpt-4",
21
+ GPT_3_5_TURBO = "gpt-3.5-turbo",
22
+ CLAUDE_SONNET_4_5 = "claude-sonnet-4.5",
23
+ CLAUDE_HAIKU = "claude-haiku"
24
+ }
25
+ /**
26
+ * Task complexity levels for model selection
27
+ */
28
+ export declare enum TaskComplexity {
29
+ SIMPLE = "simple",// Basic logic, unit tests
30
+ MODERATE = "moderate",// Integration tests, standard patterns
31
+ COMPLEX = "complex",// Property-based, edge cases, algorithm design
32
+ CRITICAL = "critical"
33
+ }
34
+ /**
35
+ * Model selection result with reasoning
36
+ */
37
+ export interface ModelSelection {
38
+ model: AIModel;
39
+ complexity: TaskComplexity;
40
+ reasoning: string;
41
+ estimatedCost: number;
42
+ fallbackModels: AIModel[];
43
+ confidence: number;
44
+ }
45
+ /**
46
+ * Cost tracking per model
47
+ */
48
+ export interface ModelCost {
49
+ modelId: AIModel;
50
+ tokensUsed: number;
51
+ estimatedCost: number;
52
+ requestCount: number;
53
+ avgTokensPerRequest: number;
54
+ timestamp: number;
55
+ }
56
+ /**
57
+ * Router configuration
58
+ */
59
+ export interface RouterConfig {
60
+ enabled: boolean;
61
+ defaultModel: AIModel;
62
+ enableCostTracking: boolean;
63
+ enableFallback: boolean;
64
+ maxRetries: number;
65
+ costThreshold: number;
66
+ }
67
+ /**
68
+ * Model capability definition
69
+ */
70
+ export interface ModelCapability {
71
+ model: AIModel;
72
+ maxTokens: number;
73
+ costPerToken: number;
74
+ strengths: string[];
75
+ weaknesses: string[];
76
+ rateLimitPerMin: number;
77
+ }
78
+ /**
79
+ * Router statistics
80
+ */
81
+ export interface RouterStats {
82
+ totalRequests: number;
83
+ totalCost: number;
84
+ costSavings: number;
85
+ modelDistribution: Record<AIModel, number>;
86
+ avgCostPerTask: number;
87
+ avgCostPerTest: number;
88
+ }
89
+ /**
90
+ * Model selection strategy interface
91
+ */
92
+ export interface ModelSelectionStrategy {
93
+ selectModel(task: QETask, complexity: TaskComplexity): AIModel;
94
+ getName(): string;
95
+ }
96
+ /**
97
+ * Core ModelRouter interface
98
+ */
99
+ export interface ModelRouter {
100
+ /**
101
+ * Select the optimal model for a given task
102
+ */
103
+ selectModel(task: QETask): Promise<ModelSelection>;
104
+ /**
105
+ * Track cost for a model usage
106
+ */
107
+ trackCost(modelId: AIModel, tokens: number): Promise<void>;
108
+ /**
109
+ * Get fallback model when primary fails
110
+ */
111
+ getFallbackModel(failedModel: AIModel, task: QETask): AIModel;
112
+ /**
113
+ * Get router statistics
114
+ */
115
+ getStats(): Promise<RouterStats>;
116
+ /**
117
+ * Export cost dashboard data
118
+ */
119
+ exportCostDashboard(): Promise<any>;
120
+ /**
121
+ * Analyze task complexity
122
+ */
123
+ analyzeComplexity(task: QETask): Promise<TaskComplexity>;
124
+ }
125
+ /**
126
+ * Task analysis result
127
+ */
128
+ export interface TaskAnalysis {
129
+ complexity: TaskComplexity;
130
+ estimatedTokens: number;
131
+ requiresReasoning: boolean;
132
+ requiresSecurity: boolean;
133
+ requiresPerformance: boolean;
134
+ confidence: number;
135
+ }
136
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/routing/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,oBAAY,OAAO;IACjB,KAAK,UAAU;IACf,aAAa,kBAAkB;IAC/B,iBAAiB,sBAAsB;IACvC,YAAY,iBAAiB;CAC9B;AAED;;GAEG;AACH,oBAAY,cAAc;IACxB,MAAM,WAAW,CAAQ,0BAA0B;IACnD,QAAQ,aAAa,CAAI,uCAAuC;IAChE,OAAO,YAAY,CAAM,+CAA+C;IACxE,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC;IAC/D,OAAO,IAAI,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEnD;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAE9D;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAEjC;;OAEG;IACH,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAEpC;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC1D;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,cAAc,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB"}