fix(core): disable Bun's fetch idle timeout for provider requests (#55007)

This commit is contained in:
Aiden Cline
2026-10-12 23:12:44 -05:00
committed by GitHub
Unverified
parent 738f77e470
commit 460c626acd
+15 -1
View File
@@ -1,12 +1,26 @@
import { LLMClient, RequestExecutor } from "@opencode/ai/route"
import { Effect, Layer } from "effect"
import { FetchHttpClient, HttpClient } from "effect/http"
import { Socket } from "effect/socket"
import { makeGlobalNode } from "@opencode/util/effect/app-node"
import { httpClient } from "@opencode/util/effect/app-node-platform"
import { WebSocketConstructor } from "./websocket-constructor.js"
// Bun's fetch ends a request after five quiet minutes, before provider routes' own header and chunk timeouts.
const withoutBunTimeout = Layer.effect(
HttpClient.HttpClient,
Effect.gen(function* () {
const client = yield* HttpClient.HttpClient
return HttpClient.transformResponse(
client,
Effect.provideService(FetchHttpClient.RequestInit, { timeout: false } as BunFetchRequestInit),
)
}),
)
export const requestExecutor = makeGlobalNode({
service: RequestExecutor.Service,
layer: RequestExecutor.layer,
layer: RequestExecutor.layer.pipe(Layer.provide(withoutBunTimeout)),
deps: [httpClient],
})