+
    jHàj)  ã                  ó”   € R t ^ RIHt ^ RIHtHtHtHtHtH	t	 Rt
RtR R ltR R ltRR ltRtRt]
R,           tRtR R	 ltRR
 ltR# )a0  AWS Bedrock wizards: native Converse API (IAM chain, region-scoped model discovery)
and the Bedrock API Key mode on the OpenAI-compatible bedrock-mantle endpoint.

Imports of hermes_cli.auth / config / models stay lazy (tests patch them at call time).
Prompt strings and config write order are behavior.
)Úannotations)Ú_askÚ_ensure_dict_sectionÚ_finish_modelÚ_note_setup_failureÚ_pick_model_or_promptÚ_sayc               ó    € V ^8„  d   QhRRRR/# )é   Úregion_nameÚstrÚreturn© )Úformats   "ÚI/home/ubuntu/.hermes/hermes-agent/hermes_cli/model_setup_flows_bedrock.pyÚ__annotate__r      s   € ÷ Vñ V¨3ð V°3ñ Vó    c                ól   a€ T ;'       g    RP                  4       o\        V3R l\         4       R4      # )zJMap an AWS region name to its inference-profile geo prefix ('' = unknown).Ú c              3  ó^   <"  € T F"  w  rSP                  V4      '       g   K  Vx € K$  	  R # 5i©N©Ú
startswith)Ú.0ÚgeoÚprefixesÚrs   &  €r   Ú	<genexpr>Ú,bedrock_region_geo_prefix.<locals>.<genexpr>   s    øé € ÐP©+™˜¸¿¹Àh×9O—’«+ùs   ƒ-£
-)ÚlowerÚnextÚ_REGION_GEO)r   r   s   &@r   Úbedrock_region_geo_prefixr"      s-   ø€ à	×	Ð	˜×!Ñ!Ó#€AÜÔP­+ÓPÐRTÓUÐUr   c               ó$   € V ^8„  d   QhRRRRRR/# )r
   Úmodel_idr   r   r   Úboolr   )r   s   "r   r   r      s!   € ÷ ñ °ð À3ð È4ñ r   c                óð   a€ T ;'       g    RP                  4       o\        V3R l\         4       R4      pVe   SP                  R4      '       d   R# \	        V4      pV'       g   R# VR8X  d   VR9   # W#8H  # )zÞTrue when *model_id* can be invoked from *region_name*'s endpoint: bare foundation-model ids
and ``global.*`` profiles route from anywhere, geo-prefixed profiles only from their own
geography. Unknown regions hide nothing.r   c              3  óZ   <"  € T F   pSP                  V4      '       g   K  Vx € K"  	  R # 5ir   r   ©r   ÚpÚmids   & €r   r   Ú5bedrock_model_routable_from_region.<locals>.<genexpr>#   s    øé € ÐMÑ#7˜a¸3¿>¹>È!×;LŸšÓ#7ùó   ƒ+¡
+Núglobal.Túap.)r.   úapac.újp.)r   r    ÚBEDROCK_GEO_PREFIXESr   r"   )r$   r   Úmatched_geor   r*   s   &&  @r   Ú"bedrock_model_routable_from_regionr3      so   ø€ ð �>ˆ>�r×
 Ñ
 Ó
"€CÜÔMÕ#7ÓMÈtÓT€KØÒ˜cŸn™n¨Y×7Ò7ÙÜ
# KÓ
0€CßÙØ
ˆe„|àÐ5Ñ5Ð5ØÑÐr   c           
     ój  aa€ ^ RI HpHp ^ RIHp ^ RIHp RS R2oV! RRRR"R
7      pV! RV4      w  r‰V'       d2   ^ RIHp
 T
! T	;'       g    R	4      p\        RVR,           RV 24       MN\        RS 2R4       \        RRRR7      pVf   R# V'       g   \        R4       R# V! R	V4       Tp\        R4       \        4        VP                  R. 4      p\        R\        V4       R24       \        VRVRSVR7      pVV3R lp\        VRRV RS R2R RRVR!7       e   \        RS 24       R# R# )#u¤   Bedrock API Key mode on the OpenAI-compatible bedrock-mantle endpoint â€” for developers
without an AWS account who received a Bedrock API Key from their AWS admin.)Ú _resolve_api_key_provider_secretÚProviderConfig)Úsave_env_value©Ú_PROVIDER_MODELSzhttps://bedrock-mantle.z.api.aws/v1ÚbedrockÚBedrockÚapi_keyÚAWS_BEARER_TOKEN_BEDROCK)ÚidÚnameÚ	auth_typeÚapi_key_env_vars)Úformat_secret_source_suffixz  Bedrock API Key: :Né   Nu   ... âœ“z  Endpoint: r   T)ÚsecretÚ
cancel_msgNz  Cancelled.u     âœ“ API key saved.z
  Showing z curated modelsú  Model ID: Úcustom)Úcurrent_modelÚconfirm_providerÚconfirm_base_urlÚconfirm_api_keyc                ó¬   <€ \        V R 4      pVP                  R4      p\        V\        4      '       g   / pSVR&   RVR&   W2R&   S\        V R4      R&   R# )Ú	providerszbedrock-mantleÚbase_urlr=   Úkey_envr:   ÚregionN)r   ÚgetÚ
isinstanceÚdict)ÚcfgÚ_modelrM   Úmantle_entryÚmantle_base_urlrP   s   &&  €€r   Ú_finishÚ,_model_flow_bedrock_api_key.<locals>._finishR   sa   ø€ ô )¨¨kÓ:ˆ	Ø —}‘}Ð%5Ó6ˆÜ˜,¬×-Ò-ØˆLØ#2ˆ�ZÑ Ø"<ˆ�YÑØ&2Ð"Ñ#à9?Ô˜S )Ó,¨XÓ6r   zcustom:bedrock-mantleú  Default model set to: z (via Bedrock API Key, Ú)ú  No change.)Ú	no_changeÚdrop_base_urlÚdrop_api_modeÚfinish)r=   )Úhermes_cli.authr5   r6   Úhermes_cli.configr7   Úhermes_cli.modelsr9   Úhermes_cli.env_loaderrB   Úprintr   r   rQ   Úlenr   r   )ÚconfigrP   rH   r5   r6   r7   r9   Úbedrock_pconfigÚexisting_keyÚexisting_sourcerB   Úsource_suffixr<   Ú
model_listÚselectedrX   rW   s   &f&             @r   Ú_model_flow_bedrock_api_keyrn   /   sm  ù€ ÷ QÝ0Ý2Ø/°¨x°{ÐC€Oñ %¨	¸	ÈYð  jGô  H€OÙ$DÀYÐP_Ó$`Ñ!€LßÝEÙ3°O×4aÐ4aÐGaÓbˆÜÐ# L°Õ$5Ð#6°g¸m¸_ÐMÕNäˆ|˜OÐ,Ð-¨rÔ2ÜÐ,°TÀbÔIˆØŠ?ÙßÜ�.Ô!ÙÙÐ1°7Ô;ØˆÜÐ$Ô%Ü	„Gð "×%Ñ% i°Ó4€JÜ	ˆJ”s˜:“Ð' Ð
7Ô8Ü$Ø�N°-ÐRZØ(¸,ôH€Hö@ô �XÐ6Ð:RÐS[ÐR\Ð\sÐtzÐs{Ð{|Ð8}Ø-¸TÐQUÐ^eôgØnròsä�˜_Ð-Ð.Ö/ñsr   c               ó$   € V ^8„  d   QhRRRRRR/# )r
   Úlive_modelsÚlistrP   r   r   z	list[str]r   )r   s   "r   r   r   t   s!   € ÷ &ñ &¨ð &°sð &¸yñ &r   c                ó"  aa€ R R loV  Uau. uF´  o\         ;QJ d#    V3R l\         4       F  '       g   K   RM	  RM! V3R l\         4       4      '       d   KM  \         ;QJ d#    V3R l\         4       F  '       g   K   RM	  RM! V3R l\         4       4      '       d   K—  \        SR,          V4      '       g   K²  SNK¶  	  ppV Uu0 uF5  q"R,          P	                  \
        4      '       g   K&  S! VR,          4      kK7  	  ppV Uu. uF6  q"R,          P	                  \
        4      '       g   VR,          V9  g   K4  VNK8  	  ppV3R lpVP                  VR	7       V Uu. uF  q"R,          NK  	  up# u upi u upi u upi u upi )
zÎFilter live Bedrock models to routable text models, dedupe bare ids against their
inference profiles, and order: recommended (in-region profile before global.*),
then other global.* profiles, then the rest.c               ó    € V ^8„  d   QhRRRR/# )r
   r*   r   r   r   )r   s   "r   r   Ú-_bedrock_text_model_ids.<locals>.__annotate__x   s   € ÷ .ñ .�cð .˜cñ .r   c                óh   a € \        V 3R  l\         4       R4      pV'       d   S \        V4      R # S # )c              3  óZ   <"  € T F   pSP                  V4      '       g   K  Vx € K"  	  R # 5ir   r   r(   s   & €r   r   Ú<_bedrock_text_model_ids.<locals>._base_id.<locals>.<genexpr>y   s    øé € ÐNÑ8˜!¸C¿N¹NÈ1×<M—A’AÓ8ùr,   N)r    Ú_BEDROCK_PROFILE_PREFIXESrf   )r*   Ú_pps   f r   Ú_base_idÚ)_bedrock_text_model_ids.<locals>._base_idx   s.   ø€ ÜÔNÕ8ÓNÐPTÓUˆß!$ˆs”3�s“8�9ˆ~Ð-¨#Ð-r   c              3  óT   <"  € T F  pSR ,          P                  V4      x € K  	  R# 5i©r>   Nr   )r   r)   Úms   & €r   r   Ú*_bedrock_text_model_ids.<locals>.<genexpr>~   s%   øé € ÐLÑ2K¨Q�1�T•7×%Ñ% a×(Ð(Ó2Kùs   ƒ%(TFc              3  óV   <"  € T F  qSR ,          P                  4       9   x € K   	  R# 5ir}   )r   )r   Úsr~   s   & €r   r   r      s    øé € ÐNÑ2M¨Q˜˜4�Ÿ™›Ö(Ó2Mùs   ƒ&)r>   c                ó
  <€ V R ,          pS! V4      p\        \        4       F<  w  r4VP                  V4      '       g   K  ^ Y1P                  R4      '       g   ^ M^V3u # 	  VP                  R4      '       d   ^^ ^ V3# ^^ ^ V3# )r>   r-   )Ú	enumerateÚ_BEDROCK_RECOMMENDED_BASESr   )r~   r*   ÚbaseÚiÚrecrz   s   &    €r   Ú	_sort_keyÚ*_bedrock_text_model_ids.<locals>._sort_key…   s€   ø€ Ø��gˆÙ˜‹}ˆÜÔ :Ö;‰FˆAØ�‰˜s×#Ô#à˜1§~¡~°i×'@Ò'@™aÀaÈÐMÒMñ <ð �>‰>˜)×$Ò$Ø�q˜!˜S�>Ð!Ø�1�a˜ˆ~Ðr   )Úkey)ÚanyÚ_BEDROCK_EXCLUDE_PREFIXESÚ_BEDROCK_EXCLUDE_SUBSTRINGSr3   r   rx   Úsort)rp   rP   r~   ÚfilteredÚprofile_base_idsÚdedupedrˆ   rz   s   &&`    @r   Ú_bedrock_text_model_idsr’   t   s4  ù€ õ.ñ
 ôAÙˆaß‹sÔLÕ2KÓL�s�sŠsÔLÕ2KÓL×Lô 	
ç“ÔNÕ2MÓN——’ÔNÕ2MÓN×Nô 	
ô /¨q°­w¸×?÷ 	
ˆ‘;ð ð Añ 4<Óm±8¨aÀ½w×?QÑ?QÔRk×?lÔ)™  4¥Ö)±8ÐÐmÙ"Ów™(�Q¨¥g×&8Ñ&8Ô9R×&SÒ&SÐWXÐY]ÕW^ÐfvÑWv�qˆq™(€GÐwõ	ð ‡L�L�Y€LÔÙ$Ó%™W˜ˆd�GˆG™WÑ%Ð%ùò+Aùò nùÚwùò &sK   ŽE=žE=¹E=Á
E=Á(E=ÂE=Â'E=ÃE=Ã#FÃ6FÄ1FÅFÅ)Fc           
     óH  a€ ^ RI Hp  ^ RIHpHpHpHp T! 4       '       g   \        RRR4       T! 4       p\        T'       d   R	T R
2MRR4       T! 4       p\        RT R2RR7      p	T	f   R# T	;'       g    To\        RRRRRRRR4       \        RRRR7      p
T
f   R# T
R8X  d   \        T ST4       R# \        RS R24       T! S4      pT'       d2   \        TS4      p\        R\        T4       R\        T4       R24       MJTP                  R. 4      pT'       g   \        R4       \        R 4       R# \        R!\        T4       R"24       R#S R$2p\!        TR%TRTR&7      p\#        TRR'T R(S R)2R*TRT3R+ lR,7       R#   \         d    \        RRR4        R# i ; i)-z¬AWS Bedrock (native Converse API via boto3): verify credentials, pick region, discover models.
Auth is the AWS SDK default credential chain, so no API key prompt is needed.r8   )Úhas_aws_credentialsÚresolve_aws_auth_env_varÚresolve_bedrock_regionÚdiscover_bedrock_modelsu)     âœ— Could not load the Bedrock adapter.z,  Run hermes pm repair, then restart Hermes.r   Nu<     âš  No AWS credentials detected via environment variables.zE  Bedrock will use boto3's default credential chain (IMDS, SSO, etc.)z  AWS credentials: u    âœ“z<  AWS credentials: boto3 default chain (instance role / SSO)z  AWS Region [z]: )rE   z  Choose authentication method:z)    1. IAM credential chain (recommended)zB       Works with EC2 instance roles, SSO, env vars, aws configurez    2. Bedrock API Keyu<          Enter your Bedrock API Key directly â€” also supportsz5       team scenarios where an admin distributes keysz  Choice [1]: T)ÚrawrE   Ú2z  Discovering models in z...z  Found z text model(s) (filtered from z total)r:   zJ  No models found. Check IAM permissions for bedrock:ListFoundationModels.Ú	no_modelsz  Using z, curated models (live discovery unavailable)zhttps://bedrock-runtime.z.amazonaws.comrF   )rH   rI   rJ   rZ   z (via AWS Bedrock, r[   r\   c                ó<   <€ \        V R 4      P                  RS4      # )r:   rP   )r   Ú__setitem__)rT   Ú_mrP   s   &&€r   Ú<lambda>Ú%_model_flow_bedrock.<locals>.<lambda>Î   s   ø€ Ô)=¸cÀ9Ó)M×)YÑ)YÐZbÐdjÔ)kr   )r]   rN   r_   r`   )rc   r9   Úagent.bedrock_adapterr”   r•   r–   r—   ÚImportErrorr   r   rn   re   r’   rf   rQ   r   r   r   )rg   rH   r9   r”   r•   r–   r—   Úauth_varÚcurrent_regionÚregion_inputÚauth_choicerp   rl   Úruntime_urlrm   rP   s   &&             @r   Ú_model_flow_bedrockr§   ”   sô  ø€ õ 3ð÷ 	Ió  	Iñ
 × Ò ÜÐKØTÐVXô	Zá'Ó)€HÜ·Ð˜x˜j¨Ñ	-Ð?}Ø	ôñ ,Ó-€NÜ˜.¨Ð(8¸Ð<ÈÔL€LØÒÙØ×+Ð+˜^€Fô 	Ð	*¨BÐ0[Ø	MÐOgØ	GØ	@À"ôFô Ð'¨T¸bÔA€KØÒÙØ�cÔÜ# F¨F°MÔBÙô 
Ð$ V H¨CÐ
0Ô1Ù)¨&Ó1€KßÜ,¨[¸&ÓAˆ
Ü�œ˜Z›Ð)Ð)GÌÈKÓHXÐGYÐY`ÐaÕbà%×)Ñ)¨)°RÓ8ˆ
ßÜÐ^Ô_Ü Ô,ÙÜ�œ˜Z›Ð)Ð)UÐVÔWð -¨V¨H°NÐC€KÜ$ Z°È}Ðoxð  LWô  X€Hä�(˜IÐ)AÀ(ÀÐK^Ð_eÐ^fÐfgÐ'hð  uCØ&°dÜk÷møôa ô ÜÐ8Ð:hÐjlÔmÚðús   ‰F ÆF!Æ F!N)	úus.úeu.r.   r/   r0   úca.úsa.úme.úaf.))r¨   )zus-Úus_gov)r©   )zeu-)r.   )zap-)rª   )zca-)r«   )zsa-)r¬   )zme-)r­   )zaf-)r   )z
stability.zcohere.embedztwelvelabs.zus.stability.zus.cohere.embedzus.twelvelabs.zglobal.cohere.embedzglobal.twelvelabs.)Ú	safeguardÚvoxtralzpalmyra-vision)r-   )	zanthropic.claude-sonnet-4-6zanthropic.claude-opus-4-6zanthropic.claude-haiku-4-5zamazon.nova-prozamazon.nova-litezamazon.nova-microzdeepseek.v3zmeta.llama4-maverickzmeta.llama4-scout)Ú__doc__Ú
__future__r   Ú#hermes_cli.model_setup_flows_commonr   r   r   r   r   r   r1   r!   r"   r3   rn   rŒ   r�   rx   r„   r’   r§   r   r   r   Ú<module>r´      so   ðñõ #÷a÷ að YÐ ðH€õVõô"40ðn\Ð ð IÐ à0°<Õ?Ð ðiÐ õ
&ö@:mr   