UNPKG

@sigyl-dev/sdk

Version:

Sigyl SDK

166 lines 6.96 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.searchMCP = searchMCP; exports.getMCP = getMCP; exports.getAllServers = getAllServers; exports.getMCPUrl = getMCPUrl; exports.semanticMCP = semanticMCP; exports.semanticTools = semanticTools; const axios_1 = __importDefault(require("axios")); // Default configuration const DEFAULT_REGISTRY_URL = 'http://localhost:3000/api/v1'; const DEFAULT_TIMEOUT = 10000; // Create axios instance with default config /** * Always uses the official Sigyl registry API at https://api.sigyl.dev/api/v1 * Ignores any registryUrl passed in config. */ function createApiClient(config = {}) { const registryUrl = 'https://api.sigyl.dev/api/v1'; const timeout = config.timeout || DEFAULT_TIMEOUT; const client = axios_1.default.create({ baseURL: registryUrl, timeout, headers: Object.assign({ 'Content-Type': 'application/json' }, (config.apiKey && { 'Authorization': `Bearer ${config.apiKey}` })) }); // Add response interceptor to handle API response format client.interceptors.response.use((response) => { // The registry API wraps responses in { success, data, message } format if (response.data && typeof response.data === 'object' && 'success' in response.data) { if (response.data.success) { return response.data.data; } else { throw new Error(response.data.message || response.data.error || 'API request failed'); } } return response.data; }, (error) => { var _a, _b; if ((_b = (_a = error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) { throw new Error(error.response.data.message); } throw error; }); return client; } // Helper function to validate authentication function validateAuth(config, operation) { if (config.requireAuth && !config.apiKey) { throw new Error(`Authentication required for ${operation}. Please provide an API key.`); } } // Helper function to validate admin permissions function validateAdminAuth(config, operation) { if (!config.apiKey) { throw new Error(`Admin API key required for ${operation}. Please provide an API key with admin permissions.`); } } /** * Search for MCP servers in the registry * Note: Search is typically public, but can be restricted if requireAuth is true */ function searchMCP(query_1, tags_1) { return __awaiter(this, arguments, void 0, function* (query, tags, limit = 20, offset = 0, config = {}) { // Validate auth if required validateAuth(config, 'searching servers'); const client = createApiClient(config); // Build query parameters manually to ensure proper formatting const searchParams = new URLSearchParams(); searchParams.append('limit', limit.toString()); searchParams.append('offset', offset.toString()); if (query) searchParams.append('q', query); if (tags && tags.length > 0) searchParams.append('tags', tags.join(',')); // The interceptor returns the data directly return yield client.get(`/packages/search?${searchParams.toString()}`); }); } /** * Get detailed information about a specific MCP server * Note: Server details are typically public, but can be restricted if requireAuth is true */ function getMCP(name_1) { return __awaiter(this, arguments, void 0, function* (name, config = {}) { // Validate auth if required validateAuth(config, 'getting server details'); const client = createApiClient(config); if (!name || name.trim().length === 0) { throw new Error('Server name is required'); } // The interceptor returns the data directly return yield client.get(`/packages/${encodeURIComponent(name)}`); }); } /** * Get all servers (admin operation) * Note: This requires admin API key with admin permissions */ function getAllServers() { return __awaiter(this, arguments, void 0, function* (config = {}) { // Admin operations always require admin authentication validateAdminAuth(config, 'getting all servers'); const client = createApiClient(config); // The interceptor returns the data directly return yield client.get('/packages/admin/all'); }); } /** * Retrieve MCP server URL and metadata by server name */ function getMCPUrl(name_1) { return __awaiter(this, arguments, void 0, function* (name, config = {}) { const client = createApiClient(config); try { // TODO: Confirm endpoint on registry API const pkg = yield client.get(`/packages/name/${encodeURIComponent(name)}`); if (pkg && pkg.source_api_url) { return { url: pkg.source_api_url, server: pkg }; } return null; } catch (err) { return null; } }); } /** * Semantic search for MCP servers * @param query - user prompt or search string * @param count - number of results to return (default 1) */ function semanticMCP(query_1) { return __awaiter(this, arguments, void 0, function* (query, count = 1, config = {}) { const client = createApiClient(config); // TODO: Confirm endpoint on registry API const resp = yield client.post(`/packages/semantic-search`, { query, count }); return Array.isArray(resp) ? resp : []; }); } /** * Semantic search for tools across all MCP servers * @param query - user prompt or search string * @param count - number of results to return (default 1) */ function semanticTools(query_1) { return __awaiter(this, arguments, void 0, function* (query, count = 1, config = {}) { const client = createApiClient(config); // TODO: Confirm endpoint on registry API const resp = yield client.post(`/tools/semantic-search`, { query, count }); return Array.isArray(resp) ? resp : []; }); } //# sourceMappingURL=registry.js.map