claude-flow 2.0.0-alpha.65 → 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 (112) 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 +40 -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 +2 -2
  88. package/scripts/install-arm64.js +78 -0
  89. package/scripts/optimize-performance.js +400 -0
  90. package/scripts/performance-monitor.js +263 -0
  91. package/src/cli/help-text.js +1 -1
  92. package/src/cli/simple-cli.js +1 -1
  93. package/src/cli/simple-commands/hive-mind.js +1 -1
  94. package/src/cli/simple-commands/hooks.js +8 -6
  95. package/src/providers/anthropic-provider.ts +282 -0
  96. package/src/providers/base-provider.ts +560 -0
  97. package/src/providers/cohere-provider.ts +521 -0
  98. package/src/providers/google-provider.ts +477 -0
  99. package/src/providers/index.ts +21 -0
  100. package/src/providers/ollama-provider.ts +489 -0
  101. package/src/providers/openai-provider.ts +476 -0
  102. package/src/providers/provider-manager.ts +654 -0
  103. package/src/providers/types.ts +531 -0
  104. package/src/providers/utils.ts +376 -0
  105. package/src/services/agentic-flow-hooks/hook-manager.ts +701 -0
  106. package/src/services/agentic-flow-hooks/index.ts +386 -0
  107. package/src/services/agentic-flow-hooks/llm-hooks.ts +557 -0
  108. package/src/services/agentic-flow-hooks/memory-hooks.ts +710 -0
  109. package/src/services/agentic-flow-hooks/neural-hooks.ts +758 -0
  110. package/src/services/agentic-flow-hooks/performance-hooks.ts +827 -0
  111. package/src/services/agentic-flow-hooks/types.ts +503 -0
  112. package/src/services/agentic-flow-hooks/workflow-hooks.ts +1026 -0
@@ -0,0 +1,349 @@
1
+ /**
2
+ * OpenAI Provider Implementation
3
+ * Supports GPT-4, GPT-3.5, and other OpenAI models
4
+ */
5
+ import { BaseProvider } from './base-provider.js';
6
+ import { LLMProviderError, RateLimitError, AuthenticationError, ModelNotFoundError, } from './types.js';
7
+ export class OpenAIProvider extends BaseProvider {
8
+ name = 'openai';
9
+ capabilities = {
10
+ supportedModels: [
11
+ 'gpt-4-turbo-preview',
12
+ 'gpt-4',
13
+ 'gpt-4-32k',
14
+ 'gpt-3.5-turbo',
15
+ 'gpt-3.5-turbo-16k',
16
+ ],
17
+ maxContextLength: {
18
+ 'gpt-4-turbo-preview': 128000,
19
+ 'gpt-4': 8192,
20
+ 'gpt-4-32k': 32768,
21
+ 'gpt-3.5-turbo': 4096,
22
+ 'gpt-3.5-turbo-16k': 16384,
23
+ },
24
+ maxOutputTokens: {
25
+ 'gpt-4-turbo-preview': 4096,
26
+ 'gpt-4': 4096,
27
+ 'gpt-4-32k': 4096,
28
+ 'gpt-3.5-turbo': 4096,
29
+ 'gpt-3.5-turbo-16k': 4096,
30
+ },
31
+ supportsStreaming: true,
32
+ supportsFunctionCalling: true,
33
+ supportsSystemMessages: true,
34
+ supportsVision: true, // GPT-4 with vision
35
+ supportsAudio: false,
36
+ supportsTools: true,
37
+ supportsFineTuning: true,
38
+ supportsEmbeddings: true,
39
+ supportsLogprobs: true,
40
+ supportsBatching: true,
41
+ rateLimit: {
42
+ requestsPerMinute: 3500,
43
+ tokensPerMinute: 90000,
44
+ concurrentRequests: 100,
45
+ },
46
+ pricing: {
47
+ 'gpt-4-turbo-preview': {
48
+ promptCostPer1k: 0.01,
49
+ completionCostPer1k: 0.03,
50
+ currency: 'USD',
51
+ },
52
+ 'gpt-4': {
53
+ promptCostPer1k: 0.03,
54
+ completionCostPer1k: 0.06,
55
+ currency: 'USD',
56
+ },
57
+ 'gpt-4-32k': {
58
+ promptCostPer1k: 0.06,
59
+ completionCostPer1k: 0.12,
60
+ currency: 'USD',
61
+ },
62
+ 'gpt-3.5-turbo': {
63
+ promptCostPer1k: 0.0005,
64
+ completionCostPer1k: 0.0015,
65
+ currency: 'USD',
66
+ },
67
+ 'gpt-3.5-turbo-16k': {
68
+ promptCostPer1k: 0.003,
69
+ completionCostPer1k: 0.004,
70
+ currency: 'USD',
71
+ },
72
+ },
73
+ };
74
+ baseUrl;
75
+ headers;
76
+ async doInitialize() {
77
+ if (!this.config.apiKey) {
78
+ throw new AuthenticationError('OpenAI API key is required', 'openai');
79
+ }
80
+ this.baseUrl = this.config.apiUrl || 'https://api.openai.com/v1';
81
+ this.headers = {
82
+ 'Authorization': `Bearer ${this.config.apiKey}`,
83
+ 'Content-Type': 'application/json',
84
+ };
85
+ // Add organization header if provided
86
+ if (this.config.providerOptions?.organization) {
87
+ this.headers['OpenAI-Organization'] = this.config.providerOptions.organization;
88
+ }
89
+ }
90
+ async doComplete(request) {
91
+ const openAIRequest = {
92
+ model: this.mapToOpenAIModel(request.model || this.config.model),
93
+ messages: request.messages.map((msg) => ({
94
+ role: msg.role,
95
+ content: msg.content,
96
+ ...(msg.name && { name: msg.name }),
97
+ ...(msg.functionCall && { function_call: msg.functionCall }),
98
+ })),
99
+ temperature: request.temperature ?? this.config.temperature,
100
+ max_tokens: request.maxTokens ?? this.config.maxTokens,
101
+ top_p: request.topP ?? this.config.topP,
102
+ frequency_penalty: request.frequencyPenalty ?? this.config.frequencyPenalty,
103
+ presence_penalty: request.presencePenalty ?? this.config.presencePenalty,
104
+ stop: request.stopSequences ?? this.config.stopSequences,
105
+ stream: false,
106
+ };
107
+ // Add function calling if present
108
+ if (request.functions) {
109
+ openAIRequest.functions = request.functions;
110
+ openAIRequest.function_call = request.functionCall;
111
+ }
112
+ const controller = new AbortController();
113
+ const timeout = setTimeout(() => controller.abort(), this.config.timeout || 60000);
114
+ try {
115
+ const response = await fetch(`${this.baseUrl}/chat/completions`, {
116
+ method: 'POST',
117
+ headers: this.headers,
118
+ body: JSON.stringify(openAIRequest),
119
+ signal: controller.signal,
120
+ });
121
+ clearTimeout(timeout);
122
+ if (!response.ok) {
123
+ await this.handleErrorResponse(response);
124
+ }
125
+ const data = await response.json();
126
+ const choice = data.choices[0];
127
+ // Calculate cost
128
+ const model = request.model || this.config.model;
129
+ const pricing = this.capabilities.pricing[model];
130
+ const promptCost = (data.usage.prompt_tokens / 1000) * pricing.promptCostPer1k;
131
+ const completionCost = (data.usage.completion_tokens / 1000) * pricing.completionCostPer1k;
132
+ return {
133
+ id: data.id,
134
+ model: this.mapFromOpenAIModel(data.model),
135
+ provider: 'openai',
136
+ content: choice.message.content || '',
137
+ functionCall: choice.message.function_call,
138
+ usage: {
139
+ promptTokens: data.usage.prompt_tokens,
140
+ completionTokens: data.usage.completion_tokens,
141
+ totalTokens: data.usage.total_tokens,
142
+ },
143
+ cost: {
144
+ promptCost,
145
+ completionCost,
146
+ totalCost: promptCost + completionCost,
147
+ currency: 'USD',
148
+ },
149
+ finishReason: choice.finish_reason,
150
+ };
151
+ }
152
+ catch (error) {
153
+ clearTimeout(timeout);
154
+ throw this.transformError(error);
155
+ }
156
+ }
157
+ async *doStreamComplete(request) {
158
+ const openAIRequest = {
159
+ model: this.mapToOpenAIModel(request.model || this.config.model),
160
+ messages: request.messages.map((msg) => ({
161
+ role: msg.role,
162
+ content: msg.content,
163
+ ...(msg.name && { name: msg.name }),
164
+ ...(msg.functionCall && { function_call: msg.functionCall }),
165
+ })),
166
+ temperature: request.temperature ?? this.config.temperature,
167
+ max_tokens: request.maxTokens ?? this.config.maxTokens,
168
+ top_p: request.topP ?? this.config.topP,
169
+ frequency_penalty: request.frequencyPenalty ?? this.config.frequencyPenalty,
170
+ presence_penalty: request.presencePenalty ?? this.config.presencePenalty,
171
+ stop: request.stopSequences ?? this.config.stopSequences,
172
+ stream: true,
173
+ };
174
+ if (request.functions) {
175
+ openAIRequest.functions = request.functions;
176
+ openAIRequest.function_call = request.functionCall;
177
+ }
178
+ const controller = new AbortController();
179
+ const timeout = setTimeout(() => controller.abort(), (this.config.timeout || 60000) * 2);
180
+ try {
181
+ const response = await fetch(`${this.baseUrl}/chat/completions`, {
182
+ method: 'POST',
183
+ headers: this.headers,
184
+ body: JSON.stringify(openAIRequest),
185
+ signal: controller.signal,
186
+ });
187
+ if (!response.ok) {
188
+ await this.handleErrorResponse(response);
189
+ }
190
+ const reader = response.body.getReader();
191
+ const decoder = new TextDecoder();
192
+ let buffer = '';
193
+ let totalPromptTokens = 0;
194
+ let totalCompletionTokens = 0;
195
+ while (true) {
196
+ const { done, value } = await reader.read();
197
+ if (done)
198
+ break;
199
+ buffer += decoder.decode(value, { stream: true });
200
+ const lines = buffer.split('\n');
201
+ buffer = lines.pop() || '';
202
+ for (const line of lines) {
203
+ if (line.startsWith('data: ')) {
204
+ const data = line.slice(6);
205
+ if (data === '[DONE]')
206
+ continue;
207
+ try {
208
+ const chunk = JSON.parse(data);
209
+ const delta = chunk.choices[0].delta;
210
+ if (delta.content) {
211
+ yield {
212
+ type: 'content',
213
+ delta: { content: delta.content },
214
+ };
215
+ }
216
+ if (delta.function_call) {
217
+ yield {
218
+ type: 'function_call',
219
+ delta: { functionCall: delta.function_call },
220
+ };
221
+ }
222
+ if (chunk.choices[0].finish_reason) {
223
+ // Estimate tokens for streaming
224
+ const promptTokens = this.estimateTokens(JSON.stringify(request.messages));
225
+ const completionTokens = Math.max(totalCompletionTokens, 100); // Minimum estimate
226
+ const model = request.model || this.config.model;
227
+ const pricing = this.capabilities.pricing[model];
228
+ const promptCost = (promptTokens / 1000) * pricing.promptCostPer1k;
229
+ const completionCost = (completionTokens / 1000) * pricing.completionCostPer1k;
230
+ yield {
231
+ type: 'done',
232
+ usage: {
233
+ promptTokens,
234
+ completionTokens,
235
+ totalTokens: promptTokens + completionTokens,
236
+ },
237
+ cost: {
238
+ promptCost,
239
+ completionCost,
240
+ totalCost: promptCost + completionCost,
241
+ currency: 'USD',
242
+ },
243
+ };
244
+ }
245
+ }
246
+ catch (e) {
247
+ this.logger.warn('Failed to parse OpenAI stream chunk', { data, error: e });
248
+ }
249
+ }
250
+ }
251
+ }
252
+ }
253
+ catch (error) {
254
+ clearTimeout(timeout);
255
+ throw this.transformError(error);
256
+ }
257
+ finally {
258
+ clearTimeout(timeout);
259
+ }
260
+ }
261
+ async listModels() {
262
+ return this.capabilities.supportedModels;
263
+ }
264
+ async getModelInfo(model) {
265
+ return {
266
+ model,
267
+ name: model,
268
+ description: this.getModelDescription(model),
269
+ contextLength: this.capabilities.maxContextLength[model] || 4096,
270
+ maxOutputTokens: this.capabilities.maxOutputTokens[model] || 4096,
271
+ supportedFeatures: [
272
+ 'chat',
273
+ 'completion',
274
+ 'function_calling',
275
+ ...(model.includes('gpt-4') ? ['vision'] : []),
276
+ ],
277
+ pricing: this.capabilities.pricing[model],
278
+ };
279
+ }
280
+ async doHealthCheck() {
281
+ try {
282
+ const response = await fetch(`${this.baseUrl}/models`, {
283
+ headers: this.headers,
284
+ });
285
+ if (!response.ok) {
286
+ throw new Error(`Health check failed: ${response.status}`);
287
+ }
288
+ return {
289
+ healthy: true,
290
+ timestamp: new Date(),
291
+ };
292
+ }
293
+ catch (error) {
294
+ return {
295
+ healthy: false,
296
+ error: error instanceof Error ? error.message : 'Unknown error',
297
+ timestamp: new Date(),
298
+ };
299
+ }
300
+ }
301
+ mapToOpenAIModel(model) {
302
+ // Map our model names to OpenAI model names if needed
303
+ const modelMap = {
304
+ 'gpt-4-turbo-preview': 'gpt-4-turbo-preview',
305
+ 'gpt-4': 'gpt-4',
306
+ 'gpt-4-32k': 'gpt-4-32k',
307
+ 'gpt-3.5-turbo': 'gpt-3.5-turbo',
308
+ 'gpt-3.5-turbo-16k': 'gpt-3.5-turbo-16k',
309
+ };
310
+ return modelMap[model] || model;
311
+ }
312
+ mapFromOpenAIModel(model) {
313
+ // Ensure the model is in our supported list
314
+ return this.capabilities.supportedModels.find((m) => m === model) || 'gpt-3.5-turbo';
315
+ }
316
+ getModelDescription(model) {
317
+ const descriptions = {
318
+ 'gpt-4-turbo-preview': 'Latest GPT-4 Turbo model with improved performance',
319
+ 'gpt-4': 'Most capable GPT-4 model for complex tasks',
320
+ 'gpt-4-32k': 'GPT-4 with extended 32k context window',
321
+ 'gpt-3.5-turbo': 'Fast and efficient model for most tasks',
322
+ 'gpt-3.5-turbo-16k': 'GPT-3.5 Turbo with extended context',
323
+ };
324
+ return descriptions[model] || 'OpenAI language model';
325
+ }
326
+ async handleErrorResponse(response) {
327
+ const errorText = await response.text();
328
+ let errorData;
329
+ try {
330
+ errorData = JSON.parse(errorText);
331
+ }
332
+ catch {
333
+ errorData = { error: { message: errorText } };
334
+ }
335
+ const message = errorData.error?.message || 'Unknown error';
336
+ switch (response.status) {
337
+ case 401:
338
+ throw new AuthenticationError(message, 'openai', errorData);
339
+ case 429:
340
+ const retryAfter = response.headers.get('retry-after');
341
+ throw new RateLimitError(message, 'openai', retryAfter ? parseInt(retryAfter) : undefined, errorData);
342
+ case 404:
343
+ throw new ModelNotFoundError(this.config.model, 'openai', errorData);
344
+ default:
345
+ throw new LLMProviderError(message, `OPENAI_${response.status}`, 'openai', response.status, response.status >= 500, errorData);
346
+ }
347
+ }
348
+ }
349
+ //# sourceMappingURL=openai-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-provider.js","sourceRoot":"","sources":["../../src/providers/openai-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
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 { ILogger } from '../core/logger.js';
7
+ import { ConfigManager } from '../config/config-manager.js';
8
+ import { ILLMProvider, LLMProvider, LLMProviderConfig, LLMRequest, LLMResponse, LLMStreamEvent, FallbackStrategy, CacheConfig } from './types.js';
9
+ export interface ProviderManagerConfig {
10
+ providers: Record<LLMProvider, LLMProviderConfig>;
11
+ defaultProvider: LLMProvider;
12
+ fallbackStrategy?: FallbackStrategy;
13
+ loadBalancing?: {
14
+ enabled: boolean;
15
+ strategy: 'round-robin' | 'least-loaded' | 'latency-based' | 'cost-based';
16
+ };
17
+ costOptimization?: {
18
+ enabled: boolean;
19
+ maxCostPerRequest?: number;
20
+ preferredProviders?: LLMProvider[];
21
+ };
22
+ caching?: CacheConfig;
23
+ monitoring?: {
24
+ enabled: boolean;
25
+ metricsInterval: number;
26
+ };
27
+ }
28
+ export declare class ProviderManager extends EventEmitter {
29
+ private providers;
30
+ private logger;
31
+ private config;
32
+ private requestCount;
33
+ private lastUsed;
34
+ private providerMetrics;
35
+ private cache;
36
+ private currentProviderIndex;
37
+ constructor(logger: ILogger, configManager: ConfigManager, config: ProviderManagerConfig);
38
+ /**
39
+ * Initialize all configured providers
40
+ */
41
+ private initializeProviders;
42
+ /**
43
+ * Create a provider instance
44
+ */
45
+ private createProvider;
46
+ /**
47
+ * Complete a request using the appropriate provider
48
+ */
49
+ complete(request: LLMRequest): Promise<LLMResponse>;
50
+ /**
51
+ * Stream complete a request
52
+ */
53
+ streamComplete(request: LLMRequest): AsyncIterable<LLMStreamEvent>;
54
+ /**
55
+ * Select the best provider for a request
56
+ */
57
+ private selectProvider;
58
+ /**
59
+ * Select provider based on cost optimization
60
+ */
61
+ private selectOptimalProvider;
62
+ /**
63
+ * Select provider using load balancing
64
+ */
65
+ private selectLoadBalancedProvider;
66
+ /**
67
+ * Round-robin provider selection
68
+ */
69
+ private roundRobinSelect;
70
+ /**
71
+ * Select least loaded provider
72
+ */
73
+ private leastLoadedSelect;
74
+ /**
75
+ * Select provider with lowest latency
76
+ */
77
+ private latencyBasedSelect;
78
+ /**
79
+ * Select provider with lowest cost
80
+ */
81
+ private costBasedSelect;
82
+ /**
83
+ * Check if provider is available
84
+ */
85
+ private isProviderAvailable;
86
+ /**
87
+ * Handle request error with fallback
88
+ */
89
+ private handleRequestError;
90
+ /**
91
+ * Get fallback provider based on error
92
+ */
93
+ private getFallbackProvider;
94
+ /**
95
+ * Determine error condition for fallback
96
+ */
97
+ private getErrorCondition;
98
+ /**
99
+ * Cache management
100
+ */
101
+ private checkCache;
102
+ private cacheResponse;
103
+ private generateCacheKey;
104
+ /**
105
+ * Update provider metrics
106
+ */
107
+ private updateProviderMetrics;
108
+ /**
109
+ * Event handlers
110
+ */
111
+ private handleProviderResponse;
112
+ private handleProviderError;
113
+ private handleHealthCheck;
114
+ /**
115
+ * Start monitoring
116
+ */
117
+ private startMonitoring;
118
+ /**
119
+ * Emit aggregated metrics
120
+ */
121
+ private emitMetrics;
122
+ /**
123
+ * Get available providers
124
+ */
125
+ getAvailableProviders(): LLMProvider[];
126
+ /**
127
+ * Get provider by name
128
+ */
129
+ getProvider(name: LLMProvider): ILLMProvider | undefined;
130
+ /**
131
+ * Get all providers
132
+ */
133
+ getAllProviders(): Map<LLMProvider, ILLMProvider>;
134
+ /**
135
+ * Clean up resources
136
+ */
137
+ destroy(): void;
138
+ }
139
+ //# sourceMappingURL=provider-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-manager.d.ts","sourceRoot":"","sources":["../../src/providers/provider-manager.ts"],"names":[],"mappings":"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"}