From 868c1fc5964bbae6f4de252524c88800247dadd3 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Sun, 21 Jun 2026 13:15:39 -0400 Subject: [PATCH] fix(server): map filesystem request errors --- packages/server/src/handlers/fs.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/server/src/handlers/fs.ts b/packages/server/src/handlers/fs.ts index 963bf51d85..e2cb4fd832 100644 --- a/packages/server/src/handlers/fs.ts +++ b/packages/server/src/handlers/fs.ts @@ -1,21 +1,28 @@ import { FileSystem } from "@opencode-ai/core/filesystem" +import { FSUtil } from "@opencode-ai/core/fs-util" import { RelativePath } from "@opencode-ai/core/schema" import { Effect } from "effect" import { HttpServerResponse } from "effect/unstable/http" import { HttpApiBuilder } from "effect/unstable/httpapi" import { Api } from "../api" +import { InvalidRequestError } from "../errors" import { response } from "../groups/location" +const invalidRequest = (error: FileSystem.PathError | FSUtil.Error) => + new InvalidRequestError({ message: error.message, kind: error._tag }) + export const FileSystemHandler = HttpApiBuilder.group(Api, "server.fs", (handlers) => Effect.gen(function* () { return handlers .handleRaw("fs.read", (ctx) => Effect.gen(function* () { - const file = yield* (yield* FileSystem.Service).read({ - path: RelativePath.make( - decodeURIComponent(new URL(ctx.request.url, "http://localhost").pathname.slice(13)), - ), - }) + const file = yield* (yield* FileSystem.Service) + .read({ + path: RelativePath.make( + decodeURIComponent(new URL(ctx.request.url, "http://localhost").pathname.slice(13)), + ), + }) + .pipe(Effect.mapError(invalidRequest)) return HttpServerResponse.uint8Array(file.content, { contentType: file.mime }) }), ) @@ -23,7 +30,7 @@ export const FileSystemHandler = HttpApiBuilder.group(Api, "server.fs", (handler response( Effect.gen(function* () { const fs = yield* FileSystem.Service - return yield* fs.list(ctx.query) + return yield* fs.list(ctx.query).pipe(Effect.mapError(invalidRequest)) }), ), )