@@ -100,6 +100,24 @@ export const POST = apiHandler(async (req: NextRequest) => {
100100 messages
101101 } ) ;
102102 } ,
103+ onError : ( error : unknown ) => {
104+ logger . error ( error ) ;
105+ Sentry . captureException ( error ) ;
106+
107+ if ( error == null ) {
108+ return 'unknown error' ;
109+ }
110+
111+ if ( typeof error === 'string' ) {
112+ return error ;
113+ }
114+
115+ if ( error instanceof Error ) {
116+ return error . message ;
117+ }
118+
119+ return JSON . stringify ( error ) ;
120+ }
103121 } ) ;
104122
105123 return createUIMessageStreamResponse ( {
@@ -134,6 +152,7 @@ interface CreateMessageStreamResponseProps {
134152 orgId : number ;
135153 prisma : PrismaClient ;
136154 onFinish : UIMessageStreamOnFinishCallback < SBChatMessage > ;
155+ onError : ( error : unknown ) => string ;
137156}
138157
139158export const createMessageStream = async ( {
@@ -145,6 +164,7 @@ export const createMessageStream = async ({
145164 orgId,
146165 prisma,
147166 onFinish,
167+ onError,
148168} : CreateMessageStreamResponseProps ) => {
149169 const latestMessage = messages [ messages . length - 1 ] ;
150170 const sources = latestMessage . parts
@@ -247,30 +267,10 @@ export const createMessageStream = async ({
247267 type : 'finish' ,
248268 } ) ;
249269 } ,
250- onError : errorHandler ,
270+ onError,
251271 originalMessages : messages ,
252272 onFinish,
253273 } ) ;
254274
255275 return stream ;
256276} ;
257-
258- const errorHandler = ( error : unknown ) => {
259- logger . error ( error ) ;
260- Sentry . captureException ( error ) ;
261-
262- if ( error == null ) {
263- return 'unknown error' ;
264- }
265-
266- if ( typeof error === 'string' ) {
267- return error ;
268- }
269-
270- if ( error instanceof Error ) {
271- return error . message ;
272- }
273-
274- return JSON . stringify ( error ) ;
275- }
276-
0 commit comments