mirror of
https://github.com/aljazceru/opencode.git
synced 2025-12-22 02:04:22 +01:00
fix: enforce extensions requirement for custom lsp servers (#2734)
This commit is contained in:
@@ -14,6 +14,7 @@ import { Flag } from "../flag/flag"
|
|||||||
import { Auth } from "../auth"
|
import { Auth } from "../auth"
|
||||||
import { type ParseError as JsoncParseError, parse as parseJsonc, printParseErrorCode } from "jsonc-parser"
|
import { type ParseError as JsoncParseError, parse as parseJsonc, printParseErrorCode } from "jsonc-parser"
|
||||||
import { Instance } from "../project/instance"
|
import { Instance } from "../project/instance"
|
||||||
|
import { LSPServer } from "../lsp/server"
|
||||||
|
|
||||||
export namespace Config {
|
export namespace Config {
|
||||||
const log = Log.create({ service: "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"),
|
instructions: z.array(z.string()).optional().describe("Additional instruction files or patterns to include"),
|
||||||
layout: Layout.optional().describe("@deprecated Always uses stretch layout."),
|
layout: Layout.optional().describe("@deprecated Always uses stretch layout."),
|
||||||
permission: z
|
permission: z
|
||||||
|
|||||||
Reference in New Issue
Block a user