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,464 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GitHubModelsProvider - GitHub Models API Integration
|
|
4
|
+
*
|
|
5
|
+
* Provides LLM capabilities through GitHub Models with support for:
|
|
6
|
+
* - Unlimited free usage in GitHub Codespaces
|
|
7
|
+
* - OpenAI-compatible API format
|
|
8
|
+
* - Multiple model families (GPT-4, Phi, LLaMA)
|
|
9
|
+
* - Streaming responses
|
|
10
|
+
* - Automatic Codespaces detection
|
|
11
|
+
*
|
|
12
|
+
* @module providers/GitHubModelsProvider
|
|
13
|
+
* @version 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.GitHubModelsProvider = void 0;
|
|
17
|
+
const crypto_1 = require("crypto");
|
|
18
|
+
const ILLMProvider_1 = require("./ILLMProvider");
|
|
19
|
+
const Logger_1 = require("../utils/Logger");
|
|
20
|
+
/**
|
|
21
|
+
* Available GitHub Models
|
|
22
|
+
*/
|
|
23
|
+
const GITHUB_MODELS = [
|
|
24
|
+
'gpt-4o-mini',
|
|
25
|
+
'gpt-4o',
|
|
26
|
+
'Phi-3.5-mini-instruct',
|
|
27
|
+
'Meta-Llama-3.1-8B-Instruct'
|
|
28
|
+
];
|
|
29
|
+
/**
|
|
30
|
+
* Model pricing (per million tokens) - Free in Codespaces, estimated for external
|
|
31
|
+
*/
|
|
32
|
+
const GITHUB_MODELS_PRICING = {
|
|
33
|
+
'gpt-4o-mini': { input: 0.15, output: 0.6 },
|
|
34
|
+
'gpt-4o': { input: 2.5, output: 10.0 },
|
|
35
|
+
'Phi-3.5-mini-instruct': { input: 0.0, output: 0.0 },
|
|
36
|
+
'Meta-Llama-3.1-8B-Instruct': { input: 0.0, output: 0.0 }
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* GitHubModelsProvider - GitHub Models API implementation
|
|
40
|
+
*
|
|
41
|
+
* This provider enables access to GitHub Models with unlimited free usage
|
|
42
|
+
* in GitHub Codespaces. Supports OpenAI-compatible API format.
|
|
43
|
+
*/
|
|
44
|
+
class GitHubModelsProvider {
|
|
45
|
+
constructor(config = {}) {
|
|
46
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
47
|
+
this.config = {
|
|
48
|
+
name: config.name || 'github-models',
|
|
49
|
+
debug: config.debug ?? false,
|
|
50
|
+
timeout: config.timeout ?? 60000, // 1 minute
|
|
51
|
+
maxRetries: config.maxRetries ?? 3,
|
|
52
|
+
baseUrl: config.baseUrl || 'https://models.inference.ai.azure.com',
|
|
53
|
+
defaultModel: config.defaultModel || 'gpt-4o-mini',
|
|
54
|
+
token: config.token,
|
|
55
|
+
inCodespaces: config.inCodespaces
|
|
56
|
+
};
|
|
57
|
+
this.isInitialized = false;
|
|
58
|
+
this.baseUrl = this.config.baseUrl;
|
|
59
|
+
this.token = this.config.token;
|
|
60
|
+
this.inCodespaces = this.config.inCodespaces ?? this.isInCodespaces();
|
|
61
|
+
this.requestCount = 0;
|
|
62
|
+
this.currentModel = this.config.defaultModel;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Check if running in GitHub Codespaces
|
|
66
|
+
*/
|
|
67
|
+
isInCodespaces() {
|
|
68
|
+
return process.env.CODESPACES === 'true';
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Initialize the GitHub Models provider
|
|
72
|
+
*/
|
|
73
|
+
async initialize() {
|
|
74
|
+
if (this.isInitialized) {
|
|
75
|
+
this.logger.warn('GitHubModelsProvider already initialized');
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
// Get token from config or environment
|
|
80
|
+
this.token = this.config.token || process.env.GITHUB_TOKEN;
|
|
81
|
+
if (!this.token) {
|
|
82
|
+
throw new ILLMProvider_1.LLMProviderError('GitHub token is required. Set GITHUB_TOKEN environment variable or provide token in config.', 'github-models', 'AUTH_ERROR', false);
|
|
83
|
+
}
|
|
84
|
+
// Detect Codespaces environment
|
|
85
|
+
this.inCodespaces = this.config.inCodespaces ?? this.isInCodespaces();
|
|
86
|
+
// Validate token and API access
|
|
87
|
+
await this.validateToken();
|
|
88
|
+
this.isInitialized = true;
|
|
89
|
+
this.logger.info('GitHubModelsProvider initialized', {
|
|
90
|
+
baseUrl: this.baseUrl,
|
|
91
|
+
defaultModel: this.config.defaultModel,
|
|
92
|
+
inCodespaces: this.inCodespaces,
|
|
93
|
+
availableModels: GITHUB_MODELS
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
if (error instanceof ILLMProvider_1.LLMProviderError) {
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
throw new ILLMProvider_1.LLMProviderError(`Failed to initialize GitHub Models: ${error.message}`, 'github-models', 'INIT_ERROR', false, error);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Complete a prompt using GitHub Models
|
|
105
|
+
*/
|
|
106
|
+
async complete(options) {
|
|
107
|
+
this.ensureInitialized();
|
|
108
|
+
const startTime = Date.now();
|
|
109
|
+
const model = options.model || this.currentModel;
|
|
110
|
+
try {
|
|
111
|
+
// Build messages array
|
|
112
|
+
const messages = this.buildMessages(options);
|
|
113
|
+
// Make request to GitHub Models
|
|
114
|
+
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
115
|
+
method: 'POST',
|
|
116
|
+
headers: {
|
|
117
|
+
'Content-Type': 'application/json',
|
|
118
|
+
'Authorization': `Bearer ${this.token}`
|
|
119
|
+
},
|
|
120
|
+
body: JSON.stringify({
|
|
121
|
+
model,
|
|
122
|
+
messages,
|
|
123
|
+
temperature: options.temperature ?? 0.7,
|
|
124
|
+
max_tokens: options.maxTokens || 2048,
|
|
125
|
+
stream: false
|
|
126
|
+
}),
|
|
127
|
+
signal: AbortSignal.timeout(this.config.timeout)
|
|
128
|
+
});
|
|
129
|
+
if (!response.ok) {
|
|
130
|
+
const errorText = await response.text();
|
|
131
|
+
throw new Error(`GitHub Models API returned ${response.status}: ${errorText}`);
|
|
132
|
+
}
|
|
133
|
+
const data = await response.json();
|
|
134
|
+
this.requestCount++;
|
|
135
|
+
const latency = Date.now() - startTime;
|
|
136
|
+
return {
|
|
137
|
+
content: [{
|
|
138
|
+
type: 'text',
|
|
139
|
+
text: data.choices[0]?.message?.content || ''
|
|
140
|
+
}],
|
|
141
|
+
usage: {
|
|
142
|
+
input_tokens: data.usage.prompt_tokens,
|
|
143
|
+
output_tokens: data.usage.completion_tokens
|
|
144
|
+
},
|
|
145
|
+
model: data.model,
|
|
146
|
+
stop_reason: this.mapFinishReason(data.choices[0]?.finish_reason),
|
|
147
|
+
id: data.id || `github-${Date.now()}-${(0, crypto_1.randomUUID)().split('-')[0]}`,
|
|
148
|
+
metadata: {
|
|
149
|
+
latency,
|
|
150
|
+
cost: this.trackCost({
|
|
151
|
+
input_tokens: data.usage.prompt_tokens,
|
|
152
|
+
output_tokens: data.usage.completion_tokens
|
|
153
|
+
}),
|
|
154
|
+
inCodespaces: this.inCodespaces
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
throw new ILLMProvider_1.LLMProviderError(`GitHub Models completion failed: ${error.message}`, 'github-models', 'API_ERROR', true, error);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Stream a completion using GitHub Models
|
|
164
|
+
*/
|
|
165
|
+
async *streamComplete(options) {
|
|
166
|
+
this.ensureInitialized();
|
|
167
|
+
const model = options.model || this.currentModel;
|
|
168
|
+
try {
|
|
169
|
+
const messages = this.buildMessages(options);
|
|
170
|
+
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
171
|
+
method: 'POST',
|
|
172
|
+
headers: {
|
|
173
|
+
'Content-Type': 'application/json',
|
|
174
|
+
'Authorization': `Bearer ${this.token}`
|
|
175
|
+
},
|
|
176
|
+
body: JSON.stringify({
|
|
177
|
+
model,
|
|
178
|
+
messages,
|
|
179
|
+
temperature: options.temperature ?? 0.7,
|
|
180
|
+
max_tokens: options.maxTokens || 2048,
|
|
181
|
+
stream: true
|
|
182
|
+
})
|
|
183
|
+
});
|
|
184
|
+
if (!response.ok) {
|
|
185
|
+
const errorText = await response.text();
|
|
186
|
+
throw new Error(`GitHub Models API returned ${response.status}: ${errorText}`);
|
|
187
|
+
}
|
|
188
|
+
const reader = response.body?.getReader();
|
|
189
|
+
if (!reader) {
|
|
190
|
+
throw new Error('No response body');
|
|
191
|
+
}
|
|
192
|
+
const decoder = new TextDecoder();
|
|
193
|
+
let buffer = '';
|
|
194
|
+
yield { type: 'message_start' };
|
|
195
|
+
yield { type: 'content_block_start', content_block: { type: 'text', text: '' } };
|
|
196
|
+
while (true) {
|
|
197
|
+
const { done, value } = await reader.read();
|
|
198
|
+
if (done)
|
|
199
|
+
break;
|
|
200
|
+
buffer += decoder.decode(value, { stream: true });
|
|
201
|
+
const lines = buffer.split('\n');
|
|
202
|
+
buffer = lines.pop() || '';
|
|
203
|
+
for (const line of lines) {
|
|
204
|
+
if (line.trim() === '' || line.startsWith(':'))
|
|
205
|
+
continue;
|
|
206
|
+
if (line === 'data: [DONE]') {
|
|
207
|
+
yield { type: 'content_block_stop' };
|
|
208
|
+
yield { type: 'message_stop' };
|
|
209
|
+
this.requestCount++;
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (line.startsWith('data: ')) {
|
|
213
|
+
try {
|
|
214
|
+
const data = JSON.parse(line.slice(6));
|
|
215
|
+
const content = data.choices[0]?.delta?.content;
|
|
216
|
+
if (content) {
|
|
217
|
+
yield {
|
|
218
|
+
type: 'content_block_delta',
|
|
219
|
+
delta: { type: 'text_delta', text: content }
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
if (data.choices[0]?.finish_reason) {
|
|
223
|
+
yield { type: 'content_block_stop' };
|
|
224
|
+
yield { type: 'message_stop' };
|
|
225
|
+
this.requestCount++;
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
// Skip invalid JSON lines
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
throw new ILLMProvider_1.LLMProviderError(`GitHub Models stream failed: ${error.message}`, 'github-models', 'API_ERROR', true, error);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Generate embeddings (not supported by GitHub Models)
|
|
242
|
+
*/
|
|
243
|
+
async embed(options) {
|
|
244
|
+
throw new ILLMProvider_1.LLMProviderError('Embeddings are not supported by GitHub Models', 'github-models', 'NOT_SUPPORTED', false);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Count tokens in text (approximate)
|
|
248
|
+
*/
|
|
249
|
+
async countTokens(options) {
|
|
250
|
+
return this.estimateTokens(options.text);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Health check - verify API access
|
|
254
|
+
*/
|
|
255
|
+
async healthCheck() {
|
|
256
|
+
const startTime = Date.now();
|
|
257
|
+
try {
|
|
258
|
+
// Make a minimal completion request
|
|
259
|
+
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
260
|
+
method: 'POST',
|
|
261
|
+
headers: {
|
|
262
|
+
'Content-Type': 'application/json',
|
|
263
|
+
'Authorization': `Bearer ${this.token}`
|
|
264
|
+
},
|
|
265
|
+
body: JSON.stringify({
|
|
266
|
+
model: this.currentModel,
|
|
267
|
+
messages: [{ role: 'user', content: 'test' }],
|
|
268
|
+
max_tokens: 1
|
|
269
|
+
}),
|
|
270
|
+
signal: AbortSignal.timeout(5000)
|
|
271
|
+
});
|
|
272
|
+
const latency = Date.now() - startTime;
|
|
273
|
+
const isHealthy = response.ok;
|
|
274
|
+
if (!isHealthy) {
|
|
275
|
+
const errorText = await response.text();
|
|
276
|
+
return {
|
|
277
|
+
healthy: false,
|
|
278
|
+
error: `API returned ${response.status}: ${errorText}`,
|
|
279
|
+
timestamp: new Date(),
|
|
280
|
+
latency
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
return {
|
|
284
|
+
healthy: true,
|
|
285
|
+
latency,
|
|
286
|
+
timestamp: new Date(),
|
|
287
|
+
metadata: {
|
|
288
|
+
baseUrl: this.baseUrl,
|
|
289
|
+
currentModel: this.currentModel,
|
|
290
|
+
inCodespaces: this.inCodespaces,
|
|
291
|
+
requestCount: this.requestCount
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
catch (error) {
|
|
296
|
+
return {
|
|
297
|
+
healthy: false,
|
|
298
|
+
error: error.message,
|
|
299
|
+
timestamp: new Date()
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Get provider metadata
|
|
305
|
+
*/
|
|
306
|
+
getMetadata() {
|
|
307
|
+
return {
|
|
308
|
+
name: 'github-models',
|
|
309
|
+
version: '1.0.0',
|
|
310
|
+
models: [...GITHUB_MODELS],
|
|
311
|
+
capabilities: {
|
|
312
|
+
streaming: true,
|
|
313
|
+
caching: false,
|
|
314
|
+
embeddings: false,
|
|
315
|
+
vision: false
|
|
316
|
+
},
|
|
317
|
+
costs: {
|
|
318
|
+
inputPerMillion: this.inCodespaces ? 0 : GITHUB_MODELS_PRICING[this.currentModel]?.input || 0,
|
|
319
|
+
outputPerMillion: this.inCodespaces ? 0 : GITHUB_MODELS_PRICING[this.currentModel]?.output || 0
|
|
320
|
+
},
|
|
321
|
+
location: 'cloud'
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Shutdown the provider
|
|
326
|
+
*/
|
|
327
|
+
async shutdown() {
|
|
328
|
+
this.isInitialized = false;
|
|
329
|
+
this.logger.info('GitHubModelsProvider shutdown', {
|
|
330
|
+
requestCount: this.requestCount
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Track cost for a request
|
|
335
|
+
*/
|
|
336
|
+
trackCost(usage) {
|
|
337
|
+
// Free in Codespaces
|
|
338
|
+
if (this.inCodespaces) {
|
|
339
|
+
return 0;
|
|
340
|
+
}
|
|
341
|
+
// Estimate cost for non-Codespaces usage
|
|
342
|
+
const pricing = GITHUB_MODELS_PRICING[this.currentModel];
|
|
343
|
+
if (!pricing) {
|
|
344
|
+
return 0;
|
|
345
|
+
}
|
|
346
|
+
const inputCost = (usage.input_tokens / 1000000) * pricing.input;
|
|
347
|
+
const outputCost = (usage.output_tokens / 1000000) * pricing.output;
|
|
348
|
+
return inputCost + outputCost;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Set the current model for subsequent requests
|
|
352
|
+
*/
|
|
353
|
+
async setModel(model) {
|
|
354
|
+
this.ensureInitialized();
|
|
355
|
+
if (!GITHUB_MODELS.includes(model)) {
|
|
356
|
+
this.logger.warn(`Model ${model} is not in the known models list. It may not be supported.`);
|
|
357
|
+
}
|
|
358
|
+
this.currentModel = model;
|
|
359
|
+
this.logger.info(`Switched to model: ${model}`);
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Get current model
|
|
363
|
+
*/
|
|
364
|
+
getCurrentModel() {
|
|
365
|
+
return this.currentModel;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Get list of available models
|
|
369
|
+
*/
|
|
370
|
+
getAvailableModels() {
|
|
371
|
+
return [...GITHUB_MODELS];
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Validate GitHub token
|
|
375
|
+
*/
|
|
376
|
+
async validateToken() {
|
|
377
|
+
try {
|
|
378
|
+
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
379
|
+
method: 'POST',
|
|
380
|
+
headers: {
|
|
381
|
+
'Content-Type': 'application/json',
|
|
382
|
+
'Authorization': `Bearer ${this.token}`
|
|
383
|
+
},
|
|
384
|
+
body: JSON.stringify({
|
|
385
|
+
model: this.currentModel,
|
|
386
|
+
messages: [{ role: 'user', content: 'test' }],
|
|
387
|
+
max_tokens: 1
|
|
388
|
+
}),
|
|
389
|
+
signal: AbortSignal.timeout(5000)
|
|
390
|
+
});
|
|
391
|
+
if (response.status === 401) {
|
|
392
|
+
throw new ILLMProvider_1.LLMProviderError('Invalid or expired GitHub token', 'github-models', 'AUTH_ERROR', false);
|
|
393
|
+
}
|
|
394
|
+
if (response.status === 403) {
|
|
395
|
+
throw new ILLMProvider_1.LLMProviderError('GitHub token does not have required permissions', 'github-models', 'AUTH_ERROR', false);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
catch (error) {
|
|
399
|
+
// Re-throw LLMProviderError immediately
|
|
400
|
+
if (error instanceof ILLMProvider_1.LLMProviderError) {
|
|
401
|
+
throw error;
|
|
402
|
+
}
|
|
403
|
+
// For network errors or other issues, log warning and proceed
|
|
404
|
+
// The actual API calls will fail if there's a real issue
|
|
405
|
+
this.logger.warn('Token validation failed, but will attempt to proceed', {
|
|
406
|
+
error: error.message
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Build messages array from options
|
|
412
|
+
*/
|
|
413
|
+
buildMessages(options) {
|
|
414
|
+
const messages = [];
|
|
415
|
+
// Add system message if provided
|
|
416
|
+
if (options.system && options.system.length > 0) {
|
|
417
|
+
const systemContent = options.system.map(s => s.text).join('\n\n');
|
|
418
|
+
messages.push({
|
|
419
|
+
role: 'system',
|
|
420
|
+
content: systemContent
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
// Add conversation messages
|
|
424
|
+
for (const message of options.messages) {
|
|
425
|
+
const content = typeof message.content === 'string'
|
|
426
|
+
? message.content
|
|
427
|
+
: message.content.map(c => c.text || '').join('');
|
|
428
|
+
messages.push({
|
|
429
|
+
role: message.role,
|
|
430
|
+
content
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
return messages;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Map OpenAI finish reason to Claude format
|
|
437
|
+
*/
|
|
438
|
+
mapFinishReason(reason) {
|
|
439
|
+
switch (reason) {
|
|
440
|
+
case 'stop':
|
|
441
|
+
return 'end_turn';
|
|
442
|
+
case 'length':
|
|
443
|
+
return 'max_tokens';
|
|
444
|
+
default:
|
|
445
|
+
return 'end_turn';
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Estimate token count (approximate: 1 token ≈ 4 characters)
|
|
450
|
+
*/
|
|
451
|
+
estimateTokens(text) {
|
|
452
|
+
return Math.ceil(text.length / 4);
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Ensure provider is initialized
|
|
456
|
+
*/
|
|
457
|
+
ensureInitialized() {
|
|
458
|
+
if (!this.isInitialized) {
|
|
459
|
+
throw new ILLMProvider_1.LLMProviderError('GitHubModelsProvider not initialized. Call initialize() first.', 'github-models', 'NOT_INITIALIZED', false);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
exports.GitHubModelsProvider = GitHubModelsProvider;
|
|
464
|
+
//# sourceMappingURL=GitHubModelsProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitHubModelsProvider.js","sourceRoot":"","sources":["../../src/providers/GitHubModelsProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GroqProvider - High-Performance LLM Inference via Groq
|
|
3
|
+
*
|
|
4
|
+
* Provides cloud-based LLM inference through Groq's ultra-fast API with support for:
|
|
5
|
+
* - FREE tier: 14,400 requests/day (10 req/min)
|
|
6
|
+
* - Streaming responses via SSE
|
|
7
|
+
* - Rate limit handling with exponential backoff
|
|
8
|
+
* - Rate limiting (10 req/min free tier)
|
|
9
|
+
* - Multiple model families (LLaMA, Mixtral, DeepSeek)
|
|
10
|
+
* - OpenAI-compatible API format
|
|
11
|
+
*
|
|
12
|
+
* @module providers/GroqProvider
|
|
13
|
+
* @version 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
import { ILLMProvider, LLMProviderConfig, LLMCompletionOptions, LLMCompletionResponse, LLMStreamEvent, LLMEmbeddingOptions, LLMEmbeddingResponse, LLMTokenCountOptions, LLMHealthStatus, LLMProviderMetadata } from './ILLMProvider';
|
|
16
|
+
/**
|
|
17
|
+
* Groq-specific configuration
|
|
18
|
+
*/
|
|
19
|
+
export interface GroqProviderConfig extends LLMProviderConfig {
|
|
20
|
+
/** Groq API key (default: process.env.GROQ_API_KEY) */
|
|
21
|
+
apiKey?: string;
|
|
22
|
+
/** Base URL for Groq API (default: https://api.groq.com/openai/v1) */
|
|
23
|
+
baseUrl?: string;
|
|
24
|
+
/** Default model name */
|
|
25
|
+
defaultModel?: string;
|
|
26
|
+
/** Maximum retries on failure (default: 3) */
|
|
27
|
+
maxRetries?: number;
|
|
28
|
+
/** Rate limit retry delay in milliseconds (default: 6000) */
|
|
29
|
+
rateLimitRetryDelay?: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* GroqProvider - High-performance cloud LLM inference
|
|
33
|
+
*
|
|
34
|
+
* This provider enables ultra-fast LLM inference using Groq's specialized
|
|
35
|
+
* LPU (Language Processing Unit) architecture, providing significantly
|
|
36
|
+
* faster inference than traditional GPU-based providers.
|
|
37
|
+
*
|
|
38
|
+
* Supported Models:
|
|
39
|
+
* - llama-3.3-70b-versatile (primary general-purpose model)
|
|
40
|
+
* - deepseek-r1-distill-llama-70b (reasoning-focused)
|
|
41
|
+
* - mixtral-8x7b-32768 (large context window)
|
|
42
|
+
* - llama-3.1-8b-instant (fast lightweight)
|
|
43
|
+
*
|
|
44
|
+
* Rate Limits (FREE tier):
|
|
45
|
+
* - 14,400 requests per day
|
|
46
|
+
* - 10 requests per minute
|
|
47
|
+
* - Automatic retry with exponential backoff
|
|
48
|
+
*/
|
|
49
|
+
export declare class GroqProvider implements ILLMProvider {
|
|
50
|
+
private readonly logger;
|
|
51
|
+
private config;
|
|
52
|
+
private isInitialized;
|
|
53
|
+
private apiKey;
|
|
54
|
+
private baseUrl;
|
|
55
|
+
private requestCount;
|
|
56
|
+
private lastRequestTime;
|
|
57
|
+
constructor(config?: GroqProviderConfig);
|
|
58
|
+
/**
|
|
59
|
+
* Initialize the Groq provider
|
|
60
|
+
*/
|
|
61
|
+
initialize(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Complete a prompt using Groq
|
|
64
|
+
*/
|
|
65
|
+
complete(options: LLMCompletionOptions): Promise<LLMCompletionResponse>;
|
|
66
|
+
/**
|
|
67
|
+
* Stream a completion using Groq
|
|
68
|
+
*/
|
|
69
|
+
streamComplete(options: LLMCompletionOptions): AsyncIterableIterator<LLMStreamEvent>;
|
|
70
|
+
/**
|
|
71
|
+
* Generate embeddings (not supported by Groq)
|
|
72
|
+
*/
|
|
73
|
+
embed(options: LLMEmbeddingOptions): Promise<LLMEmbeddingResponse>;
|
|
74
|
+
/**
|
|
75
|
+
* Count tokens in text (approximate)
|
|
76
|
+
*/
|
|
77
|
+
countTokens(options: LLMTokenCountOptions): Promise<number>;
|
|
78
|
+
/**
|
|
79
|
+
* Health check - ping Groq API
|
|
80
|
+
*/
|
|
81
|
+
healthCheck(): Promise<LLMHealthStatus>;
|
|
82
|
+
/**
|
|
83
|
+
* Get provider metadata
|
|
84
|
+
*/
|
|
85
|
+
getMetadata(): LLMProviderMetadata;
|
|
86
|
+
/**
|
|
87
|
+
* Shutdown the provider
|
|
88
|
+
*/
|
|
89
|
+
shutdown(): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Track cost (free tier = $0)
|
|
92
|
+
*/
|
|
93
|
+
trackCost(usage: LLMCompletionResponse['usage']): number;
|
|
94
|
+
/**
|
|
95
|
+
* Build chat completion request
|
|
96
|
+
*/
|
|
97
|
+
private buildChatRequest;
|
|
98
|
+
/**
|
|
99
|
+
* Map Groq finish reason to standard stop reason
|
|
100
|
+
*/
|
|
101
|
+
private mapStopReason;
|
|
102
|
+
/**
|
|
103
|
+
* Extract retry-after header from rate limit response
|
|
104
|
+
*/
|
|
105
|
+
private extractRetryAfter;
|
|
106
|
+
/**
|
|
107
|
+
* Sleep utility for retry delays
|
|
108
|
+
*/
|
|
109
|
+
private sleep;
|
|
110
|
+
/**
|
|
111
|
+
* Ensure provider is initialized
|
|
112
|
+
*/
|
|
113
|
+
private ensureInitialized;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=GroqProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroqProvider.d.ts","sourceRoot":"","sources":["../../src/providers/GroqProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EAEpB,MAAM,gBAAgB,CAAC;AAGxB;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AA+ED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,YAAa,YAAW,YAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAS;gBAEpB,MAAM,GAAE,kBAAuB;IAkB3C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCjC;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA4I7E;;OAEG;IACI,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,qBAAqB,CAAC,cAAc,CAAC;IAuG3F;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IASxE;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IA0C7C;;OAEG;IACH,WAAW,IAAI,mBAAmB;IA4BlC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,MAAM;IAMxD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoCxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAU1B"}
|