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.
- package/CHANGELOG.md +123 -0
- package/README.md +1 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +5 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/core/di/AgentDependencies.d.ts +127 -0
- package/dist/core/di/AgentDependencies.d.ts.map +1 -0
- package/dist/core/di/AgentDependencies.js +251 -0
- package/dist/core/di/AgentDependencies.js.map +1 -0
- package/dist/core/di/DIContainer.d.ts +149 -0
- package/dist/core/di/DIContainer.d.ts.map +1 -0
- package/dist/core/di/DIContainer.js +333 -0
- package/dist/core/di/DIContainer.js.map +1 -0
- package/dist/core/di/index.d.ts +11 -0
- package/dist/core/di/index.d.ts.map +1 -0
- package/dist/core/di/index.js +22 -0
- package/dist/core/di/index.js.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +11 -1
- package/dist/core/index.js.map +1 -1
- package/dist/learning/ExperienceSharingProtocol.d.ts +243 -0
- package/dist/learning/ExperienceSharingProtocol.d.ts.map +1 -0
- package/dist/learning/ExperienceSharingProtocol.js +538 -0
- package/dist/learning/ExperienceSharingProtocol.js.map +1 -0
- package/dist/learning/LearningEngine.d.ts +101 -1
- package/dist/learning/LearningEngine.d.ts.map +1 -1
- package/dist/learning/LearningEngine.js +330 -3
- package/dist/learning/LearningEngine.js.map +1 -1
- package/dist/learning/QLearning.d.ts +38 -125
- package/dist/learning/QLearning.d.ts.map +1 -1
- package/dist/learning/QLearning.js +46 -267
- package/dist/learning/QLearning.js.map +1 -1
- package/dist/learning/QLearningLegacy.d.ts +154 -0
- package/dist/learning/QLearningLegacy.d.ts.map +1 -0
- package/dist/learning/QLearningLegacy.js +337 -0
- package/dist/learning/QLearningLegacy.js.map +1 -0
- package/dist/learning/algorithms/AbstractRLLearner.d.ts +162 -0
- package/dist/learning/algorithms/AbstractRLLearner.d.ts.map +1 -0
- package/dist/learning/algorithms/AbstractRLLearner.js +300 -0
- package/dist/learning/algorithms/AbstractRLLearner.js.map +1 -0
- package/dist/learning/algorithms/ActorCriticLearner.d.ts +201 -0
- package/dist/learning/algorithms/ActorCriticLearner.d.ts.map +1 -0
- package/dist/learning/algorithms/ActorCriticLearner.js +447 -0
- package/dist/learning/algorithms/ActorCriticLearner.js.map +1 -0
- package/dist/learning/algorithms/PPOLearner.d.ts +207 -0
- package/dist/learning/algorithms/PPOLearner.d.ts.map +1 -0
- package/dist/learning/algorithms/PPOLearner.js +490 -0
- package/dist/learning/algorithms/PPOLearner.js.map +1 -0
- package/dist/learning/algorithms/QLearning.d.ts +68 -0
- package/dist/learning/algorithms/QLearning.d.ts.map +1 -0
- package/dist/learning/algorithms/QLearning.js +116 -0
- package/dist/learning/algorithms/QLearning.js.map +1 -0
- package/dist/learning/algorithms/SARSALearner.d.ts +107 -0
- package/dist/learning/algorithms/SARSALearner.d.ts.map +1 -0
- package/dist/learning/algorithms/SARSALearner.js +252 -0
- package/dist/learning/algorithms/SARSALearner.js.map +1 -0
- package/dist/learning/algorithms/index.d.ts +29 -0
- package/dist/learning/algorithms/index.d.ts.map +1 -0
- package/dist/learning/algorithms/index.js +44 -0
- package/dist/learning/algorithms/index.js.map +1 -0
- package/dist/learning/index.d.ts +3 -0
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +15 -1
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/types.d.ts +2 -0
- package/dist/learning/types.d.ts.map +1 -1
- package/dist/memory/DistributedPatternLibrary.d.ts +159 -0
- package/dist/memory/DistributedPatternLibrary.d.ts.map +1 -0
- package/dist/memory/DistributedPatternLibrary.js +370 -0
- package/dist/memory/DistributedPatternLibrary.js.map +1 -0
- package/dist/memory/PatternQualityScorer.d.ts +169 -0
- package/dist/memory/PatternQualityScorer.d.ts.map +1 -0
- package/dist/memory/PatternQualityScorer.js +327 -0
- package/dist/memory/PatternQualityScorer.js.map +1 -0
- package/dist/memory/PatternReplicationService.d.ts +187 -0
- package/dist/memory/PatternReplicationService.d.ts.map +1 -0
- package/dist/memory/PatternReplicationService.js +392 -0
- package/dist/memory/PatternReplicationService.js.map +1 -0
- package/dist/providers/ClaudeProvider.d.ts +98 -0
- package/dist/providers/ClaudeProvider.d.ts.map +1 -0
- package/dist/providers/ClaudeProvider.js +418 -0
- package/dist/providers/ClaudeProvider.js.map +1 -0
- package/dist/providers/ILLMProvider.d.ts +287 -0
- package/dist/providers/ILLMProvider.d.ts.map +1 -0
- package/dist/providers/ILLMProvider.js +33 -0
- package/dist/providers/ILLMProvider.js.map +1 -0
- package/dist/providers/LLMProviderFactory.d.ts +154 -0
- package/dist/providers/LLMProviderFactory.d.ts.map +1 -0
- package/dist/providers/LLMProviderFactory.js +426 -0
- package/dist/providers/LLMProviderFactory.js.map +1 -0
- package/dist/providers/RuvllmProvider.d.ts +107 -0
- package/dist/providers/RuvllmProvider.d.ts.map +1 -0
- package/dist/providers/RuvllmProvider.js +417 -0
- package/dist/providers/RuvllmProvider.js.map +1 -0
- package/dist/providers/index.d.ts +31 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +69 -0
- package/dist/providers/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -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":"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"}
|