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.
- package/.claude/cache/agent-pool.json +33 -0
- package/.claude/cache/memory-optimization.json +19 -0
- package/.claude/cache/neural-optimization.json +25 -0
- package/.claude/cache/optimized-hooks.json +19 -0
- package/.claude/cache/parallel-processing.json +26 -0
- package/.claude/optimized-settings.json +270 -0
- package/.claude/settings-enhanced.json +278 -0
- package/.claude/settings.json +105 -8
- package/CHANGELOG.md +18 -0
- package/bin/claude-flow +1 -1
- package/dist/cli/simple-commands/hive-mind.js +1 -1
- package/dist/cli/simple-commands/hive-mind.js.map +1 -1
- package/dist/cli/simple-commands/hooks.js +6 -4
- package/dist/cli/simple-commands/hooks.js.map +1 -1
- package/dist/providers/anthropic-provider.d.ts +27 -0
- package/dist/providers/anthropic-provider.d.ts.map +1 -0
- package/dist/providers/anthropic-provider.js +247 -0
- package/dist/providers/anthropic-provider.js.map +1 -0
- package/dist/providers/base-provider.d.ts +134 -0
- package/dist/providers/base-provider.d.ts.map +1 -0
- package/dist/providers/base-provider.js +407 -0
- package/dist/providers/base-provider.js.map +1 -0
- package/dist/providers/cohere-provider.d.ts +28 -0
- package/dist/providers/cohere-provider.d.ts.map +1 -0
- package/dist/providers/cohere-provider.js +407 -0
- package/dist/providers/cohere-provider.js.map +1 -0
- package/dist/providers/google-provider.d.ts +23 -0
- package/dist/providers/google-provider.d.ts.map +1 -0
- package/dist/providers/google-provider.js +362 -0
- package/dist/providers/google-provider.js.map +1 -0
- package/dist/providers/index.d.ts +14 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +18 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/ollama-provider.d.ts +23 -0
- package/dist/providers/ollama-provider.d.ts.map +1 -0
- package/dist/providers/ollama-provider.js +374 -0
- package/dist/providers/ollama-provider.js.map +1 -0
- package/dist/providers/openai-provider.d.ts +23 -0
- package/dist/providers/openai-provider.d.ts.map +1 -0
- package/dist/providers/openai-provider.js +349 -0
- package/dist/providers/openai-provider.js.map +1 -0
- package/dist/providers/provider-manager.d.ts +139 -0
- package/dist/providers/provider-manager.d.ts.map +1 -0
- package/dist/providers/provider-manager.js +513 -0
- package/dist/providers/provider-manager.js.map +1 -0
- package/dist/providers/types.d.ts +356 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +61 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/providers/utils.d.ts +37 -0
- package/dist/providers/utils.d.ts.map +1 -0
- package/dist/providers/utils.js +322 -0
- package/dist/providers/utils.js.map +1 -0
- package/dist/services/agentic-flow-hooks/hook-manager.d.ts +70 -0
- package/dist/services/agentic-flow-hooks/hook-manager.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/hook-manager.js +512 -0
- package/dist/services/agentic-flow-hooks/hook-manager.js.map +1 -0
- package/dist/services/agentic-flow-hooks/index.d.ts +36 -0
- package/dist/services/agentic-flow-hooks/index.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/index.js +325 -0
- package/dist/services/agentic-flow-hooks/index.js.map +1 -0
- package/dist/services/agentic-flow-hooks/llm-hooks.d.ts +33 -0
- package/dist/services/agentic-flow-hooks/llm-hooks.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/llm-hooks.js +415 -0
- package/dist/services/agentic-flow-hooks/llm-hooks.js.map +1 -0
- package/dist/services/agentic-flow-hooks/memory-hooks.d.ts +45 -0
- package/dist/services/agentic-flow-hooks/memory-hooks.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/memory-hooks.js +532 -0
- package/dist/services/agentic-flow-hooks/memory-hooks.js.map +1 -0
- package/dist/services/agentic-flow-hooks/neural-hooks.d.ts +39 -0
- package/dist/services/agentic-flow-hooks/neural-hooks.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/neural-hooks.js +561 -0
- package/dist/services/agentic-flow-hooks/neural-hooks.js.map +1 -0
- package/dist/services/agentic-flow-hooks/performance-hooks.d.ts +33 -0
- package/dist/services/agentic-flow-hooks/performance-hooks.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/performance-hooks.js +621 -0
- package/dist/services/agentic-flow-hooks/performance-hooks.js.map +1 -0
- package/dist/services/agentic-flow-hooks/types.d.ts +379 -0
- package/dist/services/agentic-flow-hooks/types.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/types.js +8 -0
- package/dist/services/agentic-flow-hooks/types.js.map +1 -0
- package/dist/services/agentic-flow-hooks/workflow-hooks.d.ts +39 -0
- package/dist/services/agentic-flow-hooks/workflow-hooks.d.ts.map +1 -0
- package/dist/services/agentic-flow-hooks/workflow-hooks.js +742 -0
- package/dist/services/agentic-flow-hooks/workflow-hooks.js.map +1 -0
- package/package.json +1 -1
- package/scripts/optimize-performance.js +400 -0
- package/scripts/performance-monitor.js +263 -0
- package/src/cli/help-text.js +1 -1
- package/src/cli/simple-cli.js +1 -1
- package/src/cli/simple-commands/hive-mind.js +1 -1
- package/src/providers/anthropic-provider.ts +282 -0
- package/src/providers/base-provider.ts +560 -0
- package/src/providers/cohere-provider.ts +521 -0
- package/src/providers/google-provider.ts +477 -0
- package/src/providers/index.ts +21 -0
- package/src/providers/ollama-provider.ts +489 -0
- package/src/providers/openai-provider.ts +476 -0
- package/src/providers/provider-manager.ts +654 -0
- package/src/providers/types.ts +531 -0
- package/src/providers/utils.ts +376 -0
- package/src/services/agentic-flow-hooks/hook-manager.ts +701 -0
- package/src/services/agentic-flow-hooks/index.ts +386 -0
- package/src/services/agentic-flow-hooks/llm-hooks.ts +557 -0
- package/src/services/agentic-flow-hooks/memory-hooks.ts +710 -0
- package/src/services/agentic-flow-hooks/neural-hooks.ts +758 -0
- package/src/services/agentic-flow-hooks/performance-hooks.ts +827 -0
- package/src/services/agentic-flow-hooks/types.ts +503 -0
- package/src/services/agentic-flow-hooks/workflow-hooks.ts +1026 -0
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract Base Provider for LLM integrations
|
|
3
|
+
* Provides common functionality for all LLM providers
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
import { circuitBreaker } from '../utils/helpers.js';
|
|
7
|
+
import { LLMProviderError, RateLimitError, ProviderUnavailableError, } from './types.js';
|
|
8
|
+
export class BaseProvider extends EventEmitter {
|
|
9
|
+
logger;
|
|
10
|
+
circuitBreaker;
|
|
11
|
+
healthCheckInterval;
|
|
12
|
+
lastHealthCheck;
|
|
13
|
+
requestCount = 0;
|
|
14
|
+
errorCount = 0;
|
|
15
|
+
totalTokens = 0;
|
|
16
|
+
totalCost = 0;
|
|
17
|
+
requestMetrics = new Map();
|
|
18
|
+
config;
|
|
19
|
+
constructor(options) {
|
|
20
|
+
super();
|
|
21
|
+
this.logger = options.logger;
|
|
22
|
+
this.config = options.config;
|
|
23
|
+
// Initialize circuit breaker
|
|
24
|
+
this.circuitBreaker = circuitBreaker(`llm-${this.name}`, {
|
|
25
|
+
threshold: options.circuitBreakerOptions?.threshold || 5,
|
|
26
|
+
timeout: options.circuitBreakerOptions?.timeout || 60000,
|
|
27
|
+
resetTimeout: options.circuitBreakerOptions?.resetTimeout || 300000,
|
|
28
|
+
});
|
|
29
|
+
// Start health checks if enabled
|
|
30
|
+
if (this.config.enableCaching) {
|
|
31
|
+
this.startHealthChecks();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Initialize the provider
|
|
36
|
+
*/
|
|
37
|
+
async initialize() {
|
|
38
|
+
this.logger.info(`Initializing ${this.name} provider`, {
|
|
39
|
+
model: this.config.model,
|
|
40
|
+
temperature: this.config.temperature,
|
|
41
|
+
maxTokens: this.config.maxTokens,
|
|
42
|
+
});
|
|
43
|
+
// Validate configuration
|
|
44
|
+
this.validateConfig();
|
|
45
|
+
// Provider-specific initialization
|
|
46
|
+
await this.doInitialize();
|
|
47
|
+
// Perform initial health check
|
|
48
|
+
await this.healthCheck();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Validate provider configuration
|
|
52
|
+
*/
|
|
53
|
+
validateConfig() {
|
|
54
|
+
if (!this.config.model) {
|
|
55
|
+
throw new Error(`Model is required for ${this.name} provider`);
|
|
56
|
+
}
|
|
57
|
+
if (!this.validateModel(this.config.model)) {
|
|
58
|
+
throw new Error(`Model ${this.config.model} is not supported by ${this.name} provider`);
|
|
59
|
+
}
|
|
60
|
+
if (this.config.temperature !== undefined) {
|
|
61
|
+
if (this.config.temperature < 0 || this.config.temperature > 2) {
|
|
62
|
+
throw new Error('Temperature must be between 0 and 2');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (this.config.maxTokens !== undefined) {
|
|
66
|
+
const maxAllowed = this.capabilities.maxOutputTokens[this.config.model] || 4096;
|
|
67
|
+
if (this.config.maxTokens > maxAllowed) {
|
|
68
|
+
throw new Error(`Max tokens exceeds limit of ${maxAllowed} for model ${this.config.model}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Complete a request
|
|
74
|
+
*/
|
|
75
|
+
async complete(request) {
|
|
76
|
+
const startTime = Date.now();
|
|
77
|
+
try {
|
|
78
|
+
// Use circuit breaker
|
|
79
|
+
const response = await this.circuitBreaker.execute(async () => {
|
|
80
|
+
return await this.doComplete(request);
|
|
81
|
+
});
|
|
82
|
+
// Track metrics
|
|
83
|
+
const latency = Date.now() - startTime;
|
|
84
|
+
this.trackRequest(request, response, latency);
|
|
85
|
+
// Emit events
|
|
86
|
+
this.emit('response', {
|
|
87
|
+
provider: this.name,
|
|
88
|
+
model: response.model,
|
|
89
|
+
latency,
|
|
90
|
+
tokens: response.usage.totalTokens,
|
|
91
|
+
cost: response.cost?.totalCost,
|
|
92
|
+
});
|
|
93
|
+
return response;
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
this.errorCount++;
|
|
97
|
+
// Transform to provider error
|
|
98
|
+
const providerError = this.transformError(error);
|
|
99
|
+
// Track error
|
|
100
|
+
this.emit('error', {
|
|
101
|
+
provider: this.name,
|
|
102
|
+
error: providerError,
|
|
103
|
+
request,
|
|
104
|
+
});
|
|
105
|
+
throw providerError;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Stream complete a request
|
|
110
|
+
*/
|
|
111
|
+
async *streamComplete(request) {
|
|
112
|
+
const startTime = Date.now();
|
|
113
|
+
let totalTokens = 0;
|
|
114
|
+
let totalCost = 0;
|
|
115
|
+
try {
|
|
116
|
+
// Check if streaming is supported
|
|
117
|
+
if (!this.capabilities.supportsStreaming) {
|
|
118
|
+
throw new LLMProviderError('Streaming not supported', 'STREAMING_NOT_SUPPORTED', this.name, undefined, false);
|
|
119
|
+
}
|
|
120
|
+
// Use circuit breaker
|
|
121
|
+
const stream = await this.circuitBreaker.execute(async () => {
|
|
122
|
+
return this.doStreamComplete(request);
|
|
123
|
+
});
|
|
124
|
+
// Process stream
|
|
125
|
+
for await (const event of stream) {
|
|
126
|
+
if (event.usage) {
|
|
127
|
+
totalTokens = event.usage.totalTokens;
|
|
128
|
+
}
|
|
129
|
+
if (event.cost) {
|
|
130
|
+
totalCost = event.cost.totalCost;
|
|
131
|
+
}
|
|
132
|
+
yield event;
|
|
133
|
+
}
|
|
134
|
+
// Track metrics
|
|
135
|
+
const latency = Date.now() - startTime;
|
|
136
|
+
this.trackStreamRequest(request, totalTokens, totalCost, latency);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
this.errorCount++;
|
|
140
|
+
// Transform to provider error
|
|
141
|
+
const providerError = this.transformError(error);
|
|
142
|
+
// Yield error event
|
|
143
|
+
yield {
|
|
144
|
+
type: 'error',
|
|
145
|
+
error: providerError,
|
|
146
|
+
};
|
|
147
|
+
throw providerError;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Validate if a model is supported
|
|
152
|
+
*/
|
|
153
|
+
validateModel(model) {
|
|
154
|
+
return this.capabilities.supportedModels.includes(model);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Perform health check
|
|
158
|
+
*/
|
|
159
|
+
async healthCheck() {
|
|
160
|
+
const startTime = Date.now();
|
|
161
|
+
try {
|
|
162
|
+
// Provider-specific health check
|
|
163
|
+
const result = await this.doHealthCheck();
|
|
164
|
+
this.lastHealthCheck = {
|
|
165
|
+
...result,
|
|
166
|
+
latency: Date.now() - startTime,
|
|
167
|
+
timestamp: new Date(),
|
|
168
|
+
};
|
|
169
|
+
this.emit('health_check', this.lastHealthCheck);
|
|
170
|
+
return this.lastHealthCheck;
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
this.lastHealthCheck = {
|
|
174
|
+
healthy: false,
|
|
175
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
176
|
+
latency: Date.now() - startTime,
|
|
177
|
+
timestamp: new Date(),
|
|
178
|
+
};
|
|
179
|
+
this.emit('health_check', this.lastHealthCheck);
|
|
180
|
+
return this.lastHealthCheck;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Get provider status
|
|
185
|
+
*/
|
|
186
|
+
getStatus() {
|
|
187
|
+
const queueLength = this.requestMetrics.size;
|
|
188
|
+
const errorRate = this.requestCount > 0 ? this.errorCount / this.requestCount : 0;
|
|
189
|
+
return {
|
|
190
|
+
available: this.lastHealthCheck?.healthy ?? false,
|
|
191
|
+
currentLoad: queueLength / 100, // Normalize to 0-1
|
|
192
|
+
queueLength,
|
|
193
|
+
activeRequests: queueLength,
|
|
194
|
+
rateLimitRemaining: this.getRateLimitRemaining(),
|
|
195
|
+
rateLimitReset: this.getRateLimitReset(),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Get remaining rate limit (override in provider)
|
|
200
|
+
*/
|
|
201
|
+
getRateLimitRemaining() {
|
|
202
|
+
return undefined;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Get rate limit reset time (override in provider)
|
|
206
|
+
*/
|
|
207
|
+
getRateLimitReset() {
|
|
208
|
+
return undefined;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Estimate cost for a request
|
|
212
|
+
*/
|
|
213
|
+
async estimateCost(request) {
|
|
214
|
+
const model = request.model || this.config.model;
|
|
215
|
+
const pricing = this.capabilities.pricing?.[model];
|
|
216
|
+
if (!pricing) {
|
|
217
|
+
return {
|
|
218
|
+
estimatedPromptTokens: 0,
|
|
219
|
+
estimatedCompletionTokens: 0,
|
|
220
|
+
estimatedTotalTokens: 0,
|
|
221
|
+
estimatedCost: {
|
|
222
|
+
prompt: 0,
|
|
223
|
+
completion: 0,
|
|
224
|
+
total: 0,
|
|
225
|
+
currency: 'USD',
|
|
226
|
+
},
|
|
227
|
+
confidence: 0,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
// Estimate tokens (simple approximation, providers should override)
|
|
231
|
+
const promptTokens = this.estimateTokens(JSON.stringify(request.messages));
|
|
232
|
+
const completionTokens = request.maxTokens || this.config.maxTokens || 1000;
|
|
233
|
+
const promptCost = (promptTokens / 1000) * pricing.promptCostPer1k;
|
|
234
|
+
const completionCost = (completionTokens / 1000) * pricing.completionCostPer1k;
|
|
235
|
+
return {
|
|
236
|
+
estimatedPromptTokens: promptTokens,
|
|
237
|
+
estimatedCompletionTokens: completionTokens,
|
|
238
|
+
estimatedTotalTokens: promptTokens + completionTokens,
|
|
239
|
+
estimatedCost: {
|
|
240
|
+
prompt: promptCost,
|
|
241
|
+
completion: completionCost,
|
|
242
|
+
total: promptCost + completionCost,
|
|
243
|
+
currency: pricing.currency,
|
|
244
|
+
},
|
|
245
|
+
confidence: 0.7, // 70% confidence in estimation
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Simple token estimation (4 chars = 1 token approximation)
|
|
250
|
+
*/
|
|
251
|
+
estimateTokens(text) {
|
|
252
|
+
return Math.ceil(text.length / 4);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Get usage statistics
|
|
256
|
+
*/
|
|
257
|
+
async getUsage(period = 'day') {
|
|
258
|
+
const now = new Date();
|
|
259
|
+
const start = this.getStartDate(now, period);
|
|
260
|
+
// In a real implementation, this would query a database
|
|
261
|
+
// For now, return current session stats
|
|
262
|
+
return {
|
|
263
|
+
period: { start, end: now },
|
|
264
|
+
requests: this.requestCount,
|
|
265
|
+
tokens: {
|
|
266
|
+
prompt: Math.floor(this.totalTokens * 0.7), // Estimate
|
|
267
|
+
completion: Math.floor(this.totalTokens * 0.3),
|
|
268
|
+
total: this.totalTokens,
|
|
269
|
+
},
|
|
270
|
+
cost: {
|
|
271
|
+
prompt: this.totalCost * 0.7,
|
|
272
|
+
completion: this.totalCost * 0.3,
|
|
273
|
+
total: this.totalCost,
|
|
274
|
+
currency: 'USD',
|
|
275
|
+
},
|
|
276
|
+
errors: this.errorCount,
|
|
277
|
+
averageLatency: this.calculateAverageLatency(),
|
|
278
|
+
modelBreakdown: {}, // Would need to track per model
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Get start date for period
|
|
283
|
+
*/
|
|
284
|
+
getStartDate(end, period) {
|
|
285
|
+
const start = new Date(end);
|
|
286
|
+
switch (period) {
|
|
287
|
+
case 'hour':
|
|
288
|
+
start.setHours(start.getHours() - 1);
|
|
289
|
+
break;
|
|
290
|
+
case 'day':
|
|
291
|
+
start.setDate(start.getDate() - 1);
|
|
292
|
+
break;
|
|
293
|
+
case 'week':
|
|
294
|
+
start.setDate(start.getDate() - 7);
|
|
295
|
+
break;
|
|
296
|
+
case 'month':
|
|
297
|
+
start.setMonth(start.getMonth() - 1);
|
|
298
|
+
break;
|
|
299
|
+
case 'all':
|
|
300
|
+
start.setFullYear(2020); // Arbitrary old date
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
return start;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Calculate average latency
|
|
307
|
+
*/
|
|
308
|
+
calculateAverageLatency() {
|
|
309
|
+
if (this.requestMetrics.size === 0)
|
|
310
|
+
return 0;
|
|
311
|
+
let totalLatency = 0;
|
|
312
|
+
let count = 0;
|
|
313
|
+
this.requestMetrics.forEach((metrics) => {
|
|
314
|
+
if (metrics.latency) {
|
|
315
|
+
totalLatency += metrics.latency;
|
|
316
|
+
count++;
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
return count > 0 ? totalLatency / count : 0;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Track successful request
|
|
323
|
+
*/
|
|
324
|
+
trackRequest(request, response, latency) {
|
|
325
|
+
this.requestCount++;
|
|
326
|
+
this.totalTokens += response.usage.totalTokens;
|
|
327
|
+
if (response.cost) {
|
|
328
|
+
this.totalCost += response.cost.totalCost;
|
|
329
|
+
}
|
|
330
|
+
// Store metrics (in memory for now)
|
|
331
|
+
const requestId = response.id;
|
|
332
|
+
this.requestMetrics.set(requestId, {
|
|
333
|
+
timestamp: new Date(),
|
|
334
|
+
model: response.model,
|
|
335
|
+
tokens: response.usage.totalTokens,
|
|
336
|
+
cost: response.cost?.totalCost,
|
|
337
|
+
latency,
|
|
338
|
+
});
|
|
339
|
+
// Clean up old metrics (keep last 1000)
|
|
340
|
+
if (this.requestMetrics.size > 1000) {
|
|
341
|
+
const oldestKey = this.requestMetrics.keys().next().value;
|
|
342
|
+
this.requestMetrics.delete(oldestKey);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Track streaming request
|
|
347
|
+
*/
|
|
348
|
+
trackStreamRequest(request, totalTokens, totalCost, latency) {
|
|
349
|
+
this.requestCount++;
|
|
350
|
+
this.totalTokens += totalTokens;
|
|
351
|
+
this.totalCost += totalCost;
|
|
352
|
+
// Store metrics
|
|
353
|
+
const requestId = `stream-${Date.now()}`;
|
|
354
|
+
this.requestMetrics.set(requestId, {
|
|
355
|
+
timestamp: new Date(),
|
|
356
|
+
model: request.model || this.config.model,
|
|
357
|
+
tokens: totalTokens,
|
|
358
|
+
cost: totalCost,
|
|
359
|
+
latency,
|
|
360
|
+
stream: true,
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Transform errors to provider errors
|
|
365
|
+
*/
|
|
366
|
+
transformError(error) {
|
|
367
|
+
if (error instanceof LLMProviderError) {
|
|
368
|
+
return error;
|
|
369
|
+
}
|
|
370
|
+
if (error instanceof Error) {
|
|
371
|
+
// Check for common error patterns
|
|
372
|
+
if (error.message.includes('rate limit')) {
|
|
373
|
+
return new RateLimitError(error.message, this.name);
|
|
374
|
+
}
|
|
375
|
+
if (error.message.includes('timeout') || error.message.includes('ETIMEDOUT')) {
|
|
376
|
+
return new LLMProviderError('Request timed out', 'TIMEOUT', this.name, undefined, true);
|
|
377
|
+
}
|
|
378
|
+
if (error.message.includes('ECONNREFUSED') || error.message.includes('fetch failed')) {
|
|
379
|
+
return new ProviderUnavailableError(this.name, { originalError: error.message });
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return new LLMProviderError(error instanceof Error ? error.message : String(error), 'UNKNOWN', this.name, undefined, true);
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Start periodic health checks
|
|
386
|
+
*/
|
|
387
|
+
startHealthChecks() {
|
|
388
|
+
const interval = this.config.cacheTimeout || 300000; // 5 minutes default
|
|
389
|
+
this.healthCheckInterval = setInterval(() => {
|
|
390
|
+
this.healthCheck().catch((error) => {
|
|
391
|
+
this.logger.error(`Health check failed for ${this.name}`, error);
|
|
392
|
+
});
|
|
393
|
+
}, interval);
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Clean up resources
|
|
397
|
+
*/
|
|
398
|
+
destroy() {
|
|
399
|
+
if (this.healthCheckInterval) {
|
|
400
|
+
clearInterval(this.healthCheckInterval);
|
|
401
|
+
}
|
|
402
|
+
this.requestMetrics.clear();
|
|
403
|
+
this.removeAllListeners();
|
|
404
|
+
this.logger.info(`${this.name} provider destroyed`);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
//# sourceMappingURL=base-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-provider.js","sourceRoot":"","sources":["../../src/providers/base-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cohere Provider Implementation
|
|
3
|
+
* Supports Command, Generate, and other Cohere models
|
|
4
|
+
*/
|
|
5
|
+
import { BaseProvider } from './base-provider.js';
|
|
6
|
+
import { LLMProvider, LLMModel, LLMRequest, LLMResponse, LLMStreamEvent, ModelInfo, ProviderCapabilities, HealthCheckResult } from './types.js';
|
|
7
|
+
export declare class CohereProvider extends BaseProvider {
|
|
8
|
+
readonly name: LLMProvider;
|
|
9
|
+
readonly capabilities: ProviderCapabilities;
|
|
10
|
+
private baseUrl;
|
|
11
|
+
private headers;
|
|
12
|
+
protected doInitialize(): Promise<void>;
|
|
13
|
+
protected doComplete(request: LLMRequest): Promise<LLMResponse>;
|
|
14
|
+
private doChatComplete;
|
|
15
|
+
private doGenerateComplete;
|
|
16
|
+
protected doStreamComplete(request: LLMRequest): AsyncIterable<LLMStreamEvent>;
|
|
17
|
+
private streamChatComplete;
|
|
18
|
+
private streamGenerateComplete;
|
|
19
|
+
listModels(): Promise<LLMModel[]>;
|
|
20
|
+
getModelInfo(model: LLMModel): Promise<ModelInfo>;
|
|
21
|
+
protected doHealthCheck(): Promise<HealthCheckResult>;
|
|
22
|
+
private convertMessages;
|
|
23
|
+
private mapToCohereModel;
|
|
24
|
+
private mapFinishReason;
|
|
25
|
+
private getModelDescription;
|
|
26
|
+
private handleErrorResponse;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=cohere-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cohere-provider.d.ts","sourceRoot":"","sources":["../../src/providers/cohere-provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,WAAW,EACX,QAAQ,EACR,UAAU,EACV,WAAW,EACX,cAAc,EACd,SAAS,EACT,oBAAoB,EACpB,iBAAiB,EAIlB,MAAM,YAAY,CAAC;AAsDpB,qBAAa,cAAe,SAAQ,YAAY;IAC9C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAY;IACtC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAgEzC;IAEF,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,OAAO,CAA8B;cAE7B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;cAY7B,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;YAWvD,cAAc;YAkEd,kBAAkB;cAkEf,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,aAAa,CAAC,cAAc,CAAC;YAWtE,kBAAkB;YAiGlB,sBAAsB;IAM/B,UAAU,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIjC,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;cAiBvC,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAwB3D,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,mBAAmB;YAWb,mBAAmB;CA4BlC"}
|