
    h'                     2   S r SSKrSSKJr  SSKJr   " S S5      r\S:X  au  \" S5        \" 5       r\R                  S	S
SSSS.5      r
\" S\
S    35        \" S\R                  \
S   5       35        \" S\" \R                  5       35        \" S5        gg)z6
Episodic Memory - Rich reconstruction of experiences
    N)Path)datetimec                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)EpisodicMemory   c                 2    / U l         U R                  5         g )N)episodesload_episodes)selfs    B/home/james-whalen/eden-agi-project/core/memory/episodic_memory.py__init__EpisodicMemory.__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/episodic_memories.jsonr)r   existsopenjsonloadr	   r   ep_filefs      r   r
   EpisodicMemory.load_episodes   sI    45>>gs#q $		! $# ##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_episodesEpisodicMemory.save_episodes   sN    45d+'31IIdmmQq1  s   !A
A)c                    [        U R                  5      S-   [        R                  " 5       R	                  5       UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      SUR                  SS	5      0U R                  U5      S
.nU R                  R                  U5        U R                  5         U$ )N   taskUnknownapproachoutcomesuccessF	task_typegeneral)id	timestampwhathowr*   r+   context
reflection)	lenr	   r   now	isoformatgetgenerate_reflectionappendr#   )r   experience_dataepisodes      r   create_episodeEpisodicMemory.create_episode   s    dmm$q(!113#''	:"&&z9=&**9i@&**9e<_00iH 22?C
 	W%r   c                     UR                  S5      (       a(  SUR                  SS5       SUR                  SS5       3$ SUR                  SS5       S3$ )Nr+   	Success: r'   z using r)   zFailed: z - try different approach)r7   )r   datas     r   r8   "EpisodicMemory.generate_reflection+   sY    88Itxx78U_@`?abbdhhvv677PQQr   c                 `    U R                    Vs/ s H  o"S   S   U:X  d  M  UPM     sn$ s  snf )Nr2   r,   r	   )r   r,   eps      r   recall_by_context EpisodicMemory.recall_by_context1   s,    !]]V]rmK.HI.U]VVVs   ++c                     U R                    HZ  nUS   U:X  d  M  SUS    SUS    S3nUSUS    S3-  nUS	US
    S3-  nUSUS    S3-  nUSUS    S3-  nUSUS    3-  nUs  $    g)Nr.   zEpisode z (r/   z):
zTask: r0   
z
Approach: r1   z	Outcome: r*   r?   r+   zReflection: r3   zEpisode not foundrC   )r   
episode_idrD   	narratives       r   get_narrativeEpisodicMemory.get_narrative4   s    --B$x:%&r$xj2k?2C4H	vbj\44	z"U)B77	yIr::	yIr::	|B|,<+=>>	     #r   rC   N)__name__
__module____qualname____firstlineno__r   r
   r#   r<   r8   rE   rK   __static_attributes__ r   r   r   r      s'    -2$RW
#r   r   __main__zEPISODIC MEMORY TESTzCreate config filedirect_writezFile createdTfile_creation)r'   r)   r*   r+   r,   z
Created episode r.   z
Narrative:
z
Total episodes: u   ✅ EPISODIC MEMORY OPERATIONAL)__doc__r   pathlibr   r   r   rM   printmemoryr<   r;   rK   r4   r	   rR   r   r   <module>rZ      s      6# 6#p z	
 !F##$"!$% G 
wt}o
./	N6//>?
@A	s6??34
56	
+, r   