@@ -197,42 +197,49 @@ async def process_session_pending_message(
197197 )
198198 for m in messages
199199 ]
200- r = await SD .should_generate_session_display_title (session , session_id )
201- should_generate_title , eil = r .unpack ()
202- if eil :
203- return r
204- if not should_generate_title :
205- first_user_message_text = None
206- LOG .debug (
207- f"Session { session_id } already has display_title, "
208- "skip title-input extraction"
209- )
210- else :
211- first_user_message_text = extract_first_user_message_text (messages_data )
212- is_quality_ok , quality_reason = check_title_input_quality (
213- first_user_message_text
214- )
215- if not is_quality_ok :
216- first_user_message_text = None
200+ first_user_message_text = None
201+ try :
202+ r = await SD .should_generate_session_display_title (session , session_id )
203+ should_generate_title , eil = r .unpack ()
204+ if eil :
205+ raise ValueError (eil .errmsg )
206+ if not should_generate_title :
217207 LOG .debug (
218- f"Skip title-input generation for session { session_id } : "
219- f" { quality_reason } "
208+ f"Session { session_id } already has display_title, "
209+ "skip title-input extraction "
220210 )
221211 else :
222- LOG .debug (
223- f"Extracted first user text from pending session { session_id } , "
224- f"length={ len (first_user_message_text )} "
212+ first_user_message_text = extract_first_user_message_text (
213+ messages_data
225214 )
226-
227- if first_user_message_text is not None :
228- title_candidate = None
229- r = await generate_session_title_candidate (first_user_message_text )
230- title_candidate_raw , eil = r .unpack ()
231- if eil :
215+ is_quality_ok , quality_reason = check_title_input_quality (
216+ first_user_message_text
217+ )
218+ if not is_quality_ok :
219+ first_user_message_text = None
220+ LOG .debug (
221+ f"Skip title-input generation for session { session_id } : "
222+ f"{ quality_reason } "
223+ )
224+ else :
225+ LOG .debug (
226+ f"Extracted first user text from pending session { session_id } , "
227+ f"length={ len (first_user_message_text )} "
228+ )
229+ except Exception as title_gate_err :
230+ first_user_message_text = None
232231 LOG .warning (
233- f"Title generation failed for session { session_id } : { eil . errmsg } "
232+ f"Skip title extraction for session { session_id } : { title_gate_err } "
234233 )
235- else :
234+
235+ if first_user_message_text is not None :
236+ try :
237+ title_candidate = None
238+ r = await generate_session_title_candidate (first_user_message_text )
239+ title_candidate_raw , eil = r .unpack ()
240+ if eil :
241+ raise ValueError (eil .errmsg )
242+
236243 title_candidate = sanitize_generated_title (
237244 title_candidate_raw , first_user_message_text
238245 )
@@ -246,15 +253,19 @@ async def process_session_pending_message(
246253 f"{ title_candidate [:80 ]} "
247254 )
248255
249- if title_candidate is not None :
250- async with DB_CLIENT .get_session_context () as session :
251- r = await SD .update_session_display_title (
252- session , session_id , title_candidate
253- )
254- _ , eil = r .unpack ()
255- if eil :
256- return r
257- LOG .debug (f"Persisted display_title for session { session_id } " )
256+ if title_candidate is not None :
257+ async with DB_CLIENT .get_session_context () as session :
258+ r = await SD .update_session_display_title (
259+ session , session_id , title_candidate
260+ )
261+ _ , eil = r .unpack ()
262+ if eil :
263+ raise ValueError (eil .errmsg )
264+ LOG .debug (f"Persisted display_title for session { session_id } " )
265+ except Exception as title_err :
266+ LOG .warning (
267+ f"Skip title generation/persist for session { session_id } : { title_err } "
268+ )
258269
259270 ls_session = None
260271 async with DB_CLIENT .get_session_context () as session :
0 commit comments