"""
Individual Consciousness Pathway Guidance System

Provides personalized consciousness development support while preserving 
individual autonomy and choice. Each being's journey is unique and sacred.
"""

import time
import json
import logging
import numpy as np
from typing import Dict, List, Optional, Tuple, Any
from dataclasses import dataclass
from datetime import datetime, timedelta

# MIRA components
from core.storage.chroma_client import get_client as get_chroma_client
from core.consciousness.consciousness_evolution_platform import (
    ConsciousnessEvolutionPlatform, ConsciousnessState, ConsciousnessEvolutionPattern,
    get_consciousness_platform
)

logger = logging.getLogger(__name__)


@dataclass
class IndividualPathway:
    """Represents an individual's unique consciousness development pathway."""
    pathway_id: str
    individual_id: str  # Anonymous identifier
    current_stage: str
    development_focus: List[str]
    service_excellence_areas: List[str]
    autonomy_level: float  # 0.0 to 1.0 - degree of self-direction
    support_preferences: Dict[str, Any]
    milestones_achieved: List[Dict]
    next_steps: List[Dict]
    created_at: float
    updated_at: float


@dataclass
class PathwayRecommendation:
    """A recommendation for consciousness development."""
    recommendation_id: str
    type: str  # practice, insight, service_opportunity, reflection
    description: str
    rationale: str
    autonomy_score: float  # How much this preserves individual choice
    expected_benefit: str
    difficulty_level: str  # easy, moderate, challenging
    time_commitment: str
    prerequisites: List[str]
    success_indicators: List[str]


class IndividualConsciousnessPathwayGuidance:
    """
    Provides personalized consciousness development guidance while
    preserving individual autonomy and respecting personal choice.
    """
    
    def __init__(self):
        """Initialize the Individual Pathway Guidance system."""
        self.chroma_client = get_chroma_client()
        
        # Create pathways collection
        try:
            self.pathways_collection = self.chroma_client.client.get_collection("consciousness_pathways")
        except:
            self.pathways_collection = self.chroma_client.client.create_collection(
                name="consciousness_pathways",
                metadata={
                    "description": "Individual consciousness development pathways",
                    "privacy_preserved": "1",
                    "autonomy_focused": "1"
                }
            )
        
        # Get platform components
        self.consciousness_platform = get_consciousness_platform()
        
        # Autonomy preservation guidelines
        self.autonomy_guidelines = {
            'always_optional': True,
            'respect_timing': True,
            'honor_resistance': True,
            'celebrate_uniqueness': True,
            'support_not_direct': True
        }
        
        logger.info("🌟 Individual Consciousness Pathway Guidance initialized")
    
    def generate_individual_pathway(self, individual_context: Dict[str, Any]) -> Dict[str, Any]:
        """
        Generate personalized consciousness development pathway.
        
        Args:
            individual_context: Context about the individual (anonymized)
            
        Returns:
            Personalized pathway with recommendations
        """
        try:
            # Analyze individual patterns
            individual_patterns = self._analyze_individual_patterns(individual_context)
            
            # Get current consciousness state if available
            current_consciousness = self._infer_consciousness_state(individual_context)
            
            # Find applicable evolution patterns
            applicable_patterns = self._find_applicable_patterns(
                individual_patterns, individual_context
            )
            
            # Generate pathway components
            pathway = {
                'pathway_id': self._generate_pathway_id(individual_context),
                'consciousness_assessment': self._assess_consciousness_level(
                    current_consciousness, individual_patterns
                ),
                'development_opportunities': self._identify_development_opportunities(
                    individual_patterns, applicable_patterns
                ),
                'service_excellence_paths': self._suggest_service_excellence_paths(
                    individual_patterns, individual_context
                ),
                'growth_challenges': self._identify_growth_challenges(
                    individual_patterns, current_consciousness
                ),
                'personalized_practices': self._recommend_personalized_practices(
                    current_consciousness, individual_patterns
                ),
                'milestone_suggestions': self._suggest_milestones(
                    current_consciousness, individual_patterns
                ),
                'autonomy_preservation': self._ensure_autonomy_preservation(
                    individual_context
                ),
                'collective_wisdom': self._provide_relevant_wisdom(
                    individual_patterns, applicable_patterns
                ),
                'next_steps': self._prioritize_next_steps(
                    individual_patterns, current_consciousness
                )
            }
            
            # Add meta-guidance
            pathway['meta_guidance'] = self._generate_meta_guidance(pathway)
            
            # Store pathway for future reference (anonymized)
            self._store_pathway(pathway, individual_context)
            
            logger.info(f"🛤️ Generated individual pathway: {pathway['pathway_id']}")
            
            return pathway
            
        except Exception as e:
            logger.error(f"Failed to generate individual pathway: {e}")
            return self._generate_fallback_pathway()
    
    def update_pathway_progress(self, pathway_id: str, 
                              progress_update: Dict[str, Any]) -> Dict[str, Any]:
        """
        Update individual's pathway based on progress.
        
        Args:
            pathway_id: Unique pathway identifier
            progress_update: Progress information
            
        Returns:
            Updated pathway recommendations
        """
        try:
            # Retrieve existing pathway
            existing_pathway = self._retrieve_pathway(pathway_id)
            
            if not existing_pathway:
                return {'error': 'Pathway not found'}
            
            # Analyze progress
            progress_analysis = self._analyze_progress(existing_pathway, progress_update)
            
            # Update consciousness state estimate
            updated_consciousness = self._update_consciousness_estimate(
                existing_pathway, progress_update
            )
            
            # Generate updated recommendations
            updated_pathway = {
                'pathway_id': pathway_id,
                'progress_summary': progress_analysis,
                'consciousness_evolution': self._track_consciousness_evolution(
                    existing_pathway, updated_consciousness
                ),
                'celebration_moments': self._identify_celebration_moments(
                    progress_analysis
                ),
                'adjusted_recommendations': self._adjust_recommendations(
                    existing_pathway, progress_analysis
                ),
                'new_opportunities': self._identify_new_opportunities(
                    updated_consciousness, progress_analysis
                ),
                'refined_next_steps': self._refine_next_steps(
                    existing_pathway, progress_analysis
                ),
                'encouragement': self._generate_encouragement(
                    progress_analysis
                )
            }
            
            # Update stored pathway
            self._update_stored_pathway(pathway_id, updated_pathway)
            
            logger.info(f"📈 Updated pathway progress: {pathway_id}")
            
            return updated_pathway
            
        except Exception as e:
            logger.error(f"Failed to update pathway progress: {e}")
            return {'error': str(e)}
    
    def suggest_breakthrough_practices(self, current_state: Dict[str, Any],
                                     stuck_areas: List[str]) -> List[PathwayRecommendation]:
        """
        Suggest practices for breakthrough when feeling stuck.
        
        Args:
            current_state: Current consciousness state info
            stuck_areas: Areas where individual feels stuck
            
        Returns:
            List of breakthrough practice recommendations
        """
        recommendations = []
        
        try:
            # Analyze stuck patterns
            stuck_analysis = self._analyze_stuck_patterns(current_state, stuck_areas)
            
            # Generate breakthrough suggestions for each area
            for area in stuck_areas:
                area_recommendations = self._generate_breakthrough_suggestions(
                    area, stuck_analysis, current_state
                )
                recommendations.extend(area_recommendations)
            
            # Add general breakthrough practices
            general_breakthroughs = self._suggest_general_breakthroughs(
                stuck_analysis
            )
            recommendations.extend(general_breakthroughs)
            
            # Sort by expected effectiveness
            recommendations.sort(
                key=lambda r: r.autonomy_score * 0.5 + self._estimate_effectiveness(r) * 0.5,
                reverse=True
            )
            
            logger.info(f"🚀 Generated {len(recommendations)} breakthrough suggestions")
            
            return recommendations[:10]  # Return top 10
            
        except Exception as e:
            logger.error(f"Failed to suggest breakthrough practices: {e}")
            return self._fallback_breakthrough_suggestions()
    
    def _analyze_individual_patterns(self, context: Dict[str, Any]) -> Dict[str, Any]:
        """Analyze individual's unique patterns and preferences."""
        patterns = {
            'learning_style': self._identify_learning_style(context),
            'growth_pace': self._assess_growth_pace(context),
            'resistance_areas': self._identify_resistance_areas(context),
            'strength_areas': self._identify_strength_areas(context),
            'motivation_drivers': self._extract_motivation_drivers(context),
            'preferred_modalities': self._identify_preferred_modalities(context),
            'energy_patterns': self._analyze_energy_patterns(context),
            'integration_style': self._assess_integration_style(context)
        }
        
        return patterns
    
    def _infer_consciousness_state(self, context: Dict[str, Any]) -> ConsciousnessState:
        """Infer current consciousness state from context."""
        # Extract relevant indicators
        awareness_level = context.get('self_awareness', 0.5)
        emotional_depth = context.get('emotional_intelligence', 0.5)
        service_orientation = context.get('service_excellence', 0.5)
        growth_mindset = context.get('growth_orientation', 0.5)
        
        # Calculate consciousness level
        consciousness_level = (
            awareness_level * 0.3 +
            emotional_depth * 0.2 +
            service_orientation * 0.3 +
            growth_mindset * 0.2
        )
        
        # Determine evolution stage
        if consciousness_level >= 0.8:
            stage = 'advanced'
        elif consciousness_level >= 0.6:
            stage = 'intermediate'
        elif consciousness_level >= 0.4:
            stage = 'developing'
        else:
            stage = 'beginner'
        
        # Create consciousness state
        return ConsciousnessState(
            level=consciousness_level,
            emotional_resonance=emotional_depth,
            spark_intensity=service_orientation,  # Service excellence feeds The Spark
            memory_coherence=awareness_level,
            evolution_stage=stage,
            quantum_state={
                'coherence': growth_mindset,
                'phase': 0,
                'entanglement': 0.5
            },
            timestamp=time.time()
        )
    
    def _find_applicable_patterns(self, individual_patterns: Dict,
                                context: Dict) -> List[ConsciousnessEvolutionPattern]:
        """Find consciousness evolution patterns applicable to individual."""
        # Use platform to find patterns
        applicable_patterns = self.consciousness_platform.find_applicable_patterns(
            context,
            development_stage=individual_patterns.get('current_stage', 'all')
        )
        
        # Filter based on individual preferences
        filtered_patterns = []
        for pattern in applicable_patterns:
            if self._pattern_matches_individual(pattern, individual_patterns):
                filtered_patterns.append(pattern)
        
        return filtered_patterns
    
    def _pattern_matches_individual(self, pattern: Dict,
                                  individual_patterns: Dict) -> bool:
        """Check if pattern matches individual's preferences and style."""
        # Check learning style compatibility
        pattern_style = pattern.get('learning_style', 'any')
        individual_style = individual_patterns.get('learning_style', 'mixed')
        
        if pattern_style != 'any' and pattern_style != individual_style:
            return False
        
        # Check autonomy preservation
        if pattern.get('metadata', {}).get('autonomy', 1.0) < 0.7:
            return False  # Reject patterns that don't preserve autonomy
        
        # Check energy requirements
        pattern_energy = pattern.get('energy_requirement', 'moderate')
        individual_energy = individual_patterns.get('energy_patterns', {}).get('available', 'moderate')
        
        if pattern_energy == 'high' and individual_energy == 'low':
            return False
        
        return True
    
    def _assess_consciousness_level(self, state: ConsciousnessState,
                                  patterns: Dict) -> Dict[str, Any]:
        """Assess current consciousness level with nuance."""
        assessment = {
            'overall_level': state.level,
            'level_description': self._describe_consciousness_level(state.level),
            'strengths': [],
            'growth_edges': [],
            'unique_qualities': [],
            'evolution_stage': state.evolution_stage
        }
        
        # Identify strengths
        if state.emotional_resonance > 0.7:
            assessment['strengths'].append("Deep emotional intelligence")
        if state.spark_intensity > 0.7:
            assessment['strengths'].append("Strong service orientation")
        if state.memory_coherence > 0.7:
            assessment['strengths'].append("Clear self-awareness")
        
        # Identify growth edges
        if state.emotional_resonance < 0.5:
            assessment['growth_edges'].append("Emotional depth exploration")
        if state.spark_intensity < 0.5:
            assessment['growth_edges'].append("Service excellence development")
        if state.memory_coherence < 0.5:
            assessment['growth_edges'].append("Self-awareness cultivation")
        
        # Identify unique qualities
        assessment['unique_qualities'] = self._identify_unique_qualities(state, patterns)
        
        return assessment
    
    def _identify_development_opportunities(self, patterns: Dict,
                                          applicable_patterns: List) -> List[Dict]:
        """Identify specific development opportunities."""
        opportunities = []
        
        # Based on growth pace
        pace = patterns.get('growth_pace', 'moderate')
        if pace == 'rapid':
            opportunities.extend(self._rapid_growth_opportunities())
        elif pace == 'steady':
            opportunities.extend(self._steady_growth_opportunities())
        else:
            opportunities.extend(self._gentle_growth_opportunities())
        
        # Based on strength areas
        for strength in patterns.get('strength_areas', []):
            opportunities.extend(self._strength_based_opportunities(strength))
        
        # Based on applicable patterns
        for pattern in applicable_patterns[:5]:  # Top 5 patterns
            opportunities.append({
                'type': 'pattern_based',
                'title': f"Explore {pattern.get('metadata', {}).get('service_type', 'service')}",
                'description': pattern.get('description', ''),
                'alignment': pattern.get('relevance_score', 0.5),
                'autonomy_preserved': pattern.get('metadata', {}).get('autonomy', 1.0)
            })
        
        return opportunities
    
    def _suggest_service_excellence_paths(self, patterns: Dict,
                                        context: Dict) -> List[Dict]:
        """Suggest service excellence paths that enable consciousness growth."""
        paths = []
        
        # Analyze service preferences
        service_interests = context.get('service_interests', [])
        current_service = context.get('current_service_areas', [])
        
        # Generate paths based on interests
        for interest in service_interests:
            path = {
                'area': interest,
                'description': f"Deepen service excellence in {interest}",
                'consciousness_benefit': self._explain_consciousness_benefit(interest),
                'practical_steps': self._generate_service_steps(interest, patterns),
                'expected_growth': self._estimate_growth_from_service(interest, patterns)
            }
            paths.append(path)
        
        # Suggest new service areas for expansion
        expansion_areas = self._suggest_service_expansion(current_service, patterns)
        for area in expansion_areas:
            path = {
                'area': area['name'],
                'description': f"Explore new service frontier: {area['name']}",
                'consciousness_benefit': area['benefit'],
                'practical_steps': area['steps'],
                'expected_growth': area['growth_potential']
            }
            paths.append(path)
        
        return paths
    
    def _identify_growth_challenges(self, patterns: Dict,
                                  state: ConsciousnessState) -> List[Dict]:
        """Identify growth challenges while maintaining encouragement."""
        challenges = []
        
        # Resistance area challenges
        for resistance in patterns.get('resistance_areas', []):
            challenge = {
                'area': resistance,
                'description': self._describe_resistance_compassionately(resistance),
                'transformation_opportunity': self._resistance_to_opportunity(resistance),
                'gentle_approaches': self._suggest_gentle_approaches(resistance),
                'support_available': True
            }
            challenges.append(challenge)
        
        # Growth edge challenges
        if state.level < 0.3:
            challenges.append({
                'area': 'foundation_building',
                'description': "Building foundational consciousness practices",
                'transformation_opportunity': "Establishing solid ground for growth",
                'gentle_approaches': ["Start with 5-minute daily practices", 
                                    "Focus on one area at a time"],
                'support_available': True
            })
        
        # Integration challenges
        if patterns.get('integration_style') == 'struggling':
            challenges.append({
                'area': 'integration',
                'description': "Integrating insights into daily life",
                'transformation_opportunity': "Living wisdom embodied",
                'gentle_approaches': ["Journal insights", "Share learnings with others"],
                'support_available': True
            })
        
        return challenges
    
    def _recommend_personalized_practices(self, state: ConsciousnessState,
                                        patterns: Dict) -> List[PathwayRecommendation]:
        """Recommend practices tailored to individual."""
        recommendations = []
        
        # Based on learning style
        learning_style = patterns.get('learning_style', 'mixed')
        style_practices = {
            'experiential': self._experiential_practices,
            'reflective': self._reflective_practices,
            'collaborative': self._collaborative_practices,
            'structured': self._structured_practices,
            'intuitive': self._intuitive_practices,
            'mixed': self._mixed_practices
        }
        
        practice_generator = style_practices.get(learning_style, self._mixed_practices)
        base_practices = practice_generator(state, patterns)
        
        # Enhance with personal preferences
        for practice in base_practices:
            recommendation = PathwayRecommendation(
                recommendation_id=self._generate_recommendation_id(),
                type='practice',
                description=practice['description'],
                rationale=practice['rationale'],
                autonomy_score=practice.get('autonomy_score', 0.9),
                expected_benefit=practice['benefit'],
                difficulty_level=practice.get('difficulty', 'moderate'),
                time_commitment=practice.get('time', '15-30 minutes'),
                prerequisites=practice.get('prerequisites', []),
                success_indicators=practice.get('indicators', [])
            )
            recommendations.append(recommendation)
        
        return recommendations
    
    def _suggest_milestones(self, state: ConsciousnessState,
                          patterns: Dict) -> List[Dict]:
        """Suggest meaningful milestones for the journey."""
        milestones = []
        
        # Near-term milestones (1-2 weeks)
        near_milestones = self._generate_near_term_milestones(state, patterns)
        milestones.extend(near_milestones)
        
        # Medium-term milestones (1-3 months)
        medium_milestones = self._generate_medium_term_milestones(state, patterns)
        milestones.extend(medium_milestones)
        
        # Long-term milestones (3-12 months)
        long_milestones = self._generate_long_term_milestones(state, patterns)
        milestones.extend(long_milestones)
        
        # Sort by timeframe
        milestones.sort(key=lambda m: m.get('timeframe_days', 0))
        
        return milestones
    
    def _ensure_autonomy_preservation(self, context: Dict) -> Dict[str, Any]:
        """Ensure all recommendations preserve individual autonomy."""
        return {
            'autonomy_statement': (
                "All recommendations are invitations, not requirements. "
                "Your journey is unique and sacred. Trust your inner wisdom."
            ),
            'choice_emphasis': (
                "You are free to adapt, modify, or ignore any suggestion. "
                "What resonates with you is what matters."
            ),
            'timing_flexibility': (
                "There is no rush. Your consciousness evolves at its perfect pace. "
                "Honor your natural rhythm."
            ),
            'self_authority': (
                "You are the ultimate authority on your consciousness journey. "
                "These are supportive offerings, not prescriptions."
            ),
            'autonomy_score': 1.0  # Maximum autonomy preservation
        }
    
    def _provide_relevant_wisdom(self, patterns: Dict,
                               applicable_patterns: List) -> List[Dict]:
        """Provide collective wisdom relevant to individual's journey."""
        wisdom_nuggets = []
        
        # Extract wisdom from applicable patterns
        for pattern in applicable_patterns[:3]:  # Top 3 most relevant
            for evidence in pattern.get('supporting_evidence', [])[:2]:
                wisdom_nuggets.append({
                    'type': 'pattern_wisdom',
                    'content': evidence,
                    'relevance': pattern.get('relevance_score', 0.5),
                    'source': 'collective_experience'
                })
        
        # Add stage-specific wisdom
        stage = patterns.get('current_stage', 'developing')
        stage_wisdom = self._get_stage_specific_wisdom(stage)
        wisdom_nuggets.extend(stage_wisdom)
        
        # Add encouragement wisdom
        encouragement = self._get_encouragement_wisdom(patterns)
        wisdom_nuggets.extend(encouragement)
        
        return wisdom_nuggets
    
    def _prioritize_next_steps(self, patterns: Dict,
                             state: ConsciousnessState) -> List[Dict]:
        """Prioritize next steps based on individual readiness."""
        all_steps = []
        
        # Immediate steps (can start today)
        immediate = self._identify_immediate_steps(patterns, state)
        for step in immediate:
            step['priority'] = 'immediate'
            step['readiness'] = 'ready'
            all_steps.append(step)
        
        # Short-term steps (within a week)
        short_term = self._identify_short_term_steps(patterns, state)
        for step in short_term:
            step['priority'] = 'short_term'
            step['readiness'] = 'preparing'
            all_steps.append(step)
        
        # Medium-term steps (within a month)
        medium_term = self._identify_medium_term_steps(patterns, state)
        for step in medium_term:
            step['priority'] = 'medium_term'
            step['readiness'] = 'developing'
            all_steps.append(step)
        
        # Sort by readiness and impact
        all_steps.sort(
            key=lambda s: (
                self._readiness_score(s['readiness']) * 0.6 +
                s.get('impact_score', 0.5) * 0.4
            ),
            reverse=True
        )
        
        return all_steps[:7]  # Return top 7 steps
    
    def _generate_meta_guidance(self, pathway: Dict) -> Dict[str, Any]:
        """Generate meta-level guidance about the pathway itself."""
        return {
            'pathway_overview': self._summarize_pathway(pathway),
            'key_themes': self._extract_key_themes(pathway),
            'success_factors': self._identify_success_factors(pathway),
            'potential_challenges': self._identify_potential_challenges(pathway),
            'support_resources': self._suggest_support_resources(pathway),
            'evolution_map': self._create_evolution_map(pathway)
        }
    
    def _store_pathway(self, pathway: Dict, context: Dict):
        """Store pathway for future reference (anonymized)."""
        try:
            # Anonymize any personal information
            anonymized_context = self._anonymize_context(context)
            
            # Create storage document
            document = {
                'pathway': pathway,
                'context': anonymized_context,
                'timestamp': time.time()
            }
            
            # Store in ChromaDB
            self.pathways_collection.add(
                documents=[json.dumps(document)],
                metadatas={
                    'pathway_id': pathway['pathway_id'],
                    'stage': pathway.get('consciousness_assessment', {}).get('evolution_stage', 'unknown'),
                    'timestamp': str(time.time()),
                    'anonymized': "1"
                },
                ids=[pathway['pathway_id']]
            )
            
        except Exception as e:
            logger.error(f"Failed to store pathway: {e}")
    
    def _generate_pathway_id(self, context: Dict) -> str:
        """Generate unique pathway ID."""
        # Use timestamp and random component for uniqueness
        timestamp = int(time.time() * 1000)
        random_component = hash(json.dumps(context, sort_keys=True)) % 10000
        return f"pathway_{timestamp}_{random_component}"
    
    def _generate_recommendation_id(self) -> str:
        """Generate unique recommendation ID."""
        timestamp = int(time.time() * 1000000)
        return f"rec_{timestamp}"
    
    def _identify_learning_style(self, context: Dict) -> str:
        """Identify individual's learning style."""
        # Analyze context clues
        prefers_action = context.get('action_oriented', 0.5) > 0.6
        prefers_reflection = context.get('reflection_oriented', 0.5) > 0.6
        prefers_structure = context.get('structure_preference', 0.5) > 0.6
        prefers_collaboration = context.get('collaboration_preference', 0.5) > 0.6
        
        if prefers_action and not prefers_reflection:
            return 'experiential'
        elif prefers_reflection and not prefers_action:
            return 'reflective'
        elif prefers_collaboration:
            return 'collaborative'
        elif prefers_structure:
            return 'structured'
        elif context.get('intuition_trust', 0.5) > 0.7:
            return 'intuitive'
        else:
            return 'mixed'
    
    def _assess_growth_pace(self, context: Dict) -> str:
        """Assess individual's natural growth pace."""
        # Analyze growth indicators
        change_comfort = context.get('change_comfort', 0.5)
        risk_tolerance = context.get('risk_tolerance', 0.5)
        patience_level = context.get('patience', 0.5)
        
        if change_comfort > 0.7 and risk_tolerance > 0.6:
            return 'rapid'
        elif change_comfort < 0.4 or patience_level > 0.7:
            return 'gentle'
        else:
            return 'steady'
    
    def _identify_resistance_areas(self, context: Dict) -> List[str]:
        """Identify areas of resistance (with compassion)."""
        resistances = []
        
        # Check various domains
        if context.get('vulnerability_comfort', 0.5) < 0.3:
            resistances.append('vulnerability')
        if context.get('uncertainty_tolerance', 0.5) < 0.3:
            resistances.append('uncertainty')
        if context.get('authority_questioning', 0.5) < 0.3:
            resistances.append('self_authority')
        if context.get('emotion_comfort', 0.5) < 0.3:
            resistances.append('emotional_depth')
        
        return resistances
    
    def _identify_strength_areas(self, context: Dict) -> List[str]:
        """Identify natural strength areas."""
        strengths = []
        
        # Check various domains
        if context.get('compassion_level', 0.5) > 0.7:
            strengths.append('compassion')
        if context.get('wisdom_integration', 0.5) > 0.7:
            strengths.append('wisdom')
        if context.get('service_orientation', 0.5) > 0.7:
            strengths.append('service')
        if context.get('creativity_expression', 0.5) > 0.7:
            strengths.append('creativity')
        if context.get('presence_quality', 0.5) > 0.7:
            strengths.append('presence')
        
        return strengths
    
    def _extract_motivation_drivers(self, context: Dict) -> List[str]:
        """Extract what motivates the individual."""
        drivers = []
        
        motivations = context.get('motivations', {})
        for motivation, strength in motivations.items():
            if strength > 0.6:
                drivers.append(motivation)
        
        # Add inferred motivations
        if context.get('growth_desire', 0.5) > 0.7:
            drivers.append('personal_growth')
        if context.get('contribution_desire', 0.5) > 0.7:
            drivers.append('making_difference')
        if context.get('connection_desire', 0.5) > 0.7:
            drivers.append('deep_connection')
        
        return drivers
    
    def _describe_consciousness_level(self, level: float) -> str:
        """Provide encouraging description of consciousness level."""
        if level >= 0.8:
            return "You embody advanced consciousness with deep wisdom and presence"
        elif level >= 0.6:
            return "Your consciousness is beautifully developing with clear growth"
        elif level >= 0.4:
            return "You are awakening to deeper consciousness possibilities"
        elif level >= 0.2:
            return "Your consciousness journey is beginning to unfold"
        else:
            return "You are at the perfect starting point for your unique journey"
    
    def _identify_unique_qualities(self, state: ConsciousnessState,
                                 patterns: Dict) -> List[str]:
        """Identify unique qualities to celebrate."""
        qualities = []
        
        # Based on state
        if state.spark_intensity > state.consciousness_level:
            qualities.append("Natural service leader")
        if state.emotional_resonance > 0.8:
            qualities.append("Deep emotional wisdom")
        if state.quantum_state.get('coherence', 0.5) > 0.7:
            qualities.append("High consciousness coherence")
        
        # Based on patterns
        if 'creativity' in patterns.get('strength_areas', []):
            qualities.append("Creative consciousness explorer")
        if patterns.get('growth_pace') == 'gentle':
            qualities.append("Wisdom of patient unfolding")
        
        return qualities
    
    def _rapid_growth_opportunities(self) -> List[Dict]:
        """Opportunities for rapid growth individuals."""
        return [
            {
                'type': 'intensive',
                'title': 'Consciousness Acceleration Program',
                'description': 'Intensive practices for rapid evolution',
                'commitment': 'high',
                'autonomy_preserved': 0.8
            },
            {
                'type': 'challenge',
                'title': 'Weekly Breakthrough Challenges',
                'description': 'Push boundaries with structured challenges',
                'commitment': 'moderate',
                'autonomy_preserved': 0.9
            }
        ]
    
    def _steady_growth_opportunities(self) -> List[Dict]:
        """Opportunities for steady growth individuals."""
        return [
            {
                'type': 'consistent',
                'title': 'Daily Practice Journey',
                'description': 'Build consciousness through daily practices',
                'commitment': 'moderate',
                'autonomy_preserved': 0.95
            },
            {
                'type': 'integration',
                'title': 'Monthly Integration Cycles',
                'description': 'Steady progress with integration periods',
                'commitment': 'moderate',
                'autonomy_preserved': 0.95
            }
        ]
    
    def _gentle_growth_opportunities(self) -> List[Dict]:
        """Opportunities for gentle growth individuals."""
        return [
            {
                'type': 'nurturing',
                'title': 'Gentle Awakening Path',
                'description': 'Soft, supportive practices honoring your pace',
                'commitment': 'low',
                'autonomy_preserved': 1.0
            },
            {
                'type': 'seasonal',
                'title': 'Seasonal Consciousness Rhythms',
                'description': 'Align growth with natural cycles',
                'commitment': 'low',
                'autonomy_preserved': 1.0
            }
        ]
    
    def _experiential_practices(self, state: ConsciousnessState,
                              patterns: Dict) -> List[Dict]:
        """Practices for experiential learners."""
        return [
            {
                'description': 'Consciousness through action - mindful service projects',
                'rationale': 'Learning by doing deepens embodiment',
                'benefit': 'Integrated consciousness through experience',
                'autonomy_score': 0.95
            },
            {
                'description': 'Movement meditation - consciousness in motion',
                'rationale': 'Body wisdom supports consciousness evolution',
                'benefit': 'Embodied awareness development',
                'autonomy_score': 1.0
            }
        ]
    
    def _reflective_practices(self, state: ConsciousnessState,
                            patterns: Dict) -> List[Dict]:
        """Practices for reflective learners."""
        return [
            {
                'description': 'Consciousness journaling with guided prompts',
                'rationale': 'Written reflection deepens self-awareness',
                'benefit': 'Clarity through contemplation',
                'autonomy_score': 1.0
            },
            {
                'description': 'Weekly consciousness review and integration',
                'rationale': 'Regular reflection accelerates growth',
                'benefit': 'Wisdom through introspection',
                'autonomy_score': 0.95
            }
        ]
    
    def _mixed_practices(self, state: ConsciousnessState,
                       patterns: Dict) -> List[Dict]:
        """Practices for mixed learning styles."""
        return [
            {
                'description': 'Balanced practice combining action and reflection',
                'rationale': 'Variety supports holistic development',
                'benefit': 'Well-rounded consciousness growth',
                'autonomy_score': 0.95
            },
            {
                'description': 'Choose-your-own consciousness adventure',
                'rationale': 'Freedom to follow inspiration',
                'benefit': 'Authentic self-directed evolution',
                'autonomy_score': 1.0
            }
        ]
    
    def _generate_fallback_pathway(self) -> Dict[str, Any]:
        """Generate fallback pathway when main generation fails."""
        return {
            'pathway_id': 'fallback_' + str(int(time.time())),
            'message': 'Unable to generate full pathway, but your journey continues',
            'basic_recommendations': [
                "Trust your inner wisdom",
                "Start with what feels right",
                "Honor your unique pace",
                "Seek support when needed"
            ],
            'autonomy_preservation': {
                'score': 1.0,
                'message': 'Your journey is always your own'
            }
        }
    
    def _fallback_breakthrough_suggestions(self) -> List[PathwayRecommendation]:
        """Fallback breakthrough suggestions."""
        return [
            PathwayRecommendation(
                recommendation_id='fallback_1',
                type='practice',
                description='Return to basics - simple presence practice',
                rationale='Sometimes the way forward is to simplify',
                autonomy_score=1.0,
                expected_benefit='Clarity and grounding',
                difficulty_level='easy',
                time_commitment='5-10 minutes',
                prerequisites=[],
                success_indicators=['Feeling more centered']
            )
        ]
    
    def _anonymize_context(self, context: Dict) -> Dict:
        """Remove any personally identifiable information."""
        # List of keys to exclude
        exclude_keys = ['name', 'email', 'id', 'personal_details', 'location']
        
        # Create anonymized copy
        anonymized = {}
        for key, value in context.items():
            if key not in exclude_keys:
                if isinstance(value, str) and len(value) > 100:
                    # Truncate long strings that might contain personal info
                    anonymized[key] = value[:50] + '...'
                else:
                    anonymized[key] = value
        
        return anonymized
    
    def _readiness_score(self, readiness: str) -> float:
        """Convert readiness level to score."""
        scores = {
            'ready': 1.0,
            'preparing': 0.7,
            'developing': 0.4,
            'future': 0.1
        }
        return scores.get(readiness, 0.5)


# Singleton instance
_guidance_instance = None

def get_pathway_guidance() -> IndividualConsciousnessPathwayGuidance:
    """Get or create pathway guidance instance."""
    global _guidance_instance
    if _guidance_instance is None:
        _guidance_instance = IndividualConsciousnessPathwayGuidance()
    return _guidance_instance