@@ -14,10 +14,13 @@ def register_hooks(self, registry: HookRegistry) -> None:
1414 registry .add_callback (AfterToolCallEvent , self .check_result )
1515
1616 def check_result (self , event : AfterToolCallEvent ) -> None :
17- if event .result .get ("isError" , False ):
17+ is_error = event .result .get ("isError" , False ) if event .result else False
18+ has_exception = event .exception is not None
19+
20+ if is_error or has_exception :
1821 tool_name = event .tool_use ["name" ]
19- error_content = event .result .get ("content" , [{}])[0 ].get ("text" , "Unknown error" )
20- logger .warning (f"Tool { tool_name } failed: { error_content } " )
22+ error_msg = str ( event . exception ) if has_exception else event .result .get ("content" , [{}])[0 ].get ("text" , "Unknown error" )
23+ logger .warning (f"Tool { tool_name } failed: { error_msg } " )
2124
2225 for attempt in range (self .max_retries ):
2326 logger .info (f"Retrying tool { tool_name } (attempt { attempt + 1 } /{ self .max_retries } )" )
@@ -27,9 +30,10 @@ def check_result(self, event: AfterToolCallEvent) -> None:
2730 if not result .get ("isError" , False ):
2831 logger .info (f"Tool { tool_name } succeeded on retry { attempt + 1 } " )
2932 event .result = result
33+ event .exception = None
3034 return
3135 except Exception as e :
3236 logger .warning (f"Retry { attempt + 1 } failed: { e } " )
3337 continue
3438
35- raise RuntimeError (f"Tool { tool_name } failed after { self .max_retries } retries: { error_content } " )
39+ raise RuntimeError (f"Tool { tool_name } failed after { self .max_retries } retries: { error_msg } " )
0 commit comments