UNPKG

@starwind-ui/mcp

Version:
81 lines 2.62 kB
/** * Package Manager Tool for the MCP Server */ import { existsSync } from "fs"; import { resolve } from "path"; import { detectPackageManager } from "../utils/package_manager.js"; /** * Debug flag to enable/disable console logging */ const DEBUG = false; /** * Helper function for conditional logging */ const log = (...args) => { if (DEBUG) { console.log(...args); } }; /** * Package Manager tool definition */ export const packageManagerTool = { name: "get_package_manager", description: "Detects and returns the current package manager information", inputSchema: { type: "object", properties: { cwd: { type: "string", description: "Root directory to check for lock files", }, defaultManager: { type: "string", description: "Default package manager to use if detection fails (npm, yarn, pnpm)", enum: ["npm", "yarn", "pnpm"], }, }, required: ["cwd"], }, handler: async (args) => { // Debug logging log("MCP Tool - get_package_manager called with args:", args); log("MCP Tool - Current working directory:", process.cwd()); // Check for lock files directly in the handler const lockFiles = { pnpm: "pnpm-lock.yaml", yarn: "yarn.lock", npm: "package-lock.json", }; // Log existence of each lock file Object.entries(lockFiles).forEach(([pm, file]) => { const lockPath = resolve(process.cwd(), file); log(`MCP Tool - ${pm} lock file (${file}) exists:`, existsSync(lockPath)); }); // Only include options that are actually provided const options = { cwd: args.cwd, // cwd is now required }; if (args.defaultManager) { options.defaultManager = args.defaultManager; } else { // Set npm as default if not specified options.defaultManager = "npm"; } log("MCP Tool - Calling detectPackageManager with options:", options); const pmInfo = detectPackageManager(options); log("MCP Tool - Detection result:", pmInfo); return { name: pmInfo.name, commands: { install: pmInfo.installCmd, add: pmInfo.addCmd, remove: pmInfo.removeCmd, run: pmInfo.runCmd, }, // cwd: options.cwd, }; }, }; //# sourceMappingURL=package_manager_tool.js.map