Skip to content

Commit 88fa537

Browse files
committed
refactor: resolve request defaults once, in rerankDocuments
1 parent 396e64e commit 88fa537

2 files changed

Lines changed: 18 additions & 16 deletions

File tree

‎src/request.ts‎

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import {
33
classifyHTTPError,
44
classifyNetworkError,
55
classifyProtocolMismatch,
6-
createDefaultRetryPolicy,
76
type BuiltRequest,
87
type Dependencies,
98
} from "@intx/inference";
@@ -54,29 +53,25 @@ export type RetryAfterExtractor = (headers: Headers) => number | undefined;
5453

5554
export type RunRequestOptions = {
5655
deps: RequestDependencies;
57-
/** Defaults to Interchange's policy: back off retryables, abort the rest. */
58-
retryPolicy: RetryPolicy | undefined;
56+
retryPolicy: RetryPolicy;
5957
/**
6058
* Per-attempt ceiling, enforced alongside any caller `signal` rather than
6159
* instead of it. A cold local model can take a while to page in.
6260
*/
63-
timeoutMs: number | undefined;
61+
timeoutMs: number;
6462
/**
6563
* Reads `Retry-After` off a failed response. Mirrors `ProviderAdapter`'s
6664
* member of the same name, so a provider that signals pacing its own way can
67-
* override without touching the transport. Defaults to
68-
* {@link extractRetryAfterMs}.
65+
* override without touching the transport.
6966
*/
70-
extractRetryAfterMs: RetryAfterExtractor | undefined;
67+
extractRetryAfterMs: RetryAfterExtractor;
7168
signal: AbortSignal | undefined;
7269
};
7370

7471
type Attempt =
7572
| { ok: true; body: unknown }
7673
| { ok: false; error: InferenceError };
7774

78-
const DEFAULT_TIMEOUT_MS = 30_000;
79-
8075
/**
8176
* `Retry-After` in seconds or as an HTTP date; undefined when absent.
8277
*
@@ -194,10 +189,13 @@ export async function runJSONRequest(
194189
request: BuiltRequest,
195190
options: RunRequestOptions,
196191
): Promise<unknown> {
197-
const { deps, signal } = options;
198-
const policy = options.retryPolicy ?? createDefaultRetryPolicy();
199-
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
200-
const extractRetryAfter = options.extractRetryAfterMs ?? extractRetryAfterMs;
192+
const {
193+
deps,
194+
signal,
195+
retryPolicy: policy,
196+
timeoutMs,
197+
extractRetryAfterMs: extractRetryAfter,
198+
} = options;
201199

202200
// Time comes from the harness scheduler, not globals, so a virtual-clock
203201
// test scheduler drives the retry loop deterministically.

‎src/rerank.ts‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { type } from "arktype";
22
import {
33
classifyProtocolMismatch,
4+
createDefaultRetryPolicy,
45
createDefaultScheduler,
56
ProtocolMismatchError,
67
} from "@intx/inference";
@@ -14,11 +15,14 @@ import {
1415
type RerankResult,
1516
} from "./adapters.js";
1617
import {
18+
extractRetryAfterMs,
1719
RerankRequestError,
1820
runJSONRequest,
1921
type RequestDependencies,
2022
} from "./request.js";
2123

24+
const DEFAULT_TIMEOUT_MS = 30_000;
25+
2226
export const RerankConfigSchema = type({
2327
/** Provider root, e.g. `http://localhost:8085` for a TEI server. */
2428
baseURL: "string",
@@ -76,9 +80,9 @@ export async function rerankDocuments(
7680
fetch: globalThis.fetch,
7781
scheduler: createDefaultScheduler(),
7882
},
79-
retryPolicy: options.retryPolicy,
80-
timeoutMs: parsed.timeoutMs,
81-
extractRetryAfterMs: adapter.extractRetryAfterMs,
83+
retryPolicy: options.retryPolicy ?? createDefaultRetryPolicy(),
84+
timeoutMs: parsed.timeoutMs ?? DEFAULT_TIMEOUT_MS,
85+
extractRetryAfterMs: adapter.extractRetryAfterMs ?? extractRetryAfterMs,
8286
signal: options.signal,
8387
});
8488

0 commit comments

Comments
 (0)