fix(ts): forward timeout config to OpenAI client in JS OSS LLM providers (#4770)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Kartik <kartik.labhshetwar@mem0.ai>
This commit is contained in:
Jean Ibarz
2026-04-23 19:29:27 +05:30
committed by GitHub
co-authored by Claude Opus 4.6 Kartik
parent db8ac61713
commit 34ed122ef3
5 changed files with 208 additions and 1 deletions
@@ -0,0 +1,59 @@
/// <reference types="jest" />
/**
* OpenAI Structured LLM — unit tests (mocked openai).
*
* Sibling fix for #4707: OpenAIStructuredLLM had the same timeout gap.
*/
let capturedConstructorArgs: any;
const mockCreate = jest.fn();
jest.mock("openai", () => {
return jest.fn().mockImplementation((args: any) => {
capturedConstructorArgs = args;
return {
chat: { completions: { create: mockCreate } },
};
});
});
import { OpenAIStructuredLLM } from "../src/llms/openai_structured";
describe("OpenAIStructuredLLM (unit)", () => {
beforeEach(() => {
capturedConstructorArgs = undefined;
mockCreate.mockClear();
});
it("forwards timeout to the OpenAI client constructor", () => {
new OpenAIStructuredLLM({
apiKey: "test-key",
timeout: 15000,
});
expect(capturedConstructorArgs).toMatchObject({
apiKey: "test-key",
timeout: 15000,
});
});
it("forwards timeout: 0 to the OpenAI client (explicit zero is valid)", () => {
new OpenAIStructuredLLM({
apiKey: "test-key",
timeout: 0,
});
expect(capturedConstructorArgs.timeout).toBe(0);
});
it("omits timeout from the OpenAI client when not configured", () => {
new OpenAIStructuredLLM({
apiKey: "test-key",
});
expect(capturedConstructorArgs).toMatchObject({
apiKey: "test-key",
});
expect(capturedConstructorArgs).not.toHaveProperty("timeout");
});
});