UNPKG

embedia

Version:

Zero-configuration AI chatbot integration CLI - direct file copy with embedded API keys

68 lines (55 loc) 2.21 kB
const fetch = require('node-fetch'); const chalk = require('chalk'); /** * Simple Server Communication * Replaces complex binding contract system with basic file fetching */ class SimpleServerClient { constructor(baseUrl = 'https://server-api-bay.vercel.app') { this.baseUrl = baseUrl; } async fetchEmbediaFiles(token) { console.log(chalk.cyan('📡 Fetching Embedia files from server...')); try { // Validate token format if (!token || !token.startsWith('ac_')) { throw new Error('Invalid token format. Token must start with "ac_"'); } // GET request with token as query parameter const response = await fetch(`${this.baseUrl}/api/autochat?token=${token}`, { method: 'GET' }); if (!response.ok) { // Try to get the actual error message from the server let errorMessage = `Server responded with ${response.status}: ${response.statusText}`; try { const errorData = await response.json(); if (errorData.error) { errorMessage = `Server error: ${errorData.error}`; } } catch (e) { // If we can't parse the error response, use the default message } throw new Error(errorMessage); } const data = await response.json(); // Handle server error responses if (data.error) { throw new Error(`Server error: ${data.error}`); } // Parse the expected response structure if (!data.generatedCode || !data.generatedCode.fullProject) { throw new Error('Invalid response format: missing generatedCode.fullProject'); } const fileArray = data.generatedCode.fullProject; console.log(chalk.green(`✅ Files retrieved successfully (${fileArray.length} files)`)); console.log(chalk.gray(` Retrieved at: ${data.retrievedAt || 'N/A'}`)); // Return raw fullProject array with {path, content} structure return { fullProject: fileArray }; } catch (error) { console.error(chalk.red('❌ Failed to fetch files from server:'), error.message); throw error; } } } module.exports = { SimpleServerClient };