
    PL
jb                     ^   d Z ddlZddlZddlZddlZddlmZ  ee          j	        j	        
                                ZddlmZmZ ddlmZmZ ddlmZmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlm Z  ddl!m"Z" de#de$fdZ%de$de$fdZ&de$fdZ'de(de$fdZ)de$fdZ*ddlm+Z, d Z-dS )zR
Status command for hermes CLI.

Shows the status of all Hermes Agent components.
    N)Path)	AuthErrorresolve_provider)Colorscolor)get_env_pathget_env_valueget_hermes_homeload_config)provider_label)get_nous_subscription_features)resolve_requested_provider)describe_vercel_auth)OPENROUTER_MODELS_URL)managed_nous_tools_enabledokreturnc                 n    | rt          dt          j                  S t          dt          j                  S )Nu   ✓u   ✗)r   r   GREENRED)r   s    5/home/kuhnn/.hermes/hermes-agent/hermes_cli/status.py
check_markr      s.    	 *UFL)))
###    keyc                 X    ddl m}  || t          dt          j                            S )u1  Redact an API key for display.

    Thin wrapper over :func:`agent.redact.mask_secret`. Preserves the
    "(not set)" placeholder in dim color to match ``hermes config``'s
    output (previously this variant was missing the DIM color —
    consolidated via PR that also introduced ``mask_secret``).
    r   )mask_secret	(not set))empty)agent.redactr   r   r   DIM)r   r   s     r   
redact_keyr!      s7     )(((((;s%VZ"@"@AAAAr   c                    | rt          | t                    sdS ddlm}m} |                                 }|sdS |                    d          r|dd         dz   }	 |                    |          }|j        |                    |j	                  }n# t          $ r | cY S w xY w|                                                    d	          S )
zFFormat ISO timestamps for status output, converting to local timezone.	(unknown)r   datetimetimezoneZNz+00:00)tzinfoz%Y-%m-%d %H:%M:%S %Z)
isinstancestrr%   r&   stripendswithfromisoformatr)   replaceutc	Exception
astimezonestrftime)valuer%   r&   textparseds        r   _format_iso_timestampr7   *   s     
5#.. {++++++++;;==D {}}S $CRCy8#''--= ^^8<^88F   ''(>???s   7B B$#B$configc                 4   |                      d          }t          |t                    r?|                     d          p|                     d          pd                                }n,t          |t                    r|                                }nd}|pdS )z5Return the configured default model from config.yaml.modeldefaultname r   )getr*   dictr,   r+   )r8   	model_cfgr:   s      r   _configured_model_labelrA   =   s    

7##I)T"" y))HY]]6-B-BHbOOQQ	Is	#	# !!Kr   c                      t                      } 	 t          |           }n# t          $ r | pd}Y nw xY w|dk    rt          d          rd}t	          |          S )zBReturn the provider label matching current CLI runtime resolution.auto
openrouterOPENAI_BASE_URLcustom)r   r   r   r	   r   )	requested	effectives     r   _effective_provider_labelrI   I   sx    *,,I($Y//		 ( ( ('			( L  ]3D%E%E 	)$$$s     11)	is_termuxc                 /   t          | dd          }t          | dd          }t                       t          t          dt          j                             t          t          dt          j                             t          t          dt          j                             t                       t          t          dt          j        t          j                             t          dt                      t          d	t          j        	                                d
                     t                      }t          dt          |                                           d|                                rdnd            	 t                      }n# t          $ r i }Y nw xY wt          dt          |                      t          dt!                                  t                       t          t          dt          j        t          j                             i ddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6}d7t"          fd8}|                                D ]_\  }}|dk    r ||          }	t'          |	          }
|st)          |	          n|	}t          d9|d:d9t          |
           d|            `d
d;lm}  |            }|st)          |          n|}t          d9dd:d9t          t'          |                     d|            t                       t          t          d<t          j        t          j                             	 d
d=lm}m}m}m}  |            } |            } |            } |            }n# t          $ r i }i }i }i }Y nw xY wt'          |                    d>                    }|                    d?          }|rd@ndA}t          d9dBd:d9t          |           d|            |                    dC          pdD}t9          |                    dE                    }t9          |                    dF                    }|                    dG          rdHndI}|s|dDk    s|rt          dJ|            |s|                    dE          rt          dK|            |s|                    dF          rt          dL|            |s|                    dG          rt          dM|            |r|st          dN|            t'          |                    d>                    }t          d9dOd:d9t          |           d|rd@ndP            |                    dQ          }|rt          dR|            t9          |                    dS                    } |                    dS          rt          dT|             |                    d?          r'|s%t          dN|                    d?                      t'          |                    d>                    }!t          d9dUd:d9t          |!           d|!rd@ndV            |                    dW          }"|"rt          dR|"            |                    dX          }#|#rVd
dYlm}$m}% t          dK|$                    tA          |#          dZz  |%j!        [          "                                            |                    d?          r'|!s%t          dN|                    d?                      t'          |                    d>                    }&t          d9d\d:d9t          |&           d|&rd@nd]            |                    d^          }'|&r|'rt          d_|'            |                    d`          }(|(rt          dK|(            |                    d?          r'|&s%t          dN|                    d?                      	 d
dalm#})  |)            pi }*n# t          $ r i }*Y nw xY wt'          |*                    d>                    }+t          d9dbd:d9t          |+           d|+rd@ndc            |*                    dQ          },|,rt          dR|,            |*                    dS          r2t          dTt9          |*                    dS                                |*                    d?          r'|+s%t          dN|*                    d?                      tI                      rtK          |          }-t                       t          t          ddt          j        t          j                             |-j&        st          de           nt          df           |-                                D ]}.|.j'        rdg}/n>|.j(        r|.j)        pdh}0di|0 }/n(|.j*        r
|-j&        rdj}/n|.j+        dkk    r
|-j&        rdl}/ndm}/t          d9|.j,        dndt          |.j-        p|.j(        p|.j'                   d|/            n|rt                       t          t          ddt          j        t          j                             t          do           t          dp           	 |                    dCdq          .                    dr          }|rt          ds|            n# t          $ r Y nw xY wt                       t          t          dtt          j        t          j                             dudvdwdxdydz}1|1                                D ]\\  }2}3dq}4|3D ]}5t_          |5          pdq}4|4r nt'          |4          }6|6rd{nd|}7t          d9|2d}dt          |6           d|7            ]t!                      d~k    rd
dl0m1}8 |                    d          }9te          |9tf                    r|9                    d          ndpt_          d          pd}:	  |8t_          d          pdq|:d          };|;dd|: }=}<nddti          |;           d|: }=}<n# tj          $ r d\  }<}=Y nw xY wt          d9d~d}dt          |<           d|=            t                       t          t          dt          j        t          j                             te          |                    d          tf                    r|                    di           ni }>tm          j7        ddq          }?|?s|>                    dd          }?t          d|?            |?dk    rTtm          j7        ddq          }@tm          j7        ddq          }At          d|@pd            t          d|Apd            n|?dk    r)tm          j7        dd          }Bt          d|B            n|?dk    r)tm          j7        dd          }Ct          d|C            nX|?dk    rQtm          j7        d          p|>                    d          pd}Dtm          j7        d          }E|E$t'          |>                    dd                    }Fn|E8                                dv }Fts                      }Gtt          j;        <                    d          du}H|Hrdnd}It          d|D            t          dt          |H           d|I            t          dt          |Gj=                   d|Gj,                    |Gj>        D ]}Jt          d|J            t          d|Frdnd            t          d           tm          j7        ddq          }Kt          dt          t'          |K                     d|Krdnd            t                       t          t          dt          j        t          j                             ddddddddddddddddǜ}L|L                                D ]\  }\  }M}Ntm          j7        |Mdq          }Ot'          |O          }Pdq}Q|Nrtm          j7        |Ndq          }Q|Qs|Ndk    rtm          j7        ddq          }Q|Prd{ndm}R|Qr	|Rd|Q d˝z  }Rt          d9|d:d9t          |P           d|R            	 d
dl?m@}S |SA                                D ]J}T|TB                                }6|6rd{ndm}U|Tj,        }7t          d9|7d:d9t          |6           d|U d͝           Kn# t          $ r Y nw xY wt                       t          t          dt          j        t          j                             	 d
dlCmD}VmE}W  |V            }X|XjF        }Yt          dt          |Y           d|Yrdndқ            t          d|XjG                    |XjH        r t          d |W|XjH                              |XjI        rt          dզ           nQt                      r&|XjH        st          d֦           t          dצ           n|XjK        r|XjL        st          dئ           n5# t          $ r' t                      r:t          dt          dt          jM                              t          dڦ           nt          jN        O                    dۦ          r:t          dt          dt          jM                              t          dܦ           nt          jN        dk    r:t          dt          dt          jM                              t          dަ           n9t          dt          dt          jM                              t          d           Y nw xY wt                       t          t          dt          j        t          j                             t                      dz  dz  }Z|Z                                rd
dlQ}[	 t          |Zd          5 }\|[S                    |\          }]|]                    dg           }^d |^D             }_t          dti          |_           dti          |^           d           ddd           n# 1 swxY w Y   n.# t          $ r t          d           Y nw xY wt          d           t                       t          t          dt          j        t          j                             t                      dz  dz  }`|`                                rd
dlQ}[	 t          |`d          5 }\|[S                    |\          }]t          dti          |]           d           ddd           n# 1 swxY w Y   n.# t          $ r t          d           Y nw xY wt          d           |rt                       t          t          dt          j        t          j                             tm          j7        ddq          }a|ar	 d
dlT}b|b                    t          dd|a id          }c|cjV        dk    }<t          dt          |<           d|<rdn
d|cjV         d˝            n9# t          $ r,}dt          dt          d           d|d            Y d}d~dnd}d~dww xY w	 d
dlW}e|eW                    |ejX        |ejY                  }f|fZ                    d           |f[                    d          }g|f\                                 |gd
k    }ht          d |hrdnd            n# t          $ r Y nw xY wt                       t          t          dt          jM                             t          t          dt          jM                             t          t          dt          jM                             t                       dS (  z+Show status of all Hermes Agent components.allFdeepu   ┌─────────────────────────────────────────────────────────┐u@   │                 ⚕ Hermes Agent Status                  │u   └─────────────────────────────────────────────────────────┘u   ◆ Environmentz  Project:      z  Python:       r   z  .env file:     existsz	not foundz  Model:        z  Provider:     u   ◆ API Keys
OpenRouterOPENROUTER_API_KEYOpenAIOPENAI_API_KEY	Anthropic)ANTHROPIC_API_KEYANTHROPIC_TOKENzGoogle / Gemini)GOOGLE_API_KEYGEMINI_API_KEYDeepSeekDEEPSEEK_API_KEYz
xAI / GrokXAI_API_KEYz
NVIDIA NIMNVIDIA_API_KEY
Z.AI / GLMGLM_API_KEYKimiKIMI_API_KEYStepFun Step PlanSTEPFUN_API_KEYMiniMaxMINIMAX_API_KEYz
MiniMax-CNMINIMAX_CN_API_KEY	FirecrawlFIRECRAWL_API_KEYTavilyTAVILY_API_KEYzBrowser UseBROWSER_USE_API_KEYBrowserbaseBROWSERBASE_API_KEYFALFAL_KEYELEVENLABS_API_KEYGITHUB_TOKEN)
ElevenLabsGitHubr   c                     t          | t                    r| D ]}t          |          pd}|r|c S dS t          |           pdS )zBReturn first non-empty env var value from a str or tuple of names.r=   )r*   tupler	   )env_ref	candidatevs      r   _resolve_envz!show_status.<locals>._resolve_env   sc    gu%% 	$  	!),,2 HHH2W%%++r   z  z<12)get_anthropic_keyu   ◆ Auth Providers)get_nous_auth_statusget_codex_auth_statusget_qwen_auth_statusget_minimax_oauth_auth_status	logged_inerrorz	logged inz6not logged in (run: hermes auth add nous --type oauth)zNous Portalportal_base_urlr#   access_expires_atagent_key_expires_athas_refresh_tokenyesnoz    Portal URL: z    Access exp: z    Key exp:    z    Refresh:    z    Error:      zOpenAI Codexz!not logged in (run: hermes model)
auth_storez    Auth file:  last_refreshz    Refreshed:  z
Qwen OAuthz)not logged in (run: qwen auth qwen-oauth)	auth_fileexpires_at_msr$   i  )tzzMiniMax OAuthz2not logged in (run: hermes auth add minimax-oauth)regionz    Region:     
expires_at)get_xai_oauth_auth_statusz	xAI OAuthz.not logged in (run: hermes auth add xai-oauth)u   ◆ Nous Tool Gatewayu!     Nous Portal   ✗ not logged inu+     Nous Portal   ✓ managed tools availablezactive via Nous subscriptionzconfigured providerzactive via z0included by subscription, not currently selectedmodalz%available via subscription (optional)znot configuredz<15zC  Your free-tier Nous account does not include Tool Gateway access.zQ  Upgrade your subscription to unlock managed web, image, TTS, and browser tools.r=   /z  Upgrade: u   ◆ API-Key Providers)r^   ZAI_API_KEYZ_AI_API_KEY)r`   )rb   )rd   )re   )r]   zKimi / Moonshotra   rc   zMiniMax (China)
configuredz"not configured (run: hermes model)z<16z	LM Studio)probe_lmstudio_modelsr:   base_urlNLM_BASE_URLzhttp://127.0.0.1:1234/v1
LM_API_KEYg      ?)api_keyr   timeoutzunreachable at Tzreachable (z model(s)) at )Fu    auth rejected — set LM_API_KEYu   ◆ Terminal BackendterminalTERMINAL_ENVbackendlocalz  Backend:      sshTERMINAL_SSH_HOSTTERMINAL_SSH_USERz  SSH Host:     r   z  SSH User:     dockerTERMINAL_DOCKER_IMAGEzpython:3.11-slimz  Docker Image: daytonaTERMINAL_DAYTONA_IMAGEz*nikolaik/python-nodejs:python3.11-nodejs20z  Daytona Image: vercel_sandboxTERMINAL_VERCEL_RUNTIMEvercel_runtimenode24TERMINAL_CONTAINER_PERSISTENTcontainer_persistent>   1onr   truevercel	installedz5missing (install: pip install 'hermes-agent[vercel]')z  Runtime:      z  SDK:          z  Auth:         z  Auth detail:  z  Persistence:  zsnapshot filesystemzephemeral filesystemzW  Processes:    live processes do not survive cleanup, snapshots, or sandbox recreationSUDO_PASSWORDz  Sudo:         enableddisabledu   ◆ Messaging Platforms)TELEGRAM_BOT_TOKENTELEGRAM_HOME_CHANNEL)DISCORD_BOT_TOKENDISCORD_HOME_CHANNEL)WHATSAPP_ENABLEDN)SIGNAL_HTTP_URLSIGNAL_HOME_CHANNEL)SLACK_BOT_TOKENN)EMAIL_ADDRESSEMAIL_HOME_ADDRESS)TWILIO_ACCOUNT_SIDSMS_HOME_CHANNEL)DINGTALK_CLIENT_IDN)FEISHU_APP_IDFEISHU_HOME_CHANNEL)WECOM_BOT_IDWECOM_HOME_CHANNEL)WECOM_CALLBACK_CORP_IDN)WEIXIN_ACCOUNT_IDWEIXIN_HOME_CHANNEL)BLUEBUBBLES_SERVER_URLBLUEBUBBLES_HOME_CHANNEL)	QQ_APP_IDQQ_HOME_CHANNEL)YUANBAO_APP_IDYUANBAO_HOME_CHANNEL)TelegramDiscordWhatsAppSignalSlackEmailSMSDingTalkFeishuWeComzWeCom CallbackWeixinBlueBubblesQQBotYuanbaoQQBOT_HOME_CHANNELr   z (home: ))platform_registryz	 (plugin)u   ◆ Gateway Service)get_gateway_runtime_snapshot_format_gateway_pidsz  Status:       runningstoppedz  Manager:      z  PID(s):       zF  Service:      installed but not managing the current running gatewayz  Start with:   hermes gatewayzI  Note:         Android may stop background jobs when Termux is suspendedz%  Service:      installed but stoppedunknownz'  Manager:      Termux / manual processlinuxz  Manager:      systemd/manualdarwinz  Manager:      launchdzN/Az0  Manager:      (not supported on this platform)u   ◆ Scheduled Jobscronz	jobs.jsonzutf-8)encodingjobsc                 >    g | ]}|                     d d          |S )r   T)r>   ).0js     r   
<listcomp>zshow_status.<locals>.<listcomp>  s+    JJJa155D3I3IJJJJr   z  Jobs:         z	 active, z totalz)  Jobs:         (error reading jobs file)z  Jobs:         0u   ◆ Sessionssessionszsessions.jsonz  Active:       z session(s)z-  Active:       (error reading sessions file)z  Active:       0u   ◆ Deep ChecksAuthorizationzBearer 
   )headersr      z  OpenRouter:   	reachablezerror (z error:    )z	127.0.0.1ieI  z  Port 18789:   zin use	availableu   ────────────────────────────────────────────────────────────z.  Run 'hermes doctor' for detailed diagnosticsz!  Run 'hermes setup' to configure)^getattrprintr   r   CYANBOLDPROJECT_ROOTsysversionsplitr   r   rO   r   r1   rA   rI   r+   itemsboolr!   hermes_cli.authry   rz   r{   r|   r}   r>   r7   r%   r&   fromtimestampintr0   	isoformatr   r   r   nous_auth_presentmanaged_by_nousactivecurrent_providerincluded_by_defaultr   labelr   rstripr	   hermes_cli.modelsr   r*   r?   lenr   osgetenvlowerr   	importlibutil	find_specr   detail_linesgateway.platform_registryr   plugin_entriescheck_fnhermes_cli.gatewayr   r   r   managergateway_pidshas_process_service_mismatch
_is_termuxservice_installedservice_runningr    platform
startswithr
   jsonopenloadhttpxr   status_codesocketAF_INETSOCK_STREAM
settimeout
connect_excloseOSError)iargsshow_allrM   env_pathr8   keysrx   r<   ru   r4   has_keydisplayry   anthropic_valueanthropic_displayrz   r{   r|   r}   nous_statuscodex_statusqwen_statusminimax_statusnous_logged_in
nous_error
nous_label
portal_url
access_expkey_exprefresh_labelcodex_logged_incodex_auth_filecodex_last_refreshqwen_logged_inqwen_auth_fileqwen_expr%   r&   minimax_logged_inminimax_regionminimax_expr   xai_oauth_statusxai_oauth_logged_inxai_auth_filefeaturesfeaturestatecurrentapikey_providerspnameenv_varskey_valevr   r  r   r@   basemodelsr   msgterminal_cfgterminal_envssh_hostssh_userdocker_imagedaytona_imageruntimepersistpersist_enabledauth_statussdk_ok	sdk_labellinesudo_password	platforms	token_varhome_vartoken	has_tokenhome_channelstatusr   entry
status_strr   r   snapshot
is_running	jobs_filer  fdatar   enabled_jobssessions_fileopenrouter_keyr   responseer"  sockresultport_in_usesi                                                                                                            r   show_statusrx  Z   s*   tUE**H4''D	GGG	%  D  FL  FQ  R  R  S  S  S	%RTZT_
`
`aaa	%  D  FL  FQ  R  R  S  S  S
 
GGG	%!6;
<
<===	
+\
+
+,,,	
5S[..003
5
5666~~H	
mZ(9(9::
m
mIZIZ=kXX`k
m
mnnn    

>4V<<
>
>???	
:688
:
:;;;
 
GGG	%V[
9
9:::.*.". 	=. 	?	.
 	&. 	m. 	&. 	m. 	. 	.. 	$. 	*. 	(. 	". 	,.  	,!." 	y#.$ + '. . .D,, , , , ,  	@ 	@g ;W%%u+++3>*U###>4>>>z'22>>W>>????111111''))O;CX
?333	
Y{
Y
Y
Y*T/-B-B"C"C
Y
YFW
Y
YZZZ
 
GGG	%$fk6;
?
?@@@	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 +*,,,,..**,,6688   	 +//+6677N))J .l4lJ		]? 	 	*^"<"< 	 		 	   !233B{J&{7J'K'KLLJ#KOO4J$K$KLLG(__-@AAKEEtM /{22j2---... /)<== /---... ,)?@@ ,***+++ 2)<== 2000111 /. /---...<++K8899O		U^A 	U 	U:o#>#> 	U 	U)R;;/R	U 	U   #&&|44O 4222333.|/?/?/O/OPP'' 75!355666   > ><!1!1'!:!:<<===+//+6677N		\\> 	\ 	\N!;!; 	\ 	\(Y;;.Y	\ 	\   !__[11N 3111222//H n////////l!7!7H8LQYQ]!7!^!^!h!h!j!jllmmmw = =;!9!9;;<<<^//<<==		h_D 	h 	hJ/@$A$A 	h 	h+e;;1e	h 	h   $''11N 3^ 3111222 $$\22K 0...///'"" @+< @>!3!3G!<!<>>???======4466<"    /33K@@AA		f[B 	f 	f
+> ? ? 	f 	f-c;;3c	f 	f   %((66M 2000111N++ `^!67G7K7KN7[7[!\!\^^___G$$ B-@ B@!1!5!5g!>!>@@AAA
 "##  1&99e+V[&+FFGGG) 	A56666?@@@~~'' 	A 	AG& 
)6 )!2K6K/g//, )1K )J''H,F'?(w}:g6G6t7>6t]d]t+u+ux}  A  A  A  A	A 
 e+V[&+FFGGGSTTTabbb	$):B??FFsKKJ 20J00111 	 	 	D	 
GGG	%'fk
B
BCCC K-103  ,1133 A Ax 	 	B#B''-2G ']]
 *T0T?5???z*55????@@@@
 !""k11;;;;;;JJw''	-7	4-H-HR	j)))d  RWderWsWs  R  xR	@**=3N3N3TRT_cmpqqqF~!94!9!9C Oc&kk O O O OC 	@ 	@ 	@?GB	@;;;;;Z^^;;c;;<<<
 
GGG	%&V[
A
ABBB1;FJJz<R<RTX1Y1Ya6::j"---_aL9^R00L <#''	7;;	
+\
+
+,,,u90"5590"55:!8[::;;;:!8[::;;;;		!	!y!8:LMM///0000		"	"	":<hii1-112222	)	)	))566h,:J:JK[:\:\h`h);<<?"<#3#34JD#Q#QRROO%mmoo1KKO*,,))(334?#)fKK/f	***+++AF!3!3AAiAABBBQKN!;!;QQk>OQQRRR, 	- 	-D+T++,,,,g/!e!6!6OegghhhghhhIor22M	
kZ](;(;<<
k
kM?iyy_i
k
klll
 
GGG	%)6;
D
DEEE D@.<*890:7:>M1= I$ (1'8'8 A A##y(	)R((KK	 	39Xr22L 	<,@ @ @9%6;;L!*@0@ 	100000F?4???z)44??v??@@@@??????&5577 	T 	TE))J)3I9IJKERuRRRJz$:$:RRZRRRSSSS		T
     
GGG	%%v{FK
@
@AAAFYYYYYYYY//11%
bJ!7!7bbz:`))W`bbccc3!133444  	TR%9%9(:O%P%PRRSSS0 	;Z[[[[\\ 	;("7 	;2333]^^^^' 	;0H 	;9::: F F F<< 	FCU9fj%A%ACCDDD;<<<<\$$W-- 	FCU9fj%A%ACCDDD23333\X%%CU9fj%A%ACCDDD+,,,,?U5&*%=%=??@@@DEEEF" 
GGG	%$fk6;
?
?@@@!!F*[8I #	?i'222 Xayy||xx++JJ4JJJV\):):VVSYYVVVWWW	X X X X X X X X X X X X X X X
  	? 	? 	?=>>>>>	? 	!"""
 
GGG	%V[
9
9:::#%%
2_DM 	#	Cmg666 A!yy||?T???@@@A A A A A A A A A A A A A A A  	C 	C 	CABBBBB	C 	!"""
  e%v{FK@@AAA #7<< 	I
I 99),.H.H.HI %  
 )S0tBtt:r++Qr[c[oQrQrQrttuuuu I I IGE):):GGAGGHHHHHHHHI	MMM==1CDDDOOA__%9::FJJLLL A+KO%MXX+OOPPPP 	 	 	D	 
GGG	%
FJ
'
'(((	%@&*
M
MNNN	%3VZ
@
@AAA	GGGGGsX  
F F('F(84N- -OO>a a a =l 
l)(l)>r r! r!C"A%AE E
AEEAEFC%AJ  J D/AN2N1AN2P"AR3 P3A(AR'RAR3 R'AR+R+AR3 R.AR+R/AR3 R3ASSASUAV- U6AV!VAV- V!AV%V%AV- V(AV%V)AV- V-AW	WAW	X6A AZ Z
A[Z!"A[[A[[BA] ]
A] ]A] ).__doc__r
  r   
subprocessimportlib.utilr  pathlibr   __file__parentresolver   r   r   r   hermes_cli.colorsr   r   hermes_cli.configr   r	   r
   r   r  r   hermes_cli.nous_subscriptionr   hermes_cli.runtime_providerr   hermes_cli.vercel_authr   hermes_constantsr   tools.tool_backend_helpersr   r   r+   r   r!   r7   r?   rA   rI   rJ   r  rx   r   r   <module>r     s    
			 



              tH~~$+3355 7 7 7 7 7 7 7 7 + + + + + + + + W W W W W W W W W W W W , , , , , , G G G G G G B B B B B B 7 7 7 7 7 7 2 2 2 2 2 2 A A A A A A$4 $C $ $ $ $
	BC 	BC 	B 	B 	B 	B@C @ @ @ @&	 D 	 S 	  	  	  	 %3 % % % % 5 4 4 4 4 4` ` ` ` `r   