@@ -46,34 +46,56 @@ export const useChat = (
4646
4747 setMessages ( ( prev ) => [ ...prev , { role : "ai" , content : data . response } ] ) ;
4848 } catch ( error : unknown ) {
49- console . error ( "Chat error:" , error ) ;
49+ console . error ( "Chat error details:" , {
50+ error,
51+ message : ( error as any ) . message ,
52+ response : ( error as any ) . response
53+ } ) ;
5054
5155 const chatError = error as ChatError ;
56+ const detail = chatError . detail ;
5257
53- if ( chatError . detail ?. error === "rate_limit" ) {
54- const retryAfterSeconds = chatError . detail ?. retry_after ;
58+ // Handle Rate Limit
59+ if ( detail ?. error === "rate_limit" ) {
60+ const retryAfterSeconds = detail . retry_after ;
5561 const etaMinutes = retryAfterSeconds ? Math . ceil ( retryAfterSeconds / 60 ) : null ;
5662 const eta = etaMinutes
5763 ? `\nTry again in about ${ etaMinutes } minute${ etaMinutes === 1 ? "" : "s" } .`
5864 : "" ;
59- const modalMessage = `${ chatError . detail . message } ${ eta } ` ;
65+ const modalMessage = `${ detail . message } ${ eta } ` ;
6066
6167 rateLimit . maxOutLimit ( ) ;
6268 rateLimit . setLimitMessage ( modalMessage ) ;
6369 rateLimit . setShowLimitModal ( true ) ;
6470
65- setMessages ( ( prev ) => [ ...prev , { role : "ai" , content : chatError . detail . message , isError : true } ] ) ;
71+ setMessages ( ( prev ) => [ ...prev , { role : "ai" , content : detail . message , isError : true } ] ) ;
6672 council . setAllStatus ( "idle" ) ;
67- } else if ( chatError . detail ?. error === "Request blocked by security system" || chatError . detail ?. error === "Response blocked by security system" ) {
68- if ( chatError . detail . verdict ) {
69- council . updateCouncil ( chatError . detail . verdict ) ;
73+ }
74+ // Handle Security Blocks
75+ else if ( detail ?. error === "Request blocked by security system" || detail ?. error === "Response blocked by security system" ) {
76+ if ( detail . verdict ) {
77+ council . updateCouncil ( detail . verdict ) ;
7078 } else {
7179 council . setAllStatus ( "unsafe" , "BLOCKED" ) ;
7280 }
73- setMessages ( ( prev ) => [ ...prev , { role : "ai" , content : chatError . detail . message , isError : true } ] ) ;
74- } else {
81+ setMessages ( ( prev ) => [ ...prev , { role : "ai" , content : detail . message , isError : true } ] ) ;
82+ }
83+ // Handle Unexpected Errors
84+ else {
7585 council . setAllStatus ( "idle" ) ;
76- setMessages ( ( prev ) => [ ...prev , { role : "ai" , content : "An unexpected error occurred." , isError : true } ] ) ;
86+ let errorMessage = "An unexpected error occurred." ;
87+
88+ // Try to extract a meaningful message if possible
89+ if ( typeof detail === 'string' ) {
90+ errorMessage = detail ;
91+ } else if ( Array . isArray ( detail ) ) {
92+ // Handle FastAPI validation errors (array of objects)
93+ errorMessage = "Invalid request format." ;
94+ } else if ( ( error as Error ) . message ) {
95+ errorMessage = ( error as Error ) . message ;
96+ }
97+
98+ setMessages ( ( prev ) => [ ...prev , { role : "ai" , content : errorMessage , isError : true } ] ) ;
7799 }
78100 } finally {
79101 setIsLoading ( false ) ;
0 commit comments