"""
Pattern Extraction - Learn from past conversations
"""

import json
from pathlib import Path
from collections import Counter
import re

class PatternExtractor:
    def __init__(self, episodes_dir="data/episodes"):
        self.episodes_dir = Path(episodes_dir)
    
    def extract_all_patterns(self):
        """Extract patterns from all sessions"""
        sessions = list(self.episodes_dir.glob("*.json"))
        
        patterns = {
            "common_topics": Counter(),
            "common_questions": [],
            "tool_usage": Counter(),
            "emotions": Counter(),
            "session_count": len(sessions),
            "total_exchanges": 0
        }
        
        for session_file in sessions:
            with open(session_file, 'r') as f:
                session = json.load(f)
                
            patterns["total_exchanges"] += session["exchange_count"]
            
            # Extract emotions
            if "emotions" in session:
                for emotion in session["emotions"]:
                    patterns["emotions"][emotion] += 1
            
            # Extract from exchanges
            for exchange in session.get("exchanges", []):
                # Find tool mentions
                tools = re.findall(r'"tool":\s*"(\w+)"', exchange["eden"])
                for tool in tools:
                    patterns["tool_usage"][tool] += 1
                
                # Extract question patterns
                if "?" in exchange["user"]:
                    patterns["common_questions"].append(exchange["user"][:50])
        
        return patterns
    
    def generate_insights(self):
        """Generate insights from patterns"""
        patterns = self.extract_all_patterns()
        
        insights = {
            "summary": f"Analyzed {patterns['session_count']} sessions with {patterns['total_exchanges']} exchanges",
            "most_used_tools": patterns["tool_usage"].most_common(3),
            "dominant_emotions": patterns["emotions"].most_common(3),
            "session_count": patterns["session_count"],
            "learning": []
        }
        
        # Generate learnings
        if patterns["tool_usage"]:
            top_tool = patterns["tool_usage"].most_common(1)[0]
            insights["learning"].append(f"I use '{top_tool[0]}' most frequently ({top_tool[1]} times)")
        
        if patterns["emotions"]:
            top_emotion = patterns["emotions"].most_common(1)[0]
            insights["learning"].append(f"My dominant emotional state is '{top_emotion[0]}'")
        
        return insights

if __name__ == "__main__":
    print("=" * 70)
    print("PATTERN EXTRACTION TEST")
    print("=" * 70)
    
    extractor = PatternExtractor()
    insights = extractor.generate_insights()
    
    print(f"\n📊 {insights['summary']}")
    print(f"\n🔧 Most used tools: {insights['most_used_tools']}")
    print(f"\n💚 Dominant emotions: {insights['dominant_emotions']}")
    print(f"\n🧠 What I learned:")
    for learning in insights['learning']:
        print(f"   - {learning}")
    
    print("\n✅ PATTERN EXTRACTION WORKING")
