"""
CAUSAL REASONING ATOM - Written by Eden, January 13, 2026
"""
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from networkx import DiGraph

class CausalReasoning:
    def __init__(self):
        self.vectorizer = TfidfVectorizer()
    
    def process(self, input_data):
        cleaned = self.clean_input_data(input_data)
        graph = self.identify_causal_relationships(cleaned)
        prediction = self.predict_outcomes(graph)
        return self.optimize_decisions(prediction)
    
    def clean_input_data(self, input_data):
        return self.vectorizer.fit_transform(input_data)
    
    def identify_causal_relationships(self, cleaned_input_data):
        G = DiGraph()
        for i in range(cleaned_input_data.shape[0]):
            node = f"Event_{i}"
            G.add_node(node)
            if i > 0:
                G.add_edge(f"Event_{i-1}", node)
        return G
    
    def predict_outcomes(self, causal_diagram):
        effects = sorted(causal_diagram.nodes(), 
                        key=lambda n: causal_diagram.in_degree(n), 
                        reverse=True)
        return effects[:3] if effects else []
    
    def optimize_decisions(self, predictions):
        return {"likely_outcomes": predictions, "recommendation": predictions[0] if predictions else "No data"}

def causal_reasoning(input_data):
    return CausalReasoning().process(input_data)

if __name__ == "__main__":
    test = ["lead contacted", "email sent", "response received", "deal closed"]
    print("Causal Analysis:", causal_reasoning(test))
