agentic-qe 2.1.1 → 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 (167) hide show
  1. package/CHANGELOG.md +213 -0
  2. package/README.md +37 -11
  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/MemoryManager.d.ts.map +1 -1
  7. package/dist/core/MemoryManager.js +4 -0
  8. package/dist/core/MemoryManager.js.map +1 -1
  9. package/dist/core/di/AgentDependencies.d.ts +127 -0
  10. package/dist/core/di/AgentDependencies.d.ts.map +1 -0
  11. package/dist/core/di/AgentDependencies.js +251 -0
  12. package/dist/core/di/AgentDependencies.js.map +1 -0
  13. package/dist/core/di/DIContainer.d.ts +149 -0
  14. package/dist/core/di/DIContainer.d.ts.map +1 -0
  15. package/dist/core/di/DIContainer.js +333 -0
  16. package/dist/core/di/DIContainer.js.map +1 -0
  17. package/dist/core/di/index.d.ts +11 -0
  18. package/dist/core/di/index.d.ts.map +1 -0
  19. package/dist/core/di/index.js +22 -0
  20. package/dist/core/di/index.js.map +1 -0
  21. package/dist/core/index.d.ts +1 -0
  22. package/dist/core/index.d.ts.map +1 -1
  23. package/dist/core/index.js +11 -1
  24. package/dist/core/index.js.map +1 -1
  25. package/dist/core/memory/RuVectorPatternStore.d.ts +5 -1
  26. package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
  27. package/dist/core/memory/RuVectorPatternStore.js +43 -1
  28. package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
  29. package/dist/learning/ExperienceSharingProtocol.d.ts +243 -0
  30. package/dist/learning/ExperienceSharingProtocol.d.ts.map +1 -0
  31. package/dist/learning/ExperienceSharingProtocol.js +538 -0
  32. package/dist/learning/ExperienceSharingProtocol.js.map +1 -0
  33. package/dist/learning/LearningEngine.d.ts +101 -1
  34. package/dist/learning/LearningEngine.d.ts.map +1 -1
  35. package/dist/learning/LearningEngine.js +330 -3
  36. package/dist/learning/LearningEngine.js.map +1 -1
  37. package/dist/learning/QLearning.d.ts +38 -125
  38. package/dist/learning/QLearning.d.ts.map +1 -1
  39. package/dist/learning/QLearning.js +46 -267
  40. package/dist/learning/QLearning.js.map +1 -1
  41. package/dist/learning/QLearningLegacy.d.ts +154 -0
  42. package/dist/learning/QLearningLegacy.d.ts.map +1 -0
  43. package/dist/learning/QLearningLegacy.js +337 -0
  44. package/dist/learning/QLearningLegacy.js.map +1 -0
  45. package/dist/learning/algorithms/AbstractRLLearner.d.ts +162 -0
  46. package/dist/learning/algorithms/AbstractRLLearner.d.ts.map +1 -0
  47. package/dist/learning/algorithms/AbstractRLLearner.js +300 -0
  48. package/dist/learning/algorithms/AbstractRLLearner.js.map +1 -0
  49. package/dist/learning/algorithms/ActorCriticLearner.d.ts +201 -0
  50. package/dist/learning/algorithms/ActorCriticLearner.d.ts.map +1 -0
  51. package/dist/learning/algorithms/ActorCriticLearner.js +447 -0
  52. package/dist/learning/algorithms/ActorCriticLearner.js.map +1 -0
  53. package/dist/learning/algorithms/PPOLearner.d.ts +207 -0
  54. package/dist/learning/algorithms/PPOLearner.d.ts.map +1 -0
  55. package/dist/learning/algorithms/PPOLearner.js +490 -0
  56. package/dist/learning/algorithms/PPOLearner.js.map +1 -0
  57. package/dist/learning/algorithms/QLearning.d.ts +68 -0
  58. package/dist/learning/algorithms/QLearning.d.ts.map +1 -0
  59. package/dist/learning/algorithms/QLearning.js +116 -0
  60. package/dist/learning/algorithms/QLearning.js.map +1 -0
  61. package/dist/learning/algorithms/SARSALearner.d.ts +107 -0
  62. package/dist/learning/algorithms/SARSALearner.d.ts.map +1 -0
  63. package/dist/learning/algorithms/SARSALearner.js +252 -0
  64. package/dist/learning/algorithms/SARSALearner.js.map +1 -0
  65. package/dist/learning/algorithms/index.d.ts +29 -0
  66. package/dist/learning/algorithms/index.d.ts.map +1 -0
  67. package/dist/learning/algorithms/index.js +44 -0
  68. package/dist/learning/algorithms/index.js.map +1 -0
  69. package/dist/learning/index.d.ts +3 -0
  70. package/dist/learning/index.d.ts.map +1 -1
  71. package/dist/learning/index.js +15 -1
  72. package/dist/learning/index.js.map +1 -1
  73. package/dist/learning/types.d.ts +2 -0
  74. package/dist/learning/types.d.ts.map +1 -1
  75. package/dist/mcp/handlers/advanced/index.d.ts +3 -2
  76. package/dist/mcp/handlers/advanced/index.d.ts.map +1 -1
  77. package/dist/mcp/handlers/advanced/index.js +4 -5
  78. package/dist/mcp/handlers/advanced/index.js.map +1 -1
  79. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.d.ts +1 -0
  80. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.d.ts.map +1 -1
  81. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.js +3 -0
  82. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.js.map +1 -1
  83. package/dist/mcp/handlers/analysis/coverageGapsDetect.d.ts +1 -0
  84. package/dist/mcp/handlers/analysis/coverageGapsDetect.d.ts.map +1 -1
  85. package/dist/mcp/handlers/analysis/coverageGapsDetect.js +3 -0
  86. package/dist/mcp/handlers/analysis/coverageGapsDetect.js.map +1 -1
  87. package/dist/mcp/handlers/analysis/index.d.ts +0 -2
  88. package/dist/mcp/handlers/analysis/index.d.ts.map +1 -1
  89. package/dist/mcp/handlers/analysis/index.js +2 -3
  90. package/dist/mcp/handlers/analysis/index.js.map +1 -1
  91. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.d.ts +1 -0
  92. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.d.ts.map +1 -1
  93. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.js +3 -0
  94. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.js.map +1 -1
  95. package/dist/mcp/handlers/prediction/flaky-test-detect.d.ts.map +1 -1
  96. package/dist/mcp/handlers/prediction/flaky-test-detect.js +2 -0
  97. package/dist/mcp/handlers/prediction/flaky-test-detect.js.map +1 -1
  98. package/dist/mcp/handlers/prediction/index.d.ts +0 -2
  99. package/dist/mcp/handlers/prediction/index.d.ts.map +1 -1
  100. package/dist/mcp/handlers/prediction/index.js +2 -3
  101. package/dist/mcp/handlers/prediction/index.js.map +1 -1
  102. package/dist/mcp/handlers/security/index.d.ts +0 -30
  103. package/dist/mcp/handlers/security/index.d.ts.map +1 -1
  104. package/dist/mcp/handlers/security/index.js +5 -31
  105. package/dist/mcp/handlers/security/index.js.map +1 -1
  106. package/dist/mcp/lazy-loader.d.ts +156 -0
  107. package/dist/mcp/lazy-loader.d.ts.map +1 -0
  108. package/dist/mcp/lazy-loader.js +327 -0
  109. package/dist/mcp/lazy-loader.js.map +1 -0
  110. package/dist/mcp/server-instructions.d.ts +18 -0
  111. package/dist/mcp/server-instructions.d.ts.map +1 -0
  112. package/dist/mcp/server-instructions.js +133 -0
  113. package/dist/mcp/server-instructions.js.map +1 -0
  114. package/dist/mcp/server.d.ts.map +1 -1
  115. package/dist/mcp/server.js +236 -49
  116. package/dist/mcp/server.js.map +1 -1
  117. package/dist/mcp/tool-categories.d.ts +105 -0
  118. package/dist/mcp/tool-categories.d.ts.map +1 -0
  119. package/dist/mcp/tool-categories.js +463 -0
  120. package/dist/mcp/tool-categories.js.map +1 -0
  121. package/dist/mcp/tools.d.ts +3 -19
  122. package/dist/mcp/tools.d.ts.map +1 -1
  123. package/dist/mcp/tools.js +260 -647
  124. package/dist/mcp/tools.js.map +1 -1
  125. package/dist/memory/DistributedPatternLibrary.d.ts +159 -0
  126. package/dist/memory/DistributedPatternLibrary.d.ts.map +1 -0
  127. package/dist/memory/DistributedPatternLibrary.js +370 -0
  128. package/dist/memory/DistributedPatternLibrary.js.map +1 -0
  129. package/dist/memory/PatternQualityScorer.d.ts +169 -0
  130. package/dist/memory/PatternQualityScorer.d.ts.map +1 -0
  131. package/dist/memory/PatternQualityScorer.js +327 -0
  132. package/dist/memory/PatternQualityScorer.js.map +1 -0
  133. package/dist/memory/PatternReplicationService.d.ts +187 -0
  134. package/dist/memory/PatternReplicationService.d.ts.map +1 -0
  135. package/dist/memory/PatternReplicationService.js +392 -0
  136. package/dist/memory/PatternReplicationService.js.map +1 -0
  137. package/dist/providers/ClaudeProvider.d.ts +98 -0
  138. package/dist/providers/ClaudeProvider.d.ts.map +1 -0
  139. package/dist/providers/ClaudeProvider.js +418 -0
  140. package/dist/providers/ClaudeProvider.js.map +1 -0
  141. package/dist/providers/ILLMProvider.d.ts +287 -0
  142. package/dist/providers/ILLMProvider.d.ts.map +1 -0
  143. package/dist/providers/ILLMProvider.js +33 -0
  144. package/dist/providers/ILLMProvider.js.map +1 -0
  145. package/dist/providers/LLMProviderFactory.d.ts +154 -0
  146. package/dist/providers/LLMProviderFactory.d.ts.map +1 -0
  147. package/dist/providers/LLMProviderFactory.js +426 -0
  148. package/dist/providers/LLMProviderFactory.js.map +1 -0
  149. package/dist/providers/RuvllmProvider.d.ts +107 -0
  150. package/dist/providers/RuvllmProvider.d.ts.map +1 -0
  151. package/dist/providers/RuvllmProvider.js +417 -0
  152. package/dist/providers/RuvllmProvider.js.map +1 -0
  153. package/dist/providers/index.d.ts +31 -0
  154. package/dist/providers/index.d.ts.map +1 -0
  155. package/dist/providers/index.js +69 -0
  156. package/dist/providers/index.js.map +1 -0
  157. package/dist/utils/IntervalRegistry.d.ts +110 -0
  158. package/dist/utils/IntervalRegistry.d.ts.map +1 -0
  159. package/dist/utils/IntervalRegistry.js +190 -0
  160. package/dist/utils/IntervalRegistry.js.map +1 -0
  161. package/dist/utils/index.d.ts +1 -0
  162. package/dist/utils/index.d.ts.map +1 -1
  163. package/dist/utils/index.js +5 -1
  164. package/dist/utils/index.js.map +1 -1
  165. package/docs/reference/agents.md +33 -0
  166. package/docs/reference/usage.md +60 -0
  167. package/package.json +2 -2
@@ -0,0 +1,426 @@
1
+ "use strict";
2
+ /**
3
+ * LLMProviderFactory - Factory for creating and managing LLM providers
4
+ *
5
+ * Provides centralized creation and routing of LLM providers with support for:
6
+ * - Provider registration and discovery
7
+ * - Automatic provider selection based on capabilities/cost
8
+ * - Hybrid routing between local and cloud providers
9
+ * - Fallback chains for reliability
10
+ * - Health-based routing
11
+ *
12
+ * @module providers/LLMProviderFactory
13
+ * @version 1.0.0
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.LLMProviderFactory = void 0;
17
+ exports.getGlobalLLMFactory = getGlobalLLMFactory;
18
+ exports.setGlobalLLMFactory = setGlobalLLMFactory;
19
+ const ClaudeProvider_1 = require("./ClaudeProvider");
20
+ const RuvllmProvider_1 = require("./RuvllmProvider");
21
+ const Logger_1 = require("../utils/Logger");
22
+ /**
23
+ * LLMProviderFactory - Central factory for LLM provider management
24
+ *
25
+ * This factory provides:
26
+ * - Unified provider creation and initialization
27
+ * - Intelligent provider selection based on criteria
28
+ * - Automatic health monitoring and fallback
29
+ * - Cost and usage tracking
30
+ * - Hybrid local/cloud routing
31
+ */
32
+ class LLMProviderFactory {
33
+ constructor(config = {}) {
34
+ this.logger = Logger_1.Logger.getInstance();
35
+ this.config = {
36
+ defaultProvider: config.defaultProvider || 'claude',
37
+ enableFallback: config.enableFallback ?? true,
38
+ healthCheckInterval: config.healthCheckInterval ?? 60000, // 1 minute
39
+ maxConsecutiveFailures: config.maxConsecutiveFailures ?? 3,
40
+ ...config
41
+ };
42
+ this.providers = new Map();
43
+ this.usageStats = new Map();
44
+ this.isInitialized = false;
45
+ }
46
+ /**
47
+ * Initialize the factory and all configured providers
48
+ */
49
+ async initialize() {
50
+ if (this.isInitialized) {
51
+ this.logger.warn('LLMProviderFactory already initialized');
52
+ return;
53
+ }
54
+ const initPromises = [];
55
+ // Initialize Claude provider if configured
56
+ if (this.config.claude || process.env.ANTHROPIC_API_KEY) {
57
+ initPromises.push(this.initializeProvider('claude', this.config.claude));
58
+ }
59
+ // Initialize ruvllm provider if configured
60
+ if (this.config.ruvllm) {
61
+ initPromises.push(this.initializeProvider('ruvllm', this.config.ruvllm));
62
+ }
63
+ await Promise.allSettled(initPromises);
64
+ // Start health monitoring
65
+ this.startHealthMonitoring();
66
+ this.isInitialized = true;
67
+ this.logger.info('LLMProviderFactory initialized', {
68
+ providers: Array.from(this.providers.keys())
69
+ });
70
+ }
71
+ /**
72
+ * Get a provider by type
73
+ */
74
+ getProvider(type) {
75
+ if (type === 'auto') {
76
+ return this.selectBestProvider();
77
+ }
78
+ const state = this.providers.get(type);
79
+ return state?.isAvailable ? state.provider : undefined;
80
+ }
81
+ /**
82
+ * Select best provider based on criteria
83
+ */
84
+ selectBestProvider(criteria) {
85
+ const candidates = [];
86
+ for (const state of this.providers.values()) {
87
+ if (!state.isAvailable)
88
+ continue;
89
+ // Check required capabilities
90
+ if (criteria?.requiredCapabilities) {
91
+ const hasAllCapabilities = criteria.requiredCapabilities.every(cap => state.metadata.capabilities[cap]);
92
+ if (!hasAllCapabilities)
93
+ continue;
94
+ }
95
+ // Check cost limit
96
+ if (criteria?.maxCostPerMillion !== undefined) {
97
+ if (state.metadata.costs.inputPerMillion > criteria.maxCostPerMillion)
98
+ continue;
99
+ }
100
+ // Check required models
101
+ if (criteria?.requiredModels) {
102
+ const hasAllModels = criteria.requiredModels.every(model => state.metadata.models.includes(model));
103
+ if (!hasAllModels)
104
+ continue;
105
+ }
106
+ candidates.push(state);
107
+ }
108
+ if (candidates.length === 0) {
109
+ return undefined;
110
+ }
111
+ // Sort by preference
112
+ candidates.sort((a, b) => {
113
+ // Prefer local if requested
114
+ if (criteria?.preferLocal) {
115
+ if (a.metadata.location === 'local' && b.metadata.location !== 'local')
116
+ return -1;
117
+ if (b.metadata.location === 'local' && a.metadata.location !== 'local')
118
+ return 1;
119
+ }
120
+ // Prefer low cost if requested
121
+ if (criteria?.preferLowCost) {
122
+ const costA = a.metadata.costs.inputPerMillion + a.metadata.costs.outputPerMillion;
123
+ const costB = b.metadata.costs.inputPerMillion + b.metadata.costs.outputPerMillion;
124
+ return costA - costB;
125
+ }
126
+ // Default: prefer by health (lower latency)
127
+ const latencyA = a.lastHealthCheck.latency || Infinity;
128
+ const latencyB = b.lastHealthCheck.latency || Infinity;
129
+ return latencyA - latencyB;
130
+ });
131
+ return candidates[0].provider;
132
+ }
133
+ /**
134
+ * Execute with automatic fallback
135
+ */
136
+ async executeWithFallback(operation, preferredProvider) {
137
+ const providerOrder = this.getProviderOrder(preferredProvider);
138
+ let lastError;
139
+ for (const type of providerOrder) {
140
+ const state = this.providers.get(type);
141
+ if (!state?.isAvailable)
142
+ continue;
143
+ try {
144
+ const result = await operation(state.provider);
145
+ // Update success stats
146
+ this.updateUsageStats(type, true);
147
+ return result;
148
+ }
149
+ catch (error) {
150
+ lastError = error;
151
+ this.logger.warn(`Provider ${type} failed`, { error: lastError.message });
152
+ // Update failure stats
153
+ this.updateUsageStats(type, false);
154
+ state.consecutiveFailures++;
155
+ if (state.consecutiveFailures >= this.config.maxConsecutiveFailures) {
156
+ state.isAvailable = false;
157
+ this.logger.error(`Provider ${type} marked unavailable after consecutive failures`);
158
+ }
159
+ // Continue to next provider if fallback enabled
160
+ if (!this.config.enableFallback) {
161
+ throw lastError;
162
+ }
163
+ }
164
+ }
165
+ throw lastError || new Error('No available providers');
166
+ }
167
+ /**
168
+ * Get all available provider types
169
+ */
170
+ getAvailableProviders() {
171
+ const available = [];
172
+ for (const [type, state] of this.providers.entries()) {
173
+ if (state.isAvailable) {
174
+ available.push(type);
175
+ }
176
+ }
177
+ return available;
178
+ }
179
+ /**
180
+ * Get provider metadata
181
+ */
182
+ getProviderMetadata(type) {
183
+ return this.providers.get(type)?.metadata;
184
+ }
185
+ /**
186
+ * Get usage statistics
187
+ */
188
+ getUsageStats(type) {
189
+ if (type) {
190
+ return this.usageStats.get(type);
191
+ }
192
+ return new Map(this.usageStats);
193
+ }
194
+ /**
195
+ * Get combined usage cost
196
+ */
197
+ getTotalCost() {
198
+ let total = 0;
199
+ for (const stats of this.usageStats.values()) {
200
+ total += stats.totalCost;
201
+ }
202
+ return total;
203
+ }
204
+ /**
205
+ * Shutdown all providers
206
+ */
207
+ async shutdown() {
208
+ if (this.healthCheckTimer) {
209
+ clearInterval(this.healthCheckTimer);
210
+ this.healthCheckTimer = undefined;
211
+ }
212
+ const shutdownPromises = [];
213
+ for (const [type, state] of this.providers.entries()) {
214
+ shutdownPromises.push(state.provider.shutdown()
215
+ .catch(error => this.logger.warn(`Error shutting down ${type}`, { error })));
216
+ }
217
+ await Promise.allSettled(shutdownPromises);
218
+ this.providers.clear();
219
+ this.isInitialized = false;
220
+ this.logger.info('LLMProviderFactory shutdown');
221
+ }
222
+ /**
223
+ * Register a custom provider
224
+ */
225
+ async registerProvider(type, provider) {
226
+ await provider.initialize();
227
+ const metadata = provider.getMetadata();
228
+ const healthStatus = await provider.healthCheck();
229
+ this.providers.set(type, {
230
+ provider,
231
+ metadata,
232
+ lastHealthCheck: healthStatus,
233
+ consecutiveFailures: 0,
234
+ isAvailable: healthStatus.healthy
235
+ });
236
+ this.usageStats.set(type, {
237
+ requestCount: 0,
238
+ successCount: 0,
239
+ failureCount: 0,
240
+ totalCost: 0,
241
+ averageLatency: 0
242
+ });
243
+ this.logger.info(`Provider ${type} registered`, { healthy: healthStatus.healthy });
244
+ }
245
+ /**
246
+ * Initialize a specific provider
247
+ */
248
+ async initializeProvider(type, config) {
249
+ try {
250
+ let provider;
251
+ switch (type) {
252
+ case 'claude':
253
+ provider = new ClaudeProvider_1.ClaudeProvider(config);
254
+ break;
255
+ case 'ruvllm':
256
+ provider = new RuvllmProvider_1.RuvllmProvider(config);
257
+ break;
258
+ default:
259
+ throw new Error(`Unknown provider type: ${type}`);
260
+ }
261
+ await this.registerProvider(type, provider);
262
+ }
263
+ catch (error) {
264
+ this.logger.warn(`Failed to initialize provider ${type}`, {
265
+ error: error.message
266
+ });
267
+ }
268
+ }
269
+ /**
270
+ * Start health monitoring
271
+ */
272
+ startHealthMonitoring() {
273
+ this.healthCheckTimer = setInterval(async () => {
274
+ await this.performHealthChecks();
275
+ }, this.config.healthCheckInterval);
276
+ }
277
+ /**
278
+ * Perform health checks on all providers
279
+ */
280
+ async performHealthChecks() {
281
+ for (const [type, state] of this.providers.entries()) {
282
+ try {
283
+ const healthStatus = await state.provider.healthCheck();
284
+ state.lastHealthCheck = healthStatus;
285
+ if (healthStatus.healthy) {
286
+ state.consecutiveFailures = 0;
287
+ state.isAvailable = true;
288
+ }
289
+ else {
290
+ state.consecutiveFailures++;
291
+ if (state.consecutiveFailures >= this.config.maxConsecutiveFailures) {
292
+ state.isAvailable = false;
293
+ }
294
+ }
295
+ }
296
+ catch (error) {
297
+ state.consecutiveFailures++;
298
+ if (state.consecutiveFailures >= this.config.maxConsecutiveFailures) {
299
+ state.isAvailable = false;
300
+ }
301
+ }
302
+ }
303
+ }
304
+ /**
305
+ * Get provider order for fallback
306
+ */
307
+ getProviderOrder(preferred) {
308
+ const order = [];
309
+ // Add preferred first
310
+ if (preferred && preferred !== 'auto' && this.providers.has(preferred)) {
311
+ order.push(preferred);
312
+ }
313
+ // Add default if different
314
+ const defaultType = this.config.defaultProvider;
315
+ if (defaultType && defaultType !== 'auto' && defaultType !== preferred && this.providers.has(defaultType)) {
316
+ order.push(defaultType);
317
+ }
318
+ // Add remaining providers
319
+ for (const type of this.providers.keys()) {
320
+ if (!order.includes(type)) {
321
+ order.push(type);
322
+ }
323
+ }
324
+ return order;
325
+ }
326
+ /**
327
+ * Update usage statistics
328
+ */
329
+ updateUsageStats(type, success) {
330
+ const stats = this.usageStats.get(type);
331
+ if (!stats)
332
+ return;
333
+ stats.requestCount++;
334
+ if (success) {
335
+ stats.successCount++;
336
+ }
337
+ else {
338
+ stats.failureCount++;
339
+ }
340
+ }
341
+ /**
342
+ * Create a hybrid router that automatically selects the best provider
343
+ */
344
+ createHybridRouter() {
345
+ const factory = this;
346
+ return {
347
+ async initialize() {
348
+ await factory.initialize();
349
+ },
350
+ async complete(options) {
351
+ return factory.executeWithFallback(provider => provider.complete(options));
352
+ },
353
+ async *streamComplete(options) {
354
+ const provider = factory.selectBestProvider();
355
+ if (!provider)
356
+ throw new Error('No available providers');
357
+ yield* provider.streamComplete(options);
358
+ },
359
+ async embed(options) {
360
+ return factory.executeWithFallback(provider => provider.embed(options), 'ruvllm' // Prefer local for embeddings
361
+ );
362
+ },
363
+ async countTokens(options) {
364
+ const provider = factory.selectBestProvider();
365
+ if (!provider)
366
+ throw new Error('No available providers');
367
+ return provider.countTokens(options);
368
+ },
369
+ async healthCheck() {
370
+ const providers = factory.getAvailableProviders();
371
+ return {
372
+ healthy: providers.length > 0,
373
+ timestamp: new Date(),
374
+ metadata: { availableProviders: providers }
375
+ };
376
+ },
377
+ getMetadata() {
378
+ // Return aggregated metadata
379
+ const allMeta = Array.from(factory.providers.values()).map(s => s.metadata);
380
+ return {
381
+ name: 'hybrid',
382
+ version: '1.0.0',
383
+ models: [...new Set(allMeta.flatMap(m => m.models))],
384
+ capabilities: {
385
+ streaming: allMeta.some(m => m.capabilities.streaming),
386
+ caching: allMeta.some(m => m.capabilities.caching),
387
+ embeddings: allMeta.some(m => m.capabilities.embeddings),
388
+ vision: allMeta.some(m => m.capabilities.vision)
389
+ },
390
+ costs: {
391
+ inputPerMillion: Math.min(...allMeta.map(m => m.costs.inputPerMillion)),
392
+ outputPerMillion: Math.min(...allMeta.map(m => m.costs.outputPerMillion))
393
+ },
394
+ location: 'cloud'
395
+ };
396
+ },
397
+ async shutdown() {
398
+ await factory.shutdown();
399
+ },
400
+ trackCost(usage) {
401
+ return 0; // Factory tracks this internally
402
+ }
403
+ };
404
+ }
405
+ }
406
+ exports.LLMProviderFactory = LLMProviderFactory;
407
+ /**
408
+ * Singleton instance for global access
409
+ */
410
+ let globalFactory;
411
+ /**
412
+ * Get the global LLM provider factory instance
413
+ */
414
+ function getGlobalLLMFactory() {
415
+ if (!globalFactory) {
416
+ globalFactory = new LLMProviderFactory();
417
+ }
418
+ return globalFactory;
419
+ }
420
+ /**
421
+ * Set the global LLM provider factory instance
422
+ */
423
+ function setGlobalLLMFactory(factory) {
424
+ globalFactory = factory;
425
+ }
426
+ //# sourceMappingURL=LLMProviderFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LLMProviderFactory.js","sourceRoot":"","sources":["../../src/providers/LLMProviderFactory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * RuvllmProvider - Local LLM Inference via ruvllm
3
+ *
4
+ * Provides local LLM inference for cost-effective operations on capable hardware.
5
+ * Uses ruvllm for fast local inference with support for various open models.
6
+ *
7
+ * Features:
8
+ * - Zero cloud costs for local inference
9
+ * - Low latency for local operations
10
+ * - Privacy-preserving (no data leaves the machine)
11
+ * - Streaming support
12
+ * - Model hot-swapping
13
+ *
14
+ * @module providers/RuvllmProvider
15
+ * @version 1.0.0
16
+ */
17
+ import { ILLMProvider, LLMProviderConfig, LLMCompletionOptions, LLMCompletionResponse, LLMStreamEvent, LLMEmbeddingOptions, LLMEmbeddingResponse, LLMTokenCountOptions, LLMHealthStatus, LLMProviderMetadata } from './ILLMProvider';
18
+ /**
19
+ * Ruvllm-specific configuration
20
+ */
21
+ export interface RuvllmProviderConfig extends LLMProviderConfig {
22
+ /** Path to ruvllm executable or 'npx' for npm usage */
23
+ ruvllmPath?: string;
24
+ /** Port for local server */
25
+ port?: number;
26
+ /** Default model name/path */
27
+ defaultModel?: string;
28
+ /** GPU layers to offload (-1 for all) */
29
+ gpuLayers?: number;
30
+ /** Context window size */
31
+ contextSize?: number;
32
+ /** Number of threads */
33
+ threads?: number;
34
+ /** Model temperature */
35
+ defaultTemperature?: number;
36
+ /** Enable embeddings model */
37
+ enableEmbeddings?: boolean;
38
+ }
39
+ /**
40
+ * RuvllmProvider - Local LLM inference implementation of ILLMProvider
41
+ *
42
+ * This provider enables local LLM inference using ruvllm, providing
43
+ * cost-free, low-latency inference for development and privacy-sensitive tasks.
44
+ */
45
+ export declare class RuvllmProvider implements ILLMProvider {
46
+ private readonly logger;
47
+ private config;
48
+ private isInitialized;
49
+ private serverProcess?;
50
+ private baseUrl;
51
+ private loadedModel?;
52
+ private requestCount;
53
+ constructor(config?: RuvllmProviderConfig);
54
+ /**
55
+ * Initialize the ruvllm provider
56
+ */
57
+ initialize(): Promise<void>;
58
+ /**
59
+ * Complete a prompt using local inference
60
+ */
61
+ complete(options: LLMCompletionOptions): Promise<LLMCompletionResponse>;
62
+ /**
63
+ * Stream a completion
64
+ */
65
+ streamComplete(options: LLMCompletionOptions): AsyncIterableIterator<LLMStreamEvent>;
66
+ /**
67
+ * Generate embeddings
68
+ */
69
+ embed(options: LLMEmbeddingOptions): Promise<LLMEmbeddingResponse>;
70
+ /**
71
+ * Count tokens in text
72
+ */
73
+ countTokens(options: LLMTokenCountOptions): Promise<number>;
74
+ /**
75
+ * Health check
76
+ */
77
+ healthCheck(): Promise<LLMHealthStatus>;
78
+ /**
79
+ * Get provider metadata
80
+ */
81
+ getMetadata(): LLMProviderMetadata;
82
+ /**
83
+ * Shutdown the provider
84
+ */
85
+ shutdown(): Promise<void>;
86
+ /**
87
+ * Track cost (always 0 for local inference)
88
+ */
89
+ trackCost(usage: LLMCompletionResponse['usage']): number;
90
+ /**
91
+ * Start the ruvllm server
92
+ */
93
+ private startServer;
94
+ /**
95
+ * Check if server is healthy
96
+ */
97
+ private checkServerHealth;
98
+ /**
99
+ * Ensure provider is initialized
100
+ */
101
+ private ensureInitialized;
102
+ /**
103
+ * Map finish reason to standard stop reason
104
+ */
105
+ private mapStopReason;
106
+ }
107
+ //# sourceMappingURL=RuvllmProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuvllmProvider.d.ts","sourceRoot":"","sources":["../../src/providers/RuvllmProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;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,oBAAqB,SAAQ,iBAAiB;IAC7D,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAaD;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAC,CAAiB;IACrC,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,GAAE,oBAAyB;IAqB7C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCjC;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAgF7E;;OAEG;IACI,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,qBAAqB,CAAC,cAAc,CAAC;IAyF3F;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA6CxE;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAMjE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IA0B7C;;OAEG;IACH,WAAW,IAAI,mBAAmB;IA0BlC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,MAAM;IAIxD;;OAEG;YACW,WAAW;IA+CzB;;OAEG;YACW,iBAAiB;IAW/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,aAAa;CAUtB"}