| 
									
										
										
										
											2024-03-09 02:15:01 -05:00
										 |  |  | const fs = require('fs'); | 
					
						
							|  |  |  | const path = require('path'); | 
					
						
							|  |  |  | const os = require('os'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const fetch = require('node-fetch'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | async function fetchData(url, options = {}) { | 
					
						
							|  |  |  |     const { default: fetch } = await import('node-fetch'); | 
					
						
							|  |  |  |     const response = await fetch(url, options); | 
					
						
							|  |  |  |     return response; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class KuzcoCore { | 
					
						
							|  |  |  |     constructor() { | 
					
						
							| 
									
										
										
										
											2024-03-09 02:42:30 -05:00
										 |  |  |         this.configPath = path.join(os.homedir(), '.kuzco-cli', 'config.json'); | 
					
						
							| 
									
										
										
										
											2024-03-09 02:15:01 -05:00
										 |  |  |         this.API_KEY = this.loadApiKey(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     loadApiKey() { | 
					
						
							|  |  |  |         try { | 
					
						
							| 
									
										
										
										
											2024-03-09 02:42:30 -05:00
										 |  |  |             if (fs.existsSync(this.configPath)) { | 
					
						
							|  |  |  |                 const configFile = fs.readFileSync(this.configPath); | 
					
						
							|  |  |  |                 const config = JSON.parse(configFile); | 
					
						
							|  |  |  |                 return config.API_KEY; | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 console.log('API Key config file does not exist. Please set up your API Key.'); | 
					
						
							|  |  |  |                 return ''; | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2024-03-09 02:15:01 -05:00
										 |  |  |         } catch (error) { | 
					
						
							|  |  |  |             console.error(`An error occurred while reading the API key: ${error.message}`); | 
					
						
							|  |  |  |             return ''; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-09 02:42:30 -05:00
										 |  |  |     apiKeyExists() { | 
					
						
							|  |  |  |         return fs.existsSync(this.configPath) && this.API_KEY !== ''; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-09 02:15:01 -05:00
										 |  |  |     async sendPrompt(prompt) { | 
					
						
							|  |  |  |         try { | 
					
						
							|  |  |  |             const response = await fetch('https://relay.kuzco.xyz/v1/chat/completions', { | 
					
						
							|  |  |  |                 method: 'POST', | 
					
						
							|  |  |  |                 headers: { | 
					
						
							|  |  |  |                     'Authorization': `Bearer ${this.API_KEY}`, | 
					
						
							|  |  |  |                     'Content-Type': 'application/json', | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |                 body: JSON.stringify({ | 
					
						
							|  |  |  |                     messages: [{ role: 'user', 'content': prompt + '\n' }], | 
					
						
							|  |  |  |                     model: 'mistral', | 
					
						
							|  |  |  |                     stream: false, | 
					
						
							|  |  |  |                 }), | 
					
						
							|  |  |  |             }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (!response.ok) { | 
					
						
							|  |  |  |                 throw new Error(`HTTP error! status: ${response.status}`); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             return await response.json(); | 
					
						
							|  |  |  |         } catch (error) { | 
					
						
							|  |  |  |             console.error(`An error occurred: ${error.message}`); | 
					
						
							|  |  |  |             return { error: error.message }; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = KuzcoCore; |