UNPKG

mcp-ai-agent-guidelines

Version:

A comprehensive Model Context Protocol server providing advanced tools, resources, and prompts for implementing AI agent best practices

74 lines 2.86 kB
/** * Base parser class with common issue detection logic */ /** * Common regex patterns used across parsers */ export const PATTERNS = { // Matches bare package name with optional extras: package[extra] or just package BARE_PACKAGE: /^[a-zA-Z0-9_-]+(\[[^\]]+\])?\s*$/, // Matches package with version constraint: package>=1.0 or package[extra]==1.2 PACKAGE_WITH_VERSION: /^[a-zA-Z0-9_-]+(\[[^\]]+\])?\s*[<>=!~]+/, }; /** * Base analyzer with common issue detection logic */ export class BaseParser { analyze(parseResult, options) { const issues = []; const recommendations = []; // Analyze each package for common patterns for (const pkg of parseResult.packages) { this.analyzePackage(pkg, options, issues); } // Add ecosystem-specific analysis this.analyzeEcosystemSpecific(parseResult, options, issues); // Generate recommendations this.generateRecommendations(issues, recommendations); return { packages: parseResult.packages, issues, recommendations, ecosystem: parseResult.ecosystem, fileType: parseResult.fileType, projectName: parseResult.projectName, projectVersion: parseResult.projectVersion, }; } analyzeEcosystemSpecific(_parseResult, _options, _issues) { // Override in subclasses for ecosystem-specific analysis } generateRecommendations(issues, recommendations) { if (issues.length === 0) { recommendations.push("No immediate issues detected in dependency versions"); recommendations.push("Continue monitoring dependencies regularly"); return; } const criticalCount = issues.filter((i) => i.severity === "critical").length; const highCount = issues.filter((i) => i.severity === "high").length; const moderateCount = issues.filter((i) => i.severity === "moderate").length; if (criticalCount > 0) { recommendations.push(`Address ${criticalCount} critical issue(s) immediately`); } if (highCount > 0) { recommendations.push(`Update ${highCount} high-priority package(s) as soon as possible`); } if (moderateCount > 0) { recommendations.push(`Review ${moderateCount} moderate concern(s)`); } // Add ecosystem-specific recommendations this.addEcosystemRecommendations(recommendations); } addIssue(issues, pkg, type, severity, description, recommendation) { issues.push({ package: pkg.name, version: pkg.version, type, severity, description, recommendation, ecosystem: pkg.ecosystem, }); } } //# sourceMappingURL=base.js.map