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.
- package/CHANGELOG.md +95 -0
- package/README.md +26 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts +31 -0
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +159 -0
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/FleetCommanderAgent.d.ts +36 -0
- package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
- package/dist/agents/FleetCommanderAgent.js +226 -0
- package/dist/agents/FleetCommanderAgent.js.map +1 -1
- package/dist/cli/commands/kg/mincut.d.ts +50 -0
- package/dist/cli/commands/kg/mincut.d.ts.map +1 -0
- package/dist/cli/commands/kg/mincut.js +372 -0
- package/dist/cli/commands/kg/mincut.js.map +1 -0
- package/dist/cli/commands/providers/index.d.ts +20 -0
- package/dist/cli/commands/providers/index.d.ts.map +1 -0
- package/dist/cli/commands/providers/index.js +143 -0
- package/dist/cli/commands/providers/index.js.map +1 -0
- package/dist/cli/commands/providers/status.d.ts +117 -0
- package/dist/cli/commands/providers/status.d.ts.map +1 -0
- package/dist/cli/commands/providers/status.js +368 -0
- package/dist/cli/commands/providers/status.js.map +1 -0
- package/dist/cli/index.js +99 -62
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/claude-config.js +2 -2
- package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.d.ts +148 -0
- package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.d.ts.map +1 -0
- package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.js +393 -0
- package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.js.map +1 -0
- package/dist/code-intelligence/analysis/mincut/GraphAdapter.d.ts +169 -0
- package/dist/code-intelligence/analysis/mincut/GraphAdapter.d.ts.map +1 -0
- package/dist/code-intelligence/analysis/mincut/GraphAdapter.js +335 -0
- package/dist/code-intelligence/analysis/mincut/GraphAdapter.js.map +1 -0
- package/dist/code-intelligence/analysis/mincut/JsMinCut.d.ts +55 -0
- package/dist/code-intelligence/analysis/mincut/JsMinCut.d.ts.map +1 -0
- package/dist/code-intelligence/analysis/mincut/JsMinCut.js +265 -0
- package/dist/code-intelligence/analysis/mincut/JsMinCut.js.map +1 -0
- package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.d.ts +92 -0
- package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.d.ts.map +1 -0
- package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.js +200 -0
- package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.js.map +1 -0
- package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.d.ts +157 -0
- package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.d.ts.map +1 -0
- package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.js +434 -0
- package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.js.map +1 -0
- package/dist/code-intelligence/analysis/mincut/index.d.ts +12 -0
- package/dist/code-intelligence/analysis/mincut/index.d.ts.map +1 -0
- package/dist/code-intelligence/analysis/mincut/index.js +20 -0
- package/dist/code-intelligence/analysis/mincut/index.js.map +1 -0
- package/dist/code-intelligence/analysis/mincut/types.d.ts +145 -0
- package/dist/code-intelligence/analysis/mincut/types.d.ts.map +1 -0
- package/dist/code-intelligence/analysis/mincut/types.js +16 -0
- package/dist/code-intelligence/analysis/mincut/types.js.map +1 -0
- package/dist/code-intelligence/chunking/ASTChunker.d.ts +1 -1
- package/dist/code-intelligence/chunking/ASTChunker.d.ts.map +1 -1
- package/dist/code-intelligence/chunking/ASTChunker.js +4 -4
- package/dist/code-intelligence/chunking/ASTChunker.js.map +1 -1
- package/dist/code-intelligence/graph/GraphBuilder.d.ts +120 -0
- package/dist/code-intelligence/graph/GraphBuilder.d.ts.map +1 -1
- package/dist/code-intelligence/graph/GraphBuilder.js +517 -0
- package/dist/code-intelligence/graph/GraphBuilder.js.map +1 -1
- package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.d.ts.map +1 -1
- package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js +3 -3
- package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js.map +1 -1
- package/dist/code-intelligence/parser/{TreeSitterParser.d.ts → WebTreeSitterParser.d.ts} +45 -10
- package/dist/code-intelligence/parser/WebTreeSitterParser.d.ts.map +1 -0
- package/dist/code-intelligence/parser/{TreeSitterParser.js → WebTreeSitterParser.js} +147 -54
- package/dist/code-intelligence/parser/WebTreeSitterParser.js.map +1 -0
- package/dist/code-intelligence/parser/extractors/BaseExtractor.d.ts +12 -10
- package/dist/code-intelligence/parser/extractors/BaseExtractor.d.ts.map +1 -1
- package/dist/code-intelligence/parser/extractors/BaseExtractor.js +7 -3
- package/dist/code-intelligence/parser/extractors/BaseExtractor.js.map +1 -1
- package/dist/code-intelligence/parser/extractors/GoExtractor.d.ts +7 -5
- package/dist/code-intelligence/parser/extractors/GoExtractor.d.ts.map +1 -1
- package/dist/code-intelligence/parser/extractors/GoExtractor.js +2 -2
- package/dist/code-intelligence/parser/extractors/GoExtractor.js.map +1 -1
- package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.d.ts +7 -5
- package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.d.ts.map +1 -1
- package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.js +2 -2
- package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.js.map +1 -1
- package/dist/code-intelligence/parser/extractors/PythonExtractor.d.ts +7 -5
- package/dist/code-intelligence/parser/extractors/PythonExtractor.d.ts.map +1 -1
- package/dist/code-intelligence/parser/extractors/PythonExtractor.js +2 -2
- package/dist/code-intelligence/parser/extractors/PythonExtractor.js.map +1 -1
- package/dist/code-intelligence/parser/extractors/RustExtractor.d.ts +7 -5
- package/dist/code-intelligence/parser/extractors/RustExtractor.d.ts.map +1 -1
- package/dist/code-intelligence/parser/extractors/RustExtractor.js +2 -2
- package/dist/code-intelligence/parser/extractors/RustExtractor.js.map +1 -1
- package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.d.ts +7 -5
- package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.d.ts.map +1 -1
- package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.js +2 -2
- package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.js.map +1 -1
- package/dist/code-intelligence/parser/index.d.ts +7 -1
- package/dist/code-intelligence/parser/index.d.ts.map +1 -1
- package/dist/code-intelligence/parser/index.js +11 -3
- package/dist/code-intelligence/parser/index.js.map +1 -1
- package/dist/code-intelligence/service/CodeIntelligenceService.d.ts.map +1 -1
- package/dist/code-intelligence/service/CodeIntelligenceService.js +7 -5
- package/dist/code-intelligence/service/CodeIntelligenceService.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/coverage/CriticalPathDetector.d.ts +240 -0
- package/dist/coverage/CriticalPathDetector.d.ts.map +1 -0
- package/dist/coverage/CriticalPathDetector.js +388 -0
- package/dist/coverage/CriticalPathDetector.js.map +1 -0
- package/dist/coverage/index.d.ts +13 -0
- package/dist/coverage/index.d.ts.map +1 -0
- package/dist/coverage/index.js +16 -0
- package/dist/coverage/index.js.map +1 -0
- package/dist/fleet/topology/SPOFMonitor.d.ts +181 -0
- package/dist/fleet/topology/SPOFMonitor.d.ts.map +1 -0
- package/dist/fleet/topology/SPOFMonitor.js +286 -0
- package/dist/fleet/topology/SPOFMonitor.js.map +1 -0
- package/dist/fleet/topology/TopologyMinCutAnalyzer.d.ts +87 -0
- package/dist/fleet/topology/TopologyMinCutAnalyzer.d.ts.map +1 -0
- package/dist/fleet/topology/TopologyMinCutAnalyzer.js +472 -0
- package/dist/fleet/topology/TopologyMinCutAnalyzer.js.map +1 -0
- package/dist/fleet/topology/index.d.ts +13 -0
- package/dist/fleet/topology/index.d.ts.map +1 -0
- package/dist/fleet/topology/index.js +20 -0
- package/dist/fleet/topology/index.js.map +1 -0
- package/dist/fleet/topology/types.d.ts +139 -0
- package/dist/fleet/topology/types.d.ts.map +1 -0
- package/dist/fleet/topology/types.js +19 -0
- package/dist/fleet/topology/types.js.map +1 -0
- package/dist/mcp/handlers/test/test-execute-parallel.d.ts +34 -3
- package/dist/mcp/handlers/test/test-execute-parallel.d.ts.map +1 -1
- package/dist/mcp/handlers/test/test-execute-parallel.js +120 -5
- package/dist/mcp/handlers/test/test-execute-parallel.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +2 -2
- package/dist/mcp/server-instructions.d.ts.map +1 -1
- package/dist/mcp/server-instructions.js +2 -2
- package/dist/monitoring/ProviderHealthMonitor.d.ts +195 -0
- package/dist/monitoring/ProviderHealthMonitor.d.ts.map +1 -0
- package/dist/monitoring/ProviderHealthMonitor.js +431 -0
- package/dist/monitoring/ProviderHealthMonitor.js.map +1 -0
- package/dist/monitoring/QuotaManager.d.ts +122 -0
- package/dist/monitoring/QuotaManager.d.ts.map +1 -0
- package/dist/monitoring/QuotaManager.js +351 -0
- package/dist/monitoring/QuotaManager.js.map +1 -0
- package/dist/providers/GitHubModelsProvider.d.ts +117 -0
- package/dist/providers/GitHubModelsProvider.d.ts.map +1 -0
- package/dist/providers/GitHubModelsProvider.js +464 -0
- package/dist/providers/GitHubModelsProvider.js.map +1 -0
- package/dist/providers/GroqProvider.d.ts +115 -0
- package/dist/providers/GroqProvider.d.ts.map +1 -0
- package/dist/providers/GroqProvider.js +443 -0
- package/dist/providers/GroqProvider.js.map +1 -0
- package/dist/providers/HybridRouterHealthIntegration.d.ts +191 -0
- package/dist/providers/HybridRouterHealthIntegration.d.ts.map +1 -0
- package/dist/providers/HybridRouterHealthIntegration.js +439 -0
- package/dist/providers/HybridRouterHealthIntegration.js.map +1 -0
- package/dist/providers/index.d.ts +6 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +12 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/test/partition/MinCutPartitioner.d.ts +97 -0
- package/dist/test/partition/MinCutPartitioner.d.ts.map +1 -0
- package/dist/test/partition/MinCutPartitioner.js +459 -0
- package/dist/test/partition/MinCutPartitioner.js.map +1 -0
- package/dist/test/partition/RealTestExecutor.d.ts +86 -0
- package/dist/test/partition/RealTestExecutor.d.ts.map +1 -0
- package/dist/test/partition/RealTestExecutor.js +279 -0
- package/dist/test/partition/RealTestExecutor.js.map +1 -0
- package/dist/test/partition/TestDependencyAnalyzer.d.ts +75 -0
- package/dist/test/partition/TestDependencyAnalyzer.d.ts.map +1 -0
- package/dist/test/partition/TestDependencyAnalyzer.js +297 -0
- package/dist/test/partition/TestDependencyAnalyzer.js.map +1 -0
- package/dist/test/partition/index.d.ts +10 -0
- package/dist/test/partition/index.d.ts.map +1 -0
- package/dist/test/partition/index.js +26 -0
- package/dist/test/partition/index.js.map +1 -0
- package/dist/test/partition/types.d.ts +120 -0
- package/dist/test/partition/types.d.ts.map +1 -0
- package/dist/test/partition/types.js +21 -0
- package/dist/test/partition/types.js.map +1 -0
- package/package.json +5 -8
- package/dist/cli/commands/providers.d.ts +0 -50
- package/dist/cli/commands/providers.d.ts.map +0 -1
- package/dist/cli/commands/providers.js +0 -403
- package/dist/cli/commands/providers.js.map +0 -1
- package/dist/code-intelligence/parser/TreeSitterParser.d.ts.map +0 -1
- 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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"}
|