nexrall-code 0.5.103 → 0.5.104
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 +17 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -9973,6 +9973,11 @@ var require_client = __commonJS({
|
|
|
9973
9973
|
var MAX_RETRIES = 5;
|
|
9974
9974
|
var RETRY_BASE_MS = 1e3;
|
|
9975
9975
|
var RETRY_MAX_MS = 3e4;
|
|
9976
|
+
var HOUSEKEEPING_FRAMES = /* @__PURE__ */ new Set([
|
|
9977
|
+
"resumable",
|
|
9978
|
+
"context_warning",
|
|
9979
|
+
"tool_progress"
|
|
9980
|
+
]);
|
|
9976
9981
|
var MAX_TOTAL_RETRY_MS = (() => {
|
|
9977
9982
|
const raw = Number(process.env.NEXRALL_MAX_RETRY_MS);
|
|
9978
9983
|
return Number.isFinite(raw) && raw > 0 ? raw : 5 * 6e4;
|
|
@@ -10063,7 +10068,12 @@ var require_client = __commonJS({
|
|
|
10063
10068
|
}
|
|
10064
10069
|
];
|
|
10065
10070
|
};
|
|
10066
|
-
const isRetryableStreamMsg = (m2) =>
|
|
10071
|
+
const isRetryableStreamMsg = (m2) => {
|
|
10072
|
+
const s2 = String(m2 ?? "");
|
|
10073
|
+
if (/403[\s\S]*"type"\s*:\s*"forbidden"/i.test(s2))
|
|
10074
|
+
return true;
|
|
10075
|
+
return /overloaded|rate.?limit|temporarily|unavailable|try again|internal server error/i.test(s2);
|
|
10076
|
+
};
|
|
10067
10077
|
let didRetry = false;
|
|
10068
10078
|
let totalAttemptsMade = 0;
|
|
10069
10079
|
let retryDeadline = 0;
|
|
@@ -10335,7 +10345,8 @@ var require_client = __commonJS({
|
|
|
10335
10345
|
}
|
|
10336
10346
|
const evt = parsed;
|
|
10337
10347
|
lastProgressAt = Date.now();
|
|
10338
|
-
|
|
10348
|
+
if (!HOUSEKEEPING_FRAMES.has(evt.type))
|
|
10349
|
+
sawModelEvent = true;
|
|
10339
10350
|
clearRetryIfNeeded();
|
|
10340
10351
|
switch (evt.type) {
|
|
10341
10352
|
case "text": {
|
|
@@ -10461,6 +10472,7 @@ var require_client = __commonJS({
|
|
|
10461
10472
|
case "error": {
|
|
10462
10473
|
const message = typeof evt.message === "string" ? evt.message : typeof evt.error === "string" ? evt.error : "Unknown SSE error";
|
|
10463
10474
|
const notResumable = evt.notResumable === true;
|
|
10475
|
+
const serverSaysRetryable = evt.retryable === true;
|
|
10464
10476
|
if (haveCompleteMessage()) {
|
|
10465
10477
|
clearInterval(heartbeatWatchdog);
|
|
10466
10478
|
onEvent({ type: "error", message });
|
|
@@ -10469,7 +10481,7 @@ var require_client = __commonJS({
|
|
|
10469
10481
|
clearInterval(heartbeatWatchdog);
|
|
10470
10482
|
stream.destroy?.();
|
|
10471
10483
|
reject(Object.assign(tagTransient(new Error(message)), { forceRestart: true }));
|
|
10472
|
-
} else if (isRetryableStreamMsg(message) && (!emittedToCaller || allowRestartAfterRender)) {
|
|
10484
|
+
} else if ((serverSaysRetryable || isRetryableStreamMsg(message)) && (!emittedToCaller || allowRestartAfterRender)) {
|
|
10473
10485
|
clearInterval(heartbeatWatchdog);
|
|
10474
10486
|
stream.destroy?.();
|
|
10475
10487
|
reject(tagTransient(new Error(message)));
|
|
@@ -10494,7 +10506,8 @@ var require_client = __commonJS({
|
|
|
10494
10506
|
});
|
|
10495
10507
|
stream.on("end", () => {
|
|
10496
10508
|
clearInterval(heartbeatWatchdog);
|
|
10497
|
-
|
|
10509
|
+
const producedNothing = !completedMessage && textParts.length === 0 && toolUseBlocks.length === 0;
|
|
10510
|
+
if (producedNothing) {
|
|
10498
10511
|
reject(Object.assign(new Error("Connection closed before the model responded. Retrying\u2026"), { retryable: true }));
|
|
10499
10512
|
return;
|
|
10500
10513
|
}
|