from typing import Dict, Any from .integration_manager import AwarenessState, AwarenessLevel import numpy as np def create_awareness_state_from_dict(awareness_dict: Dict[str, Any]) -> AwarenessState: """ Create an AwarenessState object from a dictionary. Args: awareness_dict: Dictionary containing awareness state attributes Returns: AwarenessState object """ # Na integration_manager.py, os níveis disponíveis são: # UNCONSCIOUS, SUBCONSCIOUS, CONSCIOUS, SELF_AWARE, TRANSCENDENT # Extract level - lidando com diferentes formatos possíveis level_value = None if 'level' in awareness_dict: level = awareness_dict['level'] if isinstance(level, AwarenessLevel): level_value = level elif hasattr(level, 'value') and isinstance(level.value, int): # Para casos onde level é um enum de states.py # Mapeando baseado no valor ordinal ordinal = level.value if ordinal <= 1: level_value = AwarenessLevel.UNCONSCIOUS elif ordinal == 2: level_value = AwarenessLevel.SUBCONSCIOUS elif ordinal == 3: level_value = AwarenessLevel.CONSCIOUS elif ordinal == 4: level_value = AwarenessLevel.SELF_AWARE else: level_value = AwarenessLevel.TRANSCENDENT # Se não conseguimos determinar o nível, use o padrão if level_value is None: level_value = AwarenessLevel.UNCONSCIOUS # Mapeie cognitive_state para cognition_state se necessário cognition_state = awareness_dict.get('cognition_state', {}) if not cognition_state and 'cognitive_state' in awareness_dict: cognition_state = awareness_dict['cognitive_state'] # Mapeie perception_data se estiver faltando perception_data = awareness_dict.get('perception_data', {}) # Garanta que emotional_valence esteja presente emotional_valence = awareness_dict.get('emotional_valence', 0.0) # Crie o objeto AwarenessState return AwarenessState( level=level_value, perception_data=perception_data, cognition_state=cognition_state, emotional_valence=emotional_valence, semantic_context=awareness_dict.get('semantic_context'), temporal_awareness=awareness_dict.get('temporal_awareness') )