// Smart Router API client class class SmartRouter { constructor(baseUrl = 'http://localhost:7860') { this.baseUrl = baseUrl; this.token = null; } // Login method async login(username, password) { try { const response = await fetch(`${this.baseUrl}/api/login`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ username, password }), }); const data = await response.json(); if (response.ok) { this.token = data.token; return { success: true, token: data.token }; } else { throw new Error(data.error || 'Login failed'); } } catch (error) { console.error('Login error:', error); throw error; } } // Get best tool for image generation async getBestImageTool(prompt, criteria = {}) { if (!this.token) { throw new Error('Not authenticated. Please login first.'); } try { const response = await fetch(`${this.baseUrl}/api/route`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${this.token}`, }, body: JSON.stringify({ prompt: prompt, media_type: 'image', criteria: criteria }), }); const data = await response.json(); if (response.ok) { return data.selected_tool; } else { throw new Error(data.error || 'Failed to get best tool'); } } catch (error) { console.error('Smart Router error:', error); throw error; } } // Improve prompt using AI async improvePrompt(prompt, mode = 'image', verbosity = 'concise') { if (!this.token) { throw new Error('Not authenticated. Please login first.'); } try { const response = await fetch(`${this.baseUrl}/api/improve-prompt`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${this.token}`, }, body: JSON.stringify({ prompt: prompt, mode: mode, verbosity: verbosity }), }); const data = await response.json(); if (response.ok) { return { improvedPrompt: data.improvedPrompt, notes: data.notes }; } else { throw new Error(data.error || 'Failed to improve prompt'); } } catch (error) { console.error('Prompt improvement error:', error); throw error; } } // Save prompt to user history async savePrompt(prompt) { if (!this.token) { throw new Error('Not authenticated. Please login first.'); } try { const response = await fetch(`${this.baseUrl}/api/save-prompt`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${this.token}`, }, body: JSON.stringify({ prompt: prompt }), }); const data = await response.json(); if (response.ok) { return data.success; } else { throw new Error(data.error || 'Failed to save prompt'); } } catch (error) { console.error('Save prompt error:', error); throw error; } } // Get user's saved prompts async getUserPrompts() { if (!this.token) { throw new Error('Not authenticated. Please login first.'); } try { const response = await fetch(`${this.baseUrl}/api/get-prompts`, { method: 'GET', headers: { 'Authorization': `Bearer ${this.token}`, }, }); const data = await response.json(); if (response.ok) { return data.prompts; } else { throw new Error(data.error || 'Failed to get prompts'); } } catch (error) { console.error('Get prompts error:', error); throw error; } } } // Example usage: // const router = new SmartRouter(); // // // Login // router.login('demo', 'demo').then(result => { // if (result.success) { // // Get best tool for image generation // router.getBestImageTool('A beautiful sunset over mountains') // .then(tool => console.log('Best tool:', tool)) // .catch(error => console.error('Error:', error)); // } // }).catch(error => console.error('Login error:', error));