From c040baae118787cd0573e5b674a2a225f36d898c Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 27 May 2025 02:17:35 -0400 Subject: Refactor LSP tools and add hover functionality MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Split diagnostics tool into separate lsp-diagnostics.ts file - Add new lsp-hover.ts tool for LSP hover information - Update tool exports and session integration - Remove old diagnostics.ts file 🤖 Generated with opencode Co-Authored-By: opencode --- js/src/tool/lsp-hover.ts | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 js/src/tool/lsp-hover.ts (limited to 'js/src/tool/lsp-hover.ts') diff --git a/js/src/tool/lsp-hover.ts b/js/src/tool/lsp-hover.ts new file mode 100644 index 000000000..9957920a2 --- /dev/null +++ b/js/src/tool/lsp-hover.ts @@ -0,0 +1,38 @@ +import { z } from "zod"; +import { Tool } from "./tool"; +import path from "node:path"; +import { LSP } from "../lsp"; +import { App } from "../app"; + +export const LspHoverTool = Tool.define({ + name: "lsp.hover", + description: ` + Looks up hover information for a given position in a source file using the Language Server Protocol (LSP). + This includes type information, documentation, or symbol details at the specified line and character. + Useful for providing code insights, explanations, or context-aware assistance based on the user's current cursor location. + `, + parameters: z.object({ + file: z.string().describe("The path to the file to get diagnostics."), + line: z.number().describe("The line number to get diagnostics."), + character: z.number().describe("The character number to get diagnostics."), + }), + execute: async (args) => { + console.log(args); + const app = await App.use(); + const file = path.isAbsolute(args.file) + ? args.file + : path.join(app.root, args.file); + await LSP.file(file); + const result = await LSP.hover({ + ...args, + file, + }); + console.log(result); + return { + metadata: { + result, + }, + output: JSON.stringify(result, null, 2), + }; + }, +}); -- cgit v1.2.3