agentic-qe 2.6.4 → 2.6.6

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 (182) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +26 -1
  3. package/dist/agents/CoverageAnalyzerAgent.d.ts +31 -0
  4. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  5. package/dist/agents/CoverageAnalyzerAgent.js +159 -0
  6. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  7. package/dist/agents/FleetCommanderAgent.d.ts +36 -0
  8. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
  9. package/dist/agents/FleetCommanderAgent.js +226 -0
  10. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  11. package/dist/cli/commands/kg/mincut.d.ts +50 -0
  12. package/dist/cli/commands/kg/mincut.d.ts.map +1 -0
  13. package/dist/cli/commands/kg/mincut.js +372 -0
  14. package/dist/cli/commands/kg/mincut.js.map +1 -0
  15. package/dist/cli/commands/providers/index.d.ts +20 -0
  16. package/dist/cli/commands/providers/index.d.ts.map +1 -0
  17. package/dist/cli/commands/providers/index.js +143 -0
  18. package/dist/cli/commands/providers/index.js.map +1 -0
  19. package/dist/cli/commands/providers/status.d.ts +117 -0
  20. package/dist/cli/commands/providers/status.d.ts.map +1 -0
  21. package/dist/cli/commands/providers/status.js +368 -0
  22. package/dist/cli/commands/providers/status.js.map +1 -0
  23. package/dist/cli/index.js +99 -62
  24. package/dist/cli/index.js.map +1 -1
  25. package/dist/cli/init/claude-config.js +2 -2
  26. package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.d.ts +148 -0
  27. package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.d.ts.map +1 -0
  28. package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.js +393 -0
  29. package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.js.map +1 -0
  30. package/dist/code-intelligence/analysis/mincut/GraphAdapter.d.ts +169 -0
  31. package/dist/code-intelligence/analysis/mincut/GraphAdapter.d.ts.map +1 -0
  32. package/dist/code-intelligence/analysis/mincut/GraphAdapter.js +335 -0
  33. package/dist/code-intelligence/analysis/mincut/GraphAdapter.js.map +1 -0
  34. package/dist/code-intelligence/analysis/mincut/JsMinCut.d.ts +55 -0
  35. package/dist/code-intelligence/analysis/mincut/JsMinCut.d.ts.map +1 -0
  36. package/dist/code-intelligence/analysis/mincut/JsMinCut.js +265 -0
  37. package/dist/code-intelligence/analysis/mincut/JsMinCut.js.map +1 -0
  38. package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.d.ts +92 -0
  39. package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.d.ts.map +1 -0
  40. package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.js +200 -0
  41. package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.js.map +1 -0
  42. package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.d.ts +157 -0
  43. package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.d.ts.map +1 -0
  44. package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.js +434 -0
  45. package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.js.map +1 -0
  46. package/dist/code-intelligence/analysis/mincut/index.d.ts +12 -0
  47. package/dist/code-intelligence/analysis/mincut/index.d.ts.map +1 -0
  48. package/dist/code-intelligence/analysis/mincut/index.js +20 -0
  49. package/dist/code-intelligence/analysis/mincut/index.js.map +1 -0
  50. package/dist/code-intelligence/analysis/mincut/types.d.ts +145 -0
  51. package/dist/code-intelligence/analysis/mincut/types.d.ts.map +1 -0
  52. package/dist/code-intelligence/analysis/mincut/types.js +16 -0
  53. package/dist/code-intelligence/analysis/mincut/types.js.map +1 -0
  54. package/dist/code-intelligence/chunking/ASTChunker.d.ts +1 -1
  55. package/dist/code-intelligence/chunking/ASTChunker.d.ts.map +1 -1
  56. package/dist/code-intelligence/chunking/ASTChunker.js +4 -4
  57. package/dist/code-intelligence/chunking/ASTChunker.js.map +1 -1
  58. package/dist/code-intelligence/graph/GraphBuilder.d.ts +120 -0
  59. package/dist/code-intelligence/graph/GraphBuilder.d.ts.map +1 -1
  60. package/dist/code-intelligence/graph/GraphBuilder.js +517 -0
  61. package/dist/code-intelligence/graph/GraphBuilder.js.map +1 -1
  62. package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.d.ts.map +1 -1
  63. package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js +3 -3
  64. package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js.map +1 -1
  65. package/dist/code-intelligence/parser/{TreeSitterParser.d.ts → WebTreeSitterParser.d.ts} +45 -10
  66. package/dist/code-intelligence/parser/WebTreeSitterParser.d.ts.map +1 -0
  67. package/dist/code-intelligence/parser/{TreeSitterParser.js → WebTreeSitterParser.js} +147 -54
  68. package/dist/code-intelligence/parser/WebTreeSitterParser.js.map +1 -0
  69. package/dist/code-intelligence/parser/extractors/BaseExtractor.d.ts +12 -10
  70. package/dist/code-intelligence/parser/extractors/BaseExtractor.d.ts.map +1 -1
  71. package/dist/code-intelligence/parser/extractors/BaseExtractor.js +7 -3
  72. package/dist/code-intelligence/parser/extractors/BaseExtractor.js.map +1 -1
  73. package/dist/code-intelligence/parser/extractors/GoExtractor.d.ts +7 -5
  74. package/dist/code-intelligence/parser/extractors/GoExtractor.d.ts.map +1 -1
  75. package/dist/code-intelligence/parser/extractors/GoExtractor.js +2 -2
  76. package/dist/code-intelligence/parser/extractors/GoExtractor.js.map +1 -1
  77. package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.d.ts +7 -5
  78. package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.d.ts.map +1 -1
  79. package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.js +2 -2
  80. package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.js.map +1 -1
  81. package/dist/code-intelligence/parser/extractors/PythonExtractor.d.ts +7 -5
  82. package/dist/code-intelligence/parser/extractors/PythonExtractor.d.ts.map +1 -1
  83. package/dist/code-intelligence/parser/extractors/PythonExtractor.js +2 -2
  84. package/dist/code-intelligence/parser/extractors/PythonExtractor.js.map +1 -1
  85. package/dist/code-intelligence/parser/extractors/RustExtractor.d.ts +7 -5
  86. package/dist/code-intelligence/parser/extractors/RustExtractor.d.ts.map +1 -1
  87. package/dist/code-intelligence/parser/extractors/RustExtractor.js +2 -2
  88. package/dist/code-intelligence/parser/extractors/RustExtractor.js.map +1 -1
  89. package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.d.ts +7 -5
  90. package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.d.ts.map +1 -1
  91. package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.js +2 -2
  92. package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.js.map +1 -1
  93. package/dist/code-intelligence/parser/index.d.ts +7 -1
  94. package/dist/code-intelligence/parser/index.d.ts.map +1 -1
  95. package/dist/code-intelligence/parser/index.js +11 -3
  96. package/dist/code-intelligence/parser/index.js.map +1 -1
  97. package/dist/code-intelligence/service/CodeIntelligenceService.d.ts.map +1 -1
  98. package/dist/code-intelligence/service/CodeIntelligenceService.js +7 -5
  99. package/dist/code-intelligence/service/CodeIntelligenceService.js.map +1 -1
  100. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  101. package/dist/coverage/CriticalPathDetector.d.ts +240 -0
  102. package/dist/coverage/CriticalPathDetector.d.ts.map +1 -0
  103. package/dist/coverage/CriticalPathDetector.js +388 -0
  104. package/dist/coverage/CriticalPathDetector.js.map +1 -0
  105. package/dist/coverage/index.d.ts +13 -0
  106. package/dist/coverage/index.d.ts.map +1 -0
  107. package/dist/coverage/index.js +16 -0
  108. package/dist/coverage/index.js.map +1 -0
  109. package/dist/fleet/topology/SPOFMonitor.d.ts +181 -0
  110. package/dist/fleet/topology/SPOFMonitor.d.ts.map +1 -0
  111. package/dist/fleet/topology/SPOFMonitor.js +286 -0
  112. package/dist/fleet/topology/SPOFMonitor.js.map +1 -0
  113. package/dist/fleet/topology/TopologyMinCutAnalyzer.d.ts +87 -0
  114. package/dist/fleet/topology/TopologyMinCutAnalyzer.d.ts.map +1 -0
  115. package/dist/fleet/topology/TopologyMinCutAnalyzer.js +472 -0
  116. package/dist/fleet/topology/TopologyMinCutAnalyzer.js.map +1 -0
  117. package/dist/fleet/topology/index.d.ts +13 -0
  118. package/dist/fleet/topology/index.d.ts.map +1 -0
  119. package/dist/fleet/topology/index.js +20 -0
  120. package/dist/fleet/topology/index.js.map +1 -0
  121. package/dist/fleet/topology/types.d.ts +139 -0
  122. package/dist/fleet/topology/types.d.ts.map +1 -0
  123. package/dist/fleet/topology/types.js +19 -0
  124. package/dist/fleet/topology/types.js.map +1 -0
  125. package/dist/mcp/handlers/test/test-execute-parallel.d.ts +34 -3
  126. package/dist/mcp/handlers/test/test-execute-parallel.d.ts.map +1 -1
  127. package/dist/mcp/handlers/test/test-execute-parallel.js +120 -5
  128. package/dist/mcp/handlers/test/test-execute-parallel.js.map +1 -1
  129. package/dist/mcp/server-instructions.d.ts +2 -2
  130. package/dist/mcp/server-instructions.d.ts.map +1 -1
  131. package/dist/mcp/server-instructions.js +2 -2
  132. package/dist/monitoring/ProviderHealthMonitor.d.ts +195 -0
  133. package/dist/monitoring/ProviderHealthMonitor.d.ts.map +1 -0
  134. package/dist/monitoring/ProviderHealthMonitor.js +431 -0
  135. package/dist/monitoring/ProviderHealthMonitor.js.map +1 -0
  136. package/dist/monitoring/QuotaManager.d.ts +122 -0
  137. package/dist/monitoring/QuotaManager.d.ts.map +1 -0
  138. package/dist/monitoring/QuotaManager.js +351 -0
  139. package/dist/monitoring/QuotaManager.js.map +1 -0
  140. package/dist/providers/GitHubModelsProvider.d.ts +117 -0
  141. package/dist/providers/GitHubModelsProvider.d.ts.map +1 -0
  142. package/dist/providers/GitHubModelsProvider.js +464 -0
  143. package/dist/providers/GitHubModelsProvider.js.map +1 -0
  144. package/dist/providers/GroqProvider.d.ts +115 -0
  145. package/dist/providers/GroqProvider.d.ts.map +1 -0
  146. package/dist/providers/GroqProvider.js +443 -0
  147. package/dist/providers/GroqProvider.js.map +1 -0
  148. package/dist/providers/HybridRouterHealthIntegration.d.ts +191 -0
  149. package/dist/providers/HybridRouterHealthIntegration.d.ts.map +1 -0
  150. package/dist/providers/HybridRouterHealthIntegration.js +439 -0
  151. package/dist/providers/HybridRouterHealthIntegration.js.map +1 -0
  152. package/dist/providers/index.d.ts +6 -0
  153. package/dist/providers/index.d.ts.map +1 -1
  154. package/dist/providers/index.js +12 -1
  155. package/dist/providers/index.js.map +1 -1
  156. package/dist/test/partition/MinCutPartitioner.d.ts +97 -0
  157. package/dist/test/partition/MinCutPartitioner.d.ts.map +1 -0
  158. package/dist/test/partition/MinCutPartitioner.js +459 -0
  159. package/dist/test/partition/MinCutPartitioner.js.map +1 -0
  160. package/dist/test/partition/RealTestExecutor.d.ts +86 -0
  161. package/dist/test/partition/RealTestExecutor.d.ts.map +1 -0
  162. package/dist/test/partition/RealTestExecutor.js +279 -0
  163. package/dist/test/partition/RealTestExecutor.js.map +1 -0
  164. package/dist/test/partition/TestDependencyAnalyzer.d.ts +75 -0
  165. package/dist/test/partition/TestDependencyAnalyzer.d.ts.map +1 -0
  166. package/dist/test/partition/TestDependencyAnalyzer.js +297 -0
  167. package/dist/test/partition/TestDependencyAnalyzer.js.map +1 -0
  168. package/dist/test/partition/index.d.ts +10 -0
  169. package/dist/test/partition/index.d.ts.map +1 -0
  170. package/dist/test/partition/index.js +26 -0
  171. package/dist/test/partition/index.js.map +1 -0
  172. package/dist/test/partition/types.d.ts +120 -0
  173. package/dist/test/partition/types.d.ts.map +1 -0
  174. package/dist/test/partition/types.js +21 -0
  175. package/dist/test/partition/types.js.map +1 -0
  176. package/package.json +5 -8
  177. package/dist/cli/commands/providers.d.ts +0 -50
  178. package/dist/cli/commands/providers.d.ts.map +0 -1
  179. package/dist/cli/commands/providers.js +0 -403
  180. package/dist/cli/commands/providers.js.map +0 -1
  181. package/dist/code-intelligence/parser/TreeSitterParser.d.ts.map +0 -1
  182. package/dist/code-intelligence/parser/TreeSitterParser.js.map +0 -1
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Provider Status Command - Health dashboard for LLM providers
3
+ *
4
+ * Displays real-time health status of all registered LLM providers
5
+ * including circuit breaker states, latency, and availability metrics.
6
+ *
7
+ * Usage:
8
+ * aqe providers status [options]
9
+ *
10
+ * Options:
11
+ * --detailed Show detailed metrics for each provider
12
+ * --json Output in JSON format
13
+ * --watch Continuously monitor provider health
14
+ * --interval Watch interval in seconds (default: 10)
15
+ *
16
+ * @module cli/commands/providers/status
17
+ * @version 1.0.0
18
+ */
19
+ export interface ProviderStatusOptions {
20
+ detailed?: boolean;
21
+ json?: boolean;
22
+ watch?: boolean;
23
+ interval?: number;
24
+ }
25
+ export interface ProviderStatusReport {
26
+ timestamp: string;
27
+ overallHealth: 'healthy' | 'degraded' | 'unhealthy' | 'unknown';
28
+ providers: ProviderHealthInfo[];
29
+ summary: {
30
+ total: number;
31
+ healthy: number;
32
+ degraded: number;
33
+ unhealthy: number;
34
+ circuitOpen: number;
35
+ };
36
+ }
37
+ export interface ProviderHealthInfo {
38
+ id: string;
39
+ name: string;
40
+ healthy: boolean;
41
+ circuitState: 'closed' | 'open' | 'half-open';
42
+ latency: number;
43
+ errorRate: number;
44
+ availability: number;
45
+ lastCheck: string;
46
+ quota?: {
47
+ dailyUsed: number;
48
+ dailyLimit: number;
49
+ minuteUsed: number;
50
+ minuteLimit: number;
51
+ percentageUsed: number;
52
+ isExhausted: boolean;
53
+ };
54
+ lastError?: string;
55
+ }
56
+ /**
57
+ * Provider Status Command
58
+ */
59
+ export declare class ProviderStatusCommand {
60
+ private static healthMonitor?;
61
+ private static quotaManager?;
62
+ private static watchIntervalId?;
63
+ /**
64
+ * Execute the provider status command
65
+ */
66
+ static execute(options?: ProviderStatusOptions): Promise<ProviderStatusReport>;
67
+ /**
68
+ * Initialize health monitor and quota manager with default providers
69
+ */
70
+ private static initializeMonitoring;
71
+ /**
72
+ * Register default providers for monitoring
73
+ */
74
+ private static registerDefaultProviders;
75
+ /**
76
+ * Generate status report for all providers
77
+ */
78
+ private static generateStatusReport;
79
+ /**
80
+ * Display status report in console
81
+ */
82
+ private static displayStatusReport;
83
+ /**
84
+ * Display individual provider status
85
+ */
86
+ private static displayProviderStatus;
87
+ /**
88
+ * Start watch mode for continuous monitoring
89
+ */
90
+ private static startWatchMode;
91
+ /**
92
+ * Stop watch mode
93
+ */
94
+ static stopWatch(): void;
95
+ /**
96
+ * Get color for health status
97
+ */
98
+ private static getHealthColor;
99
+ /**
100
+ * Get circuit state icon
101
+ */
102
+ private static getCircuitIcon;
103
+ /**
104
+ * Get quota usage bar
105
+ */
106
+ private static getQuotaBar;
107
+ private static checkGroqHealth;
108
+ private static checkGitHubModelsHealth;
109
+ private static checkOllamaHealth;
110
+ private static checkClaudeHealth;
111
+ private static checkOpenRouterHealth;
112
+ /**
113
+ * Cleanup resources
114
+ */
115
+ static cleanup(): void;
116
+ }
117
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/providers/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IAChE,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAwB;IACrD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAe;IAC3C,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAiB;IAEhD;;OAEG;WACU,OAAO,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmBxF;;OAEG;mBACkB,oBAAoB;IAmBzC;;OAEG;mBACkB,wBAAwB;IAiB7C;;OAEG;mBACkB,oBAAoB;IAyEzC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAmClC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAiCpC;;OAEG;mBACkB,cAAc;IAoCnC;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,IAAI;IAQxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAS7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;mBAaL,eAAe;mBAUf,uBAAuB;mBAYvB,iBAAiB;mBAkBjB,iBAAiB;mBASjB,qBAAqB;IAS1C;;OAEG;IACH,MAAM,CAAC,OAAO,IAAI,IAAI;CAUvB"}
@@ -0,0 +1,368 @@
1
+ "use strict";
2
+ /**
3
+ * Provider Status Command - Health dashboard for LLM providers
4
+ *
5
+ * Displays real-time health status of all registered LLM providers
6
+ * including circuit breaker states, latency, and availability metrics.
7
+ *
8
+ * Usage:
9
+ * aqe providers status [options]
10
+ *
11
+ * Options:
12
+ * --detailed Show detailed metrics for each provider
13
+ * --json Output in JSON format
14
+ * --watch Continuously monitor provider health
15
+ * --interval Watch interval in seconds (default: 10)
16
+ *
17
+ * @module cli/commands/providers/status
18
+ * @version 1.0.0
19
+ */
20
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.ProviderStatusCommand = void 0;
25
+ const chalk_1 = __importDefault(require("chalk"));
26
+ const ProviderHealthMonitor_1 = require("../../../monitoring/ProviderHealthMonitor");
27
+ const QuotaManager_1 = require("../../../monitoring/QuotaManager");
28
+ /**
29
+ * Provider Status Command
30
+ */
31
+ class ProviderStatusCommand {
32
+ /**
33
+ * Execute the provider status command
34
+ */
35
+ static async execute(options = {}) {
36
+ // Initialize monitoring components if not already initialized
37
+ await this.initializeMonitoring();
38
+ if (options.watch) {
39
+ return this.startWatchMode(options);
40
+ }
41
+ const report = await this.generateStatusReport(options.detailed);
42
+ if (options.json) {
43
+ console.log(JSON.stringify(report, null, 2));
44
+ }
45
+ else {
46
+ this.displayStatusReport(report, options.detailed);
47
+ }
48
+ return report;
49
+ }
50
+ /**
51
+ * Initialize health monitor and quota manager with default providers
52
+ */
53
+ static async initializeMonitoring() {
54
+ if (!this.healthMonitor) {
55
+ this.healthMonitor = new ProviderHealthMonitor_1.ProviderHealthMonitor({
56
+ checkIntervalMs: 30000,
57
+ timeoutMs: 5000,
58
+ failureThreshold: 3,
59
+ recoveryTimeMs: 60000,
60
+ healthyLatencyThresholdMs: 3000
61
+ });
62
+ }
63
+ if (!this.quotaManager) {
64
+ this.quotaManager = (0, QuotaManager_1.createQuotaManager)();
65
+ }
66
+ // Register default providers for health monitoring if not already registered
67
+ await this.registerDefaultProviders();
68
+ }
69
+ /**
70
+ * Register default providers for monitoring
71
+ */
72
+ static async registerDefaultProviders() {
73
+ const providers = [
74
+ { id: 'groq', name: 'Groq LPU', checkFn: async () => this.checkGroqHealth() },
75
+ { id: 'github-models', name: 'GitHub Models', checkFn: async () => this.checkGitHubModelsHealth() },
76
+ { id: 'ollama', name: 'Ollama (Local)', checkFn: async () => this.checkOllamaHealth() },
77
+ { id: 'claude', name: 'Claude (Anthropic)', checkFn: async () => this.checkClaudeHealth() },
78
+ { id: 'openrouter', name: 'OpenRouter', checkFn: async () => this.checkOpenRouterHealth() }
79
+ ];
80
+ for (const provider of providers) {
81
+ const existing = this.healthMonitor?.getProviderHealth(provider.id);
82
+ if (!existing) {
83
+ this.healthMonitor?.registerProvider(provider.id, provider.checkFn);
84
+ }
85
+ }
86
+ }
87
+ /**
88
+ * Generate status report for all providers
89
+ */
90
+ static async generateStatusReport(detailed) {
91
+ // Perform health checks on all providers
92
+ await this.healthMonitor?.checkAllProviders();
93
+ const allHealth = this.healthMonitor?.getAllProviderHealth() || new Map();
94
+ const providers = [];
95
+ const providerNames = {
96
+ 'groq': 'Groq LPU',
97
+ 'github-models': 'GitHub Models',
98
+ 'ollama': 'Ollama (Local)',
99
+ 'claude': 'Claude (Anthropic)',
100
+ 'openrouter': 'OpenRouter'
101
+ };
102
+ for (const [id, health] of allHealth.entries()) {
103
+ const info = {
104
+ id,
105
+ name: providerNames[id] || id,
106
+ healthy: health.healthy,
107
+ circuitState: health.circuitState,
108
+ latency: health.latency,
109
+ errorRate: health.errorRate,
110
+ availability: health.availability,
111
+ lastCheck: health.lastCheck.toISOString(),
112
+ lastError: health.lastError
113
+ };
114
+ // Add quota info if available
115
+ const quota = this.quotaManager?.getQuotaStatus(id);
116
+ if (quota) {
117
+ info.quota = {
118
+ dailyUsed: quota.dailyUsed,
119
+ dailyLimit: quota.dailyLimit === Infinity ? -1 : quota.dailyLimit,
120
+ minuteUsed: quota.minuteUsed,
121
+ minuteLimit: quota.minuteLimit === Infinity ? -1 : quota.minuteLimit,
122
+ percentageUsed: quota.percentageUsed,
123
+ isExhausted: quota.isExhausted
124
+ };
125
+ }
126
+ providers.push(info);
127
+ }
128
+ // Calculate summary
129
+ const summary = {
130
+ total: providers.length,
131
+ healthy: providers.filter(p => p.healthy && p.circuitState === 'closed').length,
132
+ degraded: providers.filter(p => !p.healthy && p.circuitState === 'closed').length,
133
+ unhealthy: providers.filter(p => !p.healthy && p.circuitState === 'open').length,
134
+ circuitOpen: providers.filter(p => p.circuitState === 'open').length
135
+ };
136
+ // Determine overall health
137
+ let overallHealth;
138
+ if (summary.total === 0) {
139
+ overallHealth = 'unknown';
140
+ }
141
+ else if (summary.healthy === summary.total) {
142
+ overallHealth = 'healthy';
143
+ }
144
+ else if (summary.healthy > 0) {
145
+ overallHealth = 'degraded';
146
+ }
147
+ else {
148
+ overallHealth = 'unhealthy';
149
+ }
150
+ return {
151
+ timestamp: new Date().toISOString(),
152
+ overallHealth,
153
+ providers,
154
+ summary
155
+ };
156
+ }
157
+ /**
158
+ * Display status report in console
159
+ */
160
+ static displayStatusReport(report, detailed) {
161
+ console.log(chalk_1.default.blue.bold('\n🏥 LLM Provider Health Dashboard\n'));
162
+ // Overall status
163
+ const statusColor = this.getHealthColor(report.overallHealth);
164
+ console.log(chalk_1.default.blue('📊 Overall Status:'), statusColor(report.overallHealth.toUpperCase()));
165
+ console.log(chalk_1.default.gray(` Last updated: ${new Date(report.timestamp).toLocaleString()}`));
166
+ // Summary
167
+ console.log(chalk_1.default.blue('\n📈 Summary:'));
168
+ console.log(` Total Providers: ${chalk_1.default.white(report.summary.total)}`);
169
+ console.log(` Healthy: ${chalk_1.default.green(report.summary.healthy)}`);
170
+ if (report.summary.degraded > 0) {
171
+ console.log(` Degraded: ${chalk_1.default.yellow(report.summary.degraded)}`);
172
+ }
173
+ if (report.summary.unhealthy > 0) {
174
+ console.log(` Unhealthy: ${chalk_1.default.red(report.summary.unhealthy)}`);
175
+ }
176
+ if (report.summary.circuitOpen > 0) {
177
+ console.log(` Circuit Open: ${chalk_1.default.red(report.summary.circuitOpen)}`);
178
+ }
179
+ // Provider details
180
+ console.log(chalk_1.default.blue('\n🔌 Provider Status:\n'));
181
+ for (const provider of report.providers) {
182
+ this.displayProviderStatus(provider, detailed);
183
+ }
184
+ // Legend
185
+ console.log(chalk_1.default.gray('\n📖 Legend:'));
186
+ console.log(chalk_1.default.gray(' Circuit: ') + chalk_1.default.green('●') + ' closed ' + chalk_1.default.yellow('●') + ' half-open ' + chalk_1.default.red('●') + ' open');
187
+ console.log(chalk_1.default.gray(' Quota: Unlimited = -1'));
188
+ }
189
+ /**
190
+ * Display individual provider status
191
+ */
192
+ static displayProviderStatus(provider, detailed) {
193
+ const healthIcon = provider.healthy ? chalk_1.default.green('✓') : chalk_1.default.red('✗');
194
+ const circuitIcon = this.getCircuitIcon(provider.circuitState);
195
+ const nameColor = provider.healthy ? chalk_1.default.white : chalk_1.default.red;
196
+ console.log(` ${healthIcon} ${nameColor(provider.name.padEnd(20))} ${circuitIcon}`);
197
+ if (detailed) {
198
+ console.log(chalk_1.default.gray(` Latency: ${provider.latency.toFixed(0)}ms`));
199
+ console.log(chalk_1.default.gray(` Availability: ${(provider.availability * 100).toFixed(1)}%`));
200
+ console.log(chalk_1.default.gray(` Error Rate: ${(provider.errorRate * 100).toFixed(1)}%`));
201
+ if (provider.quota) {
202
+ const quotaBar = this.getQuotaBar(provider.quota.percentageUsed);
203
+ const dailyLimit = provider.quota.dailyLimit === -1 ? '∞' : provider.quota.dailyLimit.toString();
204
+ console.log(chalk_1.default.gray(` Quota: ${provider.quota.dailyUsed}/${dailyLimit} daily ${quotaBar}`));
205
+ if (provider.quota.isExhausted) {
206
+ console.log(chalk_1.default.red(' ⚠ Quota exhausted!'));
207
+ }
208
+ }
209
+ if (provider.lastError) {
210
+ console.log(chalk_1.default.red(` Last Error: ${provider.lastError}`));
211
+ }
212
+ }
213
+ else {
214
+ // Compact view with latency and availability
215
+ const latencyColor = provider.latency < 1000 ? chalk_1.default.green : provider.latency < 3000 ? chalk_1.default.yellow : chalk_1.default.red;
216
+ console.log(chalk_1.default.gray(` Latency: ${latencyColor(provider.latency.toFixed(0) + 'ms')} | Avail: ${(provider.availability * 100).toFixed(0)}%`));
217
+ }
218
+ console.log('');
219
+ }
220
+ /**
221
+ * Start watch mode for continuous monitoring
222
+ */
223
+ static async startWatchMode(options) {
224
+ const intervalMs = (options.interval || 10) * 1000;
225
+ console.log(chalk_1.default.blue.bold('\n🔄 Provider Health Watch Mode'));
226
+ console.log(chalk_1.default.gray(` Refreshing every ${options.interval || 10} seconds. Press Ctrl+C to stop.\n`));
227
+ const display = async () => {
228
+ console.clear();
229
+ const report = await this.generateStatusReport(options.detailed);
230
+ if (options.json) {
231
+ console.log(JSON.stringify(report, null, 2));
232
+ }
233
+ else {
234
+ this.displayStatusReport(report, options.detailed);
235
+ }
236
+ return report;
237
+ };
238
+ // Initial display
239
+ let lastReport = await display();
240
+ // Set up interval
241
+ this.watchIntervalId = setInterval(async () => {
242
+ lastReport = await display();
243
+ }, intervalMs);
244
+ // Handle cleanup
245
+ process.on('SIGINT', () => {
246
+ this.stopWatch();
247
+ process.exit(0);
248
+ });
249
+ return lastReport;
250
+ }
251
+ /**
252
+ * Stop watch mode
253
+ */
254
+ static stopWatch() {
255
+ if (this.watchIntervalId) {
256
+ clearInterval(this.watchIntervalId);
257
+ this.watchIntervalId = undefined;
258
+ console.log(chalk_1.default.yellow('\n\n👋 Watch mode stopped.\n'));
259
+ }
260
+ }
261
+ /**
262
+ * Get color for health status
263
+ */
264
+ static getHealthColor(status) {
265
+ const colors = {
266
+ 'healthy': chalk_1.default.green,
267
+ 'degraded': chalk_1.default.yellow,
268
+ 'unhealthy': chalk_1.default.red,
269
+ 'unknown': chalk_1.default.gray
270
+ };
271
+ return colors[status] || chalk_1.default.white;
272
+ }
273
+ /**
274
+ * Get circuit state icon
275
+ */
276
+ static getCircuitIcon(state) {
277
+ const icons = {
278
+ 'closed': chalk_1.default.green('●') + ' closed',
279
+ 'open': chalk_1.default.red('●') + ' open',
280
+ 'half-open': chalk_1.default.yellow('●') + ' half-open'
281
+ };
282
+ return icons[state] || chalk_1.default.gray('●') + ' unknown';
283
+ }
284
+ /**
285
+ * Get quota usage bar
286
+ */
287
+ static getQuotaBar(percentage) {
288
+ const width = 10;
289
+ const filled = Math.round((percentage / 100) * width);
290
+ const empty = width - filled;
291
+ let color = chalk_1.default.green;
292
+ if (percentage > 80)
293
+ color = chalk_1.default.red;
294
+ else if (percentage > 50)
295
+ color = chalk_1.default.yellow;
296
+ return `[${color('█'.repeat(filled))}${chalk_1.default.gray('░'.repeat(empty))}]`;
297
+ }
298
+ // Health check functions for each provider
299
+ static async checkGroqHealth() {
300
+ // Check GROQ_API_KEY environment variable
301
+ const hasKey = !!process.env.GROQ_API_KEY;
302
+ return {
303
+ healthy: hasKey,
304
+ timestamp: new Date(),
305
+ error: hasKey ? undefined : 'GROQ_API_KEY not set'
306
+ };
307
+ }
308
+ static async checkGitHubModelsHealth() {
309
+ // Check if in Codespaces or GITHUB_TOKEN exists
310
+ const inCodespaces = process.env.CODESPACES === 'true';
311
+ const hasToken = !!process.env.GITHUB_TOKEN;
312
+ const healthy = inCodespaces || hasToken;
313
+ return {
314
+ healthy,
315
+ timestamp: new Date(),
316
+ error: healthy ? undefined : 'Not in Codespaces and GITHUB_TOKEN not set'
317
+ };
318
+ }
319
+ static async checkOllamaHealth() {
320
+ try {
321
+ const response = await fetch('http://localhost:11434/api/version', {
322
+ signal: AbortSignal.timeout(2000)
323
+ });
324
+ return {
325
+ healthy: response.ok,
326
+ timestamp: new Date()
327
+ };
328
+ }
329
+ catch (error) {
330
+ return {
331
+ healthy: false,
332
+ timestamp: new Date(),
333
+ error: 'Ollama not running on localhost:11434'
334
+ };
335
+ }
336
+ }
337
+ static async checkClaudeHealth() {
338
+ const hasKey = !!process.env.ANTHROPIC_API_KEY;
339
+ return {
340
+ healthy: hasKey,
341
+ timestamp: new Date(),
342
+ error: hasKey ? undefined : 'ANTHROPIC_API_KEY not set'
343
+ };
344
+ }
345
+ static async checkOpenRouterHealth() {
346
+ const hasKey = !!process.env.OPENROUTER_API_KEY;
347
+ return {
348
+ healthy: hasKey,
349
+ timestamp: new Date(),
350
+ error: hasKey ? undefined : 'OPENROUTER_API_KEY not set'
351
+ };
352
+ }
353
+ /**
354
+ * Cleanup resources
355
+ */
356
+ static cleanup() {
357
+ this.stopWatch();
358
+ this.healthMonitor?.stopMonitoring();
359
+ this.healthMonitor = undefined;
360
+ // Stop quota manager cleanup interval
361
+ if (this.quotaManager) {
362
+ this.quotaManager.stopCleanup();
363
+ }
364
+ this.quotaManager = undefined;
365
+ }
366
+ }
367
+ exports.ProviderStatusCommand = ProviderStatusCommand;
368
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/cli/commands/providers/status.ts"],"names":[],"mappings":"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"}