@rulvar/openai 1.28.0 → 1.30.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/index.js +20 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -535,6 +535,25 @@ function failedResponseError(code, message) {
|
|
|
535
535
|
}
|
|
536
536
|
};
|
|
537
537
|
}
|
|
538
|
+
/**
|
|
539
|
+
* Largest delay a Node timer represents exactly; a bigger value would
|
|
540
|
+
* overflow into an almost immediate (storm inducing) retry.
|
|
541
|
+
*/
|
|
542
|
+
const MAX_RETRY_AFTER_MS = 2147483647;
|
|
543
|
+
/**
|
|
544
|
+
* Parses a Retry-After header into milliseconds. Only the RFC delta
|
|
545
|
+
* seconds grammar is honored: after trimming optional whitespace the
|
|
546
|
+
* value must be a nonempty run of decimal digits, so the HTTP date
|
|
547
|
+
* form, signs, decimals, hex, exponents, and empty values all return
|
|
548
|
+
* undefined and the engine falls back to its computed policy backoff
|
|
549
|
+
* (v1.29.0 review P3; `Number()` alone accepted every one of those).
|
|
550
|
+
* A huge digit run is clamped to the Node timer maximum.
|
|
551
|
+
*/
|
|
552
|
+
function retryAfterMsFrom(header) {
|
|
553
|
+
const trimmed = header.trim();
|
|
554
|
+
if (!/^[0-9]+$/.test(trimmed)) return;
|
|
555
|
+
return Math.min(Number(trimmed) * 1e3, MAX_RETRY_AFTER_MS);
|
|
556
|
+
}
|
|
538
557
|
/** Projects SDK/API errors into the retryable WireError vocabulary. */
|
|
539
558
|
function openAiErrorToWire(error) {
|
|
540
559
|
const record = error;
|
|
@@ -545,7 +564,7 @@ function openAiErrorToWire(error) {
|
|
|
545
564
|
const headers = record.headers;
|
|
546
565
|
if (headers !== void 0 && headers !== null) {
|
|
547
566
|
const value = typeof headers.get === "function" ? headers.get("retry-after") ?? void 0 : headers["retry-after"];
|
|
548
|
-
if (value !== void 0) retryAfterMs =
|
|
567
|
+
if (value !== void 0) retryAfterMs = retryAfterMsFrom(value);
|
|
549
568
|
}
|
|
550
569
|
return {
|
|
551
570
|
code: "agent",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rulvar/openai",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.30.0",
|
|
4
4
|
"description": "Rulvar first-class provider adapter for the OpenAI Responses API, plus the openaiCompatible factory.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -23,13 +23,13 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"openai": "^6.45.0",
|
|
26
|
-
"@rulvar/core": "1.
|
|
26
|
+
"@rulvar/core": "1.30.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/node": "^22.20.0",
|
|
30
30
|
"tsdown": "^0.22.3",
|
|
31
31
|
"typescript": "~6.0.3",
|
|
32
|
-
"@rulvar/testing": "1.
|
|
32
|
+
"@rulvar/testing": "1.30.0"
|
|
33
33
|
},
|
|
34
34
|
"repository": {
|
|
35
35
|
"type": "git",
|