
    i             	          d Z ddlZddlZddlZddlZddlZddlmZ ddl	m
Z
mZmZ ddlmZ  e
            Z e            Z e            ZddlmZ  e            Ze                                r'	  eed           n# e$ r  eed	           Y nw xY w eed
z  dd           ddl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Z!ddlm"Z# de$fdZ%de$de$fdZ&de$de$dz  fdZ'de(de)e$         fdZ*de$de(fdZ+de(fdZ,de)e$         d e)e-         de.e)e$         e)e-         f         fd!Z/d,d#e$d$e$fd%Z0d,d#e$d$e$fd&Z1d,d#e$d$e$fd'Z2d#e$fd(Z3d)e)e$         ddfd*Z4d+ Z5dS )-zK
Doctor command for hermes CLI.

Diagnoses issues with Hermes Agent setup.
    N)Path)get_project_rootget_hermes_homeget_env_path)display_hermes_home)load_dotenvutf-8encodingzlatin-1.envF)overrider   )Colorscolor)_HERMES_USER_AGENT)describe_vercel_auth)OPENROUTER_MODELS_URL)base_url_host_matches)OPENROUTER_API_KEYOPENAI_API_KEYANTHROPIC_API_KEYANTHROPIC_TOKENOPENAI_BASE_URLNOUS_API_KEYGLM_API_KEYZAI_API_KEYZ_AI_API_KEYKIMI_API_KEYKIMI_CN_API_KEYGMI_API_KEYMINIMAX_API_KEYMINIMAX_CN_API_KEYKILOCODE_API_KEYDEEPSEEK_API_KEYDASHSCOPE_API_KEYHF_TOKENAI_GATEWAY_API_KEYOPENCODE_ZEN_API_KEYOPENCODE_GO_API_KEYXIAOMI_API_KEYTOKENHUB_API_KEY)	is_termuxreturnc                  &    t                      rdndS )Nzpython -m pip installzuv pip install)
_is_termux     6/home/ubuntu/.hermes/hermes-agent/hermes_cli/doctor.py_python_install_cmdr2   E   s    &0llH""8HHr0   pkgc                 \    t                      rd|  S t          j        dk    rd|  S d|  S )Nzpkg install darwinzbrew install zsudo apt install )r.   sysplatform)r3   s    r1   _system_package_install_cmdr8   I   sE    || $#c###
|x$s$$$$s$$$r0   cmdc                 N    	 t          j        |           S # t          $ r Y dS w xY w)zCshutil.which wrapper resilient to platform monkeypatching in tests.N)shutilwhich	Exception)r9   s    r1   _safe_whichr>   Q   s9    |C      tts    
$$node_installedc                     g }d}| s|                     | d           |dz  }|                     | d           |                     |dz    d           |S )N   z) pkg install nodejsz) npm install -g agent-browserz) agent-browser install)append)r?   stepssteps      r1   _termux_browser_setup_stepsrE   Y   sw    ED 222333		LLD888999	LLD1H555666Lr0   contentc                 D     t           fdt          D                       S )zIReturn True when ~/.hermes/.env contains provider auth/base URL settings.c              3       K   | ]}|v V  	d S Nr/   ).0keyrF   s     r1   	<genexpr>z+_has_provider_env_config.<locals>.<genexpr>f   s'      ==#sg~======r0   )any_PROVIDER_ENV_HINTS)rF   s   `r1   _has_provider_env_configrO   d   s'    ====)<======r0   c                      	 ddl m}  |                                 }t          |j        o|j        p|j                  S # t          $ r Y dS w xY w)zRReturn True when Honcho is configured, even if this process has no active session.r   )HonchoClientConfigF)plugins.memory.honcho.clientrQ   from_global_configboolenabledapi_keybase_urlr=   )rQ   cfgs     r1    _honcho_is_configured_for_doctorrY   i   sj    CCCCCC 3355CKAS[%@CLBBB   uus   ;> 
AA	availableunavailablec                     t                      s| |fS t          |           }g }|D ]J}|                    d          dk    rd|vr|                    d           5|                    |           K||fS )z>Adjust runtime-gated tool availability for doctor diagnostics.namehoncho)rY   listgetrB   )rZ   r[   updated_availableupdated_unavailableitems        r1   )_apply_doctor_tool_availability_overridesrd   t   s    +-- &+%%Y ) )88Fx''000!((222""4((((111r0    textdetailc                     t          dt          dt          j                   d|  |rdt          |t          j                   ndz              d S )N     ✓ re   )printr   r   GREENDIMrf   rg   s     r1   check_okrp      sY    	
2uUFL))
2
2D
2
2Y_6g6U%
:S:S6U6U6Ueg
hiiiiir0   c                     t          dt          dt          j                   d|  |rdt          |t          j                   ndz              d S )Nri      ⚠rk   re   )rl   r   r   YELLOWrn   ro   s     r1   
check_warnrt      sY    	
3uUFM**
3
3T
3
3Z`7h7V5;T;T7V7V7Vfh
ijjjjjr0   c                     t          dt          dt          j                   d|  |rdt          |t          j                   ndz              d S )Nri      ✗rk   re   )rl   r   r   REDrn   ro   s     r1   
check_failrx      sY    	
0uUFJ''
0
0$
0
0W]4e4Sffj8Q8Q4S4S4Sce
fgggggr0   c                 `    t          dt          dt          j                   d|             d S )Nz    u   →rk   )rl   r   r   CYAN)rf   s    r1   
check_infor{      s3    	
3ufk**
3
3T
3
344444r0   issuesc                 0   	 ddl m}m}m} n,# t          $ r}t          dd| d           Y d}~dS d}~ww xY w |            sdS  |            }|                                sdS t                       t          t          dt          j
        t          j                              |            \  }}|du rt          d	d
           dS |du r6t          dd           t          d           |                     d           dS t          dd| d           dS )z@Warn when a systemd user gateway service will stop after logout.r   )get_systemd_linger_statusget_systemd_unit_pathis_linuxzGateway service lingerz#(could not import gateway helpers: )Nu   ◆ Gateway ServiceTzSystemd linger enabledz!(gateway service survives logout)FzSystemd linger disabledz(gateway may stop after logout)z&Run: sudo loginctl enable-linger $USERzMEnable linger for the gateway user service: sudo loginctl enable-linger $USERzCould not verify systemd linger()hermes_cli.gatewayr~   r   r   r=   rt   existsrl   r   r   rz   BOLDrp   r{   rB   )r|   r~   r   r   e	unit_pathlinger_enabledlinger_details           r1   _check_gateway_service_lingerr      s   	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	

    +-WST-W-W-WXXX 8:: %%''I 	GGG	%%v{FK
@
@AAA$=$=$?$?!NM)+NOOOOO	5	 	 ,.OPPP;<<<efffff46J-6J6J6JKKKKKs   
 
616c                 :v  Ӈԗ t          | dd          }t          j                            dd           g }g }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          j
        }|d
k    r(t          d|j         d|j         d|j                    n|dk    r7t          d|j         d|j         d|j                    t          d           nl|dk    r)t          d|j         d|j         d|j         d           n=t!          d|j         d|j         d|j         d           |                    d           t          j        t          j        k    }|rt          d           nt          dd           t	                       t	          t          dt          j        t          j                             g d}g d}|D ]n\  }	}
	 t)          |	           t          |
           %# t*          $ r= t!          |
d           |                    d|
 dt-                       d|	            Y kw xY w|D ]E\  }	}
	 t)          |	           t          |
d           &# t*          $ r t          |
d           Y Bw xY wt	                       t	          t          dt          j        t          j                             t.          d z  }|                                rzt          t2           d!           |                    d"#          }t7          |          rt          d$           nt          d%t2           d&           |                    d'           nt8          d z  }|                                rt          d(           nt!          t2           d)           |r]|j                            d*d*+           |                                 t          d,t2           d&           tA          d'           |d-z  }n$tA          d.           |                    d/           t.          d0z  }|                                rt          t2           d1           	 dd2l!}|"                    |                    d"#                    pi }|#                    d3          pi }|#                    d4          pd5$                                }|%                                }|#                    d6          p|#                    d3          pd5$                                }tM                      }	 dd7l'm(}m)} tM          |*                                          h d8z  }n# tV          $ r d2}Y nw xY w	 dd9l,m-} dd:l.m/}m0} n# tV          $ r	 d2}d2}d2}Y nw xY wg }|	  ||          }n# tV          $ r g }Y nw xY w|#                    d;          }tc          |td                    r|3                    d< |D                        |D ]}tc          |td                    sti          |#                    d=          pd5          $                                }
|
r>|5                    d>|
%                                6                    dd?          z              tM          |          }|r|hntM                      }|4|D ]1} 	 |5                     ||                      "# tV          $ r Y .w xY w|}!|r:|8|d@vr4	  ||          }!|5                    |!           n# tV          $ r |}!Y nw xY w|}"|r5|3|d@vr/ ||||          }#|#|#j7        nd2}"|"|5                    |"           |ri|dAk    rc|"|r_||z  sZ|r"dB8                    ts          |                    ndC}$t!          dD| dEdF|$ dG           |                    dD| dH|$ dI           |!p|"}%h dJ}&|r=dK|v r9|%r7|%|&vr3t          dL| dM| dNdO           |                    dL| dP| dQ           |!r|!dRvr	 ddSl'm(}m:}' |#                    |!          }(|(rt          |(dTd5          dUk    r |'|!          pi })tw          |)#                    dV          p)|)#                    dW          p|)#                    dU                    }*|*s5t!          dD|! dXdY           |                    dZ|! d[t2           d\           n# tV          $ r Y nw xY wn"# tV          $ r}+t          d]d^|+ dG           Y d2}+~+nd2}+~+ww xY wt8          d_z  },|,                                rt          d`           nt8          daz  }-|r}|-                                ri|j                            d*d*+           ty          j=        ti          |-          ti          |                     t          dbt2           dc           |d-z  }n@|r.t          dd           |                    det2           df           nt          dgdh           t.          d0z  }|                                r	 ddil,m>}.m?}/  |.            \  }0}1|0|1k     rt          dj|0 dk|1 dGdl           |ra	  |/ddm           t          dn           |d-z  }ng# tV          $ r1}2t          do|2            |                    dp           Y d2}2~2n1d2}2~2ww xY w|                    dq           nt          dr|0 dG           n# tV          $ r Y nw xY w	 dd2l!}3t          |          5 }4|3"                    |4          pi d2d2d2           n# 1 swxY w Y   fdsdtD             }5|5rt          dudB8                    |5           dv           |rԠ                    d3i           }|5D ]E}6|#                    |6          sԠA                    |6          ||6<   0ԠA                    |6           FddwlBmC}7  |7|Ԧ           t          dx           |d-z  }n|                    dy           n# tV          $ r Y nw xY w	 ddzl,mD}8  |8            }9|9rt	                       t	          t          d{t          j        t          j                             |9D ]{}:|:jE        d|k    rt!          |:jF                   nt          |:jF                   |:jG        H                                D ]};tA          |;           |                    |:jF                   |n# tV          $ r Y nw xY wt	                       t	          t          d}t          j        t          j                             	 dd~l'mI}<mJ}=mK}>mL}?  |<            }@|@#                    dW          rt          dd           nt          dd            |=            }A|A#                    dW          rt          dd           n:t          dd           |A#                    d|          rtA          |Ad|                     |>            }B|B#                    dW          r|B#                    d          pd5}C|B#                    d          pd5}Dg }E|Cr|E                    |C           |Dr|E                    d|D            |ErddB8                    |E           dGnd5}Ft          dd|F dG           nt          dd            |?            }G|G#                    dW          r+|G#                    dd          }Ht          dd|H dG           nt          dd           n+# tV          $ r}+t          dd|+ dG           Y d2}+~+nd2}+~+ww xY wt          d          rt          d           ntA          d           t	                       t	          t          dt          j        t          j                             t.          }I|I                                rt          t2           d           nO|r5|I                    d*d*+           t          dbt2           d           |d-z  }nt          t2           dd           g d}J|JD ]}K|I|Kz  }L|L                                rt          t2           dK|K d           6|r8|L                    d*d*+           t          dbt2           dK|K dK           |d-z  }pt          t2           dK|K dd           |Idz  }M|M                                rx|M                    d"#          $                                }d |H                                D             }N|Nrt          t2           d           ntA          t2           d           njt          t2           dd           |rP|Mj                            d*d*+           |MN                    dd"#           t          dbt2           d           |d-z  }|Idz  }O|O                                rt          t2           d           |Odz  }P|Odz  }Q|P                                rIt          |P                    d"#          $                                          }Rt          d|R d           ntA          d           |Q                                rIt          |Q                    d"#          $                                          }Rt          d|R d           n^tA          d           nNt          t2           dd           |r4|O                    d*d*+           t          dbt2           d           |d-z  }|Idz  }S|S                                r	 dd2lP}T|TQ                    ti          |S                    }U|UR                    d          }V|VS                                d         }W|UT                                 t          t2           d|W d           nG# tV          $ r#}+t          t2           d|+            Y d2}+~+nd2}+~+ww xY wtA          t2           d           |Idz  }X|X                                r	 |XU                                jV        }Y|Ydk    rt          d|Ydz   dd           |rdd2lP}T|TQ                    ti          |S                    }U|UR                    d           |UT                                 |X                                r|XU                                jV        nd}Zt          d|Ydz   d|Zdz   d           |d-z  }n2|                    d           n|Ydk    rtA          d|Ydz   d           n# tV          $ r Y nw xY wt          |           t          jX        dk    r=t	                       t	          t          dt          j        t          j                             d2}[dD ]*}\t8          |\z  dz  dz  }]|]                                r|]}[ n+t          j        #                    dd5          }^tw          t          j        #                    dȦ                    pd|^v }_|_r|^rt          |^          dz  }`d}ant          jZ                    dz  dz  }`d}a|`dz  }b|[0t          ddΦ           |                    dt8           dН           nt          d|[[                    t8                     dG           |b\                                r|b]                                }c|[]                                }d|c|dk    rt          |a dҝ           nt          |a dӝd|c d|d dG           |rE|b^                                 |b_                    |[           t          d|a d|[            |d-z  }n1|                    d|a dٝ           n|b                                rt          |a dڝ           nt!          |a d۝dܦ           |r|`                    d*d*+           |b_                    |[           t          d|a d|[            |d-z  }t          j        #                    dd5          `                    t          ja                  }eti          |`          |evr,t          |a dߝd           |                    d|a d           n|                    d|a d           t	                       t	          t          dt          j        t          j                             t          d          rt          d           nt          dd           t          d          rt          dd           n/t          dd           tA          dt          d                      t          jc        dd          }f|fdk    rt          d          ru	 t          je        ddgd*d          }gn# t          jf        $ r d2}gY nw xY w|g|gjg        dk    rt          dd           nt!          d           |                    d           ntt!          dd           |                    d           nNt          d          rt          dd           n.t                      rtA          d           nt          dd           |fdk    rt          jc        d          }h|hr	 t          je        ddddd |hdgd*d*d          }gn# t          jf        $ r d2}gY nw xY w|g|gjg        dk    rt          d|h            nUt!          d|h            |                    d|h            n(t!          dd           |                    d           |fd	k    rt          jc        d
          }i|irt          dd           n(t!          dd           |                    d           	 ddlimj}j t          dd           n8# t*          $ r+ t!          dd           |                    d           Y nw xY w|fdk    rpt          jc        dd          $                                pd}kddlkml}l |k|lv rt          dd^|k dG           nGdB8                    |l          }mt!          dd^|k d|m dG           |                    d|m            t          jc        dd          $                                }n|nd v rt          d!d"           n(t!          d#d$           |                    d%           t          jn        o                    d&          t          d'd           n(t!          d(d)           |                    d*           t                      }o|ojq        rt          d+d^|ojr         dG           n||ojr        s                    d,          r1t!          d-d^|ojr         dG           |                    d.           n0t!          d/d^|ojr         dG           |                    d0           |ojt        D ]}ptA          d1|p            t          jc        d2d3          %                                d4v }q|qrtA          d5           ntA          d6           t          d7          rt          d8           t8          d9z  d:z  }r|r                                rt          d;d<           nt                      rTtA          d=           tA          d>           tA          d?           t          d*@          D ]}stA          |s           nt          dAdB           ntt                      rTtA          dC           tA          dD           tA          d?           t          d@          D ]}stA          |s           nt          dEdF           t          dG          rt8          dHft8          dIz  dJz  dKfg}t|tD ]\  }u}v|ud9z                                  s	 t          je        g dLti          |u          d*d*dMN          }wdd2lv}x|wjw        $                                r|xx                    |wjw                  ni }y|y#                    dOi           #                    dPi           }z|z#                    dQd          }{|z#                    dRd          }||z#                    dSd          }}|{||z   |}z   }~|~dk    rt          |v dTdU           nh|{dk    s||dk    rCt          |v dTd^|{ dV|| dW|} dX|u dY	           |                    |v dZ|~ d[           nt          |v dTd^|} d\           # tV          $ r Y w xY wt	                       t	          t          d]t          j        t          j                             t          jc        d^          }|rt	          d_d5d*`           	 dd2ly}|#                    t          dadb| idc          }|j{        ddk    r0t	          det          dft          j|                   dg           n|j{        dhk    rct	          det          dit          j}                   djt          dkt          j~                   dl           |                    dm           n.|j{        dnk    r`t	          det          dit          j}                   djt          dot          j~                              |                    dp           n|j{        dqk    rbt	          det          dit          j}                   djt          drt          j~                   dl           |                    ds           nTt	          det          dit          j}                   djt          dt|j{         dGt          j~                   dl           n# tV          $ rn}+t	          det          dit          j}                   djt          d^|+ dGt          j~                   dl           |                    du           Y d2}+~+nd2}+~+ww xY wt          dvdw           ddxl'm}  |            }|r_t	          dyd5d*`           	 dd2ly}ddzlm}m}m}m d{d|i} ||          }|r(db| |da<   d}8                    ||z             |d~<   n||d<   |#                    d|dc          }|r|j{        dk    rd|j        %                                v rnd|j        %                                v rRd}8                    fd|D             t          |          z             |d~<   |#                    d|dc          }|j{        ddk    r/t	          det          dft          j|                   d           n|j{        dhk    rLt	          det          dit          j}                   dt          dkt          j~                   d           nMd}t	          det          dt          j                   dt          |t          j~                   d           ne# tV          $ rX}+t	          det          dt          j                   dt          d^|+ dGt          j~                   d           Y d2}+~+nd2}+~+ww xY wg d}|D ]K\  }}}}}d5}|D ]}t          jc        |d5          }|r n|r|                    d          }|sLt	          dt          dft          j|                   d| dt          dt          j~                              t	          d| dd5d*`           	 dd2ly}|rt          jc        |d5          nd5}|s|s                    d          rd}|r;|                    dK                              d          rddlm}  ||          }t          |d          rB|                    dK                              d          r|                    dK          dz   }|r|                    dK          dz   n|}db| t          d}t          |d          rd|d<   |#                    ||dc          }|j{        ddk    r2t	          det          dft          j|                   d| d           n|j{        dhk    rot	          det          dit          j}                   d| dt          dkt          j~                   d           |                    d|d          d           nVt	          det          dt          j                   d| dt          dt|j{         dGt          j~                   d           # tV          $ r[}t	          det          dt          j                   d| dt          d^| dGt          j~                   d           Y d2}~Cd2}~ww xY wM	 ddlm}m}m}  |            r |            } |            }d                    d          }t	          dd5d*`           	 dd2l}|                    d|          }|                                }t          |#                    dg                     }t	          det          dft          j|                   d| dt          d^| dB| dB| dt          j~                   d           n&# t*          $ r t	          det          dt          j                   d| dt          dt          j         dt          j~                   d           |                    dt          j         d           Y ntV          $ r}t/          |          j        }t	          det          dt          j                   d| dt          d^| d| dGt          j~                   d           |                    d| d           Y d2}~nd2}~ww xY wn# t*          $ r Y nw xY wt	                       t	          t          dt          j        t          j                             t8          dz  }|                                r|dz                                  r|d
k    ru	 t)          d           t          dd           n# t*          $ rD t-                       d}t          dd| dG           |                    d|            Y n:w xY wt          dd|j         d|j         dG           nt          dd           t	                       t	          t          dt          j        t          j                             	 t          j                            dti          t8                               ddlm}m}  |            \  }}t=          ||          \  }}|D ];}|#                    |i           }t          |#                    d=|                     <|D ]z}|#                    d          p|#                    d          pg }|r1dB8                    |          }t          |d=         d| dG           ct          |d=         d           {d |D             }|r|                    d           n,# tV          $ r}+t          dd^|+ dG           Y d2}+~+nd2}+~+ww xY wt	                       t	          t          dt          j        t          j                             t.          dz  dz  }|                                rt          dŦ           |dz  }|                                r	 dd2lv}|x                    |                                          }t          |#                    di                     }Wt          d|W dɝ           n"# tV          $ r t          dʐd˦           Y nw xY w|dz  }|                                r-t?          d̈́ |                                D                       nd}|dk    rt          | dΝdϦ           nt          dАdѦ           ddl,m}  |dӦ          p |dԦ          }|rt          dզ           nt          d֐dt2           d؝           t	                       t	          t          dt          j        t          j                             d5}	 dd2l!}t.          d0z  }|                                rjt          |          5 }|"                    |          pi }d2d2d2           n# 1 swxY w Y   |#                    dڦ          pi #                    d4d5          }n# tV          $ r Y nw xY w|st          dېdܦ           nl|dk    r	 ddlm}m} |                                } |            }|                                st          dߐd           n|j        stA          d| d           n|j        s0|j        s)t!          dd           |                    d           nddlm}m}  |             	  ||           t          dd|j         d|j         d|j                    nN# tV          $ rA}t!          dti          |                     |                    d|            Y d2}~nd2}~ww xY wn%# t*          $ r, t!          dd           |                    d           Y ntV          $ r)}t          dti          |                     Y d2}~nd2}~ww xY w|dk    r	 ddlm}  |            }| #                    dUd5          }|rTt          d           tA          d| #                    dd           d| #                    dd                      n(t!          dd           |                    d           n# t*          $ r+ t!          dd           |                    d           Y ntV          $ r(}t          dti          |                     Y d2}~nd2}~ww xY w	 ddlm}  ||          }|r(|Š                                rt          | d            n-|rt          | dd           nt          | dd           n8# tV          $ r+}t          | dti          |                     Y d2}~nd2}~ww xY w	 ddlm}m}m} dd2l}ɐd  |Ʀ            D             }|ʐrYt	                       t	          t          dt          j        t          j                             t          t          |ʦ           d            |Ǧ            }|D ]}g }|j        r|͠                    d	           |j        r#|͠                    |j        d2dM                    |j        d0z                                  s|͠                    d
           |j        d z                                  s|͠                    d           ||j        z  }|Π                                s|͠                    d           |rdB8                    |ͦ          ndV})t          d|j         d|)            |ˠ                                r|ˠ                                D ]}|Π                                s	 |Π                                }d|v rh|ɠ                    d|          }|rO ||Ϡ                    d-                    s1t          d|j         d|Ϡ                    d-           d           # tV          $ r Y w xY wn# t*          $ r Y ntV          $ r Y nw xY wt	                       ||z   }|r|dk    rt	          t          dt          j|                             t	          t          d| dt          j|        t          j                  d5           |rEt	          t          dt          |Ц           dt          j        t          j                             nt	                       t	                       |r<t          |d-          D ]\  }}t	          d|ћ d|қ            t	                       n?|rt	          t          dt          j                             t	          t          dt          |Ц           dt          j        t          j                             t	                       t          |d-          D ]\  }}t	          d|ћ d|қ            t	                       |s(t	          t          dt          j~                             n[t	          t          dt          j|                             t	          t          dt          j|        t          j                             t	                       d2S (  zRun diagnostic checks.fixFHERMES_INTERACTIVE1r   u   ┌─────────────────────────────────────────────────────────┐uA   │                 🩺 Hermes Doctor                        │u   └─────────────────────────────────────────────────────────┘u   ◆ Python Environment)      zPython .)r   
   zHPython 3.11+ recommended for RL Training tools (tinker requires >= 3.11))r      z(3.10+ recommended)z(3.10+ required)zUpgrade Python to 3.10+zVirtual environment activezNot in virtual environmentz(recommended)u   ◆ Required Packages))openaiz
OpenAI SDK)richzRich (terminal UI))dotenvzpython-dotenv)yamlPyYAML)httpxHTTPX))croniterzCroniter (cron expressions))telegramzpython-telegram-bot)discordz
discord.pyz	(missing)zInstall z: rk   z
(optional)z(optional, not installed)u   ◆ Configuration Filesr   z/.env file existsr	   r
   z%API key or custom endpoint configuredzNo API key found in z/.envz(Run 'hermes setup' to configure API keysz'.env file exists (in project directory)z/.env file missingT)parentsexist_okzCreated empty rA   z Run 'hermes setup' to create onez!Run 'hermes setup' to create .envzconfig.yamlz/config.yaml existsNmodelproviderre   default)PROVIDER_REGISTRYresolve_provider>   autocustom
openrouter)get_compatible_custom_providers)normalize_providerresolve_provider_full	providersc              3      K   | ]X}t          |                                          #t          |                                                                          V  Yd S rI   )strstriplower)rJ   r]   s     r1   rL   zrun_doctor.<locals>.<genexpr>Q  sY      &q&qT_bcg_h_h_n_n_p_p&qs4yy'8'8'>'>'@'@&q&q&q&q&q&qr0   r]   zcustom:-)r   r   r   z, z(unavailable)zmodel.provider 'z' is not a recognised providerz(known: r   z' is unknown. Valid providers: z>. Fix: run 'hermes config set model.provider <valid_provider>'>	   
ai-gatewayopencode-zenr   nousr   kilocodelmstudior   huggingface/zmodel.default 'z,' uses a vendor/model slug but provider is ''z=(vendor-prefixed slugs belong to aggregators like openrouter)z,' is vendor-prefixed but model.provider is 'zH'. Either set model.provider to 'openrouter', or drop the vendor prefix.)r   r   r   )r   get_auth_status	auth_typerV   
configured	logged_inz%' is set but no API key is configuredz,(check ~/.hermes/.env or run 'hermes setup')z#No credentials found for provider 'z7'. Run 'hermes setup' or set the provider's API key in zI/.env, or switch providers with 'hermes config set model.provider <name>'z(Could not validate model/provider configr   zcli-config.yamlz-cli-config.yaml exists (in project directory)zcli-config.yaml.examplezCreated z)/config.yaml from cli-config.yaml.examplez1config.yaml not found and no example to copy fromzCreate z/config.yaml manuallyzconfig.yaml not foundz(using defaults))check_config_versionmigrate_configzConfig version outdated (vu    → vz(new settings available))interactivequietz!Config migrated to latest versionzAuto-migration failed: z$Run 'hermes setup' to migrate configz=Run 'hermes doctor --fix' or 'hermes setup' to migrate configzConfig version up to date (vc                 R    g | ]#}|v t          |         t                    !|$S r/   )
isinstancer   )rJ   k
raw_configs     r1   
<listcomp>zrun_doctor.<locals>.<listcomp>  s5    yyyQa:ooZdeopqertwZxZxoqooor0   )r   rW   zStale root-level config keys: z"(should be under 'model:' section))atomic_yaml_writez1Migrated stale root-level keys into model sectionuO   Stale root-level provider/base_url in config.yaml — run 'hermes doctor --fix')validate_config_structureu   ◆ Config Structureerroru   ◆ Auth Providers)get_nous_auth_statusget_codex_auth_statusget_gemini_oauth_auth_statusget_minimax_oauth_auth_statuszNous Portal authz(logged in)z(not logged in)zOpenAI Codex authemail
project_idzproject=z (zGoogle Gemini OAuthz
(logged inregionglobalzMiniMax OAuthz(logged in, region=zAuth provider statusz(could not check: codexz	codex CLIuf   codex CLI not installed (optional — only required to import tokens from an existing Codex CLI login)u   ◆ Directory Structurez directory existsz
 directoryz
 not foundz(will be created on first use))cronsessionslogsskillsmemoriesz/ existsz/ not foundzSOUL.mdc                     g | ]?}|                                 |                                                     d           =|@S ))z<!--z-->#)r   
startswith)rJ   ls     r1   r   zrun_doctor.<locals>.<listcomp>  sA    qqqqAGGIIqaggiiFZFZ[oFpFpqqqqr0   z$/SOUL.md exists (persona configured)uA   /SOUL.md exists but is empty — edit it to customize personalityz/SOUL.md not foundz/(create it to give Hermes a custom personality)z# Hermes Agent Persona

<!-- Edit this file to customize how Hermes communicates. -->

You are Hermes, a helpful AI assistant.
z/SOUL.md with basic templater   z/memories/ directory existsz	MEMORY.mdzUSER.mdzMEMORY.md exists (z chars)zPMEMORY.md not created yet (will be created when the agent first writes a memory)zUSER.md exists (zNUSER.md not created yet (will be created when the agent first writes a memory)z/memories/ not foundz
/memories/zstate.dbzSELECT COUNT(*) FROM sessionsz/state.db exists (z
 sessions)z!/state.db exists but has issues: z</state.db not created yet (will be created on first session)zstate.db-wali   zWAL file is large (i   z MB)z!(may indicate missed checkpoints)zPRAGMA wal_checkpoint(PASSIVE)zWAL checkpoint performed (i   u   K → zK)u:   Large WAL file — run 'hermes doctor --fix' to checkpointi   zWAL file is z  MB (normal for active sessions)win32u   ◆ Command Installation)venvz.venvbinhermesPREFIXTERMUX_VERSIONzcom.termux/files/usrz$PREFIX/binz.localz~/.local/binzVenv entry point not founduR   (hermes not in venv/bin/ or .venv/bin/ — reinstall with pip install -e '.[all]')zReinstall entry point: cd z7 && source venv/bin/activate && pip install -e '.[all]'zVenv entry point exists (u   /hermes → correct targetz/hermes points to wrong targetu   (→ u   , expected → zFixed symlink: u   /hermes → zBroken symlink at u%   /hermes — run 'hermes doctor --fix'z/hermes exists (non-symlink)z/hermes not foundz.(hermes command may not work outside the venv)zCreated symlink: PATHz is not on your PATHzC(add it to your shell config: export PATH="$HOME/.local/bin:$PATH")zAdd z to your PATHzMissing u-   /hermes symlink — run 'hermes doctor --fix'u   ◆ External Toolsgitzgit not foundrgzripgrep (rg)z(faster file search)zripgrep (rg) not foundz (file search uses grep fallback)zInstall for faster search: ripgrepTERMINAL_ENVlocaldockerinfor   )capture_outputtimeoutz(daemon running)zdocker daemon not runningzStart Docker daemonzdocker not foundz"(required for TERMINAL_ENV=docker)z%Install Docker or change TERMINAL_ENVzCDocker backend is not available inside Termux (expected on Android)sshTERMINAL_SSH_HOSTz-ozConnectTimeout=5zBatchMode=yeszecho ok   )r   rf   r   zSSH connection to zCheck SSH configuration for zTERMINAL_SSH_HOST not setz(required for TERMINAL_ENV=ssh)zSet TERMINAL_SSH_HOST in .envdaytonaDAYTONA_API_KEYzDaytona API keyz(configured)zDAYTONA_API_KEY not setz#(required for TERMINAL_ENV=daytona)z(Set DAYTONA_API_KEY environment variable)Daytonazdaytona SDKz(installed)zdaytona SDK not installedz(pip install daytona)z(Install daytona SDK: pip install daytonavercel_sandboxTERMINAL_VERCEL_RUNTIMEnode24)_SUPPORTED_VERCEL_RUNTIMESzVercel runtimezVercel runtime unsupportedz; use z'Set TERMINAL_VERCEL_RUNTIME to one of: TERMINAL_CONTAINER_DISK51200)re   0r   zVercel disk settingz(uses platform default)zVercel custom disk unsupportedz((reset terminal.container_disk to 51200)zSVercel Sandbox does not support custom container_disk; use the shared default 51200vercelz
vercel SDKzvercel SDK not installedz$(pip install 'hermes-agent[vercel]')zJInstall the Vercel optional dependency: pip install 'hermes-agent[vercel]'zVercel authpartialzVercel auth incompletez@Set VERCEL_TOKEN, VERCEL_PROJECT_ID, and VERCEL_TEAM_ID togetherzVercel auth not configuredzVConfigure Vercel Sandbox auth with VERCEL_TOKEN, VERCEL_PROJECT_ID, and VERCEL_TEAM_IDzVercel auth TERMINAL_CONTAINER_PERSISTENTtrue)r   r   yesonz^Vercel persistence: snapshot filesystem only; live processes do not survive sandbox recreationz(Vercel persistence: ephemeral filesystemnodezNode.jsnode_moduleszagent-browserzagent-browser (Node.js)z(browser automation)zCagent-browser is not installed (expected in the tested Termux path)zUInstall it manually later with: npm install -g agent-browser && agent-browser installzTermux browser setup:)r?   zagent-browser not installedz(run: npm install)zHNode.js not found (browser tools are optional in the tested Termux path)z2Install Node.js on Termux with: pkg install nodejszNode.js not foundz$(optional, needed for browser tools)npmzBrowser tools (agent-browser)scriptszwhatsapp-bridgezWhatsApp bridge)r   auditz--json   )cwdr   rf   r   metadatavulnerabilitiescriticalhighmoderatez depsz(no known vulnerabilities)z critical, z high, u    moderate — run: cd z && npm audit fix)z has z npm vulnerability(ies)z moderate vulnerability(ies))u   ◆ API Connectivityr   z  Checking OpenRouter API...)endflushAuthorizationzBearer )headersr      z  rj   z) OpenRouter API                          i  rv   z OpenRouter API z(invalid API key)z                z Check OPENROUTER_API_KEY in .envi  u%   (out of credits — payment required)zOpenRouter account has insufficient credits. Fix: run 'hermes config set model.provider <provider>' to switch providers, or fund your OpenRouter account at https://openrouter.ai/settings/creditsi  z(rate limited)uS   OpenRouter rate limit hit — consider switching to a different provider or waitingz(HTTP zCheck network connectivityzOpenRouter APIz(not configured))get_anthropic_keyz  Checking Anthropic API...)_is_oauth_token_COMMON_BETAS_OAUTH_ONLY_BETAS_CONTEXT_1M_BETAzanthropic-versionz
2023-06-01,zanthropic-betaz	x-api-keyz#https://api.anthropic.com/v1/modelsi  zlong context betaznot yet availablec                      g | ]
}|k    |S r/   r/   )rJ   br  s     r1   r   zrun_doctor.<locals>.<listcomp>,  s$    GGG16F1F1FQ1F1F1Fr0   z) Anthropic API                           z Anthropic API z                 z(couldn't verify)rr   ))z
Z.AI / GLM)r   r   r   z#https://api.z.ai/api/paas/v4/modelsGLM_BASE_URLT)zKimi / Moonshot)r   z!https://api.moonshot.ai/v1/modelsKIMI_BASE_URLT)zStepFun Step Plan)STEPFUN_API_KEYz*https://api.stepfun.ai/step_plan/v1/modelsSTEPFUN_BASE_URLT)zKimi / Moonshot (China))r   z!https://api.moonshot.cn/v1/modelsNT)zArcee AI)ARCEEAI_API_KEYz"https://api.arcee.ai/api/v1/modelsARCEE_BASE_URLT)z	GMI Cloud)r   z%https://api.gmi-serving.com/v1/modelsGMI_BASE_URLT)DeepSeek)r#   z"https://api.deepseek.com/v1/modelsDEEPSEEK_BASE_URLT)zHugging Face)r%   z'https://router.huggingface.co/v1/modelsHF_BASE_URLT)z
NVIDIA NIM)NVIDIA_API_KEYz*https://integrate.api.nvidia.com/v1/modelsNVIDIA_BASE_URLT)zAlibaba/DashScope)r$   z=https://dashscope-intl.aliyuncs.com/compatible-mode/v1/modelsDASHSCOPE_BASE_URLT)MiniMax)r    z https://api.minimax.io/v1/modelsMINIMAX_BASE_URLT)zMiniMax (China))r!   z"https://api.minimaxi.com/v1/modelsMINIMAX_CN_BASE_URLT)zVercel AI Gateway)r&   z&https://ai-gateway.vercel.sh/v1/modelsAI_GATEWAY_BASE_URLT)z	Kilo Code)r"   z&https://api.kilo.ai/api/gateway/modelsKILOCODE_BASE_URLT)zOpenCode Zen)r'   z!https://opencode.ai/zen/v1/modelsOPENCODE_ZEN_BASE_URLT)zOpenCode Go)r(   NOPENCODE_GO_BASE_URLF   ri   z(key configured)z  Checking z API...zsk-kimi-zhttps://api.kimi.com/coding/v1z
/anthropic)_to_openai_base_urlzapi.kimi.comz/codingz/v1z/models)r  
User-Agentzclaude-code/0.1.0r-  z                          z           zCheck z in .env)has_aws_credentialsresolve_aws_auth_env_varresolve_bedrock_regionzAWS Bedrockz  Checking AWS Bedrock...bedrock)region_namemodelSummariesz models)u   (boto3 not installed — z -m pip install boto3)zInstall boto3 for Bedrock: z -m pip install boto3zAWS Bedrock: u;    — check IAM permissions for bedrock:ListFoundationModelsu   ◆ Submodulesztinker-atroposzpyproject.tomltinker_atroposz(RL training backend)z -e ./tinker-atroposz&tinker-atropos found but not installedz(run: zInstall tinker-atropos: z$tinker-atropos requires Python 3.11+z
(current: ztinker-atropos not foundz.(run: git submodule update --init --recursive)u   ◆ Tool Availability)check_tool_availabilityTOOLSET_REQUIREMENTSmissing_varsenv_varsz	(missing z(system dependency not met)c                 f    g | ].}|                     d           s|                     d          ,|/S )r7  r8  )r`   )rJ   us     r1   r   zrun_doctor.<locals>.<listcomp>  s;    ___a1553H3H_AEER\L]L]____r0   zERun 'hermes setup' to configure missing API keys for full tool accessz!Could not check tool availabilityu   ◆ Skills Hubr   z.hubzSkills Hub directory existsz	lock.json	installedzLock file OK (z hub-installed skill(s))z	Lock filez(corrupted or unreadable)
quarantinec              3   B   K   | ]}|                                 d V  dS )rA   N)is_dir)rJ   ds     r1   rL   zrun_doctor.<locals>.<genexpr>  s/      DDADaDDDDDDr0   z skill(s) in quarantinez(pending review)z$Skills Hub directory not initializedz(run: hermes skills list))get_env_valueGITHUB_TOKENGH_TOKENz2GitHub token configured (authenticated API access)zNo GITHUB_TOKENu!   (60 req/hr rate limit — set in z/.env for better rates)u   ◆ Memory ProvidermemoryzBuilt-in memory activeu2   (no external provider configured — this is fine)r^   )rQ   resolve_config_pathzHoncho config not foundzrun: hermes memory setupz&Honcho disabled (set enabled: true in z to activate)z"Honcho API key or base URL not setu/   No Honcho API key — run 'hermes memory setup')get_honcho_clientreset_honcho_clientzHoncho connectedz
workspace=z mode=z freq=zHoncho connection failedzHoncho unreachable: zhoncho-ai not installedzpip install honcho-aiz?Honcho is set as memory provider but honcho-ai is not installedzHoncho check failedmem0)_load_configzMem0 API key configuredzuser_id=user_id?z  agent_id=agent_idzMem0 API key not setz5(set MEM0_API_KEY in .env or run hermes memory setup)z5Mem0 is set as memory provider but API key is missingzMem0 plugin not loadablezpip install mem0aiz:Mem0 is set as memory provider but mem0ai is not installedzMem0 check failed)load_memory_providerz provider activez configured but not availablezrun: hermes memory statusz plugin not foundz check failed)list_profiles_get_wrapper_dirprofile_existsc                      g | ]}|j         	|S r/   )
is_default)rJ   ps     r1   r   zrun_doctor.<locals>.<listcomp>L  s    IIIALI!IIIr0   u   ◆ Profilesz profile(s) foundzgateway runningu   ⚠ missing configzno .envzno aliasz	hermes -pzhermes -p (\S+)zOrphan alias: u    → profile 'z' no longer existsu   ────────────────────────────────────────────────────────────z  Fixed z
 issue(s).)r
  z& issue(s) require manual intervention.z. z  Found z issue(s) to address:z=  Tip: run 'hermes doctor --fix' to auto-fix what's possible.u     All checks passed! 🎉)getattrosenviron
setdefaultrl   r   r   rz   r   r6   version_inforp   majorminormicrort   rx   rB   prefixbase_prefix
__import__ImportErrorr2   HERMES_HOMEr   _DHH	read_textrO   PROJECT_ROOTparentmkdirtouchr{   r   	safe_loadr`   r   r   sethermes_cli.authr   r   keysr=   hermes_cli.configr   hermes_cli.providersr   r   r   dictupdater   addreplaceidjoinsortedr   rT   r;   copy2r   r   openpoputilsr   r   severitymessagehint
splitlinesr   r   r   r   r>   
write_textlensqlite3connectexecutefetchoneclosestatst_sizer   r7   r   homerelative_to
is_symlinkresolveunlink
symlink_tosplitpathsepr8   getenv
subprocessrunTimeoutExpired
returncoder.   r   r   tools.terminal_toolr   	importlibutil	find_specr   oklabelr   detail_linesrE   jsonstdoutloadsr   r   status_coderm   rw   rn   r  agent.anthropic_adapterr  r  r  r  rf   r_   rs   ljustrstripendswithagent.auxiliary_clientr,  r   r   agent.bedrock_adapterr.  r/  r0  boto3clientlist_foundation_models
executabletype__name__pathinsertmodel_toolsr5  r6  rd   sumiterdirr@  rR   rQ   rD  rS   rU   rV   rW   rE  rF  workspace_idrecall_modewrite_frequencyplugins.memory.mem0rH  plugins.memoryrL  is_availablehermes_cli.profilesrM  rN  rO  regateway_runningr   r]   r>  is_filesearchgroup	enumerate)args
should_fixr|   manual_issuesfixed_count
py_versionin_venvrequired_packagesoptional_packagesmoduler]   env_pathrF   fallback_envconfig_path_yamlrX   model_sectionprovider_rawr   default_modelknown_providersr   _resolve_auth_provider_compatible_custom_providers_normalize_catalog_provider_resolve_provider_fullcustom_providersuser_providersentryvalid_provider_idsprovider_ids_to_acceptknown_providerruntime_providercatalog_providerprovider_def
known_listprovider_for_policy providers_accepting_vendor_slugsr   pconfigstatusr   r   fallback_configexample_configr   r   current_ver
latest_vermig_errr   fstale_root_keysr   r   r   config_issuesci	hint_liner   r   r   r   nous_statuscodex_statusgemini_statusr   projectpiecessuffixminimax_statusr   hermes_homeexpected_subdirssubdir_namesubdir_path	soul_pathlinesmemories_dirmemory_file	user_filesizestate_db_pathr}  conncursorcountwal_pathwal_sizenew_size	_venv_bin
_venv_name
_candidate_prefix_is_termux_env_cmd_link_dir_cmd_link_display	_cmd_link_target	_expected
_path_dirsterminal_envresultssh_hostdaytona_keyr   runtimer   	supporteddiskauth_statusline
persistentagent_browser_pathrD   npm_dirsnpm_dirr  audit_result_json
audit_data
vuln_countr  r  r	  totalopenrouter_keyr   responser  anthropic_keyr  r  r  r  is_oauthmsg_apikey_providers_pname	_env_vars_default_url	_base_env_supports_health_check_key_ev_label_baser,  _url_headers_resp_er.  r/  r0  	_auth_var_regionr  
_br_client_br_resp_model_count	_err_name
tinker_dirinstall_cmdr5  r6  rZ   r[   tidr   rc   r8  vars_strapi_disabledhub_dir	lock_filer  	lock_datar<  q_countr@  github_token_active_memory_provider_mem_cfg_path_f_raw_cfgrQ   rD  hcfg_honcho_cfg_pathrE  rF  _load_mem0_configmem0_cfgmem0_keyrL  	_providerrM  rN  rO  _renamed_profileswrapper_dirrR  partswrapper_mremaining_issuesiissuer  r   s                                                                                                                                                                                                                      @@r1   
run_doctorrR     sG   ue,,J J.444FMK	GGG	%  D  FL  FQ  R  R  S  S  S	%SU[U`
a
abbb	%  D  FL  FQ  R  R  S  S  S
 
GGG	%(&+v{
C
CDDD!JWS:+SSj.>SSAQSSTTTT	w		S:+SSj.>SSAQSSTTT]^^^^	v		UZ-UU
0@UU:CSUUWlmmmmUZ-UU
0@UU:CSUUWijjj/000 jCO+G B-..../AAA
 
GGG	%'fk
B
BCCC     * O O	OvTNNNN 	O 	O 	Ot[)))MMMTMM-@-B-BMMVMMNNNNN	O * : :	:vT<(((( 	: 	: 	:t899999	: 
GGG	%)6;
D
DEEE V#H CD+++,,, $$g$66#G,, 	F<====9d999:::MMDEEEE $f,   	C>????$222333 C%%dT%BBB   5$555666EFFFq =>>>ABBB -K mHD---...Y	M    //+"7"7"7"I"IJJPbCGGG,,2M)--j99?RFFHHL#))++H*..y99]]=N=Nw=W=W][]ddffM#&55O        #&&7&<&<&>&>"?"?BbBbBb"b   )-&	.mmmmmm          . . ./3,.2+)-&&&.
  "+7*'C'CC'H'H$$  * * *')$$$* !WW[11N.$// r&&&q&q^&q&q&qqqq) T T!%.. 599V,,23399;; T#''	DJJLL4H4Hc4R4R(RSSS!$_!5!53;%FhZZ"*6&5 ! !N!*../J/J>/Z/Z[[[[$ ! ! ! !  (	0*6$6660'='=h'G'G$*../?@@@@  0 0 0'/$$$0  (A*6$66655hP`aa6B6N<??TX #/*../?@@@ H..#+# ,36HH , HW!k6/+B+B!C!C!C\kJW<WWW0:000   MMX< X X,6X X X   #3"F6F
0 
0 
0, =((' )'/OOOpmppampppS   \m \ \am \ \ \     $4<\$\$\RRRRRRRR/334DEEG 77K#D#D	#Q#Q!01A!B!B!Hb%)"JJ|44 5%zz+665%zz)44& &

  * 	& j3C j j j N   #MM!fFV !f !fW[!f !f !f  
 !   D  	M 	M 	MA8q888LLLLLLLL	M ')::!!## 	HDEEEE),EEN 	Hn3355 	H"(((EEES00#k2B2BCCCSDSSSTTTq  HNOOO$$%Jt%J%J%JKKKK24FGGG -K D	NNNNNNNN&:&:&<&<#KZ''QQQJQQQ.    	cN&5FFFF !DEEE#q($ N N N"#FW#F#FGGG&LMMMMMMMMN MM"abbbbFFFFGGG 	 	 	D		KKKk"" 5a!^^A..4"
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5yyyy*ByyyO uQTYY5O5OQQ8    u$.$9$9'2$F$FM, . .,0033 ./9~~a/@/@M!,,&NN1----777777%%k:>>>PQQQ1$KKMM"sttt 	 	 	D		CCCCCC5577M .e2FKMMNNN' . .B{g--"2:...."2:...%'W%7%7%9%9 . .	"9----MM"*---- 	 	 	D	 
GGG	%$fk6;
?
?@@@+F	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 +*,,??;'' 	>'7777)+<===,,..K(( 	2(-8888*,=>>>(( 2<01114466[)) 	A!%%g..4"E#''55;GF %e$$$ 422233328@.$))F++....bF*,B,B,B,BCCCC,.?@@@6688k** 	;#''(;;F_&EF&E&E&EFFFF(9::: F F F)+D+D+D+DEEEEEEEEF 7 

 	]	
 	
 	
 
GGG	%)6;
D
DEEEK ND+++,,,, 	NdT:::00001111KK$***,LMMM JII' 
a 
a!K/ 	a44{4445555 a!!$!>>>9D99;999:::q d==[===?_```` i'I %%w%77==??qqG..00qqq 	cBBBCCCC$aaabbbbd...0abbb 		""4$"???  < !	 !    BBBBCCC1K +L D555666"[0 9,	 	k{,,g,>>DDFFGGD7$7778888ijjj 	iy**G*<<BBDDEED55556666ghhhhd0002RSSS 	td;;;00001111K  *,M Z	FNNN??3}#5#566D\\"ABBFOO%%a(EJJLLLAAAAABBBB 	F 	F 	F$DDDDEEEEEEEE	F 	dXXXYYY ^+H 	}}.H***G(y*AGGG7    	`"NNN"??3}+=+=>>DLL!ABBBJJLLL:B//:K:KRx}}66QRHf(d:JffRZ^bRbfffggg1$KKMM"^____,,,c(y*Acccddd 	 	 	D	 "&)))
 |we.V[IIJJJ 	+ 	 	J%
2U:XEJ  "" &	
 *..2..bjnn-=>>??dCY]dCd 	/g 	/ MME1M - IKK(2U:M .!H,	,d     r\rrr    W1F1F|1T1TWWWXXX ##%% (o#++--%--//	i'' 1MMMNNNN,LLLDDD	DDD   " u!((***!,,Y777 !]3D!]!]R[!]!]^^^#q(&s;L&s&s&stttt!!## o-KKKLLLL(;;;D    o!''t'DDD((333[1B[[PY[[\\\1$K "$!;!;!A!A"*!M!MJ=));;"0FFFc   &,,-T4E-T-T-TUUUMM"m->"m"m"mnnn
 
GGG	%$fk6;
?
?@@@ 5 2?L111 4 [!78888+-OPPPY1LY1W1WYYZZZ 9^W55Lxx   	C#6(:4Y[\\\,   !f&71&<&<#56666677734444)+OPPPMMABBBBx   	=X|,,,,|| =`aaaa-|<<< u9011 	;#D"4dOXW`a#'	   ,   !f&71&<&<8h889999:::;;;GXGGHHHH24UVVVMM9::: y  i 122 	F&777702WXXXMMDEEE	F'''''']M2222 	F 	F 	F24KLLLMMDEEEEE	F
 ''')5x@@FFHHTHBBBBBB000%~7~~~6666		"<==I35T5T5T	5T5T5TUUUMMOIOOPPPy2G<<BBDD%%%*,EFFFF79cdddMMoppp>##H--9\=111113YZZZMMfggg*,,> 		]$<(9$<$<$<====)))44 	/1I[5F1I1I1IJJJMM\]]]]35M9J5M5M5MNNNMMh    , 	. 	.D,d,,----Y>GGMMOOSmm
 	CwxxxxABBB 6 T)N:_L$$&& 
	P.0FGGGG|| P`aaarsss23337tLLL % %Dt$$$$% 8:NOOOO<< 	TabbbKLLL.///35III ! !4    ! *,RSSS 5  :;I%(99;LM
 ' 	 	NGUn,4466 )~...G#'dB     
 %$$$AMATAZAZA\A\dU[[)<===bd
'^^J;;??@QSUVV
%>>*a88!~~fa00%>>*a88 4(2A::___.JKKKK\\TAXX yHyyyyhyy^eyyy   MMU"O"O"O"O"OPPPP___.Y(.Y.Y.YZZZ    
GGG	%&V[
A
ABBBY344N 9,"DAAAA	8LLLyy%(*DN*D*DE !  H
 #s**bU5&,77bbbcccc%,,U5&*55uM`bhblGmGm  A  A  A@AAAA%,,  DU5&*55  D  DuMtv|  wA  HB  HB  D  D  E  E  E`   
 %,,|U5&*55||uM]_e_iGjGj|||}}}stttt  MU5&*55  M  MuMmV^VjMmMmMmouoyGzGz  M  M  M  N  N  N 	8 	8 	8pufj11pp5QSYS]C^C^pppqqqMM677777777	8 	#%7888111111%%''M 2u+4@@@@0	uLLL            +L9G&}55H 5+D]+D+D(,/HH]EV5V,W,W())'4$yy5 !  H (C//'8=+>+>+@+@@@'8=+>+>+@+@@@,/HHGGGGGGG$O`JaJaa- -() !999# %  
 #s**bU5&,77bbbcccc%,,U5&*55eL_agakFlFl  A  A  A  A)rU5&-88rrsTZT^I_I_rrrsss 	u 	u 	usufm44ssU8q888U[U_E`E`ssstttttttt	u  ( O` 0o 0oJ	<4J 	 	C9S"%%D  *	o\\"%%F) h555hhhhGY[a[eAfAfhhiii////RtDDDD#o4=E	)R0002  =!<!< =<E  7U\\#..77EE 7JJJJJJ//66E(?? 6ELLQTDUDUD^D^_hDiDi 6!LL--5E:?QS))I55\%5t%5%5"4  )?? A-@H\*		$ "  
 $++`ufl!;!;``f```aaaa&#--xufj!9!9xxFxxUK^`f`jEkEkxxxyyyMM"A9Q<"A"A"ABBBB  Fufm!<!<  F  Fv  F  FNkW\WhNkNkNkmsmwHxHx  F  F  F  G  G  G o o omU5&-88mm6mmE)b)))U[U_D`D`mmmnnnnnnnnoS*	o\oooooooooo   	v0022I,,..G"((,,F.BdCCCCv"\\)\II
%<<>>"8<<0@"#E#EFF  VU5&,77  V  V&  V  V5I{YI{I{ZaI{I{eqI{I{I{  ~D  ~H  DI  DI  V  V  V  W  W  W  W c c c  gU5&-88  g  g6  g  gE  KMfift  KM  KM  KM  OU  OY  EZ  EZ  g  g  g  h  h  haCNaaabbbbb v v v HH-	zU5&-88zz6zzEJ`iJ`J`[]J`J`J`bhblDmDmzzz{{{titttuuuuuuuuv     
GGG	% &+v{
;
;<<<  00J a
-= =EEGG a  H+,,,)+BCCCC H H H!4!6!6LLLCE\kE\E\E\]]]FFFGGGGGH
 =?rJL\?r?r_i_o?r?r?rssss-/_```
 
GGG	%'fk
B
BCCCB3|,,---MMMMMMMM!8!8!:!:	;!J9Va!b!b	; 	, 	,C'++C44DTXXfc**++++ 	H 	HDxx//M488J3G3GM2H H99X..4<)@X)@)@)@AAAA4<)FGGGG `_;___ 	cMMabbb B B B6AAAAAAAAAB 
GGG	% &+v{
;
;<<<H$v-G~~ X.///k)	 	EE JJy':':'<'<==	IMM+r::;;I%IIIJJJJ E E E;(CDDDDDE|+
HRHYHYH[H[b#DD!3!3!5!5DDDDDDabQ;;':::<NOOO9;VWWW////// =00MMM*4M4ML iEFFFF$&g$&g&g&ghhh
 
GGG	%%v{FK
@
@AAA #m3!! 	Ym$$ 5 ??2..4"5 5 5 5 5 5 5 5 5 5 5 5 5 5 5'/||H'='='C&H&HUW&X&X#    # <K)+_````	 H	,	,	7\\\\\\\\%88::D2244#**,, ?46PQQQQ\ ?cDTcccddddl ?dm ??A[\\\OPPPP________##%%%?%%d+++*lT%6lld>NllVZVjll    ! ? ? ?93r77CCCMM"="="=>>>>>>>>?  	] 	] 	]02IJJJMM[\\\\\ 	7 	7 	7,c"gg66666666	7	 F	*	*	5MMMMMM((**H||Ir22H W2333nhll9c&B&Bnnx||\fhkOlOlnnoooo13jkkkUVVV 	X 	X 	X13GHHHMMVWWWWW 	5 	5 	5*CGG44444444	5
	K;;;;;;,,-DEEI fY3355 f3EEEFFFF f5TTTVqrrrr5HHHJdeee 	K 	K 	K1@@@#b''JJJJJJJJ	K*WWWWWWWWWWII]]__III !	GGG%V[AABBBN++>>>???**,,K# 2 2$ 4LL!23337 /LL"....6688 7LL!5666//11 ,LL+++%.~~'' -LL,,,-2D5)))0af00001111 !!## *2244 
 
G"??,, ! ")"3"3"5"5&'11!$,>!H!HB! y..!*E*E y *+wGL+w+wXZX`X`abXcXc+w+w+w x x x$          
GGG- MkAooeJ--...e6{666fkRRXZ[[[[ 	%YC 011YYY[a[hjpjuvvwwwwGGG 	%&6:: ) )5'1''''((((GGG	 MeJ..///eKs#344KKKV]\b\ghhiii!"2A66 	% 	%HAu#q##E##$$$$ 	f%WY_YcddeeeeJ--...e/v{KKLLL	GGGGGs  ,JAKKK==LL4Cf .W3 2f 3X?f Xf X f X(%f 'X((f 0X< ;f <Yf 
YDf ]0/f 0
]=:f <]==f  ^, +f ,^;8f :^;;C4f 0Ce5 4f 5
f?f ff 
f/f**f/	4n >!l  n  
m*'mn m,n 
nnr. ,or. or. oCr. .
r;:r;?Cv 
vv!G~4 4
>OBAQ Q
ARQ%ARRARR=D
AW W
AWWAWhAh8 h8AiiAil##Am mAmmAmp.Aq q2Aq=q<Aq=BE!BG)G)
BG7G6BG7I(HBQ+ Q+
BS#Q5A$BSSBS#T!G$B\ \
B](\AB]#]#B](`H7Bii
Bj:iABj5j5Bj:k ABs+ lB,Bo oBs+ oBBs'qBs+ q	Bs'qBBs"sBs+ s"Bs's'Bs+ s+
Bs8s7Bs8u:"Bv vABw+w*Bw+y&D<B~# ~#
B~-BBAA$CC CCC#C"CC#G/1CI< H CIH8CI< ICIICI< ICII/CI< I<
CJ	JCJ	J+B5CO) M!7CN NCO) N
CO$N#7COOCO) OCO$O$CO) O)2CQP	CQP'CQQCQQB%CT T2CU(T7	CU(U CU#U#CU(U,A)CW W
CXW !CXXCXXG-Cb _=BCa?a>Cb a?
Cbb	Cb bCbbCb b
Cb(b	Cb(b'Cb()re   )6__doc__rT  r6   r  r;   importlib.utilr  pathlibr   rj  r   r   r   hermes_constantsr   rb  r_  r`  r   r   	_env_pathr   UnicodeDecodeErrorhermes_cli.colorsr   r   hermes_cli.modelsr   hermes_cli.vercel_authr   r   rv  r   rN   r+   r.   r   r2   r8   r>   rT   r_   rE   rO   rY   rl  tuplerd   rp   rt   rx   r{   r   rR  r/   r0   r1   <module>r]     s    
			 



                M M M M M M M M M M 0 0 0 0 0 0!!o      LNN	 33I00000 3 3 3I	2222223 L6!EG D D D D + + + + + + + + 0 0 0 0 0 0 7 7 7 7 7 7 2 2 2 2 2 2 ' ' ' ' ' ' 6 5 4 4 4 4 4IS I I I I%S %S % % % %S S4Z     c    >c >d > > > >
$    2c 2QUVZQ[ 2`efjknfoquvzq{f{`| 2 2 2 2 j j3 j j j j jk kS k# k k k kh hS h# h h h h5S 5 5 5 5L$s) L L L L LB` ` ` ` `s   0A> >BB