diff --git a/packages/opencode/src/lsp/client.ts b/packages/opencode/src/lsp/client.ts index 809ea95091b6..528f7aa2e00e 100644 --- a/packages/opencode/src/lsp/client.ts +++ b/packages/opencode/src/lsp/client.ts @@ -276,7 +276,7 @@ export async function create(input: { serverID: string; server: LSPServer.Handle }, }, }), - INITIALIZE_TIMEOUT_MS, + input.server.initializeTimeout ?? INITIALIZE_TIMEOUT_MS, ).catch((err) => { logger.error("initialize error", { error: err }) throw new InitializeError( diff --git a/packages/opencode/src/lsp/server.ts b/packages/opencode/src/lsp/server.ts index b8861d1f8167..b87c5adc4a52 100644 --- a/packages/opencode/src/lsp/server.ts +++ b/packages/opencode/src/lsp/server.ts @@ -27,6 +27,8 @@ const output = (cmd: string[], opts: Process.RunOptions = {}) => Process.text(cm export interface Handle { process: ChildProcessWithoutNullStreams initialization?: Record + /** Override the default 45 s initialize-request timeout (ms). */ + initializeTimeout?: number } type RootFunction = (file: string, ctx: InstanceContext) => Promise @@ -1290,6 +1292,7 @@ export const JDTLS: Info = { cwd: root, }, ), + initializeTimeout: 180_000, } }, } @@ -1389,6 +1392,7 @@ export const KotlinLS: Info = { process: spawn(launcherScript, ["--stdio"], { cwd: root, }), + initializeTimeout: 180_000, } }, }