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,95 @@
1
+ /**
2
+ * Routing CLI Commands
3
+ *
4
+ * Commands for managing the Multi-Model Router (Phase 1 - v1.0.5)
5
+ * Provides enable/disable, status, dashboard, reporting, and stats functionality.
6
+ */
7
+ export interface RoutingCommandOptions {
8
+ config?: string;
9
+ format?: 'json' | 'table';
10
+ timeframe?: string;
11
+ export?: string;
12
+ verbose?: boolean;
13
+ }
14
+ export interface RoutingConfig {
15
+ multiModelRouter: {
16
+ enabled: boolean;
17
+ version: string;
18
+ defaultModel: string;
19
+ enableCostTracking: boolean;
20
+ enableFallback: boolean;
21
+ maxRetries: number;
22
+ costThreshold: number;
23
+ modelRules: {
24
+ simple: {
25
+ model: string;
26
+ maxTokens: number;
27
+ estimatedCost: number;
28
+ };
29
+ moderate: {
30
+ model: string;
31
+ maxTokens: number;
32
+ estimatedCost: number;
33
+ };
34
+ complex: {
35
+ model: string;
36
+ maxTokens: number;
37
+ estimatedCost: number;
38
+ };
39
+ critical: {
40
+ model: string;
41
+ maxTokens: number;
42
+ estimatedCost: number;
43
+ };
44
+ };
45
+ fallbackChains: Record<string, string[]>;
46
+ };
47
+ streaming: {
48
+ enabled: boolean;
49
+ progressInterval: number;
50
+ bufferEvents: boolean;
51
+ timeout: number;
52
+ };
53
+ }
54
+ export declare class RoutingCommand {
55
+ private static configPath;
56
+ /**
57
+ * Execute routing command
58
+ */
59
+ static execute(subcommand: string, options?: RoutingCommandOptions): Promise<void>;
60
+ /**
61
+ * Enable Multi-Model Router
62
+ */
63
+ private static enableRouting;
64
+ /**
65
+ * Disable Multi-Model Router
66
+ */
67
+ private static disableRouting;
68
+ /**
69
+ * Show routing status
70
+ */
71
+ private static showStatus;
72
+ /**
73
+ * Show cost dashboard
74
+ */
75
+ private static showDashboard;
76
+ /**
77
+ * Generate cost report
78
+ */
79
+ private static generateReport;
80
+ /**
81
+ * Show routing statistics
82
+ */
83
+ private static showStats;
84
+ /**
85
+ * Show command help
86
+ */
87
+ private static showHelp;
88
+ }
89
+ export declare function routingEnable(options: RoutingCommandOptions): Promise<void>;
90
+ export declare function routingDisable(options: RoutingCommandOptions): Promise<void>;
91
+ export declare function routingStatus(options: RoutingCommandOptions): Promise<void>;
92
+ export declare function routingDashboard(options: RoutingCommandOptions): Promise<void>;
93
+ export declare function routingReport(options: RoutingCommandOptions): Promise<void>;
94
+ export declare function routingStats(options: RoutingCommandOptions): Promise<void>;
95
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/routing/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,OAAO,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE;YACV,MAAM,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,CAAC;gBAAC,aAAa,EAAE,MAAM,CAAA;aAAE,CAAC;YACpE,QAAQ,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,CAAC;gBAAC,aAAa,EAAE,MAAM,CAAA;aAAE,CAAC;YACtE,OAAO,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,CAAC;gBAAC,aAAa,EAAE,MAAM,CAAA;aAAE,CAAC;YACrE,QAAQ,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,CAAC;gBAAC,aAAa,EAAE,MAAM,CAAA;aAAE,CAAC;SACvE,CAAC;QACF,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KAC1C,CAAC;IACF,SAAS,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,OAAO,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqC;IAE9D;;OAEG;WACU,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B5F;;OAEG;mBACkB,aAAa;IAuClC;;OAEG;mBACkB,cAAc;IA8BnC;;OAEG;mBACkB,UAAU;IAwD/B;;OAEG;mBACkB,aAAa;IAgElC;;OAEG;mBACkB,cAAc;IA+DnC;;OAEG;mBACkB,SAAS;IA2C9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ;CAoBxB;AAGD,wBAAsB,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjF;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAElF;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjF;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpF;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjF;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF"}
@@ -0,0 +1,399 @@
1
+ "use strict";
2
+ /**
3
+ * Routing CLI Commands
4
+ *
5
+ * Commands for managing the Multi-Model Router (Phase 1 - v1.0.5)
6
+ * Provides enable/disable, status, dashboard, reporting, and stats functionality.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.RoutingCommand = void 0;
46
+ exports.routingEnable = routingEnable;
47
+ exports.routingDisable = routingDisable;
48
+ exports.routingStatus = routingStatus;
49
+ exports.routingDashboard = routingDashboard;
50
+ exports.routingReport = routingReport;
51
+ exports.routingStats = routingStats;
52
+ const chalk_1 = __importDefault(require("chalk"));
53
+ const fs = __importStar(require("fs-extra"));
54
+ const SwarmMemoryManager_1 = require("../../../core/memory/SwarmMemoryManager");
55
+ class RoutingCommand {
56
+ /**
57
+ * Execute routing command
58
+ */
59
+ static async execute(subcommand, options = {}) {
60
+ switch (subcommand) {
61
+ case 'enable':
62
+ await this.enableRouting(options);
63
+ break;
64
+ case 'disable':
65
+ await this.disableRouting(options);
66
+ break;
67
+ case 'status':
68
+ await this.showStatus(options);
69
+ break;
70
+ case 'dashboard':
71
+ await this.showDashboard(options);
72
+ break;
73
+ case 'report':
74
+ await this.generateReport(options);
75
+ break;
76
+ case 'stats':
77
+ await this.showStats(options);
78
+ break;
79
+ default:
80
+ console.error(chalk_1.default.red(`āŒ Unknown routing command: ${subcommand}`));
81
+ this.showHelp();
82
+ process.exit(1);
83
+ }
84
+ }
85
+ /**
86
+ * Enable Multi-Model Router
87
+ */
88
+ static async enableRouting(options) {
89
+ try {
90
+ const configPath = options.config || this.configPath;
91
+ if (!await fs.pathExists(configPath)) {
92
+ console.error(chalk_1.default.red(`āŒ Routing config not found: ${configPath}`));
93
+ console.log(chalk_1.default.yellow('\nšŸ’” Run "aqe init" first to initialize the fleet'));
94
+ process.exit(1);
95
+ }
96
+ const config = await fs.readJson(configPath);
97
+ if (config.multiModelRouter.enabled) {
98
+ console.log(chalk_1.default.yellow('āš ļø Multi-Model Router is already enabled'));
99
+ return;
100
+ }
101
+ config.multiModelRouter.enabled = true;
102
+ await fs.writeJson(configPath, config, { spaces: 2 });
103
+ console.log(chalk_1.default.green('āœ… Multi-Model Router enabled'));
104
+ console.log(chalk_1.default.blue('\nšŸ’° Cost Optimization:'));
105
+ console.log(chalk_1.default.gray(' Expected savings: 70-81%'));
106
+ console.log(chalk_1.default.gray(` Default model: ${config.multiModelRouter.defaultModel}`));
107
+ console.log(chalk_1.default.gray(' Cost tracking: Enabled'));
108
+ console.log(chalk_1.default.gray(' Fallback chains: Enabled'));
109
+ console.log(chalk_1.default.gray('\nšŸ“Š Model Selection Rules:'));
110
+ console.log(chalk_1.default.gray(` Simple tasks → ${config.multiModelRouter.modelRules.simple.model}`));
111
+ console.log(chalk_1.default.gray(` Moderate tasks → ${config.multiModelRouter.modelRules.moderate.model}`));
112
+ console.log(chalk_1.default.gray(` Complex tasks → ${config.multiModelRouter.modelRules.complex.model}`));
113
+ console.log(chalk_1.default.gray(` Critical tasks → ${config.multiModelRouter.modelRules.critical.model}`));
114
+ console.log(chalk_1.default.gray('\nšŸ’” Use "aqe routing dashboard" to monitor cost savings'));
115
+ }
116
+ catch (error) {
117
+ console.error(chalk_1.default.red('āŒ Failed to enable routing:'), error.message);
118
+ process.exit(1);
119
+ }
120
+ }
121
+ /**
122
+ * Disable Multi-Model Router
123
+ */
124
+ static async disableRouting(options) {
125
+ try {
126
+ const configPath = options.config || this.configPath;
127
+ if (!await fs.pathExists(configPath)) {
128
+ console.error(chalk_1.default.red(`āŒ Routing config not found: ${configPath}`));
129
+ process.exit(1);
130
+ }
131
+ const config = await fs.readJson(configPath);
132
+ if (!config.multiModelRouter.enabled) {
133
+ console.log(chalk_1.default.yellow('āš ļø Multi-Model Router is already disabled'));
134
+ return;
135
+ }
136
+ config.multiModelRouter.enabled = false;
137
+ await fs.writeJson(configPath, config, { spaces: 2 });
138
+ console.log(chalk_1.default.yellow('āš ļø Multi-Model Router disabled'));
139
+ console.log(chalk_1.default.gray('\n All requests will now use the default model'));
140
+ console.log(chalk_1.default.gray(` Default model: ${config.multiModelRouter.defaultModel}`));
141
+ console.log(chalk_1.default.gray('\nšŸ’” Use "aqe routing enable" to re-enable cost optimization'));
142
+ }
143
+ catch (error) {
144
+ console.error(chalk_1.default.red('āŒ Failed to disable routing:'), error.message);
145
+ process.exit(1);
146
+ }
147
+ }
148
+ /**
149
+ * Show routing status
150
+ */
151
+ static async showStatus(options) {
152
+ try {
153
+ const configPath = options.config || this.configPath;
154
+ if (!await fs.pathExists(configPath)) {
155
+ console.error(chalk_1.default.red(`āŒ Routing config not found: ${configPath}`));
156
+ console.log(chalk_1.default.yellow('\nšŸ’” Run "aqe init" first to initialize the fleet'));
157
+ process.exit(1);
158
+ }
159
+ const config = await fs.readJson(configPath);
160
+ if (options.format === 'json') {
161
+ console.log(JSON.stringify(config.multiModelRouter, null, 2));
162
+ return;
163
+ }
164
+ console.log(chalk_1.default.blue('\nšŸ“Š Routing Status:\n'));
165
+ const statusIcon = config.multiModelRouter.enabled ? 'āœ…' : 'āŒ';
166
+ const statusColor = config.multiModelRouter.enabled ? chalk_1.default.green : chalk_1.default.red;
167
+ console.log(` ${statusIcon} Status: ${statusColor(config.multiModelRouter.enabled ? 'Enabled' : 'Disabled')}`);
168
+ console.log(` šŸ“¦ Version: ${chalk_1.default.cyan(config.multiModelRouter.version)}`);
169
+ console.log(` šŸŽÆ Default Model: ${chalk_1.default.cyan(config.multiModelRouter.defaultModel)}`);
170
+ console.log(` šŸ’° Cost Tracking: ${config.multiModelRouter.enableCostTracking ? 'āœ…' : 'āŒ'}`);
171
+ console.log(` šŸ”„ Fallback: ${config.multiModelRouter.enableFallback ? 'āœ…' : 'āŒ'}`);
172
+ console.log(` šŸ” Max Retries: ${chalk_1.default.cyan(config.multiModelRouter.maxRetries)}`);
173
+ console.log(` šŸ“Š Cost Threshold: ${chalk_1.default.cyan(config.multiModelRouter.costThreshold)}`);
174
+ console.log(chalk_1.default.blue('\nšŸŽÆ Model Rules:\n'));
175
+ console.log(` Simple: ${chalk_1.default.cyan(config.multiModelRouter.modelRules.simple.model)} ($${config.multiModelRouter.modelRules.simple.estimatedCost.toFixed(4)})`);
176
+ console.log(` Moderate: ${chalk_1.default.cyan(config.multiModelRouter.modelRules.moderate.model)} ($${config.multiModelRouter.modelRules.moderate.estimatedCost.toFixed(4)})`);
177
+ console.log(` Complex: ${chalk_1.default.cyan(config.multiModelRouter.modelRules.complex.model)} ($${config.multiModelRouter.modelRules.complex.estimatedCost.toFixed(4)})`);
178
+ console.log(` Critical: ${chalk_1.default.cyan(config.multiModelRouter.modelRules.critical.model)} ($${config.multiModelRouter.modelRules.critical.estimatedCost.toFixed(4)})`);
179
+ console.log(chalk_1.default.blue('\nšŸ“Š Streaming:\n'));
180
+ console.log(` ${config.streaming.enabled ? 'āœ…' : 'āŒ'} Status: ${config.streaming.enabled ? chalk_1.default.green('Enabled') : chalk_1.default.red('Disabled')}`);
181
+ console.log(` ā±ļø Progress Interval: ${chalk_1.default.cyan(config.streaming.progressInterval)}ms`);
182
+ console.log(` ā° Timeout: ${chalk_1.default.cyan(config.streaming.timeout / 1000)}s`);
183
+ if (options.verbose) {
184
+ console.log(chalk_1.default.blue('\nšŸ”— Fallback Chains:\n'));
185
+ for (const [model, chain] of Object.entries(config.multiModelRouter.fallbackChains)) {
186
+ console.log(` ${chalk_1.default.cyan(model)} → ${chain.map(m => chalk_1.default.gray(m)).join(' → ')}`);
187
+ }
188
+ }
189
+ console.log();
190
+ }
191
+ catch (error) {
192
+ console.error(chalk_1.default.red('āŒ Failed to get status:'), error.message);
193
+ process.exit(1);
194
+ }
195
+ }
196
+ /**
197
+ * Show cost dashboard
198
+ */
199
+ static async showDashboard(options) {
200
+ try {
201
+ console.log(chalk_1.default.blue('\nšŸ’° Cost Dashboard\n'));
202
+ // Try to load cost data from SwarmMemoryManager
203
+ try {
204
+ // Initialize memory manager for coordination partition
205
+ const memoryPath = '.agentic-qe/data/swarm-memory.db';
206
+ const memoryManager = new SwarmMemoryManager_1.SwarmMemoryManager(memoryPath);
207
+ await memoryManager.initialize();
208
+ // Retrieve cost tracking data
209
+ const costData = await memoryManager.retrieve('routing/cost-tracking', {
210
+ partition: 'coordination'
211
+ });
212
+ if (costData) {
213
+ const totalRequests = costData.totalRequests || 0;
214
+ const totalCost = costData.totalCost || 0;
215
+ const totalSavings = costData.totalSavings || 0;
216
+ const savingsPercent = totalCost > 0 ? ((totalSavings / (totalCost + totalSavings)) * 100) : 0;
217
+ console.log(` šŸ“Š Total Requests: ${chalk_1.default.cyan(totalRequests.toLocaleString())}`);
218
+ console.log(` šŸ’µ Total Cost: ${chalk_1.default.cyan('$' + totalCost.toFixed(4))}`);
219
+ console.log(` šŸ’° Total Savings: ${chalk_1.default.green('$' + totalSavings.toFixed(4))} (${savingsPercent.toFixed(1)}%)`);
220
+ if (costData.byModel) {
221
+ console.log(chalk_1.default.blue('\nšŸ“ˆ Requests by Model:\n'));
222
+ for (const [model, count] of Object.entries(costData.byModel)) {
223
+ const percentage = ((count / totalRequests) * 100).toFixed(1);
224
+ console.log(` ${chalk_1.default.cyan(model)}: ${count} (${percentage}%)`);
225
+ }
226
+ }
227
+ if (costData.byComplexity) {
228
+ console.log(chalk_1.default.blue('\nšŸŽÆ Requests by Complexity:\n'));
229
+ for (const [complexity, count] of Object.entries(costData.byComplexity)) {
230
+ const percentage = ((count / totalRequests) * 100).toFixed(1);
231
+ console.log(` ${chalk_1.default.cyan(complexity)}: ${count} (${percentage}%)`);
232
+ }
233
+ }
234
+ }
235
+ else {
236
+ console.log(chalk_1.default.yellow(' āš ļø No cost data available yet'));
237
+ console.log(chalk_1.default.gray(' Cost tracking will populate after routing is enabled and requests are processed'));
238
+ }
239
+ }
240
+ catch (memError) {
241
+ console.log(chalk_1.default.yellow(' āš ļø No cost data available yet'));
242
+ console.log(chalk_1.default.gray(' Cost tracking will populate after routing is enabled and requests are processed'));
243
+ }
244
+ console.log(chalk_1.default.blue('\nšŸ’” Commands:\n'));
245
+ console.log(chalk_1.default.gray(' aqe routing stats - View detailed statistics'));
246
+ console.log(chalk_1.default.gray(' aqe routing report - Generate cost report'));
247
+ console.log(chalk_1.default.gray(' aqe routing status -v - View routing configuration'));
248
+ console.log();
249
+ }
250
+ catch (error) {
251
+ console.error(chalk_1.default.red('āŒ Failed to show dashboard:'), error.message);
252
+ process.exit(1);
253
+ }
254
+ }
255
+ /**
256
+ * Generate cost report
257
+ */
258
+ static async generateReport(options) {
259
+ try {
260
+ console.log(chalk_1.default.blue('šŸ“Š Generating cost report...\n'));
261
+ const memoryPath = '.agentic-qe/data/swarm-memory.db';
262
+ const memoryManager = new SwarmMemoryManager_1.SwarmMemoryManager(memoryPath);
263
+ await memoryManager.initialize();
264
+ // Retrieve cost tracking data
265
+ const costData = await memoryManager.retrieve('routing/cost-tracking', {
266
+ partition: 'coordination'
267
+ });
268
+ if (!costData) {
269
+ console.log(chalk_1.default.yellow('āš ļø No cost data available for reporting'));
270
+ console.log(chalk_1.default.gray('Cost tracking will populate after routing is enabled and requests are processed'));
271
+ return;
272
+ }
273
+ const report = {
274
+ generatedAt: new Date().toISOString(),
275
+ summary: {
276
+ totalRequests: costData.totalRequests || 0,
277
+ totalCost: costData.totalCost || 0,
278
+ totalSavings: costData.totalSavings || 0,
279
+ savingsPercent: costData.totalCost > 0
280
+ ? ((costData.totalSavings / (costData.totalCost + costData.totalSavings)) * 100)
281
+ : 0
282
+ },
283
+ byModel: costData.byModel || {},
284
+ byComplexity: costData.byComplexity || {},
285
+ timeframe: options.timeframe || 'all-time'
286
+ };
287
+ if (options.format === 'json' || options.export) {
288
+ const json = JSON.stringify(report, null, 2);
289
+ if (options.export) {
290
+ await fs.writeFile(options.export, json);
291
+ console.log(chalk_1.default.green(`āœ… Report exported to: ${options.export}`));
292
+ }
293
+ else {
294
+ console.log(json);
295
+ }
296
+ }
297
+ else {
298
+ console.log(chalk_1.default.blue('šŸ“‹ Cost Report\n'));
299
+ console.log(` Generated: ${chalk_1.default.gray(report.generatedAt)}`);
300
+ console.log(` Timeframe: ${chalk_1.default.cyan(report.timeframe)}\n`);
301
+ console.log(chalk_1.default.blue('Summary:\n'));
302
+ console.log(` Total Requests: ${chalk_1.default.cyan(report.summary.totalRequests.toLocaleString())}`);
303
+ console.log(` Total Cost: ${chalk_1.default.cyan('$' + report.summary.totalCost.toFixed(4))}`);
304
+ console.log(` Total Savings: ${chalk_1.default.green('$' + report.summary.totalSavings.toFixed(4))}`);
305
+ console.log(` Savings: ${chalk_1.default.green(report.summary.savingsPercent.toFixed(1) + '%')}\n`);
306
+ console.log(chalk_1.default.gray('šŸ’” Use --format json to get JSON output'));
307
+ console.log(chalk_1.default.gray('šŸ’” Use --export <file> to save report to file\n'));
308
+ }
309
+ }
310
+ catch (error) {
311
+ console.error(chalk_1.default.red('āŒ Failed to generate report:'), error.message);
312
+ process.exit(1);
313
+ }
314
+ }
315
+ /**
316
+ * Show routing statistics
317
+ */
318
+ static async showStats(options) {
319
+ try {
320
+ console.log(chalk_1.default.blue('\nšŸ“ˆ Routing Statistics\n'));
321
+ const memoryPath = '.agentic-qe/data/swarm-memory.db';
322
+ const memoryManager = new SwarmMemoryManager_1.SwarmMemoryManager(memoryPath);
323
+ await memoryManager.initialize();
324
+ // Retrieve statistics
325
+ const stats = await memoryManager.retrieve('routing/statistics', {
326
+ partition: 'coordination'
327
+ });
328
+ if (!stats) {
329
+ console.log(chalk_1.default.yellow('āš ļø No statistics available yet'));
330
+ console.log(chalk_1.default.gray('Statistics will populate after routing is enabled and requests are processed\n'));
331
+ return;
332
+ }
333
+ console.log(chalk_1.default.blue('Performance Metrics:\n'));
334
+ console.log(` Average Latency: ${chalk_1.default.cyan((stats.avgLatency || 0).toFixed(2) + 'ms')}`);
335
+ console.log(` Fallback Rate: ${chalk_1.default.cyan((stats.fallbackRate || 0).toFixed(2) + '%')}`);
336
+ console.log(` Success Rate: ${chalk_1.default.green((stats.successRate || 100).toFixed(2) + '%')}`);
337
+ console.log(` Retry Rate: ${chalk_1.default.yellow((stats.retryRate || 0).toFixed(2) + '%')}`);
338
+ if (stats.modelPerformance) {
339
+ console.log(chalk_1.default.blue('\nšŸŽÆ Model Performance:\n'));
340
+ for (const [model, perf] of Object.entries(stats.modelPerformance)) {
341
+ console.log(` ${chalk_1.default.cyan(model)}:`);
342
+ console.log(` Requests: ${perf.requests || 0}`);
343
+ console.log(` Avg Latency: ${(perf.avgLatency || 0).toFixed(2)}ms`);
344
+ console.log(` Success Rate: ${(perf.successRate || 100).toFixed(2)}%`);
345
+ }
346
+ }
347
+ console.log();
348
+ }
349
+ catch (error) {
350
+ console.error(chalk_1.default.red('āŒ Failed to show stats:'), error.message);
351
+ process.exit(1);
352
+ }
353
+ }
354
+ /**
355
+ * Show command help
356
+ */
357
+ static showHelp() {
358
+ console.log(chalk_1.default.blue('\nšŸ“š Routing Commands:\n'));
359
+ console.log(chalk_1.default.cyan(' aqe routing enable') + chalk_1.default.gray(' - Enable Multi-Model Router'));
360
+ console.log(chalk_1.default.cyan(' aqe routing disable') + chalk_1.default.gray(' - Disable Multi-Model Router'));
361
+ console.log(chalk_1.default.cyan(' aqe routing status') + chalk_1.default.gray(' - Show routing configuration'));
362
+ console.log(chalk_1.default.cyan(' aqe routing dashboard') + chalk_1.default.gray(' - Show cost dashboard'));
363
+ console.log(chalk_1.default.cyan(' aqe routing report') + chalk_1.default.gray(' - Generate cost report'));
364
+ console.log(chalk_1.default.cyan(' aqe routing stats') + chalk_1.default.gray(' - Show routing statistics'));
365
+ console.log(chalk_1.default.blue('\nOptions:\n'));
366
+ console.log(chalk_1.default.gray(' --config <path> - Custom config file path'));
367
+ console.log(chalk_1.default.gray(' --format <format> - Output format (json|table)'));
368
+ console.log(chalk_1.default.gray(' --export <file> - Export report to file'));
369
+ console.log(chalk_1.default.gray(' --verbose, -v - Verbose output'));
370
+ console.log(chalk_1.default.blue('\nExamples:\n'));
371
+ console.log(chalk_1.default.gray(' aqe routing enable'));
372
+ console.log(chalk_1.default.gray(' aqe routing status --verbose'));
373
+ console.log(chalk_1.default.gray(' aqe routing dashboard'));
374
+ console.log(chalk_1.default.gray(' aqe routing report --format json --export report.json'));
375
+ console.log();
376
+ }
377
+ }
378
+ exports.RoutingCommand = RoutingCommand;
379
+ RoutingCommand.configPath = '.agentic-qe/config/routing.json';
380
+ // Export command functions for CLI registration
381
+ async function routingEnable(options) {
382
+ await RoutingCommand.execute('enable', options);
383
+ }
384
+ async function routingDisable(options) {
385
+ await RoutingCommand.execute('disable', options);
386
+ }
387
+ async function routingStatus(options) {
388
+ await RoutingCommand.execute('status', options);
389
+ }
390
+ async function routingDashboard(options) {
391
+ await RoutingCommand.execute('dashboard', options);
392
+ }
393
+ async function routingReport(options) {
394
+ await RoutingCommand.execute('report', options);
395
+ }
396
+ async function routingStats(options) {
397
+ await RoutingCommand.execute('stats', options);
398
+ }
399
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/routing/index.ts"],"names":[],"mappings":"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"}