diff options
| author | opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> | 2026-04-29 20:52:19 +0000 |
|---|---|---|
| committer | opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> | 2026-04-29 20:52:19 +0000 |
| commit | 1124ae17b4b6d9a5f5bbf94213de67a85fcf97ec (patch) | |
| tree | 592fed6a69ccdad9068ae51eb72c5541493813c7 | |
| parent | 9db5890ce5e50ac3aa98c747acc72a10af4fc29c (diff) | |
| download | opencode-1124ae17b4b6d9a5f5bbf94213de67a85fcf97ec.tar.gz opencode-1124ae17b4b6d9a5f5bbf94213de67a85fcf97ec.zip | |
chore: generate
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 43d6efb2f..5107f4759 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<string, string>, e } export function websocketProtocols(input: Request | Record<string, string | undefined>) { - 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 a2153ce71..549dac40c 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 4b68242b5..9318dbfe5 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<RequestPlan>() -export class WorkspaceRouteContext extends Context.Service<WorkspaceRouteContext, { - readonly directory: string - readonly workspaceID?: WorkspaceID -}>()("@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<E>( 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 144ba0c63..c0fb5a20a 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 14f5bd06d..549e700d1 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() |
