2222from orchestrator import get_orchestrator
2323from services .cosmos_service import get_cosmos_service
2424from services .blob_service import get_blob_service
25+ from services .title_service import get_title_service
2526from api .admin import admin_bp
2627
2728# In-memory task storage for generation tasks
@@ -107,14 +108,25 @@ async def chat():
107108 # Try to save to CosmosDB but don't fail if it's unavailable
108109 try :
109110 cosmos_service = await get_cosmos_service ()
111+
112+ generated_title = None
113+ existing_conversation = await cosmos_service .get_conversation (conversation_id , user_id )
114+ existing_metadata = existing_conversation .get ("metadata" , {}) if existing_conversation else {}
115+ has_existing_title = bool (existing_metadata .get ("custom_title" ) or existing_metadata .get ("generated_title" ))
116+
117+ if not has_existing_title :
118+ title_service = get_title_service ()
119+ generated_title = await title_service .generate_title (message )
120+
110121 await cosmos_service .add_message_to_conversation (
111122 conversation_id = conversation_id ,
112123 user_id = user_id ,
113124 message = {
114125 "role" : "user" ,
115126 "content" : message ,
116127 "timestamp" : datetime .now (timezone .utc ).isoformat ()
117- }
128+ },
129+ generated_title = generated_title
118130 )
119131 except Exception as e :
120132 logger .warning (f"Failed to save message to CosmosDB: { e } " )
@@ -188,22 +200,35 @@ async def parse_brief():
188200 if not brief_text :
189201 return jsonify ({"error" : "Brief text is required" }), 400
190202
203+ orchestrator = get_orchestrator ()
204+ generated_title = None
205+
191206 # Save the user's brief text as a message to CosmosDB
192207 try :
193208 cosmos_service = await get_cosmos_service ()
209+
210+ # Generate title for new conversations
211+ existing_conversation = await cosmos_service .get_conversation (conversation_id , user_id )
212+ existing_metadata = existing_conversation .get ("metadata" , {}) if existing_conversation else {}
213+ has_existing_title = bool (existing_metadata .get ("custom_title" ) or existing_metadata .get ("generated_title" ))
214+
215+ if not has_existing_title :
216+ title_service = get_title_service ()
217+ generated_title = await title_service .generate_title (brief_text )
218+
194219 await cosmos_service .add_message_to_conversation (
195220 conversation_id = conversation_id ,
196221 user_id = user_id ,
197222 message = {
198223 "role" : "user" ,
199224 "content" : brief_text ,
200225 "timestamp" : datetime .now (timezone .utc ).isoformat ()
201- }
226+ },
227+ generated_title = generated_title
202228 )
203229 except Exception as e :
204230 logger .warning (f"Failed to save brief message to CosmosDB: { e } " )
205231
206- orchestrator = get_orchestrator ()
207232 parsed_brief , clarifying_questions , rai_blocked = await orchestrator .parse_brief (brief_text )
208233
209234 # Check if request was blocked due to harmful content
@@ -229,6 +254,7 @@ async def parse_brief():
229254 "requires_clarification" : False ,
230255 "requires_confirmation" : False ,
231256 "conversation_id" : conversation_id ,
257+ "generated_title" : generated_title ,
232258 "message" : clarifying_questions
233259 })
234260
@@ -256,6 +282,7 @@ async def parse_brief():
256282 "requires_confirmation" : False ,
257283 "clarifying_questions" : clarifying_questions ,
258284 "conversation_id" : conversation_id ,
285+ "generated_title" : generated_title ,
259286 "message" : clarifying_questions
260287 })
261288
@@ -280,6 +307,7 @@ async def parse_brief():
280307 "requires_clarification" : False ,
281308 "requires_confirmation" : True ,
282309 "conversation_id" : conversation_id ,
310+ "generated_title" : generated_title ,
283311 "message" : "Please review and confirm the parsed creative brief"
284312 })
285313
@@ -1365,12 +1393,12 @@ async def update_conversation(conversation_id: str):
13651393async def delete_all_conversations ():
13661394 """
13671395 Delete all conversations for the current user.
1368-
1396+
13691397 Uses authenticated user from EasyAuth headers.
13701398 """
13711399 auth_user = get_authenticated_user ()
13721400 user_id = auth_user ["user_principal_id" ]
1373-
1401+
13741402 try :
13751403 cosmos_service = await get_cosmos_service ()
13761404 deleted_count = await cosmos_service .delete_all_conversations (user_id )
0 commit comments