Skip to content

Commit 6840b90

Browse files
committed
refactor: resolve request defaults once in rerankDocuments
1 parent cd6e3bd commit 6840b90

2 files changed

Lines changed: 20 additions & 21 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";
@@ -59,29 +58,25 @@ export type RetryAfterExtractor = (headers: Headers) => number | undefined;
5958

6059
export type RunRequestOptions = {
6160
deps: RequestDependencies;
62-
/** Defaults to Interchange's policy: back off retryables, abort the rest. */
63-
retryPolicy: RetryPolicy | undefined;
61+
retryPolicy: RetryPolicy;
6462
/**
6563
* Per-attempt ceiling, enforced alongside any caller `signal` rather than
6664
* instead of it. A cold local model can take a while to page in.
6765
*/
68-
timeoutMs: number | undefined;
66+
timeoutMs: number;
6967
/**
7068
* Reads `Retry-After` off a failed response. Mirrors `ProviderAdapter`'s
7169
* member of the same name, so a provider that signals pacing its own way can
72-
* override without touching the transport. Defaults to
73-
* {@link extractRetryAfterMs}.
70+
* override without touching the transport.
7471
*/
75-
extractRetryAfterMs: RetryAfterExtractor | undefined;
72+
extractRetryAfterMs: RetryAfterExtractor;
7673
signal: AbortSignal | undefined;
7774
};
7875

7976
type Attempt =
8077
| { ok: true; body: unknown }
8178
| { ok: false; error: InferenceError };
8279

83-
const DEFAULT_TIMEOUT_MS = 30_000;
84-
8580
/**
8681
* `Retry-After` in seconds or as an HTTP date; undefined when absent.
8782
*
@@ -199,10 +194,13 @@ export async function runJSONRequest(
199194
request: BuiltRequest,
200195
options: RunRequestOptions,
201196
): Promise<unknown> {
202-
const { deps, signal } = options;
203-
const policy = options.retryPolicy ?? createDefaultRetryPolicy();
204-
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
205-
const extractRetryAfter = options.extractRetryAfterMs ?? extractRetryAfterMs;
197+
const {
198+
deps,
199+
signal,
200+
retryPolicy: policy,
201+
timeoutMs,
202+
extractRetryAfterMs: extractRetryAfter,
203+
} = options;
206204

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

‎src/rerank.ts‎

Lines changed: 9 additions & 8 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";
@@ -9,22 +10,24 @@ import type { RetryPolicy } from "@intx/types/runtime";
910
import {
1011
rerankAdapterRegistry,
1112
type RerankAdapterRegistry,
12-
type RerankAPIStyle,
1313
type RerankDoc,
1414
type RerankResult,
1515
} from "./adapters.js";
1616
import {
17+
extractRetryAfterMs,
1718
RerankRequestError,
1819
runJSONRequest,
1920
type RequestDependencies,
2021
} from "./request.js";
2122

23+
const DEFAULT_TIMEOUT_MS = 30_000;
24+
2225
export const RerankConfigSchema = type({
23-
/** Provider root, e.g. `http://localhost:8085` for a TEI server. */
26+
/** Provider root, e.g. `http://localhost:8080` for a TEI server. */
2427
baseURL: "string",
2528
/**
2629
* A key into the registry. Left open rather than pinned to
27-
* {@link RerankAPIStyle} so a custom registry can name a house format; the
30+
* `RerankAPIStyle` so a custom registry can name a house format; the
2831
* registry rejects an unknown style by name. The built-ins are `tei`,
2932
* `cohere` (also Jina) and `voyage`.
3033
*/
@@ -76,9 +79,9 @@ export async function rerankDocuments(
7679
fetch: globalThis.fetch,
7780
scheduler: createDefaultScheduler(),
7881
},
79-
retryPolicy: options.retryPolicy,
80-
timeoutMs: parsed.timeoutMs,
81-
extractRetryAfterMs: adapter.extractRetryAfterMs,
82+
retryPolicy: options.retryPolicy ?? createDefaultRetryPolicy(),
83+
timeoutMs: parsed.timeoutMs ?? DEFAULT_TIMEOUT_MS,
84+
extractRetryAfterMs: adapter.extractRetryAfterMs ?? extractRetryAfterMs,
8285
signal: options.signal,
8386
});
8487

@@ -109,5 +112,3 @@ export async function rerankDocuments(
109112
})
110113
.sort((a, b) => b.score - a.score);
111114
}
112-
113-
export type { RerankAPIStyle, RerankDoc, RerankResult };

0 commit comments

Comments
 (0)