fix: enforce extensions requirement for custom lsp servers (#2734)

This commit is contained in:
Aiden Cline
2025-09-22 11:45:47 -05:00
committed by GitHub
parent ee442975df
commit cc2bd7141f

View File

@@ -14,6 +14,7 @@ import { Flag } from "../flag/flag"
import { Auth } from "../auth"
import { type ParseError as JsoncParseError, parse as parseJsonc, printParseErrorCode } from "jsonc-parser"
import { Instance } from "../project/instance"
import { LSPServer } from "../lsp/server"
export namespace Config {
const log = Log.create({ service: "config" })
@@ -482,7 +483,22 @@ export namespace Config {
}),
]),
)
.optional(),
.optional()
.refine(
(data) => {
if (!data) return true
const serverIds = new Set(Object.values(LSPServer).map((s) => s.id))
return Object.entries(data).every(([id, config]) => {
if (config.disabled) return true
if (serverIds.has(id)) return true
return Boolean(config.extensions)
})
},
{
error: "For custom LSP servers, 'extensions' array is required.",
},
),
instructions: z.array(z.string()).optional().describe("Additional instruction files or patterns to include"),
layout: Layout.optional().describe("@deprecated Always uses stretch layout."),
permission: z