agentic-qe 2.1.2 → 2.2.0

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 (100) hide show
  1. package/CHANGELOG.md +123 -0
  2. package/README.md +1 -1
  3. package/dist/agents/index.d.ts.map +1 -1
  4. package/dist/agents/index.js +5 -1
  5. package/dist/agents/index.js.map +1 -1
  6. package/dist/core/di/AgentDependencies.d.ts +127 -0
  7. package/dist/core/di/AgentDependencies.d.ts.map +1 -0
  8. package/dist/core/di/AgentDependencies.js +251 -0
  9. package/dist/core/di/AgentDependencies.js.map +1 -0
  10. package/dist/core/di/DIContainer.d.ts +149 -0
  11. package/dist/core/di/DIContainer.d.ts.map +1 -0
  12. package/dist/core/di/DIContainer.js +333 -0
  13. package/dist/core/di/DIContainer.js.map +1 -0
  14. package/dist/core/di/index.d.ts +11 -0
  15. package/dist/core/di/index.d.ts.map +1 -0
  16. package/dist/core/di/index.js +22 -0
  17. package/dist/core/di/index.js.map +1 -0
  18. package/dist/core/index.d.ts +1 -0
  19. package/dist/core/index.d.ts.map +1 -1
  20. package/dist/core/index.js +11 -1
  21. package/dist/core/index.js.map +1 -1
  22. package/dist/learning/ExperienceSharingProtocol.d.ts +243 -0
  23. package/dist/learning/ExperienceSharingProtocol.d.ts.map +1 -0
  24. package/dist/learning/ExperienceSharingProtocol.js +538 -0
  25. package/dist/learning/ExperienceSharingProtocol.js.map +1 -0
  26. package/dist/learning/LearningEngine.d.ts +101 -1
  27. package/dist/learning/LearningEngine.d.ts.map +1 -1
  28. package/dist/learning/LearningEngine.js +330 -3
  29. package/dist/learning/LearningEngine.js.map +1 -1
  30. package/dist/learning/QLearning.d.ts +38 -125
  31. package/dist/learning/QLearning.d.ts.map +1 -1
  32. package/dist/learning/QLearning.js +46 -267
  33. package/dist/learning/QLearning.js.map +1 -1
  34. package/dist/learning/QLearningLegacy.d.ts +154 -0
  35. package/dist/learning/QLearningLegacy.d.ts.map +1 -0
  36. package/dist/learning/QLearningLegacy.js +337 -0
  37. package/dist/learning/QLearningLegacy.js.map +1 -0
  38. package/dist/learning/algorithms/AbstractRLLearner.d.ts +162 -0
  39. package/dist/learning/algorithms/AbstractRLLearner.d.ts.map +1 -0
  40. package/dist/learning/algorithms/AbstractRLLearner.js +300 -0
  41. package/dist/learning/algorithms/AbstractRLLearner.js.map +1 -0
  42. package/dist/learning/algorithms/ActorCriticLearner.d.ts +201 -0
  43. package/dist/learning/algorithms/ActorCriticLearner.d.ts.map +1 -0
  44. package/dist/learning/algorithms/ActorCriticLearner.js +447 -0
  45. package/dist/learning/algorithms/ActorCriticLearner.js.map +1 -0
  46. package/dist/learning/algorithms/PPOLearner.d.ts +207 -0
  47. package/dist/learning/algorithms/PPOLearner.d.ts.map +1 -0
  48. package/dist/learning/algorithms/PPOLearner.js +490 -0
  49. package/dist/learning/algorithms/PPOLearner.js.map +1 -0
  50. package/dist/learning/algorithms/QLearning.d.ts +68 -0
  51. package/dist/learning/algorithms/QLearning.d.ts.map +1 -0
  52. package/dist/learning/algorithms/QLearning.js +116 -0
  53. package/dist/learning/algorithms/QLearning.js.map +1 -0
  54. package/dist/learning/algorithms/SARSALearner.d.ts +107 -0
  55. package/dist/learning/algorithms/SARSALearner.d.ts.map +1 -0
  56. package/dist/learning/algorithms/SARSALearner.js +252 -0
  57. package/dist/learning/algorithms/SARSALearner.js.map +1 -0
  58. package/dist/learning/algorithms/index.d.ts +29 -0
  59. package/dist/learning/algorithms/index.d.ts.map +1 -0
  60. package/dist/learning/algorithms/index.js +44 -0
  61. package/dist/learning/algorithms/index.js.map +1 -0
  62. package/dist/learning/index.d.ts +3 -0
  63. package/dist/learning/index.d.ts.map +1 -1
  64. package/dist/learning/index.js +15 -1
  65. package/dist/learning/index.js.map +1 -1
  66. package/dist/learning/types.d.ts +2 -0
  67. package/dist/learning/types.d.ts.map +1 -1
  68. package/dist/memory/DistributedPatternLibrary.d.ts +159 -0
  69. package/dist/memory/DistributedPatternLibrary.d.ts.map +1 -0
  70. package/dist/memory/DistributedPatternLibrary.js +370 -0
  71. package/dist/memory/DistributedPatternLibrary.js.map +1 -0
  72. package/dist/memory/PatternQualityScorer.d.ts +169 -0
  73. package/dist/memory/PatternQualityScorer.d.ts.map +1 -0
  74. package/dist/memory/PatternQualityScorer.js +327 -0
  75. package/dist/memory/PatternQualityScorer.js.map +1 -0
  76. package/dist/memory/PatternReplicationService.d.ts +187 -0
  77. package/dist/memory/PatternReplicationService.d.ts.map +1 -0
  78. package/dist/memory/PatternReplicationService.js +392 -0
  79. package/dist/memory/PatternReplicationService.js.map +1 -0
  80. package/dist/providers/ClaudeProvider.d.ts +98 -0
  81. package/dist/providers/ClaudeProvider.d.ts.map +1 -0
  82. package/dist/providers/ClaudeProvider.js +418 -0
  83. package/dist/providers/ClaudeProvider.js.map +1 -0
  84. package/dist/providers/ILLMProvider.d.ts +287 -0
  85. package/dist/providers/ILLMProvider.d.ts.map +1 -0
  86. package/dist/providers/ILLMProvider.js +33 -0
  87. package/dist/providers/ILLMProvider.js.map +1 -0
  88. package/dist/providers/LLMProviderFactory.d.ts +154 -0
  89. package/dist/providers/LLMProviderFactory.d.ts.map +1 -0
  90. package/dist/providers/LLMProviderFactory.js +426 -0
  91. package/dist/providers/LLMProviderFactory.js.map +1 -0
  92. package/dist/providers/RuvllmProvider.d.ts +107 -0
  93. package/dist/providers/RuvllmProvider.d.ts.map +1 -0
  94. package/dist/providers/RuvllmProvider.js +417 -0
  95. package/dist/providers/RuvllmProvider.js.map +1 -0
  96. package/dist/providers/index.d.ts +31 -0
  97. package/dist/providers/index.d.ts.map +1 -0
  98. package/dist/providers/index.js +69 -0
  99. package/dist/providers/index.js.map +1 -0
  100. package/package.json +1 -1
@@ -0,0 +1,417 @@
1
+ "use strict";
2
+ /**
3
+ * RuvllmProvider - Local LLM Inference via ruvllm
4
+ *
5
+ * Provides local LLM inference for cost-effective operations on capable hardware.
6
+ * Uses ruvllm for fast local inference with support for various open models.
7
+ *
8
+ * Features:
9
+ * - Zero cloud costs for local inference
10
+ * - Low latency for local operations
11
+ * - Privacy-preserving (no data leaves the machine)
12
+ * - Streaming support
13
+ * - Model hot-swapping
14
+ *
15
+ * @module providers/RuvllmProvider
16
+ * @version 1.0.0
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.RuvllmProvider = void 0;
20
+ const child_process_1 = require("child_process");
21
+ const ILLMProvider_1 = require("./ILLMProvider");
22
+ const Logger_1 = require("../utils/Logger");
23
+ /**
24
+ * RuvllmProvider - Local LLM inference implementation of ILLMProvider
25
+ *
26
+ * This provider enables local LLM inference using ruvllm, providing
27
+ * cost-free, low-latency inference for development and privacy-sensitive tasks.
28
+ */
29
+ class RuvllmProvider {
30
+ constructor(config = {}) {
31
+ this.logger = Logger_1.Logger.getInstance();
32
+ this.config = {
33
+ name: config.name || 'ruvllm',
34
+ debug: config.debug ?? false,
35
+ timeout: config.timeout ?? 120000, // Longer timeout for local inference
36
+ maxRetries: config.maxRetries ?? 2,
37
+ ruvllmPath: config.ruvllmPath || 'npx',
38
+ port: config.port ?? 8080,
39
+ defaultModel: config.defaultModel || 'llama-3.2-3b-instruct',
40
+ gpuLayers: config.gpuLayers ?? -1,
41
+ contextSize: config.contextSize ?? 4096,
42
+ threads: config.threads ?? 4,
43
+ defaultTemperature: config.defaultTemperature ?? 0.7,
44
+ enableEmbeddings: config.enableEmbeddings ?? false
45
+ };
46
+ this.isInitialized = false;
47
+ this.baseUrl = `http://localhost:${this.config.port}`;
48
+ this.requestCount = 0;
49
+ }
50
+ /**
51
+ * Initialize the ruvllm provider
52
+ */
53
+ async initialize() {
54
+ if (this.isInitialized) {
55
+ this.logger.warn('RuvllmProvider already initialized');
56
+ return;
57
+ }
58
+ try {
59
+ // Check if server is already running
60
+ const isRunning = await this.checkServerHealth();
61
+ if (isRunning) {
62
+ this.isInitialized = true;
63
+ this.logger.info('Connected to existing ruvllm server');
64
+ return;
65
+ }
66
+ // Start ruvllm server
67
+ await this.startServer();
68
+ this.isInitialized = true;
69
+ this.logger.info('RuvllmProvider initialized', {
70
+ model: this.config.defaultModel,
71
+ port: this.config.port,
72
+ gpuLayers: this.config.gpuLayers
73
+ });
74
+ }
75
+ catch (error) {
76
+ throw new ILLMProvider_1.LLMProviderError(`Failed to initialize ruvllm: ${error.message}`, 'ruvllm', 'INIT_ERROR', false, error);
77
+ }
78
+ }
79
+ /**
80
+ * Complete a prompt using local inference
81
+ */
82
+ async complete(options) {
83
+ this.ensureInitialized();
84
+ const startTime = Date.now();
85
+ try {
86
+ // Build request body
87
+ const requestBody = {
88
+ model: options.model || this.config.defaultModel,
89
+ messages: options.messages.map(m => ({
90
+ role: m.role,
91
+ content: typeof m.content === 'string' ? m.content : m.content.map(c => c.text || '').join('')
92
+ })),
93
+ max_tokens: options.maxTokens || 2048,
94
+ temperature: options.temperature ?? this.config.defaultTemperature,
95
+ stream: false
96
+ };
97
+ // Add system message if provided
98
+ if (options.system && options.system.length > 0) {
99
+ const systemContent = options.system.map(s => s.text).join('\n');
100
+ requestBody.messages = [
101
+ { role: 'system', content: systemContent },
102
+ ...requestBody.messages
103
+ ];
104
+ }
105
+ const response = await fetch(`${this.baseUrl}/v1/chat/completions`, {
106
+ method: 'POST',
107
+ headers: { 'Content-Type': 'application/json' },
108
+ body: JSON.stringify(requestBody),
109
+ signal: AbortSignal.timeout(this.config.timeout)
110
+ });
111
+ if (!response.ok) {
112
+ throw new Error(`Server returned ${response.status}: ${await response.text()}`);
113
+ }
114
+ const data = await response.json();
115
+ this.requestCount++;
116
+ // Map to standard response format
117
+ const result = {
118
+ content: [{
119
+ type: 'text',
120
+ text: data.choices?.[0]?.message?.content || ''
121
+ }],
122
+ usage: {
123
+ input_tokens: data.usage?.prompt_tokens || 0,
124
+ output_tokens: data.usage?.completion_tokens || 0
125
+ },
126
+ model: data.model || this.config.defaultModel,
127
+ stop_reason: this.mapStopReason(data.choices?.[0]?.finish_reason),
128
+ id: data.id || `ruvllm-${Date.now()}`,
129
+ metadata: {
130
+ latency: Date.now() - startTime,
131
+ cost: 0 // Local inference is free
132
+ }
133
+ };
134
+ this.logger.debug('Ruvllm completion successful', {
135
+ model: result.model,
136
+ inputTokens: result.usage.input_tokens,
137
+ outputTokens: result.usage.output_tokens,
138
+ latency: result.metadata?.latency
139
+ });
140
+ return result;
141
+ }
142
+ catch (error) {
143
+ throw new ILLMProvider_1.LLMProviderError(`Ruvllm completion failed: ${error.message}`, 'ruvllm', 'INFERENCE_ERROR', true, error);
144
+ }
145
+ }
146
+ /**
147
+ * Stream a completion
148
+ */
149
+ async *streamComplete(options) {
150
+ this.ensureInitialized();
151
+ try {
152
+ const requestBody = {
153
+ model: options.model || this.config.defaultModel,
154
+ messages: options.messages.map(m => ({
155
+ role: m.role,
156
+ content: typeof m.content === 'string' ? m.content : m.content.map(c => c.text || '').join('')
157
+ })),
158
+ max_tokens: options.maxTokens || 2048,
159
+ temperature: options.temperature ?? this.config.defaultTemperature,
160
+ stream: true
161
+ };
162
+ if (options.system && options.system.length > 0) {
163
+ const systemContent = options.system.map(s => s.text).join('\n');
164
+ requestBody.messages = [
165
+ { role: 'system', content: systemContent },
166
+ ...requestBody.messages
167
+ ];
168
+ }
169
+ const response = await fetch(`${this.baseUrl}/v1/chat/completions`, {
170
+ method: 'POST',
171
+ headers: { 'Content-Type': 'application/json' },
172
+ body: JSON.stringify(requestBody)
173
+ });
174
+ if (!response.ok) {
175
+ throw new Error(`Server returned ${response.status}`);
176
+ }
177
+ const reader = response.body?.getReader();
178
+ if (!reader) {
179
+ throw new Error('No response body');
180
+ }
181
+ const decoder = new TextDecoder();
182
+ let buffer = '';
183
+ yield { type: 'message_start' };
184
+ yield { type: 'content_block_start', content_block: { type: 'text', text: '' } };
185
+ while (true) {
186
+ const { done, value } = await reader.read();
187
+ if (done)
188
+ break;
189
+ buffer += decoder.decode(value, { stream: true });
190
+ const lines = buffer.split('\n');
191
+ buffer = lines.pop() || '';
192
+ for (const line of lines) {
193
+ if (line.startsWith('data: ')) {
194
+ const data = line.slice(6);
195
+ if (data === '[DONE]')
196
+ continue;
197
+ try {
198
+ const parsed = JSON.parse(data);
199
+ const content = parsed.choices?.[0]?.delta?.content;
200
+ if (content) {
201
+ yield {
202
+ type: 'content_block_delta',
203
+ delta: { type: 'text_delta', text: content }
204
+ };
205
+ }
206
+ }
207
+ catch {
208
+ // Skip invalid JSON
209
+ }
210
+ }
211
+ }
212
+ }
213
+ yield { type: 'content_block_stop' };
214
+ yield { type: 'message_stop' };
215
+ this.requestCount++;
216
+ }
217
+ catch (error) {
218
+ throw new ILLMProvider_1.LLMProviderError(`Ruvllm stream failed: ${error.message}`, 'ruvllm', 'STREAM_ERROR', true, error);
219
+ }
220
+ }
221
+ /**
222
+ * Generate embeddings
223
+ */
224
+ async embed(options) {
225
+ this.ensureInitialized();
226
+ if (!this.config.enableEmbeddings) {
227
+ throw new ILLMProvider_1.LLMProviderError('Embeddings not enabled. Set enableEmbeddings: true in config.', 'ruvllm', 'UNSUPPORTED', false);
228
+ }
229
+ try {
230
+ const response = await fetch(`${this.baseUrl}/v1/embeddings`, {
231
+ method: 'POST',
232
+ headers: { 'Content-Type': 'application/json' },
233
+ body: JSON.stringify({
234
+ model: options.model || 'embedding',
235
+ input: options.text
236
+ })
237
+ });
238
+ if (!response.ok) {
239
+ throw new Error(`Server returned ${response.status}`);
240
+ }
241
+ const data = await response.json();
242
+ return {
243
+ embedding: data.data?.[0]?.embedding || [],
244
+ model: data.model || 'embedding',
245
+ tokens: data.usage?.total_tokens || 0
246
+ };
247
+ }
248
+ catch (error) {
249
+ throw new ILLMProvider_1.LLMProviderError(`Embedding generation failed: ${error.message}`, 'ruvllm', 'EMBEDDING_ERROR', true, error);
250
+ }
251
+ }
252
+ /**
253
+ * Count tokens in text
254
+ */
255
+ async countTokens(options) {
256
+ // Approximate token count (ruvllm doesn't have a direct endpoint)
257
+ // Most models use ~4 characters per token
258
+ return Math.ceil(options.text.length / 4);
259
+ }
260
+ /**
261
+ * Health check
262
+ */
263
+ async healthCheck() {
264
+ const startTime = Date.now();
265
+ try {
266
+ const isHealthy = await this.checkServerHealth();
267
+ return {
268
+ healthy: isHealthy,
269
+ latency: Date.now() - startTime,
270
+ timestamp: new Date(),
271
+ metadata: {
272
+ model: this.config.defaultModel,
273
+ port: this.config.port,
274
+ requestCount: this.requestCount
275
+ }
276
+ };
277
+ }
278
+ catch (error) {
279
+ return {
280
+ healthy: false,
281
+ error: error.message,
282
+ timestamp: new Date()
283
+ };
284
+ }
285
+ }
286
+ /**
287
+ * Get provider metadata
288
+ */
289
+ getMetadata() {
290
+ return {
291
+ name: 'ruvllm',
292
+ version: '1.0.0',
293
+ models: [
294
+ 'llama-3.2-3b-instruct',
295
+ 'llama-3.2-1b-instruct',
296
+ 'llama-3.1-8b-instruct',
297
+ 'phi-3-mini',
298
+ 'mistral-7b-instruct',
299
+ 'qwen2-7b-instruct'
300
+ ],
301
+ capabilities: {
302
+ streaming: true,
303
+ caching: false,
304
+ embeddings: this.config.enableEmbeddings,
305
+ vision: false
306
+ },
307
+ costs: {
308
+ inputPerMillion: 0, // Free for local inference
309
+ outputPerMillion: 0
310
+ },
311
+ location: 'local'
312
+ };
313
+ }
314
+ /**
315
+ * Shutdown the provider
316
+ */
317
+ async shutdown() {
318
+ if (this.serverProcess) {
319
+ this.serverProcess.kill();
320
+ this.serverProcess = undefined;
321
+ }
322
+ this.isInitialized = false;
323
+ this.logger.info('RuvllmProvider shutdown', {
324
+ requestCount: this.requestCount
325
+ });
326
+ }
327
+ /**
328
+ * Track cost (always 0 for local inference)
329
+ */
330
+ trackCost(usage) {
331
+ return 0; // Local inference is free
332
+ }
333
+ /**
334
+ * Start the ruvllm server
335
+ */
336
+ async startServer() {
337
+ return new Promise((resolve, reject) => {
338
+ const args = [
339
+ 'ruvllm',
340
+ 'serve',
341
+ '--model', this.config.defaultModel,
342
+ '--port', String(this.config.port),
343
+ '--gpu-layers', String(this.config.gpuLayers),
344
+ '--context-size', String(this.config.contextSize),
345
+ '--threads', String(this.config.threads)
346
+ ];
347
+ if (this.config.ruvllmPath === 'npx') {
348
+ this.serverProcess = (0, child_process_1.spawn)('npx', args, {
349
+ stdio: this.config.debug ? 'inherit' : 'pipe'
350
+ });
351
+ }
352
+ else {
353
+ this.serverProcess = (0, child_process_1.spawn)(this.config.ruvllmPath, args.slice(1), {
354
+ stdio: this.config.debug ? 'inherit' : 'pipe'
355
+ });
356
+ }
357
+ this.serverProcess.on('error', (error) => {
358
+ reject(new Error(`Failed to start ruvllm: ${error.message}`));
359
+ });
360
+ // Wait for server to be ready
361
+ const checkInterval = setInterval(async () => {
362
+ try {
363
+ const isReady = await this.checkServerHealth();
364
+ if (isReady) {
365
+ clearInterval(checkInterval);
366
+ resolve();
367
+ }
368
+ }
369
+ catch {
370
+ // Server not ready yet
371
+ }
372
+ }, 500);
373
+ // Timeout after 60 seconds
374
+ setTimeout(() => {
375
+ clearInterval(checkInterval);
376
+ reject(new Error('Timeout waiting for ruvllm server to start'));
377
+ }, 60000);
378
+ });
379
+ }
380
+ /**
381
+ * Check if server is healthy
382
+ */
383
+ async checkServerHealth() {
384
+ try {
385
+ const response = await fetch(`${this.baseUrl}/health`, {
386
+ signal: AbortSignal.timeout(5000)
387
+ });
388
+ return response.ok;
389
+ }
390
+ catch {
391
+ return false;
392
+ }
393
+ }
394
+ /**
395
+ * Ensure provider is initialized
396
+ */
397
+ ensureInitialized() {
398
+ if (!this.isInitialized) {
399
+ throw new ILLMProvider_1.LLMProviderError('RuvllmProvider not initialized. Call initialize() first.', 'ruvllm', 'NOT_INITIALIZED', false);
400
+ }
401
+ }
402
+ /**
403
+ * Map finish reason to standard stop reason
404
+ */
405
+ mapStopReason(reason) {
406
+ switch (reason) {
407
+ case 'length':
408
+ return 'max_tokens';
409
+ case 'stop':
410
+ return 'stop_sequence';
411
+ default:
412
+ return 'end_turn';
413
+ }
414
+ }
415
+ }
416
+ exports.RuvllmProvider = RuvllmProvider;
417
+ //# sourceMappingURL=RuvllmProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuvllmProvider.js","sourceRoot":"","sources":["../../src/providers/RuvllmProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * LLM Providers - Unified LLM Provider Layer
3
+ *
4
+ * This module provides a unified interface for multiple LLM providers:
5
+ * - ClaudeProvider: Anthropic Claude API
6
+ * - RuvllmProvider: Local LLM inference via ruvllm
7
+ * - LLMProviderFactory: Factory for provider creation and hybrid routing
8
+ *
9
+ * @module providers
10
+ * @version 1.0.0
11
+ */
12
+ export { ILLMProvider, LLMProviderConfig, LLMCompletionOptions, LLMCompletionResponse, LLMStreamEvent, LLMEmbeddingOptions, LLMEmbeddingResponse, LLMTokenCountOptions, LLMHealthStatus, LLMProviderMetadata, LLMMessageParam, LLMTextBlockParam, LLMProviderError, isLLMProviderError } from './ILLMProvider';
13
+ export { ClaudeProvider, ClaudeProviderConfig } from './ClaudeProvider';
14
+ export { RuvllmProvider, RuvllmProviderConfig } from './RuvllmProvider';
15
+ export { LLMProviderFactory, LLMProviderFactoryConfig, ProviderType, ProviderSelectionCriteria, ProviderUsageStats, getGlobalLLMFactory, setGlobalLLMFactory } from './LLMProviderFactory';
16
+ import type { ILLMProvider } from './ILLMProvider';
17
+ /**
18
+ * Create a default LLM provider based on environment
19
+ *
20
+ * Uses Claude if ANTHROPIC_API_KEY is set, otherwise attempts ruvllm
21
+ */
22
+ export declare function createDefaultProvider(): Promise<ILLMProvider>;
23
+ /**
24
+ * Create a hybrid provider that routes between local and cloud
25
+ */
26
+ export declare function createHybridProvider(config?: {
27
+ preferLocal?: boolean;
28
+ claudeConfig?: any;
29
+ ruvllmConfig?: any;
30
+ }): Promise<ILLMProvider>;
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGxE,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,YAAY,EACZ,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD;;;;GAIG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,YAAY,CAAC,CAkBnE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,CAAC,EAAE;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB,GAAG,OAAO,CAAC,YAAY,CAAC,CAWxB"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ /**
3
+ * LLM Providers - Unified LLM Provider Layer
4
+ *
5
+ * This module provides a unified interface for multiple LLM providers:
6
+ * - ClaudeProvider: Anthropic Claude API
7
+ * - RuvllmProvider: Local LLM inference via ruvllm
8
+ * - LLMProviderFactory: Factory for provider creation and hybrid routing
9
+ *
10
+ * @module providers
11
+ * @version 1.0.0
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.setGlobalLLMFactory = exports.getGlobalLLMFactory = exports.LLMProviderFactory = exports.RuvllmProvider = exports.ClaudeProvider = exports.isLLMProviderError = exports.LLMProviderError = void 0;
15
+ exports.createDefaultProvider = createDefaultProvider;
16
+ exports.createHybridProvider = createHybridProvider;
17
+ // Core interface and types
18
+ var ILLMProvider_1 = require("./ILLMProvider");
19
+ Object.defineProperty(exports, "LLMProviderError", { enumerable: true, get: function () { return ILLMProvider_1.LLMProviderError; } });
20
+ Object.defineProperty(exports, "isLLMProviderError", { enumerable: true, get: function () { return ILLMProvider_1.isLLMProviderError; } });
21
+ // Provider implementations
22
+ var ClaudeProvider_1 = require("./ClaudeProvider");
23
+ Object.defineProperty(exports, "ClaudeProvider", { enumerable: true, get: function () { return ClaudeProvider_1.ClaudeProvider; } });
24
+ var RuvllmProvider_1 = require("./RuvllmProvider");
25
+ Object.defineProperty(exports, "RuvllmProvider", { enumerable: true, get: function () { return RuvllmProvider_1.RuvllmProvider; } });
26
+ // Factory and utilities
27
+ var LLMProviderFactory_1 = require("./LLMProviderFactory");
28
+ Object.defineProperty(exports, "LLMProviderFactory", { enumerable: true, get: function () { return LLMProviderFactory_1.LLMProviderFactory; } });
29
+ Object.defineProperty(exports, "getGlobalLLMFactory", { enumerable: true, get: function () { return LLMProviderFactory_1.getGlobalLLMFactory; } });
30
+ Object.defineProperty(exports, "setGlobalLLMFactory", { enumerable: true, get: function () { return LLMProviderFactory_1.setGlobalLLMFactory; } });
31
+ const ClaudeProvider_2 = require("./ClaudeProvider");
32
+ const RuvllmProvider_2 = require("./RuvllmProvider");
33
+ const LLMProviderFactory_2 = require("./LLMProviderFactory");
34
+ /**
35
+ * Create a default LLM provider based on environment
36
+ *
37
+ * Uses Claude if ANTHROPIC_API_KEY is set, otherwise attempts ruvllm
38
+ */
39
+ async function createDefaultProvider() {
40
+ // Try Claude first (most common use case)
41
+ if (process.env.ANTHROPIC_API_KEY) {
42
+ const provider = new ClaudeProvider_2.ClaudeProvider();
43
+ await provider.initialize();
44
+ return provider;
45
+ }
46
+ // Fall back to local ruvllm
47
+ const provider = new RuvllmProvider_2.RuvllmProvider();
48
+ try {
49
+ await provider.initialize();
50
+ return provider;
51
+ }
52
+ catch {
53
+ throw new Error('No LLM provider available. Set ANTHROPIC_API_KEY for Claude or ensure ruvllm is installed.');
54
+ }
55
+ }
56
+ /**
57
+ * Create a hybrid provider that routes between local and cloud
58
+ */
59
+ async function createHybridProvider(config) {
60
+ const factory = new LLMProviderFactory_2.LLMProviderFactory({
61
+ claude: config?.claudeConfig,
62
+ ruvllm: config?.ruvllmConfig,
63
+ defaultProvider: config?.preferLocal ? 'ruvllm' : 'claude',
64
+ enableFallback: true
65
+ });
66
+ await factory.initialize();
67
+ return factory.createHybridRouter();
68
+ }
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AA6CH,sDAkBC;AAKD,oDAeC;AAjFD,2BAA2B;AAC3B,+CAewB;AAFtB,gHAAA,gBAAgB,OAAA;AAChB,kHAAA,kBAAkB,OAAA;AAGpB,2BAA2B;AAC3B,mDAAwE;AAA/D,gHAAA,cAAc,OAAA;AACvB,mDAAwE;AAA/D,gHAAA,cAAc,OAAA;AAEvB,wBAAwB;AACxB,2DAQ8B;AAP5B,wHAAA,kBAAkB,OAAA;AAKlB,yHAAA,mBAAmB,OAAA;AACnB,yHAAA,mBAAmB,OAAA;AAIrB,qDAAkD;AAClD,qDAAkD;AAClD,6DAA0D;AAE1D;;;;GAIG;AACI,KAAK,UAAU,qBAAqB;IACzC,0CAA0C;IAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,+BAAc,EAAE,CAAC;QACtC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,IAAI,+BAAc,EAAE,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,oBAAoB,CAAC,MAI1C;IACC,MAAM,OAAO,GAAG,IAAI,uCAAkB,CAAC;QACrC,MAAM,EAAE,MAAM,EAAE,YAAY;QAC5B,MAAM,EAAE,MAAM,EAAE,YAAY;QAC5B,eAAe,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;QAC1D,cAAc,EAAE,IAAI;KACrB,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAE3B,OAAO,OAAO,CAAC,kBAAkB,EAAE,CAAC;AACtC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-qe",
3
- "version": "2.1.2",
3
+ "version": "2.2.0",
4
4
  "description": "Agentic Quality Engineering Fleet System - AI-driven quality management platform with 41 QE skills, learning, pattern reuse, ML-based flaky detection, Multi-Model Router (70-81% cost savings), streaming progress updates, 84 MCP tools with lazy loading (87% context reduction), and native TypeScript hooks",
5
5
  "main": "dist/cli/index.js",
6
6
  "types": "dist/cli/index.d.ts",