UNPKG

veas

Version:

Veas CLI - Command-line interface for Veas platform

84 lines 3.2 kB
import { getBestAuthToken, prepareMCPHeaders } from './auth-wrapper.js'; export async function getMCPTools(tokenOrAuthToken) { const apiUrl = process.env.VEAS_API_URL || 'https://veas.app'; let authToken; if (typeof tokenOrAuthToken === 'string') { authToken = { token: tokenOrAuthToken, type: tokenOrAuthToken.includes('_') ? 'pat' : 'cli', }; } else if (tokenOrAuthToken) { authToken = tokenOrAuthToken; } else { authToken = await getBestAuthToken(); } const controller = new AbortController(); const timeout = setTimeout(() => controller.abort(), 10000); try { const mcpUrl = `${apiUrl}/api/mcp/mcp`; console.log(`[getMCPTools] Fetching from ${mcpUrl}`); console.log(`[getMCPTools] Using ${authToken.type} token: ${authToken.token.substring(0, 20)}...`); const response = await fetch(mcpUrl, { method: 'POST', headers: prepareMCPHeaders(authToken), body: JSON.stringify({ jsonrpc: '2.0', method: 'tools/list', params: {}, id: 'list-tools', }), signal: controller.signal, }); clearTimeout(timeout); console.log(`[getMCPTools] Response status: ${response.status} ${response.statusText}`); const headers = {}; response.headers.forEach((value, key) => { headers[key] = value; }); console.log(`[getMCPTools] Response headers:`, headers); if (!response.ok) { const body = await response.text(); console.log(`[getMCPTools] Error response body: ${body.substring(0, 500)}`); throw new Error(`Failed to fetch tools: ${response.status} ${response.statusText} - ${body.substring(0, 200)}`); } const contentType = response.headers.get('content-type') || ''; const text = await response.text(); let result; if (contentType.includes('text/event-stream') || text.startsWith('event:')) { const lines = text.split('\n'); const dataLine = lines.find(line => line.startsWith('data: ')); if (dataLine) { const jsonData = dataLine.substring(6); result = JSON.parse(jsonData); } else { throw new Error('Invalid SSE response: no data line found'); } } else { result = JSON.parse(text); } if (result?.error) { throw new Error(`Failed to list tools: ${result.error.message}`); } if (result?.result?.tools) { return result.result.tools; } else if (result?.tools) { return result.tools; } else if (Array.isArray(result)) { return result; } return []; } catch (error) { if ((error instanceof Error ? error : new Error(String(error))).name === 'AbortError') { throw new Error('Request timeout - MCP server took too long to respond'); } throw error; } } //# sourceMappingURL=tools-registry.js.map