HIM-self / src /core /fix_integration.py
TeleologyHI
upd
87f22e8
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')
)