@openai/agents-core 0.6.0 → 0.7.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/agentToolRunConfig.js +2 -10
- package/dist/agentToolRunConfig.js.map +1 -1
- package/dist/agentToolRunConfig.mjs +2 -10
- package/dist/agentToolRunConfig.mjs.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/metadata.js +2 -2
- package/dist/metadata.mjs +2 -2
- package/dist/model.d.ts +146 -0
- package/dist/run.js +4 -6
- package/dist/run.js.map +1 -1
- package/dist/run.mjs +5 -7
- package/dist/run.mjs.map +1 -1
- package/dist/runner/modelRetry.d.ts +13 -0
- package/dist/runner/modelRetry.js +581 -0
- package/dist/runner/modelRetry.js.map +1 -0
- package/dist/runner/modelRetry.mjs +576 -0
- package/dist/runner/modelRetry.mjs.map +1 -0
- package/dist/runner/modelSettings.d.ts +1 -0
- package/dist/runner/modelSettings.js +9 -0
- package/dist/runner/modelSettings.js.map +1 -1
- package/dist/runner/modelSettings.mjs +7 -0
- package/dist/runner/modelSettings.mjs.map +1 -1
- package/dist/runner/modelSettingsMerge.d.ts +2 -0
- package/dist/runner/modelSettingsMerge.js +54 -0
- package/dist/runner/modelSettingsMerge.js.map +1 -0
- package/dist/runner/modelSettingsMerge.mjs +51 -0
- package/dist/runner/modelSettingsMerge.mjs.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,581 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.retryPolicies = void 0;
|
|
4
|
+
exports.getResponseWithRetry = getResponseWithRetry;
|
|
5
|
+
exports.getStreamedResponseWithRetry = getStreamedResponseWithRetry;
|
|
6
|
+
const usage_1 = require("../usage.js");
|
|
7
|
+
const DEFAULT_INITIAL_DELAY_MS = 250;
|
|
8
|
+
const DEFAULT_MAX_DELAY_MS = 2_000;
|
|
9
|
+
const DEFAULT_BACKOFF_MULTIPLIER = 2;
|
|
10
|
+
const DEFAULT_BACKOFF_JITTER = true;
|
|
11
|
+
const RETRY_AFTER_MS_HEADER = 'retry-after-ms';
|
|
12
|
+
const RETRY_AFTER_HEADER = 'retry-after';
|
|
13
|
+
// Marks internal veto decisions that should stop retryPolicies.any() immediately.
|
|
14
|
+
const hardVetoSymbol = Symbol('hardRetryVeto');
|
|
15
|
+
const replaySafeApprovalSymbol = Symbol('replaySafeApproval');
|
|
16
|
+
function addFailedRetryAttemptsToUsage(usage, failedRetryAttempts) {
|
|
17
|
+
if (failedRetryAttempts <= 0) {
|
|
18
|
+
return usage;
|
|
19
|
+
}
|
|
20
|
+
const inferredEndpoint = usage.requestUsageEntries?.[0]?.endpoint;
|
|
21
|
+
const requestUsageEntries = [
|
|
22
|
+
...Array.from({ length: failedRetryAttempts }, () => new usage_1.RequestUsage({
|
|
23
|
+
endpoint: inferredEndpoint,
|
|
24
|
+
})),
|
|
25
|
+
...(usage.requestUsageEntries?.map((entry) => new usage_1.RequestUsage(entry)) ?? [
|
|
26
|
+
new usage_1.RequestUsage({
|
|
27
|
+
inputTokens: usage.inputTokens,
|
|
28
|
+
outputTokens: usage.outputTokens,
|
|
29
|
+
totalTokens: usage.totalTokens,
|
|
30
|
+
inputTokensDetails: usage.inputTokensDetails[0],
|
|
31
|
+
outputTokensDetails: usage.outputTokensDetails[0],
|
|
32
|
+
endpoint: inferredEndpoint,
|
|
33
|
+
}),
|
|
34
|
+
]),
|
|
35
|
+
];
|
|
36
|
+
return new usage_1.Usage({
|
|
37
|
+
requests: usage.requests + failedRetryAttempts,
|
|
38
|
+
inputTokens: usage.inputTokens,
|
|
39
|
+
outputTokens: usage.outputTokens,
|
|
40
|
+
totalTokens: usage.totalTokens,
|
|
41
|
+
inputTokensDetails: usage.inputTokensDetails,
|
|
42
|
+
outputTokensDetails: usage.outputTokensDetails,
|
|
43
|
+
requestUsageEntries,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function withRunnerManagedRetry(request) {
|
|
47
|
+
return Object.assign({}, request, {
|
|
48
|
+
_internal: {
|
|
49
|
+
...request._internal,
|
|
50
|
+
runnerManagedRetry: true,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function shouldDisableProviderManagedRetry(request, attempt) {
|
|
55
|
+
if (typeof request.modelSettings.retry === 'undefined') {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
return attempt > 1;
|
|
59
|
+
}
|
|
60
|
+
function isRecord(value) {
|
|
61
|
+
return typeof value === 'object' && value !== null;
|
|
62
|
+
}
|
|
63
|
+
function asError(value) {
|
|
64
|
+
return value instanceof Error ? value : undefined;
|
|
65
|
+
}
|
|
66
|
+
function getNestedError(value) {
|
|
67
|
+
if (!isRecord(value)) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
const cause = value.cause;
|
|
71
|
+
return cause instanceof Error ? cause : undefined;
|
|
72
|
+
}
|
|
73
|
+
function getErrorMessage(error) {
|
|
74
|
+
return asError(error)?.message ?? '';
|
|
75
|
+
}
|
|
76
|
+
function getErrorName(error) {
|
|
77
|
+
return asError(error)?.name;
|
|
78
|
+
}
|
|
79
|
+
function getErrorCode(error) {
|
|
80
|
+
if (isRecord(error)) {
|
|
81
|
+
if (typeof error.code === 'string') {
|
|
82
|
+
return error.code;
|
|
83
|
+
}
|
|
84
|
+
if (typeof error.errorCode === 'string') {
|
|
85
|
+
return error.errorCode;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const cause = getNestedError(error);
|
|
89
|
+
return cause ? getErrorCode(cause) : undefined;
|
|
90
|
+
}
|
|
91
|
+
function getStatusCode(error) {
|
|
92
|
+
if (isRecord(error)) {
|
|
93
|
+
if (typeof error.statusCode === 'number') {
|
|
94
|
+
return error.statusCode;
|
|
95
|
+
}
|
|
96
|
+
if (typeof error.status === 'number') {
|
|
97
|
+
return error.status;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const cause = getNestedError(error);
|
|
101
|
+
return cause ? getStatusCode(cause) : undefined;
|
|
102
|
+
}
|
|
103
|
+
function isAbortLikeError(error) {
|
|
104
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
const DomExceptionCtor = typeof DOMException !== 'undefined' ? DOMException : undefined;
|
|
108
|
+
if (DomExceptionCtor &&
|
|
109
|
+
error instanceof DomExceptionCtor &&
|
|
110
|
+
error.name === 'AbortError') {
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
const cause = getNestedError(error);
|
|
114
|
+
return cause ? isAbortLikeError(cause) : false;
|
|
115
|
+
}
|
|
116
|
+
function isNetworkLikeError(error) {
|
|
117
|
+
const name = getErrorName(error);
|
|
118
|
+
if (name === 'APIConnectionError' ||
|
|
119
|
+
name === 'APIConnectionTimeoutError' ||
|
|
120
|
+
name === 'FetchError') {
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
const code = getErrorCode(error);
|
|
124
|
+
if (code === 'ECONNABORTED' ||
|
|
125
|
+
code === 'ECONNREFUSED' ||
|
|
126
|
+
code === 'ECONNRESET' ||
|
|
127
|
+
code === 'connection_closed_before_opening' ||
|
|
128
|
+
code === 'connection_closed_before_terminal_response_event' ||
|
|
129
|
+
code === 'EHOSTUNREACH' ||
|
|
130
|
+
code === 'ENETUNREACH' ||
|
|
131
|
+
code === 'ENOTFOUND' ||
|
|
132
|
+
code === 'EAI_AGAIN' ||
|
|
133
|
+
code === 'EPIPE' ||
|
|
134
|
+
code === 'socket_not_open' ||
|
|
135
|
+
code === 'ETIMEDOUT' ||
|
|
136
|
+
code === 'UND_ERR_CONNECT_TIMEOUT') {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
const message = getErrorMessage(error).toLowerCase();
|
|
140
|
+
if (message.includes('fetch failed') ||
|
|
141
|
+
message.includes('network error') ||
|
|
142
|
+
message.includes('connection error') ||
|
|
143
|
+
message === 'terminated' ||
|
|
144
|
+
message.includes('socket hang up')) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
const cause = getNestedError(error);
|
|
148
|
+
return cause ? isNetworkLikeError(cause) : false;
|
|
149
|
+
}
|
|
150
|
+
function extractHeaders(value) {
|
|
151
|
+
if (!value) {
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
if (typeof Headers !== 'undefined' && value instanceof Headers) {
|
|
155
|
+
return value;
|
|
156
|
+
}
|
|
157
|
+
if (isRecord(value)) {
|
|
158
|
+
if (typeof Headers !== 'undefined' && value.headers instanceof Headers) {
|
|
159
|
+
return value.headers;
|
|
160
|
+
}
|
|
161
|
+
if (typeof Headers !== 'undefined' &&
|
|
162
|
+
value.responseHeaders instanceof Headers) {
|
|
163
|
+
return value.responseHeaders;
|
|
164
|
+
}
|
|
165
|
+
if (value.responseHeaders && isRecord(value.responseHeaders)) {
|
|
166
|
+
return Object.fromEntries(Object.entries(value.responseHeaders).flatMap(([key, headerValue]) => typeof headerValue === 'string' ? [[key, headerValue]] : []));
|
|
167
|
+
}
|
|
168
|
+
if (value.response &&
|
|
169
|
+
isRecord(value.response) &&
|
|
170
|
+
value.response.headers instanceof Headers) {
|
|
171
|
+
return value.response.headers;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const cause = getNestedError(value);
|
|
175
|
+
return cause ? extractHeaders(cause) : undefined;
|
|
176
|
+
}
|
|
177
|
+
function getHeaderValue(headers, key) {
|
|
178
|
+
if (!headers) {
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
if (typeof Headers !== 'undefined' && headers instanceof Headers) {
|
|
182
|
+
return headers.get(key) ?? undefined;
|
|
183
|
+
}
|
|
184
|
+
const normalizedKey = key.toLowerCase();
|
|
185
|
+
for (const [headerName, headerValue] of Object.entries(headers)) {
|
|
186
|
+
if (headerName.toLowerCase() === normalizedKey) {
|
|
187
|
+
return headerValue;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
function parseRetryAfterDateOrSeconds(value) {
|
|
193
|
+
const seconds = Number(value);
|
|
194
|
+
if (Number.isFinite(seconds) && seconds >= 0) {
|
|
195
|
+
return Math.round(seconds * 1_000);
|
|
196
|
+
}
|
|
197
|
+
const parsedDate = Date.parse(value);
|
|
198
|
+
if (!Number.isNaN(parsedDate)) {
|
|
199
|
+
const delayMs = parsedDate - Date.now();
|
|
200
|
+
return delayMs > 0 ? delayMs : undefined;
|
|
201
|
+
}
|
|
202
|
+
return undefined;
|
|
203
|
+
}
|
|
204
|
+
function getRetryAfterMs(headers) {
|
|
205
|
+
const retryAfterMs = getHeaderValue(headers, RETRY_AFTER_MS_HEADER);
|
|
206
|
+
if (retryAfterMs !== undefined) {
|
|
207
|
+
const parsedMs = Number(retryAfterMs);
|
|
208
|
+
if (Number.isFinite(parsedMs) && parsedMs >= 0) {
|
|
209
|
+
return parsedMs;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
const retryAfter = getHeaderValue(headers, RETRY_AFTER_HEADER);
|
|
213
|
+
if (!retryAfter) {
|
|
214
|
+
return undefined;
|
|
215
|
+
}
|
|
216
|
+
return parseRetryAfterDateOrSeconds(retryAfter);
|
|
217
|
+
}
|
|
218
|
+
function normalizeRetryError(error, signal, providerAdvice) {
|
|
219
|
+
const headers = extractHeaders(error);
|
|
220
|
+
const normalized = {
|
|
221
|
+
statusCode: getStatusCode(error),
|
|
222
|
+
retryAfterMs: getRetryAfterMs(headers),
|
|
223
|
+
errorCode: getErrorCode(error),
|
|
224
|
+
isNetworkError: isNetworkLikeError(error),
|
|
225
|
+
isAbort: Boolean(signal?.aborted) || isAbortLikeError(error),
|
|
226
|
+
};
|
|
227
|
+
if (providerAdvice?.retryAfterMs !== undefined) {
|
|
228
|
+
normalized.retryAfterMs = providerAdvice.retryAfterMs;
|
|
229
|
+
}
|
|
230
|
+
return {
|
|
231
|
+
...normalized,
|
|
232
|
+
...(providerAdvice?.normalized ?? {}),
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
function resolveRetryDecision(decision) {
|
|
236
|
+
if (typeof decision === 'boolean') {
|
|
237
|
+
return { retry: decision };
|
|
238
|
+
}
|
|
239
|
+
return decision;
|
|
240
|
+
}
|
|
241
|
+
function markInternalDecision(decision, symbol) {
|
|
242
|
+
const marked = { ...decision };
|
|
243
|
+
Object.defineProperty(marked, symbol, {
|
|
244
|
+
value: true,
|
|
245
|
+
enumerable: false,
|
|
246
|
+
configurable: true,
|
|
247
|
+
});
|
|
248
|
+
return marked;
|
|
249
|
+
}
|
|
250
|
+
function withHardVeto(decision) {
|
|
251
|
+
return markInternalDecision(decision, hardVetoSymbol);
|
|
252
|
+
}
|
|
253
|
+
function withReplaySafeApproval(decision) {
|
|
254
|
+
return markInternalDecision(decision, replaySafeApprovalSymbol);
|
|
255
|
+
}
|
|
256
|
+
function isHardVeto(decision) {
|
|
257
|
+
return (typeof decision === 'object' &&
|
|
258
|
+
decision !== null &&
|
|
259
|
+
hardVetoSymbol in decision &&
|
|
260
|
+
decision[hardVetoSymbol] === true);
|
|
261
|
+
}
|
|
262
|
+
function isReplaySafeApproval(decision) {
|
|
263
|
+
return (typeof decision === 'object' &&
|
|
264
|
+
decision !== null &&
|
|
265
|
+
replaySafeApprovalSymbol in decision &&
|
|
266
|
+
decision[replaySafeApprovalSymbol] === true);
|
|
267
|
+
}
|
|
268
|
+
function getDefaultDelayMs(attempt, backoff) {
|
|
269
|
+
const initialDelayMs = backoff?.initialDelayMs ?? DEFAULT_INITIAL_DELAY_MS;
|
|
270
|
+
const maxDelayMs = backoff?.maxDelayMs ?? DEFAULT_MAX_DELAY_MS;
|
|
271
|
+
const multiplier = backoff?.multiplier ?? DEFAULT_BACKOFF_MULTIPLIER;
|
|
272
|
+
const jitter = backoff?.jitter ?? DEFAULT_BACKOFF_JITTER;
|
|
273
|
+
const exponent = Math.max(0, attempt - 1);
|
|
274
|
+
const cappedDelayMs = Math.min(initialDelayMs * multiplier ** exponent, maxDelayMs);
|
|
275
|
+
if (!jitter) {
|
|
276
|
+
return cappedDelayMs;
|
|
277
|
+
}
|
|
278
|
+
return Math.round(cappedDelayMs * (0.875 + Math.random() * 0.25));
|
|
279
|
+
}
|
|
280
|
+
function throwAbortError(signal) {
|
|
281
|
+
const reason = signal?.reason;
|
|
282
|
+
if (reason instanceof Error) {
|
|
283
|
+
throw reason;
|
|
284
|
+
}
|
|
285
|
+
const error = new Error('The operation was aborted.');
|
|
286
|
+
error.name = 'AbortError';
|
|
287
|
+
throw error;
|
|
288
|
+
}
|
|
289
|
+
async function waitForRetryDelay(signal, delayMs) {
|
|
290
|
+
if (delayMs <= 0) {
|
|
291
|
+
if (signal?.aborted) {
|
|
292
|
+
throwAbortError(signal);
|
|
293
|
+
}
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
await new Promise((resolve, reject) => {
|
|
297
|
+
const timeout = setTimeout(() => {
|
|
298
|
+
cleanup();
|
|
299
|
+
resolve();
|
|
300
|
+
}, delayMs);
|
|
301
|
+
const onAbort = () => {
|
|
302
|
+
cleanup();
|
|
303
|
+
try {
|
|
304
|
+
throwAbortError(signal);
|
|
305
|
+
}
|
|
306
|
+
catch (error) {
|
|
307
|
+
reject(error);
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
const cleanup = () => {
|
|
311
|
+
clearTimeout(timeout);
|
|
312
|
+
signal?.removeEventListener('abort', onAbort);
|
|
313
|
+
};
|
|
314
|
+
if (signal?.aborted) {
|
|
315
|
+
onAbort();
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
async function getRetryAdvice(model, args) {
|
|
322
|
+
const getModelRetryAdvice = model.getRetryAdvice;
|
|
323
|
+
if (typeof getModelRetryAdvice !== 'function') {
|
|
324
|
+
return undefined;
|
|
325
|
+
}
|
|
326
|
+
return await getModelRetryAdvice.call(model, args);
|
|
327
|
+
}
|
|
328
|
+
function isStatefulConversationRequest(request) {
|
|
329
|
+
return Boolean(request.conversationId || request.previousResponseId);
|
|
330
|
+
}
|
|
331
|
+
async function evaluateRetry({ error, attempt, maxRetries, retryPolicy, retryBackoff, signal, stream, replayUnsafeRequest, emittedVisibleEvent, emittedRawModelEvent, providerAdvice, }) {
|
|
332
|
+
if (attempt > maxRetries) {
|
|
333
|
+
return { retry: false };
|
|
334
|
+
}
|
|
335
|
+
const normalized = normalizeRetryError(error, signal, providerAdvice);
|
|
336
|
+
if (normalized.isAbort ||
|
|
337
|
+
emittedVisibleEvent ||
|
|
338
|
+
emittedRawModelEvent ||
|
|
339
|
+
providerAdvice?.replaySafety === 'unsafe') {
|
|
340
|
+
return {
|
|
341
|
+
retry: false,
|
|
342
|
+
reason: providerAdvice?.reason,
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
if (!retryPolicy) {
|
|
346
|
+
return { retry: false };
|
|
347
|
+
}
|
|
348
|
+
const context = {
|
|
349
|
+
error,
|
|
350
|
+
attempt,
|
|
351
|
+
maxRetries,
|
|
352
|
+
stream,
|
|
353
|
+
providerAdvice,
|
|
354
|
+
normalized,
|
|
355
|
+
};
|
|
356
|
+
const decision = resolveRetryDecision(await retryPolicy(context));
|
|
357
|
+
if (!decision.retry) {
|
|
358
|
+
return decision;
|
|
359
|
+
}
|
|
360
|
+
if (replayUnsafeRequest && !isReplaySafeApproval(decision)) {
|
|
361
|
+
return {
|
|
362
|
+
retry: false,
|
|
363
|
+
reason: decision.reason ?? providerAdvice?.reason,
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
return {
|
|
367
|
+
retry: true,
|
|
368
|
+
delayMs: decision.delayMs ??
|
|
369
|
+
normalized.retryAfterMs ??
|
|
370
|
+
getDefaultDelayMs(attempt, retryBackoff),
|
|
371
|
+
reason: decision.reason ?? providerAdvice?.reason,
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
exports.retryPolicies = {
|
|
375
|
+
never() {
|
|
376
|
+
return () => false;
|
|
377
|
+
},
|
|
378
|
+
providerSuggested() {
|
|
379
|
+
return ({ providerAdvice, normalized }) => {
|
|
380
|
+
if (providerAdvice?.suggested === false) {
|
|
381
|
+
return withHardVeto({
|
|
382
|
+
retry: false,
|
|
383
|
+
reason: providerAdvice.reason,
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
if (!providerAdvice?.suggested) {
|
|
387
|
+
return false;
|
|
388
|
+
}
|
|
389
|
+
const decision = {
|
|
390
|
+
retry: true,
|
|
391
|
+
delayMs: providerAdvice.retryAfterMs ?? normalized.retryAfterMs,
|
|
392
|
+
reason: providerAdvice.reason,
|
|
393
|
+
};
|
|
394
|
+
return providerAdvice.replaySafety === 'safe'
|
|
395
|
+
? withReplaySafeApproval(decision)
|
|
396
|
+
: decision;
|
|
397
|
+
};
|
|
398
|
+
},
|
|
399
|
+
networkError() {
|
|
400
|
+
return ({ normalized }) => normalized.isNetworkError;
|
|
401
|
+
},
|
|
402
|
+
httpStatus(statuses) {
|
|
403
|
+
const allowed = new Set(statuses);
|
|
404
|
+
return ({ normalized }) => normalized.statusCode !== undefined && allowed.has(normalized.statusCode);
|
|
405
|
+
},
|
|
406
|
+
retryAfter() {
|
|
407
|
+
return ({ normalized }) => {
|
|
408
|
+
if (normalized.retryAfterMs === undefined) {
|
|
409
|
+
return false;
|
|
410
|
+
}
|
|
411
|
+
return {
|
|
412
|
+
retry: true,
|
|
413
|
+
delayMs: normalized.retryAfterMs,
|
|
414
|
+
};
|
|
415
|
+
};
|
|
416
|
+
},
|
|
417
|
+
any(...policies) {
|
|
418
|
+
return async (context) => {
|
|
419
|
+
let firstRetryDecision;
|
|
420
|
+
let lastObjectDecision;
|
|
421
|
+
for (const policy of policies) {
|
|
422
|
+
const rawDecision = await policy(context);
|
|
423
|
+
const decision = resolveRetryDecision(rawDecision);
|
|
424
|
+
if (isHardVeto(decision)) {
|
|
425
|
+
return decision;
|
|
426
|
+
}
|
|
427
|
+
if (decision.retry) {
|
|
428
|
+
if (firstRetryDecision === undefined ||
|
|
429
|
+
(isReplaySafeApproval(decision) &&
|
|
430
|
+
!isReplaySafeApproval(firstRetryDecision))) {
|
|
431
|
+
firstRetryDecision = decision;
|
|
432
|
+
}
|
|
433
|
+
continue;
|
|
434
|
+
}
|
|
435
|
+
if (typeof rawDecision !== 'boolean') {
|
|
436
|
+
lastObjectDecision = decision;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
if (firstRetryDecision) {
|
|
440
|
+
return firstRetryDecision;
|
|
441
|
+
}
|
|
442
|
+
return lastObjectDecision ?? false;
|
|
443
|
+
};
|
|
444
|
+
},
|
|
445
|
+
all(...policies) {
|
|
446
|
+
return async (context) => {
|
|
447
|
+
if (policies.length === 0) {
|
|
448
|
+
return false;
|
|
449
|
+
}
|
|
450
|
+
let merged = { retry: true };
|
|
451
|
+
for (const policy of policies) {
|
|
452
|
+
const decision = resolveRetryDecision(await policy(context));
|
|
453
|
+
if (isHardVeto(decision)) {
|
|
454
|
+
return decision;
|
|
455
|
+
}
|
|
456
|
+
if (!decision.retry) {
|
|
457
|
+
return false;
|
|
458
|
+
}
|
|
459
|
+
if (decision.delayMs !== undefined) {
|
|
460
|
+
merged.delayMs = decision.delayMs;
|
|
461
|
+
}
|
|
462
|
+
if (decision.reason !== undefined) {
|
|
463
|
+
merged.reason = decision.reason;
|
|
464
|
+
}
|
|
465
|
+
if (isReplaySafeApproval(decision)) {
|
|
466
|
+
merged = withReplaySafeApproval(merged);
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
return merged;
|
|
470
|
+
};
|
|
471
|
+
},
|
|
472
|
+
};
|
|
473
|
+
async function getResponseWithRetry(model, request) {
|
|
474
|
+
const maxRetries = request.modelSettings.retry?.maxRetries ?? 0;
|
|
475
|
+
const retryPolicy = request.modelSettings.retry?.policy;
|
|
476
|
+
const retryBackoff = request.modelSettings.retry?.backoff;
|
|
477
|
+
let attempt = 1;
|
|
478
|
+
const replayUnsafeRequest = isStatefulConversationRequest(request);
|
|
479
|
+
while (true) {
|
|
480
|
+
const requestForAttempt = shouldDisableProviderManagedRetry(request, attempt)
|
|
481
|
+
? withRunnerManagedRetry(request)
|
|
482
|
+
: request;
|
|
483
|
+
try {
|
|
484
|
+
const response = await model.getResponse(requestForAttempt);
|
|
485
|
+
if (attempt === 1) {
|
|
486
|
+
return response;
|
|
487
|
+
}
|
|
488
|
+
return {
|
|
489
|
+
...response,
|
|
490
|
+
usage: addFailedRetryAttemptsToUsage(response.usage, attempt - 1),
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
catch (error) {
|
|
494
|
+
const providerAdvice = await getRetryAdvice(model, {
|
|
495
|
+
request,
|
|
496
|
+
error,
|
|
497
|
+
stream: false,
|
|
498
|
+
attempt,
|
|
499
|
+
});
|
|
500
|
+
const decision = await evaluateRetry({
|
|
501
|
+
error,
|
|
502
|
+
attempt,
|
|
503
|
+
maxRetries,
|
|
504
|
+
retryPolicy,
|
|
505
|
+
retryBackoff,
|
|
506
|
+
signal: request.signal,
|
|
507
|
+
stream: false,
|
|
508
|
+
replayUnsafeRequest,
|
|
509
|
+
emittedVisibleEvent: false,
|
|
510
|
+
emittedRawModelEvent: false,
|
|
511
|
+
providerAdvice,
|
|
512
|
+
});
|
|
513
|
+
if (!decision.retry) {
|
|
514
|
+
throw error;
|
|
515
|
+
}
|
|
516
|
+
await waitForRetryDelay(request.signal, decision.delayMs ?? 0);
|
|
517
|
+
attempt += 1;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
async function* getStreamedResponseWithRetry(model, request) {
|
|
522
|
+
const maxRetries = request.modelSettings.retry?.maxRetries ?? 0;
|
|
523
|
+
const retryPolicy = request.modelSettings.retry?.policy;
|
|
524
|
+
const retryBackoff = request.modelSettings.retry?.backoff;
|
|
525
|
+
let attempt = 1;
|
|
526
|
+
const replayUnsafeRequest = isStatefulConversationRequest(request);
|
|
527
|
+
while (true) {
|
|
528
|
+
let emittedVisibleEvent = false;
|
|
529
|
+
let emittedRawModelEvent = false;
|
|
530
|
+
const requestForAttempt = shouldDisableProviderManagedRetry(request, attempt)
|
|
531
|
+
? withRunnerManagedRetry(request)
|
|
532
|
+
: request;
|
|
533
|
+
try {
|
|
534
|
+
for await (const event of model.getStreamedResponse(requestForAttempt)) {
|
|
535
|
+
if (event.type === 'model') {
|
|
536
|
+
emittedRawModelEvent = true;
|
|
537
|
+
}
|
|
538
|
+
emittedVisibleEvent = true;
|
|
539
|
+
if (event.type === 'response_done' && attempt > 1) {
|
|
540
|
+
yield {
|
|
541
|
+
...event,
|
|
542
|
+
response: {
|
|
543
|
+
...event.response,
|
|
544
|
+
usage: addFailedRetryAttemptsToUsage(new usage_1.Usage(event.response.usage), attempt - 1),
|
|
545
|
+
},
|
|
546
|
+
};
|
|
547
|
+
continue;
|
|
548
|
+
}
|
|
549
|
+
yield event;
|
|
550
|
+
}
|
|
551
|
+
return;
|
|
552
|
+
}
|
|
553
|
+
catch (error) {
|
|
554
|
+
const providerAdvice = await getRetryAdvice(model, {
|
|
555
|
+
request,
|
|
556
|
+
error,
|
|
557
|
+
stream: true,
|
|
558
|
+
attempt,
|
|
559
|
+
});
|
|
560
|
+
const decision = await evaluateRetry({
|
|
561
|
+
error,
|
|
562
|
+
attempt,
|
|
563
|
+
maxRetries,
|
|
564
|
+
retryPolicy,
|
|
565
|
+
retryBackoff,
|
|
566
|
+
signal: request.signal,
|
|
567
|
+
stream: true,
|
|
568
|
+
replayUnsafeRequest,
|
|
569
|
+
emittedVisibleEvent,
|
|
570
|
+
emittedRawModelEvent,
|
|
571
|
+
providerAdvice,
|
|
572
|
+
});
|
|
573
|
+
if (!decision.retry) {
|
|
574
|
+
throw error;
|
|
575
|
+
}
|
|
576
|
+
await waitForRetryDelay(request.signal, decision.delayMs ?? 0);
|
|
577
|
+
attempt += 1;
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
//# sourceMappingURL=modelRetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelRetry.js","sourceRoot":"","sources":["../../src/runner/modelRetry.ts"],"names":[],"mappings":"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"}
|