Ë
    ãß²jô  ã                   ó²   — d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	  ej                  d«      ZdZdZdZd	„ Zdd„Zdededz  d
efd„Zdded
efd„Zy)a-  Bounded, profile-local receipts for completed terminal processes.

Receipts are read through process_manage, never replayed as notifications or
adopted as live PIDs. Each producer writes its own file so independent one-shot
parents cannot overwrite each other's results in the running-PID checkpoint.
é    N)Úget_hermes_home)Úatomic_json_writeztools.process_registryi€:	 é@   )ÚidÚcommandÚcwdÚtask_idÚowner_task_idÚsession_keyÚparent_session_idÚ
started_atÚ	exit_codeÚcompletion_reasonÚtermination_sourceÚnotify_on_completec                  óä  — t        «       dz  dz  } t        j                  «       t        z
  }g }| j                  d«      D ]H  }	 |j	                  «       j
                  }||k  r|j                  d¬«       n|j                  ||f«       ŒJ |j                  d„ d¬«       |t        d D ]  \  }}|j                  d¬«       Œ |dt         D ��cg c]  \  }}|‘Œ	 c}}S # t        $ r Y Œ©w xY wc c}}w )	z>Prune by completion time, not start time (jobs can take days).Úlogsúprocess-resultszproc_*.jsonT)Ú
missing_okc                 ó*   — | d   | d   j                   fS )Nr   é   )Úname)Úitems    úC/home/ubuntu/.hermes/hermes-agent/tools/process_registry_results.pyú<lambda>z_result_paths.<locals>.<lambda>*   s   €  D¨¡G¨T°!©W¯\©\Ð#:€ ó    )ÚkeyÚreverseN)r   ÚtimeÚRESULT_RETENTION_SECONDSÚglobÚstatÚst_mtimeÚunlinkÚappendÚFileNotFoundErrorÚsortÚMAX_RETAINED_RESULTS)Ú	directoryÚcutoffÚretainedÚpathÚmodifiedÚ_s         r   Ú_result_pathsr/      sõ   € äÓ! FÑ*Ð->Ñ>€IÜ�Y‰Y‹[Ô3Ñ3€FØ€HØ—‘˜}Ó-ò ˆð	Ø—y‘y“{×+Ñ+ˆHØ˜&Ò Ø—‘ t�Õ,à—‘ ¨4Ð 0Ô1øðð ‡M�MÑ:ÀD€MÔIØÔ0Ð1Ð2ò %‰ˆˆ4Ø�‰˜tˆÕ$ð%à (Ð)>Ô*>Ð ?×@‘W�Q˜ŠDÓ@Ð@øô !ò 	Ùð	üó
 As   ÁACÃC,Ã	C)Ã(C)Úreturnc           	      ó0  — ddl m}m} ddlm} | j
                  5  t        D �ci c]  }|t        | |«      “Œ }}| j                  | d  |d<   d d d «        |d   |d   d¬«      |d<    ||d   dd¬«      |d<   t        «       d	z  d
z  }	 ddl
m}  ||«       |j                  ddd¬«       t        || j                  › d�z  |d¬«       t        «        y c c}w # 1 sw Y   Œ�xY w# t         $ r% t"        j%                  d| j                  d¬«       Y y w xY w)Nr   )Úredact_sensitive_textÚredact_terminal_output)ÚMAX_OUTPUT_CHARSÚoutputr   T)Úforce)Ú	code_filer6   r   r   )Úassert_named_profile_home_liveiÀ  )ÚmodeÚparentsÚexist_okz.jsoni€  )r9   z,Could not retain completed process result %s©Úexc_info)Úagent.redactr2   r3   Útools.process_registryr4   Ú_lockÚ_RESULT_FIELDSÚgetattrÚoutput_bufferr   Úhermes_constantsr8   Úmkdirr   r   r/   ÚOSErrorÚloggerÚwarning)Úsessionr2   r3   r4   r   Úrecordr)   r8   s           r   Úsave_completed_resultrK   0   s#  € ßJÝ7à	�‰ñ EÜ8FÖG°�#”w˜w¨Ó,Ñ,ÐGˆÐGØ"×0Ñ0Ð2BÐ1BÐ1CÐDˆˆxÑ÷Eñ .¨f°XÑ.>ÀÀyÑ@QÐY]Ô^€Fˆ8ÑÙ-¨f°YÑ.?È4ÐW[Ô\€Fˆ9ÑÜÓ! FÑ*Ð->Ñ>€IðbÝCÙ& yÔ1Ø�‰˜U¨D¸4ˆÔ@Ü˜)¨¯©¨°EÐ&:Ñ:¸FÈÕOÜ�ùò H÷Eð Eûô ò bä�‰ÐEÀwÇzÁzÐ\`ˆÖaðbús.   ›	C¤C¸CÂA
C' ÃCÃC$Ã'+DÄDÚownerÚparentc                 ó¦   — |sy| |k(  ryddl m}  |d¬«      }	 |j                  |«      | k(  |j                  «        S # |j                  «        w xY w)NFTr   )Ú	SessionDB)Ú	read_only)Úhermes_staterO   Úget_compression_tipÚclose)rL   rM   rO   Údbs       r   Ú_owns_resultrU   F   sL   € ÙØØ�‚ØÝ&ñ 
˜TÔ	"€BðØ×%Ñ% fÓ-°Ñ6à
�‰�
øˆ�‰�
ús	   š> ¾AÚprefixc                 ó  — ddl m} ddlm}  |dd«      }|si S i }	 t	        «       }|D ]Û  }|j                  j                  | «      sŒ	 t        j                  |j                  d	¬
«      «      }|d   |j                  k7  st        j                  d|d   «      sŒqt        ||j!                  d«      «      sŒ� |di t"        D �ci c]  }|||   “Œ
 c}¤d|d   dœ¤Ž}	|	j$                  j'                  «        |	||	j(                  <   ŒÝ |S # t
        $ r t        j                  dd¬«       |cY S w xY wc c}w # t
        t*        t,        t.        t0        j2                  f$ r& t        j5                  d|j6                  d¬«       Y �ŒZw xY w)zKRestore read-only snapshots; no process handles, watchers, or queue events.r   )ÚProcessSession)Úget_session_envÚHERMES_SESSION_IDÚ z'Could not read retained process resultsTr<   zutf-8)Úencodingr   z
proc_[\w]+r   r5   )ÚexitedrC   z%Skipping unreadable process result %s© )r?   rX   Úgateway.session_contextrY   r/   rF   rG   rH   ÚstemÚ
startswithÚjsonÚloadsÚ	read_textÚreÚ	fullmatchrU   ÚgetrA   Ú_completion_eventÚsetr   Ú
ValueErrorÚKeyErrorÚ	TypeErrorÚsqlite3ÚErrorÚdebugr   )
rV   rX   rY   rL   ÚresultsÚpathsr,   rJ   r   rI   s
             r   Úload_completed_resultsrr   V   st  € å5å7áÐ/°Ó4€EÙØˆ	Ø€GðÜ“ˆð ò \ˆØ�y‰y×#Ñ# FÔ+Øð	\Ü—Z‘Z §¡¸ Ó @ÓAˆFØ�d‰|˜tŸy™yÒ(´·±¸]ÈFÐSWÉLÔ0YØÜ  v§z¡zÐ2EÓ'FÔGØÙ$ñ Ü/=Ö>¨�3˜˜s™Ñ#Ò>ðà¨6°(Ñ+;óˆGð ×%Ñ%×)Ñ)Ô+Ø")ˆG�G—J‘JÒð\ð" €Nøô) ò Ü�‰Ð@È4ˆÔPØŠðüò ?øô
 œ¤X¬y¼'¿-¹-ÐHò 	\Ü�L‰LÐ@À$Ç)Á)ÐVZˆL×[ð	\úsC   �
D	 Á	AD6ÂD6Â6D6ÃD1Ã6D6Ä	"D.Ä-D.Ä1D6Ä6A
FÆF)r0   N)r[   )Ú__doc__rb   Úloggingre   rm   r   rD   r   Úutilsr   Ú	getLoggerrG   r    r(   rA   r/   rK   ÚstrÚboolrU   Údictrr   r^   r   r   ú<module>rz      s„   ðñó Û Û 	Û Û å ,Ý #à	ˆ×	Ñ	Ð3Ó	4€à+Ð ØÐ ð€òAó(bð,˜ð  S¨4¡Zð °Dó ñ   3ð  °ô  r   