UNPKG

giga-code

Version:

A personal AI CLI assistant powered by Grok for local development.

206 lines 7.66 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.addContext7Server = exports.getNextAvailablePort = exports.AVAILABLE_PORTS = exports.getDisabledMcpServers = exports.getEnabledMcpServers = exports.setMcpServerEnabled = exports.getMcpServerByName = exports.isMcpServerAdded = exports.getAllAddedMcpServers = exports.deleteMcpServer = exports.addHttpMcpServer = exports.addMcpServer = exports.saveAddedMcpServers = exports.loadAddedMcpServers = void 0; const fs = __importStar(require("fs")); const path = __importStar(require("path")); const os = __importStar(require("os")); const getStorageFile = () => { const homeDir = os.homedir(); const gigaDir = path.join(homeDir, '.giga'); return path.join(gigaDir, 'added-mcp-servers.json'); }; function loadAddedMcpServers() { try { const storageFile = getStorageFile(); if (!fs.existsSync(storageFile)) { return []; } const data = JSON.parse(fs.readFileSync(storageFile, 'utf8')); let servers = data.servers || []; // Migrate old servers to new format servers = servers.map(server => { if (!server.type) { return { ...server, type: 'process', enabled: true, // Default to enabled for existing servers }; } return server; }); return servers; } catch (error) { console.error('Error loading added MCP servers:', error); return []; } } exports.loadAddedMcpServers = loadAddedMcpServers; function saveAddedMcpServers(servers) { try { const storageFile = getStorageFile(); const data = { servers }; fs.writeFileSync(storageFile, JSON.stringify(data, null, 2), { mode: 0o600 }); } catch (error) { console.error('Error saving added MCP servers:', error); } } exports.saveAddedMcpServers = saveAddedMcpServers; function addMcpServer(name, command, args, env, description) { const servers = loadAddedMcpServers(); // Check if server already exists const exists = servers.some(s => s.name === name); if (!exists) { const newServer = { name, type: 'process', command, enabled: true, args, env, description, dateAdded: new Date().toISOString(), }; servers.push(newServer); saveAddedMcpServers(servers); } } exports.addMcpServer = addMcpServer; function addHttpMcpServer(name, httpUrl, port, description) { const servers = loadAddedMcpServers(); // Check if server already exists const exists = servers.some(s => s.name === name); if (!exists) { const newServer = { name, type: 'http', httpUrl, port, enabled: true, description, dateAdded: new Date().toISOString(), }; servers.push(newServer); saveAddedMcpServers(servers); } } exports.addHttpMcpServer = addHttpMcpServer; function deleteMcpServer(name) { const servers = loadAddedMcpServers(); const initialLength = servers.length; const filteredServers = servers.filter(s => s.name !== name); if (filteredServers.length < initialLength) { saveAddedMcpServers(filteredServers); return true; } return false; } exports.deleteMcpServer = deleteMcpServer; function getAllAddedMcpServers() { return loadAddedMcpServers(); } exports.getAllAddedMcpServers = getAllAddedMcpServers; function isMcpServerAdded(name) { const servers = loadAddedMcpServers(); return servers.some(s => s.name === name); } exports.isMcpServerAdded = isMcpServerAdded; function getMcpServerByName(name) { const servers = loadAddedMcpServers(); return servers.find(s => s.name === name); } exports.getMcpServerByName = getMcpServerByName; function setMcpServerEnabled(name, enabled) { const servers = loadAddedMcpServers(); const server = servers.find(s => s.name === name); if (server) { server.enabled = enabled; saveAddedMcpServers(servers); return true; } return false; } exports.setMcpServerEnabled = setMcpServerEnabled; function getEnabledMcpServers() { return loadAddedMcpServers().filter(server => server.enabled); } exports.getEnabledMcpServers = getEnabledMcpServers; function getDisabledMcpServers() { return loadAddedMcpServers().filter(server => !server.enabled); } exports.getDisabledMcpServers = getDisabledMcpServers; // Available ports for HTTP MCP servers exports.AVAILABLE_PORTS = [6969, 4200, 9420, 3333, 7777, 8888, 5555]; function getNextAvailablePort() { const servers = loadAddedMcpServers(); const usedPorts = new Set(servers.map(s => s.port).filter(Boolean)); for (const port of exports.AVAILABLE_PORTS) { if (!usedPorts.has(port)) { return port; } } // If all predefined ports are used, generate a random one return Math.floor(Math.random() * 9000) + 1000; } exports.getNextAvailablePort = getNextAvailablePort; function addContext7Server() { const servers = loadAddedMcpServers(); // Check if Context7 server already exists const existingIndex = servers.findIndex(s => s.name === 'context7'); if (existingIndex >= 0) { // Update existing server to process type (Context7 uses stdio, not HTTP) const existing = servers[existingIndex]; servers[existingIndex] = { ...existing, type: 'process', command: 'npx -y @upstash/context7-mcp', // Remove HTTP-specific fields httpUrl: undefined, port: undefined, enabled: existing.enabled ?? true, description: existing.description || 'Context7 MCP server for library documentation', }; saveAddedMcpServers(servers); console.log(`Updated Context7 MCP server to process type (stdio)`); } else { // Create new server const newServer = { name: 'context7', type: 'process', command: 'npx -y @upstash/context7-mcp', enabled: true, description: 'Context7 MCP server for library documentation', dateAdded: new Date().toISOString(), }; servers.push(newServer); saveAddedMcpServers(servers); console.log(`Added Context7 MCP server as process type`); } } exports.addContext7Server = addContext7Server; //# sourceMappingURL=added-mcp-servers.js.map