§
    í=ºjX  ã                   óœ   — d Z ddlZddlZddlmZmZmZmZ ddlm	Z	 ddl
mZmZmZmZ ddlmZ  ej        d¦  «        Z G d„ d¦  «        ZdS )	uÍ   
AutoPOE2 - Realtime Watcher
Ä�iá»�u phá»‘i viÃªn giÃ¡m sÃ¡t thá»�i gian thá»±c káº¿t ná»‘i Invariant Sentinel, Multimodal Flight Recorder
vÃ  báº£o toÃ n sinh má»‡nh Ä‘á»™c láº­p (Co-Pilot Passive Mode).
é    N)ÚAnyÚListÚOptionalÚTuple)ÚMultimodalFlightRecorder)ÚERR_OPTICAL_RAM_DESYNCÚERR_WATCHDOG_HEARTBEAT_LOSTÚERR_XYZ_FROZENÚInvariantSentinel)ÚCoreTelemetrySnapshotÚRealtimeWatcherc                   óè   — e Zd ZdZ	 	 ddee         dee         fd„Zdede	fd„Z
d	e	ddfd
„Zddee         ddfd„Zddee         dede	fd„Z	 	 	 ddedee         d	ee	         de	dee         f
d„ZdS )r   u]   
    NgÆ°á»�i giÃ¡m sÃ¡t thá»�i gian thá»±c tá»± hÃ nh (Autonomous Closed-Loop Watcher).
    NÚsentinelÚflight_recorderc                 ó  — |pt          ¦   «         | _        |pt          ¦   «         | _        d| _        d| _        t          t          j        ¦   «         dz  ¦  «        | _        d| _	        d| _
        g | _        i | _        d| _        d S )N©ç        r   r   Féè  g      @)r   r   r   r   Úlast_known_xyzÚ	is_movingÚintÚtimeÚlast_heartbeat_msÚis_copilot_passiveÚrequest_stopÚactive_errorsÚ_last_incident_timeÚincident_debounce_s)Úselfr   r   s      ú;C:\Projects\AutoPOE2\src\agentic_engine\realtime_watcher.pyÚ__init__zRealtimeWatcher.__init__   sƒ   € ð
 !Ð7Õ$5Ñ$7Ô$7ˆŒØ.ÐLÕ2JÑ2LÔ2LˆÔà:IˆÔØ$ˆŒÝ&)­$¬)©+¬+¸Ñ*<Ñ&=Ô&=ˆÔØ(-ˆÔØ"'ˆÔØ(*ˆÔØ57ˆÔ Ø*-ˆÔ Ð Ð ó    Úerr_codeÚreturnc                 ó–   — t          j         ¦   «         }| j                             |d¦  «        }||z
  | j        k     rdS || j        |<   dS )u\   Kiá»ƒm tra thá»�i gian há»“i debounce trÆ°á»›c khi xuáº¥t incident má»›i (trÃ¡nh flood I/O).r   FT)r   r   Úgetr   )r   r#   ÚnowÚlasts       r    Ú_should_export_incidentz'RealtimeWatcher._should_export_incident-   sN   € åŒi‰kŒkˆØÔ'×+Ò+¨H°cÑ:Ô:ˆØ�‰:˜Ô0Ò0Ð0Ø�5Ø-0ˆÔ  Ñ*Øˆtr"   r   c                 ó   — || _         dS )u0   Cáº­p nháº­t cá»� di chuyá»ƒn cá»§a nhÃ¢n váº­t.N)r   )r   r   s     r    Ú
set_movingzRealtimeWatcher.set_moving6   s   € à"ˆŒˆˆr"   Únow_msc                 ó²   — |�|n"t          t          j        ¦   «         dz  ¦  «        | _        | j        r#t                               d¦  «         d| _        dS dS )u=   Cáº­p nháº­t má»‘c nhá»‹p tim má»›i nháº¥t tá»« agent/client.Nr   ug   [Watcher] Nhá»‹p tim phá»¥c há»“i -> KhÃ´i phá»¥c cháº¿ Ä‘á»™ Tá»± HÃ nh Ä�áº§y Ä�á»§ (Full Autonomous)F)r   r   r   r   ÚloggerÚinfo)r   r,   s     r    Úupdate_heartbeatz RealtimeWatcher.update_heartbeat:   si   € à+1Ð+=  Å3ÅtÄyÁ{Ä{ÐUYÑGYÑCZÔCZˆÔØÔ"ð 	,Ý�KŠKð  Bñ  Cô  Cð  CØ&+ˆDÔ#Ð#Ð#ð	,ð 	,r"   é¸  Ú
timeout_msc                 ót  — |�|n"t          t          j        ¦   «         dz  ¦  «        }| j                             | j        ||¦  «        \  }}}|s5d| _        d| _        |r#|| j        vr| j                             |¦  «         dS d| _        t          | j        v r| j         
                    t          ¦  «         dS )u¯   
        Kiá»ƒm tra tráº¡ng thÃ¡i nhá»‹p tim theo INV-WDG-01.
        Náº¿u timeout (>3000ms), chuyá»ƒn sang Co-Pilot Passive, TUYá»†T Ä�á»�I KHÃ”NG set request_stop.
        Nr   TF)r   r   r   Úevaluate_watchdogr   r   r   r   Úappendr	   Úremove)r   r,   r2   Úcurrent_timeÚvalidr#   Údescs          r    Úcheck_watchdogzRealtimeWatcher.check_watchdogA   sË   € ð
 "(Ð!3�v�v½½T¼Y¹[¼[È4Ñ=OÑ9PÔ9PˆØ $¤× ?Ò ?ØÔ" L°*ñ!
ô !
Ñˆˆx˜ð ð 	Ø&*ˆDÔ#à %ˆDÔØð 4˜H¨DÔ,>Ð>Ð>ØÔ"×)Ò)¨(Ñ3Ô3Ð3Ø�5à"'ˆÔÝ&¨$Ô*<Ð<Ð<ØÔ×%Ò%Õ&AÑBÔBÐBØˆtr"   TÚsnapshotÚoptical_vitalsÚtrigger_incident_exportc           
      ó¢  — |�|| _         g }| j                             ||¦  «         | j                             |¦  «        \  }}}|so|rm|                     |¦  «         || j        vr| j                             |¦  «         |r3|                      |¦  «        r| j                             ||||¬¦  «         |j	        }	|	j
        |	j        |	j        f}
| j        dk    s| j         rÊ| j                             | j        |
| j         ¬¦  «        \  }}}|sp|rn|                     |¦  «         || j        vr| j                             |¦  «         |r3|                      |¦  «        r| j                             ||||¬¦  «         n-t          | j        v r| j                             t          ¦  «         |
| _        |��t#          |dd¦  «        dk    �r|j        }|	j        }t'          |	j        t#          |dd¦  «        ¦  «        }| j                             |||t#          |dd¦  «        ¬	¦  «        \  }}}|sp|rn|                     |¦  «         || j        vr| j                             |¦  «         |r3|                      |¦  «        r| j                             ||||¬¦  «         n-t,          | j        v r| j                             t,          ¦  «         |S )
u  
        Ä�á»‘i soÃ¡t toÃ n diá»‡n 1 khung Telemetry Snapshot vá»›i Invariant Matrix:
        1. Vitals Bound & Anti-778
        2. XYZ Vector3 Tracking (há»— trá»£ chuyá»ƒn Ä‘á»™ng máº·t pháº³ng 2D Sandswept Marsh)
        3. Optical vs RAM Coherence
        N)Ú
error_codeÚdescriptionr;   r<   r   )Úprev_xyzÚcurr_xyzr   Ú
current_hpr   Úmax_hpÚhp_ratio)Ú
optical_hpÚram_hprD   Úoptical_ratio)r   r   Úrecord_tickr   Úevaluate_vitalsr5   r   r)   Úexport_incidentÚplayerÚpos_xÚpos_yÚpos_zr   Úverify_xyz_movementr
   r6   ÚgetattrrC   ÚmaxrD   Úevaluate_optical_vs_ramr   )r   r;   r<   r   r=   Údetected_errorsÚ	vitals_okÚ
vitals_errÚvitals_descÚprB   Úxyz_okÚxyz_errÚxyz_descÚopt_hprG   rD   Úopt_okÚopt_errÚopt_descs                       r    Úprocess_telemetryz!RealtimeWatcher.process_telemetryX   sS  € ð Ð Ø&ˆDŒNà%'ˆð 	Ô×(Ò(¨°>ÑBÔBÐBð .2¬]×-JÒ-JÈ8Ñ-TÔ-TÑ*ˆ	�:˜{Øð 
	˜Zð 
	Ø×"Ò" :Ñ.Ô.Ð.Ø Ô!3Ð3Ð3ØÔ"×)Ò)¨*Ñ5Ô5Ð5Ø&ð ¨4×+GÒ+GÈ
Ñ+SÔ+Sð ØÔ$×4Ò4Ø)Ø +Ø%Ø#1ð	 5ñ ô ð ð ŒOˆØ”G˜QœW a¤gÐ.ˆð Ô /Ò1Ð1°T´^Ð1Ø(,¬×(IÒ(IØÔ,Ø!Øœ.ð )Jñ )ô )Ñ%ˆF�G˜Xð
 ð >˜gð >Ø×&Ò& wÑ/Ô/Ð/Ø $Ô"4Ð4Ð4ØÔ&×-Ò-¨gÑ6Ô6Ð6Ø*ð ¨t×/KÒ/KÈGÑ/TÔ/Tð ØÔ(×8Ò8Ø#*Ø$,Ø!)Ø'5ð	 9ñ ô ð øõ " TÔ%7Ð7Ð7ØÔ&×-Ò-­nÑ=Ô=Ð=à&ˆÔð Ñ%­'°.À,ÐPQÑ*RÔ*RÐUVÒ*VÑ*VØ#Ô.ˆFØ”\ˆFÝ˜œ¥7¨>¸8ÀQÑ#GÔ#GÑHÔHˆFà(,¬×(MÒ(MØ!ØØÝ% n°jÀ$ÑGÔGð	 )Nñ )ô )Ñ%ˆF�G˜Xð ð F˜gð FØ×&Ò& wÑ/Ô/Ð/Ø $Ô"4Ð4Ð4ØÔ&×-Ò-¨gÑ6Ô6Ð6Ø*ð ¨t×/KÒ/KÈGÑ/TÔ/Tð ØÔ(×8Ò8Ø#*Ø$,Ø!)Ø'5ð	 9ñ ô ð øõ *¨TÔ-?Ð?Ð?ØÔ&×-Ò-Õ.DÑEÔEÐEàÐr"   )NN)N)Nr1   )NNT)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r!   ÚstrÚboolr)   r+   r   r0   r:   r   r   r   r`   © r"   r    r   r      sk  € € € € € ðð ð 15Ø>Bð.ð .àÐ,Ô-ð.ð "Ð":Ô;ð.ð .ð .ð .ð"°ð ¸ð ð ð ð ð# Dð #¨Tð #ð #ð #ð #ð,ð , x°¤}ð ,Àð ,ð ,ð ,ð ,ðð  X¨c¤]ð Àsð ÐVZð ð ð ð ð4 )-Ø$(Ø(,ð[ð [à'ð[ð ! œð[ð ˜D”>ð	[ð
 "&ð[ð 
ˆcŒð[ð [ð [ð [ð [ð [r"   )rd   Úloggingr   Útypingr   r   r   r   Ú"src.agentic_engine.flight_recorderr   Ú%src.agentic_engine.invariant_sentinelr   r	   r
   r   Ú"src.assistant_tool.core_shm_bridger   Ú	getLoggerr.   r   rg   r"   r    ú<module>rn      sù   ððð ð €€€Ø €€€Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -à GÐ GÐ GÐ GÐ GÐ Gðð ð ð ð ð ð ð ð ð ð ð ð EÐ DÐ DÐ DÐ DÐ Dà	ˆÔ	Ð,Ñ	-Ô	-€ð\ð \ð \ð \ð \ñ \ô \ð \ð \ð \r"   