UNPKG

vibe-coder-mcp

Version:

Production-ready MCP server with complete agent integration, multi-transport support, and comprehensive development automation tools for AI-assisted workflows.

75 lines (74 loc) 2.84 kB
import { getLanguageHandler } from './languageHandlers/registry.js'; import logger from '../../logger.js'; export function getNodeText(node, sourceCode) { if (!node) return ''; return sourceCode.substring(node.startIndex, node.endIndex); } export function generateHeuristicComment(name, type, signature, parentClass) { const A_AN = ['a', 'e', 'i', 'o', 'u'].includes(name.charAt(0).toLowerCase()) ? 'An' : 'A'; const nameParts = name.replace(/([A-Z])/g, ' $1').toLowerCase().split(/[\s_]+/).filter(Boolean); const readableName = nameParts.join(' '); switch (type) { case 'function': return `Performs an action related to ${readableName}.`; case 'method': return `Method ${readableName} of class ${parentClass || 'N/A'}.`; case 'class': return `${A_AN} ${readableName} class definition.`; case 'property': return `Property ${readableName} of class ${parentClass || 'N/A'}.`; case 'import': return `Imports module or items from '${readableName}'.`; case 'file': return `File containing code related to ${readableName}.`; default: return `Symbol ${readableName}.`; } } export function extractFunctions(parentNode, sourceCode, languageId, isMethodExtraction = false, className) { try { const handler = getLanguageHandler(languageId); const options = { isMethodExtraction, className, enableContextAnalysis: true, enableRoleDetection: true, enableHeuristicNaming: true }; return handler.extractFunctions(parentNode, sourceCode, options); } catch (error) { logger.error({ err: error, languageId }, `Error extracting functions for language ${languageId}`); return []; } } export function extractClasses(rootNode, sourceCode, languageId) { try { const handler = getLanguageHandler(languageId); const options = { extractNestedClasses: false, extractMethods: true, extractProperties: true }; return handler.extractClasses(rootNode, sourceCode, options); } catch (error) { logger.error({ err: error, languageId }, `Error extracting classes for language ${languageId}`); return []; } } export function extractImports(rootNode, sourceCode, languageId) { try { const handler = getLanguageHandler(languageId); const options = { resolveImportPaths: true, extractComments: true }; return handler.extractImports(rootNode, sourceCode, options); } catch (error) { logger.error({ err: error, languageId }, `Error extracting imports for language ${languageId}`); return []; } }