+
    ƒWÝj€B ã                   óœ  a € RŒ Etc0 t R t ^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHtHtHtHt ]P<                  ! ]4      t R	]PB                  R
&   ^ RI"H#t# ^ RI$H%t% ^ RI&H't' ^ RI(H)t) ^ RI*H+t+ ^ RI,H-t- ^ RI.H/t/ ^ RI0H1t1 ^ RI2H3t3 ^ RI4H5t5 ^ RI6H7t7 ^ RI8H9t9 ^ RI:H;t; ^ RI<H=t= ^ RI>H?t? ^ RI@HAtA ^ RIBHCtCHDtDHEtEHFtFHGtGHHtHHItIHJtJHKtKHLtLHMtMHNtNHOtOHPtPHQtQHRtRHStSHTtTHUtUHVtV ^ RIWHXtXHYtY ^ RIZH[t[H\t\H]t]H^t^H_t_H`t`HataHbtbHctcHdtdHeteHftfHgtgHhthHitiHjtjHktkHltlHmtmHntnHotoHptpHqtqHrtrHstsHtttHutuHvtvHwtwHxtxHytyHztzH{t{H|t|H}t}H~t~HtH€t€H�t�H‚t‚HƒtƒH„t„H…t…H†t†H‡t‡HˆtˆH‰t‰HŠtŠH‹t‹HŒtŒH�t�HŽtŽH�t�H�t�H‘t‘H’t’H“t“H”t”H•t•H–t–H—t—H˜t˜H™t™HštšH›t› ^ RIœH�t�HžtžHŸtŸH t H¡t¡H¢t¢H£t£H¤t¤H¥t¥H¦t¦H§t§H¨t¨ ^ RI©HªtªH«t«H¬t¬H­t­H®t®H¯t¯H°t°H±t±H²t²H³t³H´t´HµtµH¶t¶H·t·H¸t¸H¹t¹HºtºH»t»H¼t¼H½t½H¾t¾H¿t¿HÀtÀHÁtÁHÂtÂHÃtÃHÄtÄHÅtÅHÆtÆHÇtÇHÈtÈHÉtÉHÊtÊHËtËHÌtÌHÍtÍ ^ R IÎHÏtÏHÐtÐHÑtÑHÒtÒHÓtÓHÔtÔHÕtÕHÖtÖH×t×HØtØHÙtÙHÚtÚHÛtÛHÜtÜ  ^ R!IÝHÞtÞ  ^ R#IáHâtâ ^ R$IãHätå ^ R%IæHçtè  ^ R&IéHêtê ]êEPÖ                  tì ^ R'IîHïtð ]ðEPâ                  ! 4        ]ðEPä                  ! 4        ]ðEPæ                  ! 4        ]ðEPè                  ! 4        ]ðEPê                  ! 4        ]ðEPì                  ! 4        Að^ RIøtø^ RIùtùR�R( R) lltúR* tûRsü] ^ k R+ R, ltýR- tþ]ú! R.R/4      tÿRŽEt ^ R0EIEHEt ^ R1EIEHEt ^ R2EIEHEt E]! 4       Et]! E]	4      EP                  R3,          EtE]! E]E]R47       ]¨! 4       Et]¡! 4         ^ RI
Et^ REIEHEt  ! R5 R64      EtE]EP$                  EP'                  ^ E]! 4       4       R7 Et]ú! R8R94      Et]ú! R:R;R<4      Et]ú! R:R=4      Et]ú! R:R>4      Et]ú! R?R@4      Et]ú! RARBRC4      EtRDEsRDEs. Et] ^k REtE]! 4       Et ] ^k E]! 4       Et!] ^k REt"RDEs#RE RF lEt$RDEs%RG RH lEt&RIRJ/RK RL llEt'RM RN lEt(^ ROEI)EH*Et*EH+Et+EH,Et,EH-Et-EH.Et.EH/Et/EH0Et0EH1Et1EH2Et2 REs3] ^k R�RP RQ llEt4REs5] ^k RR RS lEt6]}! 4        ]! ]÷4      ;_uu_ 4        ]
EPn                  EPq                  4       '       d+   ]
EPr                  EPq                  4       '       d	   E]6! 4        RRR4       RJEs:RDEs;RDEs<^ÈEs=]! E\z        RT7      Es>R�RU RV llEt?]RW 4       Et@R�RX RY llEtA]ú! RZR[R\4      EtB]EP†                  ! R]4      EtDR^ R_ lEtEREtFREsGR` Ra lEtHRb Rc lEtIRd Re lEtJRf Rg lEtK]ú! RhRi4      EtL]ú! RhRj4      EtMRk Rl lEtN]ú! RmRn4      EtORo Rp lEtPRq Rr lEtQRs Rt lEtRRu Rv lEtS]ú! RwRxRy4      EtT ! Rz R{4      EtU ! R| R}4      EtVR~ R lEtW] ! R€ R�4      4       EtX^ R‚EIYEHZEtZ ]EP†                  ! Rƒ4      Et[ ! R„ R…]?]A]=]#]%]'];]9]7]5]3]1]/]-]+])E]Z4      Et\R† Et]R‡ Et^Rˆ Et_R‘R‰ RŠ llEt`]R‹8X  d   ^ REIaEtaE]aEPÄ                  ! E]`4       R# R#   ] d   t]P
                  R8w  d   h  RtAELQRtAii ; i  ]ß d    ^ R"IHàtÞ  ELOi ; i  ]ß d    Rtâ ELXi ; i  ]ß]í3 d    Rtì ELJi ; i  ]÷ d     ELäi ; i  ]÷ d     EL)i ; i  + '       g   i     ELö; i)’uY   Hermes Agent CLI â€” interactive terminal interface (``python cli.py --help`` for usage).NÚhermes_bootstrap)Údeque)Ú	dataclass)ÚcontextmanagerÚsuppress)ÚPath)Údatetime)ÚListÚDictÚAnyÚOptionalÚ1ÚHERMES_QUIET)ÚCLIAgentSetupMixin)ÚCLICommandsMixin)ÚCLIBillingMixin)ÚCLILoopsMixin)ÚCLIInfoMixin)ÚCLITerminalMixin)ÚCLIModalMixin)ÚCLIStreamMixin)ÚCLISessionMixin)ÚCLIModelSwitchMixin)ÚCLIVoiceMixin)ÚCLIStatusBarMixin)ÚCLITuiMixin)ÚCLIProcessNotificationsMixin)ÚCLIInitMixin)ÚCLITuiRuntimeMixin)Ú_CLEANUP_STEPSÚ_arm_exit_watchdogÚ_emit_interrupted_session_endÚ_exit_watchdog_timeoutÚ_finalize_single_queryÚ
_float_envÚ_flush_logging_and_stdioÚ_flush_one_shot_session_storeÚ_interrupt_async_delegationsÚ_invoke_interrupted_session_endÚ_notify_session_finalizeÚ%_notify_single_query_session_finalizeÚ_oneshot_agent_and_sessionÚ%_should_emit_cleanup_session_finalizeÚ_shutdown_agent_memory_providerÚ_shutdown_cached_aux_clientsÚ_shutdown_mcp_serversÚ_stop_cli_wake_wordÚ_sync_process_session_idÚ(_wait_for_oneshot_background_completions)Ú _run_checkpoint_auto_maintenanceÚ_run_state_db_auto_maintenance)AÚChatConsoleÚ_ACCENTÚ_ACCENT_ANSI_DEFAULTÚ_BOLDÚ_DA1_REPLY_REÚ_DIMÚ	_FALSE_REÚ_LIGHT_DEFAULT_TERM_PROGRAMSÚ_LIGHT_MODE_REMAPÚ_LIGHT_MODE_REMAP_UPPERÚ_REASONING_TAGSÚ_RSTÚ_STREAM_PADÚ_STREAM_PARTIAL_PREVIEW_LENÚ_SkinAwareAnsiÚ_TOOL_CALL_TAGSÚ_TRUE_REÚ!_WINDOWS_PATH_WITH_DOT_SEGMENT_REÚ_accent_hexÚ_add_suspect_rowsÚ_append_blank_panel_lineÚ_append_panel_lineÚ_assistant_content_as_textÚ_assistant_copy_textÚ_bÚ_build_compact_bannerÚ_clear_output_historyÚ_cli_visible_printÚ_coerce_output_history_limitÚ_cprintÚ_dÚ_detect_light_mode_uncachedÚ_heal_cooked_mode_driftÚ_hex_to_ansiÚ_install_skin_light_mode_hookÚ
_line_rowsÚ_luminance_from_hexÚ_maybe_remap_for_light_modeÚ_output_history_linesÚ_output_history_recordingÚ_output_history_rowsÚ_output_tail_fittingÚ_painted_columnsÚ_PaintedLineÚ_panel_box_widthÚ_post_stream_transform_outputÚ_prepend_note_to_messageÚ+_preserve_windows_dot_segments_for_markdownÚ_pt_app_is_runningÚ_pt_print_ansiÚ_query_osc11_backgroundÚ_record_output_historyÚ_record_output_history_entryÚ_release_paintsÚ_render_final_assistant_contentÚ_rich_text_from_ansiÚ_set_chrome_floorÚ_strip_markdown_syntaxÚ_strip_reasoning_tagsÚ_terminal_columnsÚ_terminal_reflowsÚ_terminal_width_for_streamingÚ	_tty_wrapÚ_wrap_panel_textÚ_wrap_panel_text_keep_ws)Ú_AUXILIARY_TASK_ENVÚ_CWD_PLACEHOLDERSÚ_TERMINAL_ENV_MAPPINGSÚ_cli_config_defaultsÚ%_init_logging_and_display_from_configÚ_load_prefill_messagesÚ_merge_file_configÚ_mirror_config_to_envÚ_parse_reasoning_configÚ_parse_service_tier_configÚ_resolve_prefill_messages_fileÚload_cli_config)$Ú_BACKSLASH_LINE_CONTINUATION_REÚ_DSR_CPR_ESC_REÚ_DSR_CPR_VISIBLE_REÚ_EXTENDED_ENTER_KEYS_SEQÚ_IMAGE_EXTENSIONSÚ_KITTY_KEYBOARD_PUSH_SEQÚ_MODIFY_OTHER_KEYS_SEQÚ_SGR_MOUSE_BARE_REÚ_SGR_MOUSE_ESC_REÚ_SGR_MOUSE_VISIBLE_REÚ_TERMINAL_INPUT_MODE_RESET_SEQÚ"_apply_backslash_line_continuationÚ$_apply_bracketed_paste_timeout_patchÚ_bind_prompt_submit_keysÚ_build_cpr_disabled_outputÚ _cli_multiline_shortcuts_enabledÚ_collect_query_imagesÚ_detect_file_dropÚ#_disable_prompt_toolkit_cpr_warningÚ_enable_extended_enter_keysÚ_estimate_tui_input_heightÚ_file_drop_resultÚ_format_image_attachment_badgesÚ_hermes_call_output_screen_diffÚ_is_backslash_line_continuationÚ_is_ghostty_terminalÚ_preserve_ctrl_enter_newlineÚ_resolve_attachment_pathÚ_select_classic_cli_pt_outputÚ,_should_auto_attach_clipboard_image_on_pasteÚ_split_path_inputÚ'_status_bar_visible_from_display_configÚ*_strip_leaked_terminal_responses_with_metaÚ_terminal_may_leak_cprÚ&_terminal_supports_extended_enter_keysÚ_termux_example_image_path)Ú_TERMINAL_PROVIDER_REASONSÚ_TRANSIENT_PROVIDER_REASONSÚ_collect_kanban_task_imagesÚ_configure_quiet_agentÚ%_install_single_query_signal_handlersÚ_int_orÚ_interrupt_agent_for_signalÚ_route_single_query_imagesÚ_run_kanban_goal_loop_chatÚ_run_kanban_goal_loop_qÚ_run_quiet_single_queryÚ_run_single_query_modeÚ_single_query_exit_codeÚ_sync_cli_session_id_from_agent)Úpatch_stdout)Únullcontext)ÚEditingMode©Úprint_formatted_text)ÚANSI)ÚCursorShape)Úpt_input_extrasc                óJ   € V ^8„  d   QhR\         R\         R\         R,          /# )é   ÚmoduleÚnameÚaliasN©Ústr)Úformats   "Ú7C:\Users\johnn\AppData\Local\hermes\hermes-agent\cli.pyÚ__annotate__rÅ   õ   s%   € ÷ ñ ”sð ¤#ð ¬c°D­jñ ó    c                óT   a aa€ ^ RI oVV V3R lpT;'       g    S;Vn        Vn        V# )zkImport ``module.name`` on first call; keeps heavy imports off startup while ``cli.<name>`` stays patchable.Nc                  óF   <€ \        SP                  S4      S4      ! V / VB # ©N)ÚgetattrÚimport_module)ÚargsÚkwargsÚ	importlibr¾   r¿   s   *,€€€rÄ   ÚshimÚ_lazy_shim.<locals>.shimù   s%   ø€ Ü�y×.Ñ.¨vÓ6¸Ô=¸tÐNÀvÑNÐNrÆ   )rÎ   Ú__name__Ú__qualname__)r¾   r¿   rÀ   rÏ   rÎ   s   ff& @rÄ   Ú
_lazy_shimrÓ   õ   s(   ú€ ã÷Oð ).¯¨°Ð5€D„M�DÔ%Ø€KrÆ   c                  óP  € \        V '       d
   V ^ ,          MVP                  RR4      4      pV^<8  d   VR R2# V^<,          pV^<8  d   VR R2# V^<,          pV^8  d:   \        V^<,          4      pV'       d   \        V4       RV R2# \        V4       R2# V^,          pVR R	2# )
é    Úsecondsg        z.0fÚsÚmzh Úhz.1fÚd)ÚfloatÚgetÚint)rÌ   rÍ   rÖ   ÚminutesÚhoursÚremaining_minÚdayss   *,     rÄ   Úformat_duration_compactrâ      s³   € ÜŸt�D˜–G¨¯©°I¸sÓ)CÓD€GØ�„|Ø˜#�˜aÐ Ð Ø˜�l€GØ�„|Ø˜#�˜aÐ Ð Ø�b�L€EØˆr„zÜ˜G b�LÓ)ˆß4A”#�e“*�˜R ˜¨aÐ0ÐWÌ#ÈeË*ÈÐUVÐGWÐWØ�2�:€DØ�3ˆZ�qˆ>ÐrÆ   c                ó0   € V ^8„  d   QhR\         R\         /# )r½   Ú
model_nameÚreturnrÁ   )rÃ   s   "rÄ   rÅ   rÅ     s   € ÷ <ñ <¬3ð <´3ñ <rÆ   c           	     óš  a€ V '       g   V # \         Ef“   / oR V3R llp ^ RIHp V! 4       ;'       g    / pVP                  R4      p\	        V\
        4      '       dl   VP                  4        FW  w  rV\	        V\
        4      '       g   K  T! \        VP                  RR4      ;'       g    R4      P                  4       V4       KY  	  VP                  R/ 4      ;'       g    / p\	        V\
        4      '       dª   VP                  R4      p\	        V\
        4      '       dƒ   VP                  4        Fn  w  rY\	        V	\        4      '       g   K  V	P                  4       '       g   K5  V	P                  4       p
T! RV
9   d   V
P                  R^4      ^,          MT
V4       Kp  	  Ss \         P                  W 4      #   \         d     L$i ; i)	zeShortest alias for ``model_name`` from ``model_aliases:`` or ``model.aliases:``, else ``model_name``.c                ó4   € V ^8„  d   QhR\         R\         RR/# )r½   rØ   rÀ   rå   NrÁ   )rÃ   s   "rÄ   rÅ   Ú0_reverse_alias_for_display.<locals>.__annotate__  s!   € ÷ 	 ñ 	 ”Cð 	 ¤ð 	 ¨ñ 	 rÆ   c                 óx   <€ V '       d1   V S9  g!   \        V4      \        SV ,          4      8  d   VSV &   R # R # R # rÉ   ©Úlen)rØ   rÀ   Úrmaps   &&€rÄ   Ú_putÚ(_reverse_alias_for_display.<locals>._put  s0   ø€ ß�a˜t”m¤s¨5£z´C¸¸Q½³LÔ'@Ø��Q“ñ (A‰qrÆ   )Úload_configÚmodel_aliasesÚmodelÚ ÚaliasesÚ/)Ú_REVERSE_ALIAS_CACHEÚhermes_cli.configrï   rÜ   Ú
isinstanceÚdictÚitemsrÂ   ÚstripÚsplitÚ	Exception)rä   rí   rï   ÚcfgÚmarÀ   ÚentryÚmdlÚsimpleÚvalÚvrì   s   &          @rÄ   Ú_reverse_alias_for_displayr    sc  ø€ ÷ ØÐÜÓ#Ø!ˆ÷	 ð 	 ð	Ý5Ù“-×%Ð% 2ˆCØ—‘˜Ó)ˆBÜ˜"œd×#Ò#Ø$&§H¡H¦J‘L�EÜ! %¬×.Ô.ÙœS §¡¨7°BÓ!7×!=Ð!=¸2Ó>×DÑDÓFÈÖNñ %/ð —'‘'˜' 2Ó&×,Ð,¨"ˆCÜ˜#œt×$Ò$ØŸ™ Ó+�Ü˜f¤d×+Ò+Ø&,§l¡l¦n™
˜Ü% c¬3×/Ô/°C·I±I·K´KØ #§	¡	£˜AÙ °s¸a´x §¡¨¨a£°Ö!3ÀQÈÖNñ '5ð  $ÐÜ×#Ñ# JÓ;Ð;øô ô 	Ùð	ús6   ¡F< µAF< ÂF< Â,6F< Ã#A(F< ÅF< Å(=F< Æ<G
Ç	G
c                  ó~  € \        V '       d
   V ^ ,          MVP                  R^ 4      4      p\        V4      pVR8  d   \        V4      # V^ 8  d   RMRpR	pV F^  w  rgW68¼  g   K  W6,          pTRV^
8  d   ^M
V^d8  d   ^M^  R2 p	RV	9   d!   V	P	                  R4      P	                  R4      p	V V	 V 2u # 	  VR # )
rÕ   Úvalueéè  Ú-rò   Ú.ÚfÚ0Ú,))i Êš;ÚB)i@B ÚM)r  ÚK)rÝ   rÜ   ÚabsrÂ   Úrstrip)
rÌ   rÍ   r  Ú	abs_valueÚsignÚunitsÚ	thresholdÚsuffixÚscaledÚtexts
   *,        rÄ   Úformat_token_count_compactr  5  sÊ   € ÜŸ4��Q– V§Z¡Z°¸Ó%;Ó<€EÜ�E“
€IØ�5ÔÜ�5‹zÐà˜!”)‰3 €DØB€EÛ"Ñˆ	ØÖ!ØÕ*ˆFØ˜Q F¨R¤K™q¸&À3¼,±QÈAÐNÈaÐOÐPˆDØ�dŒ{Ø—{‘{ 3Ó'×.Ñ.¨sÓ3�Ø�V˜D˜6 & Ð*Ò*ñ #ð �AˆYÐrÆ   zagent.markdown_tablesÚrealign_markdown_tables)Úget_hermes_home)Úload_hermes_dotenv)Útz.env)Úhermes_homeÚproject_envc                   ó2   a € ] tR tRt o RtRtRR ltRtV tR# )Ú_AsyncHttpxDelNeuterif  zXPatch ``AsyncHttpxClientWrapper.__del__`` to a no-op when ``openai._base_client`` loads.TNc                óZ  a€ V P                   '       d   VR 8w  d   R# RV n          \        P                  P                  V 4       \
        P                  ! V4      pVe   VP                  f   R# VP                  P                  oV3R lpWTP                  n        V#   \         d     Lei ; i)zopenai._base_clientNFc                 ót   <€ S! V 4        \        V R R4      pVe   R Vn        R# R#   \         d     R# i ; i)ÚAsyncHttpxClientWrapperNc                 ó   € R # rÉ   © ©Úselfs   &rÄ   Ú<lambda>ÚG_AsyncHttpxDelNeuter.find_spec.<locals>._patched_exec.<locals>.<lambda>~  s   € ±4rÆ   )rÊ   Ú__del__rü   )r¾   ÚclsÚ
_orig_execs   & €rÄ   Ú_patched_execÚ5_AsyncHttpxDelNeuter.find_spec.<locals>._patched_execy  sB   ø€ Ù˜6Ô"ðÜ! &Ð*CÀTÓJ�CØ’Ù&7˜žñ 'øä ô Úðús   ‹( ¨7¶7)	Ú_armedÚ_httpx_neuter_sysÚ	meta_pathÚremoveÚ
ValueErrorÚ_httpx_neuter_imp_utilÚ	find_specÚloaderÚexec_module)r(  ÚfullnameÚpathÚtargetÚspecr.  r-  s   &&&&  @rÄ   r6  Ú_AsyncHttpxDelNeuter.find_speck  s“   ø€ Ø—;—;�; (Ð.CÔ"CÙàˆDŒKðÜ!×+Ñ+×2Ñ2°4Ô8ô *×3Ò3°HÓ=ˆDØŠ|˜tŸ{™{Ò2ÙØŸ™×0Ñ0ˆJõð '4�K‰KÔ#ØˆKøô# ô Ùðús   ¥B ÂB*Â)B*)r0  ©NN)	rÑ   Ú
__module__rÒ   Ú__firstlineno__Ú__doc__r0  r6  Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @rÄ   r!  r!  f  s   ø‡ € Ùfàˆ÷	ò 	rÆ   r!  c                  ó8   € ^ RI Hp ^ RIHp V! 4        V! V / VB # )rÕ   )Úwait_for_mcp_discovery)Úget_tool_definitions)Úhermes_cli.mcp_startuprG  Úmodel_toolsrH  )rÌ   rÍ   rG  Ú_get_tool_definitionss   *,  rÄ   rH  rH  ‹  s   € Ý=ÝIáÔÙ  $Ð1¨&Ñ1Ð1rÆ   ÚtoolsetsÚvalidate_toolsetztools.terminal_toolÚcleanup_all_environmentsÚ_cleanup_all_terminalsÚset_sudo_password_callbackÚset_approval_callbackztools.skills_toolÚset_secret_capture_callbackztools.browser_tool_lifecycleÚ_emergency_cleanup_all_sessionsÚ_cleanup_all_browsersFc                ó   € V ^8„  d   QhRR/# ©r½   rå   Nr&  )rÃ   s   "rÄ   rÅ   rÅ   ´  s   € ÷ #ñ # dñ #rÆ   c                 ó
   € Rs R# )zDRecord that the TUI app started, so _run_cleanup resets input modes.TN)Ú_tui_input_modes_activer&  rÆ   rÄ   Ú_mark_tui_input_modes_activerY  ´  s
   € ð #ÒrÆ   c                ó   € V ^8„  d   QhRR/# rV  r&  )rÃ   s   "rÄ   rÅ   rÅ   ½  s   € ÷ Añ A¨tñ ArÆ   c                 óÜ   € \         '       d   R# Rs \        4       p V ^ 8:  d   R# \        \        4      ;_uu_ 4        \	        V ^,          RR7       RRR4       R#   + '       g   i     R# ; i)uÉ  Arm the exit backstop the moment a termination signal arrives (idempotent; never raises).

The graceful unwind has wedge points BEFORE ``_run_cleanup`` arms its own watchdog
(main thread in a syscall, prompt_toolkit teardown never returning). Leash is 2x
the cleanup timeout so a progressing cleanup is never cut short. Never arm at
startup: the timer exits unconditionally.

SIGTERM/SIGHUP establish unambiguous shutdown intent, but the graceful path from signal â†’
``agent.interrupt()`` â†’ ``app.exit()`` / ``KeyboardInterrupt`` â†’ ``finally`` â†’ ``_run_cleanup`` has
several wedge points BEFORE ``_run_cleanup`` arms the normal watchdog: a main thread parked in a syscall
that never observes the unwind, a prompt_toolkit teardown that never returns, or an agent worker
blocking the ``finally``. When that happens the process has NO backstop and a "dead" CLI lingers
(observed: ``hermes --tui`` alive ~47 min at 4% CPU after terminal close â€” the #65998 class).
NT)Ú	timeout_sÚfrom_signal)Ú_signal_watchdog_armedr"   r   rü   r    )Úbases    rÄ   Ú%_arm_exit_watchdog_on_shutdown_signalr`  ½  sM   € ÷  ÓÙØ!ÐÜ!Ó#€DØˆq„yÙÜ	”)×	Õ	Ü T¨A¥X¸4Õ@÷ 
×	×	Ò	ús   »AÁA+	Únotify_session_finalizeTc                ó$   € V ^8„  d   QhR\         /# )r½   ra  ©Úbool)rÃ   s   "rÄ   rÅ   rÅ   ×  s   € ÷ %ñ %¬Tñ %rÆ   c                ó@  € \         '       d   R# Rs Rs \        4        \        4        \         F7  w  r\        V4      ;_uu_ 4        \        4       V,          ! 4        RRR4       K9  	  V '       dQ   \        '       d   \        P                  MRp\        V4      '       d"   \        P                  \        VRRR7      4        \        \        4       RsR#   + '       g   i     K¸  ; i  \         d#   p\        P!                  RTRR7        Rp?L@Rp?ii ; i  Rsi ; i)	z"Run resource cleanup exactly once.NTÚcliÚshutdown)Ú
session_idÚplatformÚreasonz&CLI cleanup memory shutdown failed: %s©Úexc_infoF)Ú_cleanup_doneÚ_cleanup_in_progressr    Ú#_reset_terminal_input_modes_on_exitr   r   ÚglobalsÚ_active_agent_refrh  r,   Ú_session_end_messagesÚextendr)   r-   rü   ÚloggerÚwarning)ra  ÚstepÚswallowÚcleanup_session_idÚes   $    rÄ   Ú_run_cleanuprz  ×  sï   € ÷ ƒ}ÙØ€MØÐð%ÜÔô 	,Ô-ç+‰MˆDÜ˜'×"Õ"Ü“	˜$–Ô!÷ #Ñ"ñ ,÷ #ßARÓARÔ!2×!=Ò!=ÐX\ÐÜ4Ð5G×HÒHä%×,Ñ,Ü,Ð8JÐUZÐcmÔnôpð	WÜ+Ô,=Ô>ð  %Ò÷ #×"Ð"ûô ô 	WÜ�N‰NÐCÀQÐQUˆN×VÑVûð	Wûð  %ÑúsT   ”2D ÁCÁD Á1D Á=AD ÃC) ÃC&Ã 	D Ã)DÃ4DÄD ÄDÄD ÄDc                ó   € V ^8„  d   QhRR/# rV  r&  )rÃ   s   "rÄ   rÅ   rÅ   ÷  s   € ÷ ñ ¨Tñ rÆ   c            	     ó  € \         '       g   R# Rs  \        P                  p V e>   V P                  4       '       d(   V P	                  \
        4       V P                  4        R# \        \        4      ;_uu_ 4        \        RRRR7      ;_uu_ 4       pTP	                  \
        4       TP                  4        RRR4       RRR4       R#   \         d     Lsi ; i  + '       g   i     L+; i  + '       g   i     R# ; i)u�  Disable focus reporting + mouse tracking on TUI exit (best-effort).

Ctrl+C / SIGTERM / crashes bypass prompt_toolkit's unwind, leaving focus events and
mouse reports as visible text in the next shell. Writes to stdout when it is the
terminal, else /dev/tty (the TUI may have run with stdout redirected).

Called from ``_run_cleanup`` (atexit-registered + invoked on the normal / EOF / interrupt exit paths)
this covers normal quit, Ctrl+C and SIGTERM/SIGHUP. ``kill -9`` is uncatchable, and the kanban worker's
``os._exit(0)`` path bypasses ``atexit``; neither runs this â€” but both are non-TTY / non-TUI, so there
is nothing to reset there. See #36823.
NFz/dev/ttyÚwÚascii)Úencoding)
rX  ÚsysÚstdoutÚisattyÚwriterŒ   Úflushrü   r   Úopen)ÚstreamÚttys     rÄ   ro  ro  ÷  s®   € ÷ #Ó"Ùà#ÐðÜ—‘ˆØÒ &§-¡-§/¢/Ø�L‰LÔ7Ô8Ø�L‰LŒNÙô 
”)×	Õ	œd :¨s¸W×EÕEÈØ�	‰	Ô0Ô1Ø�	‰	Œ÷ F×	Ñ	øô ô ÙðúçE×Eú×	×	Ð	ús:   ’)C	 ¼%C	 Á:C-Â&C	Â7C-Ã	CÃCÃC*Ã%C-Ã-C>	)	Ú
_git_quietÚ_git_repo_rootÚ_maintain_pack_healthÚ_prune_stale_worktreesÚ_repo_is_shallowÚ_setup_worktreeÚ_worktree_has_unpushed_commitsÚ_worktree_is_dirtyÚrelease_lsp_clientsc                óX   € V ^8„  d   QhR\         \        \        3,          R,          RR/# )r½   ÚinfoNrå   )rø   rÂ   )rÃ   s   "rÄ   rÅ   rÅ   &  s+   € ÷ *Mñ *MœD¤¤c �N¨TÕ1ð *M¸Tñ *MrÆ   c           	     óŒ  € T ;'       g    \         p V '       g   R# V R,          V R,          V R,          r2p\        V4      P                  4       '       g   R# Rs ^ RIHp V! V \
        4      '       d   R# \        W^
R7      '       d   \        R\        RVR	7       R
24       R# \        V^
R7      '       dz   \        V4      '       d4   \        R\        RVR	7       R
24       \        R\        R4       24       R# \        R\        RVR	7       R
24       \        R\        RVR	7       24       R# ^ RIHp V! V4      pV'       d$   \        R\        RW^,          R7       R
24       R# \        V4       \        RRV.VRR7       \        RRVR.V^RR7       \        RRV.VRV 2R7       \        R\        RVR	7       R
24       R# )zJRemove a clean worktree and its branch on exit; preserve recoverable work.Nr:  ÚbranchÚ	repo_root)Úapply_exit_choice©Útimeoutz
[33mz cli.worktree.uncommitted_keeping)r:  z[0mz"cli.worktree.shallow_clone_keepingú  z!cli.worktree.next_session_deepenszcli.worktree.unpushed_keepingzcli.worktree.clean_up_manually)Úremoval_blockedzcli.worktree.kept_reason)r:  rj  ÚworktreeÚunlockz&git worktree unlock failed (non-fatal))Úlogr3  z--forcezFailed to remove worktree)r˜  r�  z-DzFailed to delete branch z[32mzcli.worktree.cleaned_up)Ú_active_worktreer   ÚexistsÚhermes_cli.worktree_exitr–  rR   r�  Ú_trŽ  rŒ  ÚprintÚhermes_cli.worktree_opsrš  r�  rˆ  )r’  Úwt_pathr”  r•  r–  rš  Úblockeds   &      rÄ   Ú_cleanup_worktreer¦  &  s±  € ð ×#Ð#Ô#€DßÙà!% f¥¨t°H­~¸tÀKÕ?P�Y€GÜ�‹=×Ñ×!Ò!ÙØÐÝ:Ù˜œw×'Ò'Ùä˜'°b×9Ó9ä�*œRÐ BÈÔQÐRÐRYÐZÔ[Ùä% g°r×:Ó:Ü˜I×&Ò&ä�j¤Ð$HÈwÔ!WÐ XÐX_Ð`ÔaÜ�B”rÐ=Ó>Ð?Ð@ÔAñ 	ô �j¤Ð$CÈ'Ô!RÐ SÐSZÐ[Ô\Ü�B”rÐ:ÀÔIÐJÐKÔLÙå7Ù˜gÓ&€GßÜ�*œRÐ :ÀÐYZÕQ[Ô\Ð]Ð]dÐeÔfÙô ˜Ô Ü�
˜H gÐ.°	Ð?gÕhÜ�
˜H g¨yÐ9¸9ÈbÐVqÕrÜ�˜$ Ð'¨Ð:RÐSYÐRZÐ8[Õ\Üˆh”rÐ3¸'ÔBÐCÀ7ÐKÖLrÆ   c                ó$   € V ^8„  d   QhR\         /# ©r½   rå   rc  )rÃ   s   "rÄ   rÅ   rÅ   Y  s   € ÷ 	ñ 	œDñ 	rÆ   c                  óh   € \         e   \         #  \        4       p V s V #   \         d	    Rp  T s T # i ; i)NF)Ú_LIGHT_MODE_CACHErT   rü   )Úresults    rÄ   Ú_detect_light_moder¬  Y  sI   € äÒ$Ü Ð ðÜ,Ó.ˆð ÐØ€Møô ô Ø‰ØÐØ€Mðús   �
 ž1°1©Úmaxlenc                ó(   € V ^8„  d   QhR\         RR/# )r½   Úenabledrå   Nrc  )rÃ   s   "rÄ   rÅ   rÅ   u  s   € ÷ >ñ >¤tð >¸tñ >rÆ   c                óR   € \        V 4      s\        V4      s\	        \        R7      sR# )z<Configure recent CLI output replayed after terminal redraws.r­  N)rd  Ú_OUTPUT_HISTORY_ENABLEDrQ   Ú_OUTPUT_HISTORY_MAX_LINESr   Ú_OUTPUT_HISTORY)r°  Ú	max_liness   &&rÄ   Ú_configure_output_historyr¶  u  s$   € ô # 7›mÐÜ <¸YÓ GÐÜÔ#<Ô=‚OrÆ   c               #   ó:   "  € \         p R s  Rx € V s R#   T s i ; i5i)TN)Ú_OUTPUT_HISTORY_SUPPRESSED)Ú	old_values    rÄ   Ú_suspend_output_historyrº  }  s&   é € ô +€IØ!%Ðð/Ûà%.Ò"ø YÑ"üs   ‚	Œ �”˜c                ó   € V ^8„  d   QhRR/# rV  r&  )rÃ   s   "rÄ   rÅ   rÅ   ˆ  s   € ÷ )*ñ )*°Tñ )*rÆ   c                ó  a€ \         '       d   \        '       g   R# Rs \        4       pRpV e   V w  porS\	        W$SV4      pV'       Ed%   Vf%   \        \        RP                  V4      4      4       MÅ^ RIH	p ^ RI
Hp V! V\        RP                  V4      R,           4      V! . 4      4       VP                  4       pVew   V\        V3R lV 4       4      ,          p\        \        ^ VP                   V,
          4      4       VP"                  S8w  d$   \%        V^,           VP                   ,
          4       V f   \'        4       MSp	V F!  p
\)        V
\*        4      '       g   K  Wšn        K#  	  RsR#   \.         d     Li ; i  Rsi ; i)u\  Repaint recent output above the prompt after a full screen clear.

``fit=(rows, columns, painted, top)`` replays only the newest lines whose wrapped height
fits ``rows`` (see ``_output_tail_fitting``) â€” the older ones are still in scrollback
(#95375) â€” from screen row ``top`` when known (``_set_chrome_floor``). ``output``: paint
now, straight to this prompt_toolkit output, where the caller just erased the viewport and
reset the renderer â€” ``run_in_terminal`` would first erase below the top row, which
scroll-on-clear terminals (tmux) take as a clear and copy the blank screen into scrollback.
NTÚ
r·   )ÚStylec              3   ó<   <"  € T F  p\        VS4      x € K  	  R # 5irÉ   )rX   )Ú.0ÚlineÚcolumnss   & €rÄ   Ú	<genexpr>Ú)_replay_output_history.<locals>.<genexpr>¦  s   øé € ÐTÁ^¸Tœz¨$°×8Ð8Ã^ùs   ƒF)r²  r´  Ú_OUTPUT_HISTORY_REPLAYINGr[   r^   Ú	_pt_printÚ_PT_ANSIÚjoinÚprompt_toolkit.rendererr¸   Úprompt_toolkit.stylesr¾  Úget_sizeÚsumrm   ÚmaxÚrowsrÂ  rH   r_   r÷   r`   Úwidthrü   )ÚfitÚoutputÚrendered_linesÚtoprÎ  ÚpaintedÚ_paint_formatted_textr¾  ÚsizerÏ  rÁ  rÂ  s   &&         @rÄ   Ú_replay_output_historyr×  ˆ  sE  ø€ ÷ #Ó"¯/«/ÙØ $Ðð*Ü.Ó0ˆØˆØŠ?Ø*-Ñ'ˆD�'˜7Ü1°.ÈÐQXÓYˆNßˆ>àŠ~Üœ( 4§9¡9¨^Ó#<Ó=Õ>åaÝ7Ù% f¬h°t·y±yÀÓ7PÐSWÕ7WÓ.XÑZ_Ð`bÓZcÔdØ—‘Ó(�Ø’?Øœ3ÔTÁ^ÓTÓTÕT�CÜ%¤c¨!¨T¯Y©Y¸­_Ó&=Ô>Ø—|‘| wÔ.Ü)¨#°­'°D·I±IÕ*=Ô>Ø*-ª+Ô$Ô&¸7ˆEÛ&�Ü˜d¤L×1Ô1Ø!&–Jñ 'ð %*Ò!øô ô Ùðûð %*Ñ!ús0   Ÿ+E3 ÁDE3 Å%
E3 Å3FÅ>F Æ FÆF ÆFzhermes_cli.input_sanitizeÚ%strip_leaked_bracketed_paste_wrappersÚ&_strip_leaked_bracketed_paste_wrappersz\x1b\][\s\S]*?(?:\x07|\x1b\\)c                ó0   € V ^8„  d   QhR\         R\        /# )r½   r  rå   ©rÂ   rd  )rÃ   s   "rÄ   rÅ   rÅ   ½  s   € ÷ *ñ *¤Cð *¬Dñ *rÆ   c                ó†   € V '       d   V P                  R4      '       g   R# RV P                  4       ^ ,          R,          9  # )zT``/help`` yes, ``/Users/x/file.md`` no: a command's first word has no further ``/``.rô   F:é   NN)Ú
startswithrû   ©r  s   &rÄ   Ú_looks_like_slash_commandrà  ½  s0   € ç�t—‘ s×+Ò+ÙØ�d—j‘j“l 1•o bÕ)Ñ)Ð)rÆ   c                ó0   € V ^8„  d   QhR\         R\         /# )r½   Úcmdrå   rÁ   )rÃ   s   "rÄ   rÅ   rÅ   È  s   € ÷ 6ñ 6”Sð 6œSñ 6rÆ   c                óx   € V P                  R^4      p\        V4      ^8”  d   V^,          P                  4       # R# )z=Text after the slash-command word, stripped ("" when absent).Nrò   )rû   rë   rú   )râ  Úpartss   & rÄ   Ú_slash_argsrå  È  s2   € à�I‰I�d˜AÓ€EÜ" 5›z¨Aœ~ˆ5��8�>‰>ÓÐ5°2Ð5rÆ   c                ó$   € V ^8„  d   QhR\         /# r¨  ©rø   )rÃ   s   "rÄ   rÅ   rÅ   Î  s   € ÷ ,ñ ,¤ñ ,rÆ   c                  ó8   € \         e   \         # ^ RIHp  V ! 4       # )N©Úget_interactive_skill_commands)Ú_skill_commandsÚagent.skill_commandsrê  ré  s    rÄ   Ú_ensure_skill_commandsrí  Î  s   € ÜÒ"ÜÐÝCÙ)Ó+Ð+rÆ   c                ó$   € V ^8„  d   QhR\         /# r¨  rç  )rÃ   s   "rÄ   rÅ   rÅ   Õ  s   € ÷ $ñ $œDñ $rÆ   c                  ó   € \        4       # rÉ   )rí  r&  rÆ   rÄ   Úget_skill_commandsrð  Õ  s   € Ü!Ó#Ð#rÆ   c                ó$   € V ^8„  d   QhR\         /# r¨  rç  )rÃ   s   "rÄ   rÅ   rÅ   Ù  s   € ÷ @ñ @¤Dñ @rÆ   c                óP   € ^ RI Hp VP                  V 4      pVf   \        4       # T# )zªSkill commands for ``cli``: on its gateway session the gateway's (its plugin skills included), so
this process scans no plugin to list them; otherwise this process's own.©Úgateway_plugin_commands)Ú
hermes_clirô  Úskillsrí  )rf  rô  Úfounds   &  rÄ   Ú_session_skill_commandsrø  Ù  s*   € õ 3Ø#×*Ñ*¨3Ó/€EØ',¢}Ô!Ó#Ð?¸%Ð?rÆ   zagent.skill_commandsÚbuild_skill_invocation_messageÚbuild_preloaded_skills_promptc                ó$   € V ^8„  d   QhR\         /# r¨  rç  )rÃ   s   "rÄ   rÅ   rÅ   å  s   € ÷ ñ œ4ñ rÆ   c                  ó8   € \         f   ^ RIHp  V ! 4       s \         # )N)Úget_skill_bundles)Ú_skill_bundlesÚagent.skill_bundlesrý  )Ú_impls    rÄ   rý  rý  å  s   € äÒÝBá›ˆÜÐrÆ   zagent.skill_bundlesÚbuild_bundle_invocation_messagec                ó$   € V ^8„  d   QhR\         /# r¨  )Úset)rÃ   s   "rÄ   rÅ   rÅ   ñ  s   € ÷ ñ ¤sñ rÆ   c                 ó‚   €  ^ RI Hp  \        V ! 4       P                  4       4      #   \         d    \        4       u # i ; i)zIReturn plugin command names (without slash prefix) for dispatch matching.©Úget_plugin_commands)Úhermes_cli.pluginsr  r  Úkeysrü   r  s    rÄ   Ú_get_plugin_cmd_handler_namesr	  ñ  s8   € ðÝ:ÜÑ&Ó(×-Ñ-Ó/Ó0Ð0øÜô Ü‹uŠðús   ‚#& ¦>½>c                ó°   € V ^8„  d   QhR\         \        \         ,          ,          \        \         R3,          ,          R,          R\        \         ,          /# )r½   rö  .Nrå   )rÂ   ÚlistÚtuple)rÃ   s   "rÄ   rÅ   rÅ   ú  s;   € ÷ 6ñ 6¤3¬¬c­¥?´U¼3À¸8µ_Õ#DÀtÕ#Kð 6ÔPTÔUXÕPYñ 6rÆ   c                ó  € V '       g   . # \        V \        \        34      '       d!   V  Uu. uF  qf   K  \        V4      NK  	  upM\        V 4      .pR V 4       p\        \        P                  R V 4       4      4      # u upi )zJNormalize a CLI skills flag into a deduplicated list of skill identifiers.c              3   ón   "  € T F+  qP                  R 4       F  q"P                  4       x € K  	  K-  	  R# 5i)r  N)rû   rú   )rÀ  ÚrawÚps   &  rÄ   rÃ  Ú)_parse_skills_argument.<locals>.<genexpr>ÿ  s$   é € ÐE¡*˜3·i±iÀ¶n°�W‰W�YˆY±n‰Y£*ùs   ‚35c              3   ó8   "  € T F  q'       g   K  Vx € K  	  R # 5irÉ   r&  ©rÀ  r  s   & rÄ   rÃ  r     s   é € Ð4© A³!Ÿaša«ùó   ‚	�
)r÷   r  r  rÂ   rø   Úfromkeys)rö  ÚitemÚ
raw_valuesrä  s   &   rÄ   Ú_parse_skills_argumentr  ú  sn   € çØˆ	ÜGQÐRXÔ[_ÔafÐZg×GhÒGh©ÓC© ”)”#�d–)©ÒCÔorÐsyÓozÐn{€JÙE¡*ÓE€EÜ”—‘Ñ4©Ó4Ó4Ó5Ð5ùò Ds
   «BµBc                ó<   € V ^8„  d   QhR\         R\        R\        /# )r½   Úkey_pathr  rå   )rÂ   Úanyrd  )rÃ   s   "rÄ   rÅ   rÅ     s!   € ÷ ñ ¤ð ¬Cð ´Dñ rÆ   c                ó6  € \        4       R,          p ^ RIHp V! VP                  4       ^ RIHp V! W V4        \        P                  ! VR4       R#   \        \        3 d     R# i ; i  \         d"   p\        P                  RT4        Rp?R# Rp?ii ; i)	z³Persist dot-separated ``key_path`` = value into HERMES_HOME/config.yaml; True on success.

Never the repo's cli-config.yaml: no config reader loads it, so the value would vanish.
úconfig.yaml)Úmkdir_under_hermes_home)Úatomic_roundtrip_yaml_updatei€  TzFailed to save config: %sNF)r  Úhermes_constantsr  ÚparentÚutilsr  ÚosÚchmodÚOSErrorÚNotImplementedErrorrü   rt  Úerror)r  r  Úconfig_pathr  r  ry  s   &&    rÄ   Úsave_config_valuer)    sŒ   € ô
 "Ó# mÕ3€KðÝ<Ù × 2Ñ 2Ô3Ý6Ù$ [¸EÔBð	Ü�HŠH�[ %Ô(ñ øô Ô,Ð-ô 	ØÙð	ûô ô Ü�‰Ð0°!Ô4Ýûðús4   “'A, »A ÁA)Á%A, Á(A)Á)A, Á,BÁ7BÂBc                ó”   € V ^8„  d   QhR\         \        ,          R\        \         \        ,          \         \        ,          3,          /# )r½   rñ   rå   )r   rÂ   r  )rÃ   s   "rÄ   rÅ   rÅ     s1   € ÷ ñ ¤¬¥ð ´%¼Ä½ÄxÔPSÅ}Ð8TÕ2Uñ rÆ   c                ó  € \        V \        4      '       du   V P                  4       P                  4       P	                  R4      '       dB   V P                  4       P                  R^4      ^,          P                  4       pV'       d   RV3# RV 3# )a  ``moa:<preset>`` -> ``("moa", preset)`` (same routing as ``/moa``); anything else -> ``(None, model)``.

Returns ``("moa", "<preset>")`` when *model* selects the MoA virtual provider, otherwise ``(None,
model)`` unchanged. This gives non-interactive ``hermes chat -Q -m moa:<preset>`` the same routing the
interactive ``/moa`` command and the model picker already use: ``resolve_runtime_provider`` handles
``requested_provider == "moa"`` and ``agent_init`` builds the MoAClient off ``provider == "moa"``.
Without this the raw ``moa:<preset>`` string is sent to the real provider and rejected with a 401/400
"model not supported" (#56828).
zmoa:Ú:ÚmoaN)r÷   rÂ   rú   ÚlowerrÞ  rû   )rñ   Úpresets   & rÄ   Ú_normalize_moa_modelr0    sm   € ô �%œ×Ò %§+¡+£-×"5Ñ"5Ó"7×"BÑ"BÀ6×"JÒ"JØ—‘“×$Ñ$ S¨!Ó,¨QÕ/×5Ñ5Ó7ˆßØ˜&�=Ð Ø�ˆ;ÐrÆ   zhermes_cli.configÚsplit_model_config_defaultÚ_split_model_config_defaultc                   óL   a € ] tR tRt o RtRtV 3R lR ltV 3R lR ltRtV t	R# )	Ú_VoiceInputMessagei,  a  Sentinel for voice-transcribed input so the concise voice prefix never applies to typed text.

Distinguishes STT output from manually typed text while voice mode is active, so the
concise-voice-response prefix is applied only to messages that actually came from the microphone
(#65827).
c                ó    <€ V ^8„  d   QhRS[ /# ©r½   r  rÁ   )rÃ   rE  s   "€rÄ   rÅ   Ú_VoiceInputMessage.__annotate__6  s   ø€ ÷ ñ ™Sñ rÆ   c                ó   € Wn         R # rÉ   rß  )r(  r  s   &&rÄ   Ú__init__Ú_VoiceInputMessage.__init__6  s   € ØŽ	rÆ   c                ó    <€ V ^8„  d   QhRS[ /# r¨  rÁ   )rÃ   rE  s   "€rÄ   rÅ   r7  9  ó   ø€ ÷ ñ ™ñ rÆ   c                ó   € V P                   # rÉ   rß  r'  s   &rÄ   Ú__str__Ú_VoiceInputMessage.__str__9  ó   € Ø�y‰yÐrÆ   rß  N©
rÑ   r?  rÒ   r@  rA  Ú	__slots__r9  r>  rB  rC  rD  s   @rÄ   r4  r4  ,  s%   ø‡ € ñð €I÷ð ÷ö rÆ   r4  c                   óP   a € ] tR tRt o RtRtR	V 3R lR lltV 3R lR ltRtV t	R# )
Ú_SeededQueryMessagei=  zjSentinel for a ``-q`` prompt seeded into an interactive session; treated LITERALLY (no slash/!/file-drop).Nc                ó    <€ V ^8„  d   QhRS[ /# r6  rÁ   )rÃ   rE  s   "€rÄ   rÅ   Ú _SeededQueryMessage.__annotate__B  s   ø€ ÷ )ñ )™Sñ )rÆ   c                óh   € T;'       g    R V n         \        T;'       g    . 4      V n        W0n        R# )rò   N)r  r  ÚimagesÚadmission_id)r(  r  rH  rI  s   &&&&rÄ   r9  Ú_SeededQueryMessage.__init__B  s)   € Ø—J�J˜BˆŒ	Ü˜6Ÿ<˜< RÓ(ˆŒð )ÖrÆ   c                ó    <€ V ^8„  d   QhRS[ /# r¨  rÁ   )rÃ   rE  s   "€rÄ   rÅ   rF  I  r<  rÆ   c                ó   € V P                   # rÉ   rß  r'  s   &rÄ   r>  Ú_SeededQueryMessage.__str__I  r@  rÆ   )rI  rH  r  r>  rA  rD  s   @rÄ   rD  rD  =  s!   ø‡ € Ùtà2€I÷)ò )÷ö rÆ   rD  c                ó<   € V ^8„  d   QhR\         R\         R\         /# )r½   ÚquietÚoneshotrå   rc  )rÃ   s   "rÄ   rÅ   rÅ   M  s!   € ÷ ñ ´$ð Äð Ì$ñ rÆ   c                ó  € V '       g	   V'       d   V'       g	   V'       d   R#  \        \        P                  P                  4       ;'       d    \        P                  P                  4       4      #   \
         d     R# i ; i)zs``-q`` seeds an interactive session only on a real TTY without ``--oneshot``/``-Q`` (automation answers and exits).F)rd  r€  Ústdinr‚  r�  rü   )ÚqueryÚimagerO  rP  s   &&&&rÄ   Ú_should_seed_interactiverU  M  sR   € ç—UŸw¯%ÙðÜ”C—I‘I×$Ñ$Ó&×>Ð>¬3¯:©:×+<Ñ+<Ó+>Ó?Ð?øÜô Úðús   ¤)A1 Á"A1 Á1B Á?B c                   ó\   a € ] tR tRt o RtRtRtRtRtRt	Rt
RtRtRtRtRtV 3R ltRtV tR# )Ú	_ChatTurniW  zôPer-turn state shared by the ``chat()`` phases and the agent worker thread.

``result`` is written by the worker and read after the join; ``tts_normal_exit`` is
set only when the TTS worker drained on its own so the last sentence is never cut.
NFrò   c                ó*  <€ V ^8„  d   Qh/ S[ S[,          ;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[P                  ,          ;R	&   S[;R
&   S[	;R&   # )r½   r«  Úmute_notification_replyÚuse_streaming_ttsÚ
box_openedÚthinking_startedÚ
text_queueÚ
tts_threadÚstream_callbackÚ
stop_eventÚtts_normal_exitÚvoice_prefix)
r   rø   rd  ÚqueueÚQueueÚ	threadingÚThreadr   ÚEventrÂ   )rÃ   rE  s   "€rÄ   rÅ   Ú_ChatTurn.__annotate__W  s¹   ø‡ ‚ ñ ‘T�NÑ!ñ ñ "Ñ)ñ ñ Ñ#ñ ñ Ññ ñ Ñ"ñ ñ ™Ÿ™Õ%Ñ,ñ ñ ™×)Ñ)Õ*Ñ1ñ ñ ™c•]Ñ)ñ ñ  ™Ÿ™Õ)Ñ0ñ! ñ" Ñ!ñ# ñ$ Ñò% rÆ   r&  )rÑ   r?  rÒ   r@  rA  r«  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  Ú__annotate_func__rB  rC  rD  s   @rÄ   rW  rW  W  sM   ø‡ € ñð "€FØ$)ÐØ#ÐØ€JØ"ÐØ(,€JØ-1€JØ%)€OØ,0€JØ!€OØ€L÷% ƒ rÆ   rW  )ÚCLIChatTurnMixinz,\[Pasted text #\d+: \d+ lines \u2192 (.+?)\]c                   óÊ  a € ] tR tRt o RtRtRtR_V 3R lR lltR`RR/V 3R	 lR
 llltV 3R lR lt	Rt
RtV 3R lR ltR tR tV 3R lR ltR tR t/ RRabRRabRRbbRRcbRRdbRRebRRfbRRgbRRhbR RibR!RjbR"RkbR#RlbR$RmbR%RnbR&RobR'Rpb/ R(RqbR)RrbR*RsbR+RtbR,RubR-RvbR.RwbR/RxbR0RybR1RzbR2R{bR3R|bR4R}bR5R~bR6RbR7R€bR8R�bCR9R‚R:RƒR;R„R<R…R=R†R>R‡R?RˆR@R‰RARŠRBR‹/
Ct]V 3RC lRD l4       tRtRER/V 3RF lRG lltV 3RH lRI ltV 3RJ lRK ltV 3RL lRM ltV 3RN lRO ltV 3RP lRQ ltV 3RR lRS ltV 3RT lRU ltV 3RV lRW ltV 3RX lRY ltV 3RZ lR[ lt ]!! 0 RŒm4      t"R\ t#V 3R] lt$R^t%V t&R# )�Ú	HermesCLIip  z&Interactive REPL for the Hermes Agent.NFc                ó  <€ V ^8„  d   QhRS[ R,          RS[S[ ,          R,          RS[ R,          RS[ R,          RS[ R,          RS[ R,          RS[R,          R	S[R,          R
S[S[,          RS[RS[ R,          RS[RS[RS[/# )r½   rñ   NrL  ÚproviderÚ	reasoningÚapi_keyÚbase_urlÚ	max_turnsÚ
run_budgetÚverboseÚcompactÚresumeÚcheckpointsÚpass_session_idÚignore_rules)rÂ   r  rÝ   rÛ   r   rd  )rÃ   rE  s   "€rÄ   rÅ   ÚHermesCLI.__annotate__y  sÄ   ø€ ÷ )ñ )á�T�zð)ñ ‘s•)˜dÕ"ð)ñ ˜•*ð	)ñ
 ˜•:ð)ñ �t•ð)ñ ˜•*ð)ñ ˜•:ð)ñ ˜D•Lð)ñ ™$•ð)ñ ð)ñ �d•
ð)ñ ð)ñ ð)ñ ñ)rÆ   c                óv   € V P                  Wš4       V P                  WW4WVWxWÍV4       V P                  V4       R# )zaCLI args win over config; ``reasoning`` is per-run only; ``resume`` restores history from SQLite.N)Ú_init_display_optionsÚ_init_model_routingÚ_init_runtime_state)r(  rñ   rL  rn  ro  rp  rq  rr  rs  rt  ru  rv  rw  rx  ry  s   &&&&&&&&&&&&&&&rÄ   r9  ÚHermesCLI.__init__y  s=   € ð$ 	×"Ñ" 7Ô4Ø× Ñ  °(ÀwÐZcØ!,¸|ô	Mà× Ñ  Ö(rÆ   rf  Ústderrc                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r½   Úsurfacer€  rå   rÛ  )rÃ   rE  s   "€rÄ   rÅ   rz  ‘  s#   ø€ ÷ ñ ©Sð ÁTð ÑVZñ rÆ   c          	     óL  € V P                   e   R#  ^ RIHpHp V! V P                  VV P
                  R\        V P                  4      /R7      w  rVT'       dC   T'       d$   \        T! T4      \        P                  R7       R
# T P                  RT R	24       R
# YPn         \        \        4      ;_uu_ 4        \        P                   ! T P"                  4       RRR4       R#   \         d"   p\        P                  RT4        Rp?R# Rp?ii ; i  + '       g   i     R# ; i)z8Claim a global active-session slot for this CLI process.NT)Úformat_refusal_stderrÚtry_acquire_active_sessionÚlive_session_id)rh  r‚  ÚconfigÚmetadataz'Failed to claim active session slot: %s©Úfileú
[bold red]ú[/]F)Ú_active_session_leaseÚhermes_cli.active_sessionsr„  r…  rh  r‡  rÂ   rü   rt  ru  r¢  r€  r€  Ú_console_printr   ÚatexitÚregisterÚ_release_active_session)r(  r‚  r€  r„  r…  ÚleaseÚmessageÚexcs   &&$     rÄ   Ú_claim_active_sessionÚHermesCLI._claim_active_session‘  sè   € à×%Ñ%Ò1Ùð	ßdá7ØŸ?™?ØØ—{‘{ð ,¬S°·±Ó-AÐBô‰NˆE÷ ßFLŒEÑ'¨Ó0´s·z±zÕBÙð SW×ReÑReÐhrÐszÐr{Ð{~Ðfô  SAÙØ%*Ô"Ü”i× Õ Ü�OŠO˜D×8Ñ8Ô9÷ !áøô ô 	Ü�N‰NÐDÀcÔJÝûð	ú÷ !Ö áús#   ’?C# Â8!DÃ#DÃ.D
Ä
DÄD#	c                ó   <€ V ^8„  d   QhRR/# rV  r&  )rÃ   rE  s   "€rÄ   rÅ   rz  «  s   ø€ ÷ 	.ñ 	.¨ñ 	.rÆ   c                óÄ   € \        V R R4      pVf   R#  VP                  4        RV n        R#   \         d    \        P	                  RRR7        L-i ; i  RT n        i ; i)r�  Nz%Failed to release active session slotTrk  )rÊ   Úreleaserü   rt  Údebugr�  )r(  r“  s   & rÄ   r’  Ú!HermesCLI._release_active_session«  s`   € Ü˜Ð5°tÓ<ˆØŠ=Ùð	.Ø�M‰MŒOð *.ˆDÖ&øô ô 	QÜ�L‰LÐ@È4ˆLÖPð	Qûð *.ˆDÕ&ús!   •. ®"AÁA ÁAÁA Á	Ag{®GázÄ?g      @c                ó   <€ V ^8„  d   QhRR/# rV  r&  )rÃ   rE  s   "€rÄ   rÅ   rz  ¹  s   ø€ ÷ .ñ .¨ñ .rÆ   c                ó:  € V P                   '       d   R# \        V P                  4       \        V P                  4       \        V P                  4       ^ RIHpH	pH
p V! V P                  4       V! V P                  4       V! V P                  4       RV n         R# )z4Install tool callbacks that need the live prompt UI.N)Úset_code_prompt_callbackÚset_save_login_prompt_callbackÚset_unlock_prompt_callbackT)Ú_tool_callbacks_installedrP  Ú_sudo_password_callbackrQ  Ú_approval_callbackrR  Ú_secret_capture_callbackÚagent.vault_backends.unlockrŸ  r   r¡  Ú_vault_unlock_callbackÚ_vault_save_login_callbackÚ_vault_code_callback)r(  rŸ  r   r¡  s   &   rÄ   Ú_install_tool_callbacksÚ!HermesCLI._install_tool_callbacks¹  sy   € à×)×)Ð)ÙÜ" 4×#?Ñ#?Ô@Ü˜d×5Ñ5Ô6Ü# D×$AÑ$AÔB÷ 	Eñ  	EÙ" 4×#>Ñ#>Ô?Ù& t×'FÑ'FÔGÙ  ×!:Ñ!:Ô;Ø)-ˆÖ&rÆ   c                ó¢   €  ^ RI HpHp V! V! 4       4      pV'       d   \        V\        P
                  RR7       R# R#   \         d     R# i ; i)zgStartup banner for unacked security advisories, on stderr (piped stdout stays clean); 24h rate-limited.)Údetect_compromisedÚstartup_bannerT)rŠ  r„  N)Úhermes_cli.security_advisoriesr­  r®  r¢  r€  r€  rü   )r(  r­  r®  Úbanners   &   rÄ   Ú_show_security_advisoriesÚ#HermesCLI._show_security_advisoriesÆ  sB   € ð	ßYá#Ñ$6Ó$8Ó9ˆFßÜ�f¤3§:¡:°T×:ñ øäô 	Úð	ús   ‚? Ÿ? ¿AÁAc                ó¶   a a€  ^ RI Hp V! 4       oS'       d   ^ RIHp V! VV 3R lRR7       R	# R	#   \         d    \
        P                  RRR7        R	# i ; i)
z\Once-per-24h hint when the default Browser Use backend silently fell back to built-in tools.)Údefault_downgrade_notice)Úrender_notificationc                  ó.   <€ SP                  R S  R24      # )u   [yellow]âš  z	[/yellow])r�  )Únoticer(  s   €€rÄ   r)  Ú8HermesCLI._show_browser_backend_notice.<locals>.<lambda>Ù  s   ø€ ¨D×,?Ñ,?À,ÈvÈhÐV_Ð@`Ô,arÆ   rf  )ri  zbrowser backend notice failedTrk  N)Útools.browser_use_clir´  Úgateway.warning_notificationsrµ  rü   rt  r›  )r(  r´  rµ  r·  s   f  @rÄ   Ú_show_browser_backend_noticeÚ&HermesCLI._show_browser_backend_noticeÑ  sO   ù€ ð	IÝFá-Ó/ˆFßÝMÙ#Õ$aÐlq×rñ øô ô 	IÜ�L‰LÐ8À4ˆL×Hð	Iús   „2 ™2 ²"AÁAc                ó   <€ V ^8„  d   QhRR/# rV  r&  )rÃ   rE  s   "€rÄ   rÅ   rz  Ý  s   ø€ ÷ "gñ "g¨4ñ "grÆ   c                óz  € \        V RR4      '       d   R# \        V RR4      pVf
   RV n        R# VP                  ^xR7       RV n        \        V RR4      pVe   Vh\        V RR4      pV'       d<   V^,          '       d-   \        P	                  R	R
P                  V^,          4      4       V'       d   \        V^,          4      M. V n        \        V RR4      pV'       g   R# Vw  rVpV'       dL   ^ RIHp V'       g   \        V! V4      4      h\        P	                  RV! V4      R
P                  V4      4       V'       d8   RP                  R V P                  V3 4       4      P                  4       V n
        T ;P                  V U	u. uF  q™V P                  9  g   K  V	NK  	  up	,          un        R# u up	i )z“Join the background --skills preload and fold it into the prompt (idempotent).

Raises ``ValueError`` only when EVERY requested skill was unknown.
Ú_preload_skills_finalizedFNÚ_preload_skills_threadTr—  Ú_preload_skills_errorÚ_auto_load_skills_resultz=skills.auto_load: skill(s) not found or disabled, skipped: %sú, Ú_preload_skills_result)Úformat_missing_skillszRSkipping %s. Continuing with: %s. List available skills with `hermes skills list`.z

c              3   ó8   "  € T F  q'       g   K  Vx € K  	  R # 5irÉ   r&  r  s   & rÄ   rÃ  Ú6HermesCLI.finalize_preloaded_skills.<locals>.<genexpr>þ  s   é € Ð,aÑ8[°1Ó_`¯QªQÓ8[ùr  )rÊ   r¿  rÈ  rt  ru  r  Úpreloaded_skillsrì  rÅ  r4  Úsystem_promptrú   )
r(  ÚthreadÚerrÚauto_resultr«  Úskills_promptÚloaded_skillsÚmissing_skillsrÅ  r¿   s
   &         rÄ   Úfinalize_preloaded_skillsÚ#HermesCLI.finalize_preloaded_skillsÝ  sq  € ô
 �4Ð4°e×<Ò<ÙÜ˜Ð7¸Ó>ˆØŠ>Ø-1ˆDÔ*ÙØ�‰˜CˆÔ Ø)-ˆÔ&Ü�dÐ3°TÓ:ˆØŠ?ØˆIÜ˜dÐ$>ÀÓEˆß˜; qŸ>œ>Ü�N‰NÐZÐ\`×\eÑ\eÐfqÐrsÕftÓ\uÔvç8C¤ [°¥^Ô 4ÈˆÔÜ˜Ð7¸Ó>ˆßÙØ7=Ñ4ˆ nßÝBç Ü Ñ!6°~Ó!FÓGÐGÜ�N‰NÐoÙ0°Ó@À$Ç)Á)ÈMÓBZô\çØ!'§¡Ñ,a¸×9KÑ9KÈ]Ñ8[Ó,aÓ!a×!gÑ!gÓ!iˆDÔØ×Ò±=Ó!f±=¨4ÐPT×PeÑPeÑDe§$ $±=Ñ!fÕf×ùÒ!fs   ÆF8Æ"F8c                ó@  €  ^ RI Hp ^ RIHpHpHp ^ RIHp ^ RIH	p V! 4       w  rxT! Y€P                  ;'       g    . V4      pV! W…! 4       V! 4       R7      p	V	'       d-   V P                  4        V	 F  p
V P                  V
4       K  	  R# R#   \         d     R# i ; i)zZWarn about toolsets switched off at startup (missing API keys, unusable terminal backend).)Úcheck_tool_availability)Úcurrent_terminal_backendÚfilter_to_enabled_toolsetsÚtool_availability_warning_lines)Ú#terminal_backend_unavailable_reason)Úresolve_toolset)Úterminal_reasonÚterminal_backendN)rJ  rÓ  Ú$hermes_cli.tool_availability_noticesrÔ  rÕ  rÖ  Útools.terminal_toolr×  rL  rØ  Úenabled_toolsetsr�  rü   )r(  rÓ  rÔ  rÕ  rÖ  r×  rØ  Ú_ÚunavailableÚlinesrÁ  s   &          rÄ   Ú _show_tool_availability_warningsÚ*HermesCLI._show_tool_availability_warnings  s¢   € ð	õ <÷ñ õ PÝ0á4Ó6‰NˆAñ 5°[×BWÑBW×B]ÐB]Ð[]Ð_nÓoˆKÙ3ØÐ-PÓ-RÙ!9Ó!;ô=ˆE÷ Ø×#Ñ#Ô%Û!�DØ×'Ñ'¨Ö-ó "ñ øô ô 	Úð	ús   ‚9B ¼AB ÂBÂBc           	     óZ  € \         P                  ! RR4      p\         P                  ! R\         P                  ! 4       4      p\         P                  ! RR4      p\        R,          pVP	                  4       '       g!   \        \        4      P                  R,          pVP	                  4       '       d   \        R4      M
\        R	4      p^ R
I	H
p V P                  pV P                  e4   \        V P                  RR4      '       d   V P                  P                  pV! V4      ;p'       d   Tp	MC\        V\        4      '       d#   \!        V4      ^8”  d   VR,           RVR6R  2p	M\        R4      p	\        R4      p
^2pV\!        V
4      ,
          p\        R4      pVR8X  dJ   \         P                  ! RV4       R\         P                  ! RV4       R\         P                  ! RR4       2MRpRRV P"                  3RV P$                  3RV	333RRV3.V'       d   RV33MR7OR V3NR!V R"23N53R#R$V P&                  3R%V P(                  '       d   R&P+                  V P(                  4      MR'3R(V P,                  333R)R*V P.                  P1                  R+4      3R,V R-V 23333p\3        4        \3        R.R/V,          ,           R.,           4       \3        R0R-V^,          ,          ,           V
,           R-WÌ^,          ,
          ,          ,           R0,           4       \3        R.R/V,          ,           R.,           4       V Fd  w  pp\3        4        \3        R1\        V4       R224       \5        R3 V 4       4      pV F$  w  pp\3        R4\        V4      R5V 2 R-V 24       K&  	  Kf  	  \3        4        R# )8z4Display current configuration with kawaii ASCII art.ÚTERMINAL_ENVÚlocalÚTERMINAL_CWDÚTERMINAL_TIMEOUTÚ60r  zcli-config.yamlzcli.config.loadedzcli.config.not_found)Úcredential_labelNrp  :Né   Nz...zcli.config.api_key_not_setzcli.config.titlezcli.config.value_not_setÚsshÚTERMINAL_SSH_USERÚ@ÚTERMINAL_SSH_HOSTr,  ÚTERMINAL_SSH_PORTÚ22zcli.config.section_modelzcli.config.label_modelzcli.config.label_base_urlzcli.config.label_api_keyzcli.config.section_terminalzcli.config.label_environmentzcli.config.label_ssh_targetzcli.config.label_working_dirzcli.config.label_timeoutr×   zcli.config.section_agentzcli.config.label_max_turnszcli.config.label_toolsetsrÃ  Úallzcli.config.label_verbosezcli.config.section_sessionzcli.config.label_startedz%Y-%m-%d %H:%M:%Szcli.config.label_config_fileÚ Ú+r  Ú|z  -- z --c              3   óN   "  € T F  w  r\        \        V4      4      x € K  	  R # 5irÉ   )rë   r¡  )rÀ  Ú	label_keyrÞ  s   &  rÄ   rÃ  Ú(HermesCLI.show_config.<locals>.<genexpr>^  s   é € ÐJÁT±\°Yœc¤" Y£-×0Ð0ÃTùs   ‚#%r™  Ú<éüÿÿÿr&  )r#  ÚgetenvÚgetcwdÚ_hermes_homerŸ  r   Ú__file__r!  r¡  Úagent.credential_sourceré  rp  ÚagentrÊ   r÷   rÂ   rë   rñ   rq  rr  rÝ  rÈ  rt  Úsession_startÚstrftimer¢  rÍ  )r(  Úterminal_envÚterminal_cwdÚterminal_timeoutr(  Úconfig_statusré  Údisplay_keyÚlabelÚapi_key_displayÚtitlerÏ  ÚpadÚ_unsetÚ
ssh_targetÚsectionsÚsection_keyrÎ  Úlabel_widthrö  r  s   &                    rÄ   Úshow_configÚHermesCLI.show_config  s}  € ä—y’y °Ó9ˆÜ—y’y ´·²³Ó=ˆÜŸ9š9Ð%7¸Ó>Ðä" ]Õ2ˆØ×!Ñ!×#Ò#Üœx›.×/Ñ/Ð2CÕCˆKØ3>×3EÑ3E×3GÒ3GœÐ.Ô/ÌRÐPfÓMgˆõ 	=à—l‘lˆØ�:‰:Ò!¤g¨d¯j©j¸)ÀT×&JÒ&JØŸ*™*×,Ñ,ˆKÙ$ [Ó1Ð1ˆ5Ö1Ø#‰OÜ˜¤S×)Ò)¬c°+Ó.>ÀÔ.CØ!,¨R¥Ð 1°°[ÀÀÐ5EÐ4FÐG‰Oä Ð!=Ó>ˆOäÐ%Ó&ˆØˆØ”c˜%“jÕ ˆÜÐ.Ó/ˆð ˜UÔ"ô �yŠyÐ,¨fÓ5Ð6°a¼¿	º	ÐBUÐW]Ó8^Ð7_Ø”—	’	Ð-¨tÓ4Ð5ñ7à(,ð 	ð (Ø)¨4¯:©:Ð6Ø,¨d¯m©mÐ<Ø+¨_Ð=ð*?ð @ð +Ø/°Ð>ð-çDNÐ1°:Ð>Ñ@ÐTVð-ð 0°Ð>ð-ð ,Ð0@Ð/AÀÐ-CÐDñ	-ð ð (Ø-¨t¯~©~Ð>Ø,ÐRV×Rg×RgÐRg¨d¯i©i¸×8MÑ8MÔ.NÐmrÐsØ+¨T¯\©\Ð:ð*ð ð
 *Ø+¨T×-?Ñ-?×-HÑ-HÐI\Ó-]Ð^Ø/°K°=ÀÀ-ÀÐ1QÐRð,ð ð!
ˆô* 	ŒÜˆc�C˜%•KÕ #Õ%Ô&Üˆc�C˜3 !�8Õ$Õ$ uÕ,¨s°cÀ1½HµnÕ/EÕEÈÕKÔLÜˆc�C˜%•KÕ #Õ%Ô&Û!)ÑˆK˜ÜŒGÜ�Eœ"˜[›/Ð*¨#Ð.Ô/ÜÑJÁTÓJÓJˆKÛ$(Ñ �	˜5Ü˜œ2˜i›=¨¨;¨-¨Ð8¸¸%¸ÐAÖBó %)ñ	 "*ô 	ŽrÆ   ÚexitÚquitÚhelpÚpaletteÚwhoamiÚprofilerL  r‡  ÚredrawÚclearÚhistoryr	  Únewrñ   zcodex-runtimeÚretryÚpromptÚundoÚsaverö  Ú	platformsÚstatusÚcontextÚegressÚ	statusbarrt  ÚyoloÚcompressÚsubscriptionÚtopupÚinsightsÚupdateÚversionÚpasteÚreloadz
reload-mcpzreload-skillsÚpluginsÚstopÚagentsÚbgrc  Ústeerr-  c                óJ   <€ V ^8„  d   QhRS[ RS[S[ S[3,          R,          /# )r½   Ú	canonicalrå   N)rÂ   r  rd  )rÃ   rE  s   "€rÄ   rÅ   rz  |  s)   ø€ ÷ ñ ¡sð ©u±S¹$°YÕ/?À$Õ/Fñ rÆ   c                ó®   € V P                   P                  V4      pVf6   RVP                  RR4       R2p\        \	        WR4      4      '       d   VR3pV# )zF(method name, pass cmd_original?) for a registered command, else None.NÚ_handle_r  rÞ  Ú_commandT)Ú_SLASH_DISPATCHrÜ   ÚreplaceÚcallablerÊ   )r,  r4  rÿ   r¿   s   &&  rÄ   Ú_slash_handlerÚHermesCLI._slash_handler{  s[   € ð ×#Ñ#×'Ñ'¨	Ó2ˆØŠ=Ø˜i×/Ñ/°°SÓ9Ð:¸(ÐCˆDÜœ ¨4Ó0×1Ò1Ø˜t˜�ØˆrÆ   Ú
redispatchc                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r½   Úcommandr=  rå   rÛ  )rÃ   rE  s   "€rÄ   rÅ   rz  ‰  s"   ø€ ÷ 0#ñ 0#¡sð 0#¹4ð 0#ÉDñ 0#rÆ   c               ó>  € VP                  4       P                  4       pVP                  4       p^ RIHp VP	                  4       ^ ,          P                  R4      pV! V4      pV'       d   VP                  MTpV'       g,   V P                  '       d   ^ RIH	p	 V	! W€P                  R7       VR9  d   RV n
        T P                  V4      p
^ RIHp V
e   V! WV4      '       d   R# ^ RIHp ^ R	IHp V
RJ;'       d    WŒ9  pVeB   V! W\%        V4      VR
7      '       g(   ^ RIHp V! RW†\%        V4      \+        V RR4      RR7       V
f   V P-                  WC4      # ^ RIHp V! WV4      '       d   R# V
w  pp\+        V V4      pV'       d	   V! V4      MV! 4       pVRJ# )z²Dispatch a slash command; returns False to exit the REPL. ``redispatch`` marks an internal
re-entry (quick-command alias, prefix expansion) so the user's command is counted once.)Úresolve_commandrô   )Úrecord_slash_command)r?  r‚  N)ÚrunT)ÚREFUSED)Úobserve)Úruns)Úfire_pre_command_hookrf  rh  )r‚  r?  Ú
alias_usedÚargs_rawÚsession_keyri  F>   rv  Úsessions)r.  rú   Úhermes_cli.commandsrA  rû   Úlstripr¿   Ú_slash_metrics_surfaceÚ.hermes_cli.observability.shared_metrics_eventsrB  Ú_pending_resume_sessionsr;  Ú#hermes_cli.gateway_setting_commandsrC  Úhermes_cli.gateway_cli_commandsrD  Ú"hermes_cli.gateway_plugin_commandsrE  rå  r  rG  rÊ   Ú_process_unregistered_slash)r(  r?  r=  Ú	cmd_lowerÚcmd_originalÚ_resolve_cmdÚ
_base_wordÚ_cmd_defr4  rB  rÿ   Úrun_gateway_settingrD  rE  rF  rG  Úrun_gateway_commandÚmethod_nameÚpass_argÚhandlerr«  s   &&$                  rÄ   Úprocess_commandÚHermesCLI.process_command‰  ss  € ð —M‘M“O×)Ñ)Ó+ˆ	Ø—}‘}“ˆõ 	HØ—_‘_Ó& qÕ)×0Ñ0°Ó5ˆ
Ù 
Ó+ˆß%-�H—M’M°:ˆ	ß˜d×9×9Ð9Ý[Ù ¨×<WÑ<WÕXð
 Ð2Ô2ð
 -1ˆDÔ)à×#Ñ# IÓ.ˆÝRØÒÑ!4°TÀl×!SÒ!SÙõ 	<Ý>Ø˜DÐ ×=Ð= YÑ%=ˆØÒ©°Ä+ÈlÓB[Ðbf×(gÓ(gÝ@Ù!Ø yÔR]Ð^jÓRkÜ# D¨,¸Ó=Èõð Š=Ø×3Ñ3°LÓLÐLÝNÙ˜t°×=Ò=ÙØ %Ñˆ�XÜ˜$ Ó,ˆß*2‘˜Ô&¹»	ˆØ˜UÐ"Ð"rÆ   c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[/# ©r½   rV  rU  rå   rÛ  )rÃ   rE  s   "€rÄ   rÅ   rz  »  s#   ø€ ÷ ñ ¹ð Éð ÑPTñ rÆ   c                ó  € VP                  4       ^ ,          pVP                  R4      p\        4       pV P                  P	                  R/ 4      pV\        V4      R P                  4       pWF9   d   V P                  W6V,          V4      # ^ RIH	p  VP                  W4      p	Rp
\        T 4      pT	'       g   T	fB   T\        4       9   d3   T P                  Y74      TP                  J p
T
'       g   R# \        T 4      pY59   d   T P!                  Y5T,          T4       R# Y;9   d   T P#                  Y;T,          T4       R# T
'       d   TP%                  YKT4      '       g   T P'                  YYµ4      # R#   TP                   d     R# i ; i)zuSlash input with no built-in handler; precedence: quick_commands -> plugins -> bundles -> skills -> prefix expansion.rô   Úquick_commandsNró  TF)rû   rM  rý  r‡  rÜ   rë   rú   Ú_run_quick_commandrõ  rô  ÚlookupÚCatalogUnavailablerø  r	  Ú_run_plugin_slash_commandÚGONEÚ_run_skill_bundle_commandÚ_run_skill_slash_commandÚreport_goneÚ_expand_slash_prefix)r(  rV  rU  Úbase_cmdÚbareÚskill_bundlesrd  Ú	user_argsrô  ÚpluginÚgoneÚskill_commandss   &&&         rÄ   rT  Ú%HermesCLI._process_unregistered_slash»  sg  € à—?‘?Ó$ QÕ'ˆØ�‰˜sÓ#ˆÜ)Ó+ˆØŸ™Ÿ™Ð)9¸2Ó>ˆØ ¤ X£ Ð0×6Ñ6Ó8ˆ	ØÔ!Ø×*Ñ*¨8ÀDÕ5IÈ9ÓUÐUÝ6ð	Ø,×3Ñ3°DÓ?ˆFð ˆÜ0°Ó6ˆß�f’n¨Ô1NÓ1PÔ)PØ×1Ñ1°(ÓFÐJa×JfÑJfÐfˆDßÙÜ4°TÓ:ˆNØÔ$Ø×*Ñ*¨8À8Õ5LÈiÔXñ
 ð	 Ô'Ø×)Ñ)¨(À8Õ4LÈiÔXñ ÷ Ð2×>Ñ>¸tÐUb×cÒcØ×,Ñ,¨\ÀnÓdÐdÙøð '×9Ñ9ô 	Úð	ús   ÂE2 Å2FÆFc                ó2   <€ V ^8„  d   QhRS[ RS[RS[ RS[/# )r½   rn  Úqcmdrq  rå   )rÂ   rø   rd  )rÃ   rE  s   "€rÄ   rÅ   rz  Ø  s)   ø€ ÷ (ñ (©3ð (±dð (Ásð (Étñ (rÆ   c                ó„  € VP                  R4      pVR8X  d�   VP                  RR4      P                  4       pV'       dE   VP                  R4      '       d   TMRV 2pV P                  V RV 2P                  4       RR7      # V P	                  R	\        R
VR7       R24       R# VR8w  d#   V P	                  R	\        RVR7       R24       R# ^ RIpVP                  RR4      pV'       g#   V P	                  R	\        RVR7       R24       R#  ^ RIHp ^ RI	H
p	 VP                  VRRRRR^V! 4       V	! 4       RR7
      p
V
P                  P                  4       ;'       g    V
P                  P                  4       pV'       d)   ^ RIHp V P	                  \!        V! V4      4      4       R# V P	                  R\        R4       R24        R#   TP"                   d#    T P	                  R	\        R4       R24        R# \$         d5   pT P	                  R	\        R\'        T4      R7       R24        Rp?R# Rp?ii ; i)zaUser-defined quick command (config.yaml): ``exec`` runs a shell snippet, ``alias`` re-dispatches.ÚtyperÀ   r;  rò   rô   rò  T©r=  r‹  zcli.quick.no_target©r?  rŒ  Úexeczcli.quick.unsupported_typeNr?  zcli.quick.no_command)Úbuild_subprocess_env)Úwindows_hide_flagszutf-8r9  F)	ÚshellÚcapture_outputr  r  Úerrorsr˜  ÚenvÚcreationflagsÚcheck)Úredact_sensitive_textz[dim]zcli.quick.no_outputzcli.quick.timed_outzcli.quick.error©r'  )rÜ   rú   rÞ  r_  r�  r¡  Ú
subprocessÚtools.environments.localr}  Úhermes_cli._subprocess_compatr~  rC  r�  r€  Úagent.redactr…  rl   ÚTimeoutExpiredrü   rÂ   )r(  rn  rw  rq  Úqtyper;  r‡  Úexec_cmdr}  r~  r«  rÑ  r…  ry  s   &&&&          rÄ   re  ÚHermesCLI._run_quick_commandØ  s/  € à—‘˜Ó ˆØ�GÔØ—X‘X˜h¨Ó+×1Ñ1Ó3ˆFßØ#)×#4Ñ#4°S×#9Ò#9™ÀÀ6À(¸|�Ø×+Ñ+¨v¨h°a¸	°{Ð,C×,IÑ,IÓ,KÐX\Ð+Ó]Ð]Ø×Ñ *¬RÐ0EÈxÔ-XÐ,YÐY\Ð ]Ô^ÙØ�FŒ?Ø×Ñ *¬RÐ0LÐV^Ô-_Ð,`Ð`cÐ dÔeÙÛØ—8‘8˜I rÓ*ˆßØ×Ñ *¬RÐ0FÐPXÔ-YÐ,ZÐZ]Ð ^Ô_Ùð	Wõ FÝHØ—^‘^Ø °TÀÈwÐ_hØÑ 4Ó 6Ù0Ó2Øð	 $ó ˆFð —]‘]×(Ñ(Ó*×CÐC¨f¯m©m×.AÑ.AÓ.CˆFßÝ>Ø×#Ñ#Ô$8Ñ9NÈvÓ9VÓ$WÔXñ ð ×#Ñ# e¬BÐ/DÓ,EÐ+FÀcÐ$JÕKñ
 øð	 ×(Ñ(ô 	MØ×Ñ *¬RÐ0EÓ-FÐ,GÀsÐ KÕLñ ô ô 	WØ×Ñ *¬RÐ0AÌÈQËÔ-PÐ,QÐQTÐ U×VÐVÙûð	Wús7   ÄAG Å#"G Æ&G Æ.G Ç/H?ÈH?È
H?È)H:È:H?c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r½   rn  rq  rÁ   )rÃ   rE  s   "€rÄ   rÅ   rz    s   ø€ ÷ Wñ W±#ð WÁ#ñ WrÆ   c                ó`  € ^ RI Hp VP                  WP                  R4      V4      pV'       d   V# ^ RIHp ^ RIHpHp V! VP                  R4      4      pV'       g   R# \        V RR4      ;'       g    Rp	^ RI
Hp
Hp  V
! V! V P                  4      4      ;_uu_ 4        V! V! W‚RW™R	R
7      4      pRRR4       X'       d   \        \        V4      4       R# R#   + '       g   i     L0; i  \          d4   p\        R\#        R\        T4      R7       \$         24        Rp?R# Rp?ii ; i)rÕ   ró  rô   )Úinvoke_plugin_command)Úget_plugin_command_handlerÚresolve_plugin_command_resultNrh  rò   )Ú
bind_askerÚclarify_askerrf  )Úsourcerh  rJ  ri  ú[1;31mzcli.plugin.command_errorr†  )rõ  rô  rC  rM  Ú"hermes_cli.plugin_command_dispatchr‘  r  r’  r“  rÊ   Úhermes_cli.plugin_choicesr”  r•  Ú_clarify_callbackrR   rÂ   rü   r¡  r@   )r(  rn  rq  rô  Úansweredr‘  r’  r“  Úplugin_handlerrh  r”  r•  r«  ry  s   &&&           rÄ   rh  Ú#HermesCLI._run_plugin_slash_command  sô   € Ý6Ø*×.Ñ.¨t·_±_ÀSÓ5IÈ9ÓUˆßØˆOÝLß`Ù3°H·O±OÀCÓ4HÓIˆßÙÜ˜T <°Ó6×<Ð<¸"ˆ
ßGð	WÙ™M¨$×*@Ñ*@ÓA×BÕBÙ6Ñ7LØ"°dÀzØ"ô8$ó %�÷ C÷ Üœ˜F›Ö$ñ ÷	 C×Bûô ô 	WÜ�j¤Ð$>ÄcÈ!ÃfÔ!MÐ NÌtÈfÐU×VÒVûð	Wús6   Â C/ Â!CÂ4C/ ÃC/ ÃC,	Ã'C/ Ã/D-Ã:(D(Ä(D-c                ó   <€ V ^8„  d   QhRR/# rV  r&  )rÃ   rE  s   "€rÄ   rÅ   rz    s   ø€ ÷ )ñ )¨4ñ )rÆ   c                ód   € \        V R 4      '       d   V P                  P                  V4       R# R# )Ú_pending_inputN)Úhasattrr   Úput)r(  Úmsgs   &&rÄ   Ú_queue_skill_messageÚHermesCLI._queue_skill_message  s)   € Ü�4Ð)×*Ò*Ø×Ñ×#Ñ# CÖ(ñ +rÆ   c                ó0   <€ V ^8„  d   QhRS[ RS[RS[ RR/# )r½   rn  Úbundle_infoÚuser_instructionrå   N©rÂ   rø   )rÃ   rE  s   "€rÄ   rÅ   rz    s1   ø€ ÷ sñ s±#ð sÁDð sÑ\_ð sÐdhñ srÆ   c                ó  € \        WV P                  R7      pV'       g+   \        4       P                  R\	        RVR7       R24       R# Vw  rVpV P                  V\	        RVR,          \        \        V4      4      R	7      V4       R# )
zP``/<bundle>`` loads several skills at once (bundles win over same-named skills).©Útask_idr‹  zcli.skills.bundle_load_failedr{  rŒ  Nzcli.skills.loading_bundler¿   )r¿   Úcount)r  rh  r5   r¢  r¡  Ú_queue_loaded_skillsrÂ   rë   )r(  rn  r§  r¨  Úbundle_resultr£  Úloaded_namesÚmissings   &&&&    rÄ   rj  Ú#HermesCLI._run_skill_bundle_command  s|   € ä7¸Ð\`×\kÑ\kÔlˆßÜ‹M×Ñ *¬RÐ0OÐYaÔ-bÐ,cÐcfÐ gÔhÙØ%2Ñ"ˆ˜7Ø×!Ñ!Ø”Ð/°kÀ&Õ6IÔQTÔUXÐYeÓUfÓQgÔhÐjqö	srÆ   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r½   r  rå   NrÁ   )rÃ   rE  s   "€rÄ   rÅ   rz  &  s   ø€ ÷ 'ñ '©sð 'Àñ 'rÆ   c           	     óÂ   € \        R V 24       V'       d8   \        4       P                  R\        RRP                  V4      R7       R24       V P	                  V4       R# )u   
âš¡ z[yellow]zcli.skills.skipped_missingrÃ  )ÚnamesrŒ  N)r¢  r5   r¡  rÈ  r¤  )r(  r£  r  r±  s   &&&&rÄ   r®  ÚHermesCLI._queue_loaded_skills&  sR   € Ü��u�gÐÔßÜ‹M×Ñ (¬2Ð.JÐRV×R[ÑR[Ð\cÓRdÔ+eÐ*fÐfiÐ jÔkØ×!Ñ! #Ö&rÆ   c                ó0   <€ V ^8„  d   QhRS[ RS[RS[ RR/# )r½   rn  Ú
skill_infoÚrestrå   Nr©  )rÃ   rE  s   "€rÄ   rÅ   rz  ,  s0   ø€ ÷ hñ h±ð hÁ$ð hÉcð hÐVZñ hrÆ   c                óz  € ^ RI Hp VP                  WV4      '       d   R# ^ RIHpHp V! VRR7      w  rxV'       d‘   V! V.VOW€P                  R7      p	V	'       g+   \        4       P                  R\        RVR	7       R
24       R# V	w  r«pV P                  V
\        R\        \        V4      4      RP                  V4      R7      V4       R# \        WV P                  R7      p
V
'       d(   V P                  V
\        RVR,          R7      R4       R# \        4       P                  R\        RVR	7       R
24       R# )z[``/<skill> ...``; stacked ``/skill-a /skill-b do XYZ`` loads every leading skill (up to 5).ró  N)Ú&build_stacked_skill_invocation_messageÚsplit_stacked_skill_commandsT)Úinteractiver«  r‹  zcli.skills.stacked_load_failedr{  rŒ  zcli.skills.loading_stackedrÃ  )r­  rµ  zcli.skills.loading_skillr¿   )r¿   zcli.skills.skill_load_failed)rõ  rô  Ú	run_skillrì  r»  r¼  rh  r5   r¢  r¡  r®  rÂ   rë   rÈ  rù  )r(  rn  r¸  r¹  rô  r»  r¼  Ú
extra_keysr¨  Ústacked_resultr£  r°  r±  s   &&&&         rÄ   rk  Ú"HermesCLI._run_skill_slash_command,  s  € å6Ø"×,Ñ,¨T¸T×BÒBÙßmñ (DÀDÐVZÔ'[Ñ$ˆ
ßÙCØÐ'˜JÐ'Ð)9Ç?Á?ôˆN÷ "Ü“×#Ñ# j´Ð4TÐ^fÔ1gÐ0hÐhkÐ$lÔmÙØ)7Ñ&ˆC˜wØ×%Ñ%Ø”RÐ4¼CÄÀLÓ@QÓ<RÐZ^×ZcÑZcÐdpÓZqÔrØôñ Ü,¨XÀTÇ_Á_ÔUˆßØ×%Ñ% c¬2Ð.HÈzÐZ`ÕOaÔ+bÐdhÖiä‹M×Ñ *¬RÐ0NÐX`Ô-aÐ,bÐbeÐ fÖgrÆ   c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[/# rb  rÛ  )rÃ   rE  s   "€rÄ   rÅ   rz  I  s#   ø€ ÷ ñ ±ð Áð Ñhlñ rÆ   c                óÚ  € ^ RI Hp VP                  4       ^ ,          p\        V4      \        V4      ,          \        V4      ,          pV Uu. uF  qˆP	                  V4      '       g   K  VNK  	  p	p\        V	4      ^8”  dR   Wi9   d   V.p	MG\        R V	 4       4      p
V	 Uu. uF  p\        V4      V
8X  g   K  VNK  	  pp\        V4      ^8X  d   Tp	\        V	4      ^8X  dJ   V	^ ,          V8w  d<   V P                  V	^ ,          VP                  4       \        V4      R ,           RR7      # \        V	4      ^8”  dc   \        \         \        RVR7       \         24       \        \         \        RR	P                  \        V	4      4      R
7       \         24       R# ^ RIHp V! W'4      w  rÞ\        RV \         24       \        \         \         V \         24       R# u upi u upi )zhUnique-prefix expansion against built-in COMMANDS + skill commands/bundles (agrees with tab-completion).)ÚCOMMANDSc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5irÉ   rê   )rÀ  Úcs   & rÄ   rÃ  Ú1HermesCLI._expand_slash_prefix.<locals>.<genexpr>T  s   é € Ð6©g¨œc !Ÿf˜f«gùs   ‚NTrz  zcli.command.ambiguousr{  zcli.command.did_you_mean_manyrÃ  )Ú
candidates)Úunknown_command_linesr—  )rL  rÄ  rû   r  rÞ  rë   Úminr_  rú   rR   r6   r¡  r@   r:   rÈ  ÚsortedÚhermes_cli.cli_unknown_commandrÉ  )r(  rV  rU  rt  rp  rÄ  Ú
typed_baseÚ	all_knownrÆ  ÚmatchesÚmin_lenÚshortestrÉ  ÚleadÚpointers   &&&&&          rÄ   rm  ÚHermesCLI._expand_slash_prefixI  s¨  € å0Ø—_‘_Ó& qÕ)ˆ
Ü˜“M¤C¨Ó$7Õ7¼#¸mÓ:LÕLˆ	Ù'ÓD™i˜¯<©<¸
×+C—1�1™iˆÐDÜˆw‹<˜!ÔØÔ$Ø%˜,‘ô Ñ6©gÓ6Ó6�Ù'.ÓD¡w !´#°a³&¸GÑ2CŸA˜A¡w�ÐDÜ�x“= AÔ%Ø&�GÜˆw‹<˜1Ô ¨¥¨zÔ!9à×'Ñ'¨°­
°\×5GÑ5GÓ5IÌ#ÈjË/ÐJZÐ5[Õ([ÐhlÐ'ÓmÐmÜˆw‹<˜!ÔÜ”w�i¤Ð#:ÀIÔ NÐOÔPTÈvÐVÔWÜ”t�fœRÐ ?ÈDÏIÉIÔV\Ð]dÓVeÓLfÔgÐhÔimÐhnÐoÔpñ õ	 MÙ1°)ÓG‰MˆDÜ�j  ¤t fÐ-Ô.Ü”t�fœW˜I g Y¬t¨fÐ5Ô6Ùùò- Eùò Es   ÁG#Á*G#Â"G(Â9G(c                ó   <€ V ^8„  d   QhRR/# rV  r&  )rÃ   rE  s   "€rÄ   rÅ   rz  f  s   ø€ ÷ ñ ¸ñ rÆ   c                óî   €  V P                   P                  4       '       gB   V P                   P                  4       pV'       g   KD  V P                  P	                  V4       Ka  R#   \
         d     R# i ; i)aÉ  Move stray ``_interrupt_queue`` messages into ``_pending_input`` after every turn.

Busy-time input lands in ``_interrupt_queue`` and is only drained by the explicit
interrupt path; a turn that finishes naturally would otherwise strand it and the
CLI appears to hang. Never raises.

Called once at the end of every turn from ``process_loop``'s ``finally`` block. Catches and swallows
``Exception`` because the drain must never break the main loop. (#20271)
N)Ú_interrupt_queueÚemptyÚ
get_nowaitr   r¢  rü   )r(  Ústrays   & rÄ   Ú'_drain_interrupt_queue_to_pending_inputÚ1HermesCLI._drain_interrupt_queue_to_pending_inputf  sb   € ð	Ø×+Ñ+×1Ñ1×3Ò3Ø×-Ñ-×8Ñ8Ó:�ß‘5Ø×'Ñ'×+Ñ+¨EÖ2ñ 4øô ô 	Úð	ús   ‚A% ¢A% ÁA% Á%A4Á3A4c                ó    <€ V ^8„  d   QhRS[ /# )r½   Úreasoning_textrÁ   )rÃ   rE  s   "€rÄ   rÅ   rz  x  s   ø€ ÷ 3ñ 3©Cñ 3rÆ   c                óp   € V'       g   R# \        V RR4      V,           V n        V P                  RR7       R# )zCCallback for intermediate reasoning display during tool-call loops.NÚ_reasoning_preview_bufrò   F)Úforce)rÊ   rà  Ú_flush_reasoning_preview)r(  rÞ  s   &&rÄ   Ú_on_reasoningÚHermesCLI._on_reasoningx  s1   € çÙÜ&-¨dÐ4LÈbÓ&QÐTbÕ&bˆÔ#Ø×%Ñ%¨EÐ%Ö2rÆ   c           	     ó¬  a€ V P                  R4      '       g   R# T P                  4        V P                  4        V P                  4       pV P	                  V4      w  r#V P                  W!V4      p\        V4       V;P                  V P                  ,          un        ^ RI	H
p V;P                  V! 4       ,          un        W@n         ^ RIHp ^ RIHp \        VRR4      '       g(   \         P"                  ! \$        V4      Vn        RVn        \+        4        T P-                  T4       \.        P0                  ! T P2                  RR7      P5                  4        \.        P0                  ! T P6                  RR7      P5                  4        \.        P0                  ! T P8                  RR	R
7      P5                  4        \:        P<                  ! \>        4       T PA                  4        T PC                  4       '       g   \?        4        T PE                  4        R#  \G        4       ;_uu_ 4         ^ RI$pTPK                  4       PM                  T PN                  4       \Q        4        T PR                  '       d   \U        TPV                  4       T PY                  4        TP[                  4        RRR4       \y        4        T P{                  4        T P|                  '       d   ^ RI?H@p T! T P|                  RR7       R# R#   \(         d     ELûi ; i  \(         d     LÂi ; i  + '       g   i     L}; i  \\        \^        \`        3 d     L˜\b        \d        3 dÛ   p	\g        T	\d        4      '       d   \        T	RR4      MRp
\i        T	4      oT
\j        Pl                  8X  d    Rp	?	LòT
\j        Pn                  \j        Pp                  09   gA   \r        ;QJ d    T3R lR 4       F  '       g   K   RM	  RM! T3R lR 4       4      '       d&   \u        \w        R\i        T	4      R7      4        Rp	?	EL|h Rp	?	ii ; i  \y        4        T P{                  4        i ; i)z=Run the interactive CLI loop with persistent input at bottom.rf  N)Úcli_prompt_ready_handler)Ú_output_screen_diffÚ_hermes_osd_patchedFT)r;  Údaemonzwake-startup)r;  ré  r¿   Úerrnoc              3   ó,   <"  € T F	  qS9   x € K  	  R # 5irÉ   r&  )rÀ  r×   Ú_msgs   & €rÄ   rÃ  Ú HermesCLI.run.<locals>.<genexpr>ä  s   øé € ð >Ù#c˜a�T–	Ó#cùs   ƒzcli.startup.stdin_unusabler†  )Úrelaunch)Úpreserve_inherited)zis not registeredzBad file descriptorzInvalid argument)Ar–  Ú_tui_print_startupÚ_tui_init_run_stateÚ_tui_build_key_bindingsÚ_tui_build_layoutÚ_tui_build_applicationr”   Úafter_renderÚ_pet_flush_kitty_frameÚ/hermes_cli.observability.shared_metrics_startupræ  Ú_apprÉ  Úrendererrç  rÊ   Ú	functoolsÚpartialr™   rè  rü   rŽ   Ú_install_resize_recoveryre  rf  Ú_tui_spinner_loopÚstartÚ_tui_process_loopÚ_tui_wake_startupr�  r‘  rz  Ú_tui_install_signal_handlersÚ_tui_stdin_usableÚ_print_exit_summaryr´   ÚasyncioÚget_running_loopÚset_exception_handlerÚ _tui_suppress_closed_loop_errorsrY  Ú_tui_multiline_shortcutsr•   rÑ  Ú_pet_start_animrC  ÚEOFErrorÚKeyboardInterruptÚBrokenPipeErrorÚKeyErrorr%  r÷   rÂ   rê  ÚEIOÚEINVALÚEBADFr  r¢  r¡  rj   Ú_tui_shutdownÚ_pending_relaunchÚhermes_cli.relaunchrî  )r(  ÚkbÚlayoutÚstyleÚappræ  Ú_pt_rendererÚ	_orig_osdÚ_aioÚ
_stdin_errÚ_errnorî  rì  s   &           @rÄ   rC  ÚHermesCLI.runˆ  s;  ø€ à×)Ñ)¨%×0Ò0Ùà×ÑÔ!Ø× Ñ Ô"Ø×)Ñ)Ó+ˆØ×.Ñ.¨rÓ2‰ˆà×)Ñ)¨&°eÓ<ˆÜ+¨CÔ0Ø×Ò˜D×7Ñ7Õ7ÕÝ\Ø×ÒÑ4Ó6Õ6ÕØŒ	ð
	õ ;ÝPä˜<Ð)>À×FÒFÜ3<×3DÒ3DÜ3°Yó4�Ô0ð 48�Ô0ô 	-Ô.à×%Ñ% cÔ*ä×Ò × 6Ñ 6¸tÔD×JÑJÔLÜ×Ò × 6Ñ 6¸tÔD×JÑJÔLä×Ò × 6Ñ 6¸tÈ.ÔY×_Ñ_Ôaä�ŠœÔ%Ø×)Ñ)Ô+à×%Ñ%×'Ò'ÜŒNØ×$Ñ$Ô&Ùð*	!Ü—•ðó +Ø×)Ñ)Ó+×AÑAÀ$×BgÑBgÔhô -Ô.Ø×0×0Ð0Ü/°·
±
Ô;Ø×$Ñ$Ô&Ø—‘”	÷-  ôP ÔØ×ÑÔ ð ×!×!Ð!Ý4Ù�T×+Ñ+À×Fñ "øôE ô 	Úð	ûô@ !ô Ùðú÷  —ûô. Ô+¬_Ð=ô 	ÙÜœ'Ð"ô 	ô <FÀjÔRY×;ZÒ;Z”W˜Z¨°$Ô7Ð`dˆFÜ�z“?ˆDØœŸ™Ô"ÜØœEŸL™L¬%¯+©+Ð6Ô6¿#»#ô >Ù#có>¿#¿#º#ô >Ù#có>÷ ;ò ;ô ”bÐ5¼SÀ»_ÔM×NÒNàûð	ûô ÔØ×ÑÕ ús½   Ã	AK< ÈL2 È*LÈ,-LÉALÊ*L2 Ë<LÌ
LÌLÌLÌLÌLÌL/	Ì*L2 Ì.P7 Ì/L2 Ì2P4ÍP7 Í
P4ÍP4ÍAP/ÎP7 Î$/P/ÏP/Ï+P/Ð	P/Ð(P7 Ð.P/Ð/P4Ð4P7 Ð7Qc                ó´   <€ V ^8„  d   Qh/ S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[S[S[S[S[3,          3,          ;R&   S[R,          ;R&   # )r½   Ú_seeded_first_messageÚdisabled_toolsetsr8  NrN  )r   rD  r  rÂ   rø   r  rd  )rÃ   rE  s   "€rÄ   rÅ   rz  p  se   ø‡ ‚ ñ
 $Ñ$7Õ8Ñ?ñ ñ  ¡¡S¥	Õ*Ñ1ñ ñl ™#™u¡S©$ YÕ/Ð/Õ0ñ ñm ñn   $�JÑ.òo rÆ   )r�  rø  rP  r¿  rà  r¢  rÈ  rÉ  )NNNNNNNNNFNFFF)rf  )Ú	_cmd_exitT)Ú	_cmd_helpT)Ú_open_command_paletteF)Ú_handle_whoami_commandF)Ú_handle_profile_commandF)Úshow_toolsetsF)r  F)Ú_cmd_redrawT)Ú
_cmd_clearT)Úshow_historyF)Ú
_cmd_titleT)Ú_cmd_newT)Ú_handle_model_switchT)Ú_handle_codex_runtimeT)Ú
_cmd_retryT)Ú_handle_prompt_compose_commandT)Ú	_cmd_undoT)Úsave_conversationT)Ú_cmd_skillsT)Ú_show_gateway_statusF)Ú_show_session_statusF)Ú_show_context_breakdownT)Ú_cmd_egressT)Ú_cmd_statusbarT)Ú_toggle_verboseF)Ú_toggle_yoloF)Ú_manual_compressT)Ú_show_subscriptionF)Ú_show_billingT)Ú_show_insightsT)Ú_cmd_updateT)Ú_cmd_versionT)Ú_handle_paste_commandF)Ú_cmd_reloadT)Ú_confirm_and_reload_mcpT)Ú_cmd_reload_skillsT)Ú_cmd_pluginsT)Ú_handle_stop_commandF)Ú_handle_agents_commandF)Ú_handle_background_commandT)Ú
_cmd_queueT)Ú
_cmd_steerT)Ú_cmd_moaT>   Únowú-yú--yes)'rÑ   r?  rÒ   r@  rA  r  r   r9  r–  r’  Ú_PET_FRAME_INTERVALÚ_PET_CFG_INTERVALrª  r±  r»  rÐ  rá  r  r8  Úclassmethodr;  rN  r_  rT  re  rh  r¤  rj  r®  rk  rm  rÛ  rã  Ú	frozensetÚ_DESTRUCTIVE_SKIP_TOKENSrC  ri  rB  rC  rD  s   @rÄ   rl  rl  p  s1  ø‡ € Ù0ð <@Ðà-1Ð÷)ò )ñ0ÈE÷ ó ÷4	.ð 	.ð ÐØÐ÷.ð .ò	ò
I÷"gð "gòHò8DðR4ØÐ#ð4Ø%+Ð-@ð4ØBHÐJ]ð4àÐ3ð4à5=Ð?`ð4ð 	Ð5ð4ð 8BÐC[ð4ð 	Ð(ð	4ð +3Ð4Ið	4ð LSÐThð	4ð
 	Ð*ð4ð
 -4Ð5Ið4ð
 LQÐRdð4ð 	Ð/ð4ð 2AÐBað4ð 	Ð%ð4ð (0Ð1Yñ4ð 	Ð#ð4ð &,Ð-Hð4ð KSÐTið4ð 	Ð4ð4ð 7?Ð@_ð4ð 	Ð4ð4ð 7?Ð@Uð4ð 	Ð-ð4ð 09Ð:Tð4ð W]Ð^uð4ð 	Ð.ð4ð 1?Ð@]ð4ð 	Ð(ð4ð +5Ð6Nð4ð QYÐZoð4ð 	Ð)ð4ð ,3Ð4Tñ4ð W_Ð`uØÐ7¸ÐJfØÐ)¨6Ð3RØÐ3°TÐ;_ØÐ% wÐ0DÀeÐM_ñ%4€Oð* ÷ó ðð */Ðð0#À%÷ 0#ò 0#÷dð ÷:(ð (÷TWð W÷,)ð )÷sð s÷'ð '÷hð h÷:ð ÷:ð ÷$3ð 3ñ  )Ò)?Ó@ÐòkG÷q ƒ rÆ   rl  c                óÚ  aaaa€ Rp\        V\        4      '       d8   V'       d0   VP                  R4       Uu. uF  pVP                  4       NK  	  ppM­\        V\        \
        34      '       du   V'       dm   . pV Fc  pTP                  \        V\        4      '       d0   VP                  R4       Uu. uF  pVP                  4       NK  	  upM\        V4      .4       Ke  	  MV'       g    ^ RIHp V! R\        R7      p\        V4      o \        V VVVVVVVVV	V
VVVR7      oT'       g   RSn        T'       d   TMRSn        ^ R	IHoHp \/        SR
T4      '       d   . MT! \        4      oS'       g   R. . 3Sn        S'       g	   S'       d   . SOT3R lS 4       OSn        ^ RIHp \        \/        SRR4      T4      '       d   S# R TTTT3R llp\8        P:                  ! TRRR7      Sn        SP<                  P?                  4        S# u upi u upi   \         d    Rp EL*i ; i  \         d1   p^ RIHp T! T4      '       d   \         P"                  ! ^4       h Rp?ii ; i)z†Resolve the toolset list (explicit / coding posture / platform default), construct HermesCLI, and start the background skills preload.Nr  )Úcoding_selectionrf  )ri  r‡  )rñ   rL  rn  ro  rp  rq  rr  rs  rt  ru  rv  rw  rx  ry  )Úemit_partial_update_hintF)Úbuild_auto_load_promptÚresolve_auto_load_skillsry  rò   c              3   ó8   <"  € T F  qS9  g   K  Vx € K  	  R # 5irÉ   r&  )rÀ  r×   Úauto_load_namess   & €rÄ   rÃ  Ú'_build_cli_from_args.<locals>.<genexpr>1  s   øé € Ð<rÉÀ1ÐbqÑYq¿QºQËùs   ƒ�
)ÚGatewaySessionStoreÚ_session_dbc                ó   € V ^8„  d   QhRR/# rV  r&  )rÃ   s   "rÄ   rÅ   Ú*_build_cli_from_args.<locals>.__annotate__;  s   € ÷ 	0ñ 	0¨ñ 	0rÆ   c                  ó  <€  S'       d   S! SP                   \        R 7      Sn        S'       d:   \        SSP                   \	        SP                  ^,          4      R7      Sn        R# R#   \         d   p T Sn         Rp ? R# Rp ? ii ; i))r¬  Úuser_config)r¬  Úexcluded_loaded_namesN)rh  Ú
CLI_CONFIGrÂ  rú  r  rÄ  rü   rÁ  )r•  rY  rV  rf  Úparsed_skillss    €€€€rÄ   Ú_load_preloaded_skillsÚ4_build_cli_from_args.<locals>._load_preloaded_skills;  ss   ø€ ð0ß"Ù3IÐRU×R`ÑR`ÔnxÔ3y�CÔ0ß Ü1NØ%¨s¯~©~ÔUXÐY\×YuÑYuÐvwÕYxÓUyô2{�CÖ.ñ !øô ô 0Ø,/�×)Ò)ûð0ús!   ƒA+ ‹$A+ °7A+ Á+BÁ6BÂBzskills-preloadT©r;  r¿   ré  ) r÷   rÂ   rû   rú   r  r  rs  Úagent.coding_contextrT  rb  rü   r  rl  ÚImportErrorr   rU  r€  r  Ú_explicit_toolsetsÚ_typed_toolsetsrì  rV  rW  rÊ   rÂ  Ú_preload_skills_requestedÚ hermes_cli.gateway_session_storer[  re  rf  rÀ  rþ  )rñ   rL  rn  ro  rp  rq  rr  rs  rt  ru  rv  rw  rx  ry  rö  Útoolsets_listr  ÚxrT  ry  rU  rW  r[  rd  rY  rV  rf  rc  s   &&&&&&&&&&&&&&&         @@@@rÄ   Ú_build_cli_from_argsro  ö  s  û€ à€MÜ�(œC× Ò §XØ,4¯N©N¸3Ô,?Ó@Ñ,? q˜Ÿ™žÑ,?ˆÐ@ˆÜ	�Hœt¤U˜m×	,Ò	,·àˆÛˆAØ× Ñ ÄjÐQRÔTW×FXÒFX°Q·W±W¸S´\Ó!B±\° !§'¡'¦)±\Ò!BÔ_bÐcdÓ_eÐ^fÖgò çð	!Ý=Ù,°eÄJÔOˆMô +¨6Ó2€MðÜØØ"ØØØØØØ!ØØØØ#Ø+Ø%ô
ˆ÷. Ø!&ˆÔç+3™-¸€CÔ÷
 VÜ# C¨¸×FÒF‘bÑLdÔeoÓLp€OßØ(*¨B° |ˆÔ$ßŸØ(s¨/Ð(sÔ<rÉÓ<rÐ(sˆÔ%ÝHÜ”g˜c =°$Ó7Ð9L×MÒMð ˆJ÷
	0ó 	0ô &/×%5Ò%5Ð=SÐZjÐswÔ%xˆÔ"Ø×"Ñ"×(Ñ(Ô*Ø€Jùò[ Aùò
 "Cøô ô 	!Ø ‹Mð	!ûô, ô å=á# A×&Ò&Ü�HŠH�QŒKØûðús5   ¸HÂ3H
Ã-H ÄH/ ÈH,È+H,È/I*È:+I%É%I*c                 óî   € ^ RI p \        \        4      ;_uu_ 4        ^ RIHp V! 4        RRR4       ^ RIHp \        \        R4      4       V P                  V! 4       4       R#   + '       g   i     LB; i)zlLegacy `cli.py --gateway` entry: arm the startup watchdog (before importing the gateway graph), then run it.N)Úarm_startup_watchdog)Ústart_gatewayzcli.gateway.starting)
r  r   rü   Úhermes_startup_watchdogrq  Úgateway.runrr  r¢  r¡  rC  )r  rq  rr  s      rÄ   Ú_run_legacy_gatewayru  J  sH   € ãÜ	”)×	Õ	Ý@ÙÔ÷ 
õ *Ü	Œ"Ð#Ó
$Ô%Ø‡K�K‘“Ö ÷ 
×	ús   œA$Á$A4	c                óœ  aaa	a
€ V '       g5   V'       g-   V'       g'   V'       g   \         P                  RR4      '       g   R# R R lp\        P                  ! VRRR7      P	                  4        \         P                  R	R4      o/ o	R
 VV	3R llp\        P                  ! VRRR7      o
S
P	                  4        R R loR VV	V
3R llpV# )zÔStart isolated-worktree creation (+ tool prewarm) in the background.

Returns a join callable that publishes ``_active_worktree``/TERMINAL_CWD and
schedules stale-worktree GC, or None when no worktree is wanted.
r›  FNc                ó   € V ^8„  d   QhRR/# rV  r&  )rÃ   s   "rÄ   rÅ   Ú+_start_worktree_setup.<locals>.__annotate___  s   € ÷ ?ñ ?˜Dñ ?rÆ   c                  ó†   €  ^ RI p V P                  RR7       R#   \         d    \        P	                  RRR7        R# i ; i)rÕ   NT)Ú
quiet_modeztool prewarm failedrk  )rJ  rH  rü   rt  r›  )Ú_mts    rÄ   Ú_prewarm_toolsÚ-_start_worktree_setup.<locals>._prewarm_tools_  s;   € ð	?Û%Ø×$Ñ$°Ð$Ö5øÜô 	?Ü�L‰LÐ.¸ˆL×>ð	?ús   ‚ š"A ¿A ztool-prewarmTrf  Úworktree_syncc                ó   € V ^8„  d   QhRR/# rV  r&  )rÃ   s   "rÄ   rÅ   rx  j  s   € ÷ &ñ &˜dñ &rÆ   c                  ó¤   <€  \        S \        4       R ,          R7      SR&   R#   \         d!    \        P	                  RRR7       RSR&    R# i ; i)zstate.db)Ú	sync_baseÚ	retain_dbr’  zworktree setup failedTrk  N)r�  r  rü   rt  r›  )Ú
_sync_baseÚ
_wt_results   €€rÄ   Ú_create_worktreeÚ/_start_worktree_setup.<locals>._create_worktreej  sM   ø€ ð	&ä!0¸:ÔQ`ÓQbÐeoÕQoÔ!pˆJ�vÓøÜô 	&Ü�L‰LÐ0¸4ˆLÔ@Ø!%ˆJ�vÔð	&ús   ƒ$ ¤'AÁAzworktree-setupc                ó(   € V ^8„  d   QhR\         RR/# )r½   Úreporå   NrÁ   )rÃ   s   "rÄ   rÅ   rx  u  s   € ÷ $ñ $¤Cð $¨Dñ $rÆ   c                 ó2   € \        V 4       \        V 4       R # rÉ   )r‹  rŠ  )rˆ  s   &rÄ   Ú_worktree_maintenanceÚ4_start_worktree_setup.<locals>._worktree_maintenanceu  s   € Ü˜tÔ$Ü˜dÖ#rÆ   c                ó\   € V ^8„  d   QhR\         \        \        \        3,          ,          /# r¨  )r   rø   rÂ   )rÃ   s   "rÄ   rÅ   rx  y  s    € ÷ ñ œH¤T¬#¬s¨(¥^Õ4ñ rÆ   c                  óF  <€ SP                  ^xR7       SP                  R4      p V '       g   V # V sV R,          \        P                  R&   \
        P                  ! \        V 4       \        4       pV'       d*   \        P                  ! SV3RRR7      P                  4        V # )éx   r—  r’  r:  ræ  zworktree-pruneT)r;  rÌ   r¿   ré  )rÈ  rÜ   rž  r#  Úenvironr�  r‘  r¦  r‰  re  rf  rþ  )r’  Ú_reporŠ  r„  Ú
_wt_threads     €€€rÄ   Ú_join_worktreeÚ-_start_worktree_setup.<locals>._join_worktreey  s‚   ø€ Ø�‰ ˆÔ$Ø�~‰~˜fÓ%ˆßØˆKàÐØ%)¨&¥\Œ�
‰
�>Ñ"Ü�ŠÔ)¨4Ô0ô Ó ˆßÜ×ÒÐ$9ÀÀÐO_ÐhlÔm×sÑsÔuØˆrÆ   )rb  rÜ   re  rf  rþ  )Ú
list_toolsÚlist_toolsetsr›  r}  r|  r…  r’  rƒ  rŠ  r„  r‘  s   &&&&   @@@@rÄ   Ú_start_worktree_setupr–  U  sŸ   û€ ÷ —]¯8·q¼J¿N¹NÈ:ÐW\×<]Ò<]Ùõ?ô ×Ò˜N°ÈÔM×SÑSÔUÜ—‘ °Ó6€JØ€J÷&ñ &ô ×!Ò!Ð)9Ð@PÐY]Ô^€JØ×ÑÔõ$÷ò ð" ÐrÆ   c          6      ó„  € V ^8„  d   QhR\         R,          R\         R,          R\        R\         R,          R\         R,          R\         \        \         ,          ,          \        \         R3,          ,          R,          R	\         R,          R
\         R,          R\         R,          R\         R,          R\         R,          R\        R,          R\
        R,          R\        \        ,          R\        R\        R\        R\        R\        R\         R,          R\        R\        R\        R\        R\         R\        R\        /# )r½   rS  NÚqrP  rT  rL  rö  .rñ   rn  ro  rp  rq  rr  rs  rt  rO  ru  r”  r•  Úgatewayrv  r›  r}  rw  rx  Úoutput_formatÚignore_user_configry  )rÂ   rd  r  r  rÝ   rÛ   r   )rÃ   s   "rÄ   rÅ   rÅ   �  s�  € ÷ tñ tÜ��:ðtä
ˆT…zðtô ðtô ��:ð	tô
 �D�jðtô ”$”s•)�Oœe¤C¨ H�oÕ-°Õ4ðtô ��:ðtô �D�jðtô �T�zðtô �4�Zðtô �D�jðtô �T�zðtô ˜•ðtô ”d�^ðtô ðtô  ð!tô" ð#tô$ ð%tô& ð'tô( �$�Jð)tô* ð+tô, ð-tô. ð/tô0 ð1tô2 ð3tô4 ð5tô6 ñ7trÆ   c                óº  € \        \        4      ;_uu_ 4        ^ RIHp V! 4        RRR4       R\        P
                  R&   V'       d   \        4        R# V'       gR   V'       gJ   ^ RIHp ^ RI	H
p V! R4       V! 4       pV'       d'   \        \        RVR	7      \        P                  R
7       \        VVVV4      pT ;'       g    Tp VR8X  d   V '       g   \!        R4      hRp\#        WdWxWšW¼WßVVVVV4      p Ve   V! 4       MRp!Ve   V!'       g   R# V'       g	   V'       dL   V P%                  4        V'       d   V P&                  MV P(                  ! 4        \        P*                  ! ^ 4       \,        P.                  ! \0        4       \3        V 4       V '       g	   V'       d   \5        V WWâVR8H  R7       R# V P7                  4        R#   + '       g   i     EL¬; i)a  
Hermes Agent CLI - Interactive AI Assistant

Args:
    query: Query to run. On a real TTY this seeds an interactive session
        (submitted literally as the first turn); with --oneshot/-Q or a
        non-TTY it answers and exits. Alias: -q
    q: Shorthand for --query
    oneshot: With -q: force the legacy answer-and-exit single-query mode
        even on a TTY.
    image: Optional local image path to attach to a single query
    toolsets: Comma-separated list of toolsets to enable (e.g., "web,terminal")
    skills: Comma-separated or repeated list of skills to preload for the session
    model: Model to use (default: anthropic/claude-opus-4-20250514)
    provider: Inference provider ("auto", "openrouter", "nous", "openai-codex", "zai", "kimi-coding", "minimax", "minimax-cn")
    reasoning: Reasoning effort for this run (none|minimal|low|medium|high|xhigh|max|ultra). Overrides agent.reasoning_effort.
    api_key: API key for authentication
    base_url: Base URL for the API
    max_turns: Maximum tool-calling iterations (default: 60)
    verbose: Enable verbose logging
    compact: Use compact display mode
    list_tools: List available tools and exit
    list_toolsets: List available toolsets and exit
    resume: Resume a previous session by its ID (e.g., 20260225_143052_a1b2c3)
    worktree: Run in an isolated git worktree (for parallel agents). Alias: -w
    w: Shorthand for --worktree

Examples:
    python cli.py                            # Start interactive mode
    python cli.py --toolsets web,terminal    # Use specific toolsets
    python cli.py --skills hermes-agent-dev,github-auth
    python cli.py -q "What is Python?"       # Single query mode
    python cli.py -q "Describe this" --image ~/storage/shared/Pictures/cat.png
    python cli.py --list-tools               # List tools and exit
    python cli.py --resume 20260225_143052_a1b2c3  # Resume session
    python cli.py -w                         # Start in isolated git worktree
    python cli.py -w -q "Fix issue #123"     # Single query in worktree
)Úconfigure_windows_stdioNr   ÚHERMES_INTERACTIVE)Úregister_self)Úshared_profile_warningrf  zcli.startup.warning)ru  r‰  zstream-jsonz(--format stream-json requires -q/--queryT)Ústream_json)r   rü   Úhermes_cli.stdior�  r#  r�  ru  Úhermes_cli.process_identityrŸ  Ú!hermes_cli.shared_profile_warningr   r¢  r¡  r€  r€  r–  r4  ro  Úshow_bannerÚ
show_toolsr&  r  r�  r‘  rz  rª   r±   rC  )"rS  r˜  rP  rT  rL  rö  rñ   rn  ro  rp  rq  rr  rs  rt  rO  ru  r”  r•  r™  rv  r›  r}  rw  rx  rš  r›  ry  r�  rŸ  r   ru  r’  rf  Úwt_infos"   &&&&&&&&&&&&&&&&&&&&&&&&&&&       rÄ   Úmainr¨  �  s_  € ôH 
”)×	Õ	Ý<ÙÔ!÷ 
ð (+„B‡J�JÐ#Ñ$çÜÔÙçŸ-Ý=ÝLá�eÔÙ(Ó*ˆßÜ”"Ð*°GÔ<Ä3Ç:Á:ÕNä*¨:°}ÀhÐPQÓR€NØ�JˆJ�Q€Eà˜Ô%ßÜÐGÓHÐHØˆÜ
˜u°ÀWÐXaØ&°¸ÀoÐWcÐekóm€Cð
 #1Ò"<‰nÔÀ$€GØÒ!¯'Ù÷ —]Ø�‰Ôß%ˆ�Š¨3×+<Ñ+<Ð	<Ô?Ü�Š�Œä
‡O‚O”LÔ!Ü)¨#Ô.ç—Ü˜s E°%ÈmÐ_lÑNlÕmÙØ‡G�G†I÷a 
×	Ð	ús   ˜G	Ç	G	Ú__main__c                óÜ  € V ^8„  d   Qh/ ^ \         9   d"   \        \        \        3,          R,          ;R&   ^\         9   d   \        \        ,          ;R&   ^\         9   d   \        \        R,          ,          ;R&   ^\         9   d   \        \        R,          ,          ;R&   ^\         9   d&   \
        \        \        \        3,          ,          ;R&   ^\         9   d   \        R,          ;R&   # )r½   Nrõ   rr  Ú,_single_query_finalize_attempted_session_idsÚ_handed_off_session_idsrž  rª  )Ú__conditional_annotations__rø   rÂ   r  r  r   rd  )rÃ   s   "rÄ   rÅ   rÅ      s¹   € × _Ñ _÷\ 3Ò 2”dœ3¤˜8•n tÕ+Ñ 2ñ] `÷x &Ò %”tœC•yÑ %ñy `÷@ FÒ E¬c´#¸µ*­oÑ EñA `÷P 1Ò 0œœS 4�Z�Ñ 0ñQ `÷B 2Ò 1”(œ4¤¤S �>Õ*Ñ 1ñC `÷h &Ò %”4˜$•;Ñ %òi `rÆ   rÉ   )
u   â ‹u   â ™u   â ¹u   â ¸u   â ¼u   â ´u   â ¦u   â §u   â ‡u   â �)éÈ   r>  )NNFNNNNNNNNNNNFFFFFNFFFFr  FF(d  r­  rA  r   ÚModuleNotFoundErrorr•  r¿   Úloggingr#  rú  Úshutilr€  Úrer�  rê  ÚtimeÚcollectionsr   Údataclassesr   Ú
contextlibr   r   Úpathlibr   r   Útypingr	   r
   r   r   Ú	getLoggerrÑ   rt  r�  Ú hermes_cli.cli_agent_setup_mixinr   Úhermes_cli.cli_commands_mixinr   Úhermes_cli.cli_billing_mixinr   Úhermes_cli.cli_loops_mixinr   Úhermes_cli.cli_info_mixinr   Úhermes_cli.cli_terminal_mixinr   Úhermes_cli.cli_modal_mixinr   Úhermes_cli.cli_stream_mixinr   Úhermes_cli.cli_session_mixinr   Ú!hermes_cli.cli_model_switch_mixinr   Úhermes_cli.cli_voice_mixinr   Úhermes_cli.cli_status_bar_mixinr   Úhermes_cli.cli_tui_mixinr   Ú$hermes_cli.cli_process_notificationsr   Úhermes_cli.cli_init_mixinr   Ú hermes_cli.cli_tui_runtime_mixinr   Úhermes_cli.cli_shutdownr   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   Úhermes_cli.cli_auto_maintenancer3   r4   Úhermes_cli.cli_renderr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   Úhermes_cli.cli_config_loadrv   rw   rx   ry   rz   r{   r|   r}   r~   r   r€   r�   Úhermes_cli.cli_terminal_inputr‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   Úhermes_cli.cli_single_queryr¦   r§   r¨   r©   rª   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   Úprompt_toolkit.patch_stdoutr´   rh  rµ   Úprompt_toolkit.enumsr¶   Úprompt_toolkitr¸   rÆ  Úprompt_toolkit.formatted_textr¹   rÇ  Úprompt_toolkit.cursor_shapesrº   ÚBLOCKÚ_STEADY_CURSORÚAttributeErrorrõ  r»   Ú
_pt_extrasÚinstall_shift_enter_aliasÚinstall_ctrl_enter_aliasÚinstall_cmd_backspace_aliasÚ!install_modify_other_keys_aliasesÚ#install_keypress_data_normalizationÚ"install_ignored_terminal_sequencesrü   re  rc  rÓ   râ   rõ   r  r  r  Ú_COMMAND_SPINNER_FRAMESr   r  Úhermes_cli.env_loaderr  Ú
agent.i18nr  r¡  rü  rý  r!  Ú_project_envrb  r1  Úimportlib.utilÚutilr5  r!  r2  ÚinsertrH  rM  rO  rP  rQ  rR  rT  rm  rn  rr  Ú_cli_wake_ownerr  r«  r¬  rq  rX  rY  r^  r`  rz  ro  r£  rˆ  r‰  rŠ  r‹  rŒ  r�  rŽ  r�  r�  rž  r¦  rª  r¬  rR  r‚  r�  r²  rÅ  r¸  r³  r´  r¶  rº  r×  rÙ  ÚcompileÚ_OSC_ESCAPE_RErà  rë  rþ  rå  rí  rð  rø  rù  rú  rý  r  r	  r  r)  r0  r2  r4  rD  rU  rW  Úhermes_cli.cli_chat_turn_mixinrj  Ú_PASTE_REF_RErl  ro  ru  r–  r¨  ÚfireÚFirerÅ   )r­  s   @rÄ   Ú<module>rí     s«  øðç _ðÛó
 Û 	Û ó Û 
Û 	Û Û Û Ý Ý !ß /Ý Ý ß ,Ó ,à	×	Ò	˜8Ó	$€à €‡
�
ˆ>Ñ õ @Ý :Ý 8Ý 4Ý 2Ý :Ý 4Ý 6Ý 8Ý AÝ 4Ý =Ý 0Ý MÝ 2Ý ?÷÷ ÷ ÷ ÷ ó ÷,÷B÷ B÷ B÷ B÷ B÷ B÷ B÷ B÷ B÷ B÷ B÷ B÷ B÷ B÷ B÷ Bõ B÷F÷ ÷ ó ÷%÷ %÷ %÷ %÷ %÷ %÷ %÷ %÷ %ó %÷L÷ ÷ ÷ ð"7Ý8ðÝ0õ =Ý :ðÝ8Ø ×&Ò&€Nð	Ý8à×(Ó(Ô*Ø×'Ó'Ô)Ø×*Ó*Ô,Ø×0Ó0Ô2Ø×2Ó2Ô4Ø×1Ó1Ô3Øó Û ÷òð  /3Ð Ó 2õ<òDñ& %Ð%<Ð>WÓXÐ à`Ñ ÷ -Ð ,ß 4Ð 4ß Ð âÓ �Ù‘H‹~×$Ò$ vÕ-�Ú ™|¹Õ Fñ Ó�
ñ &Ô 'ð%	Ü#ß3Ð3÷ò ñ> ×Ò×&Ò& qÒ*>Ó*@ÔAó2ñ ˜jÐ*<Ó=Ñ ñ $Ð$9Ð;UÐWoÓpÑ Ù'Ð(=Ð?[Ó\Ñ Ù"Ð#8Ð:QÓRÑ Ù(Ð)<Ð>[Ó\Ñ Ù"Ð#AÐCdÐf}Ó~Ñ à�ØÑ Ø#%Ñ Ó %Ø�ò ADÃÑ ,Ó Eò ,/«5Ñ Ó 0ØÑ ð  Ñ ö#ð Ñ öAð4%°D÷ %ð %ö@÷<
÷ 
÷ 
÷ 
÷ 
ð 
ð .2Ñ Ó 1÷*Mð *Mð` "&Ñ Ó %ö	ñ Ô ñ ˆi×ÕØ
‡y‚y×Ò×Ò˜cŸjšj×/Ò/×1Ò1ÚÔ÷ ð
 Ñ Ø!Ñ Ø"Ñ ØÑ ÙÕ8Ô9�÷>ð >ð ñ/ó ñ/÷)*ð )*ñX *4ØÐ!HÐJró*Ñ &ð —“Ð<Ó=�ö*ð �Ø�ö6ö,ö$ö@ñ ",Ð,BÐDdÓ!eÑ Ù *Ð+AÐCbÓ cÑ öñ #-Ð-BÐDeÓ"fÑ öö6öö,ñ  )Ð)<Ð>ZÐ\yÓzÑ ÷ò ÷"ò ö ð ÷ð ó ñ÷$ <Ð ;ð —
“
ÐJÓK�ôC
G�Ð0Ð2NÐPbÐdtð  wFð  HSð  Ufð  huð  wJð  L[ð  ]kð  mzð  |Lð  NZð  \iñ  k{õ C
GóLQóh!ó5÷ptð tðn ˆzÔÝá‡IƒI‰d†Oñ øð{7 ô Ø
‡x�xÐ%Ô%Øõ &ûðûð` ô 7ß6Ð6ð7ûð ô ØƒKðûð 	�^Ð$ô ØƒNðûð ô 	Úð	ûðn ô 	Úð	ú÷F ×Ðús…   ‹Y È#Y( È*Y< È=Z ÉA3Z Í>Z, Ò AZ:ÓZ:ÙY%ÙY Ù Y%Ù(Y9Ù8Y9Ù<	Z	ÚZ	ÚZÚZÚZ)Ú(Z)Ú,Z7Ú6Z7Ú:[	