瀏覽代碼

fix(server): defer validation error body change

Kit Langton 3 月之前
父節點
當前提交
6fea0178eb

+ 0 - 3
packages/opencode/src/server/routes/instance/httpapi/api.ts

@@ -21,7 +21,6 @@ import { TuiApi } from "./groups/tui"
 import { WorkspaceApi } from "./groups/workspace"
 import { V2Api } from "./groups/v2"
 import { Authorization } from "./middleware/authorization"
-import { SchemaErrorMiddleware } from "./middleware/schema-error"
 
 // SSE event schemas built from the BusEvent/SyncEvent registries.
 const EventSchema = Schema.Union(BusEvent.effectPayloads()).annotate({ identifier: "Event" })
@@ -30,7 +29,6 @@ const SyncEventSchemas = SyncEvent.effectPayloads()
 export const RootHttpApi = HttpApi.make("opencode-root")
   .addHttpApi(ControlApi)
   .addHttpApi(GlobalApi)
-  .middleware(SchemaErrorMiddleware)
   .middleware(Authorization)
 
 export const InstanceHttpApi = HttpApi.make("opencode-instance")
@@ -49,7 +47,6 @@ export const InstanceHttpApi = HttpApi.make("opencode-instance")
   .addHttpApi(V2Api)
   .addHttpApi(TuiApi)
   .addHttpApi(WorkspaceApi)
-  .middleware(SchemaErrorMiddleware)
 
 export const OpenCodeHttpApi = HttpApi.make("opencode")
   .addHttpApi(RootHttpApi)

+ 0 - 21
packages/opencode/src/server/routes/instance/httpapi/middleware/schema-error.ts

@@ -1,21 +0,0 @@
-import { Effect } from "effect"
-import { HttpServerResponse } from "effect/unstable/http"
-import { HttpApiMiddleware } from "effect/unstable/httpapi"
-
-export class SchemaErrorMiddleware extends HttpApiMiddleware.Service<SchemaErrorMiddleware>()(
-  "@opencode/ExperimentalHttpApiSchemaError",
-) {}
-
-export const schemaErrorLayer = HttpApiMiddleware.layerSchemaErrorTransform(SchemaErrorMiddleware, (error) => {
-  if (error.kind === "Body") return Effect.fail(error)
-  return Effect.succeed(
-    HttpServerResponse.jsonUnsafe(
-      {
-        data: {},
-        errors: [{ kind: error.kind, message: error.cause.message }],
-        success: false,
-      },
-      { status: 400 },
-    ),
-  )
-})

+ 0 - 3
packages/opencode/src/server/routes/instance/httpapi/server.ts

@@ -84,7 +84,6 @@ import { compressionLayer } from "./middleware/compression"
 import { corsVaryFix } from "./middleware/cors-vary"
 import { errorLayer } from "./middleware/error"
 import { fenceLayer } from "./middleware/fence"
-import { schemaErrorLayer } from "./middleware/schema-error"
 
 export const context = Context.makeUnsafe<unknown>(new Map())
 
@@ -115,7 +114,6 @@ const authOnlyRouterLayer = authorizationRouterMiddleware.layer.pipe(Layer.provi
 const httpApiAuthLayer = authorizationLayer.pipe(Layer.provide(ServerAuth.Config.defaultLayer))
 const rootApiRoutes = HttpApiBuilder.layer(RootHttpApi).pipe(
   Layer.provide([controlHandlers, globalHandlers]),
-  Layer.provide(schemaErrorLayer),
   Layer.provide(httpApiAuthLayer),
 )
 const instanceRouterLayer = authorizationRouterMiddleware
@@ -144,7 +142,6 @@ const instanceApiRoutes = HttpApiBuilder.layer(InstanceHttpApi).pipe(
     tuiHandlers,
     workspaceHandlers,
   ]),
-  Layer.provide(schemaErrorLayer),
 )
 
 const rawInstanceRoutes = Layer.mergeAll(ptyConnectRoute).pipe(Layer.provide(instanceRouterLayer))

+ 1 - 1
packages/opencode/test/server/httpapi-sync.test.ts

@@ -122,7 +122,7 @@ describe("sync HttpApi", () => {
     }
   })
 
-  test("returns structured validation errors", async () => {
+  test.todo("returns structured validation errors", async () => {
     await using tmp = await tmpdir({ git: true, config: { formatter: false, lsp: false } })
     const response = await ExperimentalHttpApiServer.webHandler().handler(
       new Request(`http://localhost${SyncPaths.history}`, {