summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-07-08 18:33:12 -0400
committerDax Raad <[email protected]>2025-07-08 18:33:12 -0400
commit00ea5082e7773deef522f4aa4550c00b8b027b75 (patch)
treec001de1e4d2a9bdbdf93c7634531cea52fef663f
parent4a878b88c088ed8b88514b71a32a0207c934292e (diff)
downloadopencode-00ea5082e7773deef522f4aa4550c00b8b027b75.tar.gz
opencode-00ea5082e7773deef522f4aa4550c00b8b027b75.zip
add typescript lsp timeout if it fails to start
-rw-r--r--packages/opencode/src/lsp/index.ts5
-rw-r--r--packages/opencode/src/lsp/server.ts4
2 files changed, 7 insertions, 2 deletions
diff --git a/packages/opencode/src/lsp/index.ts b/packages/opencode/src/lsp/index.ts
index 18767958b..f7e33e309 100644
--- a/packages/opencode/src/lsp/index.ts
+++ b/packages/opencode/src/lsp/index.ts
@@ -53,7 +53,10 @@ export namespace LSP {
serverID: server.id,
server: handle,
root,
- }).catch((err) => log.error("", { error: err }))
+ }).catch((err) => {
+ handle.process.kill()
+ log.error("", { error: err })
+ })
if (!client) break
clients.push(client)
}
diff --git a/packages/opencode/src/lsp/server.ts b/packages/opencode/src/lsp/server.ts
index 09502cb72..e46ce3df4 100644
--- a/packages/opencode/src/lsp/server.ts
+++ b/packages/opencode/src/lsp/server.ts
@@ -9,6 +9,7 @@ import fs from "fs/promises"
import { unique } from "remeda"
import { Ripgrep } from "../file/ripgrep"
import type { LSPClient } from "./client"
+import { withTimeout } from "../util/timeout"
export namespace LSPServer {
const log = Log.create({ service: "lsp.server" })
@@ -69,7 +70,7 @@ export namespace LSPServer {
glob: ["*.ts", "*.tsx", "*.js", "*.jsx", "*.mjs", "*.cjs", "*.mts", "*.cts"],
limit: 1,
})
- await new Promise<void>(async (resolve) => {
+ const wait = new Promise<void>(async (resolve) => {
const notif = lsp.connection.onNotification("$/progress", (params) => {
if (params.value.kind !== "end") return
notif.dispose()
@@ -77,6 +78,7 @@ export namespace LSPServer {
})
await lsp.notify.open({ path: path.join(lsp.root, hint) })
})
+ await withTimeout(wait, 5_000)
},
}
},