summaryrefslogtreecommitdiffhomepage
path: root/js/src/tool/lsp-diagnostics.ts
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tool/lsp-diagnostics.ts')
-rw-r--r--js/src/tool/lsp-diagnostics.ts53
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",
+ };
+ },
+});