From 1124ae17b4b6d9a5f5bbf94213de67a85fcf97ec Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Wed, 29 Apr 2026 20:52:19 +0000 Subject: [PATCH] chore: generate --- packages/opencode/src/server/proxy-util.ts | 4 +--- .../instance/httpapi/middleware/proxy.ts | 13 ++++++++++-- .../httpapi/middleware/workspace-routing.ts | 20 +++++++++++-------- .../server/routes/instance/httpapi/server.ts | 6 +++--- .../test/server/workspace-proxy.test.ts | 17 +++++++++------- 5 files changed, 37 insertions(+), 23 deletions(-) diff --git a/packages/opencode/src/server/proxy-util.ts b/packages/opencode/src/server/proxy-util.ts index 43d6efb2f9..5107f4759a 100644 --- a/packages/opencode/src/server/proxy-util.ts +++ b/packages/opencode/src/server/proxy-util.ts @@ -30,9 +30,7 @@ export function headers(input: Request | HeadersInit | Record, e } export function websocketProtocols(input: Request | Record) { - const value = input instanceof Request - ? input.headers.get("sec-websocket-protocol") - : input["sec-websocket-protocol"] + const value = input instanceof Request ? input.headers.get("sec-websocket-protocol") : input["sec-websocket-protocol"] if (!value) return [] return value .split(",") diff --git a/packages/opencode/src/server/routes/instance/httpapi/middleware/proxy.ts b/packages/opencode/src/server/routes/instance/httpapi/middleware/proxy.ts index a2153ce714..549dac40cc 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/middleware/proxy.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/middleware/proxy.ts @@ -1,6 +1,13 @@ import { ProxyUtil } from "@/server/proxy-util" import { Effect, Stream } from "effect" -import { FetchHttpClient, HttpBody, HttpClient, HttpClientRequest, HttpServerRequest, HttpServerResponse } from "effect/unstable/http" +import { + FetchHttpClient, + HttpBody, + HttpClient, + HttpClientRequest, + HttpServerRequest, + HttpServerResponse, +} from "effect/unstable/http" import * as Socket from "effect/unstable/socket/Socket" function webSource(request: HttpServerRequest.HttpServerRequest): Request | undefined { @@ -35,7 +42,9 @@ export function websocket( Effect.catchReason("SocketError", "SocketCloseError", (reason) => writeInbound(new Socket.CloseEvent(reason.code, reason.closeReason)).pipe(Effect.catch(() => Effect.void)), ), - Effect.catch(() => writeInbound(new Socket.CloseEvent(1011, "proxy error")).pipe(Effect.catch(() => Effect.void))), + Effect.catch(() => + writeInbound(new Socket.CloseEvent(1011, "proxy error")).pipe(Effect.catch(() => Effect.void)), + ), Effect.forkScoped, ) diff --git a/packages/opencode/src/server/routes/instance/httpapi/middleware/workspace-routing.ts b/packages/opencode/src/server/routes/instance/httpapi/middleware/workspace-routing.ts index 4b68242b57..9318dbfe5a 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/middleware/workspace-routing.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/middleware/workspace-routing.ts @@ -27,10 +27,13 @@ type RequestPlan = Data.TaggedEnum<{ }> const RequestPlan = Data.taggedEnum() -export class WorkspaceRouteContext extends Context.Service()("@opencode/ExperimentalHttpApiWorkspaceRouteContext") {} +export class WorkspaceRouteContext extends Context.Service< + WorkspaceRouteContext, + { + readonly directory: string + readonly workspaceID?: WorkspaceID + } +>()("@opencode/ExperimentalHttpApiWorkspaceRouteContext") {} export class WorkspaceRoutingMiddleware extends HttpApiMiddleware.Service< WorkspaceRoutingMiddleware, @@ -110,7 +113,10 @@ function proxyRemote( if (headers["upgrade"]?.toLowerCase() === "websocket") return yield* HttpApiProxy.websocket(request, proxyURL) const response = yield* HttpApiProxy.http(proxyURL, target.headers, request) const sync = Fence.parse(new Headers(response.headers)) - if (sync) yield* Effect.promise(() => Fence.wait(workspace.id, sync, request.source instanceof Request ? request.source.signal : undefined)) + if (sync) + yield* Effect.promise(() => + Fence.wait(workspace.id, sync, request.source instanceof Request ? request.source.signal : undefined), + ) return response }) } @@ -157,9 +163,7 @@ function routeWorkspace( MissingWorkspace: ({ workspaceID }) => Effect.succeed(missingWorkspaceResponse(workspaceID)), Remote: ({ request, workspace, target, url }) => proxyRemote(request, workspace, target, url), Local: ({ directory, workspaceID }) => - effect.pipe( - Effect.provideService(WorkspaceRouteContext, WorkspaceRouteContext.of({ directory, workspaceID })), - ), + effect.pipe(Effect.provideService(WorkspaceRouteContext, WorkspaceRouteContext.of({ directory, workspaceID }))), }) } diff --git a/packages/opencode/src/server/routes/instance/httpapi/server.ts b/packages/opencode/src/server/routes/instance/httpapi/server.ts index 144ba0c632..c0fb5a20a0 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/server.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/server.ts @@ -90,9 +90,9 @@ const instanceApiRoutes = HttpApiBuilder.layer(InstanceHttpApi).pipe( const rawInstanceRoutes = Layer.mergeAll(eventRoute, ptyConnectRoute).pipe( Layer.provide( - instanceRouterMiddleware.combine(workspaceRouterMiddleware).layer.pipe( - Layer.provide(Socket.layerWebSocketConstructorGlobal), - ), + instanceRouterMiddleware + .combine(workspaceRouterMiddleware) + .layer.pipe(Layer.provide(Socket.layerWebSocketConstructorGlobal)), ), ) const instanceRoutes = Layer.mergeAll(rawInstanceRoutes, instanceApiRoutes).pipe( diff --git a/packages/opencode/test/server/workspace-proxy.test.ts b/packages/opencode/test/server/workspace-proxy.test.ts index 14f5bd06d6..549e700d1e 100644 --- a/packages/opencode/test/server/workspace-proxy.test.ts +++ b/packages/opencode/test/server/workspace-proxy.test.ts @@ -22,14 +22,17 @@ describe("HttpApi workspace proxy", () => { Effect.gen(function* () { const req = yield* HttpServerRequest.HttpServerRequest const body = yield* req.text - return yield* HttpServerResponse.json({ path: req.url, method: req.method, body }, { - status: 201, - headers: { - "content-encoding": "identity", - "content-length": "999", - "x-remote": "yes", + return yield* HttpServerResponse.json( + { path: req.url, method: req.method, body }, + { + status: 201, + headers: { + "content-encoding": "identity", + "content-length": "999", + "x-remote": "yes", + }, }, - }) + ) }), ) const url = yield* serverUrl()