mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-03-31 14:22:27 +00:00
54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
import { z } from "zod"
|
|
import { Tool } from "./tool"
|
|
import path from "path"
|
|
import { LSP } from "../lsp"
|
|
import { App } from "../app/app"
|
|
|
|
export const LspDiagnosticTool = Tool.define({
|
|
id: "opencode.lsp_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 = App.info()
|
|
const normalized = path.isAbsolute(args.path)
|
|
? args.path
|
|
: path.join(app.path.cwd, 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",
|
|
}
|
|
},
|
|
})
|