@@ -77,7 +77,7 @@ async def handle_api_call_worker_state_changed(app: 'TldwCli', event: Worker.Sta
77
77
error_msg_text = Text .from_markup (
78
78
f"[bold red]Error:[/]\n AI response for worker '{ worker_name } ' received, but its display widget was missing." )
79
79
# Use plain text for ChatMessage content if it doesn't support Text directly
80
- app .notify (f"Error: AI response for worker '{ worker_name } ' received, but its display widget was missing." , severity = "error" , timeout = 10 )
80
+ # app.notify(f"Error: AI response for worker '{worker_name}' received, but its display widget was missing.", severity="error", timeout=3 )
81
81
except QueryError :
82
82
logger .error (f"Fallback: Could not find chat container #{ prefix } -log." )
83
83
app .current_ai_message_widget = None
@@ -220,7 +220,16 @@ async def handle_api_call_worker_state_changed(app: 'TldwCli', event: Worker.Sta
220
220
221
221
static_text_widget_in_ai_msg .update (Text .from_markup (f"[bold red]{ escaped_error_for_display } [/]" ))
222
222
ai_message_widget .mark_generation_complete ()
223
- app .current_ai_message_widget = None
223
+
224
+ if app .current_chat_is_streaming :
225
+ logger .info (f"Worker '{ worker_name } ' failed during an active stream. Posting StreamDone with error." )
226
+ # Post StreamDone event with the error details
227
+ app .post_message (StreamDone (full_text = ai_message_widget .message_text , error = str (error_from_worker )))
228
+ # DO NOT set app.current_ai_message_widget = None here.
229
+ # The handle_stream_done handler will be responsible for this.
230
+ else :
231
+ logger .info (f"Worker '{ worker_name } ' failed (non-streaming). Clearing current_ai_message_widget." )
232
+ app .current_ai_message_widget = None
224
233
225
234
if chat_container .is_mounted :
226
235
chat_container .scroll_end (animate = True )
0 commit comments