From 445eda821d4427446f59570aff22093a920df17e Mon Sep 17 00:00:00 2001 From: Wizzard Date: Sat, 9 Mar 2024 05:56:54 -0500 Subject: [PATCH] Include timeout function in GUI --- gui/kuzcoCore.js | 18 ++++++++++++++++-- gui/package.json | 2 +- gui/renderer.js | 3 +++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/gui/kuzcoCore.js b/gui/kuzcoCore.js index 21dd01e..8490768 100644 --- a/gui/kuzcoCore.js +++ b/gui/kuzcoCore.js @@ -38,6 +38,11 @@ class KuzcoCore { async sendPrompt(prompt, model) { console.log("Model received in sendPrompt:", model) + const controller = new AbortController(); + const signal = controller.signal; + + const timeoutId = setTimeout(() => controller.abort(), 15000); + try { const response = await fetch('https://relay.kuzco.xyz/v1/chat/completions', { method: 'POST', @@ -50,16 +55,25 @@ class KuzcoCore { model: model, stream: false, }), + signal: signal, }); + clearTimeout(timeoutId); + 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 }; + clearTimeout(timeoutId); + if (error.name === 'AbortError') { + console.error('Request was aborted due to timeout.'); + return { error: 'Request timed out. Please try again.' }; + } else { + console.error(`An error occurred: ${error.message}`); + return { error: error.message }; + } } } } diff --git a/gui/package.json b/gui/package.json index 033cceb..bf57659 100644 --- a/gui/package.json +++ b/gui/package.json @@ -1,6 +1,6 @@ { "name": "kuzco-gui", - "version": "1.0.0", + "version": "0.0.1", "description": "Simple gui for kuzco api", "author": "Wizzard ", "main": "kuzco-gui.js", diff --git a/gui/renderer.js b/gui/renderer.js index 04c62c6..8c3715f 100644 --- a/gui/renderer.js +++ b/gui/renderer.js @@ -39,6 +39,9 @@ document.addEventListener('DOMContentLoaded', () => { try { const response = await window.electronAPI.sendPrompt(userInput, selectedModel); + if (response.error) { + throw new Error(response.error); + } const assistantMessage = response.choices[0].message.content.trim(); displayMessage(assistantMessage, 'assistant'); } catch (error) {