agentic-qe 2.6.3 → 2.6.5
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 +49 -0
- package/README.md +26 -1
- 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 +8 -62
- package/dist/cli/index.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- 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/package.json +3 -2
- 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/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,55 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.6.5] - 2025-12-25
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
#### LLM Independence Phase 3-4 Complete
|
|
15
|
+
|
|
16
|
+
**New LLM Providers**
|
|
17
|
+
- `GroqProvider`: Free tier support with 14,400 requests/day, streaming, rate limiting
|
|
18
|
+
- `GitHubModelsProvider`: Automatic Codespaces detection, GITHUB_TOKEN authentication
|
|
19
|
+
|
|
20
|
+
**Provider Health Monitoring** (`src/monitoring/`)
|
|
21
|
+
- `ProviderHealthMonitor`: Health checks with circuit breaker pattern (closed → half-open → open)
|
|
22
|
+
- `QuotaManager`: Per-provider quota tracking with daily/minute limits and auto-reset
|
|
23
|
+
- Health-aware routing with automatic fallback chains
|
|
24
|
+
|
|
25
|
+
**CLI Provider Management**
|
|
26
|
+
- `aqe providers status`: Health dashboard with real-time provider status
|
|
27
|
+
- `aqe providers list`: List all configured providers
|
|
28
|
+
- `aqe providers test [provider]`: Test provider connectivity
|
|
29
|
+
- `aqe providers switch <provider>`: Switch default provider
|
|
30
|
+
- `aqe providers quota`: Show quota usage for all providers
|
|
31
|
+
|
|
32
|
+
**Health-Aware Routing** (`src/providers/HybridRouterHealthIntegration.ts`)
|
|
33
|
+
- Integrates ProviderHealthMonitor with HybridRouter
|
|
34
|
+
- Automatic fallback to healthy providers when primary fails
|
|
35
|
+
- Provider ranking based on health score, latency, and availability
|
|
36
|
+
|
|
37
|
+
### Changed
|
|
38
|
+
|
|
39
|
+
- **CLI Command Pattern**: Refactored `src/cli/commands/providers/` to use `createProvidersCommand()` pattern consistent with other commands
|
|
40
|
+
- **Provider Exports**: Extended `src/providers/index.ts` with new Phase 3-4 components
|
|
41
|
+
|
|
42
|
+
### Tests
|
|
43
|
+
|
|
44
|
+
- 144 new tests for Phase 3-4 components:
|
|
45
|
+
- `GroqProvider.test.ts` (22 tests)
|
|
46
|
+
- `GitHubModelsProvider.test.ts` (25 tests)
|
|
47
|
+
- `HybridRouterHealthIntegration.test.ts` (30 tests)
|
|
48
|
+
- `ProviderHealthMonitor.test.ts` (20 tests)
|
|
49
|
+
- `QuotaManager.test.ts` (20 tests)
|
|
50
|
+
- `providers.test.ts` (20 tests)
|
|
51
|
+
- `phase3-4-integration.test.ts` (7 tests)
|
|
52
|
+
|
|
53
|
+
## [2.6.4] - 2025-12-25
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
|
|
57
|
+
- **Missing `fast-glob` dependency** - Added `fast-glob` as explicit dependency to fix "Cannot find module 'fast-glob'" error when installing globally via `npm install -g agentic-qe`. The module was used in `ComponentBoundaryAnalyzer` but only available as a transitive dependency.
|
|
58
|
+
|
|
10
59
|
## [2.6.3] - 2025-12-24
|
|
11
60
|
|
|
12
61
|
### Added
|
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
[](https://smithery.ai/skills?ns=proffesor-for-testing&utm_source=github&utm_medium=badge)
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
**Version 2.6.
|
|
14
|
+
**Version 2.6.5** | [Changelog](CHANGELOG.md) | [Contributors](CONTRIBUTORS.md) | [Issues](https://github.com/proffesor-for-testing/agentic-qe/issues) | [Discussions](https://github.com/proffesor-for-testing/agentic-qe/discussions)
|
|
15
15
|
|
|
16
16
|
> AI-powered test automation that learns from every task, switches between 300+ AI models on-the-fly, scores code testability, visualizes agent activity in real-time, and improves autonomously overnight — with built-in safety guardrails and full observability.
|
|
17
17
|
|
|
@@ -622,6 +622,7 @@ AQE supports multiple LLM providers for maximum flexibility and cost optimizatio
|
|
|
622
622
|
| **Ollama** | Local | FREE | 10 min | Privacy, offline, no budget |
|
|
623
623
|
| **OpenRouter** | Cloud | Paid/Free | 2 min | 300+ models, flexibility |
|
|
624
624
|
| **Groq** | Cloud | FREE | 1 min | High-speed, 14,400 req/day |
|
|
625
|
+
| **GitHub Models** | Cloud | FREE | 0 min | Codespaces, auto-detected |
|
|
625
626
|
| **Claude API** | Cloud | Paid | 2 min | Highest quality |
|
|
626
627
|
| **Google AI** | Cloud | FREE | 2 min | Gemini models, 1,500 req/day |
|
|
627
628
|
|
|
@@ -694,6 +695,30 @@ await factory.initialize();
|
|
|
694
695
|
- **Balanced**: `qwen/qwen-2.5-coder-32b-instruct` ($0.18/$0.18 per M)
|
|
695
696
|
- **Premium**: `claude-sonnet-4` ($3/$15 per M)
|
|
696
697
|
|
|
698
|
+
### Provider Health Monitoring (v2.6.5+)
|
|
699
|
+
|
|
700
|
+
Monitor and manage LLM providers with built-in health checks and automatic failover:
|
|
701
|
+
|
|
702
|
+
```bash
|
|
703
|
+
# View provider health dashboard
|
|
704
|
+
aqe providers status
|
|
705
|
+
|
|
706
|
+
# Detailed metrics with circuit breaker states
|
|
707
|
+
aqe providers status --detailed
|
|
708
|
+
|
|
709
|
+
# Test specific provider connectivity
|
|
710
|
+
aqe providers test groq
|
|
711
|
+
|
|
712
|
+
# Check quota usage
|
|
713
|
+
aqe providers quota
|
|
714
|
+
```
|
|
715
|
+
|
|
716
|
+
**Features:**
|
|
717
|
+
- **Circuit Breaker Pattern**: Automatic detection of unhealthy providers (closed → half-open → open)
|
|
718
|
+
- **Health-Aware Routing**: Requests automatically route to healthy providers
|
|
719
|
+
- **Quota Management**: Per-provider rate limit tracking with alerts
|
|
720
|
+
- **Fallback Chains**: Graceful degradation when primary provider fails
|
|
721
|
+
|
|
697
722
|
### Documentation
|
|
698
723
|
|
|
699
724
|
- **[LLM Providers Guide](docs/guides/llm-providers-guide.md)** - Complete provider overview
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Commands - LLM Provider management CLI
|
|
3
|
+
*
|
|
4
|
+
* Commands for monitoring, configuring, and managing LLM providers.
|
|
5
|
+
*
|
|
6
|
+
* Available commands:
|
|
7
|
+
* aqe providers status - Show provider health dashboard
|
|
8
|
+
* aqe providers list - List all registered providers
|
|
9
|
+
* aqe providers quota - Show quota usage for all providers
|
|
10
|
+
* aqe providers test - Test connectivity to a provider
|
|
11
|
+
* aqe providers switch - Switch the default provider
|
|
12
|
+
*
|
|
13
|
+
* @module cli/commands/providers
|
|
14
|
+
* @version 1.0.0
|
|
15
|
+
*/
|
|
16
|
+
import { Command } from 'commander';
|
|
17
|
+
export declare function createProvidersCommand(): Command;
|
|
18
|
+
export { ProviderStatusCommand } from './status';
|
|
19
|
+
export type { ProviderStatusOptions, ProviderStatusReport, ProviderHealthInfo } from './status';
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,sBAAsB,IAAI,OAAO,CAuHhD;AAGD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Provider Commands - LLM Provider management CLI
|
|
4
|
+
*
|
|
5
|
+
* Commands for monitoring, configuring, and managing LLM providers.
|
|
6
|
+
*
|
|
7
|
+
* Available commands:
|
|
8
|
+
* aqe providers status - Show provider health dashboard
|
|
9
|
+
* aqe providers list - List all registered providers
|
|
10
|
+
* aqe providers quota - Show quota usage for all providers
|
|
11
|
+
* aqe providers test - Test connectivity to a provider
|
|
12
|
+
* aqe providers switch - Switch the default provider
|
|
13
|
+
*
|
|
14
|
+
* @module cli/commands/providers
|
|
15
|
+
* @version 1.0.0
|
|
16
|
+
*/
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.ProviderStatusCommand = void 0;
|
|
22
|
+
exports.createProvidersCommand = createProvidersCommand;
|
|
23
|
+
const commander_1 = require("commander");
|
|
24
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
25
|
+
const status_1 = require("./status");
|
|
26
|
+
function createProvidersCommand() {
|
|
27
|
+
const providers = new commander_1.Command('providers')
|
|
28
|
+
.description('LLM provider management and health monitoring')
|
|
29
|
+
.addHelpText('after', `
|
|
30
|
+
Examples:
|
|
31
|
+
$ aqe providers status Show provider health dashboard
|
|
32
|
+
$ aqe providers status --detailed Show detailed metrics
|
|
33
|
+
$ aqe providers status --json Output in JSON format
|
|
34
|
+
$ aqe providers status --watch Continuously monitor
|
|
35
|
+
$ aqe providers list List all configured providers
|
|
36
|
+
$ aqe providers test groq Test Groq provider connectivity
|
|
37
|
+
$ aqe providers switch claude Switch default to Claude
|
|
38
|
+
`);
|
|
39
|
+
// Status subcommand - primary health dashboard
|
|
40
|
+
providers
|
|
41
|
+
.command('status')
|
|
42
|
+
.description('Show provider health dashboard with real-time metrics')
|
|
43
|
+
.option('-d, --detailed', 'Show detailed metrics for each provider')
|
|
44
|
+
.option('-j, --json', 'Output in JSON format')
|
|
45
|
+
.option('-f, --format <format>', 'Output format (json, table)', 'table')
|
|
46
|
+
.option('-v, --verbose', 'Show verbose output (alias for --detailed)')
|
|
47
|
+
.option('-w, --watch', 'Continuously monitor provider health')
|
|
48
|
+
.option('-i, --interval <seconds>', 'Watch interval in seconds', '10')
|
|
49
|
+
.action(async (options) => {
|
|
50
|
+
const statusOptions = {
|
|
51
|
+
detailed: options.detailed || options.verbose,
|
|
52
|
+
json: options.json || options.format === 'json',
|
|
53
|
+
watch: options.watch,
|
|
54
|
+
interval: parseInt(options.interval, 10)
|
|
55
|
+
};
|
|
56
|
+
try {
|
|
57
|
+
await status_1.ProviderStatusCommand.execute(statusOptions);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error(chalk_1.default.red(`❌ Provider status failed: ${error.message}`));
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
// List subcommand - list all providers
|
|
65
|
+
providers
|
|
66
|
+
.command('list')
|
|
67
|
+
.description('List all configured providers and their status')
|
|
68
|
+
.option('-j, --json', 'Output in JSON format')
|
|
69
|
+
.option('-f, --format <format>', 'Output format (json, table)', 'table')
|
|
70
|
+
.option('-v, --verbose', 'Show detailed information')
|
|
71
|
+
.action(async (options) => {
|
|
72
|
+
try {
|
|
73
|
+
await status_1.ProviderStatusCommand.execute({
|
|
74
|
+
json: options.json || options.format === 'json',
|
|
75
|
+
detailed: options.verbose
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
console.error(chalk_1.default.red(`❌ Provider list failed: ${error.message}`));
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
// Quota subcommand - show quota usage
|
|
84
|
+
providers
|
|
85
|
+
.command('quota')
|
|
86
|
+
.description('Show quota usage for all providers')
|
|
87
|
+
.option('-j, --json', 'Output in JSON format')
|
|
88
|
+
.action(async (options) => {
|
|
89
|
+
try {
|
|
90
|
+
await status_1.ProviderStatusCommand.execute({
|
|
91
|
+
detailed: true,
|
|
92
|
+
json: options.json
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
console.error(chalk_1.default.red(`❌ Provider quota failed: ${error.message}`));
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
// Test subcommand - test provider connectivity
|
|
101
|
+
providers
|
|
102
|
+
.command('test')
|
|
103
|
+
.description('Test connectivity to a specific provider')
|
|
104
|
+
.argument('[provider]', 'Provider name to test (groq, github-models, claude, ollama)')
|
|
105
|
+
.option('-v, --verbose', 'Show detailed error information')
|
|
106
|
+
.action(async (provider, options) => {
|
|
107
|
+
try {
|
|
108
|
+
console.log(chalk_1.default.cyan(`\n🔍 Testing provider: ${provider || 'all'}\n`));
|
|
109
|
+
await status_1.ProviderStatusCommand.execute({
|
|
110
|
+
detailed: options.verbose || true
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
console.error(chalk_1.default.red(`❌ Provider test failed: ${error.message}`));
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
// Switch subcommand - change default provider
|
|
119
|
+
providers
|
|
120
|
+
.command('switch')
|
|
121
|
+
.description('Switch the default provider')
|
|
122
|
+
.argument('<provider>', 'Provider name (groq, github-models, claude, ollama, openrouter)')
|
|
123
|
+
.action(async (provider) => {
|
|
124
|
+
const validProviders = ['groq', 'github-models', 'claude', 'ollama', 'openrouter', 'ruvllm'];
|
|
125
|
+
if (!validProviders.includes(provider.toLowerCase())) {
|
|
126
|
+
console.error(chalk_1.default.red(`❌ Invalid provider: ${provider}`));
|
|
127
|
+
console.log(chalk_1.default.yellow(`Valid providers: ${validProviders.join(', ')}`));
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
console.log(chalk_1.default.cyan(`\n🔄 Switching default provider to: ${provider}\n`));
|
|
131
|
+
console.log(chalk_1.default.yellow('To persist this change, update your configuration:'));
|
|
132
|
+
console.log(chalk_1.default.white(` aqe config set providers.default ${provider}`));
|
|
133
|
+
console.log(chalk_1.default.white(` # or edit .aqe/config.json directly\n`));
|
|
134
|
+
// Show current status of the target provider
|
|
135
|
+
console.log(chalk_1.default.cyan('Current status of target provider:'));
|
|
136
|
+
await status_1.ProviderStatusCommand.execute({ detailed: false });
|
|
137
|
+
});
|
|
138
|
+
return providers;
|
|
139
|
+
}
|
|
140
|
+
// Export command components for direct usage
|
|
141
|
+
var status_2 = require("./status");
|
|
142
|
+
Object.defineProperty(exports, "ProviderStatusCommand", { enumerable: true, get: function () { return status_2.ProviderStatusCommand; } });
|
|
143
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/providers/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|