@@ -115,23 +115,43 @@ async function handleError(
115115 result . errors ?. [ 0 ] ||
116116 'An unexpected error occurred while processing the response.'
117117
118+ // Persist whatever was generated before the failure, exactly like an abort —
119+ // a transient provider error (e.g. overloaded) shouldn't discard the partial
120+ // assistant output the user already saw streaming.
121+ const partialContent = result . content || undefined
122+ const partialContentLen = result . content ?. length ?? 0
123+ const toolCallCount = result . toolCalls ?. length ?? 0
124+
118125 if ( publisher . clientDisconnected ) {
119126 logger . info ( `[${ requestId } ] Stream failed after client disconnect` , { error : errorMessage } )
120127 }
121- logger . error ( `[${ requestId } ] Orchestration returned failure` , { error : errorMessage } )
128+ logger . error ( `[${ requestId } ] Orchestration returned failure` , {
129+ error : errorMessage ,
130+ partialContentLen,
131+ toolCallCount,
132+ } )
122133
134+ // Surface the real error (Go already classifies provider errors like
135+ // "overloaded" into a friendly displayMessage). Don't clobber it with a
136+ // generic string.
123137 await publisher . publish ( {
124138 type : MothershipStreamV1EventType . error ,
125139 payload : {
126140 message : errorMessage ,
127141 error : errorMessage ,
128- data : { displayMessage : 'An unexpected error occurred while processing the response.' } ,
142+ displayMessage : errorMessage ,
143+ data : { displayMessage : errorMessage } ,
129144 } ,
130145 } )
131146 if ( ! publisher . sawComplete ) {
132147 await publisher . publish ( {
133148 type : MothershipStreamV1EventType . complete ,
134- payload : { status : MothershipStreamV1CompletionStatus . error } ,
149+ payload : {
150+ status : MothershipStreamV1CompletionStatus . error ,
151+ ...( partialContent ? { partialContent } : { } ) ,
152+ ...( partialContentLen ? { partialContentLen } : { } ) ,
153+ ...( toolCallCount ? { toolCallCount } : { } ) ,
154+ } ,
135155 } )
136156 }
137157 await publisher . flush ( )
0 commit comments