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.

140 lines (139 loc) 6.59 kB
import { DefaultLanguageHandler } from './default.js'; import logger from '../../../logger.js'; import { JavaScriptHandler } from './javascript.js'; import { TypeScriptHandler } from './typescript.js'; import { PythonHandler } from './python.js'; import { JavaHandler } from './java.js'; import { CSharpHandler } from './csharp.js'; import { GoHandler } from './go.js'; import { RubyHandler } from './ruby.js'; import { RustHandler } from './rust.js'; import { PhpHandler } from './php.js'; import { SwiftHandler } from './swift.js'; import { KotlinHandler } from './kotlin.js'; import { CppHandler } from './cpp.js'; import { ScalaHandler } from './scala.js'; import { ObjectiveCHandler } from './objectivec.js'; import { ElixirHandler } from './elixir.js'; import { LuaHandler } from './lua.js'; import { BashHandler } from './bash.js'; import { DartHandler } from './dart.js'; import { RHandler } from './r.js'; import { YamlHandler } from './yaml.js'; import { GraphQLHandler } from './graphql.js'; import { JsonHandler } from './json.js'; import { HtmlHandler } from './html.js'; import { VueHandler } from './vue.js'; import { TomlHandler } from './toml.js'; export class LanguageHandlerRegistry { handlers = new Map(); defaultHandler; static instance; static getInstance() { if (!LanguageHandlerRegistry.instance) { LanguageHandlerRegistry.instance = new LanguageHandlerRegistry(); } return LanguageHandlerRegistry.instance; } static registerHandler(extension, handler) { LanguageHandlerRegistry.getInstance().registerHandler(extension, handler); } static getHandler(extension) { return LanguageHandlerRegistry.getInstance().getHandler(extension); } constructor() { this.defaultHandler = new DefaultLanguageHandler(); this.registerDefaultHandlers(); } registerDefaultHandlers() { this.registerHandler('.js', new JavaScriptHandler()); this.registerHandler('.jsx', new JavaScriptHandler(true)); this.registerHandler('.mjs', new JavaScriptHandler()); this.registerHandler('.cjs', new JavaScriptHandler()); this.registerHandler('.ts', new TypeScriptHandler()); this.registerHandler('.tsx', new TypeScriptHandler(true)); this.registerHandler('.mts', new TypeScriptHandler()); this.registerHandler('.cts', new TypeScriptHandler()); this.registerHandler('.py', new PythonHandler()); this.registerHandler('.pyi', new PythonHandler()); this.registerHandler('.pyx', new PythonHandler()); this.registerHandler('.pyw', new PythonHandler()); this.registerHandler('.java', new JavaHandler()); this.registerHandler('.jsp', new JavaHandler()); this.registerHandler('.cs', new CSharpHandler()); this.registerHandler('.cshtml', new CSharpHandler()); this.registerHandler('.razor', new CSharpHandler()); this.registerHandler('.go', new GoHandler()); this.registerHandler('.rb', new RubyHandler()); this.registerHandler('.rake', new RubyHandler()); this.registerHandler('.gemspec', new RubyHandler()); this.registerHandler('.rs', new RustHandler()); this.registerHandler('.php', new PhpHandler()); this.registerHandler('.phtml', new PhpHandler()); this.registerHandler('.swift', new SwiftHandler()); this.registerHandler('.kt', new KotlinHandler()); this.registerHandler('.kts', new KotlinHandler()); this.registerHandler('.c', new CppHandler()); this.registerHandler('.h', new CppHandler()); this.registerHandler('.cpp', new CppHandler()); this.registerHandler('.hpp', new CppHandler()); this.registerHandler('.cc', new CppHandler()); this.registerHandler('.cxx', new CppHandler()); this.registerHandler('.scala', new ScalaHandler()); this.registerHandler('.sc', new ScalaHandler()); this.registerHandler('.m', new ObjectiveCHandler()); this.registerHandler('.mm', new ObjectiveCHandler()); this.registerHandler('.ex', new ElixirHandler()); this.registerHandler('.exs', new ElixirHandler()); this.registerHandler('.lua', new LuaHandler()); this.registerHandler('.sh', new BashHandler()); this.registerHandler('.bash', new BashHandler()); this.registerHandler('.zsh', new BashHandler()); this.registerHandler('.dart', new DartHandler()); this.registerHandler('.r', new RHandler()); this.registerHandler('.R', new RHandler()); this.registerHandler('.rmd', new RHandler()); this.registerHandler('.yaml', new YamlHandler()); this.registerHandler('.yml', new YamlHandler()); this.registerHandler('.ini', new YamlHandler()); this.registerHandler('.json', new JsonHandler()); this.registerHandler('.jsonc', new JsonHandler()); this.registerHandler('.json5', new JsonHandler()); this.registerHandler('.toml', new TomlHandler()); this.registerHandler('.html', new HtmlHandler()); this.registerHandler('.htm', new HtmlHandler()); this.registerHandler('.xhtml', new HtmlHandler()); this.registerHandler('.svg', new HtmlHandler()); this.registerHandler('.vue', new VueHandler()); this.registerHandler('.graphql', new GraphQLHandler()); this.registerHandler('.gql', new GraphQLHandler()); this.registerHandler('.graphqls', new GraphQLHandler()); logger.debug('Registered default language handlers'); } registerHandler(extension, handler) { this.handlers.set(extension.toLowerCase(), handler); logger.debug(`Registered language handler for ${extension}`); } getHandler(extension) { const handler = this.handlers.get(extension.toLowerCase()); if (handler) { return handler; } logger.debug(`No specific handler found for ${extension}, using default handler`); return this.defaultHandler; } hasHandler(extension) { return this.handlers.has(extension.toLowerCase()); } getRegisteredExtensions() { return Array.from(this.handlers.keys()); } } const languageHandlerRegistry = new LanguageHandlerRegistry(); export default languageHandlerRegistry; export function getLanguageHandler(extension) { return languageHandlerRegistry.getHandler(extension); } export function registerLanguageHandler(extension, handler) { languageHandlerRegistry.registerHandler(extension, handler); }