UNPKG

tree-ast-grep-mcp

Version:

Simple, direct ast-grep wrapper for AI coding agents. Zero abstractions, maximum performance.

201 lines 6.37 kB
import { BaseTool } from '../core/tool-base.js'; import { ScanResult, RunRuleParams } from '../types/schemas.js'; import { WorkspaceManager } from '../core/workspace-manager.js'; import { AstGrepBinaryManager } from '../core/binary-manager.js'; export declare class RunRuleTool extends BaseTool { private patternValidator; constructor(workspaceManager: WorkspaceManager, binaryManager: AstGrepBinaryManager); static getSchema(): { name: string; description: string; inputSchema: { type: string; properties: { id: { type: string; description: string; }; language: { type: string; description: string; }; pattern: { type: string; description: string; }; message: { type: string; description: string; }; severity: { type: string; enum: string[]; default: string; description: string; }; kind: { type: string; description: string; }; insidePattern: { type: string; description: string; }; hasPattern: { type: string; description: string; }; notPattern: { type: string; description: string; }; where: { type: string; items: { type: string; properties: { metavariable: { type: string; description: string; }; regex: { type: string; description: string; }; notRegex: { type: string; description: string; }; equals: { type: string; description: string; }; includes: { type: string; description: string; }; }; required: string[]; }; description: string; }; fix: { type: string; description: string; }; paths: { type: string; items: { type: string; }; description: string; }; format: { type: string; enum: string[]; default: string; description: string; }; include: { type: string; items: { type: string; }; description: string; }; exclude: { type: string; items: { type: string; }; description: string; }; ruleIds: { type: string; items: { type: string; }; description: string; }; timeoutMs: { type: string; minimum: number; maximum: number; description: string; }; relativePaths: { type: string; default: boolean; description: string; }; follow: { type: string; default: boolean; description: string; }; threads: { type: string; minimum: number; maximum: number; description: string; }; noIgnore: { type: string; default: boolean; description: string; }; ignorePath: { type: string; items: { type: string; }; description: string; }; root: { type: string; description: string; }; workdir: { type: string; description: string; }; saveTo: { type: string; description: string; }; }; required: string[]; }; }; execute(params: RunRuleParams): Promise<{ yaml: string; scan: ScanResult; savedPath?: string; }>; private buildYaml; /** * Execute the generated YAML rule directly using ast-grep */ private executeRule; /** * Build ast-grep scan command arguments */ private buildScanArgs; /** * Parse ast-grep scan results into ScanResult format */ private parseScanResults; /** * Parse a single finding from ast-grep output */ private parseSingleFinding; /** * Extract files scanned count from stderr output */ private extractFilesScanned; /** * Count files in given paths for file scanning metrics */ private countFilesInPaths; } //# sourceMappingURL=rule-builder.d.ts.map