| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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",
- };
- },
- });
|