§
    ¦jƒ1  ã                   óH  — d Z ddlZddlZddlZddlZddlmZmZ ddlZddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ ej        dee ef         fd„¦   «         Z!dee ef         fd	„Z"d
„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0dS )u  
Bá»™ Kiá»ƒm Thá»­ Tá»± Ä�á»™ng Cho Module AgentWatcherSentinel (Headless Mock Harness & Invariant Gate)
TuÃ¢n thá»§ nghiÃªm ngáº·t:
- Rule 8: Triá»‡t tiÃªu sá»­a lá»—i triá»‡u chá»©ng.
- Rule 9: Cá»•ng kiá»ƒm thá»­ Ä‘á»‘i chiáº¿u Ä‘á»™c láº­p (Verification Gate).
- Rule 11: PhÃ²ng ngá»«a há»“i quy báº±ng Mock Harness tá»± Ä‘á»™ng.
- Rule 13: VÃ²ng láº·p tá»± sá»­a lá»—i khÃ©p kÃ­n (Autonomous 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).
é    N)ÚAnyÚDict)ÚALL_INVARIANT_CODESÚERR_BOGUS_VITAL_STRUCT_778ÚERR_CORE_DISCONNECTEDÚERR_CORE_LOG_FATAL_EXCEPTIONÚERR_CURRENT_ES_EXCEEDS_MAXÚERR_ES_OVERFLOW_0x7FFBÚERR_HP_EXCEEDS_MAXÚERR_MANA_BOGUS_STRUCT_779ÚERR_MANA_EXCEEDS_MAXÚERR_OPTICAL_RAM_DESYNCÚERR_PLAYER_DEAD_OR_ZEROÚERR_WATCHDOG_HEARTBEAT_TIMEOUTÚERR_XYZ_FROZEN_AT_ORIGINÚERR_XYZ_OUT_OF_BOUNDSÚERR_XYZ_TELEPORT_ANOMALYÚINVARIANT_NAMESÚInvariantSentinelÚInvariantViolation)ÚAgentWatcherSentinelÚMultimodalIncidentRecorderÚreturnc            
      óä   — d} t           j                             | ¦  «        r@t          | dd¬¦  «        5 }t	          j        |¦  «        }|cddd¦  «         S # 1 swxY w Y   dddddd	d
dddœ	dddœS )u8   Náº¡p snapshot RAM thá»±c táº¿ tá»« captures/ (Rule 14).z/captures/20260906_150921_501_TEST_SYNC_RAM.jsonÚrúutf-8©ÚencodingNéJ  r   é4   éÑ   çfffffŒÀ@ç     ¿@ç        )	ÚhpÚmax_hpÚesÚmax_esÚmanaÚmax_manaÚpos_xÚpos_yÚpos_zéŒ…  úSandswept Marsh)ÚplayerÚpidÚ	area_name)ÚosÚpathÚexistsÚopenÚjsonÚload)ÚcandÚfÚress      ú0C:\Projects\AutoPOE2\tests\test_agent_watcher.pyÚreal_ram_capturer=   -   sÙ   € ð =€DÝ	„w‡~‚~�dÑÔð Ý�$˜ gÐ.Ñ.Ô.ð 	°!Ý"&¤)¨A¡,¤,ˆCØð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð
 ØØØØØØØØð

ð 

ð Ø&ðð ð s   ´AÁAÁAr=   c                 ód   — | d         }t          j        |¦  «        }|g k    sJ d|› �¦   «         ‚dS )uQ   Tháº©m tra vitals tá»« snapshot thá»±c táº¿ pháº£i hoÃ n toÃ n há»£p lá»‡ (PASS).r0   u=   Dá»¯ liá»‡u RAM tháº­t khÃ´ng Ä‘Æ°á»£c bÃ¡o lá»—i vi pháº¡m: N)r   Úcheck_vitals_invariants)r=   ÚpÚerrss      r<   Ú&test_vitals_invariants_valid_real_datarB   F   s=   € à˜Ô"€AÝÔ4°QÑ7Ô7€DØ�2Š:ˆ:ˆ:Ð]ÐW[Ð]Ð]‰:Œ:ˆ:ˆ:ˆ:ó    c                  óh   — dddddœ} t          j        | ¦  «        }t          |v sJ ‚t          |v sJ ‚dS )uK   Tháº©m tra bá»™ lá»�c cháº·n mÃ£ UI Entity Marker 778/778 vÃ  Mana 779/779.i
  i  ©Ú
current_hpr&   Úcurrent_manar*   N)r   r?   r   r   )Úcorrupt_staterA   s     r<   Ú(test_vitals_invariants_rejects_bogus_778rI   M   sV   € ð ØØØð	ð €Mõ Ô4°]ÑCÔC€DÝ%¨Ð-Ð-Ð-Ð-Ý$¨Ð,Ð,Ð,Ð,Ð,Ð,rC   c                  óR   — dddddœ} t          j        | ¦  «        }t          |v sJ ‚dS )uR   Tháº©m tra phÃ¡t hiá»‡n rÃ¡c vertex ES = 32763 (0x7FFB tá»« core_log dump tháº­t).iá  iû  é6   )rF   r&   Ú
current_esr(   N)r   r?   r
   ©ÚstaterA   s     r<   Ú0test_vitals_invariants_rejects_es_overflow_32763rO   Z   sE   € ð ØØØð	ð €Eõ Ô4°UÑ;Ô;€DÝ! TÐ)Ð)Ð)Ð)Ð)Ð)rC   c                  ó‚   — dddddddœ} t          j        | ¦  «        }t          |v sJ ‚t          |v sJ ‚t          |v sJ ‚dS )	uC   Tháº©m tra phÃ¡t hiá»‡n Current HP/Mana/ES vÆ°á»£t quÃ¡ Max bounds.éô  i�  i,  éÈ   é–   éd   )rF   r&   rG   r*   rL   r(   N)r   r?   r   r   r	   rM   s     r<   Ú*test_vitals_invariants_current_exceeds_maxrU   f   sm   € ð ØØØØØðð €Eõ Ô4°UÑ;Ô;€DÝ Ð%Ð%Ð%Ð%Ý 4Ð'Ð'Ð'Ð'Ý%¨Ð-Ð-Ð-Ð-Ð-Ð-rC   c            
      óN   — t          j        dddddddd¬¦  «        } | g k    sJ ‚d	S )
u^   Tháº©m tra chuyá»ƒn Ä‘á»™ng pháº³ng Sandswept Marsh (dZ=0, dX|dY > 0) khÃ´ng bá»‹ loáº¡i bá»�.g    €�À@g     ¿@r$   r/   é   T)r"   r#   r$   )r+   r,   r-   r2   Úmonsters_countÚ	is_movingÚstationary_duration_secÚlast_posN)r   Úcheck_xyz_invariants©rA   s    r<   Ú!test_xyz_invariants_planar_motionr^   v   sD   € åÔ1ØØØØ#ØØØ #Ø&ð	ñ 	ô 	€Dð �2Š:ˆ:ˆ:ˆ:ˆ:ˆ:rC   c            	      óœ   — t          j        dddddd¬¦  «        } t          | v sJ ‚t          j        ddddddd¬	¦  «        }t          |v sJ ‚d
S )u\   Tháº©m tra báº¯t lá»—i káº¹t (0,0,0) khi Ä‘ang á»Ÿ trong combat zone hoáº·c cÃ³ quÃ¡i váº­t.r$   r/   é   F)r+   r,   r-   r2   rX   rY   r   Tg      @)r+   r,   r-   r2   rX   rY   rZ   N)r   r\   r   )Úerrs_with_mobsÚerrs_stationary_combats     r<   Ú3test_xyz_invariants_catches_frozen_origin_in_combatrc   …   s…   € å&Ô;ØØØØ#ØØðñ ô €Nõ $ ~Ð5Ð5Ð5Ð5å.ÔCØØØØ#ØØØ #ðñ ô Ðõ $Ð'=Ð=Ð=Ð=Ð=Ð=Ð=rC   c                  ó  — t          j        t          d¦  «        dd¬¦  «        } t          | v sJ ‚t          j        dt          d¦  «        d¬¦  «        }t          |v sJ ‚t          j        ddd¬¦  «        }t          |v sJ ‚dS )u5   Tháº©m tra kiá»ƒm tra NaN, Inf vÃ  biÃªn báº£n Ä‘á»“.Únanç      Y@r$   )r+   r,   r-   Úinfg     ½ï@N)r   r\   Úfloatr   )Úerrs_nanÚerrs_infÚerrs_oobs      r<   Ú1test_xyz_invariants_catches_nan_inf_out_of_boundsrl   �   s§   € å Ô5Ý�E‰lŒl %¨sðñ ô €Hõ ! HÐ,Ð,Ð,Ð,å Ô5Ø�5 ™<œ<¨sðñ ô €Hõ ! HÐ,Ð,Ð,Ð,å Ô5Ø˜U¨#ðñ ô €Hõ ! HÐ,Ð,Ð,Ð,Ð,Ð,rC   c                  óˆ   — t          j        ddd¬¦  «        } t          | v sJ ‚t          j        ddd¬¦  «        }|g k    sJ ‚dS )u[   Tháº©m tra báº¯t lá»—i lá»‡ch pha Screen HP (quang há»�c) vÃ  RAM HP vÆ°á»£t ngÆ°á»¡ng 10%.g     @U@rf   g      $@)Ú
ram_hp_pctÚoptical_hp_pctÚthreshold_pctg      X@N)r   Úcheck_optical_crosscheckr   )Úerrs_desyncÚ	errs_syncs     r<   Útest_optical_crosscheckrt   ¯   sh   € õ $Ô<Ø¨¸Tðñ ô €Kõ " [Ð0Ð0Ð0Ð0õ "Ô:Ø¨¸Tðñ ô €Ið ˜Š?ˆ?ˆ?ˆ?ˆ?ˆ?rC   c                  óä   — t          t          j        ¦   «         dz  ¦  «        } t          j        | dz
  dd| ¬¦  «        }t          |v sJ ‚t          j        | dz
  dd| ¬¦  «        }t
          |v sJ ‚dS )	uN   Tháº©m tra báº¯t lá»—i Watchdog timeout (>3000ms) vÃ  Core ngáº¯t káº¿t ná»‘i.iè  i   Ti¸  )Úlast_heartbeat_msÚcore_is_onlineÚ
timeout_msÚnow_msrQ   FN)ÚintÚtimer   Úcheck_watchdog_invariantsr   r   )ry   Úerrs_timeoutÚerrs_disconnects      r<   Útest_watchdog_invariantsr   ¾   s”   € å•”‘”˜tÑ#Ñ$Ô$€FÝ$Ô>Ø  4™-ØØØð	ñ ô €Lõ *¨\Ð9Ð9Ð9Ð9å'ÔAØ  3™,ØØØð	ñ ô €Oõ ! OÐ3Ð3Ð3Ð3Ð3Ð3rC   c                  ól   — ddg} t          j        | ¦  «        }t          d„ |D ¦   «         ¦  «        sJ ‚dS )uA   Tháº©m tra quÃ©t cÃ¡c dÃ²ng fatal, crash, c0000005 tá»« log Core.z2[Status] Snapshots=100 | HP=737/737 | Agent=ONLINEzH[FATAL] Access Violation (0xC0000005) reading address 0x0 at Core.cpp:88c              3   ó(   K  — | ]}t           |v V — Œd S )N)r   )Ú.0Úes     r<   ú	<genexpr>z*test_log_error_scanning.<locals>.<genexpr>Ù   s(   è è € Ð?Ð?°QÕ+¨qÐ0Ð?Ð?Ð?Ð?Ð?Ð?rC   N)r   Úcheck_log_errorsÚany)ÚlinesrA   s     r<   Útest_log_error_scanningrˆ   Ò   sL   € ð 	=ØRð€Eõ Ô-¨eÑ4Ô4€DÝÐ?Ð?¸$Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?rC   c            
      ó´  — t          j        ¦   «         5 } t          j                             | dd¦  «        }t          |¬¦  «        }dddddœdd	d
œ}|                     ddg|ddgdgdd¬¦  «        }t          j                             |¦  «        sJ ‚t          j                             |¦  «        }g d¢}|D ]N}t          j                             ||¦  «        }t          j                             |¦  «        sJ d|› �¦   «         ‚ŒOt          j                             | dd¦  «        }	t          j                             |	¦  «        sJ ‚t          |	dd¬¦  «        5 }
t          j        |
¦  «        }ddd¦  «         n# 1 swxY w Y   |d         dk    sJ ‚|d         t          j                             |¦  «        k    sJ ‚	 ddd¦  «         dS # 1 swxY w Y   dS )ul   Tháº©m tra Ä‘Ã³ng gÃ³i Ä‘áº§y Ä‘á»§ 6 artifacts trong thÆ° má»¥c sá»± cá»‘ vÃ  cáº­p nháº­t LATEST_INCIDENT.Údebug_harnessÚ	incidents)Úincidents_dirr   r"   r#   )r%   r&   r+   r,   r/   r.   )r0   r2   r1   ÚUNIT_TEST_ANOMALYzINV-TEST-01z[Core Log Line 1]z[Core Log Line 2]z[Companion Log Line 1]zTest packaging dossierzVerify all files created)Úincident_typeÚviolated_invariantsÚ	telemetryÚcore_log_linesÚcompanion_log_linesÚroot_cause_hintÚsuggested_fix)zincident_dossier.jsonzscreenshot.pngzannotated_correlation.pngzram_dump.jsonzcore_log_slice.txtzcompanion_log_slice.txtu   Thiáº¿u tá»‡p artifact: zLATEST_INCIDENT.jsonr   r   r   NÚtypeÚlatest_incident_id)ÚtempfileÚTemporaryDirectoryr3   r4   Újoinr   Úpackage_incidentr5   Údirnamer6   r7   r8   Úbasename)ÚtmpdirrŒ   Úrecorderr�   Údossier_pathÚfolderÚexpected_filesr:   r@   Úlatest_fileÚlfÚlatest_datas               r<   Ú2test_multimodal_flight_recorder_incident_packagingr¥   Ü   s‹  € å	Ô	$Ñ	&Ô	&ð *M¨&ÝœŸš V¨_¸kÑJÔJˆÝ-¸MÐJÑJÔJˆð !¨C¸&È6ÐRÐRØ*Øð
ð 
ˆ	ð  ×0Ò0Ø-Ø!. ØØ/Ð1DÐEØ!9Ð :Ø4Ø4ð 1ñ 
ô 
ˆõ Œw�~Š~˜lÑ+Ô+Ð+Ð+Ð+Ý”—’ Ñ.Ô.ˆð
ð 
ð 
ˆð  ð 	Eð 	EˆAÝ”—’˜V QÑ'Ô'ˆAÝ”7—>’> !Ñ$Ô$ÐDÐDÐ&DÀÐ&DÐ&DÑDÔDÐ$ÐDõ ”g—l’l 6¨?Ð<RÑSÔSˆÝŒw�~Š~˜kÑ*Ô*Ð*Ð*Ð*Ý�+˜s¨WÐ5Ñ5Ô5ð 	(¸Ýœ) B™-œ-ˆKð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(à˜6Ô"Ð&9Ò9Ð9Ð9Ð9ØÐ/Ô0µB´G×4DÒ4DÀVÑ4LÔ4LÒLÐLÐLÐLÐLðU*Mð *Mð *Mñ *Mô *Mð *Mð *Mð *Mð *Mð *Mð *Mð *Møøøð *Mð *Mð *Mð *Mð *Mð *Ms6   ”EGÅE;Å/GÅ;E?	Å?GÆE?	Æ<GÇGÇGc            	      ó  — t          j        ¦   «         5 } t          ddd¬¦  «        }t          d¦  «        D �]\}t          j                             | d|› d�¦  «        }t          j                             | d|› d�¦  «        }t          j                             | d|› d	�¦  «        }|||fD ]?}t          |d
¦  «        5 }|                     d¦  «         ddd¦  «         n# 1 swxY w Y   Œ@|j	         
                    |||g¦  «         t          |j	        ¦  «        |j        k    rn|j	                             ¦   «         }|D ]5}	t          j                             |	¦  «        rt	          j        |	¦  «         Œ6t          |j	        ¦  «        |j        k    °n�Œ^t          |j	        ¦  «        dk    sJ ‚t          j                             t          j                             | d¦  «        ¦  «        rJ ‚t          j                             t          j                             | d¦  «        ¦  «        rJ ‚t          j                             t          j                             | d¦  «        ¦  «        sJ ‚	 ddd¦  «         dS # 1 swxY w Y   dS )uh   Tháº©m tra cÆ¡ cháº¿ xoay vÃ²ng giá»¯ tá»‘i Ä‘a 20 snapshot (á»Ÿ Ä‘Ã¢y test vá»›i max=3) trong Dev mode.gš™™™™™¹?g{®Gáz„?é   )Úpoll_intervalÚflight_recorder_intervalÚmax_dev_snapshotsr`   Úsnap_z.pngz.jsonz	_RAM.jsonÚwÚdataNz
snap_0.pngz
snap_1.pngz
snap_4.png)r—   r˜   r   Úranger3   r4   r™   r6   ÚwriteÚdev_snapshotsÚappendÚlenrª   Úpopleftr5   Úremove)
r�   ÚsentinelÚiÚf1Úf2Úf3r:   ÚfpÚoldÚold_fs
             r<   Útest_dev_mode_snapshot_rotationr½     sÛ  € å	Ô	$Ñ	&Ô	&ð B¨&Ý'ØØ%)Øð
ñ 
ô 
ˆõ �q‘”ð 	)ñ 	)ˆAÝ”—’˜f o¨a o o oÑ6Ô6ˆBÝ”—’˜fÐ&6¨aÐ&6Ð&6Ð&6Ñ7Ô7ˆBÝ”—’˜fÐ&:¨aÐ&:Ð&:Ð&:Ñ;Ô;ˆBØ˜"˜b�\ð %ð %�Ý˜!˜S‘\”\ð % RØ—H’H˜VÑ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %øàÔ"×)Ò)¨2¨r°2¨,Ñ7Ô7Ð7Ý�hÔ,Ñ-Ô-°Ô0JÒJÐJØÔ,×4Ò4Ñ6Ô6�Ø ð )ð )�EÝ”w—~’~ eÑ,Ô,ð )Ýœ	 %Ñ(Ô(Ð(øõ	 �hÔ,Ñ-Ô-°Ô0JÒJÐJùõ �8Ô)Ñ*Ô*¨aÒ/Ð/Ð/Ð/å”7—>’>¥"¤'§,¢,¨v°|Ñ"DÔ"DÑEÔEÐEÐEÐEÝ”7—>’>¥"¤'§,¢,¨v°|Ñ"DÔ"DÑEÔEÐEÐEÐEÝŒw�~Š~�bœgŸlšl¨6°<Ñ@Ô@ÑAÔAÐAÐAÐAÐAð5Bð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bð Bð Bs7   ”B(I9Â<C	ÃI9ÃC"Ã"I9Ã%C"Ã&FI9É9I=Ê I=c                  óh   — dddddœ} t          j        | ¦  «        }t          |v sJ d|› �¦   «         ‚dS )u[   Tháº©m tra báº¯t lá»—i nhÃ¢n váº­t tá»­ vong hoáº·c HP vá»� 0 báº¥t thÆ°á»�ng (INV-VIT-07).r   iÂ  rR   rE   uF   Cáº§n phÃ¡t hiá»‡n ERR_PLAYER_DEAD_OR_ZERO khi HP=0/450, káº¿t quáº£: N)r   r?   r   )Ú
state_deadrA   s     r<   Ú*test_vitals_invariants_player_dead_or_zerorÀ   *  sW   € ð ØØØð	ð €Jõ Ô4°ZÑ@Ô@€DÝ" dÐ*Ð*Ð*Ð,{ÐuyÐ,{Ð,{Ñ*Ô*Ð*Ð*Ð*rC   c            	      óh   — t          j        ddddddd¬¦  «        } t          | v sJ d| › �¦   «         ‚d	S )
uc   Tháº©m tra báº¯t lá»—i nháº£y bÆ°á»›c dá»‹ch chuyá»ƒn phi lÃ½ vÆ°á»£t 2000 Ä‘Æ¡n vá»‹ (INV-XYZ-03).g     ˆ³@rf   r/   r   T)ç     @�@rÂ   rf   )r+   r,   r-   r2   rX   rY   r[   u:   Cáº§n phÃ¡t hiá»‡n ERR_XYZ_TELEPORT_ANOMALY, káº¿t quáº£: N)r   r\   r   r]   s    r<   Ú,test_xyz_invariants_catches_teleport_anomalyrÃ   6  sY   € åÔ1ØØØØ#ØØØ(ðñ ô €Dõ $ tÐ+Ð+Ð+Ð-pÐjnÐ-pÐ-pÑ+Ô+Ð+Ð+Ð+rC   c                  óÔ  ‡— t          t          ¦  «        dk    sJ dt          t          ¦  «        › �¦   «         ‚t          t          t          ¦  «        ¦  «        dk    s
J d¦   «         ‚g d¢} | D ]8Šˆfd„t          D ¦   «         }t          |¦  «        dk    sJ d‰› d|› �¦   «         ‚Œ9t          D ]9}|t          v sJ d	|› d
�¦   «         ‚t          t          |         ¦  «        dk    sJ ‚Œ:dS )u  
    Tháº©m tra Ma Tráº­n ToÃ n Bá»™ 14 MÃ£ Lá»—i Invariant Chuáº©n Má»±c 2026:
    - 7 mÃ£ Vitals (INV-VIT-01..07)
    - 3 mÃ£ Tá»�a Ä‘á»™ XYZ (INV-XYZ-01..03)
    - 1 mÃ£ Optical (INV-OPT-01)
    - 2 mÃ£ Watchdog (INV-WDG-01..02)
    - 1 mÃ£ Core Log (INV-LOG-01)
    é   u&   Cáº§n Ä‘Ãºng 14 mÃ£ lá»—i, hiá»‡n cÃ³ u.   CÃ¡c mÃ£ lá»—i Invariant pháº£i lÃ  duy nháº¥t)z
INV-VIT-01z
INV-VIT-02z
INV-VIT-03z
INV-VIT-04z
INV-VIT-05z
INV-VIT-06z
INV-VIT-07z
INV-XYZ-01z
INV-XYZ-02z
INV-XYZ-03z
INV-OPT-01z
INV-WDG-01z
INV-WDG-02z
INV-LOG-01c                 ó>   •— g | ]}|                      ‰¦  «        ¯|‘ŒS © )Ú
startswith)r‚   ÚcodeÚpfxs     €r<   ú
<listcomp>z6test_all_14_invariant_codes_matrix.<locals>.<listcomp>Z  s*   ø€ ÐPÐPÐP˜D¸4¿?º?È3Ñ;OÔ;OÐP�4ÐPÐPÐPrC   é   u0   Thiáº¿u hoáº·c trÃ¹ng mÃ£ lá»—i cÃ³ tiá»�n tá»‘ z: u
   MÃ£ lá»—i u0    chÆ°a Ä‘Æ°á»£c Ä‘Äƒng kÃ½ trong INVARIANT_NAMESr   N)r²   r   Úsetr   )ÚprefixesÚmatchedrÉ   rÊ   s      @r<   Ú"test_all_14_invariant_codes_matrixrÐ   D  s9  ø€ õ Õ"Ñ#Ô# rÒ)Ð)Ð)Ð+nÕTWÕXkÑTlÔTlÐ+nÐ+nÑ)Ô)Ð)Ý�sÕ&Ñ'Ô'Ñ(Ô(¨BÒ.Ð.Ð.Ð0`Ñ.Ô.Ð.ðð ð €Hð ð fð fˆØPÐPÐPÐPÕ$7ÐPÑPÔPˆÝ�7‰|Œ|˜qÒ Ð Ð Ð"eÐUXÐ"eÐ"eÐ\cÐ"eÐ"eÑ Ô Ð Ð õ $ð .ð .ˆØ•Ð&Ð&Ð&Ð(k°TÐ(kÐ(kÐ(kÑ&Ô&Ð&Ý•? 4Ô(Ñ)Ô)¨AÒ-Ð-Ð-Ð-Ð-ð.ð .rC   )1Ú__doc__r7   r3   r—   r{   Útypingr   r   ÚpytestÚ%src.agentic_engine.invariant_sentinelr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Ú src.assistant_tool.agent_watcherr   r   ÚfixtureÚstrr=   rB   rI   rO   rU   r^   rc   rl   rt   r   rˆ   r¥   r½   rÀ   rÃ   rÐ   rÇ   rC   r<   ú<module>rØ      s‹  ððð ð €€€Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ð Ð à €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð(ð ð ð ð ð ð ð ð „ð˜$˜s C˜xœ.ð ð ð ñ „ðð0^¸TÀ#ÀsÀ(¼^ð ^ð ^ð ^ð ^ð
-ð 
-ð 
-ð	*ð 	*ð 	*ð.ð .ð .ð ð ð ð>ð >ð >ð0-ð -ð -ð$ð ð ð4ð 4ð 4ð(@ð @ð @ð,Mð ,Mð ,Mð^Bð Bð Bð>	|ð 	|ð 	|ðqð qð qð.ð .ð .ð .ð .rC   