§
    D?ºjó  ã                  ó°   — d dl 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d dl	Z	d dl
mZ d dlmZmZmZmZmZmZ  ej        d¦  «        Z G d„ d¦  «        ZdS )é    )ÚannotationsN)ÚAny)ÚAiModelSpecÚAiProviderTypeÚ
AiResponseÚAiStructuredRequestÚAiTextRequestÚAiVisionRequestzdscons.ai.adapter.antigravityc                  ó0   — e Zd ZdZ	 	 ddd
„Zdd„Zdd„ZdS )ÚAntigravitySdkAdapterz?Primary Enterprise Native Adapter using Google Antigravity SDK.Nç      .@Úapi_keyú
str | NoneÚtimeout_secondsÚfloatÚreturnÚNonec                ób   — |pt           j                             dd¦  «        | _        || _        d S )NÚGEMINI_API_KEYÚ )ÚosÚenvironÚgetÚ_api_keyÚ_timeout)Úselfr   r   s      úMC:\Projects\DSCons\app\core\ai\infrastructure\adapters\antigravity_adapter.pyÚ__init__zAntigravitySdkAdapter.__init__   s,   € ð
  ÐG¥2¤:§>¢>Ð2BÀBÑ#GÔ#GˆŒØ'ˆŒˆˆó    Úrequestr	   Úspecr   r   c              ƒ  óþ  K  — t          j        ¦   «         }d}|j        r|d|j        › d�z  }|j        rŠ|j        D ]�}|                     dd¦  «                             ¦   «         }|                     dd¦  «        }t          |t          ¦  «        r!d„ |D ¦   «         }d                     |¦  «        }||› d	|› d�z  }Œ‚n|j	        r|d
|j	        › d�z  }d}		 ddl
m}
m}  ||j        | j        ¬¦  «        } |
|¦  «        4 ƒd{V —†}t          j        |                     |¦  «        | j        ¬¦  «        ƒ d{V —†}|                     ¦   «         ƒ d{V —†}	ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   nË# t(          $ r¾ ddlm} ddlm} |                     | j        pt4          j                             dd¦  «        ¬¦  «        }|                     |j        pd|j        pd¬¦  «        }t          j        |j        j                              |j        ||¬¦  «        | j        ¬¦  «        ƒ d{V —†}|j        pd}	Y nw xY wt          j        ¦   «         |z
  dz  }tC          |	|j"        tF          j$        |¬¦  «        S )z4Executes text generation via Google Antigravity SDK.r   zSYSTEM INSTRUCTION:
z

ÚroleÚuserÚcontentc                ó–   — g | ]F}t          |t          ¦  «        r/|                     d ¦  «        dk    ¯0|                     dd¦  «        ‘ŒGS )ÚtypeÚtextr   )Ú
isinstanceÚdictr   )Ú.0Úps     r   ú
<listcomp>z7AntigravitySdkAdapter.generate_text.<locals>.<listcomp>3   sY   € ð "ð "ð "àÝ% a­Ñ.Ô.ð"ð 45·5²5¸±=´=ÀFÒ3JÐ3Jð Ÿš˜f bÑ)Ô)à3JÐ3JÐ3Jr   ú
z:
zUSER:
r   ©ÚAgentÚLocalAgentConfig©Úmodelr   N©Útimeout©Úgenai©Útypesr   ©r   çš™™™™™É?)ÚtemperatureÚsystem_instruction©r3   ÚcontentsÚconfigç     @�@©r%   Ú
model_usedÚprovider_usedÚ
latency_ms)%ÚtimeÚperf_counterÚsystem_promptÚmessagesr   Úupperr)   ÚlistÚjoinÚpromptÚgoogle.antigravityr0   r1   Úprovider_model_idr   ÚasyncioÚwait_forÚchatr   r(   ÚImportErrorÚgoogler7   Úgoogle.genair9   ÚClientr   r   ÚGenerateContentConfigr<   ÚaioÚmodelsÚgenerate_contentr   Úcanonical_idr   ÚANTIGRAVITY)r   r    r!   Út0rM   Úmr#   ÚcÚ
text_partsr%   r0   r1   r@   ÚagentÚrespr7   r9   ÚclientÚ
gen_configÚlatencys                       r   Úgenerate_textz#AntigravitySdkAdapter.generate_text#   sÇ  è è € õ ÔÑ Ô ˆð ˆØÔ ð 	JØÐI¨gÔ.CÐIÐIÐIÑIˆFàÔð 	3ØÔ%ð 
.ð 
.�Ø—u’u˜V VÑ,Ô,×2Ò2Ñ4Ô4�Ø—E’E˜) RÑ(Ô(�Ý˜a¥Ñ&Ô&ð .ð"ð "à!"ð"ñ "ô "�Jð
 Ÿ	š	 *Ñ-Ô-�AØ˜TÐ-Ð- aÐ-Ð-Ð-Ñ-��ð
.ð Œ^ð 	3ØÐ2 ¤Ð2Ð2Ð2Ñ2ˆFàˆð	&ØBÐBÐBÐBÐBÐBÐBÐBà%Ð%ØÔ,Øœðñ ô ˆFð �u˜V‘}”}ð ,ð ,ð ,ð ,ð ,ð ,ð ,¨Ý$Ô-¨e¯jªj¸Ñ.@Ô.@È$Ì-ÐXÑXÔXÐXÐXÐXÐXÐXÐX�Ø $§	¢	¡¤Ð+Ð+Ð+Ð+Ð+Ð+�ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,øøõ ð 	&ð 	&ð 	&à$Ð$Ð$Ð$Ð$Ð$Ø*Ð*Ð*Ð*Ð*Ð*à—\’\¨$¬-Ð*_½2¼:¿>º>ÐJZÐ\^Ñ;_Ô;_�\Ñ`Ô`ˆFØ×4Ò4Ø#Ô/Ð6°3Ø#*Ô#8Ð#@¸Dð 5ñ ô ˆJõ !Ô)Ø”
Ô!×2Ò2ØÔ0Ø#Ø%ð 3ñ ô ð
 œðñ ô ð ð ð ð ð ð ˆDð ”i�o 2ˆGˆGˆGð%	&øøøõ( Ô$Ñ&Ô&¨Ñ+¨vÑ5ˆÝØØÔ(Ý(Ô4Øð	
ñ 
ô 
ð 	
s8   Ã0E9 ÄAE'ÅE9 Å'
E1Å1E9 Å4E1Å5E9 Å9CIÉ Ir
   c              ƒ  ó�  K  — t          j        ¦   «         }|j        }|j        pd}|sE|j        r>d|j        v r5|j                             dd¦  «        d         }t          j        |¦  «        }|sl|j        ret          j
                             |j        ¦  «        rAt          |j        d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   |st          d¦  «        ‚d}	 dd	lm}	m}
 dd
lm}  |||¬¦  «        } |
|j        | j        ¬¦  «        } |	|¦  «        4 ƒd{V —†}t-          j        |                     |j        |g¦  «        | j        ¬¦  «        ƒ d{V —†}|                     ¦   «         ƒ d{V —†}ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   ná# t8          $ rÔ ddlm} ddlm } | !                    | j        pt          j"         #                    dd¦  «        ¬¦  «        }|j$         %                    ||¬¦  «        }| &                    d¬¦  «        }t-          j        |j'        j(         )                    |j        |j        pd|g|¬¦  «        | j        ¬¦  «        ƒ d{V —†}|j        pd}Y nw xY wt          j        ¦   «         |z
  dz  }tU          ||j+        tX          j-        |¬¦  «        S )zOExecutes multimodal vision analysis via Google Antigravity SDK or Google GenAI.z
image/jpegú,é   ÚrbNz.No image payload provided for vision analysis.r   r   r/   )ÚImage)ÚdataÚ	mime_typer2   r4   r6   r8   r   r:   r;   )r<   u#   PhÃ¢n tÃ­ch tÃ i liá»‡u hÃ¬nh áº£nhr>   rA   rB   ).rF   rG   Úimage_bytesÚ
image_mimeÚdata_uriÚsplitÚbase64Ú	b64decodeÚ	file_pathr   ÚpathÚexistsÚopenÚreadÚ
ValueErrorrN   r0   r1   Úgoogle.antigravity.typesrk   rO   r   rP   rQ   rR   rM   r   r(   rS   rT   r7   rU   r9   rV   r   r   ÚPartÚ
from_bytesrW   rX   rY   rZ   r   r[   r   r\   )r   r    r!   r]   Ú	img_bytesrm   Úb64_dataÚfr%   r0   r1   rk   Úimg_objr@   ra   rb   r7   r9   rc   Úpartrd   re   s                         r   Úanalyze_visionz$AntigravitySdkAdapter.analyze_visiond   s1  è è € õ ÔÑ Ô ˆØÔ'ˆ	ØÔ&Ð6¨,ˆ	àð 	3˜WÔ-ð 	3°#¸Ô9IÐ2IÐ2IØÔ'×-Ò-¨c°1Ñ5Ô5°aÔ8ˆHÝÔ(¨Ñ2Ô2ˆIàð 	%˜WÔ.ð 	%µ2´7·>²>À'ÔBSÑ3TÔ3Tð 	%Ý�gÔ'¨Ñ.Ô.ð %°!ØŸFšF™HœH�	ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð ð 	OÝÐMÑNÔNÐNàˆð 	&ØBÐBÐBÐBÐBÐBÐBÐBØ6Ð6Ð6Ð6Ð6Ð6à�e °iÐ@Ñ@Ô@ˆGØ%Ð%ØÔ,Øœðñ ô ˆFð �u˜V‘}”}ð ,ð ,ð ,ð ,ð ,ð ,ð ,¨Ý$Ô-Ø—J’J ¤°Ð8Ñ9Ô9À4Ä=ðñ ô ð ð ð ð ð ð �ð !%§	¢	¡¤Ð+Ð+Ð+Ð+Ð+Ð+�ð	,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,øøõ
 ð 	&ð 	&ð 	&à$Ð$Ð$Ð$Ð$Ð$Ø*Ð*Ð*Ð*Ð*Ð*à—\’\¨$¬-Ð*_½2¼:¿>º>ÐJZÐ\^Ñ;_Ô;_�\Ñ`Ô`ˆFØ”:×(Ò(¨iÀ9Ð(ÑMÔMˆDØ×4Ò4Øð 5ñ ô ˆJõ !Ô)Ø”
Ô!×2Ò2ØÔ0Ø%œnÐUÐ0UÐW[Ð\Ø%ð 3ñ ô ð
 œðñ ô ð ð ð ð ð ð ˆDð ”i�o 2ˆGˆGˆGð%	&øøøõ( Ô$Ñ&Ô&¨Ñ+¨vÑ5ˆÝØØÔ(Ý(Ô4Øð	
ñ 
ô 
ð 	
sK   Â/CÃCÃCÃ/AF, Ä2AFÆF, Æ
F$Æ$F, Æ'F$Æ(F, Æ,CJ
Ê	J
)Nr   )r   r   r   r   r   r   )r    r	   r!   r   r   r   )r    r
   r!   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rf   r‚   © r   r   r   r      sd   € € € € € ØIÐIð #Ø!%ð(ð (ð (ð (ð (ð?
ð ?
ð ?
ð ?
ðB<
ð <
ð <
ð <
ð <
ð <
r   r   )Ú
__future__r   rP   rr   Úconcurrent.futuresÚ
concurrentÚioÚloggingr   rF   Útypingr   Úapp.core.ai.domain.modelsr   r   r   r   r	   r
   Ú	getLoggerÚloggerr   r‡   r   r   ú<module>r‘      s  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 
ˆÔ	Ð:Ñ	;Ô	;€ðH
ð H
ð H
ð H
ð H
ñ H
ô H
ð H
ð H
ð H
r   