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 | 3267 | if (data.error) { |
| 3268 | 3268 | throw new Error(data.errorresponse); |
| 3269 | 3269 | } |
| 3270 | 3270 | |
| 3271 | 3271 | const message = cleanUpMessage(extractMessageFromData(data), false, false, true); |
| @@ -2241,7 +2241,7 @@ function setEphemeralStopStrings(value) { | ||
| 2241 | 2241 | async function generateRawCallback(args, value) { |
| 2242 | 2242 | if (!value) { |
| 2243 | 2243 | console.warn('WARN: No argument provided for /genraw command'); |
| 2244 | 2244 | return ''; |
| 2245 | 2245 | } |
| 2246 | 2246 | |
| 2247 | 2247 | // Prevent generate recursion |
| @@ -2260,12 +2260,16 @@ async function generateRawCallback(args, value) { | ||
| 2260 | 2260 | setEphemeralStopStrings(resolveVariable(args?.stop)); |
| 2261 | 2261 | const result = await generateRaw(value, '', isFalseBoolean(args?.instruct), quietToLoud, systemPrompt, length); |
| 2262 | 2262 | return result; |
| 2263 | + } catch (err) { | |
| 2264 | + console.error('Error on /genraw generation', err); | |
| 2265 | + toastr.error(err.message, 'Error on Generate'); | |
| 2263 | 2266 | } finally { |
| 2264 | 2267 | if (lock) { |
| 2265 | 2268 | activateSendButtons(); |
| 2266 | 2269 | } |
| 2267 | 2270 | flushEphemeralStoppingStrings(); |
| 2268 | 2271 | } |
| 2272 | + return ''; | |
| 2269 | 2273 | } |
| 2270 | 2274 | |
| 2271 | 2275 | /** |
| @@ -2291,12 +2295,16 @@ async function generateCallback(args, value) { | ||
| 2291 | 2295 | const name = args?.name; |
| 2292 | 2296 | const result = await generateQuietPrompt(value, quietToLoud, false, '', name, length); |
| 2293 | 2297 | return result; |
| 2298 | + } catch (err) { | |
| 2299 | + console.error('Error on /genraw generation', err); | |
| 2300 | + toastr.error(err.message, 'Error on Generate'); | |
| 2294 | 2301 | } finally { |
| 2295 | 2302 | if (lock) { |
| 2296 | 2303 | activateSendButtons(); |
| 2297 | 2304 | } |
| 2298 | 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 | 377 | } catch (error) { |
| 378 | 378 | letconst valuestatus = { error: true, status: error?.status, response:?? error?.statusTextcode }?? '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 | 381 | console.log('Endpoint error:', error); |
| 380 | 382 | |
| 381 | 383 | if (!response.headersSent) { |