claude-flow 2.0.0-alpha.66 → 2.0.0-alpha.67

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 (110) hide show
  1. package/.claude/cache/agent-pool.json +33 -0
  2. package/.claude/cache/memory-optimization.json +19 -0
  3. package/.claude/cache/neural-optimization.json +25 -0
  4. package/.claude/cache/optimized-hooks.json +19 -0
  5. package/.claude/cache/parallel-processing.json +26 -0
  6. package/.claude/optimized-settings.json +270 -0
  7. package/.claude/settings-enhanced.json +278 -0
  8. package/.claude/settings.json +105 -8
  9. package/CHANGELOG.md +18 -0
  10. package/bin/claude-flow +1 -1
  11. package/dist/cli/simple-commands/hive-mind.js +1 -1
  12. package/dist/cli/simple-commands/hive-mind.js.map +1 -1
  13. package/dist/cli/simple-commands/hooks.js +6 -4
  14. package/dist/cli/simple-commands/hooks.js.map +1 -1
  15. package/dist/providers/anthropic-provider.d.ts +27 -0
  16. package/dist/providers/anthropic-provider.d.ts.map +1 -0
  17. package/dist/providers/anthropic-provider.js +247 -0
  18. package/dist/providers/anthropic-provider.js.map +1 -0
  19. package/dist/providers/base-provider.d.ts +134 -0
  20. package/dist/providers/base-provider.d.ts.map +1 -0
  21. package/dist/providers/base-provider.js +407 -0
  22. package/dist/providers/base-provider.js.map +1 -0
  23. package/dist/providers/cohere-provider.d.ts +28 -0
  24. package/dist/providers/cohere-provider.d.ts.map +1 -0
  25. package/dist/providers/cohere-provider.js +407 -0
  26. package/dist/providers/cohere-provider.js.map +1 -0
  27. package/dist/providers/google-provider.d.ts +23 -0
  28. package/dist/providers/google-provider.d.ts.map +1 -0
  29. package/dist/providers/google-provider.js +362 -0
  30. package/dist/providers/google-provider.js.map +1 -0
  31. package/dist/providers/index.d.ts +14 -0
  32. package/dist/providers/index.d.ts.map +1 -0
  33. package/dist/providers/index.js +18 -0
  34. package/dist/providers/index.js.map +1 -0
  35. package/dist/providers/ollama-provider.d.ts +23 -0
  36. package/dist/providers/ollama-provider.d.ts.map +1 -0
  37. package/dist/providers/ollama-provider.js +374 -0
  38. package/dist/providers/ollama-provider.js.map +1 -0
  39. package/dist/providers/openai-provider.d.ts +23 -0
  40. package/dist/providers/openai-provider.d.ts.map +1 -0
  41. package/dist/providers/openai-provider.js +349 -0
  42. package/dist/providers/openai-provider.js.map +1 -0
  43. package/dist/providers/provider-manager.d.ts +139 -0
  44. package/dist/providers/provider-manager.d.ts.map +1 -0
  45. package/dist/providers/provider-manager.js +513 -0
  46. package/dist/providers/provider-manager.js.map +1 -0
  47. package/dist/providers/types.d.ts +356 -0
  48. package/dist/providers/types.d.ts.map +1 -0
  49. package/dist/providers/types.js +61 -0
  50. package/dist/providers/types.js.map +1 -0
  51. package/dist/providers/utils.d.ts +37 -0
  52. package/dist/providers/utils.d.ts.map +1 -0
  53. package/dist/providers/utils.js +322 -0
  54. package/dist/providers/utils.js.map +1 -0
  55. package/dist/services/agentic-flow-hooks/hook-manager.d.ts +70 -0
  56. package/dist/services/agentic-flow-hooks/hook-manager.d.ts.map +1 -0
  57. package/dist/services/agentic-flow-hooks/hook-manager.js +512 -0
  58. package/dist/services/agentic-flow-hooks/hook-manager.js.map +1 -0
  59. package/dist/services/agentic-flow-hooks/index.d.ts +36 -0
  60. package/dist/services/agentic-flow-hooks/index.d.ts.map +1 -0
  61. package/dist/services/agentic-flow-hooks/index.js +325 -0
  62. package/dist/services/agentic-flow-hooks/index.js.map +1 -0
  63. package/dist/services/agentic-flow-hooks/llm-hooks.d.ts +33 -0
  64. package/dist/services/agentic-flow-hooks/llm-hooks.d.ts.map +1 -0
  65. package/dist/services/agentic-flow-hooks/llm-hooks.js +415 -0
  66. package/dist/services/agentic-flow-hooks/llm-hooks.js.map +1 -0
  67. package/dist/services/agentic-flow-hooks/memory-hooks.d.ts +45 -0
  68. package/dist/services/agentic-flow-hooks/memory-hooks.d.ts.map +1 -0
  69. package/dist/services/agentic-flow-hooks/memory-hooks.js +532 -0
  70. package/dist/services/agentic-flow-hooks/memory-hooks.js.map +1 -0
  71. package/dist/services/agentic-flow-hooks/neural-hooks.d.ts +39 -0
  72. package/dist/services/agentic-flow-hooks/neural-hooks.d.ts.map +1 -0
  73. package/dist/services/agentic-flow-hooks/neural-hooks.js +561 -0
  74. package/dist/services/agentic-flow-hooks/neural-hooks.js.map +1 -0
  75. package/dist/services/agentic-flow-hooks/performance-hooks.d.ts +33 -0
  76. package/dist/services/agentic-flow-hooks/performance-hooks.d.ts.map +1 -0
  77. package/dist/services/agentic-flow-hooks/performance-hooks.js +621 -0
  78. package/dist/services/agentic-flow-hooks/performance-hooks.js.map +1 -0
  79. package/dist/services/agentic-flow-hooks/types.d.ts +379 -0
  80. package/dist/services/agentic-flow-hooks/types.d.ts.map +1 -0
  81. package/dist/services/agentic-flow-hooks/types.js +8 -0
  82. package/dist/services/agentic-flow-hooks/types.js.map +1 -0
  83. package/dist/services/agentic-flow-hooks/workflow-hooks.d.ts +39 -0
  84. package/dist/services/agentic-flow-hooks/workflow-hooks.d.ts.map +1 -0
  85. package/dist/services/agentic-flow-hooks/workflow-hooks.js +742 -0
  86. package/dist/services/agentic-flow-hooks/workflow-hooks.js.map +1 -0
  87. package/package.json +1 -1
  88. package/scripts/optimize-performance.js +400 -0
  89. package/scripts/performance-monitor.js +263 -0
  90. package/src/cli/help-text.js +1 -1
  91. package/src/cli/simple-cli.js +1 -1
  92. package/src/cli/simple-commands/hive-mind.js +1 -1
  93. package/src/providers/anthropic-provider.ts +282 -0
  94. package/src/providers/base-provider.ts +560 -0
  95. package/src/providers/cohere-provider.ts +521 -0
  96. package/src/providers/google-provider.ts +477 -0
  97. package/src/providers/index.ts +21 -0
  98. package/src/providers/ollama-provider.ts +489 -0
  99. package/src/providers/openai-provider.ts +476 -0
  100. package/src/providers/provider-manager.ts +654 -0
  101. package/src/providers/types.ts +531 -0
  102. package/src/providers/utils.ts +376 -0
  103. package/src/services/agentic-flow-hooks/hook-manager.ts +701 -0
  104. package/src/services/agentic-flow-hooks/index.ts +386 -0
  105. package/src/services/agentic-flow-hooks/llm-hooks.ts +557 -0
  106. package/src/services/agentic-flow-hooks/memory-hooks.ts +710 -0
  107. package/src/services/agentic-flow-hooks/neural-hooks.ts +758 -0
  108. package/src/services/agentic-flow-hooks/performance-hooks.ts +827 -0
  109. package/src/services/agentic-flow-hooks/types.ts +503 -0
  110. package/src/services/agentic-flow-hooks/workflow-hooks.ts +1026 -0
@@ -0,0 +1,513 @@
1
+ /**
2
+ * Provider Manager - Central orchestration for multi-LLM providers
3
+ * Handles provider selection, fallback, load balancing, and cost optimization
4
+ */
5
+ import { EventEmitter } from 'events';
6
+ import { LLMProviderError, isRateLimitError, } from './types.js';
7
+ // Import providers
8
+ import { AnthropicProvider } from './anthropic-provider.js';
9
+ import { OpenAIProvider } from './openai-provider.js';
10
+ import { GoogleProvider } from './google-provider.js';
11
+ import { CohereProvider } from './cohere-provider.js';
12
+ import { OllamaProvider } from './ollama-provider.js';
13
+ export class ProviderManager extends EventEmitter {
14
+ providers = new Map();
15
+ logger;
16
+ config;
17
+ requestCount = new Map();
18
+ lastUsed = new Map();
19
+ providerMetrics = new Map();
20
+ cache = new Map();
21
+ currentProviderIndex = 0;
22
+ constructor(logger, configManager, config) {
23
+ super();
24
+ this.logger = logger;
25
+ this.config = config;
26
+ // Initialize providers
27
+ this.initializeProviders();
28
+ // Start monitoring if enabled
29
+ if (config.monitoring?.enabled) {
30
+ this.startMonitoring();
31
+ }
32
+ }
33
+ /**
34
+ * Initialize all configured providers
35
+ */
36
+ async initializeProviders() {
37
+ for (const [providerName, providerConfig] of Object.entries(this.config.providers)) {
38
+ try {
39
+ const provider = await this.createProvider(providerName, providerConfig);
40
+ if (provider) {
41
+ this.providers.set(providerName, provider);
42
+ this.requestCount.set(providerName, 0);
43
+ this.logger.info(`Initialized ${providerName} provider`);
44
+ }
45
+ }
46
+ catch (error) {
47
+ this.logger.error(`Failed to initialize ${providerName} provider`, error);
48
+ }
49
+ }
50
+ if (this.providers.size === 0) {
51
+ throw new Error('No providers could be initialized');
52
+ }
53
+ }
54
+ /**
55
+ * Create a provider instance
56
+ */
57
+ async createProvider(name, config) {
58
+ const providerOptions = {
59
+ logger: this.logger,
60
+ config,
61
+ };
62
+ try {
63
+ let provider;
64
+ switch (name) {
65
+ case 'anthropic':
66
+ provider = new AnthropicProvider(providerOptions);
67
+ break;
68
+ case 'openai':
69
+ provider = new OpenAIProvider(providerOptions);
70
+ break;
71
+ case 'google':
72
+ provider = new GoogleProvider(providerOptions);
73
+ break;
74
+ case 'cohere':
75
+ provider = new CohereProvider(providerOptions);
76
+ break;
77
+ case 'ollama':
78
+ provider = new OllamaProvider(providerOptions);
79
+ break;
80
+ default:
81
+ this.logger.warn(`Unknown provider: ${name}`);
82
+ return null;
83
+ }
84
+ await provider.initialize();
85
+ // Set up event listeners
86
+ provider.on('response', (data) => this.handleProviderResponse(name, data));
87
+ provider.on('error', (error) => this.handleProviderError(name, error));
88
+ provider.on('health_check', (result) => this.handleHealthCheck(name, result));
89
+ return provider;
90
+ }
91
+ catch (error) {
92
+ this.logger.error(`Failed to create ${name} provider`, error);
93
+ return null;
94
+ }
95
+ }
96
+ /**
97
+ * Complete a request using the appropriate provider
98
+ */
99
+ async complete(request) {
100
+ // Check cache first
101
+ if (this.config.caching?.enabled) {
102
+ const cached = this.checkCache(request);
103
+ if (cached) {
104
+ this.logger.debug('Returning cached response');
105
+ return cached;
106
+ }
107
+ }
108
+ // Select provider based on strategy
109
+ const provider = await this.selectProvider(request);
110
+ try {
111
+ const response = await provider.complete(request);
112
+ // Cache successful response
113
+ if (this.config.caching?.enabled) {
114
+ this.cacheResponse(request, response);
115
+ }
116
+ // Update metrics
117
+ this.updateProviderMetrics(provider.name, {
118
+ success: true,
119
+ latency: response.latency || 0,
120
+ cost: response.cost?.totalCost || 0,
121
+ });
122
+ return response;
123
+ }
124
+ catch (error) {
125
+ // Handle error and potentially fallback
126
+ return this.handleRequestError(error, request, provider);
127
+ }
128
+ }
129
+ /**
130
+ * Stream complete a request
131
+ */
132
+ async *streamComplete(request) {
133
+ const provider = await this.selectProvider(request);
134
+ try {
135
+ yield* provider.streamComplete(request);
136
+ // Update metrics
137
+ this.updateProviderMetrics(provider.name, {
138
+ success: true,
139
+ latency: 0, // Will be updated by stream events
140
+ cost: 0, // Will be updated by stream events
141
+ });
142
+ }
143
+ catch (error) {
144
+ // Handle error and potentially fallback
145
+ const fallbackProvider = await this.getFallbackProvider(error, provider);
146
+ if (fallbackProvider) {
147
+ this.logger.info(`Falling back to ${fallbackProvider.name} provider`);
148
+ yield* fallbackProvider.streamComplete(request);
149
+ }
150
+ else {
151
+ throw error;
152
+ }
153
+ }
154
+ }
155
+ /**
156
+ * Select the best provider for a request
157
+ */
158
+ async selectProvider(request) {
159
+ // If specific provider requested
160
+ if (request.providerOptions?.preferredProvider) {
161
+ const provider = this.providers.get(request.providerOptions.preferredProvider);
162
+ if (provider && this.isProviderAvailable(provider)) {
163
+ return provider;
164
+ }
165
+ }
166
+ // Cost optimization
167
+ if (this.config.costOptimization?.enabled && request.costConstraints) {
168
+ const optimized = await this.selectOptimalProvider(request);
169
+ if (optimized) {
170
+ return optimized;
171
+ }
172
+ }
173
+ // Load balancing
174
+ if (this.config.loadBalancing?.enabled) {
175
+ return this.selectLoadBalancedProvider();
176
+ }
177
+ // Default provider
178
+ const defaultProvider = this.providers.get(this.config.defaultProvider);
179
+ if (defaultProvider && this.isProviderAvailable(defaultProvider)) {
180
+ return defaultProvider;
181
+ }
182
+ // First available provider
183
+ for (const provider of this.providers.values()) {
184
+ if (this.isProviderAvailable(provider)) {
185
+ return provider;
186
+ }
187
+ }
188
+ throw new Error('No available providers');
189
+ }
190
+ /**
191
+ * Select provider based on cost optimization
192
+ */
193
+ async selectOptimalProvider(request) {
194
+ let bestProvider = null;
195
+ let bestCost = Infinity;
196
+ for (const provider of this.providers.values()) {
197
+ if (!this.isProviderAvailable(provider))
198
+ continue;
199
+ try {
200
+ const estimate = await provider.estimateCost(request);
201
+ if (estimate.estimatedCost.total < bestCost &&
202
+ (!request.costConstraints?.maxCostPerRequest ||
203
+ estimate.estimatedCost.total <= request.costConstraints.maxCostPerRequest)) {
204
+ bestCost = estimate.estimatedCost.total;
205
+ bestProvider = provider;
206
+ }
207
+ }
208
+ catch (error) {
209
+ this.logger.warn(`Failed to estimate cost for ${provider.name}`, error);
210
+ }
211
+ }
212
+ return bestProvider;
213
+ }
214
+ /**
215
+ * Select provider using load balancing
216
+ */
217
+ selectLoadBalancedProvider() {
218
+ const availableProviders = Array.from(this.providers.values()).filter(p => this.isProviderAvailable(p));
219
+ if (availableProviders.length === 0) {
220
+ throw new Error('No available providers');
221
+ }
222
+ switch (this.config.loadBalancing?.strategy) {
223
+ case 'round-robin':
224
+ return this.roundRobinSelect(availableProviders);
225
+ case 'least-loaded':
226
+ return this.leastLoadedSelect(availableProviders);
227
+ case 'latency-based':
228
+ return this.latencyBasedSelect(availableProviders);
229
+ case 'cost-based':
230
+ return this.costBasedSelect(availableProviders);
231
+ default:
232
+ return availableProviders[0];
233
+ }
234
+ }
235
+ /**
236
+ * Round-robin provider selection
237
+ */
238
+ roundRobinSelect(providers) {
239
+ const provider = providers[this.currentProviderIndex % providers.length];
240
+ this.currentProviderIndex++;
241
+ return provider;
242
+ }
243
+ /**
244
+ * Select least loaded provider
245
+ */
246
+ leastLoadedSelect(providers) {
247
+ let minLoad = Infinity;
248
+ let selectedProvider = providers[0];
249
+ for (const provider of providers) {
250
+ const status = provider.getStatus();
251
+ if (status.currentLoad < minLoad) {
252
+ minLoad = status.currentLoad;
253
+ selectedProvider = provider;
254
+ }
255
+ }
256
+ return selectedProvider;
257
+ }
258
+ /**
259
+ * Select provider with lowest latency
260
+ */
261
+ latencyBasedSelect(providers) {
262
+ let minLatency = Infinity;
263
+ let selectedProvider = providers[0];
264
+ for (const provider of providers) {
265
+ const metrics = this.providerMetrics.get(provider.name);
266
+ if (metrics && metrics.length > 0) {
267
+ const avgLatency = metrics.reduce((sum, m) => sum + m.latency, 0) / metrics.length;
268
+ if (avgLatency < minLatency) {
269
+ minLatency = avgLatency;
270
+ selectedProvider = provider;
271
+ }
272
+ }
273
+ }
274
+ return selectedProvider;
275
+ }
276
+ /**
277
+ * Select provider with lowest cost
278
+ */
279
+ costBasedSelect(providers) {
280
+ let minCost = Infinity;
281
+ let selectedProvider = providers[0];
282
+ for (const provider of providers) {
283
+ const metrics = this.providerMetrics.get(provider.name);
284
+ if (metrics && metrics.length > 0) {
285
+ const avgCost = metrics.reduce((sum, m) => sum + m.cost, 0) / metrics.length;
286
+ if (avgCost < minCost) {
287
+ minCost = avgCost;
288
+ selectedProvider = provider;
289
+ }
290
+ }
291
+ }
292
+ return selectedProvider;
293
+ }
294
+ /**
295
+ * Check if provider is available
296
+ */
297
+ isProviderAvailable(provider) {
298
+ const status = provider.getStatus();
299
+ return status.available;
300
+ }
301
+ /**
302
+ * Handle request error with fallback
303
+ */
304
+ async handleRequestError(error, request, failedProvider) {
305
+ this.logger.error(`Provider ${failedProvider.name} failed`, error);
306
+ // Update metrics
307
+ this.updateProviderMetrics(failedProvider.name, {
308
+ success: false,
309
+ latency: 0,
310
+ cost: 0,
311
+ });
312
+ // Try fallback
313
+ const fallbackProvider = await this.getFallbackProvider(error, failedProvider);
314
+ if (fallbackProvider) {
315
+ this.logger.info(`Falling back to ${fallbackProvider.name} provider`);
316
+ return fallbackProvider.complete(request);
317
+ }
318
+ throw error;
319
+ }
320
+ /**
321
+ * Get fallback provider based on error
322
+ */
323
+ async getFallbackProvider(error, failedProvider) {
324
+ if (!this.config.fallbackStrategy?.enabled) {
325
+ return null;
326
+ }
327
+ const errorCondition = this.getErrorCondition(error);
328
+ const fallbackRule = this.config.fallbackStrategy.rules.find(rule => rule.condition === errorCondition);
329
+ if (!fallbackRule) {
330
+ return null;
331
+ }
332
+ // Find first available fallback provider
333
+ for (const providerName of fallbackRule.fallbackProviders) {
334
+ const provider = this.providers.get(providerName);
335
+ if (provider && provider !== failedProvider && this.isProviderAvailable(provider)) {
336
+ return provider;
337
+ }
338
+ }
339
+ return null;
340
+ }
341
+ /**
342
+ * Determine error condition for fallback
343
+ */
344
+ getErrorCondition(error) {
345
+ if (isRateLimitError(error)) {
346
+ return 'rate_limit';
347
+ }
348
+ if (error instanceof LLMProviderError) {
349
+ if (error.statusCode === 503) {
350
+ return 'unavailable';
351
+ }
352
+ if (error.code === 'TIMEOUT') {
353
+ return 'timeout';
354
+ }
355
+ }
356
+ return 'error';
357
+ }
358
+ /**
359
+ * Cache management
360
+ */
361
+ checkCache(request) {
362
+ const cacheKey = this.generateCacheKey(request);
363
+ const cached = this.cache.get(cacheKey);
364
+ if (cached) {
365
+ const age = Date.now() - cached.timestamp.getTime();
366
+ if (age < (this.config.caching?.ttl || 3600) * 1000) {
367
+ return cached.response;
368
+ }
369
+ // Remove expired entry
370
+ this.cache.delete(cacheKey);
371
+ }
372
+ return null;
373
+ }
374
+ cacheResponse(request, response) {
375
+ const cacheKey = this.generateCacheKey(request);
376
+ this.cache.set(cacheKey, {
377
+ response,
378
+ timestamp: new Date(),
379
+ });
380
+ // Cleanup old cache entries
381
+ if (this.cache.size > 1000) {
382
+ const oldestKey = this.cache.keys().next().value;
383
+ this.cache.delete(oldestKey);
384
+ }
385
+ }
386
+ generateCacheKey(request) {
387
+ return JSON.stringify({
388
+ model: request.model,
389
+ messages: request.messages,
390
+ temperature: request.temperature,
391
+ maxTokens: request.maxTokens,
392
+ });
393
+ }
394
+ /**
395
+ * Update provider metrics
396
+ */
397
+ updateProviderMetrics(provider, metrics) {
398
+ const count = this.requestCount.get(provider) || 0;
399
+ this.requestCount.set(provider, count + 1);
400
+ this.lastUsed.set(provider, new Date());
401
+ const providerMetricsList = this.providerMetrics.get(provider) || [];
402
+ const errorRate = metrics.success ? 0 : 1;
403
+ const successRate = metrics.success ? 1 : 0;
404
+ providerMetricsList.push({
405
+ provider,
406
+ timestamp: new Date(),
407
+ latency: metrics.latency,
408
+ errorRate,
409
+ successRate,
410
+ load: this.providers.get(provider)?.getStatus().currentLoad || 0,
411
+ cost: metrics.cost,
412
+ availability: this.providers.get(provider)?.getStatus().available ? 1 : 0,
413
+ });
414
+ // Keep only recent metrics (last 100)
415
+ if (providerMetricsList.length > 100) {
416
+ providerMetricsList.shift();
417
+ }
418
+ this.providerMetrics.set(provider, providerMetricsList);
419
+ }
420
+ /**
421
+ * Event handlers
422
+ */
423
+ handleProviderResponse(provider, data) {
424
+ this.emit('provider_response', { provider, ...data });
425
+ }
426
+ handleProviderError(provider, error) {
427
+ this.emit('provider_error', { provider, error });
428
+ }
429
+ handleHealthCheck(provider, result) {
430
+ this.emit('health_check', { provider, result });
431
+ }
432
+ /**
433
+ * Start monitoring
434
+ */
435
+ startMonitoring() {
436
+ setInterval(() => {
437
+ this.emitMetrics();
438
+ }, this.config.monitoring?.metricsInterval || 60000);
439
+ }
440
+ /**
441
+ * Emit aggregated metrics
442
+ */
443
+ emitMetrics() {
444
+ const metrics = {
445
+ providers: {},
446
+ totalRequests: 0,
447
+ totalCost: 0,
448
+ averageLatency: 0,
449
+ };
450
+ for (const [provider, count] of this.requestCount.entries()) {
451
+ const providerMetricsList = this.providerMetrics.get(provider) || [];
452
+ const avgLatency = providerMetricsList.length > 0
453
+ ? providerMetricsList.reduce((sum, m) => sum + m.latency, 0) / providerMetricsList.length
454
+ : 0;
455
+ const totalCost = providerMetricsList.reduce((sum, m) => sum + m.cost, 0);
456
+ metrics.providers[provider] = {
457
+ requests: count,
458
+ averageLatency: avgLatency,
459
+ totalCost,
460
+ lastUsed: this.lastUsed.get(provider),
461
+ available: this.providers.get(provider)?.getStatus().available,
462
+ };
463
+ metrics.totalRequests += count;
464
+ metrics.totalCost += totalCost;
465
+ }
466
+ if (metrics.totalRequests > 0) {
467
+ let totalLatency = 0;
468
+ let latencyCount = 0;
469
+ for (const providerMetricsList of this.providerMetrics.values()) {
470
+ for (const metric of providerMetricsList) {
471
+ totalLatency += metric.latency;
472
+ latencyCount++;
473
+ }
474
+ }
475
+ metrics.averageLatency = latencyCount > 0 ? totalLatency / latencyCount : 0;
476
+ }
477
+ this.emit('metrics', metrics);
478
+ }
479
+ /**
480
+ * Get available providers
481
+ */
482
+ getAvailableProviders() {
483
+ return Array.from(this.providers.keys()).filter(name => {
484
+ const provider = this.providers.get(name);
485
+ return provider && this.isProviderAvailable(provider);
486
+ });
487
+ }
488
+ /**
489
+ * Get provider by name
490
+ */
491
+ getProvider(name) {
492
+ return this.providers.get(name);
493
+ }
494
+ /**
495
+ * Get all providers
496
+ */
497
+ getAllProviders() {
498
+ return new Map(this.providers);
499
+ }
500
+ /**
501
+ * Clean up resources
502
+ */
503
+ destroy() {
504
+ for (const provider of this.providers.values()) {
505
+ provider.destroy();
506
+ }
507
+ this.providers.clear();
508
+ this.cache.clear();
509
+ this.providerMetrics.clear();
510
+ this.removeAllListeners();
511
+ }
512
+ }
513
+ //# sourceMappingURL=provider-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-manager.js","sourceRoot":"","sources":["../../src/providers/provider-manager.ts"],"names":[],"mappings":"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"}