+
    „WÝj1  ã                   óZ  € R t ^ RIt^ RIHt ^ RIHt ]P                  ! R4      tRR-RR.RR/RR0R	R1R
R2RR3/tR4t	RR.RR5RR6RR7RR8/t
R9tRRRRRRRR/tRtRtR:tR;tR<tR=tR R ltR>R R lltR tR R ltR  tR! tR" tR# tR$ tR% tR& tR' tR( t]]]]]]]]]]3
t R) t!R* t"R+ R, lt#^ RI$H%t& R# )?zºSetup-completion summary (tool availability + "Setup Complete!" banner). setup.py names are
resolved through the module object so test patches on ``hermes_cli.setup.<name>`` take effect.N)Útool_backend_helpers)Únous_subscriptionzhermes_cli.setupÚ
elevenlabsÚopenaiÚminimaxÚmistralÚgeminiÚneuttsÚ	kittenttsÚgroqÚxaiÚ	deepinfraÚBrowserbasezOnpm install -g agent-browser and set BROWSERBASE_API_KEY/BROWSERBASE_PROJECT_IDzBrowser Usez8npm install -g agent-browser and set BROWSER_USE_API_KEYÚCamofoxÚCAMOFOX_URLzLocal browserzhermes pm install agent-browserzVnpm install -g agent-browser, set CAMOFOX_URL, or configure Browser Use or BrowserbasezˆEXA_API_KEY, PARALLEL_API_KEY, FIRECRAWL_API_KEY/FIRECRAWL_API_URL, TAVILY_API_KEY, PERPLEXITY_API_KEY, KEENABLE_API_KEY, or SEARXNG_URLc          
      óT   € V ^8„  d   QhR\         R\         R\        R\        R\        /# )é   ÚkindÚproviderÚrowsÚdefaultÚreturn)ÚstrÚdictÚtuple)Úformats   "ÚLC:\Users\johnn\AppData\Local\hermes\hermes-agent\hermes_cli\setup_summary.pyÚ__annotate__r   5   s7   € ÷ @ñ @¤ð @´ð @¼4ð @Ì%ð @ÔTYñ @ó    c                óò  € VP                  W4      p\        V^,          \        4      '       dZ   V^,          '       dK   \        ;QJ d#    R V^,           4       F  '       g   K   RM	  RM! R V^,           4       4      '       g   Tp\        V^,          \        4      '       d   V  RV^ ,           R2RR3# Vw  rVp\        P
                  ! V4      '       d   T  RT V R8X  d   RMR	 R2RR3# V  RV R
2RV3# )zŠSummary row for a TTS/STT provider. A keyed provider whose key is missing
falls through to the default row, matching the runtime fallback.c              3   óN   "  € T F  p\         P                  ! V4      x € K  	  R # 5i©N)Ú_setupÚget_env_value)Ú.0Úvs   & r   Ú	<genexpr>Ú)_voice_provider_status.<locals>.<genexpr>9   s!   é € Ð7`ÑY_ÐTU¼×8LÒ8LÈQ×8OÐ8OÓY_ùs   ‚#%TFú (Ú)NúText-to-Speechz localÚ u    â€” not installed))ÚgetÚ
isinstancer   Úanyr"   Ú_module_installed)r   r   r   r   ÚrowÚlabelÚmoduleÚhints   &&&&    r   Ú_voice_provider_statusr4   5   sî   € ð �(‰(�8Ó
%€CÜ�#�a•&œ%× Ò  S¨§V¤V·C³CÑ7`ÐY\Ð]^ÖY_Ó7`·C·C²CÑ7`ÐY\Ð]^ÖY_Ó7`×4`Ò4`ØˆÜ�#�a•&œ%× Ò Ø�&˜˜3˜q�6˜( !Ð$ d¨DÐ1Ð1ØÑ€E�4Ü×Ò ×'Ò'Ø�&˜˜5˜'¨dÐ6FÔ.F¡(ÈBÐ!OÈqÐQÐSWÐY]Ð^Ð^Øˆf�B�u�gÐ0Ð1°5¸$Ð?Ð?r   c                ó>   € V ^8„  d   QhR\         R\         R,          /# )r   ÚregistryÚskipN©r   )r   s   "r   r   r   C   s   € ÷ ñ ¬sð ¼#À½*ñ r   c                ó4  €  ^ RI p^ RIHp V! 4        VP                  RV  24      P	                  4        F;  pVP
                  V8X  d   K   VP                  4       '       d   VP                  u # K=  	  R#   \         d     KO  i ; i  \         d     R# i ; i)z™display_name of the first plugin-registered provider in ``agent.<registry>`` that reports
available (fail-soft: any error means none), skipping ``skip``.N)Ú_ensure_plugins_discoveredzagent.)	Ú	importlibÚhermes_cli.pluginsr:   Úimport_moduleÚlist_providersÚnameÚis_availableÚdisplay_nameÚ	Exception)r6   r7   r;   r:   r   s   &&   r   Ú _first_available_plugin_providerrC   C   sš   € ðÛÝAÙ"Ô$Ø!×/Ñ/°&¸¸
Ð0CÓD×SÑSÖUˆHØ�}‰} Ô$ÙðØ×(Ñ(×*Ò*Ø#×0Ñ0Ò0ñ +ñ	 Vñ øô	 ô Úðûäô ØÙðúsB   ‚A	B ÁA6Á"A6Á-B Á0B Á6BÂB ÂBÂB ÂBÂBc                 ót   €  ^ RI Hp \        V! 4       4      pRY3'       d   R3# R3#   \         d    Rp Li ; i)é    )Úget_available_vision_backendsFzVision (image analysis)Nzrun 'hermes setup' to configure)Úagent.auxiliary_clientrF   ÚboolrB   )ÚconfigÚfeatsrF   Úoks   &&  r   Ú_vision_rowrL   Z   sH   € ðÝHÜÑ/Ó1Ó2ˆð & r¶2¨4Ð]Ð]Ð;\Ð]Ð]øô ô ØŠðús   ‚' §7¶7c                ó<   € V ^8„  d   QhR\         R\         R\         /# )r   r?   Úmanaged_labelÚmissing_hintr8   )r   s   "r   r   r   d   s"   € ÷ 'ñ '¬Cð 'Äð 'ÔSVñ 'r   c                óÂ   € V P                   '       d   V RV R2RR3# V P                  '       d-   V P                  '       d   V RV P                   R2RR3# TRR3# VRV3# )zVRow for a Nous-manageable feature: managed > available (with provider) > missing hint.r(   r)   TNF)Úmanaged_by_nousÚ	availableÚcurrent_provider)Úfeaturer?   rN   rO   s   &&&&r   Ú_managed_or_provider_rowrU   d   s~   € à××ÐØ�&˜˜=˜/¨Ð+¨T°4Ð8Ð8Ø××ÐØ:A×:R×:RÐ:R�4�&˜˜7×3Ñ3Ð4°AÐ6Ð^bÐdhÐiÐiÐX\Ð^bÐdhÐiÐiØ�%˜Ð&Ð&r   c                 ó:   € \        VP                  R R\        4      # )zWeb Search & ExtractzNous subscription)rU   ÚwebÚ_WEB_MISSING©rI   rJ   s   &&r   Ú_web_rowrZ   m   s   € ä# E§I¡IÐ/EÐGZÔ\hÓiÐir   c                 óŽ   € \         P                  VP                  P                  \        4      p\        VP                  R RV4      # )zBrowser AutomationzNous Browser Use)Ú_BROWSER_MISSING_HINTSr,   ÚbrowserrS   Ú_BROWSER_MISSING_DEFAULTrU   )rI   rJ   r3   s   && r   Ú_browser_rowr_   r   s7   € ä!×%Ñ% e§m¡m×&DÑ&DÔF^Ó_€DÜ# E§M¡MÐ3GÐI[Ð]aÓbÐbr   c                 óº   € VP                   P                  '       d   R# VP                   P                  '       d   R	# \        RRR7      pV'       d
   RV R2RR3# R
# )ú$Image Generation (Nous subscription)TNÚimage_gen_registryÚfal)r7   zImage Generation (r)   )ra   TN)úImage GenerationTN)rd   FzFAL_KEY or OPENAI_API_KEY)Ú	image_genrQ   rR   rC   ©rI   rJ   Úbackends   && r   Ú_image_gen_rowrh   x   sZ   € à‡�×&×&Ð&ØCÐCØ‡�× × Ð Ø/Ð/ä.Ð/CÈ%ÔP€GßØ$ W I¨QÐ/°°tÐ<Ð<ØCÐCr   c                 óz   € VP                   P                  '       d   R# \        R4      pV'       d
   RV R2RR3# R# )ú,Video Generation (FAL via Nous subscription)TNÚvideo_gen_registryzVideo Generation (r)   )rj   TN)Ú	video_genrQ   rC   rf   s   && r   Ú_video_gen_rowrm   …   sC   € ð ‡�×&×&Ð&ØKÐKÜ.Ð/CÓD€Gß<CÐ   	¨Ð+¨T°4Ð8ÐMÈÐMr   c                 óž   € VP                   P                  '       d   R# \        P                  ! V RRRR7      p\	        RV\
        \        4      # )ú-Text-to-Speech (OpenAI via Nous subscription)Úttsr   Úedge©r   r*   )ro   TN)rp   rQ   r"   Úcfg_getr4   Ú_TTS_SUMMARY_ROWSÚ_TTS_SUMMARY_DEFAULT)rI   rJ   r   s   && r   Ú_tts_rowrv   Ž   s@   € à‡y�y× × Ð ØLÐLÜ�~Š~˜f e¨ZÀÔH€HÜ!Ð"2°HÔ>OÔQeÓfÐfr   c                 óÜ   € VP                   P                  R 4      pVe   VP                  '       d   R# \        P                  ! V R RRR7      ;'       g    Rp\        RV\        \        4      # )Ústtr   Úlocalrr   zSpeech-to-Text)z-Speech-to-Text (OpenAI via Nous subscription)TN)Úfeaturesr,   rQ   r"   rs   r4   Ú_STT_SUMMARY_ROWSÚ_STT_SUMMARY_DEFAULT)rI   rJ   Ústt_featurer   s   &&  r   Ú_stt_rowr~   –   s]   € Ø—.‘.×$Ñ$ UÓ+€KØÒ ;×#>×#>Ð#>ØLÐLÜ�~Š~˜f e¨ZÀÔI×TÐTÈW€HÜ!Ð"2°HÔ>OÔQeÓfÐfr   c                 ó  € VP                   P                  '       d   R# \        P                  ! V RR4      R8X  d!   VP                   P                  '       d   R# R# \
        P                  ! 4       '       d   VP                  '       d   R# R# )	ú#Modal Execution (Nous subscription)NÚterminalrg   Úmodal)r€   TN)zModal Execution (direct Modal)TN)zModal ExecutionFzrun 'hermes setup terminal')z0Modal Execution (optional via Nous subscription)TN)r‚   rQ   r"   rs   Údirect_overrider   Úmanaged_nous_tools_enabledÚnous_auth_presentrY   s   &&r   Ú
_modal_rowr†   ž   sl   € Ø‡{�{×"×"Ð"ØBÐBÜ‡~‚~�f˜j¨)Ó4¸Ô?Ø�;‰;×&×&Ð&ØAÐAØHÐHÜ×6Ò6×8Ò8¸U×=T×=TÐ=TØOÐOÙr   c                 ó^   € \        \        P                  ! R 4      4      pRY"'       d   R3# R 3# )ÚGITHUB_TOKENzSkills Hub (GitHub)N)rH   r"   r#   )rI   rJ   rK   s   && r   Ú_skills_hub_rowr‰   ª   s.   € Ü	Œf×"Ò" >Ó2Ó	3€BØ! 2®r tÐFÐF°~ÐFÐFr   c                 ó
   € . RO# )úTerminal/Commands))r‹   TN)zTask Planning (todo)TN)zSkills (view, create, edit)TN© rY   s   &&r   Ú_always_on_rowsr�   ¯   s   € ò9ð 9r   c                ó–   € V  FB  w  r\        R\        P                  ! V\        P                  P                  4       V 24       KD  	  R# )z<Print (command, description) rows as '   <green cmd><desc>'.ú   N)Úprintr"   ÚcolorÚColorsÚGREEN)r   ÚcmdÚdescs   &  r   Ú_print_cmd_rowsr–   º   s7   € ã‰	ˆÜ�”F—L’L ¤f§m¡m×&9Ñ&9Ó:Ð;¸D¸6ÐBÖCó r   c                 ó   € \        \        P                  ! R\        P                  P                  4      RR7       \        \        P                  ! V \        P                  P
                  \        P                  P                  4      RR7       R# )u   â”€ú

©ÚendNu´   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€)r�   r"   r‘   r’   ÚDIMÚCYANÚBOLD)Útitles   &r   Ú_print_section_headerrŸ   À   sL   € Ü	Œ&�,Š,�z¤6§=¡=×#4Ñ#4Ó
5¸6ÕBÜ	Œ&�,Š,�uœfŸm™m×0Ñ0´&·-±-×2DÑ2DÓ
EÈ6×Rr   c                ó$   € V ^8„  d   QhR\         /# )r   rI   )r   )r   s   "r   r   r   Å   s   € ÷ :ñ :¤ñ :r   c                óŠ  € ^ RI Hp  ^ RIHp V! 4        \        4        \        P                  ! R4       . p\        P                  ! V 4      p\         F;  pV! W4      pTP                  \        V\        4      '       d   TMVf   . MV.4       K=  	  \!        R	 V 4       4      p\        P                  ! V R
\#        V4       R2R4       V Fµ  w  ršp\        V
'       d6   R\        P$                  ! R\        P&                  P(                  4       RV	 2MhR\        P$                  ! R\        P&                  P*                  4       RV	 R\        P$                  ! RV R2\        P&                  P,                  4       24       K·  	  \        4        V\#        V4      8  d@   \        P                  ! R4       \        P                  ! RV! 4        R24       \        4        \        4        \.         F;  p\        \        P$                  ! V\        P&                  P(                  4      4       K=  	  \        4        \        \        P$                  ! RV! 4        R2\        P&                  P0                  \        P&                  P2                  4      RR7       RR\        P4                  ! 4        23RR\        P6                  ! 4        23RRV R233 FB  w  rÞ\        R\        P$                  ! V\        P&                  P8                  4       V 24       KD  	  \        4        \;        R4       \=        \>        4       \        4        \=        \@        4       \        R 4       \        P4                  ! 4       \        P6                  ! 4       3 FA  p\        R\        P$                  ! R!V 2\        P&                  P,                  4       24       KC  	  \        4        \;        R"4       \=        \B        4       \        4        R#   \         d=    \        4        \        P                  ! R4       \        P                  ! RRR4        EL,i ; i)#z#Print the setup completion summary.)Údisplay_hermes_home)Úresolve_provideru?   No inference provider is configured â€” Hermes cannot chat yet.z&  Finish this one step with either of:z5    hermes model            (pick any provider/model)z;    hermes setup --portal   (Nous Portal OAuth, no API key)zTool Availability SummaryNc              3   ó>   "  € T F  w  rq'       g   K  ^x € K  	  R# 5i)é   NrŒ   )r$   Ú_Úavails   &  r   r&   Ú'_print_setup_summary.<locals>.<genexpr>Ý   s   é € ÐD©{¡ ¨!»eŸ!š!«{ùs   ‚“
Ú/z tool categories available:r�   u   âœ“Ú u   âœ—z	(missing r)   zDSome tools are disabled. Run 'hermes setup tools' to configure them,zor edit z+/.env directly to add the missing API keys.u   ðŸ“� All your files are in z/:r˜   r™   z	Settings:z  z	API Keys:zData:z      z/cron/, sessions/, logs/u    ðŸ“� To edit your configuration:zN                          Set a specific value

   Or edit the files directly:znano u   ðŸš€ Ready to go!)"Úhermes_constantsr¢   Úhermes_cli.authr£   rB   r�   r"   Úprint_warningÚ_infoÚprint_headerr   Úget_nous_subscription_featuresÚ_TOOL_ROW_BUILDERSÚextendr-   ÚlistÚsumÚlenr‘   r’   r“   ÚREDr›   Ú_DONE_BANNERrœ   r�   Úget_config_pathÚget_env_pathÚYELLOWrŸ   r–   Ú_EDIT_WIZARD_ROWSÚ_EDIT_CONFIG_ROWSÚ_READY_ROWS)rI   Úhermes_homeÚ_dhhr£   Útool_statusÚsubscription_featuresÚbuildr0   Úavailable_countr?   rR   Úmissing_varÚliner1   ÚvalueÚpaths   &&              r   Ú_print_setup_summaryrÈ   Å   s@  € å<ðMÝ4ÙÔô 
„GÜ
×ÒÐ3Ô4à€KÜ-×LÒLÈVÓTÐß#ˆÙ�FÓ2ˆØ×Ñ¤*¨S´$×"7Ò"7™3À3Â;¹RÐUXÐTYÖZñ $ô ÑD©{ÓDÓD€OÜ
‡L‚L�OÐ$ A¤c¨+Ó&6Ð%7Ð7RÐSÐUYÔZÛ(3Ñ$ˆ˜ÜÏ�”F—L’L ¬¯©×(;Ñ(;Ó<Ð=¸Q¸t¸fÑEØ”F—L’L ¬¯©×(9Ñ(9Ó:Ð;¸1¸T¸FÀ!Ü—’ 	¨+¨°aÐ8¼&¿-¹-×:KÑ:KÓLÐMðOö	Pñ )4ô 
„Gàœ˜[Ó)Ô)Ü×ÒÐcÔdÜ×Ò˜x©« xÐ/ZÐ[Ô\ÜŒä	„GßˆÜŒf�lŠl˜4¤§¡×!4Ñ!4Ó5Ö6ñ ä	„GÜ	Œ&�,Š,Ð4±T³V°H¸BÐ?ÄÇÁ×ASÑASÔU[×UbÑUb×UgÑUgÓ
hÐntÕuØ%¨¬F×,BÒ,BÓ,DÐ+EÐ'FÐGÈ+ÐY[Ô\b×\oÒ\oÓ\qÐ[rÐWsÐItØ! V¨K¨=Ð8PÐ#QÐRóT‰ˆä�”F—L’L ¬¯©×(<Ñ(<Ó=Ð>¸u¸gÐFÖGñTô 
„GäÐ<Ô=ÜÔ%Ô&Ü	„GÜÔ%Ô&Ü	Ð
\Ô]Ü×'Ò'Ó)¬6×+>Ò+>Ó+@ÓAˆÜ�”F—L’L 5¨¨ ´·±×1BÑ1BÓCÐDÐEÖFñ Bä	„GäÐ-Ô.Ü”KÔ Ü	†Gøôe ô MÜŒÜ×ÒÐ^Ô_Ü�ŠÐ=ØEØK÷	MðMús   ˆO; Ï;AQÑQ)Ú
ElevenLabs©ÚELEVENLABS_API_KEY)ÚOpenAI)ÚVOICE_TOOLS_OPENAI_KEYÚOPENAI_API_KEY)ÚMiniMax)ÚMINIMAX_API_KEY)zMistral Voxtral)ÚMISTRAL_API_KEY)zGoogle Gemini)ÚGEMINI_API_KEYÚGOOGLE_API_KEY)ÚNeuTTSr	   úrun 'hermes setup tts')Ú	KittenTTSr
   rÕ   )zEdge TTSrŒ   )zGroq Whisper)ÚGROQ_API_KEY)zElevenLabs ScriberÊ   )ÚxAIrŒ   )Ú	DeepInfra)ÚDEEPINFRA_API_KEY)zLocal WhisperÚfaster_whisperu%   run 'hermes tools' â†’ Speech-to-Text)u±   â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”�uA   â”‚              âœ“ Setup Complete!                          â”‚u±   â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜))zhermes setupz           Re-run the full wizard)zhermes setup modelz    Change model/provider)zhermes setup terminalz Change terminal backend)zhermes setup gatewayz  Configure messaging)zhermes setup toolsz    Configure tool providers))zhermes configz         View current settings)zhermes config editz    Open config in your editor)zhermes config set <key> <value>r+   ))Úhermesz              Start chatting)zhermes gatewayz      Start messaging gateway)zhermes doctorz       Check for issuesr!   )'Ú__doc__ÚloggingÚtoolsr   Ú
hermes_clir   Ú	getLoggerÚloggerrt   ru   r{   r|   r\   r^   rX   r·   r»   r¼   r½   r4   rC   rL   rU   rZ   r_   rh   rm   rv   r~   r†   r‰   r�   r±   r–   rŸ   rÈ   Úhermes_cli.setupÚsetupr"   rŒ   r   r   Ú<module>rå      sb  ðñbó Ý &Ý (à	×	Ò	Ð-Ó	.€ð
 Ð9ØÐFØÐ0°)Ð=fØÐEØÐ<ØÐEðGÐ ð (Ð àÐFÈÐPsØÐ@À%ÈØÐ6ð8Ð ð dÐ ð ÐdØÐMØˆ}ØÐ6ð	8Ð ð
 tÐ ðG€ðy€ð
<Ð ð-Ð ð2€õ
@÷ò.^õ'òjò
cò
DòNògògò	òGò
9ð �˜<¨¸ÈÐS[Ø� ð2Ð ò
DòSõ
:÷z "r   