
    h                        S r SSKrSSKJr   " S S5      r\S:X  a  \" S5        \" 5       r\R                  SS	S
5        \R                  SS	S
5        \R                  SSS5        \R                  S5      r
\" S5        \" S\
S    35        \" S\
S   S 35        \" S\
S   S 35        \R                  SS	5      r\" S\ 35        \" S5        gg)z]
Causal Model - Understand cause and effect
Eden learns WHY things happen, not just patterns
    N)Pathc                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
CausalModel   c                 2    0 U l         U R                  5         g )N)causal_links
load_model)selfs    B/home/james-whalen/eden-agi-project/core/reasoning/causal_model.py__init__CausalModel.__init__	   s        c                     [        S5      nUR                  5       (       a1  [        US5       n[        R                  " U5      U l        S S S 5        g g ! , (       d  f       g = f)Ndata/causal_model.jsonr)r   existsopenjsonloadr   r
   
model_filefs      r   r	   CausalModel.load_model   sL    23
j#&!$(IIaL! '& &&s   A
A!c                     [        S5      nUR                  R                  SS9  [        US5       n[        R
                  " U R                  USS9  S S S 5        g ! , (       d  f       g = f)Nr   T)exist_okw   )indent)r   parentmkdirr   r   dumpr   r   s      r   
save_modelCausalModel.save_model   sR    23
.*c"aIId''15 #""s   !A
A)c                    XR                   ;  a  0 SS.U R                   U'   U R                   U   S==   S-  ss'   X R                   U   S   ;  a  SSS.U R                   U   S   U'   U R                   U   S   U   S==   S-  ss'   U(       a   U R                   U   S   U   S==   S-  ss'   U R                  5         g	)
z Learn that ACTION causes OUTCOMEr   )outcomestotalr&      r%   )count	successesr(   r)   N)r   r"   )r
   actionoutcomesuccesss       r   learn_causal_linkCausalModel.learn_causal_link   s    ***57!(DDf%&!'*a/*++F3J??GHWX=YDf%j1':&!*-g6w?1D?f%j1':;G1LGr   c                    XR                   ;  a  SSS.$ U R                   U   S   nU(       d  SSS.$ [        UR                  5       S S9nUS   nUS   nUS	   U R                   U   S
   -  nUS	   S:  a  US   US	   -  OSnUUUS.$ )z'Predict what will happen if I do ACTIONunknowng        )
prediction
confidencer%   c                     U S   S   $ )Nr'   r(    )xs    r   <lambda>-CausalModel.predict_outcome.<locals>.<lambda>3   s    1Q4=r   )keyr   r'   r(   r&   r)   )r1   r2   success_rate)r   maxitems)r
   r*   r%   best_outcomeoutcome_namestatsr2   r9   s           r   predict_outcomeCausalModel.predict_outcome)   s    ***"+3??$$V,Z8"+3?? 8>>+1HI#AQ7^d&7&7&?&HH
>CGnq>Pu[)E'N:VW '$(
 	
r   c           	          XR                   ;   aC  X R                   U   S   ;   a.  U R                   U   S   U   nUS   nUS   nSU SU SU SU S3	$ S	U S
U S3$ )z#Explain WHY action leads to outcomer%   r(   r)   'z
' led to 'z' z times (z successful)z!No causal link observed between 'z' and 'r   )r
   r*   r+   r>   timesr,   s         r   explain_causalityCausalModel.explain_causality@   s    &&&++F3J??))&1*=gFg,6(*WIRwhwi|\\26(''!LLr   rC   N)__name__
__module____qualname____firstlineno__r   r	   r"   r-   r?   rE   __static_attributes__r4   r   r   r   r      s!    16 
.Mr   r   __main__zCAUSAL MODEL TESTdirect_writefile_createdTpermission_errorFz
Prediction for 'direct_write':z   Outcome: r1   z   Confidence: r2   z.0%z   Success rate: r9   z
Explanation: u   
✅ CAUSAL MODEL OPERATIONAL)__doc__r   pathlibr   r   rG   printmodelr-   r?   r1   rE   explanationr4   r   r   <module>rU      s    @M @MD z	
ME 
NNDA	NNDA	N,>F &&~6J	,.	LL12
34	OJ|4S9
:;	j8=
>? ))..IK	OK=
)*	
*+) r   