§
    ·=ºjjU  ã                   ó¼   — 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 ddl	m
Z
mZmZmZ ddlmZmZmZmZ  ej        d¦  «        ZdZ G d	„ d¦  «        ZeZdS )
uv  
AutoPOE2 - Multimodal Flight Recorder (Incident Dossier Packaging)
TuÃ¢n thá»§ nghiÃªm ngáº·t:
- Rule 8: Triá»‡t tiÃªu sá»­a lá»—i triá»‡u chá»©ng (Root-Cause-First).
- Rule 11: PhÃ²ng ngá»«a há»“i quy (Automated Regression Prevention).
- Rule 13: Giao thá»©c Watcher thá»�i gian thá»±c & Tá»± sá»­a lá»—i khÃ©p kÃ­n (6-Stage Closed-Loop).
- Rule 14: Tuyá»‡t Ä‘á»‘i cáº¥m dÃ¹ng mock data / bá»‹a data â€” 100% dá»¯ liá»‡u tháº­t (Real Authentic Data Protocol).

Ä�Ã³ng gÃ³i há»“ sÆ¡ sá»± cá»‘ (Incident Dossier) táº¡i thá»�i Ä‘iá»ƒm 0ms vÃ o thÆ° má»¥c:
  debug_harness/incidents/INCIDENT_<timestamp>_<error_code>/
Gá»“m 6 thÃ nh pháº§n:
  1. incident_dossier.json (Chuáº©n schema Doc 17)
  2. screenshot.png
  3. annotated_correlation.png
  4. ram_dump.json & ram_snapshot.json
  5. core_log_slice.txt
  6. companion_log_slice.txt
vÃ  cáº­p nháº­t debug_harness/LATEST_INCIDENT.json.
é    N)Údeque)Údatetime)ÚAnyÚDictÚListÚOptional)ÚERR_BOGUS_VITAL_STRUCT_778ÚERR_OPTICAL_RAM_DESYNCÚERR_XYZ_FROZEN_AT_ORIGINÚINVARIANT_NAMESÚMultimodalFlightRecordersC   ‰PNG

   IHDR         c4   
IDATxœc    
-´    IEND®B`‚c                   ó&  — e Zd ZdZ	 	 	 	 	 d&dededee         dee         d	ef
d
„Z	 d'dedee         ddfd„Z	d'dee         de
eeef                  fd„Z	 	 	 	 	 	 	 d(dede
e         deeef         dee         dee         deeeef                  dee
e                  dee
e                  dededefd„Zd)d„Z	 	 	 	 d*dededee         dee         d ee         d!eeeef                  deeef         fd"„Zd#eded$edeeef         ddf
d%„ZdS )+r   ux   
    Há»™p Ä‘en Ä‘a phÆ°Æ¡ng thá»©c ghi nháº­n telemetry liÃªn tá»¥c vÃ  Ä‘Ã³ng gÃ³i Incident Dossier chuáº©n hÃ³a.
    údebug_harness/incidentsé   NÚ
output_dirÚcapacityÚscreen_capturerÚincidents_dirÚmax_retained_incidentsc                 ón  — |�|n|| _         || _        || _        || _        t	          |¬¦  «        | _        t          j        | j         d¬¦  «         t          j         	                    t          j         
                    t          j                             | j         ¦  «        ¦  «        d¦  «        | _        d S )N)ÚmaxlenT©Úexist_okzLATEST_INCIDENT.json)r   r   r   r   r   ÚbufferÚosÚmakedirsÚpathÚjoinÚdirnameÚabspathÚlatest_pointer_file)Úselfr   r   r   r   r   s         ú:C:\Projects\AutoPOE2\src\agentic_engine\flight_recorder.pyÚ__init__z!MultimodalFlightRecorder.__init__4   s“   € ð ,9Ð+D˜-˜-È*ˆŒØ ˆŒØ.ˆÔØ&<ˆÔ#Ý"¨(Ð3Ñ3Ô3ˆŒÝ
Œ�D”O¨dÐ3Ñ3Ô3Ð3Ý#%¤7§<¢<µ´·²ÅÄÇÂÐPTÔP_Ñ@`Ô@`Ñ0aÔ0aÐcyÑ#zÔ#zˆÔ Ð Ð ó    ÚsnapshotÚoptical_vitalsÚreturnc                 óÒ  — t          |d|¦  «        }t          |t          ¦  «        �r/|                     d|                     dd¦  «        ¦  «        }|                     dd¦  «        }|                     d|                     dd¦  «        ¦  «        }|                     dd¦  «        }|                     d	|                     d
d¦  «        ¦  «        }|                     dd¦  «        }	t	          |                     dd¦  «        pd¦  «        t	          |                     dd¦  «        pd¦  «        t	          |                     dd¦  «        pd¦  «        g}
nòt          |dt          |dd¦  «        ¦  «        }t          |dd¦  «        }t          |dt          |dd¦  «        ¦  «        }t          |dd¦  «        }t          |d	t          |d
d¦  «        ¦  «        }t          |dd¦  «        }	t	          t          |dd¦  «        pd¦  «        t	          t          |dd¦  «        pd¦  «        t	          t          |dd¦  «        pd¦  «        g}
t          |t          ¦  «        st          |dd¦  «        n)|                     d|                     dd¦  «        ¦  «        }t          |t          ¦  «        st          |dd¦  «        n|                     dd¦  «        }t          |t          ¦  «        st          |dd¦  «        n|                     dd¦  «        }t          |t          ¦  «        s2t          |dt          t          j        ¦   «         dz  ¦  «        ¦  «        n6|                     dt          t          j        ¦   «         dz  ¦  «        ¦  «        }||||||||	|
||t          |dd¦  «        t          |dd¦  «        t          |dd¦  «        dœ}| j                             |¦  «         dS )u5   LÆ°u trá»¯ 1 tick telemetry vÃ o sliding ring buffer.ÚplayerÚ
current_hpÚhpr   Úmax_hpÚ
current_esÚesÚmax_esÚcurrent_manaÚmanaÚmax_manaÚpos_xç        Úpos_yÚpos_zÚ	area_nameÚ ÚareaÚ
area_levelÚsnapshot_idÚtimestamp_mséè  NÚhp_ratio)r<   r=   r,   r-   r/   r0   r2   r3   Úpos_xyzr8   r;   Ú
optical_hpÚoptical_max_hpÚoptical_ratio)	ÚgetattrÚ
isinstanceÚdictÚgetÚfloatÚintÚtimer   Úappend)r"   r&   r'   ÚpÚcur_hpr-   Úcur_esr0   Úcur_manar3   Úxyzr8   r;   Úsnap_idÚts_msÚticks                   r#   Úrecord_tickz$MultimodalFlightRecorder.record_tickD   s%  € õ �H˜h¨Ñ1Ô1ˆÝ�a�ÑÔñ 	KØ—U’U˜<¨¯ª¨t°Q©¬Ñ8Ô8ˆFØ—U’U˜8 QÑ'Ô'ˆFØ—U’U˜<¨¯ª¨t°Q©¬Ñ8Ô8ˆFØ—U’U˜8 QÑ'Ô'ˆFØ—u’u˜^¨Q¯UªU°6¸1Ñ-=Ô-=Ñ>Ô>ˆHØ—u’u˜Z¨Ñ+Ô+ˆHÝ˜Ÿš˜w¨Ñ,Ô,Ð3°Ñ4Ô4µe¸A¿EºEÀ'È3Ñ<OÔ<OÐ<VÐSVÑ6WÔ6WÕY^Ð_`×_dÒ_dÐelÐnqÑ_rÔ_rÐ_yÐvyÑYzÔYzÐ{ˆCˆCå˜Q ­g°a¸¸qÑ.AÔ.AÑBÔBˆFÝ˜Q ¨!Ñ,Ô,ˆFÝ˜Q ­g°a¸¸qÑ.AÔ.AÑBÔBˆFÝ˜Q ¨!Ñ,Ô,ˆFÝ˜q .µ'¸!¸VÀQÑ2GÔ2GÑHÔHˆHÝ˜q *¨aÑ0Ô0ˆHÝ�  G¨SÑ1Ô1Ð8°SÑ9Ô9½5ÅÈÈGÐUXÑAYÔAYÐA`Ð]`Ñ;aÔ;aÕchÕipÐqrÐt{ð  ~Añ  jBô  jBð  jIð  FIñ  dJô  dJð  KˆCå>HÈÕSWÑ>XÔ>Xð  R•G˜H k°2Ñ6Ô6Ð6Ð^f×^jÒ^jÐkvð  yA÷  yEò  yEð  FLð  NPñ  yQô  yQñ  _Rô  _Rˆ	Ý?IÈ(ÕTXÑ?YÔ?YÐ|•W˜X |°QÑ7Ô7Ð7Ð_g×_kÒ_kÐlxÐz{Ñ_|Ô_|ˆ
Ý=GÈÕRVÑ=WÔ=WÐ{•'˜( M°1Ñ5Ô5Ð5Ð]e×]iÒ]iÐjwÐyzÑ]{Ô]{ˆÝR\Ð]eÕgkÑRlÔRlð  h•˜ .µ#µd´i±k´kÀDÑ6HÑ2IÔ2IÑJÔJÐJÐrz×r~Òr~ð  @Nõ  PSõ  TXô  T]ñ  T_ô  T_ð  bfñ  Tfñ  Pgô  Pgñ  shô  shˆð #Ø!ØØØØØØ ØØ"Ø$Ý! .°,ÀÑEÔEÝ% n°hÀÑEÔEÝ$ ^°ZÀÑFÔFð
ð 
ˆð  	Œ×Ò˜4Ñ Ô Ð Ð Ð r%   Úcountc                 ón   — t          | j        ¦  «        }|r|t          |¦  «        k     r|| d…         S |S )u)   Láº¥y danh sÃ¡ch cÃ¡c ticks gáº§n nháº¥t.N)Úlistr   Úlen)r"   rU   Úitemss      r#   Úget_recent_ticksz)MultimodalFlightRecorder.get_recent_tickss   s>   € å�T”[Ñ!Ô!ˆØð 	"�U�S ™ZœZÒ'Ð'Ø˜%˜˜˜”>Ð!Øˆr%   r9   Úincident_typeÚviolated_invariantsÚ	telemetryÚraw_screenshot_pathÚcorrelated_image_pathÚram_snapshotÚcore_log_linesÚcompanion_log_linesÚroot_cause_hintÚsuggested_fixc                 ó¬  — t          j         ¦   «         }t          j        ¦   «                              d¦  «        dd…         }d                     d„ |D ¦   «         ¦  «                             ¦   «         }d|› d|› �}t          j                             | j        |¦  «        }t          j	        |d¬	¦  «         t          j                             |d
¦  «        }t          j                             |d¦  «        }t          j                             |d¦  «        }t          j                             |d¦  «        }t          j                             |d¦  «        }t          j                             |d¦  «        }t          j                             |d¦  «        }|�|�n| 
                    dd¦  «        t          |dz  ¦  «        || 
                    d| 
                    dd¦  «        ¦  «        | 
                    d| 
                    dd¦  «        ¦  «        | 
                    dd¦  «        | 
                    d| 
                    dd¦  «        ¦  «        | 
                    dd¦  «        | 
                    d| 
                    dd¦  «        ¦  «        | 
                    dd¦  «        d œt          | 
                    d!d"¦  «        pd"¦  «        t          | 
                    d#d"¦  «        pd"¦  «        t          | 
                    d$d"¦  «        pd"¦  «        gd%œd&œd'œ}t          |d(d)¬*¦  «        5 }t          j        ||d+d,¬-¦  «         ddd¦  «         n# 1 swxY w Y   t          |d(d)¬*¦  «        5 }t          j        ||d+d,¬-¦  «         ddd¦  «         n# 1 swxY w Y   |rjt          j                             |¦  «        rK	 t#          j        ||¦  «         n4# t&          $ r'}t(                               d.|› �¦  «         Y d}~nd}~ww xY wt          j                             |¦  «        s|                      ||||¦  «         |rjt          j                             |¦  «        rK	 t#          j        ||¦  «         n4# t&          $ r'}t(                               d/|› �¦  «         Y d}~nd}~ww xY wt          j                             |¦  «        sL	 dd0lm}  ||||¦  «         n7# t&          $ r* 	 t#          j        ||¦  «         n# t&          $ r Y nw xY wY nw xY wt          |d(d)¬*¦  «        5 }|r1|                     d1                     |d2d…         ¦  «        ¦  «         n|                     d3¦  «         ddd¦  «         n# 1 swxY w Y   t          |d(d)¬*¦  «        5 }|r1|                     d1                     |d2d…         ¦  «        ¦  «         n|                     d4¦  «         ddd¦  «         n# 1 swxY w Y   | 
                    d5|¦  «        }| 
                    d6g ¦  «        }t5          |t6          ¦  «        rt9          |¦  «        nd}t;          | 
                    d| 
                    dd7¦  «        ¦  «        ¦  «        }|r|d         n|}t=          j
        |d8|› d9�¦  «        } i d:d;“d<d=“d>d?“d@|“dAt          j        ¦   «                              dB¦  «        “dCt          |dz  ¦  «        “dD|“dEdF“dG|| dFdH|	pdI|› �dJœ“dK|“dLdMdN|dO|                     ¦   «         v rdPndQdRdSœ“dT| 
                    dUdV¦  «        | 
                    dWdX¦  «        t          | 
                    d!d"¦  «        pd"¦  «        t          | 
                    d#d"¦  «        pd"¦  «        t          | 
                    d$d"¦  «        pd"¦  «        g| 
                    d| 
                    dd¦  «        ¦  «        | 
                    dd¦  «        | 
                    d| 
                    dd¦  «        ¦  «        | 
                    dd¦  «        | 
                    d| 
                    dd¦  «        ¦  «        | 
                    dd¦  «        d œ| 
                    dY|¦  «        | 
                    dZi ¦  «        d[œ“d\tA          d]„ |D ¦   «         ¦  «        pd^|v tA          d_„ |D ¦   «         ¦  «        pd`|v tA          da„ |D ¦   «         ¦  «        pdb|v dcœ“ddde| 
                    df| 
                    dfd¦  «        ¦  «        |dd,dgœ“dhd
dddddddiœ“dj|	pdkdl                     |¦  «        › �|
pdmdnœ“do|  !                    dp¦  «        “}!t          |d(d)¬*¦  «        5 }t          j        |!|d+d,¬-¦  «         ddd¦  «         n# 1 swxY w Y   	 ||t          j         "                    |¦  «        t          j         "                    |¦  «        t          j         "                    |¦  «        t          j         "                    |¦  «        t          j         "                    |¦  «        |t          j        ¦   «                              dq¦  «        ||| ||	pdr|› �dsœ}"| j#        › dt�}#t          |#d(d)¬*¦  «        5 }t          j        |"|d+d,¬-¦  «         ddd¦  «         n# 1 swxY w Y   t          j$        |#| j#        ¦  «         n4# t&          $ r'}t(                               du|› �¦  «         Y d}~nd}~ww xY w|  %                    ¦   «          t(           &                    dv|› dw|› d9�¦  «         |S )xu½   
        Ä�Ã³ng gÃ³i toÃ n bá»™ 6 artifacts sá»± cá»‘ vÃ o thÆ° má»¥c debug_harness/incidents/INCIDENT_<ts>_<type>/.
        Tráº£ vá»� Ä‘Æ°á»�ng dáº«n tá»‡p incident_dossier.json.
        z%Y%m%d_%H%M%S_%fNé   r9   c              3   óF   K  — | ]}|                      ¦   «         r|nd V — ŒdS )Ú_N)Úisalnum)Ú.0Úcs     r#   ú	<genexpr>z<MultimodalFlightRecorder.package_incident.<locals>.<genexpr>�   s3   è è € ÐMÐM¸! §¢¡¤Ð5˜A˜A°#ÐMÐMÐMÐMÐMÐMr%   Ú	INCIDENT_rh   Tr   zincident_dossier.jsonúscreenshot.pngzannotated_correlation.pngzram_dump.jsonúram_snapshot.jsonzcore_log_slice.txtzcompanion_log_slice.txtr<   r   r>   r8   r:   ÚUnknownr+   r,   r-   r.   r/   r0   r1   r2   r3   )r,   r-   r/   r0   r2   r3   r4   r5   r6   r7   )Úvitalsr@   )r8   Úplayer_state)r<   r=   r]   Úin_game_stateÚwúutf-8©Úencodingé   F)ÚindentÚensure_asciiu    Lá»—i sao chÃ©p raw screenshot: u"   Lá»—i sao chÃ©p correlated image: )Údraw_correlated_imageú
iÄÿÿÿu0   [CoreLog] KhÃ´ng cÃ³ log C++ Core trong buffer.
u=   [CompanionLog] KhÃ´ng cÃ³ log Python Companion trong buffer.
r*   ÚmonstersúSandswept MarshzArchitectural Invariant (ú)z$schemaz,https://json-schema.org/draft/2020-12/schemaÚschema_versionz1.0.0ÚtitleÚAutoPOE2_IncidentDossierÚincident_idÚtimestamp_isoz%Y-%m-%d %H:%M:%SÚtimestamp_unix_msr[   ÚseverityÚCRITICALÚ	violationi,  u   Vi pháº¡m báº¥t biáº¿n: )Úinvariant_codeÚinvariant_namer†   Úduration_msÚdescriptionr\   Úsystem_contextz0.5.5z2026-09-07_CORE_CLANG22Ú	sandsweptÚSWAMP_OUTDOOR_COMBATÚCOMBAT_ACTIVEÚCLICK_TO_MOVE)Úengine_versionÚcore_build_stampÚ	zone_nameÚ	zone_typeÚmovement_modeÚtelemetry_stateÚaddressÚ0x502654103E8Úxyz_addressÚ0x502657E0398Úmonsters_countÚoptical_state)Úplayer_addressrš   Úreported_xyzÚreported_vitalsrœ   r�   Úmemory_diagnosticsc              3   ó(   K  — | ]}t           |v V — Œd S ©N)r	   ©rj   Úvs     r#   rl   z<MultimodalFlightRecorder.package_incident.<locals>.<genexpr>  s*   è è € Ð2pÐ2pÐWXÕ3MÐQRÐ3RÐ2pÐ2pÐ2pÐ2pÐ2pÐ2pr%   Ú778c              3   ó(   K  — | ]}t           |v V — Œd S r£   )r   r¤   s     r#   rl   z<MultimodalFlightRecorder.package_incident.<locals>.<genexpr>  s(   è è € Ð*fÐ*fÈQÕ+CÀqÐ+HÐ*fÐ*fÐ*fÐ*fÐ*fÐ*fr%   ÚFROZENc              3   ó(   K  — | ]}t           |v V — Œd S r£   )r
   r¤   s     r#   rl   z<MultimodalFlightRecorder.package_incident.<locals>.<genexpr>  s)   è è € Ð2lÐ2lÐSTÕ3IÈQÐ3NÐ2lÐ2lÐ2lÐ2lÐ2lÐ2lr%   ÚOPTICAL)Úsuspected_pointer_pollutionÚfrozen_xyz_detectedÚoptical_ram_desync_detectedÚ
provenanceÚREAL_GAME_TELEMETRYÚpid)Úsourcer°   r:   Úrule_14_compliantÚis_synthetic_mockÚ	artifacts)Údossier_jsonÚ
screenshotÚannotated_correlationÚram_dumpr`   Úcore_log_sliceÚcompanion_log_sliceÚroot_cause_analysisu%   Vi pháº¡m báº¥t biáº¿n kiáº¿n trÃºc: ú, uZ   Ä�á»‘i soÃ¡t hÃ m xá»­ lÃ½ táº¡i Single Source of Logic vÃ  bá»• sung Invariant Assertion.)Úhintrd   Úrecent_ticksé   z%Y-%m-%dT%H:%M:%S+07:00u   Vi pháº¡m báº¥t biáº¿n )Úlatest_incident_idrƒ   Úfolder_pathÚincident_dirÚdossier_pathÚscreenshot_pathÚram_snapshot_pathÚ	timestampr„   Útyper‰   rŠ   r\   rŒ   z.tmpu)   Lá»—i cáº­p nháº­t LATEST_INCIDENT.json: u#   ðŸš¨ [INCIDENT DOSSIER Ä�Ãƒ Táº O] u
    (Loáº¡i: )'rJ   r   ÚnowÚstrftimer   Úupperr   r   r   r   rG   rI   rH   ÚopenÚjsonÚdumpÚexistsÚshutilÚcopyfileÚ	ExceptionÚloggerÚwarningÚ#_generate_fallback_diagnostic_imageÚ"src.assistant_tool.screen_capturerr{   ÚwriterE   rW   rX   Ústrr   ÚlowerÚanyrZ   r    r!   ÚreplaceÚ_rotate_old_incidentsÚcritical)$r"   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   Únow_tsÚtimestamp_strÚ	safe_typeÚfolder_namerÁ   Údossier_fileÚscreenshot_fileÚannotated_corr_fileÚram_dump_fileÚram_snapshot_fileÚcore_log_fileÚcompanion_log_fileÚram_dataÚfÚer{   rL   Ú	mobs_listÚ
mobs_countr”   Úprimary_violationÚinv_nameÚdossierÚlatest_metaÚtmp_pointer_files$                                       r#   Úpackage_incidentz)MultimodalFlightRecorder.package_incidentz   sF  € õ" ”‘”ˆÝ œ™œ×/Ò/Ð0BÑCÔCÀCÀRÀCÔHˆØ—G’GÐMÐM¸}ÐMÑMÔMÑMÔM×SÒSÑUÔUˆ	Ø= -Ð=Ð=°)Ð=Ð=ˆÝ”g—l’l 4¤?°KÑ@Ô@ˆÝ
Œ�K¨$Ð/Ñ/Ô/Ð/å”w—|’| KÐ1HÑIÔIˆÝœ'Ÿ,š, {Ð4DÑEÔEˆÝ œgŸlšl¨;Ð8SÑTÔTÐÝœŸš [°/ÑBÔBˆÝœGŸLšL¨Ð6IÑJÔJÐÝœŸš [Ð2FÑGÔGˆÝœWŸ\š\¨+Ð7PÑQÔQÐð $0Ð#;�<‘<Ø$Ÿ=š=¨¸Ñ:Ô:Ý ¨¡Ñ.Ô.Ø"à&Ÿ]š]¨;¸	¿ºÀfÈiÑ8XÔ8XÑYÔYð (Ÿmšm¨L¸)¿-º-ÈÈaÑ:PÔ:PÑQÔQØ"+§-¢-°¸!Ñ"<Ô"<Ø'Ÿmšm¨L¸)¿-º-ÈÈaÑ:PÔ:PÑQÔQØ"+§-¢-°¸!Ñ"<Ô"<Ø )§¢¨n¸i¿mºmÈFÐTUÑ>VÔ>VÑ WÔ WØ$-§M¢M°*¸aÑ$@Ô$@ðð õ ˜iŸmšm¨G°SÑ9Ô9Ð@¸SÑAÔAÝ˜iŸmšm¨G°SÑ9Ô9Ð@¸SÑAÔAÝ˜iŸmšm¨G°SÑ9Ô9Ð@¸SÑAÔAð ð!ð !ðð ð	B
ð B
ˆõ0 �- ¨wÐ7Ñ7Ô7ð 	A¸1ÝŒI�h ¨!¸%Ð@Ñ@Ô@Ð@ð	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	AåÐ# S°7Ð;Ñ;Ô;ð 	A¸qÝŒI�h ¨!¸%Ð@Ñ@Ô@Ð@ð	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	Að ð 	G¥2¤7§>¢>Ð2EÑ#FÔ#Fð 	GðGÝ”Ð 3°_ÑEÔEÐEÐEøÝð Gð Gð GÝ—’ÐEÀ!ÐEÐEÑFÔFÐFÐFÐFÐFÐFÐFøøøøðGøøøõ Œw�~Š~˜oÑ.Ô.ð 	oØ×4Ò4°_ÀmÐUbÐdmÑnÔnÐnð !ð 	I¥R¤W§^¢^Ð4IÑ%JÔ%Jð 	IðIÝ”Ð 5Ð7JÑKÔKÐKÐKøÝð Ið Ið IÝ—’ÐGÀAÐGÐGÑHÔHÐHÐHÐHÐHÐHÐHøøøøðIøøøõ Œw�~Š~Ð1Ñ2Ô2ð 	ðØTÐTÐTÐTÐTÐTØ%Ð% o°xÐATÑUÔUÐUÐUøÝð ð ð ðÝ”O OÐ5HÑIÔIÐIÐIøÝ ð ð ð Ø�Dðøøøøøðøøøõ �- ¨wÐ7Ñ7Ô7ð 	M¸1Øð MØ—’˜Ÿ	š	 .°°°Ô"6Ñ7Ô7Ñ8Ô8Ð8Ð8à—’ÐKÑLÔLÐLð		Mð 	Mð 	Mñ 	Mô 	Mð 	Mð 	Mð 	Mð 	Mð 	Mð 	Møøøð 	Mð 	Mð 	Mð 	Mõ Ð$ c°GÐ<Ñ<Ô<ð 	ZÀØ"ð ZØ—’˜Ÿ	š	Ð"5°c°d°dÔ";Ñ<Ô<Ñ=Ô=Ð=Ð=à—’ÐXÑYÔYÐYð		Zð 	Zð 	Zñ 	Zô 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zøøøð 	Zð 	Zð 	Zð 	Zð �MŠM˜( IÑ.Ô.ˆØ—L’L ¨RÑ0Ô0ˆ	Ý'1°)½TÑ'BÔ'BÐI•S˜‘^”^�^Èˆ
Ý˜	Ÿš k°9·=²=ÀÐIZÑ3[Ô3[Ñ\Ô\Ñ]Ô]ˆ	à6IÐ\Ð/°Ô2Ð2È}ÐÝ"Ô&Ð'8Ð:jÐVgÐ:jÐ:jÐ:jÑkÔkˆðE#
ØÐEðE#
à˜gðE#
ð Ð/ðE#
ð ˜;ð	E#
ð
 �Xœ\™^œ^×4Ò4Ð5HÑIÔIðE#
ð  ¥ V¨d¡]Ñ!3Ô!3ðE#
ð ˜]ðE#
ð ˜
ðE#
ð Ø"3Ø"*Ø&Ø"Ø.Ð`Ð2`ÐM^Ð2`Ð2`ðð ðE#
ð  "Ð#6ð!E#
ð" Ø")Ø$=Ø&Ø7BÀiÇoÂoÑFWÔFWÐ7WÐ7WÐ3Ð3Ð]lØ!0ðð ð#E#
ð0 Ø"#§%¢%¨	°?Ñ"CÔ"CØ Ÿušu ]°OÑDÔDå˜!Ÿ%š% ¨Ñ-Ô-Ð4°Ñ5Ô5Ý˜!Ÿ%š% ¨Ñ-Ô-Ð4°Ñ5Ô5Ý˜!Ÿ%š% ¨Ñ-Ô-Ð4°Ñ5Ô5ð!ð Ÿ%š% ¨a¯eªe°D¸!©n¬nÑ=Ô=ØŸeše H¨aÑ0Ô0ØŸ%š% ¨a¯eªe°D¸!©n¬nÑ=Ô=ØŸeše H¨aÑ0Ô0ØŸEšE .°!·%²%¸ÀÑ2BÔ2BÑCÔCØ !§¢ j°!Ñ 4Ô 4ð$ð $ð #,§-¢-Ð0@À*Ñ"MÔ"MØ!*§¢¨ÀÑ!CÔ!Cð# ð  ð1E#
ðV !Ý/2Ð2pÐ2pÐ\oÐ2pÑ2pÔ2pÑ/pÔ/pð  0KÐtyð  ~Kð  uKÝ'*Ð*fÐ*fÐReÐ*fÑ*fÔ*fÑ'fÔ'fð  (DÐjrð  wDð  kDÝ/2Ð2lÐ2lÐXkÐ2lÑ2lÔ2lÑ/lÔ/lð  0KÐpyð  ~Kð  qKð#ð #ðWE#
ð` Ø/Ø —}’} U¨H¯LªL¸ÀÑ,BÔ,BÑCÔCØ!Ø%)Ø%*ðð ðaE#
ðn Ø 7Ø.Ø)DØ+Ø 3Ø"6Ø'@ðð ðoE#
ð@ "Ø'ÐsÐ+sÐSW×S\ÒS\Ð]pÑSqÔSqÐ+sÐ+sØ!.ð  "Oð  3Oð$ð $ðAE#
ðH ˜D×1Ò1°"Ñ5Ô5ðIE#
ˆõN �, ¨gÐ6Ñ6Ô6ð 	@¸!ÝŒI�g˜q¨¸Ð?Ñ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð	Là&1Ø*Ý!œwŸš¨{Ñ;Ô;Ý "¤§¢°Ñ <Ô <Ý "¤§¢°Ñ =Ô =Ý#%¤7§?¢?°?Ñ#CÔ#CÝ%'¤W§_¢_Ð5FÑ%GÔ%GØ*Ý!)¤¡¤×!8Ò!8Ð9RÑ!SÔ!SØ%Ø"3Ø"*Ø':Ø.Ð_Ð2_ÐL]Ð2_Ð2_ðð ˆKð  #'Ô":Ð@Ð@Ð@ÐÝÐ&¨°gÐ>Ñ>Ô>ð HÀ!Ý”	˜+ q°ÀÐGÑGÔGÐGðHð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð HåŒJÐ'¨Ô)AÑBÔBÐBÐBøÝð 	Lð 	Lð 	LÝ�NŠNÐJÀqÐJÐJÑKÔKÐKÐKÐKÐKÐKÐKøøøøð	Løøøð 	×"Ò"Ñ$Ô$Ð$å�ŠÐe¸kÐeÐeÐUbÐeÐeÐeÑfÔfÐfØÐsÿ   Ì-MÍMÍMÍ/NÎNÎNÏO Ï
PÏ!PÐPÑ$Q: Ñ:
R+ÒR&Ò&R+ÓS" Ó"
TÓ-TÔTÔ
TÔTÔTÔTÔTÔ+A	V Ö VÖVÖA	W2×2W6×9W6æf-æ-f1æ4f1æ9C'k+ ê kê9k+ ëk	ë	k+ ëk	ëk+ ë+
lë5lìlc                 óà  ‡ — 	 t           j                             ‰ j        ¦  «        sdS ˆ fd„t          j        ‰ j        ¦  «        D ¦   «         }t          |¦  «        ‰ j        k    rQ|                     d„ ¬¦  «         |dt          |¦  «        ‰ j        z
  …         }|D ]}t          j	        |d¬¦  «         ŒdS dS # t          $ r(}t                               d|› �¦  «         Y d}~dS d}~ww xY w)uo   Thu dá»�n cÃ¡c thÆ° má»¥c sá»± cá»‘ cÅ© vÆ°á»£t quÃ¡ max_retained_incidents Ä‘á»ƒ chá»‘ng trÃ n Ä‘Ä©a (Rule 4).Nc                 ó  •— g | ]~}t           j                             t           j                             ‰j        |¦  «        ¦  «        ¯D|                     d ¦  «        ¯Yt           j                             ‰j        |¦  «        ‘ŒS )rm   )r   r   Úisdirr   r   Ú
startswith)rj   Údr"   s     €r#   ú
<listcomp>zBMultimodalFlightRecorder._rotate_old_incidents.<locals>.<listcomp>W  sz   ø€ ð ð ð àÝ”7—=’=¥¤§¢¨d¬o¸qÑ!AÔ!AÑBÔBðð HIÇ|Â|ÐT_ÑG`ÔG`ðÝ”—’˜Tœ_¨aÑ0Ô0ðð ð r%   c                 ó@   — t           j                             | ¦  «        S r£   )r   r   Úgetmtime)rL   s    r#   ú<lambda>z@MultimodalFlightRecorder._rotate_old_incidents.<locals>.<lambda>]  s   € ­2¬7×+;Ò+;¸AÑ+>Ô+>€ r%   )ÚkeyT)Úignore_errorsu(   Lá»—i thu dá»�n incident directory cÅ©: )r   r   rÎ   r   ÚlistdirrX   r   ÚsortrÏ   ÚrmtreerÑ   rÒ   rÓ   )r"   ÚentriesÚ	to_deleteÚold_dirrê   s   `    r#   rÛ   z.MultimodalFlightRecorder._rotate_old_incidentsR  s/  ø€ ð	KÝ”7—>’> $¤/Ñ2Ô2ð Ø�ðð ð ð åœ D¤OÑ4Ô4ðñ ô ˆGõ
 �7‰|Œ|˜dÔ9Ò9Ð9Ø—’Ð!>Ð!>�Ñ?Ô?Ð?Ø#Ð$P¥c¨'¡l¤l°TÔ5PÑ&PÐ$PÔQ�	Ø(ð ?ð ?�GÝ”M '¸Ð>Ñ>Ô>Ð>Ð>ð	 :Ð9ð?ð ?øåð 	Kð 	Kð 	KÝ�NŠNÐIÀaÐIÐIÑJÔJÐJÐJÐJÐJÐJÐJÐJøøøøð	Køøøs   ƒ$B; ©BB; Â;
C-ÃC(Ã(C-Ú
error_coderŒ   Úscreenshot_bytesr¸   c                 óL  — |rt          |d|¦  «        nd}t          |t          ¦  «        r|}nÅ|�Át          |dt          |dd¦  «        ¦  «        t          |dd¦  «        t          |dt          |dd¦  «        ¦  «        t          |d	d¦  «        t          |d
t          |dd¦  «        ¦  «        t          |dd¦  «        t          |dd¦  «        t          |dd¦  «        t          |dd¦  «        dœ	}ni }t          |t          ¦  «        st          |dd¦  «        n|                     dd¦  «        }	||	|rt          |dd¦  «        nd|rt          |dd¦  «        nddœ}
d}|rKddl}|                     dd¬¦  «        }|                     |¦  «         |                     ¦   «          |j        }	 |  	                    ||g|
|||¬¦  «        }|rEt          j                             |¦  «        r&	 t          j        |¦  «         n^# t          $ r Y nRw xY wnM# |rEt          j                             |¦  «        r'	 t          j        |¦  «         w # t          $ r Y w w xY ww w xY wt          j                             |¦  «        }t          j                             |d¦  «        }t          j                             |d¦  «        }t#          |dd¬ ¦  «        5 }t%          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   t          j                             |¦  «        ||||| j        |d!œS )"uv   
        Ä�Ã³ng gÃ³i há»“ sÆ¡ sá»± cá»‘ theo chuáº©n vÃ  tráº£ vá»� metadata Ä‘áº§y Ä‘á»§ cho test scenarios.
        r*   Nr+   r,   r   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   )	r,   r-   r/   r0   r2   r3   r4   r6   r7   r8   r~   r<   r°   iŒ…  )r*   r8   r<   r°   z.pngF)ÚsuffixÚdelete)r[   r\   r]   r^   r`   rc   rn   ro   Úrru   rv   )rƒ   rÂ   rÃ   rÄ   rÅ   Úlatest_incident_pathrï   )rD   rE   rF   rG   ÚtempfileÚNamedTemporaryFilerÖ   ÚcloseÚnamerò   r   r   rÎ   ÚremoverÑ   r   r   rË   rÌ   ÚloadÚbasenamer!   )r"   r  rŒ   r&   r'   r  r¸   rL   Úp_dataÚzoner]   Úraw_png_tempr  ÚtfrÃ   rÂ   rÄ   rÅ   ré   rï   s                       r#   Úexport_incidentz(MultimodalFlightRecorder.export_incidentd  sÆ  € ð 6>ÐG�G�H˜h¨Ñ1Ô1Ð1À4ˆÝ�a�ÑÔð 	ØˆFˆFØˆ]å˜a ­w°q¸$ÀÑ/BÔ/BÑCÔCÝ! ! X¨qÑ1Ô1Ý˜a ­w°q¸$ÀÑ/BÔ/BÑCÔCÝ! ! X¨qÑ1Ô1Ý  >µ7¸1¸fÀaÑ3HÔ3HÑIÔIÝ# A z°1Ñ5Ô5Ý   G¨SÑ1Ô1Ý   G¨SÑ1Ô1Ý   G¨SÑ1Ô1ð
ð 
ˆFˆFð ˆFåHRÐS[Õ]aÑHbÔHbð  U�w�x Ð.?Ñ@Ô@Ð@Ðhp×htÒhtð  vAð  CTñ  iUô  iUˆàØØBJÐQ�7 8¨]¸AÑ>Ô>Ð>ÐPQØ6>ÐI•7˜8 U¨EÑ2Ô2Ð2ÀEð	
ð 
ˆ	ð ˆØð 	#ØˆOˆOˆOØ×,Ò,°FÀ5Ð,ÑIÔIˆBØ�HŠHÐ%Ñ&Ô&Ð&Ø�HŠH‰JŒJˆJØœ7ˆLð	Ø×0Ò0Ø(Ø%/ LØ#Ø$0Ø%Ø +ð 1ñ ô ˆLð ð ¥¤§¢¨|Ñ <Ô <ð ðÝ”I˜lÑ+Ô+Ð+Ð+øÝ ð ð ð Ø�Dðøøøøøð ð ¥¤§¢¨|Ñ <Ô <ð ðÝ”I˜lÑ+Ô+Ð+Ð+øÝ ð ð ð Ø�Dðøøøðð øøøõ ”w—’ |Ñ4Ô4ˆÝœ'Ÿ,š, |Ð5EÑFÔFˆÝœGŸLšL¨Ð7JÑKÔKÐå�, ¨gÐ6Ñ6Ô6ð 	#¸!Ý”i ‘l”lˆGð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#õ œ7×+Ò+¨LÑ9Ô9Ø(Ø(Ø.Ø!2Ø$(Ô$<Øð
ð 
ð 	
sT   Æ,H Ç*G? Ç?
HÈHÈ"IÈ3IÉIÉ
IÉIÉIÉIËK/Ë/K3Ë6K3Úoutput_pathrÞ   c                 ó:  — 	 ddl m}m} d\  }}|                     d||fd¬¦  «        }	|                     |	¦  «        }
|
                     dd|dz
  |dz
  gdd	¬
¦  «         |
                     dd|› �d¬¦  «         |
                     dd|› d�d¬¦  «         d}|
                     d|fdd¬¦  «         |dz  }|                     d|¦  «        }d|                     d|                     dd¦  «        ¦  «        › d|                     dd¦  «        › �d|                     d|                     d d¦  «        ¦  «        › d|                     d!d¦  «        › �d"|                     d#|                     d$d¦  «        ¦  «        › d|                     d%d¦  «        › �d&|                     d'd¦  «        › d(|                     d)d¦  «        › d(|                     d*d¦  «        › d+�d,|                     d-|                     d.d/¦  «        ¦  «        › �g}|D ]!}|
                     d|f|d0¬¦  «         |d1z  }Œ"|	                     |d2¦  «         d4S # t          $ rH t          |d3¦  «        5 }|                     t          ¦  «         d4d4d4¦  «         Y d4S # 1 swxY w Y   Y d4S w xY w)5uW   Táº¡o áº£nh chuáº©n Ä‘oÃ¡n hiá»‡n trÆ°á»�ng náº¿u khÃ´ng thá»ƒ chá»¥p mÃ n hÃ¬nh Win32.r   )ÚImageÚ	ImageDraw)i   iÐ  ÚRGB)r¿   é   é*   )Úcolorr¿   )éï   éD   r   é   )ÚoutlineÚwidth)é#   r   u)   ðŸš¨ AutoPOE2 INCIDENT FLIGHT RECORDER - )Úfill)r$  é<   zTimestamp: z | Rule 14 Real Data)éâ   éè   éð   éd   r$  z--- Telemetry Snapshot ---)é8   é½   éø   r   r*   zHP: r+   r,   zN/Az / r-   zES: r.   r/   r0   zMana: r1   r2   r3   zXYZ: (r4   r¼   r6   r7   r   zArea: r8   r:   rp   )éË   éÕ   éá   é   ÚPNGÚwbN)ÚPILr  r  ÚnewÚDrawÚ	rectangleÚtextrG   ÚsaverÑ   rË   rÖ   ÚMINIMAL_VALID_PNG)r"   r  r[   rÞ   r]   r  r  rt   ÚhÚimgÚdrawÚyrL   ÚstatsÚsré   s                   r#   rÔ   z<MultimodalFlightRecorder._generate_fallback_diagnostic_image´  s/  € ð	+Ø,Ð,Ð,Ð,Ð,Ð,Ð,Ð,à‰DˆAˆqØ—)’)˜E A q 6°�)Ñ>Ô>ˆCØ—>’> #Ñ&Ô&ˆDà�NŠN˜B  A¨¡F¨A°©FÐ3¸]ÐRSˆNÑTÔTÐTØ�IŠI�hÐ [ÈMÐ [Ð [ÐboˆIÑpÔpÐpØ�IŠI�hÐ Q¨mÐ QÐ QÐ QÐXgˆIÑhÔhÐhàˆAØ�IŠI�r˜1�gÐ;À.ˆIÑQÔQÐQØ�‰GˆAà—’˜h¨	Ñ2Ô2ˆAà[�q—u’u˜\¨1¯5ª5°°uÑ+=Ô+=Ñ>Ô>Ð[Ð[À1Ç5Â5ÈÐSXÑCYÔCYÐ[Ð[Ø[�q—u’u˜\¨1¯5ª5°°uÑ+=Ô+=Ñ>Ô>Ð[Ð[À1Ç5Â5ÈÐSXÑCYÔCYÐ[Ð[Øc˜Ÿš˜~¨q¯uªu°V¸UÑ/CÔ/CÑDÔDÐcÐcÈÏÊÈzÐ[`ÑIaÔIaÐcÐcØW˜Ÿš˜w¨Ñ*Ô*ÐWÐW¨a¯eªe°G¸QÑ.?Ô.?ÐWÐWÀ1Ç5Â5ÈÐRSÑCTÔCTÐWÐWÐWØW˜Ÿš {°I·M²MÀ&È)Ñ4TÔ4TÑUÔUÐWÐWðˆEð ð ð �Ø—	’	˜2˜q˜' 1¨?�	Ñ;Ô;Ð;Ø�R‘��à�HŠH�[ %Ñ(Ô(Ð(Ð(Ð(øÝð 	+ð 	+ð 	+å�k 4Ñ(Ô(ð +¨AØ—’Õ)Ñ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð +ð +ð +ð	+øøøs6   ‚II ÉJÉ"JÉ=JÊJ	ÊJÊJ	ÊJÊJ)r   r   NNr   r£   )NNNNNr9   r9   )r(   N)NNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r×   rI   r   r   r$   rT   r   r   rZ   rò   rÛ   Úbytesr  rÔ   © r%   r#   r   r   /   sÞ  € € € € € ðð ð 4ØØ)-Ø'+Ø&(ð{ð {àð{ð ð{ð " #œð	{ð
   ”}ð{ð !$ð{ð {ð {ð {ð& )-ð-!ð -!àð-!ð ! œð-!ð 
ð	-!ð -!ð -!ð -!ð^ð  h¨s¤mð ¸tÀDÈÈcÈÄNÔ?Sð ð ð ð ð .2Ø/3Ø15Ø.2Ø37Ø!ØðVð VàðVð " #œYðVð ˜˜S˜”>ð	Vð
 & cœ]ðVð  (¨œ}ðVð ˜t C¨ Hœ~Ô.ðVð !  c¤Ô+ðVð & d¨3¤iÔ0ðVð ðVð ðVð 
ðVð Vð Vð VðpKð Kð Kð Kð, #'Ø(,Ø,0Ø-1ðN
ð N
àðN
ð ðN
ð ˜3”-ð	N
ð
 ! œðN
ð # 5œ/ðN
ð ˜4  S œ>Ô*ðN
ð 
ˆc�3ˆhŒðN
ð N
ð N
ð N
ð`'+àð'+ð ð'+ð ð	'+ð
 ˜˜S˜”>ð'+ð 
ð'+ð '+ð '+ð '+ð '+ð '+r%   )rD  rÌ   Úloggingr   rÏ   rJ   Úcollectionsr   r   Útypingr   r   r   r   Ú%src.agentic_engine.invariant_sentinelr	   r
   r   r   Ú	getLoggerrÒ   r:  r   ÚMultimodalIncidentRecorderrF  r%   r#   ú<module>rM     s   ððð ð( €€€Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð 
ˆÔ	Ð5Ñ	6Ô	6€ð?ð ðl+ð l+ð l+ð l+ð l+ñ l+ô l+ð l+ð` 6Ð Ð Ð r%   