From 287057fbd51d02fee2830b83573ee0c8195a89b4 Mon Sep 17 00:00:00 2001 From: Aiden Cline Date: Wed, 3 Jun 2026 16:21:39 -0500 Subject: [PATCH] fix(provider): preserve custom loader options --- packages/opencode/src/provider/provider.ts | 2 +- .../test/provider/header-timeout.test.ts | 37 ------------------- 2 files changed, 1 insertion(+), 38 deletions(-) diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 8620e1cc9f..8a8ba63907 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -1425,7 +1425,7 @@ export const layer = Layer.effect( log.error("Provider does not exist in model list " + providerID) continue } - const result = yield* fn(data) + const result = yield* fn(providers[providerID] ?? data) if (result && (result.autoload || providers[providerID])) { if (result.getModel) modelLoaders[providerID] = result.getModel if (result.vars) varsLoaders[providerID] = result.vars diff --git a/packages/opencode/test/provider/header-timeout.test.ts b/packages/opencode/test/provider/header-timeout.test.ts index 7b8c81166c..a3caf4fd8a 100644 --- a/packages/opencode/test/provider/header-timeout.test.ts +++ b/packages/opencode/test/provider/header-timeout.test.ts @@ -11,7 +11,6 @@ import { Env } from "@/env" import { Plugin } from "@/plugin" import { Provider } from "@/provider/provider" import { ProviderError } from "@/provider/error" -import { RuntimeFlags } from "@/effect/runtime-flags" afterEach(async () => { await disposeAllInstances() @@ -170,42 +169,6 @@ it.live("OpenAI API auth gets default headerTimeout", () => }), ) -it.live("OpenAI Codex websocket transport disables default headerTimeout", () => - Effect.gen(function* () { - yield* withAuthContent( - Effect.gen(function* () { - yield* provideTmpdirInstance(() => - Effect.gen(function* () { - const provider = yield* Provider.Service - const openai = yield* provider.getProvider(ProviderV2.ID.openai) - expect(openai.options.headerTimeout).toBe(false) - }), - ) - }), - { openai: { type: "api", key: "sk-test" } }, - ) - }).pipe(Effect.provide(RuntimeFlags.layer({ experimentalWebSockets: true }))), -) - -it.live("OpenAI Codex websocket transport preserves configured headerTimeout", () => - Effect.gen(function* () { - yield* withAuthContent( - Effect.gen(function* () { - yield* provideTmpdirInstance( - () => - Effect.gen(function* () { - const provider = yield* Provider.Service - const openai = yield* provider.getProvider(ProviderV2.ID.openai) - expect(openai.options.headerTimeout).toBe(30_000) - }), - { config: { provider: { openai: { options: { headerTimeout: 30_000 } } } } }, - ) - }), - { openai: { type: "api", key: "sk-test" } }, - ) - }).pipe(Effect.provide(RuntimeFlags.layer({ experimentalWebSockets: true }))), -) - function providerConfig(url: string, options: Record = {}) { const config = testProviderConfig(url) return {