§
    )¦jÚ6  ã            
       óä  — d Z ddlZddlmc mZ ddlZddlZddl	Z	ddl
Z
ddlZddlZe	j                             dej                             ej                             ej                             e¦  «        d¦  «        ¦  «        ¦  «         ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lm Z m!Z! ddl"m#Z#m$Z$ ddl%m&Z&  G d„ dej'        ¦  «        Z(e)dk    r ej*        ¦   «          dS dS )uô   
Bá»™ Kiá»ƒm Thá»­ ToÃ n Diá»‡n Há»‡ Thá»‘ng Agentic Self-Learning Engine (AutoPOE2 A3E)
Kiá»ƒm chá»©ng: LogWatcher, BlackboxRecorder, DPSAccumulator, RunTracker,
LinUCBTacticalAdvisor, ReflexTuner, ReflectionCritic, vÃ  WhatIsBetterEvaluator.
é    Nz..)ÚLinUCBTacticalAdvisor)ÚBlackboxRecorder)ÚDPSAccumulator)ÚReflectionCritic)ÚReflexParameterTuner)Ú
RunTracker)Ú	ItemStatsÚWhatIsBetterEvaluator©ÚCoreTelemetrySnapshotÚPlayerTelemetry)Ú
LogWatcherc                   óV   — e 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S )ÚTestAgenticEnginec                 ó:   — t          j        d¬¦  «        | _        d S )NÚpoe2_agentic_test_)Úprefix)ÚtempfileÚmkdtempÚtest_dir©Úselfs    ú1C:\Projects\AutoPOE2\tests\test_agentic_engine.pyÚsetUpzTestAgenticEngine.setUp   s   € Ý Ô(Ð0DÐEÑEÔEˆŒˆˆó    c                 óˆ   — t           j                             | j        ¦  «        rt	          j        | j        d¬¦  «         d S d S )NT)Úignore_errors)ÚosÚpathÚexistsr   ÚshutilÚrmtreer   s    r   ÚtearDownzTestAgenticEngine.tearDown"   sA   € ÝŒ7�>Š>˜$œ-Ñ(Ô(ð 	=ÝŒM˜$œ-°tÐ<Ñ<Ô<Ð<Ð<Ð<ð	=ð 	=r   c                 ó®  — t          d¬¦  «        }d}|                     |¦  «        }|                      |¦  «         |                      |j        d¦  «         |                      |j        d¦  «         |                      d|j        ¦  «         d}|                     |¦  «        }|                      |¦  «         |                      |j        d¦  «         d S )Nz	dummy.txt)Úlog_pathzK2026/09/07 19:09:17 12345678 [INFO Client 34188] : BEONGUSI has been slain.ÚPLAYER_DEATHÚBEONGUSIzhas been slainzV2026/09/07 19:10:00 12345678 [INFO Client 34188] : ShadowRunner has committed suicide.)r   Ú
parse_lineÚassertIsNotNoneÚassertEqualÚ
event_typeÚsenderÚassertInÚmessage)r   ÚlwÚ
line_slainÚevtÚline_suicideÚevt_suicides         r   Ú test_log_watcher_death_detectionz2TestAgenticEngine.test_log_watcher_death_detection'   sÌ   € Ý Ð-Ñ-Ô-ˆØbˆ
Ø�mŠm˜JÑ'Ô'ˆØ×Ò˜SÑ!Ô!Ð!Ø×Ò˜œ¨Ñ8Ô8Ð8Ø×Ò˜œ ZÑ0Ô0Ð0Ø�ŠÐ&¨¬Ñ4Ô4Ð4àoˆØ—m’m LÑ1Ô1ˆØ×Ò˜[Ñ)Ô)Ð)Ø×Ò˜Ô/°Ñ@Ô@Ð@Ð@Ð@r   c                 ó†  — t          d| j        ¬¦  «        }t          d¦  «        D ]Q}t          |d|dz  z   t	          d|dz  z
  dd|dz  z
  dz  ¬¦  «        d	d
d¬¦  «        }|                     |¦  «         ŒR|                     ¦   «         }|                      t          |¦  «        d¦  «         |                      |d         d         d¦  «         | 	                    d¬¦  «        }|  
                    t          j                             |¦  «        ¦  «         |                      d|                     ¦   «         ¦  «         d S )Né
   )ÚcapacityÚ
output_diré   éè  éd   é2   ç      $@©Ú
current_hpÚmax_hpÚhp_percentageé   zThe RiverbankéD   )Úsnapshot_idÚtimestamp_msÚplayerÚmonsters_countÚ	area_nameÚ
area_leveléÿÿÿÿrD   é   Ú
TEST_BURST)Útrigger_reason)r   r   Úranger   r   Úrecord_snapshotÚget_recent_ticksr*   ÚlenÚexport_blackboxÚ
assertTruer   r   r    r-   Úupper)r   ÚbbÚiÚsnapÚticksÚfilepaths         r   Útest_blackbox_recorderz(TestAgenticEngine.test_blackbox_recorder6   sF  € Ý r°d´mÐDÑDÔDˆÝ�r‘”ð 		%ð 		%ˆAÝ(ØØ! A¨¡G™^Ý&°$¸¸R¹±-ÈÐ]aÐdeÐhjÑdjÑ]jÐnrÑ\rÐsÑsÔsØ Ø)Øðñ ô ˆDð ×Ò˜tÑ$Ô$Ð$Ð$ð ×#Ò#Ñ%Ô%ˆØ×Ò�˜U™œ RÑ(Ô(Ð(Ø×Ò˜˜rœ =Ô1°2Ñ6Ô6Ð6ð ×%Ò%°\Ð%ÑBÔBˆØ�Š�œŸš xÑ0Ô0Ñ1Ô1Ð1Ø�Š�l H§N¢NÑ$4Ô$4Ñ5Ô5Ð5Ð5Ð5r   c                 óL  — t          d¬¦  «        }d}dddœdddœg}|                     ||¬	¦  «         dddœdd
dœg}|                     ||dz   ¬	¦  «        }|                      |d¦  «         |                      |j        d¦  «         |                      |j        |¦  «         d S )Ng       @)Úwindow_secondsg      Y@é   iˆ  )ÚidÚhpé   i¸  )Úcurrent_timeéÐ  g      ð?ç        )r   Úupdate_monsters_snapshotÚassertGreaterr*   Útotal_damage_dealtÚpeak_dps)r   ÚdpsÚt0Úmonsters_t1Úmonsters_t2Úcurrent_dpss         r   Útest_dps_accumulatorz&TestAgenticEngine.test_dps_accumulatorN   sÒ   € Ý¨CÐ0Ñ0Ô0ˆØˆð   tÐ,Ð,°Q¸dÐ.CÐ.CÐDˆØ×$Ò$ [¸rÐ$ÑBÔBÐBð   tÐ,Ð,°Q¸dÐ.CÐ.CÐDˆØ×2Ò2°;ÈRÐRUÉXÐ2ÑVÔVˆà×Ò˜;¨Ñ,Ô,Ð,Ø×Ò˜Ô/°Ñ6Ô6Ð6Ø×Ò˜œ {Ñ3Ô3Ð3Ð3Ð3r   c                 ó^  — t           j                             | j        d¦  «        }t	          |¬¦  «        }|                     dd¬¦  «         |                      |j        ¦  «         |                      |j        j	        d¦  «         | 
                    ¦   «          |                     dd¬¦  «         |                      |j        j        d	¦  «         |                      |j        j        d¦  «         |                     d
d	¬¦  «        }|                      |¦  «         |                      |j        d¦  «         |                      t          |j        ¦  «        d	¦  «         |                     ¦   «         }|                      |d         d	¦  «         |                      |d         d	¦  «         d S )Nztest_run_history.json)Úhistory_fileÚMapWorldsBeachéK   )rI   g     jÈ@é-   )rg   Úkill_incrementr]   ÚHideoutÚ	COMPLETEDÚ
total_runsÚtotal_deaths)r   r   Újoinr   r   Úon_zone_changer)   Úcurrent_runr*   rH   Úrecord_deathÚupdate_run_statsÚdeaths_countÚmonsters_killedÚstatusrQ   Úrun_historyÚget_session_summary)r   Ú	hist_fileÚtrackerÚ	completedÚsummarys        r   Útest_run_trackerz"TestAgenticEngine.test_run_tracker_   s”  € Ý”G—L’L ¤Ð0GÑHÔHˆ	Ý¨)Ð4Ñ4Ô4ˆð 	×ÒÐ/¸BÐÑ?Ô?Ð?Ø×Ò˜WÔ0Ñ1Ô1Ð1Ø×Ò˜Ô,Ô6Ð8HÑIÔIÐIð 	×ÒÑÔÐØ× Ò ¨'À"Ð ÑEÔEÐEØ×Ò˜Ô,Ô9¸1Ñ=Ô=Ð=Ø×Ò˜Ô,Ô<¸bÑAÔAÐAð ×*Ò*¨9ÀÐ*ÑCÔCˆ	Ø×Ò˜YÑ'Ô'Ð'Ø×Ò˜Ô)¨;Ñ7Ô7Ð7Ø×Ò�˜WÔ0Ñ1Ô1°1Ñ5Ô5Ð5à×-Ò-Ñ/Ô/ˆØ×Ò˜ Ô.°Ñ2Ô2Ð2Ø×Ò˜ Ô0°!Ñ4Ô4Ð4Ð4Ð4r   c           
      ó0  — t           j                             | j        d¦  «        }t	          |d¬¦  «        }|                     dddddddd	¬
¦  «        }|                     |¦  «        \  }}}|                      ||j        ¦  «         |                      d|¦  «         | 	                    ddddd¬¦  «        }|  
                    |d¦  «         |                     d||¦  «         | 	                    ddddd¬¦  «        }|                     d||¦  «         d S )Nzbandit_test.jsong      à?)Ú
model_pathÚalphag      4@rc   r9   r=   g     À’@ç      T@)Úhp_pctÚes_pctÚmonster_countÚboss_poise_pctÚflask_charges_pctÚmap_tierÚ
recent_dpsÚdamage_taken_rateÚEMERGENCY_PORTALÚAGGRESSIVE_BURSTg     @@r   T)Úis_player_slaing      .Àç      9@F)r   r   rx   r   r   Úextract_contextÚrecommend_actionr-   ÚactionsÚcompute_combat_rewardr*   Úupdate_feedback)	r   Ú
model_fileÚbanditÚctxÚ
rec_actionÚscoreÚ
all_scoresÚ
reward_badÚreward_goods	            r   Útest_contextual_bandit_linucbz/TestAgenticEngine.test_contextual_bandit_linucby   s6  € Ý”W—\’\ $¤-Ð1CÑDÔDˆ
Ý&°*ÀCÐHÑHÔHˆð ×$Ò$Ø °2Ø°$Ø F¸dð %ñ 
ô 
ˆð )/×(?Ò(?ÀÑ(DÔ(DÑ%ˆ
�E˜:Ø�Š�j &¤.Ñ1Ô1Ð1Ø�ŠÐ(¨*Ñ5Ô5Ð5ð ×1Ò1Ð2DÀcÈ5ÐRSÐeiÐ1ÑjÔjˆ
Ø×Ò˜ UÑ+Ô+Ð+Ø×ÒÐ1°3¸
ÑCÔCÐCð ×2Ò2Ð3EÀtÈSÐRSÐejÐ2ÑkÔkˆØ×ÒÐ1°3¸ÑDÔDÐDÐDÐDr   c                 óž  — t           j                             | j        d¦  «        }t	          |¬¦  «        }|                      |j        d¦  «         |                     ¦   «          |                     ¦   «         }|                      |d         d¦  «         |                      |d         d¦  «         |  	                    |d         d¦  «         d S )	Nzreflex_test.json)Úconfig_pathgš™™™™™á?Úflask_hp_thresholdÚkiting_distanceg     €A@Úburst_dodge_thresholdg)\�Âõ(Ì?)
r   r   rx   r   r   r*   r§   r{   re   Ú
assertLess)r   Úcfg_fileÚtunerÚparamss       r   Útest_reflex_tunerz#TestAgenticEngine.test_reflex_tuner’   sÀ   € Ý”7—<’< ¤Ð/AÑBÔBˆÝ$°Ð:Ñ:Ô:ˆØ×Ò˜Ô1°4Ñ8Ô8Ð8ð 	×ÒÑÔÐØ×#Ò#Ñ%Ô%ˆØ×Ò˜6Ð"6Ô7¸Ñ>Ô>Ð>Ø×Ò˜6Ð"3Ô4°dÑ;Ô;Ð;Ø�Š˜Ð6Ô7¸Ñ>Ô>Ð>Ð>Ð>r   c                 ót  — t           j                             | j        d¦  «        }t	          |¬¦  «        }ddddddœddd	dddœg}|                     d
dd|¬¦  «        }|                      |¦  «         |                      |d         d         d¦  «         |                      d|d         d         ¦  «         d S )Nzagent_memory_test.json)Úmemory_filer]   r:   é   r`   )rD   rE   r_   r@   rG   rb   r   zThe Black GateéP   zJamanra, the Sandstorm King)rH   rI   Úkiller_infoÚblackbox_ticksÚlocal_diagnosisÚ
root_causeÚBURST_SLAM_DAMAGEu   Sá»�C SÃ�T THÆ¯Æ NGr…   )	r   r   rx   r   r   Úanalyze_death_eventr)   r*   r-   )r   Úmem_fileÚcriticÚ
mock_ticksÚlessons        r   Útest_reflection_criticz(TestAgenticEngine.test_reflection_criticŸ   sÝ   € Ý”7—<’< ¤Ð/GÑHÔHˆÝ!¨hÐ7Ñ7Ô7ˆð ¨t¸4È4ÐcdÐeÐeØ¨t¸1ÈÐ`aÐbÐbð
ˆ
ð ×+Ò+Ø&ØØ5Ø%ð	 ,ñ 
ô 
ˆð 	×Ò˜VÑ$Ô$Ð$Ø×Ò˜Ð 1Ô2°<Ô@ÐBUÑVÔVÐVØ�ŠÐ+¨VÐ4EÔ-FÀyÔ-QÑRÔRÐRÐRÐRr   c                 óF  — t          ¦   «         }t          dddddddd¬¦  «        }t          d	dd
dddddd¬¦	  «	        }|                     ||¦  «        }|                      |j        d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         |                      d|j	        ¦  «         | 
                    dd¬¦  «        }|                      |d         d¦  «         |                      d|d                              ¦   «         ¦  «         d S )NzIron Gauntlets of WardingÚglovesg      .@rc   g      @é(   é   )ÚnameÚslotÚ	flat_physÚ	flat_coldÚattack_speed_pctÚmax_lifeÚfire_resÚcold_reszSpiked Fists of the Blizzardg      >@g     €K@g      0@r–   éU   é#   )	rÂ   rÃ   rÄ   rÅ   rÆ   Úcrit_multiplier_pctrÇ   rÈ   rÉ   Ú	CANDIDATEÚEQUIP_UPGRADEg      I@u%   Ä�á»’ Má»šI Tá»�T HÆ N VÆ¯á»¢T TRá»˜Ii0u  r=   )Úcurrent_goldÚavailable_divineÚrecommended_activityÚSEKHEMA_CARRYÚSEKHEMAÚheadline_verdict)r
   r	   Úcompare_itemsr*   ÚwinnerÚdecisionre   Údps_delta_pctr-   rÔ   Úcompare_farming_activitiesrT   )r   Ú	evaluatorÚcurr_glovesÚcand_glovesÚresultÚecon_ress         r   Útest_what_is_better_evaluatorz/TestAgenticEngine.test_what_is_better_evaluator³   sE  € Ý)Ñ+Ô+ˆ	åØ,ØØØØ ØØØð	
ñ 	
ô 	
ˆõ  Ø/ØØØØ!Ø $ØØØð

ñ 

ô 

ˆð ×(Ò(¨°kÑBÔBˆØ×Ò˜œ¨Ñ4Ô4Ð4Ø×Ò˜œ¨/Ñ:Ô:Ð:Ø×Ò˜6Ô/°Ñ6Ô6Ð6Ø�ŠÐ=¸vÔ?VÑWÔWÐWð ×7Ò7ÀUÐ]aÐ7ÑbÔbˆØ×Ò˜Ð"8Ô9¸?ÑKÔKÐKØ�Š�i Ð*<Ô!=×!CÒ!CÑ!EÔ!EÑFÔFÐFÐFÐFr   c                 ó¨  — ddl m}m} t          j                             | j        d¦  «        } ||¬¦  «        }|                     ddddd	d
¬¦  «        }|                      |j	        |j
        ¦  «         |                      |j        d¦  «         |                     ddddd	d
¬¦  «        }|                      |j	        |j        ¦  «         |                     dd¬¦  «        }|                      |d         ¦  «         |                     dd¬¦  «        }|                      |d         ¦  «         |                      |d         d¦  «         |                      d|d         ¦  «         t%          dddd¬¦  «        }	t%          ddddd ¬!¦  «        }
|                     d"|
|	¬#¦  «        }|                      |j        d$¦  «         |                     ¦   «         }|                      t-          d%„ |D ¦   «         ¦  «        ¦  «         t/          d&„ |D ¦   «         ¦  «        }|                      |d'         d(¦  «         |                      |d)         d(¦  «         d S )*Nr   )ÚIdentificationChannelÚItemLifecycleManagerztest_learning_db.json)Úlearning_db_pathúSpiked FistséO   ÚRarer¿   é   T)Ú	base_nameÚ
item_levelÚrarityrÃ   Úscrolls_availableÚin_combat_zonerŠ   zVarnished CoatéF   Úbody_armourrp   é   )Úcurrent_area_nameÚunidentified_items_in_inventoryÚcan_interactÚPersonalHideoutÚnpc_namezThe Hooded OnezIdentify AllÚaction_guidancezIron Gauntletsr=   é   )rÂ   rÃ   rÄ   rÇ   zSpiked Fists of Winterg      <@g     €F@rq   )rÂ   rÃ   rÄ   rÅ   rÇ   Úitem_001)Úitem_idÚrevealed_statsÚcurrent_equippedrÎ   c              3   ó.   K  — | ]}|d          dk    V — ŒdS ©rè   rä   N© ©Ú.0Úks     r   ú	<genexpr>zNTestAgenticEngine.test_item_lifecycle_unidentified_pipeline.<locals>.<genexpr>  s+   è è € ÐPÐPÀ˜A˜kœN¨nÒ<ÐPÐPÐPÐPÐPÐPr   c              3   ó2   K  — | ]}|d          dk    ¯|V — ŒdS rü   rý   rþ   s     r   r  zNTestAgenticEngine.test_item_lifecycle_unidentified_pipeline.<locals>.<genexpr>  s0   è è € ÐUÐU !°A°k´NÀnÒ4TÐ4T˜AÐ4TÐ4TÐ4TÐ4TÐUÐUr   Úidentified_countr]   Úupgrades_found)Ú!src.agentic_engine.item_lifecyclerá   râ   r   r   rx   r   Útriage_unidentified_itemr*   Úrecommended_channelÚFIELD_SCROLL_OF_WISDOMre   Úbase_tier_scoreÚTOWN_THE_HOODED_ONEÚ check_the_hooded_one_interactionÚassertFalserS   r-   r	   Úprocess_identified_itemr×   Úget_knowledge_summaryÚanyÚnext)r   rá   râ   Údb_pathÚmanagerÚtriage_sÚtriage_commonÚhooded_check_combatÚhooded_check_townrÛ   Úrevealed_glovesÚcomp_resultÚ	knowledgeÚspiked_statss                 r   Ú)test_item_lifecycle_unidentified_pipelinez;TestAgenticEngine.test_item_lifecycle_unidentified_pipelineÙ   sÉ  € ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
õ
 ”'—,’,˜tœ}Ð.EÑFÔFˆØ&Ð&¸Ð@Ñ@Ô@ˆð ×3Ò3Ø$ØØØØ Øð 4ñ 
ô 
ˆð 	×Ò˜Ô5Ð7LÔ7cÑdÔdÐdØ×Ò˜8Ô3°TÑ:Ô:Ð:ð  ×8Ò8Ø&ØØØØ Øð 9ñ 
ô 
ˆð 	×Ò˜Ô:Ð<QÔ<eÑfÔfÐfð &×FÒFØ.Ø,-ð Gñ 
ô 
Ðð 	×ÒÐ,¨^Ô<Ñ=Ô=Ð=à#×DÒDØ/Ø,-ð Eñ 
ô 
Ðð 	�ŠÐ)¨.Ô9Ñ:Ô:Ð:Ø×ÒÐ*¨:Ô6Ð8HÑIÔIÐIØ�Š�nÐ&7Ð8IÔ&JÑKÔKÐKõ  Ð%5¸HÐPTÐ_aÐbÑbÔbˆÝ#Ð)AÈÐ\`ÐlpÐ{}Ð~Ñ~Ô~ˆà×5Ò5ØØ*Ø(ð 6ñ 
ô 
ˆð
 	×Ò˜Ô-¨Ñ?Ô?Ð?ð ×1Ò1Ñ3Ô3ˆ	Ø�Š�ÐPÐPÀiÐPÑPÔPÑPÔPÑQÔQÐQÝÐUÐU yÐUÑUÔUÑUÔUˆØ×Ò˜Ð&8Ô9¸1Ñ=Ô=Ð=Ø×Ò˜Ð&6Ô7¸Ñ;Ô;Ð;Ð;Ð;r   c           
      óš  — ddl m} ddlm}m} ddlm}  |d¬¦  «        } |ddt          t          j        ¦   «         dz  ¦  «         |d	d
d¬¦  «        ddd¬¦  «        }| 	                    |¦  «         |  
                    |j        |j        j        ¦  «          |ddddd¬¦  «        }|                     |¦  «          |ddddd¬¦  «        }|                     |¦  «         |                     ¦   «         }	|                      |	d         ¦  «         |                      |	d         d¦  «         |  
                    d|	d         ¦  «         d S ) Nr   )ÚAgenticCoordinatorr   )ÚLogEventT)Úenabledée   r:   i€  r±   rŠ   r>   é   rp   éN   )Ú	is_onlinerD   rE   rF   rG   rH   rI   ÚZONE_CHANGEÚSystemu/   Ä�Ã£ chuyá»ƒn Ä‘áº¿n khu vá»±c: PersonalHideoutz2026/09/07 19:15:00Úraw)r+   r,   r.   Ú	timestampÚraw_liner&   ÚJamanrazBEONGUSI has been slain.z2026/09/07 19:16:00r  rw   r]   u   Háº­u kiá»ƒm tá»­ vongÚadvice_headline)Úsrc.agentic_engine.coordinatorr  Ú"src.assistant_tool.core_shm_bridger   r   Úsrc.assistant_tool.log_watcherr  ÚintÚtimeÚon_telemetry_snapshotr-   Úlatest_tactical_actionÚbandit_advisorr™   Úon_log_eventÚget_dashboard_staterS   ÚassertGreaterEqual)
r   r  r   r   r  ÚcoordrW   Úzone_evtÚ	death_evtÚstates
             r   Útest_agentic_coordinatorz*TestAgenticEngine.test_agentic_coordinator  s¶  € ØEÐEÐEÐEÐEÐEØ]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ø;Ð;Ð;Ð;Ð;Ð;à"Ð"¨4Ð0Ñ0Ô0ˆð %Ð$ØØÝ�TœY™[œ[¨4Ñ/Ñ0Ô0Ø"�?¨d¸4ÈtÐTÑTÔTØØ&Øð
ñ 
ô 
ˆð 	×#Ò# DÑ)Ô)Ð)Ø�Š�eÔ2°EÔ4HÔ4PÑQÔQÐQð �8Ø$ØØEØ+Øð
ñ 
ô 
ˆð 	×Ò˜8Ñ$Ô$Ð$ð �HØ%ØØ.Ø+Øð
ñ 
ô 
ˆ	ð 	×Ò˜9Ñ%Ô%Ð%ð ×)Ò)Ñ+Ô+ˆØ�Š˜˜iÔ(Ñ)Ô)Ð)Ø×Ò  nÔ 5°qÑ9Ô9Ð9Ø�ŠÐ.°Ð6GÔ0HÑIÔIÐIÐIÐIr   N)Ú__name__Ú
__module__Ú__qualname__r   r#   r4   rZ   rm   r†   r¤   r®   r½   rß   r  r:  rý   r   r   r   r      sÞ   € € € € € ðFð Fð Fð=ð =ð =ð
Að Að Að6ð 6ð 6ð04ð 4ð 4ð"5ð 5ð 5ð4Eð Eð Eð2
?ð 
?ð 
?ðSð Sð Sð(#Gð #Gð #GðL?<ð ?<ð ?<ðD,Jð ,Jð ,Jð ,Jð ,Jr   r   Ú__main__)+Ú__doc__ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arr   r!   Úsysr   r/  Úunittestr   ÚinsertÚabspathrx   ÚdirnameÚ__file__Ú!src.agentic_engine.bandit_advisorr   Úsrc.agentic_engine.blackboxr   Úsrc.agentic_engine.dps_meterr   Ú$src.agentic_engine.reflection_criticr   Úsrc.agentic_engine.reflex_tunerr   Úsrc.agentic_engine.run_trackerr   Ú!src.agentic_engine.what_is_betterr	   r
   r,  r   r   r-  r   ÚTestCaser   r;  Úmainrý   r   r   ú<module>rU     sÈ  ððð ð € € € € € € € € € € € € €	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø €€€à „‡‚��2”7—?’? 2¤7§<¢<°´·²ÀÑ0IÔ0IÈ4Ñ#PÔ#PÑQÔQÑ RÔ RÐ Rà CÐ CÐ CÐ CÐ CÐ CØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø AÐ AÐ AÐ AÐ AÐ AØ @Ð @Ð @Ð @Ð @Ð @Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð VÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ 5Ð 5Ð 5Ð 5Ð 5Ð 5ðiJð iJð iJð iJð iJ˜Ô)ñ iJô iJð iJðX	 ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   