§
    ‡„›j  ã                  ó<  — d dl mZ d dlZd dlmZ d dlZ G d„ deej        ¦  «        Z G d„ deej        ¦  «        Z	 G d„ d	ej
        ¦  «        Z G d
„ dej
        ¦  «        Z G d„ dej
        ¦  «        Z G d„ dej
        ¦  «        Z G d„ dej
        ¦  «        ZdS )é    )ÚannotationsN)ÚAnyc                  ó:   — e Zd ZdZdZdZdZdZedd
„¦   «         Z	dS )ÚAiProviderTypez"Canonical enterprise AI providers.ÚantigravityÚ
openrouterÚlmstudioÚgeminiÚvalueú
str | NoneÚreturnú'AiProviderType'c                óà   — |s| j         S t          |¦  «                             ¦   «                              ¦   «         }|dv r| j         S |dv r| j        S |dv r| j        S |dv r| j        S | j         S )zLNormalize various string forms (e.g. 'antigravity_sdk') into canonical Enum.)r   Úantigravity_sdkÚgoogle_antigravity)r   Úopen_router)r	   Ú	lm_studioÚlocal)r
   ÚgoogleÚgemini_direct)ÚANTIGRAVITYÚstrÚlowerÚstripÚ
OPENROUTERÚLMSTUDIOÚGEMINI_DIRECT)Úclsr   Úvs      ú/C:\Projects\DSCons\app\core\ai\domain\models.pyÚfrom_strzAiProviderType.from_str   s�   € ð ð 	#Ø”?Ð"Ý�‰JŒJ×ÒÑÔ×$Ò$Ñ&Ô&ˆØÐHÐHÐHØ”?Ð"ØÐ/Ð/Ð/Ø”>Ð!ØÐ4Ð4Ð4Ø”<ÐØÐ7Ð7Ð7ØÔ$Ð$ØŒÐó    N)r   r   r   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   Úclassmethodr!   © r"   r    r   r      sL   € € € € € Ø,Ð,à€KØ€JØ€HØ€Màðð ð ñ „[ðð ð r"   r   c                  ó"   — e Zd ZdZdZdZdZdZdS )ÚAiCapabilityz/Capabilities supported by models in DSCons ERP.Útext_generationÚmultimodal_visionÚstructured_jsonÚcode_executionN)r#   r$   r%   r&   ÚTEXT_GENERATIONÚMULTIMODAL_VISIONÚSTRUCTURED_JSONÚCODE_EXECUTIONr(   r"   r    r*   r*   !   s)   € € € € € Ø9Ð9à'€OØ+ÐØ'€OØ%€N€N€Nr"   r*   c                  óÂ   — e Zd ZU dZded<   ded<   ded<   ded<    ej        e¬¦  «        Zd	ed
<   dZ	ded<   dZ
ded<   dZded<   dZded<    ej        d¬¦  «        ZdS )ÚAiModelSpeczCSpecification of an AI model registered in the Enterprise Registry.r   Úcanonical_idr   Úprovider_typeÚprovider_model_idÚdisplay_name)Údefault_factoryzlist[AiCapability]Úcapabilitiesi   ÚintÚcontext_windowi   Úmax_output_tokensNr   Úfallback_canonical_idTÚboolÚ	is_active)Úfrozen)r#   r$   r%   r&   Ú__annotations__ÚpydanticÚFieldÚlistr:   r<   r=   r>   r@   Ú
ConfigDictÚmodel_configr(   r"   r    r4   r4   *   sÁ   € € € € € € ØMÐMàÐÐÑØ!Ð!Ð!Ñ!ØÐÐÑØÐÐÑØ'5 x¤~ÀdÐ'KÑ'KÔ'K€LÐKÐKÐKÑKØ!€NÐ!Ð!Ð!Ñ!Ø!ÐÐ!Ð!Ð!Ñ!Ø(,ÐÐ,Ð,Ð,Ñ,Ø€IÐÐÐÑà&�8Ô&¨dÐ3Ñ3Ô3€L€L€Lr"   r4   c                  ó’   — e Zd ZU dZdZded<   dZded<   dZded	<   dZded
<   dZ	ded<   dZ
ded<   dZded<   dZded<   dZded<   dS )ÚAiTextRequestz5Input contract for standard text and chat completion.Ú r   ÚpromptNr   Úsystem_promptzlist[dict[str, Any]] | NoneÚmessagesÚcanonical_model_idúAiProviderType | NoneÚpreferred_providerÚ
agent_codegš™™™™™É?ÚfloatÚtemperaturez
int | NoneÚ
max_tokensúdict[str, Any] | NoneÚ
extra_body)r#   r$   r%   r&   rK   rB   rL   rM   rN   rP   rQ   rS   rT   rV   r(   r"   r    rI   rI   :   s³   € € € € € € Ø?Ð?à€FÐÐÐÑØ $€MÐ$Ð$Ð$Ñ$Ø,0€HÐ0Ð0Ð0Ñ0Ø%)ÐÐ)Ð)Ð)Ñ)Ø04ÐÐ4Ð4Ð4Ñ4Ø!€JÐ!Ð!Ð!Ñ!Ø€KÐÐÐÑØ!€JÐ!Ð!Ð!Ñ!Ø(,€JÐ,Ð,Ð,Ñ,Ð,Ð,r"   rI   c                  óœ   — e Zd ZU dZded<   dZded<   dZded<   dZd	ed
<   dZd	ed<   dZ	d	ed<   dZ
ded<   dZd	ed<   dZded<   dZded<   dS )ÚAiVisionRequestz9Input contract for multimodal vision / document analysis.r   rK   Nzbytes | NoneÚimage_bytesz
image/jpegÚ
image_mimer   Údata_uriÚ	file_pathrN   rO   rP   rQ   çš™™™™™¹?rR   rS   iÐ  r;   rT   )r#   r$   r%   r&   rB   rY   rZ   r[   r\   rN   rP   rQ   rS   rT   r(   r"   r    rX   rX   H   s¼   € € € € € € ØCÐCà€K€K�KØ $€KÐ$Ð$Ð$Ñ$Ø"€JÐ"Ð"Ð"Ñ"Ø€HÐÐÐÑØ €IÐ Ð Ð Ñ Ø%)ÐÐ)Ð)Ð)Ñ)Ø04ÐÐ4Ð4Ð4Ñ4Ø!€JÐ!Ð!Ð!Ñ!Ø€KÐÐÐÑØ€JÐÐÐÑÐÐr"   rX   c                  ór   — e Zd ZU dZded<   dZded<   dZded<   dZded	<   dZd
ed<   dZ	ded<   dZ
ded<   dS )ÚAiStructuredRequestz2Input contract for strictly typed JSON extraction.r   rK   Nr   rL   rU   Úschema_dictrN   rO   rP   rQ   r]   rR   rS   )r#   r$   r%   r&   rB   rL   r`   rN   rP   rQ   rS   r(   r"   r    r_   r_   W   s‰   € € € € € € Ø<Ð<à€K€K�KØ $€MÐ$Ð$Ð$Ñ$Ø)-€KÐ-Ð-Ð-Ñ-Ø%)ÐÐ)Ð)Ð)Ñ)Ø04ÐÐ4Ð4Ð4Ñ4Ø!€JÐ!Ð!Ð!Ñ!Ø€KÐÐÐÑÐÐr"   r_   c                  ó†   — e Zd ZU dZded<   dZded<   ded<   ded	<   d
Zded<   dZded<   dZded<   d
Z	ded<   dZ
ded<   dS )Ú
AiResponsez)Normalized response from any AI provider.r   ÚcontentNrU   Ústructured_dataÚ
model_usedr   Úprovider_usedg        rR   Ú
latency_msr   r;   Úprompt_tokensÚcompletion_tokensÚcost_usdFr?   Úis_fallback)r#   r$   r%   r&   rB   rd   rg   rh   ri   rj   rk   r(   r"   r    rb   rb   c   s�   € € € € € € Ø3Ð3à€L€L�LØ-1€OÐ1Ð1Ð1Ñ1Ø€O€O�OØ!Ð!Ð!Ñ!Ø€JÐÐÐÑØ€MÐÐÐÑØÐÐÐÐÑØ€HÐÐÐÑØ€KÐÐÐÑÐÐr"   rb   )Ú
__future__r   ÚenumÚtypingr   rC   r   ÚEnumr   r*   Ú	BaseModelr4   rI   rX   r_   rb   r(   r"   r    ú<module>rq      s‚  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø €€€ðð ð ð ð �S˜$œ)ñ ô ð ð2&ð &ð &ð &ð &�3˜œ	ñ &ô &ð &ð4ð 4ð 4ð 4ð 4�(Ô$ñ 4ô 4ð 4ð -ð -ð -ð -ð -�HÔ&ñ -ô -ð -ðð ð ð ð �hÔ(ñ ô ð ð	ð 	ð 	ð 	ð 	˜(Ô,ñ 	ô 	ð 	ðð ð ð ð �Ô#ñ ô ð ð ð r"   