diff options
Diffstat (limited to 'js/src/tool/lsp-diagnostics.ts')
| -rw-r--r-- | js/src/tool/lsp-diagnostics.ts | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/js/src/tool/lsp-diagnostics.ts b/js/src/tool/lsp-diagnostics.ts new file mode 100644 index 000000000..41c33f822 --- /dev/null +++ b/js/src/tool/lsp-diagnostics.ts @@ -0,0 +1,53 @@ +import { z } from "zod"; +import { Tool } from "./tool"; +import path from "node:path"; +import { LSP } from "../lsp"; +import { App } from "../app"; + +export const LspDiagnosticTool = Tool.define({ + name: "diagnostics", + description: `Get diagnostics for a file and/or project. + +WHEN TO USE THIS TOOL: +- Use when you need to check for errors or warnings in your code +- Helpful for debugging and ensuring code quality +- Good for getting a quick overview of issues in a file or project + +HOW TO USE: +- Provide a path to a file to get diagnostics for that file +- Results are displayed in a structured format with severity levels + +FEATURES: +- Displays errors, warnings, and hints +- Groups diagnostics by severity +- Provides detailed information about each diagnostic + +LIMITATIONS: +- Results are limited to the diagnostics provided by the LSP clients +- May not cover all possible issues in the code +- Does not provide suggestions for fixing issues + +TIPS: +- Use in conjunction with other tools for a comprehensive code review +- Combine with the LSP client for real-time diagnostics`, + parameters: z.object({ + path: z.string().describe("The path to the file to get diagnostics."), + }), + execute: async (args) => { + const app = await App.use(); + const normalized = path.isAbsolute(args.path) + ? args.path + : path.join(app.root, args.path); + await LSP.file(normalized); + const diagnostics = await LSP.diagnostics(); + const file = diagnostics[normalized]; + return { + metadata: { + diagnostics, + }, + output: file?.length + ? file.map(LSP.Diagnostic.pretty).join("\n") + : "No errors found", + }; + }, +}); |
