diff options
| author | Dax Raad <[email protected]> | 2025-05-26 17:15:41 -0400 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-05-26 17:15:47 -0400 |
| commit | de9f144858107b4230f44956283542bd137bffb6 (patch) | |
| tree | 72f2d0b6e0fdaf9bf249115358576cb748b10dec /js/src/tool/diagnostics.ts | |
| parent | 0ad87389331c4b18bcecec74476853a2e16a8d10 (diff) | |
| download | opencode-de9f144858107b4230f44956283542bd137bffb6.tar.gz opencode-de9f144858107b4230f44956283542bd137bffb6.zip | |
sync
Diffstat (limited to 'js/src/tool/diagnostics.ts')
| -rw-r--r-- | js/src/tool/diagnostics.ts | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/js/src/tool/diagnostics.ts b/js/src/tool/diagnostics.ts new file mode 100644 index 000000000..a01f39c7c --- /dev/null +++ b/js/src/tool/diagnostics.ts @@ -0,0 +1,56 @@ +import { z } from "zod"; +import { Tool } from "./tool"; +import path from "path"; +import { LSP } from "../lsp"; +import { App } from "../app"; + +export const DiagnosticsTool = 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", + }; + }, +}); + +const x: number = "asd"; + |
