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,287 @@
1
+ /**
2
+ * LLM Provider Abstraction Layer
3
+ *
4
+ * Unified interface for multiple LLM providers (Claude API, local ruvllm, etc.)
5
+ * Enables hybrid routing between local and cloud inference.
6
+ *
7
+ * @module providers/ILLMProvider
8
+ */
9
+ /**
10
+ * Message parameter for LLM requests
11
+ */
12
+ export interface LLMMessageParam {
13
+ role: 'user' | 'assistant' | 'system';
14
+ content: string | Array<{
15
+ type: 'text' | 'image';
16
+ text?: string;
17
+ source?: {
18
+ type: 'base64';
19
+ media_type: string;
20
+ data: string;
21
+ };
22
+ }>;
23
+ }
24
+ /**
25
+ * Text block parameter for system prompts
26
+ */
27
+ export interface LLMTextBlockParam {
28
+ type: 'text';
29
+ text: string;
30
+ cache_control?: {
31
+ type: 'ephemeral';
32
+ };
33
+ }
34
+ /**
35
+ * Options for LLM completion requests
36
+ */
37
+ export interface LLMCompletionOptions {
38
+ /** Model identifier (e.g., 'claude-sonnet-4', 'ruvllm-7b') */
39
+ model: string;
40
+ /** System prompts (supports caching with cache_control) */
41
+ system?: LLMTextBlockParam[];
42
+ /** Conversation messages */
43
+ messages: LLMMessageParam[];
44
+ /** Maximum tokens to generate */
45
+ maxTokens?: number;
46
+ /** Temperature for sampling (0.0-1.0) */
47
+ temperature?: number;
48
+ /** Enable streaming responses */
49
+ stream?: boolean;
50
+ /** Additional provider-specific options */
51
+ metadata?: Record<string, any>;
52
+ }
53
+ /**
54
+ * Response from LLM completion
55
+ */
56
+ export interface LLMCompletionResponse {
57
+ /** Response content */
58
+ content: Array<{
59
+ type: 'text';
60
+ text: string;
61
+ }>;
62
+ /** Token usage statistics */
63
+ usage: {
64
+ input_tokens: number;
65
+ output_tokens: number;
66
+ cache_creation_input_tokens?: number;
67
+ cache_read_input_tokens?: number;
68
+ };
69
+ /** Model used for completion */
70
+ model: string;
71
+ /** Stop reason */
72
+ stop_reason: 'end_turn' | 'max_tokens' | 'stop_sequence';
73
+ /** Unique request ID */
74
+ id: string;
75
+ /** Response metadata */
76
+ metadata?: Record<string, any>;
77
+ }
78
+ /**
79
+ * Stream event from LLM
80
+ */
81
+ export interface LLMStreamEvent {
82
+ type: 'content_block_start' | 'content_block_delta' | 'content_block_stop' | 'message_start' | 'message_delta' | 'message_stop';
83
+ delta?: {
84
+ type: 'text_delta';
85
+ text: string;
86
+ };
87
+ content_block?: {
88
+ type: 'text';
89
+ text: string;
90
+ };
91
+ message?: Partial<LLMCompletionResponse>;
92
+ }
93
+ /**
94
+ * Options for embedding generation
95
+ */
96
+ export interface LLMEmbeddingOptions {
97
+ /** Text to embed */
98
+ text: string;
99
+ /** Model for embedding (optional, provider may have default) */
100
+ model?: string;
101
+ /** Dimensions for embedding (optional) */
102
+ dimensions?: number;
103
+ }
104
+ /**
105
+ * Response from embedding generation
106
+ */
107
+ export interface LLMEmbeddingResponse {
108
+ /** Embedding vector */
109
+ embedding: number[];
110
+ /** Model used */
111
+ model: string;
112
+ /** Token count */
113
+ tokens: number;
114
+ }
115
+ /**
116
+ * Provider health status
117
+ */
118
+ export interface LLMHealthStatus {
119
+ /** Provider is healthy and ready */
120
+ healthy: boolean;
121
+ /** Latency in milliseconds */
122
+ latency?: number;
123
+ /** Error message if unhealthy */
124
+ error?: string;
125
+ /** Last check timestamp */
126
+ timestamp: Date;
127
+ /** Additional metadata */
128
+ metadata?: Record<string, any>;
129
+ }
130
+ /**
131
+ * Provider capabilities and metadata
132
+ */
133
+ export interface LLMProviderMetadata {
134
+ /** Provider name (e.g., 'claude', 'ruvllm') */
135
+ name: string;
136
+ /** Provider version */
137
+ version: string;
138
+ /** Supported models */
139
+ models: string[];
140
+ /** Capabilities */
141
+ capabilities: {
142
+ /** Supports streaming */
143
+ streaming: boolean;
144
+ /** Supports prompt caching */
145
+ caching: boolean;
146
+ /** Supports embeddings */
147
+ embeddings: boolean;
148
+ /** Supports vision/multimodal */
149
+ vision: boolean;
150
+ };
151
+ /** Cost per million tokens (input/output) */
152
+ costs: {
153
+ inputPerMillion: number;
154
+ outputPerMillion: number;
155
+ cacheWriteMultiplier?: number;
156
+ cacheReadMultiplier?: number;
157
+ };
158
+ /** Local or cloud provider */
159
+ location: 'local' | 'cloud';
160
+ }
161
+ /**
162
+ * Token counting options
163
+ */
164
+ export interface LLMTokenCountOptions {
165
+ /** Text to count tokens for */
166
+ text: string;
167
+ /** Model to use for counting (may affect tokenization) */
168
+ model?: string;
169
+ }
170
+ /**
171
+ * ILLMProvider - Unified interface for LLM providers
172
+ *
173
+ * Abstracts differences between providers (Claude API, ruvllm, etc.)
174
+ * to enable hybrid routing and provider switching at runtime.
175
+ *
176
+ * @example
177
+ * ```typescript
178
+ * const provider = new ClaudeProvider({ apiKey: 'sk-...' });
179
+ * await provider.initialize();
180
+ *
181
+ * const response = await provider.complete({
182
+ * model: 'claude-sonnet-4',
183
+ * messages: [{ role: 'user', content: 'Hello!' }],
184
+ * maxTokens: 1024
185
+ * });
186
+ * ```
187
+ */
188
+ export interface ILLMProvider {
189
+ /**
190
+ * Initialize the provider
191
+ *
192
+ * Sets up connections, validates credentials, loads models, etc.
193
+ *
194
+ * @throws {Error} If initialization fails
195
+ */
196
+ initialize(): Promise<void>;
197
+ /**
198
+ * Complete a prompt with the LLM
199
+ *
200
+ * @param options - Completion options
201
+ * @returns Completion response
202
+ * @throws {Error} If request fails
203
+ */
204
+ complete(options: LLMCompletionOptions): Promise<LLMCompletionResponse>;
205
+ /**
206
+ * Complete a prompt with streaming
207
+ *
208
+ * @param options - Completion options (stream enabled)
209
+ * @returns Async iterator of stream events
210
+ * @throws {Error} If request fails
211
+ */
212
+ streamComplete(options: LLMCompletionOptions): AsyncIterableIterator<LLMStreamEvent>;
213
+ /**
214
+ * Generate embeddings for text
215
+ *
216
+ * @param options - Embedding options
217
+ * @returns Embedding response
218
+ * @throws {Error} If embeddings not supported or request fails
219
+ */
220
+ embed(options: LLMEmbeddingOptions): Promise<LLMEmbeddingResponse>;
221
+ /**
222
+ * Count tokens in text
223
+ *
224
+ * @param options - Token counting options
225
+ * @returns Token count
226
+ */
227
+ countTokens(options: LLMTokenCountOptions): Promise<number>;
228
+ /**
229
+ * Health check
230
+ *
231
+ * Verifies provider is operational and responsive.
232
+ *
233
+ * @returns Health status
234
+ */
235
+ healthCheck(): Promise<LLMHealthStatus>;
236
+ /**
237
+ * Get provider metadata
238
+ *
239
+ * Returns information about the provider's capabilities, costs, and models.
240
+ *
241
+ * @returns Provider metadata
242
+ */
243
+ getMetadata(): LLMProviderMetadata;
244
+ /**
245
+ * Gracefully shutdown the provider
246
+ *
247
+ * Closes connections, releases resources, etc.
248
+ */
249
+ shutdown(): Promise<void>;
250
+ /**
251
+ * Track cost for a request
252
+ *
253
+ * Internal method to track token usage and calculate costs.
254
+ *
255
+ * @param usage - Token usage from response
256
+ * @returns Cost in dollars
257
+ */
258
+ trackCost(usage: LLMCompletionResponse['usage']): number;
259
+ }
260
+ /**
261
+ * Provider configuration base
262
+ */
263
+ export interface LLMProviderConfig {
264
+ /** Provider name for logging/identification */
265
+ name?: string;
266
+ /** Enable debug logging */
267
+ debug?: boolean;
268
+ /** Request timeout in milliseconds */
269
+ timeout?: number;
270
+ /** Maximum retries on failure */
271
+ maxRetries?: number;
272
+ }
273
+ /**
274
+ * Error thrown by LLM providers
275
+ */
276
+ export declare class LLMProviderError extends Error {
277
+ readonly provider: string;
278
+ readonly code: string;
279
+ readonly retryable: boolean;
280
+ readonly cause?: Error | undefined;
281
+ constructor(message: string, provider: string, code: string, retryable?: boolean, cause?: Error | undefined);
282
+ }
283
+ /**
284
+ * Type guard for checking if error is LLMProviderError
285
+ */
286
+ export declare function isLLMProviderError(error: unknown): error is LLMProviderError;
287
+ //# sourceMappingURL=ILLMProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ILLMProvider.d.ts","sourceRoot":"","sources":["../../src/providers/ILLMProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ /**
3
+ * LLM Provider Abstraction Layer
4
+ *
5
+ * Unified interface for multiple LLM providers (Claude API, local ruvllm, etc.)
6
+ * Enables hybrid routing between local and cloud inference.
7
+ *
8
+ * @module providers/ILLMProvider
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.LLMProviderError = void 0;
12
+ exports.isLLMProviderError = isLLMProviderError;
13
+ /**
14
+ * Error thrown by LLM providers
15
+ */
16
+ class LLMProviderError extends Error {
17
+ constructor(message, provider, code, retryable = false, cause) {
18
+ super(message);
19
+ this.provider = provider;
20
+ this.code = code;
21
+ this.retryable = retryable;
22
+ this.cause = cause;
23
+ this.name = 'LLMProviderError';
24
+ }
25
+ }
26
+ exports.LLMProviderError = LLMProviderError;
27
+ /**
28
+ * Type guard for checking if error is LLMProviderError
29
+ */
30
+ function isLLMProviderError(error) {
31
+ return error instanceof LLMProviderError;
32
+ }
33
+ //# sourceMappingURL=ILLMProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ILLMProvider.js","sourceRoot":"","sources":["../../src/providers/ILLMProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA8SH,gDAEC;AArBD;;GAEG;AACH,MAAa,gBAAiB,SAAQ,KAAK;IACzC,YACE,OAAe,EACC,QAAgB,EAChB,IAAY,EACZ,YAAqB,KAAK,EAC1B,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,SAAI,GAAJ,IAAI,CAAQ;QACZ,cAAS,GAAT,SAAS,CAAiB;QAC1B,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAXD,4CAWC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,KAAc;IAC/C,OAAO,KAAK,YAAY,gBAAgB,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * LLMProviderFactory - Factory for creating and managing LLM providers
3
+ *
4
+ * Provides centralized creation and routing of LLM providers with support for:
5
+ * - Provider registration and discovery
6
+ * - Automatic provider selection based on capabilities/cost
7
+ * - Hybrid routing between local and cloud providers
8
+ * - Fallback chains for reliability
9
+ * - Health-based routing
10
+ *
11
+ * @module providers/LLMProviderFactory
12
+ * @version 1.0.0
13
+ */
14
+ import { ILLMProvider, LLMProviderMetadata } from './ILLMProvider';
15
+ import { ClaudeProviderConfig } from './ClaudeProvider';
16
+ import { RuvllmProviderConfig } from './RuvllmProvider';
17
+ /**
18
+ * Provider type enumeration
19
+ */
20
+ export type ProviderType = 'claude' | 'ruvllm' | 'auto';
21
+ /**
22
+ * Provider selection criteria
23
+ */
24
+ export interface ProviderSelectionCriteria {
25
+ /** Prefer local providers */
26
+ preferLocal?: boolean;
27
+ /** Prefer low-cost providers */
28
+ preferLowCost?: boolean;
29
+ /** Required capabilities */
30
+ requiredCapabilities?: Array<keyof LLMProviderMetadata['capabilities']>;
31
+ /** Maximum cost per million tokens */
32
+ maxCostPerMillion?: number;
33
+ /** Required models */
34
+ requiredModels?: string[];
35
+ }
36
+ /**
37
+ * Factory configuration
38
+ */
39
+ export interface LLMProviderFactoryConfig {
40
+ /** Claude provider configuration */
41
+ claude?: ClaudeProviderConfig;
42
+ /** Ruvllm provider configuration */
43
+ ruvllm?: RuvllmProviderConfig;
44
+ /** Default provider to use */
45
+ defaultProvider?: ProviderType;
46
+ /** Enable automatic fallback */
47
+ enableFallback?: boolean;
48
+ /** Health check interval in milliseconds */
49
+ healthCheckInterval?: number;
50
+ /** Maximum consecutive failures before marking unhealthy */
51
+ maxConsecutiveFailures?: number;
52
+ }
53
+ /**
54
+ * Provider usage statistics
55
+ */
56
+ export interface ProviderUsageStats {
57
+ requestCount: number;
58
+ successCount: number;
59
+ failureCount: number;
60
+ totalCost: number;
61
+ averageLatency: number;
62
+ }
63
+ /**
64
+ * LLMProviderFactory - Central factory for LLM provider management
65
+ *
66
+ * This factory provides:
67
+ * - Unified provider creation and initialization
68
+ * - Intelligent provider selection based on criteria
69
+ * - Automatic health monitoring and fallback
70
+ * - Cost and usage tracking
71
+ * - Hybrid local/cloud routing
72
+ */
73
+ export declare class LLMProviderFactory {
74
+ private readonly logger;
75
+ private config;
76
+ private providers;
77
+ private usageStats;
78
+ private healthCheckTimer?;
79
+ private isInitialized;
80
+ constructor(config?: LLMProviderFactoryConfig);
81
+ /**
82
+ * Initialize the factory and all configured providers
83
+ */
84
+ initialize(): Promise<void>;
85
+ /**
86
+ * Get a provider by type
87
+ */
88
+ getProvider(type: ProviderType): ILLMProvider | undefined;
89
+ /**
90
+ * Select best provider based on criteria
91
+ */
92
+ selectBestProvider(criteria?: ProviderSelectionCriteria): ILLMProvider | undefined;
93
+ /**
94
+ * Execute with automatic fallback
95
+ */
96
+ executeWithFallback<T>(operation: (provider: ILLMProvider) => Promise<T>, preferredProvider?: ProviderType): Promise<T>;
97
+ /**
98
+ * Get all available provider types
99
+ */
100
+ getAvailableProviders(): ProviderType[];
101
+ /**
102
+ * Get provider metadata
103
+ */
104
+ getProviderMetadata(type: ProviderType): LLMProviderMetadata | undefined;
105
+ /**
106
+ * Get usage statistics
107
+ */
108
+ getUsageStats(type?: ProviderType): Map<ProviderType, ProviderUsageStats> | ProviderUsageStats | undefined;
109
+ /**
110
+ * Get combined usage cost
111
+ */
112
+ getTotalCost(): number;
113
+ /**
114
+ * Shutdown all providers
115
+ */
116
+ shutdown(): Promise<void>;
117
+ /**
118
+ * Register a custom provider
119
+ */
120
+ registerProvider(type: ProviderType, provider: ILLMProvider): Promise<void>;
121
+ /**
122
+ * Initialize a specific provider
123
+ */
124
+ private initializeProvider;
125
+ /**
126
+ * Start health monitoring
127
+ */
128
+ private startHealthMonitoring;
129
+ /**
130
+ * Perform health checks on all providers
131
+ */
132
+ private performHealthChecks;
133
+ /**
134
+ * Get provider order for fallback
135
+ */
136
+ private getProviderOrder;
137
+ /**
138
+ * Update usage statistics
139
+ */
140
+ private updateUsageStats;
141
+ /**
142
+ * Create a hybrid router that automatically selects the best provider
143
+ */
144
+ createHybridRouter(): ILLMProvider;
145
+ }
146
+ /**
147
+ * Get the global LLM provider factory instance
148
+ */
149
+ export declare function getGlobalLLMFactory(): LLMProviderFactory;
150
+ /**
151
+ * Set the global LLM provider factory instance
152
+ */
153
+ export declare function setGlobalLLMFactory(factory: LLMProviderFactory): void;
154
+ //# sourceMappingURL=LLMProviderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LLMProviderFactory.d.ts","sourceRoot":"","sources":["../../src/providers/LLMProviderFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAyC,MAAM,gBAAgB,CAAC;AAC1G,OAAO,EAAkB,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAkB,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGxE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,6BAA6B;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4BAA4B;IAC5B,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;IACxE,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAaD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,oCAAoC;IACpC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,oCAAoC;IACpC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,8BAA8B;IAC9B,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,gCAAgC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,4DAA4D;IAC5D,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,UAAU,CAAwC;IAC1D,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAC1C,OAAO,CAAC,aAAa,CAAU;gBAEnB,MAAM,GAAE,wBAA6B;IAcjD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BjC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,SAAS;IASzD;;OAEG;IACH,kBAAkB,CAAC,QAAQ,CAAC,EAAE,yBAAyB,GAAG,YAAY,GAAG,SAAS;IA0DlF;;OAEG;IACG,mBAAmB,CAAC,CAAC,EACzB,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,EACjD,iBAAiB,CAAC,EAAE,YAAY,GAC/B,OAAO,CAAC,CAAC,CAAC;IAwCb;;OAEG;IACH,qBAAqB,IAAI,YAAY,EAAE;IAYvC;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,mBAAmB,GAAG,SAAS;IAIxE;;OAEG;IACH,aAAa,CAAC,IAAI,CAAC,EAAE,YAAY,GAAG,GAAG,CAAC,YAAY,EAAE,kBAAkB,CAAC,GAAG,kBAAkB,GAAG,SAAS;IAO1G;;OAEG;IACH,YAAY,IAAI,MAAM;IAQtB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB/B;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBjF;;OAEG;YACW,kBAAkB;IAwBhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAM7B;;OAEG;YACW,mBAAmB;IAyBjC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;OAEG;IACH,kBAAkB,IAAI,YAAY;CAwEnC;AAOD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,kBAAkB,CAKxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAErE"}