






















@@ -686,7 +686,7 @@ describe("applyExtraParamsToAgent", () => {
686686api: "openai-responses",
687687provider: "xai",
688688id: "grok-4.20-beta-latest-reasoning",
689-} as Model<"openai-responses">,
689+} as unknown as Model<"openai-responses">,
690690payload: {
691691model: "grok-4.20-beta-latest-reasoning",
692692input: [],
@@ -743,7 +743,7 @@ describe("applyExtraParamsToAgent", () => {
743743id: "gpt-5",
744744baseUrl: "http://127.0.0.1:19191/v1",
745745reasoning: true,
746-} as Model<"openai-responses">,
746+} as unknown as Model<"openai-responses">,
747747payload: {
748748model: "gpt-5",
749749input: [],
@@ -811,7 +811,7 @@ describe("applyExtraParamsToAgent", () => {
811811api: "openai-completions",
812812provider: "nvidia-nim",
813813id: "moonshotai/kimi-k2.5",
814-} as Model<"openai-completions">,
814+} as unknown as Model<"openai-completions">,
815815});
816816817817expect(payload.parallel_tool_calls).toBe(false);
@@ -838,7 +838,7 @@ describe("applyExtraParamsToAgent", () => {
838838api: "openai-completions",
839839provider: "openrouter",
840840id: "openrouter/auto",
841-} as Model<"openai-completions">,
841+} as unknown as Model<"openai-completions">,
842842});
843843844844expect(payload.parallel_tool_calls).toBe(false);
@@ -1908,7 +1908,7 @@ describe("applyExtraParamsToAgent", () => {
19081908api: "openai-responses",
19091909provider: "openai",
19101910id: "gpt-5.4",
1911-} as Model<"openai-responses">,
1911+} as unknown as Model<"openai-responses">,
19121912payload: {},
19131913});
19141914@@ -2025,7 +2025,7 @@ describe("applyExtraParamsToAgent", () => {
20252025api: "openai-responses",
20262026provider: "openai",
20272027id: "gpt-5",
2028-} as Model<"openai-responses">,
2028+} as unknown as Model<"openai-responses">,
20292029payload: { tools: [{ type: "function", name: "read" }] },
20302030});
20312031@@ -2257,6 +2257,82 @@ describe("applyExtraParamsToAgent", () => {
22572257);
22582258});
225922592260+it("keys prepared extra-param memoization by resolved model transport inputs", () => {
2261+const resolveProviderExtraParamsForTransport = vi.fn((params) => ({
2262+patch: {
2263+transportFamily: params.context.model?.api,
2264+baseUrl: (params.context.model as Record<string, unknown> | undefined)?.baseUrl,
2265+headerAuth: (
2266+(params.context.model as Record<string, unknown> | undefined)?.headers as
2267+| Record<string, unknown>
2268+| undefined
2269+)?.["X-Test"],
2270+},
2271+}));
2272+extraParamsTesting.setProviderRuntimeDepsForTest({
2273+prepareProviderExtraParams: (params) => params.context.extraParams,
2274+ resolveProviderExtraParamsForTransport,
2275+wrapProviderStreamFn: (params) => params.context.streamFn,
2276+});
2277+const cfg = {};
2278+2279+const responsesParams = resolvePreparedExtraParams({
2280+ cfg,
2281+provider: "openai",
2282+modelId: "gpt-5",
2283+model: {
2284+api: "openai-responses",
2285+provider: "openai",
2286+id: "gpt-5",
2287+baseUrl: "https://api-one.example/v1",
2288+headers: { "X-Test": "one" },
2289+} as unknown as Model<"openai-responses">,
2290+});
2291+const completionsParams = resolvePreparedExtraParams({
2292+ cfg,
2293+provider: "openai",
2294+modelId: "gpt-5",
2295+model: {
2296+api: "openai-completions",
2297+provider: "openai",
2298+id: "gpt-5",
2299+baseUrl: "https://api-one.example/v1",
2300+headers: { "X-Test": "one" },
2301+} as unknown as Model<"openai-completions">,
2302+});
2303+const differentModelHeadersParams = resolvePreparedExtraParams({
2304+ cfg,
2305+provider: "openai",
2306+modelId: "gpt-5",
2307+model: {
2308+api: "openai-responses",
2309+provider: "openai",
2310+id: "gpt-5",
2311+baseUrl: "https://api-two.example/v1",
2312+headers: { "X-Test": "two" },
2313+} as unknown as Model<"openai-responses">,
2314+});
2315+const repeatedResponsesParams = resolvePreparedExtraParams({
2316+ cfg,
2317+provider: "openai",
2318+modelId: "gpt-5",
2319+model: {
2320+api: "openai-responses",
2321+provider: "openai",
2322+id: "gpt-5",
2323+baseUrl: "https://api-one.example/v1",
2324+headers: { "X-Test": "one" },
2325+} as unknown as Model<"openai-responses">,
2326+});
2327+2328+expect(responsesParams.transportFamily).toBe("openai-responses");
2329+expect(completionsParams.transportFamily).toBe("openai-completions");
2330+expect(differentModelHeadersParams.baseUrl).toBe("https://api-two.example/v1");
2331+expect(differentModelHeadersParams.headerAuth).toBe("two");
2332+expect(repeatedResponsesParams.transportFamily).toBe("openai-responses");
2333+expect(resolveProviderExtraParamsForTransport).toHaveBeenCalledTimes(3);
2334+});
2335+22602336it("passes explicit settings transport to transport extra-param hooks", () => {
22612337const resolveProviderExtraParamsForTransport = vi.fn((_params) => ({
22622338patch: {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。