opencode-agent[bot] 1 deň pred
rodič
commit
dc16013b4f

+ 12 - 12
packages/opencode/src/config/lsp.ts

@@ -25,18 +25,18 @@ export const Entry = Schema.Union([
  * client knows which files the server should attach to. Builtin server IDs and
  * explicitly disabled entries are exempt.
  */
-export const requiresExtensionsForCustomServers = Schema.makeFilter<boolean | Record<string, Schema.Schema.Type<typeof Entry>>>(
-  (data) => {
-    if (typeof data === "boolean") return undefined
-    const serverIds = new Set(Object.values(LSPServer).map((server) => server.id))
-    const ok = Object.entries(data).every(([id, config]) => {
-      if ("disabled" in config && config.disabled) return true
-      if (serverIds.has(id)) return true
-      return "extensions" in config && Boolean(config.extensions)
-    })
-    return ok ? undefined : "For custom LSP servers, 'extensions' array is required."
-  },
-)
+export const requiresExtensionsForCustomServers = Schema.makeFilter<
+  boolean | Record<string, Schema.Schema.Type<typeof Entry>>
+>((data) => {
+  if (typeof data === "boolean") return undefined
+  const serverIds = new Set(Object.values(LSPServer).map((server) => server.id))
+  const ok = Object.entries(data).every(([id, config]) => {
+    if ("disabled" in config && config.disabled) return true
+    if (serverIds.has(id)) return true
+    return "extensions" in config && Boolean(config.extensions)
+  })
+  return ok ? undefined : "For custom LSP servers, 'extensions' array is required."
+})
 
 export const Info = Schema.Union([Schema.Boolean, Schema.Record(Schema.String, Entry)])
   .check(requiresExtensionsForCustomServers)

+ 5 - 13
packages/opencode/test/util/effect-zod.test.ts

@@ -189,9 +189,7 @@ describe("util.effect-zod", () => {
 
   describe("Schema.check translation", () => {
     test("filter returning string triggers refinement with that message", () => {
-      const isEven = Schema.makeFilter((n: number) =>
-        n % 2 === 0 ? undefined : "expected an even number",
-      )
+      const isEven = Schema.makeFilter((n: number) => (n % 2 === 0 ? undefined : "expected an even number"))
       const schema = zod(Schema.Number.check(isEven))
 
       expect(schema.parse(4)).toBe(4)
@@ -218,10 +216,7 @@ describe("util.effect-zod", () => {
     })
 
     test("annotations.message on the filter is used when filter returns false", () => {
-      const positive = Schema.makeFilter(
-        (n: number) => n > 0,
-        { message: "must be positive" },
-      )
+      const positive = Schema.makeFilter((n: number) => n > 0, { message: "must be positive" })
       const schema = zod(Schema.Number.check(positive))
 
       const result = schema.safeParse(-1)
@@ -230,13 +225,10 @@ describe("util.effect-zod", () => {
     })
 
     test("cross-field check on a record flags missing key", () => {
-      const hasKey = Schema.makeFilter(
-        (data: Record<string, { enabled: boolean }>) =>
-          "required" in data ? undefined : "missing 'required' key",
-      )
-      const schema = zod(
-        Schema.Record(Schema.String, Schema.Struct({ enabled: Schema.Boolean })).check(hasKey),
+      const hasKey = Schema.makeFilter((data: Record<string, { enabled: boolean }>) =>
+        "required" in data ? undefined : "missing 'required' key",
       )
+      const schema = zod(Schema.Record(Schema.String, Schema.Struct({ enabled: Schema.Boolean })).check(hasKey))
 
       expect(schema.parse({ required: { enabled: true } })).toEqual({
         required: { enabled: true },