UNPKG

mcp-ai-agent-guidelines

Version:

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

138 lines 4.17 kB
/** * Dependency Extraction Service * * Extracts dependencies and imports from code */ /** * Extract dependencies from TypeScript/JavaScript code */ export function extractTypeScriptDependencies(code) { const dependencies = []; const lines = code.split("\n"); lines.forEach((line) => { // ES6 imports const importMatch = line.match(/import\s+(?:{([^}]+)}|\*\s+as\s+\w+|\w+)\s+from\s+['"]([^'"]+)['"]/); if (importMatch) { dependencies.push({ type: "import", module: importMatch[2], items: importMatch[1]?.split(",").map((s) => s.trim()), }); } // CommonJS require const requireMatch = line.match(/require\s*\(['"]([^'"]+)['"]\)/); if (requireMatch) { dependencies.push({ type: "require", module: requireMatch[1], }); } }); return dependencies; } /** * Extract dependencies from Python code */ export function extractPythonDependencies(code) { const dependencies = []; const lines = code.split("\n"); lines.forEach((line) => { // Python imports const importMatch = line.match(/(?:from\s+(\S+)\s+)?import\s+(.+)/); if (importMatch) { dependencies.push({ type: "import", module: importMatch[1] || importMatch[2].split(",")[0].trim(), items: importMatch[2]?.split(",").map((s) => s.trim()), }); } }); return dependencies; } /** * Extract dependencies from Java code */ export function extractJavaDependencies(code) { const dependencies = []; const lines = code.split("\n"); lines.forEach((line) => { // Java imports const importMatch = line.match(/import\s+(?:static\s+)?([^;]+);/); if (importMatch) { const fullPath = importMatch[1].trim(); const parts = fullPath.split("."); const className = parts[parts.length - 1]; dependencies.push({ type: "import", module: fullPath, items: [className], }); } }); return dependencies; } /** * Extract dependencies from Go code */ export function extractGoDependencies(code) { const dependencies = []; const lines = code.split("\n"); lines.forEach((line) => { // Go imports const importMatch = line.match(/import\s+(?:"([^"]+)"|(\([^)]+\)))/); if (importMatch) { if (importMatch[1]) { // Single import dependencies.push({ type: "import", module: importMatch[1], }); } } }); return dependencies; } /** * Extract dependencies from Rust code */ export function extractRustDependencies(code) { const dependencies = []; const lines = code.split("\n"); lines.forEach((line) => { // Rust use statements const useMatch = line.match(/use\s+([^;]+);/); if (useMatch) { const path = useMatch[1].trim(); dependencies.push({ type: "import", module: path, }); } }); return dependencies; } /** * Main dependency extraction function that delegates to language-specific extractors */ export function extractDependencies(code, language) { const languageLower = language.toLowerCase(); if (languageLower.includes("typescript") || languageLower.includes("javascript")) { return extractTypeScriptDependencies(code); } if (languageLower.includes("python")) { return extractPythonDependencies(code); } if (languageLower.includes("java")) { return extractJavaDependencies(code); } if (languageLower.includes("go")) { return extractGoDependencies(code); } if (languageLower.includes("rust")) { return extractRustDependencies(code); } // Default: try TypeScript patterns return extractTypeScriptDependencies(code); } //# sourceMappingURL=dependency-extraction.js.map