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
|
@@ -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":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;;;;AAEH,kDAA0B;AAC1B,qFAGmD;AACnD,mEAAiG;AA0CjG;;GAEG;AACH,MAAa,qBAAqB;IAKhC;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAiC,EAAE;QACtD,8DAA8D;QAC9D,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAElC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEjE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,oBAAoB;QACvC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,6CAAqB,CAAC;gBAC7C,eAAe,EAAE,KAAK;gBACtB,SAAS,EAAE,IAAI;gBACf,gBAAgB,EAAE,CAAC;gBACnB,cAAc,EAAE,KAAK;gBACrB,yBAAyB,EAAE,IAAI;aAChC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAA,iCAAkB,GAAE,CAAC;QAC3C,CAAC;QAED,6EAA6E;QAC7E,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,wBAAwB;QAC3C,MAAM,SAAS,GAAG;YAChB,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;YAC7E,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE;YACnG,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YACvF,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC3F,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE;SAC5F,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,QAAkB;QAC1D,yCAAyC;QACzC,MAAM,IAAI,CAAC,aAAa,EAAE,iBAAiB,EAAE,CAAC;QAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;QAC1E,MAAM,SAAS,GAAyB,EAAE,CAAC;QAE3C,MAAM,aAAa,GAA2B;YAC5C,MAAM,EAAE,UAAU;YAClB,eAAe,EAAE,eAAe;YAChC,QAAQ,EAAE,gBAAgB;YAC1B,QAAQ,EAAE,oBAAoB;YAC9B,YAAY,EAAE,YAAY;SAC3B,CAAC;QAEF,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAuB;gBAC/B,EAAE;gBACF,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE;gBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE;gBACzC,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC;YAEF,8BAA8B;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;YACpD,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,KAAK,GAAG;oBACX,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,UAAU,EAAE,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU;oBACjE,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,WAAW,EAAE,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW;oBACpE,cAAc,EAAE,KAAK,CAAC,cAAc;oBACpC,WAAW,EAAE,KAAK,CAAC,WAAW;iBAC/B,CAAC;YACJ,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QAED,oBAAoB;QACpB,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,SAAS,CAAC,MAAM;YACvB,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,MAAM;YAC/E,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,MAAM;YACjF,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,MAAM;YAChF,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,MAAM;SACrE,CAAC;QAEF,2BAA2B;QAC3B,IAAI,aAA+D,CAAC;QACpE,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACxB,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC;aAAM,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7C,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC;aAAM,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YAC/B,aAAa,GAAG,UAAU,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,WAAW,CAAC;QAC9B,CAAC;QAED,OAAO;YACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,aAAa;YACb,SAAS;YACT,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,mBAAmB,CAAC,MAA4B,EAAE,QAAkB;QACjF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAErE,iBAAiB;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;QAE3F,UAAU;QACV,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,uBAAuB,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,eAAe,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClE,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,gBAAgB,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,oBAAoB,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,mBAAmB;QACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAEnD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC;QAED,SAAS;QACT,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QACzI,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,qBAAqB,CAAC,QAA4B,EAAE,QAAkB;QACnF,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC;QAE7D,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QAErF,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAEtF,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBACjE,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACjG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,UAAU,UAAU,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACnG,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBAC/B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,6CAA6C;YAC7C,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC;YAChH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACvJ,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAA8B;QAChE,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAEnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,QAAQ,IAAI,EAAE,mCAAmC,CAAC,CAAC,CAAC;QAE1G,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEjE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YACrD,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,kBAAkB;QAClB,IAAI,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;QAEjC,kBAAkB;QAClB,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YAC5C,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;QAC/B,CAAC,EAAE,UAAU,CAAC,CAAC;QAEf,iBAAiB;QACjB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS;QACd,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,cAAc,CAAC,MAAc;QAC1C,MAAM,MAAM,GAAuC;YACjD,SAAS,EAAE,eAAK,CAAC,KAAK;YACtB,UAAU,EAAE,eAAK,CAAC,MAAM;YACxB,WAAW,EAAE,eAAK,CAAC,GAAG;YACtB,SAAS,EAAE,eAAK,CAAC,IAAI;SACtB,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,cAAc,CAAC,KAAa;QACzC,MAAM,KAAK,GAA2B;YACpC,QAAQ,EAAE,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS;YACtC,MAAM,EAAE,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO;YAChC,WAAW,EAAE,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY;SAC9C,CAAC;QACF,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;IACtD,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,WAAW,CAAC,UAAkB;QAC3C,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;QAE7B,IAAI,KAAK,GAAG,eAAK,CAAC,KAAK,CAAC;QACxB,IAAI,UAAU,GAAG,EAAE;YAAE,KAAK,GAAG,eAAK,CAAC,GAAG,CAAC;aAClC,IAAI,UAAU,GAAG,EAAE;YAAE,KAAK,GAAG,eAAK,CAAC,MAAM,CAAC;QAE/C,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;IAC1E,CAAC;IAED,2CAA2C;IACnC,MAAM,CAAC,KAAK,CAAC,eAAe;QAClC,0CAA0C;QAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAC1C,OAAO;YACL,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB;SACnD,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,uBAAuB;QAC1C,gDAAgD;QAChD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC;QACvD,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAC5C,MAAM,OAAO,GAAG,YAAY,IAAI,QAAQ,CAAC;QACzC,OAAO;YACL,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,4CAA4C;SAC1E,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,iBAAiB;QACpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oCAAoC,EAAE;gBACjE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,QAAQ,CAAC,EAAE;gBACpB,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,KAAK,EAAE,uCAAuC;aAC/C,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,iBAAiB;QACpC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC/C,OAAO;YACL,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,2BAA2B;SACxD,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,qBAAqB;QACxC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAChD,OAAO;YACL,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,4BAA4B;SACzD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO;QACZ,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,sCAAsC;QACtC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAChC,CAAC;CACF;AA7XD,sDA6XC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -58,7 +58,7 @@ const transferCommands = __importStar(require("./commands/transfer/index.js"));
|
|
|
58
58
|
const patternsCommands = __importStar(require("./commands/patterns/index.js"));
|
|
59
59
|
const improveCommands = __importStar(require("./commands/improve/index.js"));
|
|
60
60
|
const skillsCommands = __importStar(require("./commands/skills/index.js"));
|
|
61
|
-
const
|
|
61
|
+
const providers_1 = require("./commands/providers");
|
|
62
62
|
const init_1 = require("./commands/init");
|
|
63
63
|
const quantization_1 = require("./commands/quantization");
|
|
64
64
|
const constitution_1 = require("./commands/constitution");
|
|
@@ -1270,67 +1270,8 @@ improveCommand
|
|
|
1270
1270
|
process.exit(1);
|
|
1271
1271
|
}
|
|
1272
1272
|
});
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
*/
|
|
1276
|
-
const providersCommand = program
|
|
1277
|
-
.command('providers')
|
|
1278
|
-
.description('Manage LLM providers');
|
|
1279
|
-
providersCommand
|
|
1280
|
-
.command('list')
|
|
1281
|
-
.description('List all configured providers and their status')
|
|
1282
|
-
.option('-f, --format <format>', 'Output format (json, table)', 'table')
|
|
1283
|
-
.option('-v, --verbose', 'Show detailed information')
|
|
1284
|
-
.action(async (options) => {
|
|
1285
|
-
try {
|
|
1286
|
-
await providersCommands.providersList(options);
|
|
1287
|
-
}
|
|
1288
|
-
catch (error) {
|
|
1289
|
-
console.error(chalk_1.default.red('❌ Providers list failed:'), error);
|
|
1290
|
-
process.exit(1);
|
|
1291
|
-
}
|
|
1292
|
-
});
|
|
1293
|
-
providersCommand
|
|
1294
|
-
.command('status')
|
|
1295
|
-
.description('Show current provider status and health')
|
|
1296
|
-
.option('-f, --format <format>', 'Output format (json, table)', 'table')
|
|
1297
|
-
.option('-v, --verbose', 'Show usage statistics')
|
|
1298
|
-
.action(async (options) => {
|
|
1299
|
-
try {
|
|
1300
|
-
await providersCommands.providersStatus(options);
|
|
1301
|
-
}
|
|
1302
|
-
catch (error) {
|
|
1303
|
-
console.error(chalk_1.default.red('❌ Providers status failed:'), error);
|
|
1304
|
-
process.exit(1);
|
|
1305
|
-
}
|
|
1306
|
-
});
|
|
1307
|
-
providersCommand
|
|
1308
|
-
.command('switch')
|
|
1309
|
-
.description('Switch the default provider')
|
|
1310
|
-
.argument('<provider>', 'Provider name (ollama, claude, openrouter, ruvllm)')
|
|
1311
|
-
.action(async (provider, options) => {
|
|
1312
|
-
try {
|
|
1313
|
-
await providersCommands.providersSwitch(provider, options);
|
|
1314
|
-
}
|
|
1315
|
-
catch (error) {
|
|
1316
|
-
console.error(chalk_1.default.red('❌ Providers switch failed:'), error);
|
|
1317
|
-
process.exit(1);
|
|
1318
|
-
}
|
|
1319
|
-
});
|
|
1320
|
-
providersCommand
|
|
1321
|
-
.command('test')
|
|
1322
|
-
.description('Test a specific provider\'s connectivity')
|
|
1323
|
-
.argument('[provider]', 'Provider name to test')
|
|
1324
|
-
.option('-v, --verbose', 'Show detailed error information')
|
|
1325
|
-
.action(async (provider, options) => {
|
|
1326
|
-
try {
|
|
1327
|
-
await providersCommands.providersTest(provider, { ...options, provider });
|
|
1328
|
-
}
|
|
1329
|
-
catch (error) {
|
|
1330
|
-
console.error(chalk_1.default.red('❌ Provider test failed:'), error);
|
|
1331
|
-
process.exit(1);
|
|
1332
|
-
}
|
|
1333
|
-
});
|
|
1273
|
+
// Providers command - uses createProvidersCommand() pattern
|
|
1274
|
+
// See: program.addCommand(createProvidersCommand()) below
|
|
1334
1275
|
/**
|
|
1335
1276
|
* Telemetry commands
|
|
1336
1277
|
*/
|
|
@@ -1403,6 +1344,11 @@ program.addCommand((0, constitution_1.createConstitutionCommand)());
|
|
|
1403
1344
|
* RuVector Self-Learning commands (Phase 0.5)
|
|
1404
1345
|
*/
|
|
1405
1346
|
program.addCommand((0, ruvector_1.createRuVectorCommand)());
|
|
1347
|
+
/**
|
|
1348
|
+
* LLM Provider Management commands (Phase 3-4)
|
|
1349
|
+
* Health monitoring, quota tracking, and provider switching
|
|
1350
|
+
*/
|
|
1351
|
+
program.addCommand((0, providers_1.createProvidersCommand)());
|
|
1406
1352
|
/**
|
|
1407
1353
|
* Knowledge Graph / Code Intelligence commands
|
|
1408
1354
|
* Natural language code search, indexing, and visualization
|