erosolar-cli 1.6.3 → 1.6.5
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/core/resultVerification.d.ts +138 -0
- package/dist/core/resultVerification.d.ts.map +1 -0
- package/dist/core/resultVerification.js +465 -0
- package/dist/core/resultVerification.js.map +1 -0
- package/dist/plugins/providers/anthropic/index.d.ts +9 -0
- package/dist/plugins/providers/anthropic/index.d.ts.map +1 -1
- package/dist/plugins/providers/anthropic/index.js +13 -1
- package/dist/plugins/providers/anthropic/index.js.map +1 -1
- package/dist/plugins/providers/deepseek/index.d.ts +9 -0
- package/dist/plugins/providers/deepseek/index.d.ts.map +1 -1
- package/dist/plugins/providers/deepseek/index.js +28 -1
- package/dist/plugins/providers/deepseek/index.js.map +1 -1
- package/dist/plugins/providers/google/index.d.ts +9 -0
- package/dist/plugins/providers/google/index.d.ts.map +1 -1
- package/dist/plugins/providers/google/index.js +13 -1
- package/dist/plugins/providers/google/index.js.map +1 -1
- package/dist/plugins/providers/ollama/index.d.ts +5 -1
- package/dist/plugins/providers/ollama/index.d.ts.map +1 -1
- package/dist/plugins/providers/ollama/index.js +11 -2
- package/dist/plugins/providers/ollama/index.js.map +1 -1
- package/dist/plugins/providers/openai/index.d.ts +9 -0
- package/dist/plugins/providers/openai/index.d.ts.map +1 -1
- package/dist/plugins/providers/openai/index.js +13 -1
- package/dist/plugins/providers/openai/index.js.map +1 -1
- package/dist/plugins/providers/xai/index.d.ts +9 -0
- package/dist/plugins/providers/xai/index.d.ts.map +1 -1
- package/dist/plugins/providers/xai/index.js +15 -1
- package/dist/plugins/providers/xai/index.js.map +1 -1
- package/dist/providers/anthropicProvider.d.ts +7 -0
- package/dist/providers/anthropicProvider.d.ts.map +1 -1
- package/dist/providers/anthropicProvider.js +87 -9
- package/dist/providers/anthropicProvider.js.map +1 -1
- package/dist/providers/googleProvider.d.ts +17 -0
- package/dist/providers/googleProvider.d.ts.map +1 -1
- package/dist/providers/googleProvider.js +113 -32
- package/dist/providers/googleProvider.js.map +1 -1
- package/dist/providers/openaiChatCompletionsProvider.d.ts +26 -0
- package/dist/providers/openaiChatCompletionsProvider.d.ts.map +1 -1
- package/dist/providers/openaiChatCompletionsProvider.js +162 -27
- package/dist/providers/openaiChatCompletionsProvider.js.map +1 -1
- package/dist/providers/openaiResponsesProvider.d.ts +17 -0
- package/dist/providers/openaiResponsesProvider.d.ts.map +1 -1
- package/dist/providers/openaiResponsesProvider.js +109 -25
- package/dist/providers/openaiResponsesProvider.js.map +1 -1
- package/dist/providers/resilientProvider.d.ts.map +1 -1
- package/dist/providers/resilientProvider.js +47 -1
- package/dist/providers/resilientProvider.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +6 -0
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +48 -0
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/taskCompletionDetector.d.ts +4 -0
- package/dist/shell/taskCompletionDetector.d.ts.map +1 -1
- package/dist/shell/taskCompletionDetector.js +27 -1
- package/dist/shell/taskCompletionDetector.js.map +1 -1
- package/dist/tools/bashTools.d.ts.map +1 -1
- package/dist/tools/bashTools.js +26 -8
- package/dist/tools/bashTools.js.map +1 -1
- package/dist/tools/browserAutomationTools.d.ts.map +1 -1
- package/dist/tools/browserAutomationTools.js +9 -1
- package/dist/tools/browserAutomationTools.js.map +1 -1
- package/dist/tools/cloudTools.d.ts.map +1 -1
- package/dist/tools/cloudTools.js +436 -35
- package/dist/tools/cloudTools.js.map +1 -1
- package/dist/tools/codeGenerationTools.d.ts.map +1 -1
- package/dist/tools/codeGenerationTools.js +77 -7
- package/dist/tools/codeGenerationTools.js.map +1 -1
- package/dist/ui/persistentPrompt.d.ts +10 -0
- package/dist/ui/persistentPrompt.d.ts.map +1 -1
- package/dist/ui/persistentPrompt.js +82 -18
- package/dist/ui/persistentPrompt.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,44 @@
|
|
|
1
1
|
import { GoogleGenAI, } from '@google/genai';
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// Error Recovery Constants
|
|
4
|
+
// ============================================================================
|
|
5
|
+
const RECOVERABLE_ERROR_PATTERNS = [
|
|
6
|
+
'premature close',
|
|
7
|
+
'premature end',
|
|
8
|
+
'unexpected end',
|
|
9
|
+
'aborted',
|
|
10
|
+
'fetcherror',
|
|
11
|
+
'invalid response body',
|
|
12
|
+
'gunzip',
|
|
13
|
+
'decompress',
|
|
14
|
+
'econnreset',
|
|
15
|
+
'econnrefused',
|
|
16
|
+
'epipe',
|
|
17
|
+
'socket hang up',
|
|
18
|
+
'network',
|
|
19
|
+
'timeout',
|
|
20
|
+
'rate limit',
|
|
21
|
+
'429',
|
|
22
|
+
'500',
|
|
23
|
+
'502',
|
|
24
|
+
'503',
|
|
25
|
+
'504',
|
|
26
|
+
];
|
|
27
|
+
function isRecoverableError(error) {
|
|
28
|
+
if (!(error instanceof Error))
|
|
29
|
+
return false;
|
|
30
|
+
const message = error.message.toLowerCase();
|
|
31
|
+
const errorName = error.name?.toLowerCase() ?? '';
|
|
32
|
+
const allText = `${message} ${errorName}`;
|
|
33
|
+
return RECOVERABLE_ERROR_PATTERNS.some(pattern => allText.includes(pattern));
|
|
34
|
+
}
|
|
2
35
|
export class GoogleGenAIProvider {
|
|
3
36
|
id;
|
|
4
37
|
model;
|
|
5
38
|
client;
|
|
6
39
|
temperature;
|
|
7
40
|
maxOutputTokens;
|
|
41
|
+
maxRetries;
|
|
8
42
|
constructor(options) {
|
|
9
43
|
this.client = new GoogleGenAI({
|
|
10
44
|
apiKey: options.apiKey,
|
|
@@ -13,44 +47,91 @@ export class GoogleGenAIProvider {
|
|
|
13
47
|
this.model = options.model;
|
|
14
48
|
this.temperature = options.temperature;
|
|
15
49
|
this.maxOutputTokens = options.maxOutputTokens;
|
|
50
|
+
this.maxRetries = options.maxRetries ?? 3;
|
|
16
51
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Sleep for a given number of milliseconds
|
|
54
|
+
*/
|
|
55
|
+
sleep(ms) {
|
|
56
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Calculate exponential backoff delay with jitter
|
|
60
|
+
*/
|
|
61
|
+
getBackoffDelay(attempt, baseDelay = 1000, maxDelay = 30000) {
|
|
62
|
+
const delay = Math.min(baseDelay * Math.pow(2, attempt), maxDelay);
|
|
63
|
+
return delay + Math.random() * delay * 0.1;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Execute request with retry logic for transient errors
|
|
67
|
+
*/
|
|
68
|
+
async executeWithRetry(operation, operationName) {
|
|
69
|
+
let lastError;
|
|
70
|
+
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
71
|
+
try {
|
|
72
|
+
return await operation();
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
76
|
+
if (isRecoverableError(error) && attempt < this.maxRetries) {
|
|
77
|
+
const delay = this.getBackoffDelay(attempt);
|
|
78
|
+
console.warn(`[${this.id}] ${operationName} failed (attempt ${attempt + 1}/${this.maxRetries + 1}): ` +
|
|
79
|
+
`${lastError.message}. Retrying in ${Math.round(delay)}ms...`);
|
|
80
|
+
await this.sleep(delay);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
32
85
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
86
|
+
throw lastError;
|
|
87
|
+
}
|
|
88
|
+
async generate(messages, tools) {
|
|
89
|
+
return this.executeWithRetry(async () => {
|
|
90
|
+
const { contents, systemInstruction } = mapConversation(messages);
|
|
91
|
+
const config = {};
|
|
92
|
+
if (systemInstruction) {
|
|
93
|
+
config.systemInstruction = systemInstruction;
|
|
94
|
+
}
|
|
95
|
+
if (typeof this.temperature === 'number') {
|
|
96
|
+
config.temperature = this.temperature;
|
|
97
|
+
}
|
|
98
|
+
if (typeof this.maxOutputTokens === 'number') {
|
|
99
|
+
config.maxOutputTokens = this.maxOutputTokens;
|
|
100
|
+
}
|
|
101
|
+
const mappedTools = mapTools(tools);
|
|
102
|
+
if (mappedTools.length > 0) {
|
|
103
|
+
config.tools = mappedTools;
|
|
104
|
+
}
|
|
105
|
+
const response = await this.client.models.generateContent({
|
|
106
|
+
model: this.model,
|
|
107
|
+
contents: contents.length ? contents : createEmptyUserContent(),
|
|
108
|
+
config: Object.keys(config).length ? config : undefined,
|
|
109
|
+
});
|
|
110
|
+
const usage = mapUsage(response.usageMetadata);
|
|
111
|
+
// Safely extract tool calls with error recovery
|
|
112
|
+
let toolCalls = [];
|
|
113
|
+
try {
|
|
114
|
+
toolCalls = mapFunctionCalls(response.functionCalls ?? []);
|
|
115
|
+
}
|
|
116
|
+
catch (parseError) {
|
|
117
|
+
console.warn(`[${this.id}] Failed to parse function calls, recovering: ` +
|
|
118
|
+
`${parseError instanceof Error ? parseError.message : String(parseError)}`);
|
|
119
|
+
}
|
|
120
|
+
const content = response.text?.trim() ?? '';
|
|
121
|
+
if (toolCalls.length > 0) {
|
|
122
|
+
return {
|
|
123
|
+
type: 'tool_calls',
|
|
124
|
+
toolCalls,
|
|
125
|
+
content,
|
|
126
|
+
usage,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
42
129
|
return {
|
|
43
|
-
type: '
|
|
44
|
-
toolCalls,
|
|
130
|
+
type: 'message',
|
|
45
131
|
content,
|
|
46
132
|
usage,
|
|
47
133
|
};
|
|
48
|
-
}
|
|
49
|
-
return {
|
|
50
|
-
type: 'message',
|
|
51
|
-
content,
|
|
52
|
-
usage,
|
|
53
|
-
};
|
|
134
|
+
}, 'generate');
|
|
54
135
|
}
|
|
55
136
|
}
|
|
56
137
|
function mapConversation(messages) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"googleProvider.js","sourceRoot":"","sources":["../../src/providers/googleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,GAMZ,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"googleProvider.js","sourceRoot":"","sources":["../../src/providers/googleProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,41 @@
|
|
|
1
1
|
import type { ConversationMessage, LLMProvider, ProviderId, ProviderResponse, ProviderToolDefinition } from '../core/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Custom error class for provider-specific failures
|
|
4
|
+
*/
|
|
5
|
+
export declare class ProviderStreamError extends Error {
|
|
6
|
+
readonly isRetryable: boolean;
|
|
7
|
+
readonly originalError?: Error;
|
|
8
|
+
readonly providerId: string;
|
|
9
|
+
constructor(message: string, providerId: string, originalError?: Error, isRetryable?: boolean);
|
|
10
|
+
}
|
|
2
11
|
interface OpenAIChatCompletionsOptions {
|
|
3
12
|
apiKey: string;
|
|
4
13
|
model: string;
|
|
5
14
|
providerId?: ProviderId;
|
|
6
15
|
baseURL?: string;
|
|
16
|
+
/** Request timeout in milliseconds (default: 120000) */
|
|
17
|
+
timeout?: number;
|
|
18
|
+
/** Maximum retries for transient errors (default: 3) */
|
|
19
|
+
maxRetries?: number;
|
|
7
20
|
}
|
|
8
21
|
export declare class OpenAIChatCompletionsProvider implements LLMProvider {
|
|
9
22
|
readonly id: ProviderId;
|
|
10
23
|
readonly model: string;
|
|
11
24
|
private readonly client;
|
|
25
|
+
private readonly maxRetries;
|
|
12
26
|
constructor(options: OpenAIChatCompletionsOptions);
|
|
27
|
+
/**
|
|
28
|
+
* Sleep for a given number of milliseconds
|
|
29
|
+
*/
|
|
30
|
+
private sleep;
|
|
31
|
+
/**
|
|
32
|
+
* Calculate exponential backoff delay
|
|
33
|
+
*/
|
|
34
|
+
private getBackoffDelay;
|
|
35
|
+
/**
|
|
36
|
+
* Execute request with retry logic for transient errors
|
|
37
|
+
*/
|
|
38
|
+
private executeWithRetry;
|
|
13
39
|
generate(messages: ConversationMessage[], tools: ProviderToolDefinition[]): Promise<ProviderResponse>;
|
|
14
40
|
}
|
|
15
41
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openaiChatCompletionsProvider.d.ts","sourceRoot":"","sources":["../../src/providers/openaiChatCompletionsProvider.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EAGvB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"openaiChatCompletionsProvider.d.ts","sourceRoot":"","sources":["../../src/providers/openaiChatCompletionsProvider.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EAGvB,MAAM,kBAAkB,CAAC;AA0B1B;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,EAAE,WAAW,UAAO;CAY3F;AAsBD,UAAU,4BAA4B;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,qBAAa,6BAA8B,YAAW,WAAW;IAC/D,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBACxB,OAAO,EAAE,4BAA4B;IAiBjD;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;YACW,gBAAgB;IAqCxB,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAgG5G"}
|
|
@@ -1,11 +1,68 @@
|
|
|
1
1
|
import OpenAI from 'openai';
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// Stream/Fetch Error Types for Detection
|
|
4
|
+
// ============================================================================
|
|
5
|
+
/**
|
|
6
|
+
* Error types that indicate stream or network failures that should be retried
|
|
7
|
+
*/
|
|
8
|
+
const RECOVERABLE_ERROR_PATTERNS = [
|
|
9
|
+
'premature close',
|
|
10
|
+
'premature end',
|
|
11
|
+
'unexpected end',
|
|
12
|
+
'aborted',
|
|
13
|
+
'fetcherror',
|
|
14
|
+
'invalid response body',
|
|
15
|
+
'gunzip',
|
|
16
|
+
'decompress',
|
|
17
|
+
'econnreset',
|
|
18
|
+
'econnrefused',
|
|
19
|
+
'epipe',
|
|
20
|
+
'socket hang up',
|
|
21
|
+
'network',
|
|
22
|
+
'timeout',
|
|
23
|
+
];
|
|
24
|
+
/**
|
|
25
|
+
* Custom error class for provider-specific failures
|
|
26
|
+
*/
|
|
27
|
+
export class ProviderStreamError extends Error {
|
|
28
|
+
isRetryable;
|
|
29
|
+
originalError;
|
|
30
|
+
providerId;
|
|
31
|
+
constructor(message, providerId, originalError, isRetryable = true) {
|
|
32
|
+
super(message);
|
|
33
|
+
this.name = 'ProviderStreamError';
|
|
34
|
+
this.providerId = providerId;
|
|
35
|
+
this.originalError = originalError;
|
|
36
|
+
this.isRetryable = isRetryable;
|
|
37
|
+
// Preserve stack trace
|
|
38
|
+
if (originalError?.stack) {
|
|
39
|
+
this.stack = `${this.stack}\nCaused by: ${originalError.stack}`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Check if an error is recoverable (should be retried)
|
|
45
|
+
*/
|
|
46
|
+
function isRecoverableError(error) {
|
|
47
|
+
if (!(error instanceof Error))
|
|
48
|
+
return false;
|
|
49
|
+
const message = error.message.toLowerCase();
|
|
50
|
+
const errorName = error.name?.toLowerCase() ?? '';
|
|
51
|
+
const errorCode = error.code?.toLowerCase() ?? '';
|
|
52
|
+
// Check all sources for recoverable patterns
|
|
53
|
+
const allText = `${message} ${errorName} ${errorCode}`;
|
|
54
|
+
return RECOVERABLE_ERROR_PATTERNS.some(pattern => allText.includes(pattern));
|
|
55
|
+
}
|
|
2
56
|
export class OpenAIChatCompletionsProvider {
|
|
3
57
|
id;
|
|
4
58
|
model;
|
|
5
59
|
client;
|
|
60
|
+
maxRetries;
|
|
6
61
|
constructor(options) {
|
|
7
62
|
const clientConfig = {
|
|
8
63
|
apiKey: options.apiKey,
|
|
64
|
+
timeout: options.timeout ?? 120000,
|
|
65
|
+
maxRetries: 0, // We handle retries ourselves for better control
|
|
9
66
|
};
|
|
10
67
|
if (options.baseURL) {
|
|
11
68
|
clientConfig.baseURL = options.baseURL;
|
|
@@ -13,40 +70,118 @@ export class OpenAIChatCompletionsProvider {
|
|
|
13
70
|
this.client = new OpenAI(clientConfig);
|
|
14
71
|
this.id = options.providerId ?? 'openai';
|
|
15
72
|
this.model = options.model;
|
|
73
|
+
this.maxRetries = options.maxRetries ?? 3;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Sleep for a given number of milliseconds
|
|
77
|
+
*/
|
|
78
|
+
sleep(ms) {
|
|
79
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Calculate exponential backoff delay
|
|
83
|
+
*/
|
|
84
|
+
getBackoffDelay(attempt, baseDelay = 1000, maxDelay = 30000) {
|
|
85
|
+
const delay = Math.min(baseDelay * Math.pow(2, attempt), maxDelay);
|
|
86
|
+
// Add jitter to prevent thundering herd
|
|
87
|
+
return delay + Math.random() * delay * 0.1;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Execute request with retry logic for transient errors
|
|
91
|
+
*/
|
|
92
|
+
async executeWithRetry(operation, operationName) {
|
|
93
|
+
let lastError;
|
|
94
|
+
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
95
|
+
try {
|
|
96
|
+
return await operation();
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
100
|
+
// Check if this is a recoverable error
|
|
101
|
+
if (isRecoverableError(error) && attempt < this.maxRetries) {
|
|
102
|
+
const delay = this.getBackoffDelay(attempt);
|
|
103
|
+
console.warn(`[${this.id}] ${operationName} failed (attempt ${attempt + 1}/${this.maxRetries + 1}): ` +
|
|
104
|
+
`${lastError.message}. Retrying in ${Math.round(delay)}ms...`);
|
|
105
|
+
await this.sleep(delay);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
// Non-recoverable error or out of retries
|
|
109
|
+
throw new ProviderStreamError(`${operationName} failed after ${attempt + 1} attempts: ${lastError.message}`, this.id, lastError, isRecoverableError(error));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Should not reach here, but TypeScript needs this
|
|
113
|
+
throw lastError;
|
|
16
114
|
}
|
|
17
115
|
async generate(messages, tools) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const completion = await this.client.chat.completions.create(request);
|
|
25
|
-
assertHasChoices(completion);
|
|
26
|
-
const choice = completion.choices[0];
|
|
27
|
-
const usage = mapUsage(completion.usage);
|
|
28
|
-
if (!choice) {
|
|
29
|
-
return {
|
|
30
|
-
type: 'message',
|
|
31
|
-
content: '',
|
|
32
|
-
usage,
|
|
116
|
+
return this.executeWithRetry(async () => {
|
|
117
|
+
const request = {
|
|
118
|
+
model: this.model,
|
|
119
|
+
messages: mapMessages(messages),
|
|
120
|
+
tools: tools.length ? tools.map(mapTool) : undefined,
|
|
121
|
+
stream: false,
|
|
33
122
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
123
|
+
let completion;
|
|
124
|
+
try {
|
|
125
|
+
const result = await this.client.chat.completions.create(request);
|
|
126
|
+
assertHasChoices(result);
|
|
127
|
+
completion = result;
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
// Wrap and rethrow with more context
|
|
131
|
+
if (error instanceof Error) {
|
|
132
|
+
// Check for specific API error types
|
|
133
|
+
const apiError = error;
|
|
134
|
+
if (apiError.status === 401) {
|
|
135
|
+
throw new ProviderStreamError(`Authentication failed for ${this.id}. Check your API key.`, this.id, error, false // Not retryable
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
if (apiError.status === 403) {
|
|
139
|
+
throw new ProviderStreamError(`Access forbidden for ${this.id}. Check your permissions.`, this.id, error, false // Not retryable
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
// Let recoverable errors propagate for retry
|
|
143
|
+
if (isRecoverableError(error)) {
|
|
144
|
+
throw error;
|
|
145
|
+
}
|
|
146
|
+
// Wrap other errors
|
|
147
|
+
throw new ProviderStreamError(`API request failed: ${error.message}`, this.id, error, false);
|
|
148
|
+
}
|
|
149
|
+
throw error;
|
|
150
|
+
}
|
|
151
|
+
const choice = completion.choices[0];
|
|
152
|
+
const usage = mapUsage(completion.usage);
|
|
153
|
+
if (!choice) {
|
|
154
|
+
return {
|
|
155
|
+
type: 'message',
|
|
156
|
+
content: '',
|
|
157
|
+
usage,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
// Safely extract tool calls with error recovery
|
|
161
|
+
let toolCalls = [];
|
|
162
|
+
try {
|
|
163
|
+
toolCalls = (choice.message.tool_calls ?? []).map(mapToolCall);
|
|
164
|
+
}
|
|
165
|
+
catch (parseError) {
|
|
166
|
+
console.warn(`[${this.id}] Failed to parse tool calls, recovering: ` +
|
|
167
|
+
`${parseError instanceof Error ? parseError.message : String(parseError)}`);
|
|
168
|
+
// Continue with empty tool calls rather than failing
|
|
169
|
+
}
|
|
170
|
+
const content = extractMessageContent(choice);
|
|
171
|
+
if (toolCalls.length > 0) {
|
|
172
|
+
return {
|
|
173
|
+
type: 'tool_calls',
|
|
174
|
+
toolCalls,
|
|
175
|
+
content,
|
|
176
|
+
usage,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
38
179
|
return {
|
|
39
|
-
type: '
|
|
40
|
-
toolCalls,
|
|
180
|
+
type: 'message',
|
|
41
181
|
content,
|
|
42
182
|
usage,
|
|
43
183
|
};
|
|
44
|
-
}
|
|
45
|
-
return {
|
|
46
|
-
type: 'message',
|
|
47
|
-
content,
|
|
48
|
-
usage,
|
|
49
|
-
};
|
|
184
|
+
}, 'generate');
|
|
50
185
|
}
|
|
51
186
|
}
|
|
52
187
|
function mapMessages(messages) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openaiChatCompletionsProvider.js","sourceRoot":"","sources":["../../src/providers/openaiChatCompletionsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"openaiChatCompletionsProvider.js","sourceRoot":"","sources":["../../src/providers/openaiChatCompletionsProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,10 @@ interface OpenAIProviderOptions {
|
|
|
6
6
|
baseURL?: string;
|
|
7
7
|
reasoningEffort?: ReasoningEffortLevel;
|
|
8
8
|
textVerbosity?: TextVerbosityLevel;
|
|
9
|
+
/** Maximum retries for transient errors (default: 3) */
|
|
10
|
+
maxRetries?: number;
|
|
11
|
+
/** Request timeout in milliseconds (default: 120000) */
|
|
12
|
+
timeout?: number;
|
|
9
13
|
}
|
|
10
14
|
export declare class OpenAIResponsesProvider implements LLMProvider {
|
|
11
15
|
readonly id: ProviderId;
|
|
@@ -13,7 +17,20 @@ export declare class OpenAIResponsesProvider implements LLMProvider {
|
|
|
13
17
|
private readonly client;
|
|
14
18
|
private readonly reasoningEffort?;
|
|
15
19
|
private readonly textVerbosity?;
|
|
20
|
+
private readonly maxRetries;
|
|
16
21
|
constructor(options: OpenAIProviderOptions);
|
|
22
|
+
/**
|
|
23
|
+
* Sleep for a given number of milliseconds
|
|
24
|
+
*/
|
|
25
|
+
private sleep;
|
|
26
|
+
/**
|
|
27
|
+
* Calculate exponential backoff delay with jitter
|
|
28
|
+
*/
|
|
29
|
+
private getBackoffDelay;
|
|
30
|
+
/**
|
|
31
|
+
* Execute request with retry logic for transient errors
|
|
32
|
+
*/
|
|
33
|
+
private executeWithRetry;
|
|
17
34
|
generate(messages: ConversationMessage[], tools: ProviderToolDefinition[]): Promise<ProviderResponse>;
|
|
18
35
|
generateStream(messages: ConversationMessage[], tools: ProviderToolDefinition[]): AsyncIterableIterator<StreamChunk>;
|
|
19
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openaiResponsesProvider.d.ts","sourceRoot":"","sources":["../../src/providers/openaiResponsesProvider.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EAGtB,oBAAoB,EACpB,kBAAkB,EAClB,WAAW,EACZ,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"openaiResponsesProvider.d.ts","sourceRoot":"","sources":["../../src/providers/openaiResponsesProvider.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EAGtB,oBAAoB,EACpB,kBAAkB,EAClB,WAAW,EACZ,MAAM,kBAAkB,CAAC;AA+C1B,UAAU,qBAAqB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AASD,qBAAa,uBAAwB,YAAW,WAAW;IACzD,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,EAAE,qBAAqB;IAmB1C;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;YACW,gBAAgB;IA6BxB,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgDpG,cAAc,CACnB,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,KAAK,EAAE,sBAAsB,EAAE,GAC9B,qBAAqB,CAAC,WAAW,CAAC;CA6EtC"}
|