UNPKG

@viberaven/mcp

Version:

MCP server for VibeRaven production-readiness: check_readiness, verify, heal, audit, and strict gate tools for Cursor, Claude Code, and Codex.

151 lines (149 loc) 5.46 kB
#!/usr/bin/env node "use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/lib/cli-runner.ts var cli_runner_exports = {}; __export(cli_runner_exports, { __resetSpawnForTest: () => __resetSpawnForTest, __setSpawnForTest: () => __setSpawnForTest, buildHealArgs: () => buildHealArgs, buildNpxCommand: () => buildNpxCommand, buildToolArgs: () => buildToolArgs, resolveCwd: () => resolveCwd, runVibeRaven: () => runVibeRaven, safeStringArg: () => safeStringArg }); module.exports = __toCommonJS(cli_runner_exports); var import_node_child_process = require("node:child_process"); var CLI_PACKAGE = "@viberaven/cli"; var spawnFn = import_node_child_process.spawn; function __setSpawnForTest(fn) { spawnFn = fn; } function __resetSpawnForTest() { spawnFn = import_node_child_process.spawn; } function safeStringArg(value, label) { if (typeof value !== "string") throw new Error(`Invalid ${label}: expected string`); if (!value.trim()) throw new Error(`Invalid ${label}: expected non-empty string`); if (/[&|<>^%!"\r\n]/.test(value)) throw new Error(`Unsafe characters in ${label}`); return value; } function resolveCwd(cwd) { if (cwd === void 0 || cwd === null) return process.cwd(); if (typeof cwd !== "string") throw new Error("Invalid cwd: expected string"); if (!cwd.trim()) throw new Error("Invalid cwd: expected non-empty string"); return cwd; } function buildNpxCommand(args) { if (process.platform === "win32") { return { command: "cmd.exe", args: ["/d", "/s", "/c", "npx", ...args], shell: false }; } return { command: "npx", args, shell: false }; } function buildHealArgs(prefix, args) { const cliArgs = [...prefix]; if (args.target) cliArgs.push("--target", safeStringArg(args.target, "target")); if (args.gap) cliArgs.push("--gap", safeStringArg(args.gap, "gap")); return cliArgs; } function buildToolArgs(name, args) { switch (name) { case "viberaven_check_readiness": return ["check", "--json"]; case "viberaven_verify": return ["check", "--json"]; case "viberaven_audit": return ["audit", "--vercel-supabase", ...args.json ? ["--json"] : []]; case "viberaven_init_rules": { const cliArgs = ["init"]; if (args.agents) cliArgs.push("--agents", safeStringArg(args.agents, "agents")); if (args.dryRun) cliArgs.push("--dry-run"); return cliArgs; } case "viberaven_clean_plan": return ["clean", "--plan"]; case "viberaven_strict_gate": return ["--strict", "--json"]; case "viberaven_gate_result": return ["--json"]; case "viberaven_context_map": return ["--condense"]; case "viberaven_actions": return ["actions"]; case "viberaven_verify_action": return ["--verify", "--action", safeStringArg(args.actionId, "actionId")]; case "viberaven_heal_plan": return buildHealArgs(["--heal", "--plan"], args); case "viberaven_heal_prompt": return buildHealArgs(["--heal", "--prompt"], args); case "viberaven_heal_apply": { const cliArgs = buildHealArgs(["--heal", "--apply"], args); if (args.yes === true) cliArgs.push("--yes"); return cliArgs; } case "viberaven_validate_npm_package": { const names = []; if (args.packageName) names.push(safeStringArg(args.packageName, "packageName")); if (Array.isArray(args.packageNames)) { for (const entry of args.packageNames) names.push(safeStringArg(entry, "packageName")); } if (names.length === 0) throw new Error("packageName or packageNames is required"); return ["validate-npm-package", "--json", ...names]; } default: throw new Error(`Unknown VibeRaven tool: ${name}`); } } function runVibeRaven(args, cwd) { return new Promise((resolve) => { const built = buildNpxCommand(["-y", CLI_PACKAGE, ...args]); const child = spawnFn(built.command, built.args, { cwd: resolveCwd(cwd), env: process.env, shell: built.shell, stdio: ["ignore", "pipe", "pipe"] }); let stdout = ""; let stderr = ""; child.stdout?.on("data", (chunk) => { stdout += chunk.toString(); }); child.stderr?.on("data", (chunk) => { stderr += chunk.toString(); }); child.on("error", (error) => resolve(`ERROR: ${error.message}`)); child.on("close", (code) => { const combined = `${stdout}${stderr}`.trim(); resolve(`exit ${code ?? 1}${combined ? ` ${combined}` : ""}`); }); }); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { __resetSpawnForTest, __setSpawnForTest, buildHealArgs, buildNpxCommand, buildToolArgs, resolveCwd, runVibeRaven, safeStringArg });