agents-library 1.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.
Potentially problematic release.
This version of agents-library might be problematic. Click here for more details.
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-provider.js","sourceRoot":"","sources":["../../src/providers/anthropic-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Manager Provider Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implements LLMProvider interface for OpenAI-compatible Model Manager Gateway.
|
|
5
|
+
* Uses native fetch API with timeout handling and proper error mapping.
|
|
6
|
+
*/
|
|
7
|
+
import type { LLMProvider, Message, ChatOptions, ProviderError } from './types.js';
|
|
8
|
+
import type { Result } from '../common/result.js';
|
|
9
|
+
/**
|
|
10
|
+
* Model Manager Provider
|
|
11
|
+
*
|
|
12
|
+
* Communicates with OpenAI-compatible Model Manager Gateway.
|
|
13
|
+
* Uses fetch API for HTTP requests with timeout and error handling.
|
|
14
|
+
*/
|
|
15
|
+
export declare class ModelManagerProvider implements LLMProvider {
|
|
16
|
+
private readonly baseURL;
|
|
17
|
+
private readonly apiKey;
|
|
18
|
+
private readonly timeoutMs;
|
|
19
|
+
readonly name = "model-manager";
|
|
20
|
+
private consecutiveFailures;
|
|
21
|
+
private readonly maxConsecutiveFailures;
|
|
22
|
+
/**
|
|
23
|
+
* Default configuration
|
|
24
|
+
*/
|
|
25
|
+
private readonly defaultModel;
|
|
26
|
+
private readonly defaultMaxTokens;
|
|
27
|
+
/**
|
|
28
|
+
* HTTPS agent with disabled SSL verification
|
|
29
|
+
* Required for self-signed certificates in development/staging environments
|
|
30
|
+
*/
|
|
31
|
+
private readonly httpsAgent;
|
|
32
|
+
/**
|
|
33
|
+
* Create Model Manager provider instance
|
|
34
|
+
*
|
|
35
|
+
* @param baseURL - Base URL of Model Manager Gateway (e.g., 'https://gateway.example.com')
|
|
36
|
+
* @param apiKey - API key for authentication
|
|
37
|
+
* @param timeoutMs - Request timeout in milliseconds (default: 30000)
|
|
38
|
+
*/
|
|
39
|
+
constructor(baseURL: string, apiKey: string, timeoutMs?: number);
|
|
40
|
+
/**
|
|
41
|
+
* Generate chat completion
|
|
42
|
+
*
|
|
43
|
+
* @param messages - Conversation messages
|
|
44
|
+
* @param options - Optional chat configuration
|
|
45
|
+
* @returns Result with response text or error
|
|
46
|
+
*/
|
|
47
|
+
chat(messages: Message[], options?: ChatOptions): Promise<Result<string, ProviderError>>;
|
|
48
|
+
/**
|
|
49
|
+
* Generate streaming chat completion
|
|
50
|
+
*
|
|
51
|
+
* @param messages - Conversation messages
|
|
52
|
+
* @param options - Optional chat configuration
|
|
53
|
+
* @returns Result with async iterator of text chunks or error
|
|
54
|
+
*/
|
|
55
|
+
streamChat(messages: Message[], options?: ChatOptions): Promise<Result<AsyncIterable<string>, ProviderError>>;
|
|
56
|
+
/**
|
|
57
|
+
* Check if provider is healthy
|
|
58
|
+
*
|
|
59
|
+
* @returns True if provider is responding correctly
|
|
60
|
+
*/
|
|
61
|
+
isHealthy(): Promise<boolean>;
|
|
62
|
+
/**
|
|
63
|
+
* Reset provider health status
|
|
64
|
+
*
|
|
65
|
+
* Clears consecutive failure counter and marks provider as healthy.
|
|
66
|
+
*/
|
|
67
|
+
resetHealth(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Get list of available models
|
|
70
|
+
*
|
|
71
|
+
* @returns Result with array of model IDs or error
|
|
72
|
+
*/
|
|
73
|
+
getAvailableModels(): Promise<Result<string[], ProviderError>>;
|
|
74
|
+
/**
|
|
75
|
+
* Create async iterator from ReadableStream
|
|
76
|
+
*/
|
|
77
|
+
private createStreamIterator;
|
|
78
|
+
/**
|
|
79
|
+
* Handle HTTP error responses
|
|
80
|
+
*/
|
|
81
|
+
private handleHTTPError;
|
|
82
|
+
/**
|
|
83
|
+
* Handle general errors (network, timeout, etc.)
|
|
84
|
+
*/
|
|
85
|
+
private handleError;
|
|
86
|
+
/**
|
|
87
|
+
* Create standardized ProviderError
|
|
88
|
+
*/
|
|
89
|
+
private createError;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=model-manager-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-manager-provider.d.ts","sourceRoot":"","sources":["../../src/providers/model-manager-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,OAAO,EACP,WAAW,EACX,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA2FlD;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IA2BpD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IA5B5B,SAAgB,IAAI,mBAAmB;IACvC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAK;IAE5C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IAEzC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAExB;IAEH;;;;;;OAMG;gBAEgB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAc;IAa5C;;;;;;OAMG;IACG,IAAI,CACR,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAoGzC;;;;;;OAMG;IACG,UAAU,CACd,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;IAoExD;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAUnC;;;;OAIG;IACH,WAAW,IAAI,IAAI;IAInB;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC;IA+BpE;;OAEG;YACY,oBAAoB;IAwCnC;;OAEG;YACW,eAAe;IAkD7B;;OAEG;IACH,OAAO,CAAC,WAAW;IA4BnB;;OAEG;IACH,OAAO,CAAC,WAAW;CAUpB"}
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Manager Provider Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implements LLMProvider interface for OpenAI-compatible Model Manager Gateway.
|
|
5
|
+
* Uses native fetch API with timeout handling and proper error mapping.
|
|
6
|
+
*/
|
|
7
|
+
import https from 'https';
|
|
8
|
+
import { ProviderErrorType } from './types.js';
|
|
9
|
+
import { ok, err } from '../common/result.js';
|
|
10
|
+
/**
|
|
11
|
+
* Model Manager Provider
|
|
12
|
+
*
|
|
13
|
+
* Communicates with OpenAI-compatible Model Manager Gateway.
|
|
14
|
+
* Uses fetch API for HTTP requests with timeout and error handling.
|
|
15
|
+
*/
|
|
16
|
+
export class ModelManagerProvider {
|
|
17
|
+
baseURL;
|
|
18
|
+
apiKey;
|
|
19
|
+
timeoutMs;
|
|
20
|
+
name = 'model-manager';
|
|
21
|
+
consecutiveFailures = 0;
|
|
22
|
+
maxConsecutiveFailures = 3;
|
|
23
|
+
/**
|
|
24
|
+
* Default configuration
|
|
25
|
+
*/
|
|
26
|
+
defaultModel = 'gpt-5-mini';
|
|
27
|
+
defaultMaxTokens = 4096;
|
|
28
|
+
/**
|
|
29
|
+
* HTTPS agent with disabled SSL verification
|
|
30
|
+
* Required for self-signed certificates in development/staging environments
|
|
31
|
+
*/
|
|
32
|
+
httpsAgent = new https.Agent({
|
|
33
|
+
rejectUnauthorized: false,
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* Create Model Manager provider instance
|
|
37
|
+
*
|
|
38
|
+
* @param baseURL - Base URL of Model Manager Gateway (e.g., 'https://gateway.example.com')
|
|
39
|
+
* @param apiKey - API key for authentication
|
|
40
|
+
* @param timeoutMs - Request timeout in milliseconds (default: 30000)
|
|
41
|
+
*/
|
|
42
|
+
constructor(baseURL, apiKey, timeoutMs = 90000) {
|
|
43
|
+
this.baseURL = baseURL;
|
|
44
|
+
this.apiKey = apiKey;
|
|
45
|
+
this.timeoutMs = timeoutMs;
|
|
46
|
+
if (!baseURL || baseURL.trim() === '') {
|
|
47
|
+
throw new Error('Model Manager base URL is required');
|
|
48
|
+
}
|
|
49
|
+
if (!apiKey || apiKey.trim() === '') {
|
|
50
|
+
throw new Error('Model Manager API key is required');
|
|
51
|
+
}
|
|
52
|
+
// Remove trailing slash from baseURL
|
|
53
|
+
this.baseURL = baseURL.replace(/\/$/, '');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Generate chat completion
|
|
57
|
+
*
|
|
58
|
+
* @param messages - Conversation messages
|
|
59
|
+
* @param options - Optional chat configuration
|
|
60
|
+
* @returns Result with response text or error
|
|
61
|
+
*/
|
|
62
|
+
async chat(messages, options) {
|
|
63
|
+
const controller = new AbortController();
|
|
64
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
65
|
+
try {
|
|
66
|
+
// Build OpenAI messages array, prepending system prompt if provided
|
|
67
|
+
const openaiMessages = [
|
|
68
|
+
...(options?.system ? [{ role: 'system', content: options.system }] : []),
|
|
69
|
+
...messages.map((msg) => ({
|
|
70
|
+
role: msg.role,
|
|
71
|
+
content: msg.content,
|
|
72
|
+
...(msg.tool_call_id && { tool_call_id: msg.tool_call_id }),
|
|
73
|
+
...(msg.tool_calls && { tool_calls: msg.tool_calls }),
|
|
74
|
+
})),
|
|
75
|
+
];
|
|
76
|
+
const requestBody = {
|
|
77
|
+
model: options?.model || this.defaultModel,
|
|
78
|
+
messages: openaiMessages,
|
|
79
|
+
max_completion_tokens: options?.maxTokens || this.defaultMaxTokens,
|
|
80
|
+
temperature: options?.temperature,
|
|
81
|
+
stop: options?.stopSequences,
|
|
82
|
+
stream: false,
|
|
83
|
+
...(options?.tools && { tools: options.tools }),
|
|
84
|
+
...(options?.tool_choice && { tool_choice: options.tool_choice }),
|
|
85
|
+
};
|
|
86
|
+
const response = await fetch(`${this.baseURL}/v1/chat/completions`, {
|
|
87
|
+
method: 'POST',
|
|
88
|
+
headers: {
|
|
89
|
+
'Content-Type': 'application/json',
|
|
90
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
91
|
+
},
|
|
92
|
+
body: JSON.stringify(requestBody),
|
|
93
|
+
signal: controller.signal,
|
|
94
|
+
// @ts-ignore - Node.js fetch accepts agent option
|
|
95
|
+
agent: this.httpsAgent,
|
|
96
|
+
});
|
|
97
|
+
clearTimeout(timeoutId);
|
|
98
|
+
if (!response.ok) {
|
|
99
|
+
this.consecutiveFailures++;
|
|
100
|
+
return err(await this.handleHTTPError(response));
|
|
101
|
+
}
|
|
102
|
+
const data = (await response.json());
|
|
103
|
+
// Extract response
|
|
104
|
+
const choice = data.choices[0];
|
|
105
|
+
if (!choice || !choice.message) {
|
|
106
|
+
this.consecutiveFailures++;
|
|
107
|
+
return err(this.createError(ProviderErrorType.INVALID_REQUEST, 'No message in response'));
|
|
108
|
+
}
|
|
109
|
+
const message = choice.message;
|
|
110
|
+
// Check if LLM wants to call tools
|
|
111
|
+
if (message.tool_calls && message.tool_calls.length > 0) {
|
|
112
|
+
// Return tool calls as a special JSON format that the bot can parse
|
|
113
|
+
// Format: __TOOL_CALLS__<JSON>
|
|
114
|
+
const toolCallsData = {
|
|
115
|
+
tool_calls: message.tool_calls,
|
|
116
|
+
message: message.content || ''
|
|
117
|
+
};
|
|
118
|
+
const result = `__TOOL_CALLS__${JSON.stringify(toolCallsData)}`;
|
|
119
|
+
this.consecutiveFailures = 0;
|
|
120
|
+
return ok(result);
|
|
121
|
+
}
|
|
122
|
+
// Regular text response
|
|
123
|
+
// Allow empty string as valid response, only error if content is null/undefined
|
|
124
|
+
if (message.content === null || message.content === undefined) {
|
|
125
|
+
this.consecutiveFailures++;
|
|
126
|
+
return err(this.createError(ProviderErrorType.INVALID_REQUEST, 'No content in response'));
|
|
127
|
+
}
|
|
128
|
+
// Reset failure counter on success
|
|
129
|
+
this.consecutiveFailures = 0;
|
|
130
|
+
return ok(message.content);
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
clearTimeout(timeoutId);
|
|
134
|
+
this.consecutiveFailures++;
|
|
135
|
+
return err(this.handleError(error));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Generate streaming chat completion
|
|
140
|
+
*
|
|
141
|
+
* @param messages - Conversation messages
|
|
142
|
+
* @param options - Optional chat configuration
|
|
143
|
+
* @returns Result with async iterator of text chunks or error
|
|
144
|
+
*/
|
|
145
|
+
async streamChat(messages, options) {
|
|
146
|
+
const controller = new AbortController();
|
|
147
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
148
|
+
try {
|
|
149
|
+
// Build OpenAI messages array, prepending system prompt if provided
|
|
150
|
+
const openaiStreamMessages = [
|
|
151
|
+
...(options?.system ? [{ role: 'system', content: options.system }] : []),
|
|
152
|
+
...messages.map((msg) => ({
|
|
153
|
+
role: msg.role,
|
|
154
|
+
content: msg.content,
|
|
155
|
+
...(msg.tool_call_id && { tool_call_id: msg.tool_call_id }),
|
|
156
|
+
...(msg.tool_calls && { tool_calls: msg.tool_calls }),
|
|
157
|
+
})),
|
|
158
|
+
];
|
|
159
|
+
const requestBody = {
|
|
160
|
+
model: options?.model || this.defaultModel,
|
|
161
|
+
messages: openaiStreamMessages,
|
|
162
|
+
max_completion_tokens: options?.maxTokens || this.defaultMaxTokens,
|
|
163
|
+
temperature: options?.temperature,
|
|
164
|
+
stop: options?.stopSequences,
|
|
165
|
+
stream: true,
|
|
166
|
+
};
|
|
167
|
+
const response = await fetch(`${this.baseURL}/v1/chat/completions`, {
|
|
168
|
+
method: 'POST',
|
|
169
|
+
headers: {
|
|
170
|
+
'Content-Type': 'application/json',
|
|
171
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
172
|
+
},
|
|
173
|
+
body: JSON.stringify(requestBody),
|
|
174
|
+
signal: controller.signal,
|
|
175
|
+
// @ts-ignore - Node.js fetch accepts agent option
|
|
176
|
+
agent: this.httpsAgent,
|
|
177
|
+
});
|
|
178
|
+
clearTimeout(timeoutId);
|
|
179
|
+
if (!response.ok) {
|
|
180
|
+
this.consecutiveFailures++;
|
|
181
|
+
return err(await this.handleHTTPError(response));
|
|
182
|
+
}
|
|
183
|
+
if (!response.body) {
|
|
184
|
+
this.consecutiveFailures++;
|
|
185
|
+
return err(this.createError(ProviderErrorType.INVALID_REQUEST, 'No response body for streaming'));
|
|
186
|
+
}
|
|
187
|
+
// Create async iterator from stream
|
|
188
|
+
const iterator = this.createStreamIterator(response.body);
|
|
189
|
+
// Reset failure counter on success
|
|
190
|
+
this.consecutiveFailures = 0;
|
|
191
|
+
return ok(iterator);
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
clearTimeout(timeoutId);
|
|
195
|
+
this.consecutiveFailures++;
|
|
196
|
+
return err(this.handleError(error));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Check if provider is healthy
|
|
201
|
+
*
|
|
202
|
+
* @returns True if provider is responding correctly
|
|
203
|
+
*/
|
|
204
|
+
async isHealthy() {
|
|
205
|
+
// Passive health check: only monitor consecutive failures
|
|
206
|
+
// Don't make actual API calls to avoid costs and false positives from slow admin endpoints
|
|
207
|
+
//
|
|
208
|
+
// This approach is consistent with AnthropicProvider and provides more accurate
|
|
209
|
+
// health status by reflecting actual chat request success/failure rather than
|
|
210
|
+
// administrative endpoint availability.
|
|
211
|
+
return this.consecutiveFailures < this.maxConsecutiveFailures;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Reset provider health status
|
|
215
|
+
*
|
|
216
|
+
* Clears consecutive failure counter and marks provider as healthy.
|
|
217
|
+
*/
|
|
218
|
+
resetHealth() {
|
|
219
|
+
this.consecutiveFailures = 0;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Get list of available models
|
|
223
|
+
*
|
|
224
|
+
* @returns Result with array of model IDs or error
|
|
225
|
+
*/
|
|
226
|
+
async getAvailableModels() {
|
|
227
|
+
const controller = new AbortController();
|
|
228
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
229
|
+
try {
|
|
230
|
+
const response = await fetch(`${this.baseURL}/v1/models`, {
|
|
231
|
+
method: 'GET',
|
|
232
|
+
headers: {
|
|
233
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
234
|
+
},
|
|
235
|
+
signal: controller.signal,
|
|
236
|
+
// @ts-ignore - Node.js fetch accepts agent option
|
|
237
|
+
agent: this.httpsAgent,
|
|
238
|
+
});
|
|
239
|
+
clearTimeout(timeoutId);
|
|
240
|
+
if (!response.ok) {
|
|
241
|
+
return err(await this.handleHTTPError(response));
|
|
242
|
+
}
|
|
243
|
+
const data = (await response.json());
|
|
244
|
+
const modelIds = data.data.map((model) => model.id);
|
|
245
|
+
return ok(modelIds);
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
clearTimeout(timeoutId);
|
|
249
|
+
return err(this.handleError(error));
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Create async iterator from ReadableStream
|
|
254
|
+
*/
|
|
255
|
+
async *createStreamIterator(stream) {
|
|
256
|
+
const reader = stream.getReader();
|
|
257
|
+
const decoder = new TextDecoder();
|
|
258
|
+
let buffer = '';
|
|
259
|
+
try {
|
|
260
|
+
while (true) {
|
|
261
|
+
const { done, value } = await reader.read();
|
|
262
|
+
if (done)
|
|
263
|
+
break;
|
|
264
|
+
buffer += decoder.decode(value, { stream: true });
|
|
265
|
+
const lines = buffer.split('\n');
|
|
266
|
+
buffer = lines.pop() || '';
|
|
267
|
+
for (const line of lines) {
|
|
268
|
+
const trimmed = line.trim();
|
|
269
|
+
if (!trimmed || trimmed === 'data: [DONE]')
|
|
270
|
+
continue;
|
|
271
|
+
if (trimmed.startsWith('data: ')) {
|
|
272
|
+
try {
|
|
273
|
+
const jsonStr = trimmed.substring(6);
|
|
274
|
+
const chunk = JSON.parse(jsonStr);
|
|
275
|
+
const delta = chunk.choices[0]?.delta;
|
|
276
|
+
if (delta?.content !== undefined && delta?.content !== null) {
|
|
277
|
+
yield delta.content;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
catch (e) {
|
|
281
|
+
// Skip malformed JSON chunks
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
finally {
|
|
289
|
+
reader.releaseLock();
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Handle HTTP error responses
|
|
294
|
+
*/
|
|
295
|
+
async handleHTTPError(response) {
|
|
296
|
+
const status = response.status;
|
|
297
|
+
// Try to extract error message from response body
|
|
298
|
+
let errorMessage = `HTTP ${status}`;
|
|
299
|
+
try {
|
|
300
|
+
const errorData = (await response.json());
|
|
301
|
+
if (errorData.error?.message) {
|
|
302
|
+
errorMessage = errorData.error.message;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
catch (e) {
|
|
306
|
+
// If JSON parsing fails, use status text
|
|
307
|
+
errorMessage = response.statusText || errorMessage;
|
|
308
|
+
}
|
|
309
|
+
// Map HTTP status codes to ProviderErrorType
|
|
310
|
+
if (status === 401 || status === 403) {
|
|
311
|
+
return this.createError(ProviderErrorType.AUTH_FAILED, `Authentication failed: ${errorMessage}`);
|
|
312
|
+
}
|
|
313
|
+
if (status === 429) {
|
|
314
|
+
return this.createError(ProviderErrorType.RATE_LIMIT, `Rate limit exceeded: ${errorMessage}`);
|
|
315
|
+
}
|
|
316
|
+
if (status === 404) {
|
|
317
|
+
return this.createError(ProviderErrorType.MODEL_NOT_FOUND, `Model not found: ${errorMessage}`);
|
|
318
|
+
}
|
|
319
|
+
if (status >= 400 && status < 500) {
|
|
320
|
+
return this.createError(ProviderErrorType.INVALID_REQUEST, `Invalid request: ${errorMessage}`);
|
|
321
|
+
}
|
|
322
|
+
if (status >= 500) {
|
|
323
|
+
return this.createError(ProviderErrorType.UNKNOWN, `Server error: ${errorMessage}`);
|
|
324
|
+
}
|
|
325
|
+
return this.createError(ProviderErrorType.UNKNOWN, errorMessage);
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Handle general errors (network, timeout, etc.)
|
|
329
|
+
*/
|
|
330
|
+
handleError(error) {
|
|
331
|
+
// Abort/timeout errors
|
|
332
|
+
if (error.name === 'AbortError') {
|
|
333
|
+
return this.createError(ProviderErrorType.TIMEOUT, `Request timeout after ${this.timeoutMs}ms`);
|
|
334
|
+
}
|
|
335
|
+
// Network errors
|
|
336
|
+
if (error.code === 'ENOTFOUND' ||
|
|
337
|
+
error.code === 'ECONNREFUSED' ||
|
|
338
|
+
error.message?.includes('fetch failed')) {
|
|
339
|
+
return this.createError(ProviderErrorType.NETWORK_ERROR, 'Network connection failed');
|
|
340
|
+
}
|
|
341
|
+
// Unknown errors
|
|
342
|
+
return this.createError(ProviderErrorType.UNKNOWN, error.message || 'Unknown error occurred');
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Create standardized ProviderError
|
|
346
|
+
*/
|
|
347
|
+
createError(type, message) {
|
|
348
|
+
return {
|
|
349
|
+
type,
|
|
350
|
+
message,
|
|
351
|
+
provider: this.name,
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=model-manager-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-manager-provider.js","sourceRoot":"","sources":["../../src/providers/model-manager-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
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 type { LLMProvider, Message, ChatOptions, ProviderError, ProviderConfig } from './types.js';
|
|
8
|
+
import type { Result } from '../common/result.js';
|
|
9
|
+
/**
|
|
10
|
+
* Provider health status tracking
|
|
11
|
+
*/
|
|
12
|
+
interface ProviderHealth {
|
|
13
|
+
isHealthy: boolean;
|
|
14
|
+
consecutiveFailures: number;
|
|
15
|
+
lastCheck: Date;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Provider Manager
|
|
19
|
+
*
|
|
20
|
+
* Manages multiple LLM providers with:
|
|
21
|
+
* - Model-based routing (claude→Anthropic, gpt→Model Manager)
|
|
22
|
+
* - Automatic fallback on provider failure
|
|
23
|
+
* - Retry logic with exponential backoff
|
|
24
|
+
* - Circuit breaker pattern (unhealthy after N consecutive failures)
|
|
25
|
+
* - Periodic health checks
|
|
26
|
+
* - Rate limit handling with backoff
|
|
27
|
+
*/
|
|
28
|
+
export declare class ProviderManager {
|
|
29
|
+
private readonly config;
|
|
30
|
+
private providers;
|
|
31
|
+
private healthStatus;
|
|
32
|
+
private healthCheckInterval?;
|
|
33
|
+
/**
|
|
34
|
+
* Circuit breaker configuration
|
|
35
|
+
*/
|
|
36
|
+
private readonly maxConsecutiveFailures;
|
|
37
|
+
/**
|
|
38
|
+
* Rate limit backoff: 5s * 2^attempt
|
|
39
|
+
*/
|
|
40
|
+
private readonly rateLimitBaseDelayMs;
|
|
41
|
+
/**
|
|
42
|
+
* Create Provider Manager instance
|
|
43
|
+
*
|
|
44
|
+
* @param providers - Array of LLM providers to manage
|
|
45
|
+
* @param config - Provider configuration (primary, fallback, retry, health check)
|
|
46
|
+
*/
|
|
47
|
+
constructor(providers: LLMProvider[], config: ProviderConfig);
|
|
48
|
+
/**
|
|
49
|
+
* Generate chat completion with provider selection and fallback
|
|
50
|
+
*
|
|
51
|
+
* @param messages - Conversation messages
|
|
52
|
+
* @param options - Optional chat configuration
|
|
53
|
+
* @returns Result with response text or error
|
|
54
|
+
*/
|
|
55
|
+
chat(messages: Message[], options?: ChatOptions): Promise<Result<string, ProviderError>>;
|
|
56
|
+
/**
|
|
57
|
+
* Generate streaming chat completion with provider selection and fallback
|
|
58
|
+
*
|
|
59
|
+
* @param messages - Conversation messages
|
|
60
|
+
* @param options - Optional chat configuration
|
|
61
|
+
* @returns Result with async iterator of text chunks or error
|
|
62
|
+
*/
|
|
63
|
+
streamChat(messages: Message[], options?: ChatOptions): Promise<Result<AsyncIterable<string>, ProviderError>>;
|
|
64
|
+
/**
|
|
65
|
+
* Get combined list of available models from all healthy providers
|
|
66
|
+
*
|
|
67
|
+
* @returns Result with array of model IDs or error
|
|
68
|
+
*/
|
|
69
|
+
getAvailableModels(): Promise<Result<string[], ProviderError>>;
|
|
70
|
+
/**
|
|
71
|
+
* Get health status of all providers
|
|
72
|
+
*
|
|
73
|
+
* @returns Map of provider names to health status
|
|
74
|
+
*/
|
|
75
|
+
getHealthStatus(): Map<string, ProviderHealth>;
|
|
76
|
+
/**
|
|
77
|
+
* Manually trigger health check for all providers
|
|
78
|
+
*/
|
|
79
|
+
checkAllProvidersHealth(): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Clean up resources (stop health checks)
|
|
82
|
+
*/
|
|
83
|
+
dispose(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Select provider based on model name or use primary
|
|
86
|
+
*
|
|
87
|
+
* Model-based routing:
|
|
88
|
+
* - Models starting with "claude" → anthropic provider
|
|
89
|
+
* - Models starting with "gpt" → model-manager provider
|
|
90
|
+
* - Otherwise → primary provider from config
|
|
91
|
+
*/
|
|
92
|
+
private selectProvider;
|
|
93
|
+
/**
|
|
94
|
+
* Attempt operation with retry and exponential backoff
|
|
95
|
+
*
|
|
96
|
+
* @param providerName - Name of provider to use
|
|
97
|
+
* @param operation - Operation to attempt
|
|
98
|
+
* @returns Result from operation
|
|
99
|
+
*/
|
|
100
|
+
private attemptWithRetry;
|
|
101
|
+
/**
|
|
102
|
+
* Start periodic health checks for all providers
|
|
103
|
+
*/
|
|
104
|
+
private startHealthChecks;
|
|
105
|
+
/**
|
|
106
|
+
* Sleep utility for delays
|
|
107
|
+
*/
|
|
108
|
+
private sleep;
|
|
109
|
+
}
|
|
110
|
+
export {};
|
|
111
|
+
//# sourceMappingURL=provider-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-manager.d.ts","sourceRoot":"","sources":["../../src/providers/provider-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,OAAO,EACP,WAAW,EACX,aAAa,EACb,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD;;GAEG;AACH,UAAU,cAAc;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAuBxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAtBzB,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,mBAAmB,CAAC,CAAiB;IAE7C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAK;IAE5C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAE7C;;;;;OAKG;gBAED,SAAS,EAAE,WAAW,EAAE,EACP,MAAM,EAAE,cAAc;IAgCzC;;;;;;OAMG;IACG,IAAI,CACR,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAiDzC;;;;;;OAMG;IACG,UAAU,CACd,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;IAkDxD;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC;IAmCpE;;;;OAIG;IACH,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAI9C;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuC9C;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAkBtB;;;;;;OAMG;YACW,gBAAgB;IAiH9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
|