§
    ¼©j¿C  ã                   ó   — d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	 ddl
mZmZ 	 ddlmZmZ ddlmZ dZn# e$ r d	ZY nw xY w	 dd
lmZ ddlmZ dZn# e$ r d	ZY nw xY wddlmZmZ ddlmZ  ej        d¦  «        Z G d„ de e¦  «        Z! G d„ de e¦  «        Z" G d„ de¦  «        Z#de de fd„Z$de%de%de%de fd„Z& G d„ d¦  «        Z'dS )uÚ   
AutoPOE2 Tactical Brain - Bá»™ NÃ£o Chiáº¿n Thuáº­t Ä�iá»�u Phá»‘i Cáº¥p Cao
TÃ­ch há»£p Google Antigravity SDK & Gemini 3.8/3.7 Flash
PhÃ¢n táº§ng: Táº§ng 1 (C++ Reflex 1000Hz) <-> Táº§ng 2 (Antigravity Brain 1-5Hz)
é    N)ÚEnum)ÚAnyÚListÚOptional)Ú	BaseModelÚField)ÚAgentÚLocalAgentConfig)ÚtypesTF)Úgenai)ÚCoreShmBridgeÚCoreTelemetrySnapshot)ÚScreenCapturerÚTacticalBrainc                   ó2   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )ÚTacticalDirectiveÚKITEÚRETREAT_TO_SAFE_ZONEÚFOCUS_ELITEÚEXECUTE_COMBO_STAGGERÚREFILL_FLASKSÚ
PORTAL_OUTÚCLEAR_TRASHÚLOOT_SAFETY_WINDOWÚHOLD_POSITIONN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   © ó    ú9C:\Projects\AutoPOE2\src\assistant_tool\tactical_brain.pyr   r   (   s>   € € € € € Ø€DØ1ÐØ€KØ3ÐØ#€MØ€JØ€KØ-ÐØ#€M€M€Mr    r   c                   ó   — e Zd ZdZdZdZdZdS )ÚDangerLevelÚLOWÚMODERATEÚHIGHÚCRITICALN)r   r   r   r$   r%   r&   r'   r   r    r!   r#   r#   4   s"   € € € € € Ø
€CØ€HØ€DØ€H€H€Hr    r#   c                   ó.  — e Zd ZU dZ ed¬¦  «        Zeed<    ed¬¦  «        Ze	ed<    ed¬¦  «        Z
eed<    ed	¬¦  «        Zeed
<    edd¬¦  «        Zee         ed<    ed„ d¬¦  «        Zeee                  ed<    edd¬¦  «        Zeed<   dS )ÚTacticalRecommendationuV   Cáº¥u trÃºc khuyáº¿n nghá»‹ chiáº¿n thuáº­t chuáº©n hÃ³a tá»« Gemini/Antigravity AgentuC   Chá»‰ thá»‹ chiáº¿n thuáº­t cáº¥p cao Æ°u tiÃªn sá»‘ 1 hiá»‡n táº¡i)ÚdescriptionÚprimary_directiveuB   Ä�Ã¡nh giÃ¡ má»©c Ä‘á»™ nguy hiá»ƒm cá»§a tÃ¬nh tháº¿ hiá»‡n táº¡iÚdanger_leveluz   CÃ¢u tráº£ lá»�i ngáº¯n gá»�n (dÆ°á»›i 20 tá»«) tráº£ lá»�i cho cÃ¢u há»�i: 'Tá»‘t nháº¥t bÃ¢y giá»� mÃ¬nh nÃªn lÃ m gÃ¬?'Úaction_summaryuk   PhÃ¢n tÃ­ch chi tiáº¿t lÃ½ do dá»±a trÃªn mÃ¡u, vá»‹ trÃ­ quÃ¡i, mod cá»§a boss vÃ  tÃ i nguyÃªn bÃ¬nh mÃ¡uÚdetailed_reasoningr   uE   ID thá»±c thá»ƒ má»¥c tiÃªu cáº§n focus hoáº·c trÃ¡nh nÃ© (náº¿u cÃ³))Údefaultr*   Úsuggested_target_idc                  ó
   — g d¢S )N©ç        r3   r3   r   r   r    r!   ú<lambda>zTacticalRecommendation.<lambda>N   s
   €    € r    uJ   Tá»�a Ä‘á»™ [X, Y, Z] khuyáº¿n nghá»‹ di chuyá»ƒn tá»›i hoáº·c xáº£ chiÃªu)Údefault_factoryr*   Úsuggested_target_xyzuY   MÃ£ MacroOpCode gá»­i xuá»‘ng C++ Core (0: IDLE, 1: NAV, 2: ENGAGE, 4: PORTAL, 99: PANIC)Úmacro_opcode_actionN)r   r   r   Ú__doc__r   r+   r   Ú__annotations__r,   r#   r-   Ústrr.   r0   r   Úintr6   r   Úfloatr7   r   r    r!   r)   r)   ;   ss  € € € € € € Ø`Ð`Ø+0¨5ØYð,ñ ,ô ,ÐÐ(ð ð ñ ð !& ØXð!ñ !ô !€L�+ð ð ñ ð  ˜%ð Qðñ ô €N�Cð ð ñ ð $˜eð Bðñ ô Ð˜ð ð ñ ð */¨ØØ[ð*ñ *ô *Ð˜ #œð ð ñ ð 38°%Ø/Ð/Ø`ð3ñ 3ô 3Ð˜( 4¨¤;Ô/ð ð ñ ð  %˜uØØoð ñ  ô  Ð˜ð ð ñ ð ð r    r)   Útelemetry_summaryÚreturnc                 ó   — d| › �S )uW   Ä�Ã¡nh giÃ¡ báº£n Ä‘á»“ má»‘i Ä‘e dá»�a khÃ´ng gian dá»±a trÃªn telemetry hiá»‡n táº¡i.zThreat analysis compiled: r   )r=   s    r!   Úget_threat_assessmentr@   [   s   € à;Ð(9Ð;Ð;Ð;r    Úplayer_xÚplayer_yÚplayer_zc                 ó2   — | dz
  }|dz
  }d|d›d|d›d|d›�S )uV   TÃ­nh toÃ¡n vector rÃºt lui an toÃ n nháº¥t dá»±a trÃªn NavMesh vÃ  máº­t Ä‘á»™ quÃ¡i.ç      9@z!Safe vector calculated: Target X=ú.1fú, Y=ú, Z=r   )rA   rB   rC   Ú	retreat_xÚ	retreat_ys        r!   Úfind_safe_escape_vectorrK   `   s<   € à˜4‘€IØ˜4‘€IØc¨yÐcÐcÐcÀ)ÐcÐcÐcÐU]ÐcÐcÐcÐcr    c                   óÄ   — e Zd ZdZddee         dee         fd„Zd„ Zdde	d	e
fd
„Zdde	d	e
fd„Zded	efd„Zddedee         d	e
fd„Zde
fd„Zded	e
fd„Zded	e
fd„ZdS )r   u‚   
    Bá»™ Ä�iá»�u Phá»‘i Chiáº¿n Thuáº­t Cáº¥p Cao cho AutoPOE2.
    Káº¿t há»£p Google Antigravity SDK vá»›i C++ Reflex IPC.
    NÚ
shm_bridgeÚapi_keyc                 ó  — |pt          ¦   «         | _        |pt          j        dd¦  «        | _        t          j        dd¦  «        | _        t          d¬¦  «        | _        d | _        d| _	        d| _
        |                      ¦   «          d S )NÚGEMINI_API_KEYÚ ÚGEMINI_MODELzgemini-3.7-flashÚcaptures)Ú
output_dirF)r   rM   ÚosÚgetenvrN   Ú
model_namer   Úscreen_capturerÚlast_recommendationÚ_is_evaluatingÚ_autonomous_runningÚ_init_ai_client)ÚselfrM   rN   s      r!   Ú__init__zTacticalBrain.__init__q   s„   € Ø$Ð7­©¬ˆŒØÐA¥"¤)Ð,<¸bÑ"AÔ"AˆŒÝœ) NÐ4FÑGÔGˆŒå-¸ÐDÑDÔDˆÔØEIˆÔ Ø#ˆÔØ#(ˆÔ ð 	×ÒÑÔÐÐÐr    c                 ó(  — d | _         t          r�| j        r|	 t          j        | j        ¬¦  «        | _         t
                               d| j        › d�¦  «         d S # t          $ r(}t
           	                    d|› �¦  «         Y d }~d S d }~ww xY wd S d S )N)rN   u6   [TacticalBrain] Ä�Ã£ káº¿t ná»‘i Google GenAI Engine (ú)u1   [TacticalBrain] Lá»—i khá»Ÿi táº¡o GenAI Client: )
Úgenai_clientÚGENAI_AVAILABLErN   r   ÚClientÚloggerÚinforW   Ú	ExceptionÚerror)r]   Úes     r!   r\   zTacticalBrain._init_ai_client~   sË   € Ø ˆÔÝð 	V˜tœ|ð 	VðVÝ$)¤L¸¼Ð$FÑ$FÔ$F�Ô!Ý—’ÐgÐUYÔUdÐgÐgÐgÑhÔhÐhÐhÐhøÝð Vð Vð VÝ—’ÐTÐQRÐTÐTÑUÔUÐUÐUÐUÐUÐUÐUÐUøøøøðVøøøð		Vð 	Vð 	Vð 	Vs   —AA Á
BÁ%BÂBTÚinclude_screenr>   c                 óN  — 	 t          j        ¦   «         }|                     ¦   «         r|                      | j        j        ¦  «        S |                     |                      |¦  «        ¦  «        S # t          $ r* t          j	        |                      |¦  «        ¦  «        cY S w xY w)u:   PhiÃªn báº£n Ä‘á»“ng bá»™ tiá»‡n lá»£i cho GUI Event loop.)
ÚasyncioÚget_event_loopÚ
is_runningÚ_rule_based_tactical_fallbackrM   Úlast_snapshotÚrun_until_completeÚadvise_best_actionrf   Úrun)r]   ri   Úloops      r!   Úadvise_best_action_syncz%TacticalBrain.advise_best_action_syncŠ   s§   € ð	HÝÔ)Ñ+Ô+ˆDØ�ŠÑ Ô ð YØ×9Ò9¸$¼/Ô:WÑXÔXÐXØ×*Ò*¨4×+BÒ+BÀ>Ñ+RÔ+RÑSÔSÐSøÝð 	Hð 	Hð 	HÝ”;˜t×6Ò6°~ÑFÔFÑGÔGÐGÐGÐGð	Høøøs   ‚AA0 Á'A0 Á01B$Â#B$c              ƒ   ó  K  — | j         r#| j        r| j        S |                      d¦  «        S d| _         	 | j        j        }|                      |¦  «        }d}|r„| j                             dd|j        j	        i¦  «        }|r[t          j                             |¦  «        r<t          |d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   |                      ||¦  «        ƒ d{V —†}|| _        |j        dk    r|                      |¦  «         |d| _         S # t$          $ rG}t&                               d	|› �¦  «         |                      d
|› d�¦  «        cY d}~d| _         S d}~ww xY w# d| _         w xY w)uò   
        Tráº£ lá»�i tá»©c thá»�i cÃ¢u há»�i trá»�ng tÃ¢m cá»§a game thá»§: 'Tá»‘t nháº¥t bÃ¢y giá»� mÃ¬nh nÃªn lÃ m gÃ¬?'
        Ä�á»�c snapshot telemetry thá»�i gian thá»±c + chá»¥p áº£nh mÃ n hÃ¬nh Ä‘á»ƒ Ä‘Æ°a ra khuyáº¿n nghá»‹.
        u9   Ä�ang phÃ¢n tÃ­ch bá»‘i cáº£nh, giá»¯ vá»‹ trÃ­ an toÃ n!TNÚTACTICAL_QUERYÚhpÚrbr   Fu3   [TacticalBrain] Lá»—i phÃ¢n tÃ­ch chiáº¿n thuáº­t: u   Duy trÃ¬ cáº£nh giÃ¡c! (Lá»—i: r`   )rZ   rY   Ú_create_fallback_recommendationrM   ro   Ú_build_telemetry_promptrX   Úcapture_screenshotÚplayerÚhp_percentagerU   ÚpathÚexistsÚopenÚreadÚ_query_antigravity_agentr7   Ú_dispatch_directive_to_corerf   rd   rg   )	r]   ri   ÚsnapshotÚtelemetry_contextÚimage_bytesÚimg_pathÚfÚrecommendationrh   s	            r!   rq   z TacticalBrain.advise_best_action”   s  è è € ð
 Ôð 	uØÔ'ð 0ØÔ/Ð/Ø×7Ò7Ð8sÑtÔtÐtà"ˆÔð	(Ø”Ô4ˆHØ $× <Ò <¸XÑ FÔ FÐð ˆKØð /ØÔ/×BÒBÐCSÐVZÐ\dÔ\kÔ\yÐUzÑ{Ô{�Øð /¥¤§¢¨xÑ 8Ô 8ð /Ý˜h¨Ñ-Ô-ð /°Ø&'§f¢f¡h¤h˜ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð $(×#@Ò#@ÐARÐT_Ñ#`Ô#`Ð`Ð`Ð`Ð`Ð`Ð`ˆNØ'5ˆDÔ$ð Ô1°AÒ5Ð5Ø×0Ò0°Ñ@Ô@Ð@à!ð #(ˆDÔÐøõ	 ð 	`ð 	`ð 	`Ý�LŠLÐRÈqÐRÐRÑSÔSÐSØ×7Ò7Ð8^ÐZ[Ð8^Ð8^Ð8^Ñ_Ô_Ð_Ð_Ð_Ð_Ð_à"'ˆDÔÐøøøøð		`øøøøð #(ˆDÔÐ'Ð'Ð'Ð'sU   µA=D* Â2CÃD* ÃCÃD* ÃCÃAD* Ä*
E;Ä45E6Å)E;Å*E> Å6E;Å;E> Å>	FÚsnapc                 ó²  — |j         }d                     g d‘|j        pd› ‘d‘|j        › ‘d‘|j        › ‘d‘|j        › ‘d‘|j        d›‘d	‘|j        › ‘d‘|j        › ‘d
‘|j	        › ‘d‘|j
        › ‘d‘|j        › ‘d‘|j        › ‘d‘|j        d›‘d‘|j        d›‘d‘|j        d›‘d‘|j        › ‘d‘|j        › ‘d‘|j        › ‘d‘|j        › ‘d‘¦  «        S )NrQ   u?   === Bá»�I Cáº¢NH CHIáº¾N Ä�áº¤U POE2 (v0.5.5) ===
- Khu vá»±c: zUnknown Areaz (Level u   )
- MÃ¡u (HP): ú/z (rF   u   %)
- KhiÃªn (ES): z	
- Mana: z
- Spirit: u   
- Tá»�a Ä‘á»™ hiá»‡n táº¡i: X=rG   rH   z
- Radar xung quanh: u    QuÃ¡i váº­t, u    Ä�á»“ rÆ¡i, u7    Cá»•ng Portal
- Tá»•ng sá»‘ thá»±c thá»ƒ Ä‘ang náº¡p: ú
)r|   ÚjoinÚ	area_nameÚ
area_levelÚ
current_hpÚmax_hpr}   Ú
current_esÚmax_esÚcurrent_manaÚmax_manaÚcurrent_spiritÚ
max_spiritÚpos_xÚpos_yÚpos_zÚmonsters_countÚitems_countÚportals_countÚentity_count)r]   rŠ   Úps      r!   rz   z%TacticalBrain._build_telemetry_promptº   s  € ØŒKˆðM÷ Mò Mð Mð Mð MØ œNÐ<¨nðMð Mð Mð MØFJÄoðMð Mð Mð MàœLðMð Mð Mð Mà+,¬8ðMð Mð Mð Mà78´ÐPðMð Mð Mð Mð  œlðMð Mð Mð Mð ./¬XðMð Mð Mð Mð ”~ð	Mð Mð Mð Mð )*¬
ð	Mð Mð Mð Mð
 Ô)ðMð Mð Mð Mð
 -.¬LðMð Mð Mð Mð ./¬WÐ^ðMð Mð Mð Mð ?@¼gÐ^ðMð Mð Mð Mð PQÌwÐ^ðMð Mð Mð Mð $(Ô#6ðMð Mð Mð Mð GKÔFVðMð Mð Mð Mð fjÔewðMð Mð Mð Mð 8<Ô7HðMð Mð Mð Mñ Mô Mð
	
r    Útelemetry_promptr†   c           	   ƒ   óx  ‡ ‡‡‡K  — dŠ|› d�}t           �r 	 t          ‰ j        ‰t          t          t
          gt          j        t          j        j	        ¬¦  «        ¬¦  «        }t          |¬¦  «        4 ƒd{V —†}|                     |¦  «        ƒ d{V —†}|                     ¦   «         ƒ d{V —†}|r,t                               |¦  «        cddd¦  «        ƒd{V —† S 	 ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   n4# t          $ r'}t                               d|› �¦  «         Y d}~nd}~ww xY w‰ j        Š‰rÞ	 g Š|r4‰                     t&          j                             |d¬	¦  «        ¦  «         ‰                     |¦  «         t-          j        ¦   «         }	|	                     dˆˆˆ ˆfd
„¦  «        ƒ d{V —†}
|
j        rt                               |
j        ¦  «        S n4# t          $ r'}t                               d|› �¦  «         Y d}~nd}~ww xY w‰                      ‰ j        j        ¦  «        S )ud   
        Sá»­ dá»¥ng Antigravity SDK hoáº·c Gemini GenAI vá»›i Structured Outputs Pydantic.
        u×  Báº¡n lÃ  Antigravity Tactical Commander - Bá»™ NÃ£o Chiáº¿n Thuáº­t Tá»‘i Cao cá»§a game thá»§ Path of Exile 2. Nhiá»‡m vá»¥ cá»§a báº¡n lÃ  tráº£ lá»�i cÃ¢u há»�i: 'Tá»‘t nháº¥t bÃ¢y giá»� mÃ¬nh nÃªn lÃ m gÃ¬?' (What is the best tactical action right now?).
Quy táº¯c chiáº¿n thuáº­t POE2:
1. Táº§ng siÃªu tá»‘c C++ Reflex Ä‘Ã£ tá»± Ä‘á»™ng lo viá»‡c bÆ¡m mÃ¡u gáº¥p khi HP < 50% vÃ  Iframe Dodge Roll khi bá»‹ burst sÃ¡t thÆ°Æ¡ng.
2. Nhiá»‡m vá»¥ cá»§a báº¡n lÃ  Ä‘Æ°a ra chá»‰ thá»‹ vÄ© mÃ´: KITE (tháº£ diá»�u khi quÃ¡i Ä‘Ã´ng/Ã¡p sÃ¡t), RETREAT_TO_SAFE_ZONE (rÃºt lui vá»� vá»‹ trÃ­ Ä‘Ã£ dá»�n sáº¡ch), FOCUS_ELITE (dá»“n dame boss), REFILL_FLASKS (háº¿t bÃ¬nh mÃ¡u cáº§n rÃºt vá»� thÃ nh), PORTAL_OUT (má»Ÿ cá»•ng thoÃ¡t hiá»ƒm khi quÃ¡ nguy cáº¥p), hoáº·c LOOT_SAFETY_WINDOW (nháº·t Ä‘á»“ khi Ä‘Ã£ an toÃ n).
3. CÃ¢u tráº£ lá»�i action_summary pháº£i cá»±c ká»³ sÃºc tÃ­ch, dá»©t khoÃ¡t, mang phong cÃ¡ch chá»‰ huy chiáº¿n trÆ°á»�ng, giáº£i thÃ­ch ngáº¯n gá»�n nguyÃªn nhÃ¢n.uO   
HÃ£y Ä‘Æ°a ra quyáº¿t Ä‘á»‹nh chiáº¿n thuáº­t tá»‘i Æ°u nháº¥t ngay lÃºc nÃ y.)Úagent_behavior)ÚmodelÚsystem_instructionsÚresponse_schemaÚtoolsÚcapabilities)ÚconfigNzD[TacticalBrain] Antigravity SDK runtime fallback sang GenAI Client: z	image/png)ÚdataÚ	mime_typec            
      ó~   •— ‰ j                              ‰j        ‰t          j        ‰dt
          d¬¦  «        ¬¦  «        S )Nzapplication/jsongš™™™™™¹?)Úsystem_instructionÚresponse_mime_typer¦   Útemperature)r¤   Úcontentsr©   )ÚmodelsÚgenerate_contentrW   Úgenai_typesÚGenerateContentConfigr)   )Úclientr°   r]   r­   s   €€€€r!   r4   z8TacticalBrain._query_antigravity_agent.<locals>.<lambda>ø   sG   ø€ ˜FœM×:Ò:Ø"œoØ!)Ý*Ô@Ø/AØ/AÝ,BØ(+ð	 ñ  ô  ð ;ñ 	ô 	€ r    z9[TacticalBrain] GenAI API error, fallback to heuristics: )ÚANTIGRAVITY_AVAILABLEr
   rW   r)   r@   rK   Ú	agy_typesÚCapabilitiesConfigÚAgentBehaviorÚINTERACTIVEr	   ÚchatÚstructured_outputÚmodel_validaterf   rd   Úwarningra   Úappendr³   ÚPartÚ
from_bytesrk   rl   Úrun_in_executorÚtextÚmodel_validate_jsonrn   rM   ro   )r]   r¡   r†   Úuser_promptr©   ÚagentÚresprª   rh   rs   Úresponserµ   r°   r­   s   `          @@@r!   r‚   z&TacticalBrain._query_antigravity_agentÈ   sÃ  øøøøè è € ð
uð 	ð *Ð{Ð{Ð{ˆõ !ñ 	kðkÝ)Øœ/Ø(:Ý$:Ý0Õ2IÐJÝ!*Ô!=Ý'0Ô'>Ô'Jð"ñ "ô "ðñ ô �õ !¨Ð/Ñ/Ô/ð Kð Kð Kð Kð Kð Kð K°5Ø!&§¢¨KÑ!8Ô!8Ð8Ð8Ð8Ð8Ð8Ð8�DØ!%×!7Ò!7Ñ!9Ô!9Ð9Ð9Ð9Ð9Ð9Ð9�DØð KÝ5×DÒDÀTÑJÔJð	Kð Kð Kð Kñ Kô Kð Kð Kð Kð Kð Kð Kð Kð KðKðKð Kð Kñ Kô Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Køøøð Kð Kð Kð Køøõ
 ð kð kð kÝ—’ÐiÐfgÐiÐiÑjÔjÐjÐjÐjÐjÐjÐjøøøøðkøøøð Ô"ˆØð 	`ð`Ø&(�Øð jØ—O’O¥KÔ$4×$?Ò$?À[Ð\gÐ$?Ñ$hÔ$hÑiÔiÐiØ—’ Ñ,Ô,Ð,åÔ-Ñ/Ô/�Ø!%×!5Ò!5Øð	ð 	ð 	ð 	ð 	ð 	ð 	ñ"ô "ð ð ð ð ð ð �ð ”=ð UÝ1×EÒEÀhÄmÑTÔTÐTðUøåð `ð `ð `Ý—’Ð^Ð[\Ð^Ð^Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_øøøøð`øøøð ×1Ò1°$´/Ô2OÑPÔPÐPs\   —A"D Á9AC0Ã
D ÃD Ã0
C:Ã:D Ã=C:Ã>D Ä
D3ÄD.Ä.D3Å B'G) Ç)
HÇ3HÈHÚrecc                 óf  — |j         }|dk    rdS |j        r|j        nd\  }}}|j        pd}t                               d|› d|d›d|d›d|d›d|› d	�¦  «         	 |d
k    r| j                             ¦   «          dS dS # t          $ r(}t                               d|› �¦  «         Y d}~dS d}~ww xY w)uQ   Ä�áº©y lá»‡nh Ä‘iá»�u khiá»ƒn vÄ© mÃ´ vÃ o Command Ring Buffer (Offset 0x300000).r   Nr2   u1   [TacticalBrain -> Core] PhÃ¡t lá»‡nh MacroOpCode=u    tá»›i má»¥c tiÃªu XYZ=(rF   z, z) (Target ID: r`   éc   u9   [TacticalBrain] Lá»—i Ä‘áº©y lá»‡nh vÃ o Command Buffer: )	r7   r6   r0   rd   re   rM   Úsend_panic_stoprf   rg   )r]   rÉ   ÚopcodeÚtxÚtyÚtzÚ	target_idrh   s           r!   rƒ   z)TacticalBrain._dispatch_directive_to_core  sF  € àÔ(ˆØ�QŠ;ˆ;ØˆFà14Ô1IÐ^�SÔ-Ð-È‰
ˆˆB�ØÔ+Ð0¨qˆ	å�Šð  _Èð  _ð  _Ðhjð  _ð  _ð  _Ðrtð  _ð  _ð  _Ð|~ð  _ð  _ð  _ð  S\ð  _ð  _ð  _ñ  	`ô  	`ð  	`ð	ZØ˜Š|ˆ|Ø”×/Ò/Ñ1Ô1Ð1Ð1Ð1ð ˆ|øåð 	Zð 	Zð 	ZÝ�LŠLÐXÐUVÐXÐXÑYÔYÐYÐYÐYÐYÐYÐYÐYøøøøð	Zøøøs   ÁA> Á>
B0ÂB+Â+B0c           
      óŽ  — |j         j        }|j        }|dk     r0t          t          j        t          j        dd|d›d|› d�d¬¦  «        S |d	k     r3|d
k    r-t          t          j        t          j	        dd|d›d�d¬¦  «        S |dk    r,t          t          j
        t          j	        dd|› d�d¬¦  «        S |d
k    r(t          t          j        t          j        ddd¬¦  «        S |j        d
k    r1t          t          j        t          j        dd|j        › d�d¬¦  «        S t          t          j        t          j        ddd
¬¦  «        S )u_   Há»‡ thá»‘ng luáº­t chiáº¿n thuáº­t dá»± phÃ²ng Ä‘á»™ trá»… micro-giÃ¢y (Zero Network Latency).rE   u>   Má»Ÿ Portal rÃºt lui kháº©n cáº¥p vá»� lÃ ng ngay láº­p tá»©c!u   MÃ¡u tá»¥t nguy hiá»ƒm (rF   u   %), cÃ³ u    quÃ¡i Ä‘ang bao vÃ¢y.é   ©r+   r,   r-   r.   r7   g     €F@r   uK   LÃ¹i gáº¥p ra khá»�i táº§m cÃ o cá»§a quÃ¡i, chá»� bÃ¬nh mÃ¡u há»“i Ä‘áº§y!u
   MÃ¡u cÃ²n uD   %, cáº§n táº¡o khoáº£ng cÃ¡ch Ä‘á»ƒ trÃ¡nh dÃ­nh combo Ä‘Ã²n Ä‘Ã¡nh.é   uS   Tháº£ diá»�u lÃ¹i tá»«ng bÆ°á»›c, xáº£ ká»¹ nÄƒng diá»‡n rá»™ng giáº£i tá»�a quÃ¡i!u   Máº­t Ä‘á»™ quÃ¡i cao (u.    con quÃ¢y kÃ­n). Cáº§n vá»«a Ä‘i vá»«a báº¯n.uA   Dá»“n sÃ¡t thÆ°Æ¡ng dá»©t Ä‘iá»ƒm quÃ¡i má»¥c tiÃªu gáº§n nháº¥t!u6   Sá»‘ lÆ°á»£ng quÃ¡i trong táº§m kiá»ƒm soÃ¡t an toÃ n.é   u=   Khu vá»±c sáº¡ch bÃ³ng quÃ¡i, nhanh chÃ³ng nháº·t Ä‘á»“ rÆ¡i!u'   KhÃ´ng cÃ³ quÃ¡i váº­t xung quanh, cÃ³ u!    váº­t pháº©m trÃªn máº·t Ä‘áº¥t.é   uD   Khu vá»±c an toÃ n, tiáº¿p tá»¥c di chuyá»ƒn khÃ¡m phÃ¡ báº£n Ä‘á»“!u)   KhÃ´ng cÃ³ má»‘i Ä‘e dá»�a trá»±c tiáº¿p.)r|   r}   rœ   r)   r   r   r#   r'   r   r&   r   r   r%   r�   r   r$   r   )r]   rŠ   Úhp_pctÚmonsterss       r!   rn   z+TacticalBrain._rule_based_tactical_fallback  s·  € à”Ô*ˆØÔ&ˆà�DŠ=ˆ=Ý)Ý"3Ô">Ý(Ô1Ø_Ø#r¸fÐ#rÐ#rÐ#rÐRZÐ#rÐ#rÐ#rØ$%ðñ ô ð ð �dŠ]ˆ]˜x¨!š|˜|Ý)Ý"3Ô"HÝ(Ô-Ølð $A°ð  $Að  $Að  $Að  $AØ$%ðñ ô ð ð ˜Š]ˆ]Ý)Ý"3Ô"8Ý(Ô-ØtØ#u¸XÐ#uÐ#uÐ#uØ$%ðñ ô ð ð ˜Š\ˆ\Ý)Ý"3Ô"?Ý(Ô1ØbØ#[Ø$%ðñ ô ð ð Ô Ò!Ð!Ý)Ý"3Ô"FÝ(œ_Ø^ð $AÈTÔM]ð  $Að  $Að  $AØ$%ðñ ô ð õ *Ý"3Ô"AÝ(œ_ØeØ#NØ$%ðñ ô ð r    Úmsgc                 óR   — t          t          j        t          j        |dd¬¦  «        S )Nu&   Khuyáº¿n nghá»‹ an toÃ n tá»©c thá»�i.r   rÔ   )r)   r   r   r#   r%   )r]   rÚ   s     r!   ry   z-TacticalBrain._create_fallback_recommendationT  s.   € Ý%Ý/Ô=Ý$Ô-ØØGØ !ð
ñ 
ô 
ð 	
r    )NN)T)N)r   r   r   r8   r   r   r:   r^   r\   Úboolr)   rt   rq   r   rz   Úbytesr‚   rƒ   rn   ry   r   r    r!   r   r   k   s�  € € € € € ðð ð
ð  8¨MÔ#:ð ÈHÐUXÌMð ð ð ð ðVð Vð VðHð H°dð HÐF\ð Hð Hð Hð Hð$(ð $(°tð $(ÐG]ð $(ð $(ð $(ð $(ðL
Ð,Að 
Àcð 
ð 
ð 
ð 
ð@Qð @Q¸sð @QÐQYÐZ_ÔQ`ð @Qð  mCð @Qð @Qð @Qð @QðJZÐ/Eð Zð Zð Zð Zð"4Ð2Gð 4ÐLbð 4ð 4ð 4ð 4ðl
°3ð 
Ð;Qð 
ð 
ð 
ð 
ð 
ð 
r    )(r8   rk   ÚloggingrU   Úenumr   Útypingr   r   r   Úpydanticr   r   Úgoogle.antigravityr	   r
   r   r·   r¶   ÚImportErrorÚgoogler   Úgoogle.genair³   rb   Ú"src.assistant_tool.core_shm_bridger   r   Ú"src.assistant_tool.screen_capturerr   Ú	getLoggerrd   r:   r   r#   r)   r@   r<   rK   r   r   r    r!   ú<module>ré      s€  ððð ð €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %ð"Ø:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ø5Ð5Ð5Ð5Ð5Ð5Ø ÐÐøØð "ð "ð "Ø!ÐÐÐð"øøøðØÐÐÐÐÐØ1Ð1Ð1Ð1Ð1Ð1Ø€O€OøØð ð ð Ø€O€O€Oðøøøð TÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ =Ð =Ð =Ð =Ð =Ð =à	ˆÔ	˜?Ñ	+Ô	+€ð	$ð 	$ð 	$ð 	$ð 	$˜˜Tñ 	$ô 	$ð 	$ðð ð ð ð �#�tñ ô ð ðð ð ð ð ˜Yñ ô ð ð@<¨Sð <°Sð <ð <ð <ð <ð
d eð d°uð dÈð dÐRUð dð dð dð dðp
ð p
ð p
ð p
ð p
ñ p
ô p
ð p
ð p
ð p
s!   ¨9 ¹AÁAÁA ÁA ÁA 