9
9
StatusEnum ,
10
10
ShareVersion ,
11
11
ErrorStatusEnum ,
12
+ GUIAgentError ,
12
13
} from '@ui-tars/shared/types' ;
13
14
import { IMAGE_PLACEHOLDER , MAX_LOOP_COUNT } from '@ui-tars/shared/constants' ;
14
15
import { sleep } from '@ui-tars/shared/utils' ;
@@ -370,6 +371,7 @@ export class GUIAgent<T extends Operator> extends BaseGUIAgent<
370
371
}
371
372
}
372
373
} catch ( error ) {
374
+ logger . error ( '[GUIAgent] run, catch error' , error ) ;
373
375
if (
374
376
error instanceof Error &&
375
377
( error . name === 'AbortError' || error . message ?. includes ( 'aborted' ) )
@@ -379,13 +381,9 @@ export class GUIAgent<T extends Operator> extends BaseGUIAgent<
379
381
return ;
380
382
}
381
383
382
- logger . error ( '[GUIAgent] run error' , error ) ;
383
384
data . status = StatusEnum . ERROR ;
384
- data . error = {
385
- code : ErrorStatusEnum . EXECUTE_ERROR ,
386
- error : 'GUIAgent Service Error' ,
387
- stack : `${ error } ` ,
388
- } ;
385
+ data . error = this . guiAgentErrorParser ( error as Error ) as GUIAgentError ;
386
+
389
387
throw error ;
390
388
} finally {
391
389
if ( data . status === StatusEnum . USER_STOPPED ) {
@@ -449,4 +447,26 @@ export class GUIAgent<T extends Operator> extends BaseGUIAgent<
449
447
actionSpaces . join ( '\n' ) ,
450
448
) ;
451
449
}
450
+
451
+ private guiAgentErrorParser ( error : unknown ) : GUIAgentError {
452
+ if (
453
+ error instanceof Error &&
454
+ 'status' in error &&
455
+ 'error' in error &&
456
+ error . status === 500 &&
457
+ typeof error . error === 'string' &&
458
+ error . error . includes ( 'unhandled errors in a TaskGroup' )
459
+ ) {
460
+ return {
461
+ code : ErrorStatusEnum . MODEL_SERVICE_ERROR ,
462
+ error : error . message ,
463
+ stack : error . stack ,
464
+ } ;
465
+ }
466
+ return {
467
+ code : ErrorStatusEnum . UNKNOWN_ERROR ,
468
+ error : 'Unkown error occurred' ,
469
+ stack : JSON . stringify ( error ) ,
470
+ } ;
471
+ }
452
472
}
0 commit comments