Răsfoiți Sursa

Update LSP client/server and CLI scrap command functionality

🤖 Generated with [OpenCode](https://opencode.ai)

Co-Authored-By: OpenCode <[email protected]>
Dax Raad 8 luni în urmă
părinte
comite
96b5a079ff

+ 3 - 5
packages/opencode/src/cli/cmd/scrap.ts

@@ -1,6 +1,5 @@
 import { App } from "../../app/app"
 import { VERSION } from "../version"
-import { LSP } from "../../lsp"
 import { cmd } from "./cmd"
 
 export const ScrapCommand = cmd({
@@ -8,10 +7,9 @@ export const ScrapCommand = cmd({
   builder: (yargs) =>
     yargs.positional("file", { type: "string", demandOption: true }),
   describe: "test command",
-  async handler(args) {
-    await App.provide({ cwd: process.cwd(), version: VERSION }, async () => {
-      await LSP.touchFile(args.file, true)
-      await LSP.diagnostics()
+  async handler() {
+    await App.provide({ cwd: process.cwd(), version: VERSION }, async (app) => {
+      Bun.resolveSync("typescript/lib/tsserver.js", app.path.cwd)
     })
   },
 })

+ 2 - 1
packages/opencode/src/lsp/client.ts

@@ -57,6 +57,7 @@ export namespace LSPClient {
     })
     connection.listen()
 
+    const initialization = await input.initialization?.(app)
     await connection.sendRequest("initialize", {
       processId: server.pid,
       workspaceFolders: [
@@ -66,7 +67,7 @@ export namespace LSPClient {
         },
       ],
       initializationOptions: {
-        ...input.initialization,
+        ...initialization,
       },
       capabilities: {
         workspace: {

+ 12 - 5
packages/opencode/src/lsp/server.ts

@@ -10,7 +10,7 @@ export namespace LSPServer {
   export interface Info {
     id: string
     extensions: string[]
-    initialization?: Record<string, any>
+    initialization?: (app: App.Info) => Promise<Record<string, any>>
     spawn(app: App.Info): Promise<ChildProcessWithoutNullStreams | undefined>
   }
 
@@ -27,10 +27,17 @@ export namespace LSPServer {
         ".mts",
         ".cts",
       ],
-      initialization: {
-        tsserver: {
-          path: require.resolve("typescript/lib/tsserver.js"),
-        },
+      async initialization(app) {
+        const path = Bun.resolve(
+          "typescript/lib/tsserver.js",
+          app.path.cwd,
+        ).catch(() => {})
+        if (!path) return {}
+        return {
+          tsserver: {
+            path,
+          },
+        }
       },
       async spawn() {
         const root =