diff --git a/backend/app/agents/reviewer.py b/backend/app/agents/reviewer.py index bbf63c8..51a1c96 100644 --- a/backend/app/agents/reviewer.py +++ b/backend/app/agents/reviewer.py @@ -552,69 +552,36 @@ class ReviewerAgent: try: async for event in self.graph.astream( initial_state, - stream_mode=["updates", "messages"] + stream_mode=["updates"] ): event_count += 1 print(f"๐Ÿ“จ Event #{event_count} received from graph") print(f" Type: {type(event)}") + print(f" Event content: {event}") - # LangGraph returns events as tuples: (event_type, data) - if isinstance(event, tuple) and len(event) >= 2: - event_type, event_data = event[0], event[1] - print(f" Event type: {event_type}") - print(f" Event data type: {type(event_data)}") - - # Handle 'updates' events (node updates) - if event_type == 'updates' and isinstance(event_data, dict): - for node_name, node_data in event_data.items(): - print(f" ๐Ÿ”” Node update: {node_name}") - - if on_event: - print(f" ๐Ÿ“ค Sending event to callback for node: {node_name}") - await on_event({ - "type": "agent_step", - "step": node_name, - "message": f"ะจะฐะณ: {node_name}" - }) - - # Store final state - if isinstance(node_data, dict): - final_state = node_data - - # Handle 'messages' events (LLM streaming) - elif event_type == 'messages': - print(f" ๐Ÿ’ฌ LLM messages received") - # event_data is a list of messages - if isinstance(event_data, (list, tuple)): - for msg in event_data: - # Check if it's an AIMessage or similar - msg_content = None - if hasattr(msg, 'content'): - msg_content = msg.content - elif isinstance(msg, dict) and 'content' in msg: - msg_content = msg['content'] - else: - msg_content = str(msg) - - if msg_content and on_event: - print(f" ๐Ÿ’ฌ Sending LLM message: {msg_content[:100]}...") - await on_event({ - "type": "llm_message", - "message": msg_content - }) - - # Handle 'values' events (state snapshots) - elif event_type == 'values': - print(f" ๐Ÿ“Š State snapshot received") - if isinstance(event_data, dict): - final_state = event_data - - # Handle 'debug' events - elif event_type == 'debug': - print(f" ๐Ÿ› Debug event: {event_data.get('type') if isinstance(event_data, dict) else 'unknown'}") + # LangGraph returns events as dict: {node_name: node_output} + if isinstance(event, dict): + for node_name, node_data in event.items(): + print(f" ๐Ÿ”” Node update: {node_name}") + print(f" ๐Ÿ”” Node data type: {type(node_data)}") + + if on_event: + print(f" ๐Ÿ“ค Sending event to callback for node: {node_name}") + await on_event({ + "type": "agent_step", + "step": node_name, + "message": f"ะจะฐะณ: {node_name}", + "data": { + "status": node_data.get("status") if isinstance(node_data, dict) else None + } + }) + + # Store final state + if isinstance(node_data, dict): + final_state = node_data else: - print(f" โš ๏ธ Unexpected event format: {event}") + print(f" โš ๏ธ Unexpected event format (not dict): {type(event)}") except Exception as e: print(f"โŒ Error in graph streaming: {e}")