|
|
@@ -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
|