Skip to content

Commit a2ff59f

Browse files
committed
chore(deadcode): inline same-model retry backoff
1 parent b12223a commit a2ff59f

2 files changed

Lines changed: 11 additions & 15 deletions

File tree

src/agents/embedded-agent-runner/run/helpers.test.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88
resolveFinalAssistantRawText,
99
resolveFinalAssistantVisibleText,
1010
resolveNextSameModelRateLimitRetryCount,
11-
resolveSameModelRateLimitBackoffMs,
1211
resolveSameModelRateLimitRetryDelayMs,
1312
} from "./helpers.js";
1413

@@ -88,23 +87,23 @@ describe("resolveFinalAssistantVisibleText", () => {
8887
});
8988
});
9089

91-
describe("resolveSameModelRateLimitBackoffMs", () => {
90+
describe("resolveSameModelRateLimitRetryDelayMs", () => {
9291
it("waits 10s/20s/30s linearly before the 1st/2nd/3rd same-model retry", () => {
93-
expect(resolveSameModelRateLimitBackoffMs(0)).toBe(10_000);
94-
expect(resolveSameModelRateLimitBackoffMs(1)).toBe(20_000);
95-
expect(resolveSameModelRateLimitBackoffMs(2)).toBe(30_000);
92+
expect(resolveSameModelRateLimitRetryDelayMs({ retriesSoFar: 0 })).toBe(10_000);
93+
expect(resolveSameModelRateLimitRetryDelayMs({ retriesSoFar: 1 })).toBe(20_000);
94+
expect(resolveSameModelRateLimitRetryDelayMs({ retriesSoFar: 2 })).toBe(30_000);
9695
});
9796

9897
it("caps at 60s if the retry count is ever raised further", () => {
99-
expect(resolveSameModelRateLimitBackoffMs(10)).toBe(60_000);
98+
expect(resolveSameModelRateLimitRetryDelayMs({ retriesSoFar: 10 })).toBe(60_000);
10099
});
101100

102101
it("is deterministic so RPM windows clear predictably", () => {
103-
expect(resolveSameModelRateLimitBackoffMs(2)).toBe(resolveSameModelRateLimitBackoffMs(2));
102+
expect(resolveSameModelRateLimitRetryDelayMs({ retriesSoFar: 2 })).toBe(
103+
resolveSameModelRateLimitRetryDelayMs({ retriesSoFar: 2 }),
104+
);
104105
});
105-
});
106106

107-
describe("resolveSameModelRateLimitRetryDelayMs", () => {
108107
it("honors a short provider Retry-After when it is longer than the fixed backoff", () => {
109108
expect(
110109
resolveSameModelRateLimitRetryDelayMs({

src/agents/embedded-agent-runner/run/helpers.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,13 @@ export function resolveRateLimitProfileRotationLimit(cfg?: OpenClawConfig): numb
6565
* retries already happened. Linear and deterministic (no jitter) so RPM
6666
* windows clear predictably and tests can assert exact values.
6767
*/
68-
export function resolveSameModelRateLimitBackoffMs(retriesSoFar: number): number {
69-
const delay = SAME_MODEL_RATE_LIMIT_BACKOFF_STEP_MS * (Math.max(0, retriesSoFar) + 1);
70-
return Math.min(SAME_MODEL_RATE_LIMIT_MAX_BACKOFF_MS, delay);
71-
}
72-
7368
export function resolveSameModelRateLimitRetryDelayMs(params: {
7469
retriesSoFar: number;
7570
retryAfterSeconds?: number;
7671
}): number {
77-
const backoffMs = resolveSameModelRateLimitBackoffMs(params.retriesSoFar);
72+
const backoffDelayMs =
73+
SAME_MODEL_RATE_LIMIT_BACKOFF_STEP_MS * (Math.max(0, params.retriesSoFar) + 1);
74+
const backoffMs = Math.min(SAME_MODEL_RATE_LIMIT_MAX_BACKOFF_MS, backoffDelayMs);
7875
const retryAfterMs = Number.isFinite(params.retryAfterSeconds)
7976
? Math.ceil(Math.max(0, params.retryAfterSeconds ?? 0) * 1000)
8077
: 0;

0 commit comments

Comments
 (0)