mirror of
https://github.com/aljazceru/opencode.git
synced 2025-12-25 11:44:22 +01:00
Refactor LSP tools and add hover functionality
- 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 <noreply@opencode.ai>
This commit is contained in:
@@ -5,4 +5,5 @@ export * from "./glob";
|
||||
export * from "./grep";
|
||||
export * from "./view";
|
||||
export * from "./ls";
|
||||
export * from "./diagnostics";
|
||||
export * from "./lsp-diagnostics";
|
||||
export * from "./lsp-hover";
|
||||
|
||||
@@ -4,7 +4,7 @@ import path from "node:path";
|
||||
import { LSP } from "../lsp";
|
||||
import { App } from "../app";
|
||||
|
||||
export const DiagnosticsTool = Tool.define({
|
||||
export const LspDiagnosticTool = Tool.define({
|
||||
name: "diagnostics",
|
||||
description: `Get diagnostics for a file and/or project.
|
||||
|
||||
38
js/src/tool/lsp-hover.ts
Normal file
38
js/src/tool/lsp-hover.ts
Normal file
@@ -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),
|
||||
};
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user