+
    „WÝjË  ã                  ó
  € R t ^ RIHt ^ RIHt ^ RIHtHt ^ RIH	t	 ^ RI
HtHt ]! ^4      t]! ^d4      tRtRt]! RR	7       ! R
 R4      4       tR R ltR R ltR R ltR R ltR R ltR R ltRRRRRRRR/R R lltR# )zBExpensive-model confirmation helpers for model selection surfaces.)Úannotations)Ú	dataclass)ÚDecimalÚInvalidOperation)ÚOptional)Ú	ModelInfoÚPROVIDER_TO_MODELS_DEVzopenai/gpt-5.5-proz&did you mean to select openai/gpt-5.5?T)Úfrozenc                  óX   € ] tR t^t$ RtR]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R
tR# )ÚExpensiveModelWarningz=Confirmation payload for models above Hermes' cost guardrail.ÚstrÚmodelÚproviderúOptional[Decimal]Úinput_cost_per_millionÚoutput_cost_per_millionÚsourceÚmessage© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Ú__static_attributes__r   ó    ÚOC:\Users\johnn\AppData\Local\hermes\hermes-agent\hermes_cli\model_cost_guard.pyr   r      s%   ‡ áGàƒJØƒMØ-Ó-Ø.Ó.ØƒKØ‡Lr   r   c               ó    € V ^8„  d   QhRRRR/# )é   ÚvalueÚobjectÚreturnr   r   )Úformats   "r   Ú__annotate__r$      s   € ÷ ñ �vð Ð"3ñ r   c                óh   €  V f   R # \        \        V 4      4      #   \        \        3 d     R # i ; i©N)r   r   r   Ú
ValueError©r    s   &r   Ú_to_decimalr)      s6   € ðØ’}ˆtÐ=¬'´#°e³*Ó*=Ð=øÜœjÐ)ô Úðús   ‚ ˆ œ1°1c               ó    € V ^8„  d   QhRRRR/# )r   r    r   r"   r   r   )r#   s   "r   r$   r$   %   s   € ÷ =ñ =Ð*ð =¨sñ =r   c                ó   € V f   R# RV R R2# )NÚunknownÚ$z.2fz/Mr   r(   s   &r   Ú_format_moneyr.   %   s   € Øšˆ9Ð<¨Q¨u°S¨k¸Ð+<Ð<r   c               ó    € V ^8„  d   QhRRRR/# )r   Ú
model_infoúOptional[ModelInfo]r"   z0tuple[Optional[Decimal], Optional[Decimal], str]r   )r#   s   "r   r$   r$   )   s    € ÷ añ aØ#ðaØ(Xñar   c                ó�   € V e   V P                  4       '       g   R# \        V P                  4      \        V P                  4      R3# )Nz
models.dev)NNÚ )Úhas_cost_datar)   Ú
cost_inputÚcost_output)r0   s   &r   Ú_pricing_from_model_infor7   )   s@   € àÒ ×!9Ñ!9×!;Ò!;ØÐÜ�z×,Ñ,Ó-¬{¸:×;QÑ;QÓ/RÐT`Ð`Ð`r   c               ó    € V ^8„  d   QhRRRR/# )r   r   úOptional[str]r"   r   )r#   s   "r   r$   r$   0   s   € ÷ Jñ J¨ð J¸=ñ Jr   c                ó’   € T ;'       g    R P                  4       P                  4       pV'       d   \        P                  ! V4      # R# )r3   N)ÚstripÚlowerr   Úget)r   Ú
normalizeds   & r   Ú_known_models_dev_providerr?   0   s8   € Ø—.�.˜b×'Ñ'Ó)×/Ñ/Ó1€Jß5?Ô!×%Ò% jÓ1ÐIÀTÐIr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r9   r0   r1   r"   Úboolr   )r#   s   "r   r$   r$   5   s)   € ÷ Gñ GØðGØ)<ðGØAEñGr   c                óÒ   € \        V 4      pV'       d   Vf   R# \        \        VRR4      ;'       g    R4      P                  4       P	                  4       pV'       * ;'       g    W28H  # )NFÚprovider_idr3   )r?   r   Úgetattrr;   r<   )r   r0   Úexpected_providerÚactual_providers   &&  r   Ú_can_trust_model_info_pricingrG   5   sY   € ä2°8Ó<Ðß 
Ò 2ÙÜœ' *¨m¸RÓ@×FÐFÀBÓG×MÑMÓO×UÑUÓW€OØÔ×FÐF /Ñ"FÐFr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Ú
model_namer   r   r9   Úbase_urlr"   rA   r   )r#   s   "r   r$   r$   >   s,   € ÷ +ñ +Øð+Ø"/ð+Ø;Hð+ØMQñ+r   c               óf   €  ^ RI Hp V! WVR7      pTP                  R8g  #   \         d     R# i ; i)é    )Úresolve_billing_route©r   rJ   Fr,   )Úagent.usage_pricingrM   Ú	ExceptionÚbilling_mode)rI   r   rJ   rM   Úroutes   &$$  r   Ú_can_trust_pricing_lookuprS   >   s=   € ðÝ=á% jÈhÔWˆð ×Ñ Ñ*Ð*øô ô Úðús   ‚! ¡0¯0r   NrJ   Úapi_keyr0   c               ó0   € V ^8„  d   QhRRRRRRRRRRR	R
/# )r   rI   r   r   r9   rJ   rT   r0   r1   r"   zOptional[ExpensiveModelWarning]r   )r#   s   "r   r$   r$   I   sF   € ÷ <cñ <cØð<cØ"/ð<cØBOð<càð<cà/Bð<cð %ñ<cr   c          
     ó4  aa€ T ;'       g    RP                  4       pV'       g   R# RoRoRp\        W4      '       d   \        V4      w  oopR VV3R llpV! 4       '       d.   \        V4      '       d    ^ RIHp \        V! W4      4      w  oopV! 4       '       dM   \        WQVR7      '       d:    ^ RIH	p	 V	! WQW#R7      p
V
e%   V
P                  oV
P                  oV
P                  pVP                  4       \        8H  pSRJ;'       d
    S\        8„  pSRJ;'       d
    S\         8„  pV'       g   V'       g   V'       g   R# R	RV R
2R\#        S4       2R\#        S4       2R.pV'       d   VP%                  RV R24       V'       d   VP%                  \&        4       VP%                  R4       \)        YQ;'       g    RP                  4       SST;'       g    RRP+                  V4      R7      #   \         d     ELqi ; i  \         d    Rp
 ELTi ; i)z¯Warning payload when KNOWN pricing exceeds the safety thresholds (never fires on unknown
pricing). Call after model resolution so aliases / provider-specific ids have settled.r3   Nc               ó   € V ^8„  d   QhRR/# )r   r"   rA   r   )r#   s   "r   r$   Ú-expensive_model_warning.<locals>.__annotate__Y   s   € ÷ :ñ :�tñ :r   c                 ó$   <€ S R J ;'       d    SR J # r&   r   )Ú
input_costÚoutput_costs   €€r   Ú	_unpricedÚ*expensive_model_warning.<locals>._unpricedY   s   ø€ Ø˜TÐ!×9Ð9 k°TÐ&9Ð9r   )Úget_model_inforN   )Úget_pricing_entry)r   rJ   rT   z!!! EXPENSIVE MODEL WARNING !!!z2 has known pricing above Hermes' safety threshold.zInput tokens: zOutput tokens: zJThreshold: more than $20/M input tokens or more than $100/M output tokens.zPricing source: Ú.z-Confirm only if you intend to use this model.r,   Ú
)r   r   r   r   r   r   )r;   rG   r7   r?   Úagent.models_devr^   rP   rS   rO   r_   r   r   r   r<   ÚGPT55_PRO_OPENROUTER_IDÚINPUT_COST_WARNING_THRESHOLDÚOUTPUT_COST_WARNING_THRESHOLDr.   ÚappendÚGPT55_SUGGESTIONr   Újoin)rI   r   rJ   rT   r0   r   r   r\   r^   r_   ÚentryÚis_known_gpt55_pro_confusionÚ
over_inputÚover_outputÚlinesrZ   r[   s   &$$$$          @@r   Úexpensive_model_warningrn   I   s  ù€ ð ×Ð˜2×$Ñ$Ó&€EßÙà$(€JØ%)€KØ€FÜ$ X×:Ò:Ü*BÀ:Ó*NÑ'ˆ
�K ÷:ñ :ñ ‡{‚{Ô1°(×;Ò;ð	Ý7ä.FÁ~ÐV^ÓGfÓ.gÑ+ˆJ˜ Vñ ‡{‚{Ô0°ÐT\×]Ó]ð	Ý=á% eÈÔcˆEð ÒØ×5Ñ5ˆJØ×7Ñ7ˆKØ—\‘\ˆFà#(§;¡;£=Ô4KÑ#KÐ Ø 4Ð'×UÐU¨JÔ9UÑ,U€JØ TÐ)×YÐY¨kÔ<YÑ.Y€KßŸk×2NÙð 	*Ø
Øˆ'ÐCÐDØ
œ zÓ2Ð3Ð4Ø
œ-¨Ó4Ð5Ð6ØTðV€E÷ Ø�‰Ð'¨ x¨qÐ1Ô2ß#Ø�‰Ô%Ô&Ø	‡L�LÐ@ÔAä ØŸ~˜~¨2×4Ñ4Ó6ÈzØ +°F×4GÐ4G¸iÐQU×QZÑQZÐ[`ÓQaôcð cøôE ô 	Úð	ûô ô 	Ø‹Eð	ús$   Á6G4 Â2H Ç4HÈHÈHÈH)r   Ú
__future__r   Údataclassesr   Údecimalr   r   Útypingr   rb   r   r   rd   re   rc   rg   r   r)   r.   r7   r?   rG   rS   rn   r   r   r   Ú<module>rs      s¨   ðÙ Hå "å !ß -Ý ç >ñ  ' r›{Ð Ù '¨£Ð Ø.Ð Ø;Ð ñ �$Ô÷ð ó ðõõ=õaõJõ
Gõ+ð<cØ26ð<cØRVð<cà!ð<càEI÷<cñ <cr   