
    i                    D    S SK Jr  S SKJr  SSKJrJrJr   " S S5      rg)    )annotations)Any   )MemoryServicemake_idutcnowc                  ^    \ rS rSrSS jrSSS jjrSSS.SS jjrSS jrSS jrSS	 jr	S
r
g)MemoryEngine   c                    Xl         g Nservice)selfr   s     !src/shared_agent_memory/engine.py__init__MemoryEngine.__init__	   s        Nc           	     \   U R                   R                  5       nUb  US U n/ nU HB  n UR                  U R                  U5      5        U R                   R	                  US   SSS9  MD     U$ ! [
         a2  nU R                   R	                  US   S[        U5      S9   S nAM  S nAff = f)Nid	completed	extracted)outcomefailed)error_message)r   list_pending_eventsappend_process_event
mark_event	Exceptionstr)r   limitevents	processedeventexcs         r   process_pendingMemoryEngine.process_pending   s    113FU^F*,	EW  !4!4U!;<''d[+'V    W''dXSQTX'VWs   >A//
B+9'B&&B+)r"   job_idc                  U(       a  U R                   R                  U5      /nOU R                   R                  US9n/ nU H  nU R                   R                  US   5      n U R	                  U5      nU R                   R                  US   SUS    S3US9  U R                   R                  [        5       US   UR                  S5      UR                  S	5      UR                  S
5      5      nU R                   R                  US   U[        5       SUS    S3S9  UR                  US   SUS.5        M     U$ ! [         a  n	U R                   R                  US   SUS    S30 [        U	5      S9  U R                   R                  US   [        5       S[        U	5      S9  UR                  US   S[        U	5      S.5         S n	A	GM  S n	A	ff = f)N)r"   r   r   job_typez
 completed)statussummarystatscadenceinterval_minuteswindow_start
window_end)next_due_atlast_run_atlast_statuslast_summary)r)   r,   r.   r   z failed)r,   r-   r.   r   )r4   r5   r6   )r)   r,   error)r   get_maintenance_joblist_due_maintenance_jobscreate_maintenance_run_run_maintenance_jobfinish_maintenance_run_compute_next_duer   getupdate_maintenance_jobr   r    r!   )
r   r"   r)   jobsresultsjobrunr.   next_duer&   s
             r   run_due_maintenance MemoryEngine.run_due_maintenance   s   LL44V<=D<<999FD(*C,,55c$i@C%]11#633I&":/z:	 4   <<99H	NGG./GGN+GGL) 33I ( & +$'
O#4J!? 4  #d){UZ[\1 P   ]33I#":/w7"%c( 4  33I & (!$S	 4  #d)xRUVYRZ[\\]s   $CD==
GB GGc                    UR                  S5      nUS:X  a1  U R                  R                  UR                  S5      =(       d    0 S9$ SSU 3S.$ )Nr+   consolidationmetadata)configTzunknown job_type )skippedreason)r>   r   consolidate_candidates)r   rB   r+   s      r   r;   !MemoryEngine._run_maintenance_jobJ   sR    77:&&<<66cggj>Q>WUW6XX->xj+IJJr   c                N   U R                   R                  R                  5        nUR                  SUS   45      R	                  5       nUc  [        US   5      e[        U5      nS S S 5        WS   nU R                   R                  U5      nU R                   R                  [        S5      SU R                  US   5      SUS   US	   UUS
SUS   US   US   U R                   R                  U5      SUS   [        5       S.S.5      nUS   US   S.$ ! , (       d  f       N= f)Nz"SELECT * FROM sources WHERE id = ?	source_idcontentmemepisoderequested_scopeinboxsource_kindtitleg333333?g      ?
created_at
source_refr   zmemory-enginetrigger_type)ingested_byrZ   captured_at)r   typescoper,   rV   rW   rQ   r-   
confidence	freshnessobserved_atrY   evidence_ref	embeddingrI   )event_id	memory_id)r   store
connectionexecutefetchoneKeyErrordict_make_summaryingestr   _normalize_scope_text_embeddingr   )r   r%   connsourcesource_dictrQ   r-   memorys           r   r   MemoryEngine._process_eventP   s2   \\**,\\"F{I[H]^ggiF~u[122v,K	 - i(,,,,W5$$en!..u5F/GH!*=9$W-""! *<8),7 +D 1!\\99'B#2$).$9#)8
. "$KfTlCC? -,s   AD
D$c                    US;   a  U$ g)N>   repoagentglobalprojectsessionrz    )r   rT   s     r   rn   MemoryEngine._normalize_scoper   s    OO""r   r   )r   r   returnNoner   )r"   
int | Noner}   list[dict[str, Any]])r"   r   r)   z
str | Noner}   r   )rB   dict[str, Any]r}   r   )r%   r   r}   r   )rT   r!   r}   r!   )__name__
__module____qualname____firstlineno__r   r'   rE   r;   r   rn   __static_attributes__r{   r   r   r
   r
      s,     :>TX .`K DDr   r
   N)	
__future__r   typingr   r   r   r   r   r
   r{   r   r   <module>r      s    "  3 3m mr   