§
    ‰eîiäm  ã                  ó¤  — d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
mZ ddlmZ ddlmZmZ ddlmZ dd	lmZmZmZmZmZmZmZ d
diZ ed¬¦  «         G d„ d¦  «        ¦   «         Z ed¬¦  «         G d„ d¦  «        ¦   «         ZdBd„ZdCd„ZdDd„Z dEd„Z!dEd„Z"dFd(„Z#	 dGdHd+„Z$d)d,œdId0„Z%d1d2d3d4d5œZ&dJd7„Z'd8d9d:d;d5œZ(d5Z)	 dGdKd=„Z*dLd@„Z+dMdA„Z,d)S )Nz8Helpers for Nous subscription managed-tool capabilities.é    )Úannotations)Ú	dataclass)ÚPath)ÚDictÚIterableÚOptionalÚSet)Úget_nous_auth_status)Úget_env_valueÚload_config)Úis_managed_tool_gateway_ready)Úfal_key_is_configuredÚhas_direct_modal_credentialsÚmanaged_nous_tools_enabledÚ normalize_browser_cloud_providerÚnormalize_modal_modeÚresolve_modal_backend_stateÚresolve_openai_audio_api_keyÚcliz
hermes-cliT)Úfrozenc                  ó|   — e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   dZded<   dZded<   dS )ÚNousFeatureStateÚstrÚkeyÚlabelÚboolÚincluded_by_defaultÚ	availableÚactiveÚmanaged_by_nousÚdirect_overrideÚtoolset_enabledÚ Úcurrent_providerFÚexplicit_configuredN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r$   r%   © ó    ú>/home/div/.hermes/hermes-agent/hermes_cli/nous_subscription.pyr   r      sŠ   € € € € € € à€H€H�HØ€J€J�JØÐÐÑØ€O€O�OØ€L€L�LØÐÐÑØÐÐÑØÐÐÑØÐÐÐÐÑØ %ÐÐ%Ð%Ð%Ñ%Ð%Ð%r+   r   c                  ó¸   — e Zd ZU ded<   ded<   ded<   ded<   edd	„¦   «         Zedd
„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Z	dd„Z
dS )ÚNousSubscriptionFeaturesr   Ú
subscribedÚnous_auth_presentÚprovider_is_nouszDict[str, NousFeatureState]ÚfeaturesÚreturnr   c                ó   — | j         d         S )NÚweb©r2   ©Úselfs    r,   r5   zNousSubscriptionFeatures.web1   ó   € àŒ}˜UÔ#Ð#r+   c                ó   — | j         d         S )NÚ	image_genr6   r7   s    r,   r;   z"NousSubscriptionFeatures.image_gen5   s   € àŒ}˜[Ô)Ð)r+   c                ó   — | j         d         S )NÚttsr6   r7   s    r,   r=   zNousSubscriptionFeatures.tts9   r9   r+   c                ó   — | j         d         S )NÚbrowserr6   r7   s    r,   r?   z NousSubscriptionFeatures.browser=   s   € àŒ}˜YÔ'Ð'r+   c                ó   — | j         d         S )NÚmodalr6   r7   s    r,   rA   zNousSubscriptionFeatures.modalA   s   € àŒ}˜WÔ%Ð%r+   úIterable[NousFeatureState]c              #  ó6   K  — d}|D ]}| j         |         V — Œd S )N©r5   r;   r=   r?   rA   r6   )r8   Úorderedr   s      r,   ÚitemszNousSubscriptionFeatures.itemsE   s:   è è € ØAˆØð 	%ð 	%ˆCØ”- Ô$Ð$Ð$Ð$Ð$ð	%ð 	%r+   N)r3   r   )r3   rB   )r&   r'   r(   r)   Úpropertyr5   r;   r=   r?   rA   rF   r*   r+   r,   r.   r.   *   sø   € € € € € € àÐÐÑØÐÐÑØÐÐÑØ)Ð)Ð)Ñ)àð$ð $ð $ñ „Xð$ð ð*ð *ð *ñ „Xð*ð ð$ð $ð $ñ „Xð$ð ð(ð (ð (ñ „Xð(ð ð&ð &ð &ñ „Xð&ð%ð %ð %ð %ð %ð %r+   r.   ÚconfigúDict[str, object]r3   c                óö   — |                       d¦  «        }t          |t          ¦  «        rt          |¦  «        S t          |t          ¦  «        r*|                     ¦   «         rd|                     ¦   «         iS i S )NÚmodelÚdefault)ÚgetÚ
isinstanceÚdictr   Ústrip)rH   Ú	model_cfgs     r,   Ú_model_config_dictrR   K   sn   € Ø—
’
˜7Ñ#Ô#€IÝ�)�TÑ"Ô"ð Ý�I‰ŒÐÝ�)�SÑ!Ô!ð . i§o¢oÑ&7Ô&7ð .Ø˜9Ÿ?š?Ñ,Ô,Ð-Ð-Ø€Ir+   Útoolset_keyr   r   c                ó¬  — ddl m} |                      d¦  «        }t          |t          ¦  «        r|sdt
          d         gi}t           ||¦  «        ¦  «        }|sdS |                     ¦   «         D ]à\  }}t          |t          ¦  «        rt          |¦  «        }n!t
                               |¦  «        }|r|gng }|st
                               |¦  «        }|r|g}t          ¦   «         }	|D ]I}
t          |
t          ¦  «        r|
sŒ	 |	 
                     ||
¦  «        ¦  «         Œ:# t          $ r Y ŒFw xY w|r|                     |	¦  «        r dS ŒádS )Nr   )Úresolve_toolsetÚplatform_toolsetsr   FT)ÚtoolsetsrU   rM   rN   rO   Ú_DEFAULT_PLATFORM_TOOLSETSÚsetrF   Úlistr   ÚupdateÚ	ExceptionÚissubset)rH   rS   rU   rV   Útarget_toolsÚplatformÚraw_toolsetsÚtoolset_namesÚdefault_toolsetÚavailable_toolsÚtoolset_names              r,   Ú_toolset_enabledre   T   s´  € Ø(Ð(Ð(Ð(Ð(Ð(àŸ
š
Ð#6Ñ7Ô7ÐÝÐ'­Ñ.Ô.ð IÐ6Gð IØ"Õ%?ÀÔ%FÐ$GÐHÐå�� {Ñ3Ô3Ñ4Ô4€LØð Øˆuà"3×"9Ò"9Ñ";Ô";ð ð Ñˆ�,Ý�l¥DÑ)Ô)ð 	IÝ  Ñ.Ô.ˆMˆMå8×<Ò<¸XÑFÔFˆOØ1@ÐH˜_Ð-Ð-ÀbˆMØð 	2Ý8×<Ò<¸XÑFÔFˆOØð 2Ø!0Ð 1�å$'¡E¤EˆØ)ð 	ð 	ˆLÝ˜l­CÑ0Ô0ð ¸ð ØðØ×&Ò&  °|Ñ'DÔ'DÑEÔEÐEÐEøÝð ð ð Ø�ðøøøð ð 	˜L×1Ò1°/ÑBÔBð 	Ø�4�4øàˆ5s   Ä
D)Ä)
D6Ä5D6c                 óÈ   — dd l } |                      d¦  «        }t          t          ¦  «        j        j        dz  dz  dz  }t          |p|                     ¦   «         ¦  «        S )Nr   zagent-browserÚnode_modulesz.bin)ÚshutilÚwhichr   Ú__file__Úparentr   Úexists)rh   Úagent_browser_binÚ	local_bins      r,   Ú_has_agent_browserro   y   sb   € Ø€M€M€MàŸš _Ñ5Ô5Ðå�X‰ŒÔÔ$ ~Ñ5¸Ñ>ÀÑPð õ Ð!Ð7 Y×%5Ò%5Ñ%7Ô%7Ñ8Ô8Ð8r+   r$   c                óF   — ddddddœ}|                      | pd| pd¦  «        S )NÚBrowserbasezBrowser UseÚ	FirecrawlÚCamofoxzLocal browser)Úbrowserbaseúbrowser-useÚ	firecrawlÚcamofoxÚlocalrx   ©rM   ©r$   Úmappings     r,   Ú_browser_labelr|   ƒ   s?   € à$Ø$Ø ØØ ðð €Gð �;Š;Ð'Ð2¨7Ð4DÐ4WÈÑXÔXÐXr+   c                óH   — dddddddœ}|                      | pd| pd¦  «        S )	Nú
OpenAI TTSÚ
ElevenLabszEdge TTSzxAI TTSzMistral Voxtral TTSÚNeuTTS)ÚopenaiÚ
elevenlabsÚedgeÚxaiÚmistralÚneuttsrƒ   ry   rz   s     r,   Ú
_tts_labelr‡   Ž   sB   € àØ"ØØØ(Øðð €Gð �;Š;Ð'Ð1¨6Ð3CÐ3QÀzÑRÔRÐRr+   Úbrowser_tool_enabledÚbrowser_providerÚbrowser_provider_explicitÚbrowser_local_availableÚdirect_camofoxÚdirect_browserbaseÚdirect_browser_useÚdirect_firecrawlÚmanaged_browser_availableútuple[str, bool, bool, bool]c        	        ó  — |rddt          | ¦  «        dfS |rÜ|pd}	|	dk    r(t          |o|¦  «        }
t          | o|
¦  «        }|	|
|dfS |	dk    rB|p|}t          |o|¦  «        }
t          | o|o|o| ¦  «        }t          | o|
¦  «        }|	|
||fS |	dk    r(t          |o|¦  «        }
t          | o|
¦  «        }|	|
|dfS |	dk    r|	dddfS d}	t          |¦  «        }
t          | o|
¦  «        }|	|
|dfS |s|r<t          |¦  «        }
t          | o|o|o| ¦  «        }t          | o|
¦  «        }d|
||fS |r&t          |¦  «        }
t          | o|
¦  «        }d|
|dfS t          |¦  «        }
t          | o|
¦  «        }d|
|dfS )zBResolve browser availability using the same precedence as runtime.rw   TFrx   rt   ru   rv   )r   )rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   r$   r   r   Úprovider_availableÚmanageds                 r,   Ú_resolve_browser_feature_stater•   š   sa  € ð ð BØ˜$¥Ð%9Ñ :Ô :¸EÐAÐAà ð :Ø+Ð6¨wÐØ˜}Ò,Ð,ÝÐ4ÐKÐ9KÑLÔLˆIÝÐ.Ð<°9Ñ=Ô=ˆFØ# Y°¸Ð=Ð=Ø˜}Ò,Ð,Ø!:Ð!PÐ>PÐÝÐ4ÐKÐ9KÑLÔLˆIÝØ$ð +Ø+ð+à-ð+ð +Ð*ñ	ô ˆGõ Ð.Ð<°9Ñ=Ô=ˆFØ# Y°¸Ð?Ð?Ø˜{Ò*Ð*ÝÐ4ÐIÐ9IÑJÔJˆIÝÐ.Ð<°9Ñ=Ô=ˆFØ# Y°¸Ð=Ð=Ø˜yÒ(Ð(Ø# U¨E°5Ð8Ð8à"ÐÝÐ0Ñ1Ô1ˆ	ÝÐ*Ð8¨yÑ9Ô9ˆØ ¨F°EÐ9Ð9à ð 	9Ð$6ð 	9ÝÐ0Ñ1Ô1ˆ	ÝØ ð 'Ø'ð'à)ð'ð 'Ð&ñ	
ô 
ˆõ Ð*Ð8¨yÑ9Ô9ˆØ˜i¨°Ð8Ð8àð 7ÝÐ0Ñ1Ô1ˆ	ÝÐ*Ð8¨yÑ9Ô9ˆØ˜i¨°Ð6Ð6åÐ,Ñ-Ô-€IÝÐ&Ð4¨9Ñ5Ô5€FØ�I˜v uÐ,Ð,r+   NúOptional[Dict[str, object]]c                ól  — | €t          ¦   «         pi } t          | ¦  «        } t          | ¦  «        }t          |                     d¦  «        pd¦  «                             ¦   «                              ¦   «         dk    }	 t          ¦   «         }n# t          $ r i }Y nw xY wt          ¦   «         }t          |                     d¦  «        ¦  «        }|p|}t          | d¦  «        }t          | d¦  «        }t          | d¦  «        }	t          | d¦  «        }
t          | d	¦  «        }t          |                      d¦  «        t          ¦  «        r|                      d¦  «        ni }t          |                      d¦  «        t          ¦  «        r|                      d¦  «        ni }t          |                      d¦  «        t          ¦  «        r|                      d¦  «        ni }t          |                      d	¦  «        t          ¦  «        r|                      d	¦  «        ni }t          |                     d
¦  «        pd¦  «                             ¦   «                              ¦   «         }t          |                     d¦  «        pd¦  «                             ¦   «                              ¦   «         }d|v }t          |r|                     d¦  «        nd ¦  «        }t          |                     d
¦  «        pd¦  «                             ¦   «                              ¦   «         }t          |                     d¦  «        ¦  «        }t          |                     d¦  «        ¦  «        }t          |                     d¦  «        ¦  «        }t          |                     d¦  «        ¦  «        }t          |                      d¦  «        t          ¦  «        r|                      d¦  «        ni }t          |                     d¦  «        ¦  «        }t          t          d¦  «        ¦  «        }t          t          d¦  «        pt          d¦  «        ¦  «        }t          t          d¦  «        ¦  «        }t          t          d¦  «        ¦  «        }t!          ¦   «         }t          t#          ¦   «         ¦  «        } t          t          d¦  «        ¦  «        }!t          t          d¦  «        ¦  «        }"t          t          d¦  «        ot          d¦  «        ¦  «        }#t          t          d¦  «        ¦  «        }$t%          ¦   «         }%|rd}d}d}d}|rd}|rd} d}!|rd}$d}#|o|ot'          d¦  «        }&|o|ot'          d¦  «        }'|o|ot'          d¦  «        }(|o|ot'          d¦  «        })|o|ot'          d¦  «        }*t)          ||%|*¬ ¦  «        }+|dk    o|&o| },t          |o!|,p|d!k    o|p|dk    o|p|d"k    o|p|d#k    o|¦  «        }-t          |&p|p|p|p|¦  «        }.|o|'o| }/t          |o|/p|¦  «        }0t          |'p|¦  «        }1|pd}2|	o
|2d$k    o|(o|  }3t          |2d%v p3|2d$k    o|(p| p)|2d&k    o|!p!|2d'k    ot          t          d(¦  «        ¦  «        ¦  «        }4t          |	o|4¦  «        }5t+          ¦   «         }6t-          |
|||6|"|#|$||)¬)¦	  «	        \  }7}8}9}:|dk    rd};d*}<t          |¦  «        }=d}>n­|+d+         d,k    r#t          |¦  «        };d*}<t          |¦  «        }=d}>n~|+d+         d-k    r#d};d*}<t          |¦  «        }=t          |¦  «        }>nO|d,k    rd};t          |*¦  «        }<d}=d}>n3|d-k    rd};t          |%¦  «        }<d}=d}>nd};t          |*p|%¦  «        }<d}=d}>d}?|                      d¦  «        }@t          |@t          ¦  «        rd|@v r|d.v}?t/          dd/d*|.|-|,|-o|, ||pdt          |¦  «        ¬0¦
  «
        t/          dd1d*|1|0|/|0o|/ ||rd2n|/rd3nd|¬0¦
  «
        t/          dd4d*|4|5|3|5o|3 |	t1          |2¦  «        |?¬0¦
  «
        t/          dd5d*|8|9|:|9o|: |
t3          |7¦  «        |¬0¦
  «
        t/          dd6d|<|=|;|dk    o|>||dk    rd7n|pd|dk    ¬0¦
  «
        d8œ}At5          ||||A¬9¦  «        S ):NÚproviderr#   ÚnousÚ	logged_inr5   r;   r=   r?   ÚterminalÚbackendrƒ   Úcloud_providerrx   Ú
modal_modeÚuse_gatewayÚEXA_API_KEYÚFIRECRAWL_API_KEYÚFIRECRAWL_API_URLÚPARALLEL_API_KEYÚTAVILY_API_KEYÚELEVENLABS_API_KEYÚCAMOFOX_URLÚBROWSERBASE_API_KEYÚBROWSERBASE_PROJECT_IDÚBROWSER_USE_API_KEYFrv   z	fal-queuezopenai-audioru   rA   )Ú
has_directÚmanaged_readyÚexaÚparallelÚtavilyr�   >   rƒ   r†   r‚   r…   ÚMISTRAL_API_KEY)	rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   TÚselected_backendr”   Údirect>   r#   rƒ   z	Web tools)
r   r   r   r   r   r    r!   r"   r$   r%   zImage generationÚFALzNous Subscriptionr~   zBrowser automationzModal executionÚModalrD   )r/   r0   r1   r2   )r   rO   rR   r   rM   rP   Úlowerr
   r\   r   r   re   rN   r   r   r   r   r   r   r   r   ro   r•   r   r‡   r|   r.   )BrH   rQ   r1   Únous_statusÚmanaged_tools_flagr0   r/   Úweb_tool_enabledÚimage_tool_enabledÚtts_tool_enabledrˆ   Úmodal_tool_enabledÚweb_cfgÚtts_cfgÚbrowser_cfgÚterminal_cfgÚweb_backendÚtts_providerrŠ   r‰   Úterminal_backendrž   Úweb_use_gatewayÚtts_use_gatewayÚbrowser_use_gatewayÚimage_gen_cfgÚimage_use_gatewayÚ
direct_exar�   Údirect_parallelÚdirect_tavilyÚ
direct_falÚdirect_openai_ttsÚdirect_elevenlabsrŒ   r�   rŽ   Údirect_modalÚmanaged_web_availableÚmanaged_image_availableÚmanaged_tts_availabler�   Úmanaged_modal_availableÚmodal_stateÚweb_managedÚ
web_activeÚweb_availableÚimage_managedÚimage_activeÚimage_availableÚtts_current_providerÚtts_managedÚtts_availableÚ
tts_activer‹   Úbrowser_current_providerÚbrowser_availableÚbrowser_activeÚbrowser_managedÚmodal_managedÚmodal_availableÚmodal_activeÚmodal_direct_overrideÚtts_explicit_configuredÚraw_tts_cfgr2   sB                                                                     r,   Úget_nous_subscription_featuresrç   Ü   si
  € ð €~Ý‘”Ð$ "ˆÝ�&‰\Œ\€FÝ" 6Ñ*Ô*€IÝ˜9Ÿ=š=¨Ñ4Ô4Ð:¸Ñ;Ô;×AÒAÑCÔC×IÒIÑKÔKÈvÒUÐðÝ*Ñ,Ô,ˆˆøÝð ð ð Øˆˆˆðøøøõ 4Ñ5Ô5ÐÝ˜[Ÿ_š_¨[Ñ9Ô9Ñ:Ô:ÐØ!Ð6Ð%6€Jå'¨°Ñ6Ô6ÐÝ)¨&°+Ñ>Ô>ÐÝ'¨°Ñ6Ô6ÐÝ+¨F°IÑ>Ô>ÐÝ)¨&°*Ñ=Ô=Ðå#-¨f¯jªj¸Ñ.?Ô.?ÅÑ#FÔ#FÐNˆf�jŠj˜ÑÔÐÈB€GÝ#-¨f¯jªj¸Ñ.?Ô.?ÅÑ#FÔ#FÐNˆf�jŠj˜ÑÔÐÈB€GÝ+5°f·j²jÀÑ6KÔ6KÍTÑ+RÔ+RÐZ�&—*’*˜YÑ'Ô'Ð'ÐXZ€KÝ-7¸¿
º
À:Ñ8NÔ8NÕPTÑ-UÔ-UÐ]�6—:’:˜jÑ)Ô)Ð)Ð[]€Lå�g—k’k )Ñ,Ô,Ð2°Ñ3Ô3×9Ò9Ñ;Ô;×AÒAÑCÔC€KÝ�w—{’{ :Ñ.Ô.Ð8°&Ñ9Ô9×?Ò?ÑAÔA×GÒGÑIÔI€LØ 0°KÐ ?ÐÝ7Ø-FÐPˆ�ŠÐ(Ñ)Ô)Ð)ÈDñô Ðõ 	ˆL×Ò˜YÑ'Ô'Ð2¨7Ñ3Ô3×9Ò9Ñ;Ô;×AÒAÑCÔCð õ &Ø×Ò˜Ñ&Ô&ñô €Jõ ˜7Ÿ;š; }Ñ5Ô5Ñ6Ô6€OÝ˜7Ÿ;š; }Ñ5Ô5Ñ6Ô6€OÝ˜{Ÿš¨}Ñ=Ô=Ñ>Ô>ÐÝ/9¸&¿*º*À[Ñ:QÔ:QÕSWÑ/XÔ/XÐ`�F—J’J˜{Ñ+Ô+Ð+Ð^`€MÝ˜]×.Ò.¨}Ñ=Ô=Ñ>Ô>Ðå•m MÑ2Ô2Ñ3Ô3€JÝ�MÐ*=Ñ>Ô>ÐdÅ-ÐPcÑBdÔBdÑeÔeÐÝ�=Ð);Ñ<Ô<Ñ=Ô=€OÝ�Ð'7Ñ8Ô8Ñ9Ô9€MÝ&Ñ(Ô(€JÝÕ9Ñ;Ô;Ñ<Ô<ÐÝ�]Ð+?Ñ@Ô@ÑAÔAÐÝ�-¨Ñ6Ô6Ñ7Ô7€NÝ�mÐ,AÑBÔBÐnÅ}ÐUmÑGnÔGnÑoÔoÐÝ�mÐ,AÑBÔBÑCÔCÐÝ/Ñ1Ô1€Lð ð Ø ÐØˆ
ØˆØˆØð Øˆ
Øð "Ø!ÐØ!ÐØð #Ø"ÐØ"Ðà.ÐsÐ3DÐsÕIfÐgrÑIsÔIsÐØ0ÐuÐ5FÐuÕKhÐitÑKuÔKuÐØ.ÐvÐ3DÐvÕIfÐguÑIvÔIvÐØ 2Ð yÐ7HÐ yÕMjÐkxÑMyÔMyÐØ0ÐqÐ5FÐqÕKhÐipÑKqÔKqÐÝ-ØØØ-ðñ ô €Kð  Ò,Ð_Ð1FÐ_ÐO_ÐK_€KÝØð 	
àð ;Ø˜uÒ$Ð3¨ð;à˜{Ò*Ð?Ð/?ð;ð ˜zÒ)Ð=¨oð;ð ˜xÒ'Ð9¨Mñ	ô 	€Jõ ØÐc ÐcÐ/?ÐcÀ?ÐcÐVcñô €Mð 'ÐUÐ+BÐUÈ:À~€MÝÐ*ÐL°Ð0KÀÑMÔM€LÝÐ2Ð@°jÑAÔA€Oà'Ð1¨6Ðàð 	"Ø  HÒ,ð	"à!ð	"ð "Ð!ð	 õ ØÐ 2Ð2ð 	ZØ  HÒ,Ð]Ð2GÐ2\ÐK\ð	Zà  LÒ0ÐFÐ5Fð	Zð ! IÒ-ÐXµ$µ}ÐEVÑ7WÔ7WÑ2XÔ2Xñ	ô €Mõ Ð&Ð8¨=Ñ9Ô9€Jå0Ñ2Ô2Ðõ 	'Ø1Ø)Ø";Ø 7Ø%Ø-Ø-Ø)Ø";ð
	ñ 
	ô 
	ñØ ØØØð ˜7Ò"Ð"ØˆØˆÝÐ.Ñ/Ô/ˆØ %ÐÐØ	Ð'Ô	(¨IÒ	5Ð	5ÝÐ/Ñ0Ô0ˆØˆÝÐ.Ñ/Ô/ˆØ %ÐÐØ	Ð'Ô	(¨HÒ	4Ð	4ØˆØˆÝÐ.Ñ/Ô/ˆÝ $Ð%7Ñ 8Ô 8ÐÐØ	�yÒ	 Ð	 ØˆÝÐ6Ñ7Ô7ˆØˆØ %ÐÐØ	�xÒ	Ð	ØˆÝ˜|Ñ,Ô,ˆØˆØ %ÐÐàˆÝÐ6ÐF¸,ÑGÔGˆØˆØ %Ðà#ÐØ—*’*˜UÑ#Ô#€KÝ�+�tÑ$Ô$ð C¨°{Ð)BÐ)BØ".°lÐ"BÐõ  ØØØ $Ø#ØØ'Ø&Ð:¨{¨?Ø,Ø(Ð.¨BÝ $ [Ñ 1Ô 1ð
ñ 
ô 
õ &ØØ$Ø $Ø%ØØ)Ø(Ð>°Ð->Ø.Ø&0Ðd˜U˜UÈmÐ7cÐ7JÐ7JÐacØ *ð
ñ 
ô 
õ  ØØØ $Ø#ØØ'Ø&Ð:¨{¨?Ø,Ý'Ð(<Ñ=Ô=Ø 7ð
ñ 
ô 
õ $ØØ&Ø $Ø'Ø!Ø+Ø*ÐB°?Ð/BØ0Ý+Ð,DÑEÔEØ 9ð
ñ 
ô 
õ "ØØ#Ø %Ø%ØØ)Ø,°Ò7ÐQÐ<QØ.Ø(8¸GÒ(CÐ(C˜W˜WÐIYÐIdÐ]dØ 0°GÒ ;ð
ñ 
ô 
ðc=ð =€Hõ~ $ØØ+Ø)Øð	ñ ô ð s   Á>B ÂBÂB)Úenabled_toolsetsrè   úOptional[Iterable[str]]úset[str]c               ó"  — t          ¦   «         st          ¦   «         S t          | ¦  «        }|j        st          ¦   «         S t          |pd¦  «        }t          ¦   «         }|                      d¦  «        }t          |t          ¦  «        si }|| d<   |                      d¦  «        }t          |t          ¦  «        si }|| d<   |                      d¦  «        }t          |t          ¦  «        si }|| d<   d|v rb|j        j        sVt          d¦  «        sGt          d¦  «        s8t          d¦  «        s)t          d¦  «        sd	|d
<   | 
                    d¦  «         d|v rC|j        j        s7t          ¦   «         s)t          d¦  «        sd|d<   | 
                    d¦  «         d|v rD|j        j        s8t          d¦  «        s)t          d¦  «        sd|d<   | 
                    d¦  «         d|v r#t          ¦   «         s| 
                    d¦  «         |S )Nr*   r5   r=   r?   r£   r¤   r¡   r¢   rv   rœ   r¥   r�   r˜   r©   r§   ru   r�   r;   )r   rY   rç   r1   rM   rN   rO   r5   r%   r   Úaddr=   r   r?   r   )rH   rè   r2   Úselected_toolsetsÚchangedr»   r¼   r½   s           r,   Úapply_nous_managed_defaultsrï   ×  sC  € õ
 &Ñ'Ô'ð Ý‰uŒuˆå-¨fÑ5Ô5€HØÔ$ð Ý‰uŒuˆåÐ,Ð2°Ñ3Ô3ÐÝ™œ€Gà�jŠj˜ÑÔ€GÝ�g�tÑ$Ô$ð  ØˆØˆˆu‰à�jŠj˜ÑÔ€GÝ�g�tÑ$Ô$ð  ØˆØˆˆu‰à—*’*˜YÑ'Ô'€KÝ�k¥4Ñ(Ô(ð (ØˆØ'ˆˆyÑàÐ!Ð!Ð!¨(¬,Ô*JÐ!ÝÐ(Ñ)Ô)ð "åÐ)Ñ*Ô*ð "õ Ð,Ñ-Ô-ð "õ Ð,Ñ-Ô-ð	 "ð )ˆ�	ÑØ�Š�EÑÔÐàÐ!Ð!Ð!¨(¬,Ô*JÐ!Ý$Ñ&Ô&ð "åÐ-Ñ.Ô.ð "ð 'ˆ�
ÑØ�Š�EÑÔÐàÐ%Ð%Ð%¨hÔ.>Ô.RÐ%ÝÐ+Ñ,Ô,ð &åÐ.Ñ/Ô/ð &ð )6ˆÐ$Ñ%Ø�Š�IÑÔÐàÐ'Ð'Ð'Õ0EÑ0GÔ0GÐ'Ø�Š�KÑ Ô Ð à€Nr+   z Web search & extract (Firecrawl)zImage generation (FAL)zText-to-speech (OpenAI TTS)z Browser automation (Browser Use)©r5   r;   r=   r?   úDict[str, bool]c                 ó”  — t          t          d¦  «        p;t          d¦  «        p,t          d¦  «        pt          d¦  «        pt          d¦  «        ¦  «        t          ¦   «         t          t          ¦   «         pt          d¦  «        ¦  «        t          t          d¦  «        pt          d¦  «        ot          d	¦  «        ¦  «        d
œS )z4Return a dict of tool_key -> has_direct_credentials.r¡   r¢   r£   r¤   r    r¥   r©   r§   r¨   rð   )r   r   r   r   r*   r+   r,   Ú_get_gateway_direct_credentialsró     sà   € õ ÝÐ-Ñ.Ô.ð ,ÝÐ0Ñ1Ô1ð,åÐ/Ñ0Ô0ð,õ Ð-Ñ.Ô.ð,õ ˜]Ñ+Ô+ñ
ô 
õ +Ñ,Ô,ÝÝ(Ñ*Ô*ð 3ÝÐ1Ñ2Ô2ñ
ô 
õ ÝÐ/Ñ0Ô0ð bÝÐ3Ñ4Ô4Ð`½ÐG_Ñ9`Ô9`ñ
ô 
ðð ð r+   z!Firecrawl/Exa/Parallel/Tavily keyzFAL keyzOpenAI/ElevenLabs keyzBrowser Use/Browserbase keyú&tuple[list[str], list[str], list[str]]c           
     óT  — t          ¦   «         sg g g fS | €t          ¦   «         pi } |                      d¦  «        }t          |t          ¦  «        rLt          |                     d¦  «        pd¦  «                             ¦   «                              ¦   «         dk    rg g g fS t          ¦   «         }t          t          |                      d¦  «        t          ¦  «        r|                      d¦  «        ni                      d¦  «        ¦  «        t          t          |                      d¦  «        t          ¦  «        r|                      d¦  «        ni                      d¦  «        ¦  «        t          t          |                      d	¦  «        t          ¦  «        r|                      d	¦  «        ni                      d¦  «        ¦  «        t          t          |                      d
¦  «        t          ¦  «        r|                      d
¦  «        ni                      d¦  «        ¦  «        dœ}g }g }g }t          D ]m}|                     |¦  «        r|                     |¦  «         Œ-|                     |¦  «        r|                     |¦  «         ŒX|                     |¦  «         Œn|||fS )az  Return (unconfigured, has_direct, already_managed) tool key lists.

    - unconfigured: tools with no direct credentials (easy switch)
    - has_direct: tools where the user has their own API keys
    - already_managed: tools already routed through the gateway

    All lists are empty when the user is not a paid Nous subscriber or
    is not using Nous as their provider.
    NrK   r˜   r#   r™   r5   rŸ   r;   r=   r?   rð   )r   r   rM   rN   rO   r   rP   r´   ró   r   Ú_ALL_GATEWAY_KEYSÚappend)rH   rQ   r±   Úopted_inÚunconfiguredrª   Úalready_managedr   s           r,   Úget_gateway_eligible_toolsrû   >  sm  € õ &Ñ'Ô'ð Ø�2�rˆzÐà€~Ý‘”Ð$ "ˆð —
’
˜7Ñ#Ô#€IÝ�i¥Ñ&Ô&ð ­#¨i¯mªm¸JÑ.GÔ.GÐ.MÈ2Ñ*NÔ*N×*TÒ*TÑ*VÔ*V×*\Ò*\Ñ*^Ô*^ÐbhÒ*hÐ*hØ�2�rˆzÐå,Ñ.Ô.€Fõ ­*°V·Z²ZÀÑ5FÔ5FÍÑ*MÔ*MÐU�V—Z’Z Ñ&Ô&Ð&ÐSU×ZÒZÐ[hÑiÔiÑjÔjÝµjÀÇÂÈKÑAXÔAXÕZ^Ñ6_Ô6_Ðg˜6Ÿ:š: kÑ2Ô2Ð2Ðeg×lÒlÐmzÑ{Ô{Ñ|Ô|Ý­*°V·Z²ZÀÑ5FÔ5FÍÑ*MÔ*MÐU�V—Z’Z Ñ&Ô&Ð&ÐSU×ZÒZÐ[hÑiÔiÑjÔjÝµ*¸V¿ZºZÈ	Ñ=RÔ=RÕTXÑ2YÔ2YÐa˜Ÿš IÑ.Ô.Ð.Ð_a×fÒfÐgtÑuÔuÑvÔvð	ð €Hð !€LØ€JØ!#€OÝ ð %ð %ˆØ�<Š<˜ÑÔð 	%Ø×"Ò" 3Ñ'Ô'Ð'Ð'Ø�ZŠZ˜‰_Œ_ð 	%Ø×Ò˜cÑ"Ô"Ð"Ð"à×Ò Ñ$Ô$Ð$Ð$Ø˜ _Ð4Ð4r+   Ú	tool_keysú	list[str]c                ó¸  — t          ¦   «         }|                      d¦  «        }t          |t          ¦  «        si }|| d<   |                      d¦  «        }t          |t          ¦  «        si }|| d<   |                      d¦  «        }t          |t          ¦  «        si }|| d<   d|v rd|d<   d|d<   |                     d¦  «         d|v rd|d	<   d|d<   |                     d¦  «         d|v rd
|d<   d|d<   |                     d¦  «         d|v rK|                      d¦  «        }t          |t          ¦  «        si }|| d<   d|d<   |                     d¦  «         |S )zýApply Tool Gateway config for the given tool keys.

    Sets ``use_gateway: true`` in each tool's config section so the
    runtime prefers the gateway even when direct API keys are present.

    Returns the set of tools that were actually changed.
    r5   r=   r?   rv   rœ   TrŸ   r�   r˜   ru   r�   r;   )rY   rM   rN   rO   rì   )rH   rü   rî   r»   r¼   r½   Ú	image_cfgs          r,   Úapply_gateway_defaultsr   o  s“  € õ ™œ€Gà�jŠj˜ÑÔ€GÝ�g�tÑ$Ô$ð  ØˆØˆˆu‰à�jŠj˜ÑÔ€GÝ�g�tÑ$Ô$ð  ØˆØˆˆu‰à—*’*˜YÑ'Ô'€KÝ�k¥4Ñ(Ô(ð (ØˆØ'ˆˆyÑà�	ÐÐØ(ˆ�	ÑØ!%ˆ�ÑØ�Š�EÑÔÐà�	ÐÐØ&ˆ�
ÑØ!%ˆ�ÑØ�Š�EÑÔÐà�IÐÐØ(5ˆÐ$Ñ%Ø%)ˆ�MÑ"Ø�Š�IÑÔÐà�iÐÐØ—J’J˜{Ñ+Ô+ˆ	Ý˜)¥TÑ*Ô*ð 	,ØˆIØ"+ˆF�;ÑØ#'ˆ	�-Ñ Ø�Š�KÑ Ô Ð à€Nr+   c                óˆ  — t          | ¦  «        \  }}}|s|st          ¦   «         S 	 ddlm} n# t          $ r t          ¦   «         cY S w xY wg d¢}|r)|D ]&}|                     dt          |         › d�¦  «         Œ'|r)|D ]&}|                     dt          |         › d�¦  «         Œ'|r6|D ]3}|                     dt          |         › dt          |         › �¦  «         Œ4g }g }|r�|r|                     d	¦  «         |                     d
¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         n«|rU|                     d¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         nT|                     d¦  «         |                     d
¦  «         |                     d¦  «         |                     d¦  «         |rd                     |¦  «        nd}	|sdnt          |¦  «        dz
  }
	  |d||
|	¬¦  «        }n1# t          t          t          t          f$ r t          ¦   «         cY S w xY w||         }|dk    rt          ¦   «         S |d
k    rt          t          ¦  «        }n|}t!          | |¦  «        }|rvddlm}  || ¦  «         |t          |¦  «        z
  }t'          |¦  «        D ]0}t                               ||¦  «        }t+          d|› d�¦  «         Œ1|r|st+          d¦  «         |S )a6  If eligible tools exist, prompt the user to enable the Tool Gateway.

    Uses prompt_choice() with a description parameter so the curses TUI
    shows the tool context alongside the choices.

    Returns the set of tools that were enabled, or empty set if the user
    declined or no tools were eligible.
    r   )Úprompt_choice)r#   zD  The Tool Gateway gives you access to web search, image generation,zH  text-to-speech, and browser automation through your Nous subscription.uL     No need to sign up for separate API keys â€” just pick the tools you want.r#   u     âœ“ u    â€” using Tool Gatewayu     â—‹ u    â€” not configuredu    â€” using z3Enable for all tools (existing keys kept, not used)Úallz+Enable only for tools without existing keysrù   ÚSkipÚskipzEnable Tool Gatewayz2Enable Tool Gateway (existing keys kept, not used)Ú
Né   z1Your Nous subscription includes the Tool Gateway.)Údescription)Úsave_configz: enabled via Nous subscriptionz(  (all tools already using Tool Gateway))rû   rY   Úhermes_cli.setupr  r\   r÷   Ú_GATEWAY_TOOL_LABELSÚ_GATEWAY_DIRECT_LABELSÚjoinÚlenÚKeyboardInterruptÚEOFErrorÚOSErrorÚ
SystemExitrZ   rö   r   Úhermes_cli.configr	  ÚsortedrM   Úprint)rH   rù   rª   rú   r  Ú
desc_partsÚkÚchoicesÚchoice_keysr  Údefault_idxÚidxÚactionÚto_applyrî   r	  Únewly_switchedr   r   s                      r,   Úprompt_enable_tool_gatewayr  ¥  s  € õ 1KÈ6Ñ0RÔ0RÑ-€L�*˜oØð  
ð Ý‰uŒuˆðØ2Ð2Ð2Ð2Ð2Ð2Ð2øÝð ð ð Ý‰uŒuˆˆˆðøøøðð ð €Jð ð YØ ð 	Yð 	YˆAØ×ÒÐWÕ';¸AÔ'>ÐWÐWÐWÑXÔXÐXÐXØð UØð 	Uð 	UˆAØ×ÒÐSÕ';¸AÔ'>ÐSÐSÐSÑTÔTÐTÐTØð hØð 	hð 	hˆAØ×ÒÐfÕ';¸AÔ'>ÐfÐfÕKaÐbcÔKdÐfÐfÑgÔgÐgÐgð €GØ€Kàð #˜
ð #Ø�ŠÐLÑMÔMÐMØ×Ò˜5Ñ!Ô!Ð!à�ŠÐDÑEÔEÐEØ×Ò˜>Ñ*Ô*Ð*à�Š�vÑÔÐØ×Ò˜6Ñ"Ô"Ð"Ð"à	ð #Ø�ŠÐ,Ñ-Ô-Ð-Ø×Ò˜>Ñ*Ô*Ð*à�Š�vÑÔÐØ×Ò˜6Ñ"Ô"Ð"Ð"ð 	�ŠÐKÑLÔLÐLØ×Ò˜5Ñ!Ô!Ð!à�Š�vÑÔÐØ×Ò˜6Ñ"Ô"Ð"à+5Ð?�$—)’)˜JÑ'Ô'Ð'¸4€Kð &Ð;�!�!­3¨w©<¬<¸!Ñ+;€KðØˆmØ?ØØØ#ð	
ñ 
ô 
ˆˆøõ �x­µ*Ð=ð ð ð Ý‰uŒuˆˆˆðøøøð ˜Ô€FØ�ÒÐÝ‰uŒuˆà�‚€õ Õ)Ñ*Ô*ˆˆàˆå$ V¨XÑ6Ô6€GØð 	>Ø1Ð1Ð1Ð1Ð1Ð1Øˆ�FÑÔÐà ¥3 Ñ#7Ô#7Ñ7ˆÝ˜.Ñ)Ô)ð 	Cð 	CˆCÝ(×,Ò,¨S°#Ñ6Ô6ˆEÝÐA˜5ÐAÐAÐAÑBÔBÐBÐBØð 	> >ð 	>ÝÐ<Ñ=Ô=Ð=Ø€Ns!   §. ®A	ÁA	É I É+I>É=I>)rH   rI   r3   rI   )rH   rI   rS   r   r3   r   )r3   r   )r$   r   r3   r   )rˆ   r   r‰   r   rŠ   r   r‹   r   rŒ   r   r�   r   rŽ   r   r�   r   r�   r   r3   r‘   )N)rH   r–   r3   r.   )rH   rI   rè   ré   r3   rê   )r3   rñ   )rH   r–   r3   rô   )rH   rI   rü   rý   r3   rê   )rH   rI   r3   rê   )-Ú__doc__Ú
__future__r   Údataclassesr   Úpathlibr   Útypingr   r   r   r	   Úhermes_cli.authr
   r  r   r   Útools.managed_tool_gatewayr   Útools.tool_backend_helpersr   r   r   r   r   r   r   rX   r   r.   rR   re   ro   r|   r‡   r•   rç   rï   r  ró   r  rö   rû   r   r  r*   r+   r,   ú<module>r(     s  ðØ >Ð >à "Ð "Ð "Ð "Ð "Ð "à !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø DÐ DÐ DÐ DÐ DÐ Dðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 
ˆ<ðÐ ð
 €�$ÐÑÔð
&ð 
&ð 
&ð 
&ð 
&ñ 
&ô 
&ñ Ôð
&ð €�$ÐÑÔð%ð %ð %ð %ð %ñ %ô %ñ Ôð%ð@ð ð ð ð"ð "ð "ð "ðJ9ð 9ð 9ð 9ðYð Yð Yð Yð	Sð 	Sð 	Sð 	Sð?-ð ?-ð ?-ð ?-ðF +/ðuð uð uð uð uð| 15ð8ð 8ð 8ð 8ð 8ð 8ð@ .Ø)Ø(Ø1ð	ð Ð ðð ð ð ð. /ØØ"Ø,ð	ð Ð ð ;Ð ð +/ð.5ð .5ð .5ð .5ð .5ðb3ð 3ð 3ð 3ðleð eð eð eð eð er+   