Przeglądaj źródła

chore: generate

opencode-agent[bot] 4 miesięcy temu
rodzic
commit
1124ae17b4

+ 1 - 3
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(",")

+ 11 - 2
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,
         )
 

+ 12 - 8
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 }))),
   })
 }
 

+ 3 - 3
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(

+ 10 - 7
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()