agents-library 0.1.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/dist/base-agent.d.ts +172 -0
- package/dist/base-agent.d.ts.map +1 -0
- package/dist/base-agent.js +255 -0
- package/dist/base-agent.js.map +1 -0
- package/dist/base-bot.d.ts +282 -0
- package/dist/base-bot.d.ts.map +1 -0
- package/dist/base-bot.js +375 -0
- package/dist/base-bot.js.map +1 -0
- package/dist/common/result.d.ts +51 -0
- package/dist/common/result.d.ts.map +1 -0
- package/dist/common/result.js +45 -0
- package/dist/common/result.js.map +1 -0
- package/dist/common/types.d.ts +57 -0
- package/dist/common/types.d.ts.map +1 -0
- package/dist/common/types.js +42 -0
- package/dist/common/types.js.map +1 -0
- package/dist/index.d.ts +94 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +108 -0
- package/dist/index.js.map +1 -0
- package/dist/kadi-event-publisher.d.ts +163 -0
- package/dist/kadi-event-publisher.d.ts.map +1 -0
- package/dist/kadi-event-publisher.js +286 -0
- package/dist/kadi-event-publisher.js.map +1 -0
- package/dist/memory/arcadedb-adapter.d.ts +159 -0
- package/dist/memory/arcadedb-adapter.d.ts.map +1 -0
- package/dist/memory/arcadedb-adapter.js +314 -0
- package/dist/memory/arcadedb-adapter.js.map +1 -0
- package/dist/memory/file-storage-adapter.d.ts +122 -0
- package/dist/memory/file-storage-adapter.d.ts.map +1 -0
- package/dist/memory/file-storage-adapter.js +352 -0
- package/dist/memory/file-storage-adapter.js.map +1 -0
- package/dist/memory/memory-service.d.ts +208 -0
- package/dist/memory/memory-service.d.ts.map +1 -0
- package/dist/memory/memory-service.js +410 -0
- package/dist/memory/memory-service.js.map +1 -0
- package/dist/memory/types.d.ts +126 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +41 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/producer-tool-utils.d.ts +474 -0
- package/dist/producer-tool-utils.d.ts.map +1 -0
- package/dist/producer-tool-utils.js +664 -0
- package/dist/producer-tool-utils.js.map +1 -0
- package/dist/providers/anthropic-provider.d.ts +160 -0
- package/dist/providers/anthropic-provider.d.ts.map +1 -0
- package/dist/providers/anthropic-provider.js +527 -0
- package/dist/providers/anthropic-provider.js.map +1 -0
- package/dist/providers/model-manager-provider.d.ts +91 -0
- package/dist/providers/model-manager-provider.d.ts.map +1 -0
- package/dist/providers/model-manager-provider.js +355 -0
- package/dist/providers/model-manager-provider.js.map +1 -0
- package/dist/providers/provider-manager.d.ts +111 -0
- package/dist/providers/provider-manager.d.ts.map +1 -0
- package/dist/providers/provider-manager.js +337 -0
- package/dist/providers/provider-manager.js.map +1 -0
- package/dist/providers/types.d.ts +145 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +23 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/shadow-agent-factory.d.ts +623 -0
- package/dist/shadow-agent-factory.d.ts.map +1 -0
- package/dist/shadow-agent-factory.js +1117 -0
- package/dist/shadow-agent-factory.js.map +1 -0
- package/dist/types/agent-config.d.ts +307 -0
- package/dist/types/agent-config.d.ts.map +1 -0
- package/dist/types/agent-config.js +15 -0
- package/dist/types/agent-config.js.map +1 -0
- package/dist/types/event-schemas.d.ts +358 -0
- package/dist/types/event-schemas.d.ts.map +1 -0
- package/dist/types/event-schemas.js +188 -0
- package/dist/types/event-schemas.js.map +1 -0
- package/dist/types/tool-schemas.d.ts +498 -0
- package/dist/types/tool-schemas.d.ts.map +1 -0
- package/dist/types/tool-schemas.js +457 -0
- package/dist/types/tool-schemas.js.map +1 -0
- package/dist/utils/logger.d.ts +135 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +205 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/timer.d.ts +186 -0
- package/dist/utils/timer.d.ts.map +1 -0
- package/dist/utils/timer.js +211 -0
- package/dist/utils/timer.js.map +1 -0
- package/dist/worker-agent-factory.d.ts +688 -0
- package/dist/worker-agent-factory.d.ts.map +1 -0
- package/dist/worker-agent-factory.js +1517 -0
- package/dist/worker-agent-factory.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Manager - LLM Provider Orchestration
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates multiple LLM providers with intelligent routing, health monitoring,
|
|
5
|
+
* automatic fallback, retry logic with exponential backoff, and circuit breaker pattern.
|
|
6
|
+
*/
|
|
7
|
+
import { ProviderErrorType } from './types.js';
|
|
8
|
+
import { ok, err } from '../common/result.js';
|
|
9
|
+
/**
|
|
10
|
+
* Provider Manager
|
|
11
|
+
*
|
|
12
|
+
* Manages multiple LLM providers with:
|
|
13
|
+
* - Model-based routing (claude→Anthropic, gpt→Model Manager)
|
|
14
|
+
* - Automatic fallback on provider failure
|
|
15
|
+
* - Retry logic with exponential backoff
|
|
16
|
+
* - Circuit breaker pattern (unhealthy after N consecutive failures)
|
|
17
|
+
* - Periodic health checks
|
|
18
|
+
* - Rate limit handling with backoff
|
|
19
|
+
*/
|
|
20
|
+
export class ProviderManager {
|
|
21
|
+
config;
|
|
22
|
+
providers = new Map();
|
|
23
|
+
healthStatus = new Map();
|
|
24
|
+
healthCheckInterval;
|
|
25
|
+
/**
|
|
26
|
+
* Circuit breaker configuration
|
|
27
|
+
*/
|
|
28
|
+
maxConsecutiveFailures = 3;
|
|
29
|
+
/**
|
|
30
|
+
* Rate limit backoff: 5s * 2^attempt
|
|
31
|
+
*/
|
|
32
|
+
rateLimitBaseDelayMs = 5000;
|
|
33
|
+
/**
|
|
34
|
+
* Create Provider Manager instance
|
|
35
|
+
*
|
|
36
|
+
* @param providers - Array of LLM providers to manage
|
|
37
|
+
* @param config - Provider configuration (primary, fallback, retry, health check)
|
|
38
|
+
*/
|
|
39
|
+
constructor(providers, config) {
|
|
40
|
+
this.config = config;
|
|
41
|
+
// Register providers
|
|
42
|
+
for (const provider of providers) {
|
|
43
|
+
this.providers.set(provider.name, provider);
|
|
44
|
+
this.healthStatus.set(provider.name, {
|
|
45
|
+
isHealthy: true,
|
|
46
|
+
consecutiveFailures: 0,
|
|
47
|
+
lastCheck: new Date(),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
// Validate configuration
|
|
51
|
+
if (!this.providers.has(config.primaryProvider)) {
|
|
52
|
+
throw new Error(`Primary provider "${config.primaryProvider}" not found in providers list`);
|
|
53
|
+
}
|
|
54
|
+
if (config.fallbackProvider &&
|
|
55
|
+
!this.providers.has(config.fallbackProvider)) {
|
|
56
|
+
throw new Error(`Fallback provider "${config.fallbackProvider}" not found in providers list`);
|
|
57
|
+
}
|
|
58
|
+
// Start periodic health checks
|
|
59
|
+
this.startHealthChecks();
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Generate chat completion with provider selection and fallback
|
|
63
|
+
*
|
|
64
|
+
* @param messages - Conversation messages
|
|
65
|
+
* @param options - Optional chat configuration
|
|
66
|
+
* @returns Result with response text or error
|
|
67
|
+
*/
|
|
68
|
+
async chat(messages, options) {
|
|
69
|
+
// Select provider based on model or use primary
|
|
70
|
+
const selectedProvider = this.selectProvider(options?.model);
|
|
71
|
+
const modelInfo = options?.model ? ` for model '${options.model}'` : ' (default model)';
|
|
72
|
+
console.log(`[ProviderManager:Chat] Selected provider: ${selectedProvider}${modelInfo}`);
|
|
73
|
+
// Attempt with primary provider
|
|
74
|
+
const result = await this.attemptWithRetry(selectedProvider, async (provider) => provider.chat(messages, options));
|
|
75
|
+
// If primary succeeded, return result
|
|
76
|
+
if (result.success) {
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
// Handle rate limit with backoff
|
|
80
|
+
if (!result.success && result.error.type === ProviderErrorType.RATE_LIMIT) {
|
|
81
|
+
console.warn(`[ProviderManager:Chat] Rate limit on ${selectedProvider}, backing off...`);
|
|
82
|
+
// Don't fall back on rate limit - just return the error
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
// If primary failed and fallback configured, try fallback
|
|
86
|
+
if (this.config.fallbackProvider &&
|
|
87
|
+
this.config.fallbackProvider !== selectedProvider) {
|
|
88
|
+
console.warn(`[ProviderManager:Chat] Primary provider ${selectedProvider} failed, trying fallback ${this.config.fallbackProvider}`);
|
|
89
|
+
const fallbackResult = await this.attemptWithRetry(this.config.fallbackProvider, async (provider) => provider.chat(messages, options));
|
|
90
|
+
if (fallbackResult.success) {
|
|
91
|
+
return fallbackResult;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Both primary and fallback failed
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Generate streaming chat completion with provider selection and fallback
|
|
99
|
+
*
|
|
100
|
+
* @param messages - Conversation messages
|
|
101
|
+
* @param options - Optional chat configuration
|
|
102
|
+
* @returns Result with async iterator of text chunks or error
|
|
103
|
+
*/
|
|
104
|
+
async streamChat(messages, options) {
|
|
105
|
+
// Select provider based on model or use primary
|
|
106
|
+
const selectedProvider = this.selectProvider(options?.model);
|
|
107
|
+
const modelInfo = options?.model ? ` for model '${options.model}'` : ' (default model)';
|
|
108
|
+
console.log(`[ProviderManager:Stream] Selected provider: ${selectedProvider}${modelInfo}`);
|
|
109
|
+
// Attempt with primary provider
|
|
110
|
+
const result = await this.attemptWithRetry(selectedProvider, async (provider) => provider.streamChat(messages, options));
|
|
111
|
+
// If primary succeeded, return result
|
|
112
|
+
if (result.success) {
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
// Handle rate limit with backoff
|
|
116
|
+
if (!result.success && result.error.type === ProviderErrorType.RATE_LIMIT) {
|
|
117
|
+
console.warn(`[ProviderManager:Stream] Rate limit on ${selectedProvider}, backing off...`);
|
|
118
|
+
return result;
|
|
119
|
+
}
|
|
120
|
+
// If primary failed and fallback configured, try fallback
|
|
121
|
+
if (this.config.fallbackProvider &&
|
|
122
|
+
this.config.fallbackProvider !== selectedProvider) {
|
|
123
|
+
console.warn(`[ProviderManager:Stream] Primary provider ${selectedProvider} failed, trying fallback ${this.config.fallbackProvider}`);
|
|
124
|
+
const fallbackResult = await this.attemptWithRetry(this.config.fallbackProvider, async (provider) => provider.streamChat(messages, options));
|
|
125
|
+
if (fallbackResult.success) {
|
|
126
|
+
return fallbackResult;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Both primary and fallback failed
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get combined list of available models from all healthy providers
|
|
134
|
+
*
|
|
135
|
+
* @returns Result with array of model IDs or error
|
|
136
|
+
*/
|
|
137
|
+
async getAvailableModels() {
|
|
138
|
+
const allModels = [];
|
|
139
|
+
const errors = [];
|
|
140
|
+
for (const [name, provider] of this.providers) {
|
|
141
|
+
const health = this.healthStatus.get(name);
|
|
142
|
+
if (!health?.isHealthy) {
|
|
143
|
+
continue; // Skip unhealthy providers
|
|
144
|
+
}
|
|
145
|
+
const result = await provider.getAvailableModels();
|
|
146
|
+
if (result.success) {
|
|
147
|
+
allModels.push(...result.data);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
const errorResult = result;
|
|
151
|
+
errors.push(errorResult.error);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (allModels.length > 0) {
|
|
155
|
+
return ok(allModels);
|
|
156
|
+
}
|
|
157
|
+
// If no models available, return first error
|
|
158
|
+
if (errors.length > 0) {
|
|
159
|
+
return err(errors[0]);
|
|
160
|
+
}
|
|
161
|
+
return err({
|
|
162
|
+
type: ProviderErrorType.UNKNOWN,
|
|
163
|
+
message: 'No healthy providers available',
|
|
164
|
+
provider: 'provider-manager',
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get health status of all providers
|
|
169
|
+
*
|
|
170
|
+
* @returns Map of provider names to health status
|
|
171
|
+
*/
|
|
172
|
+
getHealthStatus() {
|
|
173
|
+
return new Map(this.healthStatus);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Manually trigger health check for all providers
|
|
177
|
+
*/
|
|
178
|
+
async checkAllProvidersHealth() {
|
|
179
|
+
const checks = Array.from(this.providers.entries()).map(async ([name, provider]) => {
|
|
180
|
+
try {
|
|
181
|
+
const isHealthy = await provider.isHealthy();
|
|
182
|
+
const currentHealth = this.healthStatus.get(name);
|
|
183
|
+
if (isHealthy) {
|
|
184
|
+
// Reset failures on successful health check
|
|
185
|
+
currentHealth.consecutiveFailures = 0;
|
|
186
|
+
currentHealth.isHealthy = true;
|
|
187
|
+
// Reset provider's internal failure counter
|
|
188
|
+
provider.resetHealth();
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
currentHealth.consecutiveFailures++;
|
|
192
|
+
// Circuit breaker: mark unhealthy after max failures
|
|
193
|
+
if (currentHealth.consecutiveFailures >= this.maxConsecutiveFailures) {
|
|
194
|
+
currentHealth.isHealthy = false;
|
|
195
|
+
console.warn(`[ProviderManager:HealthCheck] Provider ${name} marked unhealthy after ${currentHealth.consecutiveFailures} consecutive failures`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
currentHealth.lastCheck = new Date();
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
console.error(`[ProviderManager:HealthCheck] Health check error for ${name}:`, error);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
await Promise.all(checks);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Clean up resources (stop health checks)
|
|
208
|
+
*/
|
|
209
|
+
dispose() {
|
|
210
|
+
if (this.healthCheckInterval) {
|
|
211
|
+
clearInterval(this.healthCheckInterval);
|
|
212
|
+
this.healthCheckInterval = undefined;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Select provider based on model name or use primary
|
|
217
|
+
*
|
|
218
|
+
* Model-based routing:
|
|
219
|
+
* - Models starting with "claude" → anthropic provider
|
|
220
|
+
* - Models starting with "gpt" → model-manager provider
|
|
221
|
+
* - Otherwise → primary provider from config
|
|
222
|
+
*/
|
|
223
|
+
selectProvider(model) {
|
|
224
|
+
if (!model) {
|
|
225
|
+
return this.config.primaryProvider;
|
|
226
|
+
}
|
|
227
|
+
const modelLower = model.toLowerCase();
|
|
228
|
+
if (modelLower.startsWith('claude')) {
|
|
229
|
+
return 'anthropic';
|
|
230
|
+
}
|
|
231
|
+
if (modelLower.startsWith('gpt')) {
|
|
232
|
+
return 'model-manager';
|
|
233
|
+
}
|
|
234
|
+
return this.config.primaryProvider;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Attempt operation with retry and exponential backoff
|
|
238
|
+
*
|
|
239
|
+
* @param providerName - Name of provider to use
|
|
240
|
+
* @param operation - Operation to attempt
|
|
241
|
+
* @returns Result from operation
|
|
242
|
+
*/
|
|
243
|
+
async attemptWithRetry(providerName, operation) {
|
|
244
|
+
const provider = this.providers.get(providerName);
|
|
245
|
+
if (!provider) {
|
|
246
|
+
return err({
|
|
247
|
+
type: ProviderErrorType.UNKNOWN,
|
|
248
|
+
message: `Provider "${providerName}" not found`,
|
|
249
|
+
provider: 'provider-manager',
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
// Check circuit breaker
|
|
253
|
+
const health = this.healthStatus.get(providerName);
|
|
254
|
+
if (health && !health.isHealthy) {
|
|
255
|
+
console.warn(`[ProviderManager:Retry] Provider ${providerName} is unhealthy, skipping`);
|
|
256
|
+
return err({
|
|
257
|
+
type: ProviderErrorType.UNKNOWN,
|
|
258
|
+
message: `Provider "${providerName}" is currently unhealthy`,
|
|
259
|
+
provider: providerName,
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
let lastError;
|
|
263
|
+
for (let attempt = 0; attempt < this.config.retryAttempts; attempt++) {
|
|
264
|
+
if (attempt > 0) {
|
|
265
|
+
// Exponential backoff: delayMs * 2^attempt
|
|
266
|
+
const delay = this.config.retryDelayMs * Math.pow(2, attempt - 1);
|
|
267
|
+
console.log(`[ProviderManager:Retry] Attempt ${attempt + 1}/${this.config.retryAttempts} for ${providerName} after ${delay}ms delay`);
|
|
268
|
+
await this.sleep(delay);
|
|
269
|
+
}
|
|
270
|
+
const result = await operation(provider);
|
|
271
|
+
if (result.success) {
|
|
272
|
+
// Success - reset failure counter
|
|
273
|
+
if (health) {
|
|
274
|
+
health.consecutiveFailures = 0;
|
|
275
|
+
health.isHealthy = true;
|
|
276
|
+
}
|
|
277
|
+
return result;
|
|
278
|
+
}
|
|
279
|
+
// Type cast to error branch
|
|
280
|
+
const errorResult = result;
|
|
281
|
+
lastError = errorResult.error;
|
|
282
|
+
console.error(`[ProviderManager:Retry] Provider ${providerName} attempt ${attempt + 1} failed:`, errorResult.error.type, errorResult.error.message);
|
|
283
|
+
// Handle rate limits with special backoff
|
|
284
|
+
if (errorResult.error.type === ProviderErrorType.RATE_LIMIT) {
|
|
285
|
+
const rateLimitDelay = this.rateLimitBaseDelayMs * Math.pow(2, attempt);
|
|
286
|
+
console.warn(`[ProviderManager:Retry] Rate limit detected on ${providerName}, waiting ${rateLimitDelay}ms before retry`);
|
|
287
|
+
await this.sleep(rateLimitDelay);
|
|
288
|
+
}
|
|
289
|
+
// Don't retry on auth failures or invalid requests
|
|
290
|
+
if (errorResult.error.type === ProviderErrorType.AUTH_FAILED ||
|
|
291
|
+
errorResult.error.type === ProviderErrorType.INVALID_REQUEST) {
|
|
292
|
+
console.error(`[ProviderManager:Retry] Non-retryable error on ${providerName}: ${errorResult.error.type}`);
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// After all retries exhausted, track failure for health monitoring
|
|
297
|
+
// Only track actual health issues, not model routing problems
|
|
298
|
+
if (health && lastError) {
|
|
299
|
+
// Exclude MODEL_NOT_FOUND - these are routing issues, not health problems
|
|
300
|
+
const shouldTrackFailure = lastError.type !== ProviderErrorType.MODEL_NOT_FOUND;
|
|
301
|
+
if (shouldTrackFailure) {
|
|
302
|
+
health.consecutiveFailures++;
|
|
303
|
+
if (health.consecutiveFailures >= this.maxConsecutiveFailures) {
|
|
304
|
+
health.isHealthy = false;
|
|
305
|
+
console.warn(`[ProviderManager:CircuitBreaker] Provider ${providerName} circuit opened after ${health.consecutiveFailures} consecutive request failures`);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
// MODEL_NOT_FOUND doesn't affect health - log for debugging
|
|
310
|
+
console.log(`[ProviderManager:Routing] Provider ${providerName} doesn't support requested model (not a health issue)`);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return err(lastError || {
|
|
314
|
+
type: ProviderErrorType.UNKNOWN,
|
|
315
|
+
message: 'All retry attempts failed',
|
|
316
|
+
provider: providerName,
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Start periodic health checks for all providers
|
|
321
|
+
*/
|
|
322
|
+
startHealthChecks() {
|
|
323
|
+
// Run initial health check
|
|
324
|
+
this.checkAllProvidersHealth().catch((error) => console.error('[ProviderManager:HealthCheck] Initial health check failed:', error));
|
|
325
|
+
// Schedule periodic health checks
|
|
326
|
+
this.healthCheckInterval = setInterval(() => {
|
|
327
|
+
this.checkAllProvidersHealth().catch((error) => console.error('[ProviderManager:HealthCheck] Periodic health check failed:', error));
|
|
328
|
+
}, this.config.healthCheckIntervalMs);
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Sleep utility for delays
|
|
332
|
+
*/
|
|
333
|
+
sleep(ms) {
|
|
334
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
//# sourceMappingURL=provider-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-manager.js","sourceRoot":"","sources":["../../src/providers/provider-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Provider System Types
|
|
3
|
+
* LLM Provider System Types
|
|
4
|
+
*
|
|
5
|
+
* Defines interfaces and types for the pluggable LLM provider architecture.
|
|
6
|
+
* Supports multiple providers (Anthropic Claude, OpenAI-compatible Model Manager Gateway)
|
|
7
|
+
* with automatic failover and health monitoring.
|
|
8
|
+
*/
|
|
9
|
+
import type { Result } from '../common/result.js';
|
|
10
|
+
/**
|
|
11
|
+
* Message format for LLM conversations
|
|
12
|
+
* Supports OpenAI tool calling protocol
|
|
13
|
+
*/
|
|
14
|
+
export interface Message {
|
|
15
|
+
role: 'user' | 'assistant' | 'system' | 'tool';
|
|
16
|
+
content: string | null;
|
|
17
|
+
tool_call_id?: string;
|
|
18
|
+
tool_calls?: Array<{
|
|
19
|
+
id: string;
|
|
20
|
+
type: 'function';
|
|
21
|
+
function: {
|
|
22
|
+
name: string;
|
|
23
|
+
arguments: string;
|
|
24
|
+
};
|
|
25
|
+
}>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* OpenAI-compatible tool definition
|
|
29
|
+
*/
|
|
30
|
+
export interface ToolDefinition {
|
|
31
|
+
type: 'function';
|
|
32
|
+
function: {
|
|
33
|
+
name: string;
|
|
34
|
+
description: string;
|
|
35
|
+
parameters: any;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Options for LLM chat requests
|
|
40
|
+
*/
|
|
41
|
+
export interface ChatOptions {
|
|
42
|
+
model?: string;
|
|
43
|
+
/** System prompt passed to the LLM as a top-level parameter (not in messages array). */
|
|
44
|
+
system?: string;
|
|
45
|
+
maxTokens?: number;
|
|
46
|
+
temperature?: number;
|
|
47
|
+
stopSequences?: string[];
|
|
48
|
+
tools?: ToolDefinition[];
|
|
49
|
+
tool_choice?: 'auto' | 'none' | {
|
|
50
|
+
type: 'function';
|
|
51
|
+
function: {
|
|
52
|
+
name: string;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Provider error types
|
|
58
|
+
* Provider error types
|
|
59
|
+
*/
|
|
60
|
+
export declare enum ProviderErrorType {
|
|
61
|
+
AUTH_FAILED = "AUTH_FAILED",
|
|
62
|
+
RATE_LIMIT = "RATE_LIMIT",
|
|
63
|
+
TIMEOUT = "TIMEOUT",
|
|
64
|
+
NETWORK_ERROR = "NETWORK_ERROR",
|
|
65
|
+
INVALID_REQUEST = "INVALID_REQUEST",
|
|
66
|
+
MODEL_NOT_FOUND = "MODEL_NOT_FOUND",
|
|
67
|
+
UNKNOWN = "UNKNOWN"
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Error object returned by providers
|
|
71
|
+
* Error object returned by providers
|
|
72
|
+
*/
|
|
73
|
+
export interface ProviderError {
|
|
74
|
+
type: ProviderErrorType;
|
|
75
|
+
message: string;
|
|
76
|
+
provider: string;
|
|
77
|
+
originalError?: unknown;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Provider health status
|
|
81
|
+
* Provider health status
|
|
82
|
+
*/
|
|
83
|
+
export interface ProviderStatus {
|
|
84
|
+
isHealthy: boolean;
|
|
85
|
+
consecutiveFailures: number;
|
|
86
|
+
lastCheck: Date;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Provider configuration
|
|
90
|
+
* Provider configuration
|
|
91
|
+
*/
|
|
92
|
+
export interface ProviderConfig {
|
|
93
|
+
primaryProvider: string;
|
|
94
|
+
fallbackProvider?: string;
|
|
95
|
+
retryAttempts: number;
|
|
96
|
+
retryDelayMs: number;
|
|
97
|
+
healthCheckIntervalMs: number;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Standard interface for all LLM provider adapters
|
|
101
|
+
* Standard interface for all LLM provider adapters
|
|
102
|
+
*
|
|
103
|
+
* All LLM providers (Anthropic, Model Manager) must implement this interface
|
|
104
|
+
* to enable pluggable provider architecture with automatic failover.
|
|
105
|
+
*/
|
|
106
|
+
export interface LLMProvider {
|
|
107
|
+
/** Provider name (e.g., 'anthropic', 'model-manager') */
|
|
108
|
+
name: string;
|
|
109
|
+
/**
|
|
110
|
+
* Generate chat completion
|
|
111
|
+
*
|
|
112
|
+
* @param messages - Conversation messages
|
|
113
|
+
* @param options - Optional chat configuration
|
|
114
|
+
* @returns Result with response text or error
|
|
115
|
+
*/
|
|
116
|
+
chat(messages: Message[], options?: ChatOptions): Promise<Result<string, ProviderError>>;
|
|
117
|
+
/**
|
|
118
|
+
* Generate streaming chat completion
|
|
119
|
+
*
|
|
120
|
+
* @param messages - Conversation messages
|
|
121
|
+
* @param options - Optional chat configuration
|
|
122
|
+
* @returns Result with async iterator of text chunks or error
|
|
123
|
+
*/
|
|
124
|
+
streamChat(messages: Message[], options?: ChatOptions): Promise<Result<AsyncIterable<string>, ProviderError>>;
|
|
125
|
+
/**
|
|
126
|
+
* Check if provider is healthy
|
|
127
|
+
*
|
|
128
|
+
* @returns True if provider is responding correctly
|
|
129
|
+
*/
|
|
130
|
+
isHealthy(): Promise<boolean>;
|
|
131
|
+
/**
|
|
132
|
+
* Reset provider health status
|
|
133
|
+
*
|
|
134
|
+
* Clears failure counters and marks provider as healthy again.
|
|
135
|
+
* Called by ProviderManager when health checks pass.
|
|
136
|
+
*/
|
|
137
|
+
resetHealth(): void;
|
|
138
|
+
/**
|
|
139
|
+
* Get list of available models
|
|
140
|
+
*
|
|
141
|
+
* @returns Result with array of model IDs or error
|
|
142
|
+
*/
|
|
143
|
+
getAvailableModels(): Promise<Result<string[], ProviderError>>;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Provider System Types
|
|
3
|
+
* LLM Provider System Types
|
|
4
|
+
*
|
|
5
|
+
* Defines interfaces and types for the pluggable LLM provider architecture.
|
|
6
|
+
* Supports multiple providers (Anthropic Claude, OpenAI-compatible Model Manager Gateway)
|
|
7
|
+
* with automatic failover and health monitoring.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Provider error types
|
|
11
|
+
* Provider error types
|
|
12
|
+
*/
|
|
13
|
+
export var ProviderErrorType;
|
|
14
|
+
(function (ProviderErrorType) {
|
|
15
|
+
ProviderErrorType["AUTH_FAILED"] = "AUTH_FAILED";
|
|
16
|
+
ProviderErrorType["RATE_LIMIT"] = "RATE_LIMIT";
|
|
17
|
+
ProviderErrorType["TIMEOUT"] = "TIMEOUT";
|
|
18
|
+
ProviderErrorType["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
19
|
+
ProviderErrorType["INVALID_REQUEST"] = "INVALID_REQUEST";
|
|
20
|
+
ProviderErrorType["MODEL_NOT_FOUND"] = "MODEL_NOT_FOUND";
|
|
21
|
+
ProviderErrorType["UNKNOWN"] = "UNKNOWN";
|
|
22
|
+
})(ProviderErrorType || (ProviderErrorType = {}));
|
|
23
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgDH;;;GAGG;AACH,MAAM,CAAN,IAAY,iBAQX;AARD,WAAY,iBAAiB;IAC3B,gDAA2B,CAAA;IAC3B,8CAAyB,CAAA;IACzB,wCAAmB,CAAA;IACnB,oDAA+B,CAAA;IAC/B,wDAAmC,CAAA;IACnC,wDAAmC,CAAA;IACnC,wCAAmB,CAAA;AACrB,CAAC,EARW,iBAAiB,KAAjB,iBAAiB,QAQ5B"}
|