Improve error handling of /genraw and /gen - /generate TC backend returns more status/error texts - Fix /genraw and /gen returning null/undefined - Logging errors on /genraw if backend throws an error - Fixes #2836
| @@ -3265,7 +3265,7 @@ export async function generateRaw(prompt, api, instructOverride, quietToLoud, sy | |||
| 3265 | } | 3265 | } |
| 3266 | 3266 | ||
| 3267 | if (data.error) { | 3267 | if (data.error) { |
| 3268 | throw new Error(data.error); | 3268 | throw new Error(data.response); |
| 3269 | } | 3269 | } |
| 3270 | 3270 | ||
| 3271 | const message = cleanUpMessage(extractMessageFromData(data), false, false, true); | 3271 | const message = cleanUpMessage(extractMessageFromData(data), false, false, true); |
| @@ -2241,7 +2241,7 @@ function setEphemeralStopStrings(value) { | |||
| 2241 | async function generateRawCallback(args, value) { | 2241 | async function generateRawCallback(args, value) { |
| 2242 | if (!value) { | 2242 | if (!value) { |
| 2243 | console.warn('WARN: No argument provided for /genraw command'); | 2243 | console.warn('WARN: No argument provided for /genraw command'); |
| 2244 | return; | 2244 | return ''; |
| 2245 | } | 2245 | } |
| 2246 | 2246 | ||
| 2247 | // Prevent generate recursion | 2247 | // Prevent generate recursion |
| @@ -2260,12 +2260,16 @@ async function generateRawCallback(args, value) { | |||
| 2260 | setEphemeralStopStrings(resolveVariable(args?.stop)); | 2260 | setEphemeralStopStrings(resolveVariable(args?.stop)); |
| 2261 | const result = await generateRaw(value, '', isFalseBoolean(args?.instruct), quietToLoud, systemPrompt, length); | 2261 | const result = await generateRaw(value, '', isFalseBoolean(args?.instruct), quietToLoud, systemPrompt, length); |
| 2262 | return result; | 2262 | return result; |
| 2263 | } catch (err) { | ||
| 2264 | console.error('Error on /genraw generation', err); | ||
| 2265 | toastr.error(err.message, 'Error on Generate'); | ||
| 2263 | } finally { | 2266 | } finally { |
| 2264 | if (lock) { | 2267 | if (lock) { |
| 2265 | activateSendButtons(); | 2268 | activateSendButtons(); |
| 2266 | } | 2269 | } |
| 2267 | flushEphemeralStoppingStrings(); | 2270 | flushEphemeralStoppingStrings(); |
| 2268 | } | 2271 | } |
| 2272 | return ''; | ||
| 2269 | } | 2273 | } |
| 2270 | 2274 | ||
| 2271 | /** | 2275 | /** |
| @@ -2291,12 +2295,16 @@ async function generateCallback(args, value) { | |||
| 2291 | const name = args?.name; | 2295 | const name = args?.name; |
| 2292 | const result = await generateQuietPrompt(value, quietToLoud, false, '', name, length); | 2296 | const result = await generateQuietPrompt(value, quietToLoud, false, '', name, length); |
| 2293 | return result; | 2297 | return result; |
| 2298 | } catch (err) { | ||
| 2299 | console.error('Error on /genraw generation', err); | ||
| 2300 | toastr.error(err.message, 'Error on Generate'); | ||
| 2294 | } finally { | 2301 | } finally { |
| 2295 | if (lock) { | 2302 | if (lock) { |
| 2296 | activateSendButtons(); | 2303 | activateSendButtons(); |
| 2297 | } | 2304 | } |
| 2298 | flushEphemeralStoppingStrings(); | 2305 | flushEphemeralStoppingStrings(); |
| 2299 | } | 2306 | } |
| 2307 | return ''; | ||
| 2300 | } | 2308 | } |
| 2301 | 2309 | ||
| 2302 | /** | 2310 | /** |
| @@ -375,7 +375,9 @@ router.post('/generate', jsonParser, async function (request, response) { | |||
| 375 | } | 375 | } |
| 376 | } | 376 | } |
| 377 | } catch (error) { | 377 | } catch (error) { |
| 378 | let value = { error: true, status: error?.status, response: error?.statusText }; | 378 | const status = error?.status ?? error?.code ?? 'UNKNOWN'; |
| 379 | const text = error?.error ?? error?.statusText ?? error?.message ?? 'Unknown error on /generate endpoint'; | ||
| 380 | let value = { error: true, status: status, response: text }; | ||
| 379 | console.log('Endpoint error:', error); | 381 | console.log('Endpoint error:', error); |
| 380 | 382 | ||
| 381 | if (!response.headersSent) { | 383 | if (!response.headersSent) { |