
    `gj                        d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
 ddlmZmZ dddZddZddd
ZddZddZddZy	)z.CLI helpers for configuring Mixture of Agents.    )annotations)Any)load_configsave_config)build_models_payloadload_picker_context)DEFAULT_MOA_PRESET_NAMEnormalize_moa_configc           
     d   	 ddl m}  || |||      S # t        $ r t        |d      D ]  \  }}t	        | d|         t        |  d|dz    d      j                         }|s|cY S 	 t        dt        t        |      dz
  t        |      dz
              cY S # t        $ r |cY cY S w xY ww xY w)	Nr   )curses_radiolist)selectedcancel_returns   start. z [z]: )hermes_cli.curses_uir   	Exception	enumerateprintinputstripmaxminlenint
ValueError)titlerowsdefaultr   idxrowraws          E/root/.hermes/venv/lib/python3.12/site-packages/hermes_cli/moa_cmd.py_prompt_choicer%      s    9tggVV 	!$a0 	#HCSEC5/"	#ugR!}C01779N	q#c$i!mSX\:;; 	N		s.    AB/+-BB/B+&B/*B++B/c            	         t        t               dddddd      } | j                  d      xs g }|D cg c](  }|j                  d      s|j                  d      s'|* c}S c c}w )NT   )include_unconfiguredpicker_hintscanonical_orderpricingcapabilities
max_models	providersslugmodels)r   r   get)payloadr.   ps      r$   _model_optionsr4      sa    "!G K(.BI F!AEE&MaeeHoAFFFs   A$A$A$Nc                  
 t               }|st        d      | xs i j                  dd      
t        
fdt	        |      D        d      }|D cg c];  }|j                  d      xs |j                  d       d|j                  d       d	= }}|t        d
||         }t        |j                  d      xs g       }|st        d|j                  d       d      | xs i j                  dd      }||v r|j                  |      nd}|t        d|j                  d       ||         }	t        |j                  d      xs d      t        |	      dS c c}w )Nz>No configured model providers found. Run `hermes model` first.provider c              3  R   K   | ]  \  }}|j                  d       k(  s|   yw)r/   N)r1   ).0r!   r3   current_providers      r$   	<genexpr>z_pick_slot.<locals>.<genexpr>1   s%     Ua155=DT3TUs   ''r   namer/   z  ()zSelect providerr0   z	Provider z has no selectable modelsmodelzSelect model for )r6   r>   )	r4   RuntimeErrorr1   nextr   r%   listindexstr)currentr.   provider_defaultr3   provider_rowsr6   r0   current_modelmodel_defaultr>   r:   s             @r$   
_pick_slotrI   +   sZ    I[\\2**:r:U9Y/U	 V__PQf6v7s155=/K_M_(9=JZ[\H(,,x(.B/FYx||F';&<<UVWW]''4M3@F3JFLL/PQM>$5hll66J5K"LfVcdeEHLL06B7#e*MM `s   A Ec                    | d    d| d    }t        | j                  d      xs d      j                         }|r| d| dS |S )Nr6   :r>   reasoning_effortr7   z [reasoning=])rC   r1   r   )slotlabelefforts      r$   _format_slotrQ   ?   sX    J $w-1E,-34::<F.4eWL*?%?    c           
        t        t        | t              r| j                  d      ni       }t	        d       t	        d|d           |j                  d      xs d}t	        d|        |d   j                         D ]{  \  }}||d   k(  rd	nd
}t	        d| d
|        t	        d       t        |d   d      D ]  \  }}t	        d| dt        |              ! |d   }t	        dt        |              } y )NmoazMixture of Agents presetsz	Default: default_presetactive_presetz(off)zActive in config: presets* 
z  Reference models:reference_modelsr   r   z    r   
aggregatorz  Aggregator: )r
   
isinstancedictr1   r   itemsr   rQ   )	configcfgactiver<   presetmarkerr!   rN   aggs	            r$   _print_configrf   E   s   
Jvt4Lvzz%0RT
UC	
%&	Ic*+,
-.WW_%0F	vh
'(I,,. 4f$4 5536(!D6"##$"6*<#=QG 	6ICDRT 2345	6\"|C01234rR   c                   t               }t        | dd      xs d}|dv rt        |       y|dv rt        t	        |t
              r|j                  d      ni       }t        | dd      xs |j                  d      xs t        j                         }|d	   j                  ||d	   |d            }t        d
|        t        d       g }t        |j                  d      xs g       }d}	 |t        |      k  r||   nd}	|j                  t        |	             |dz  }t        dddgd      }
|
dk(  rnJt        d       t        |      }||d<   t        |j                  d            |d<   ||d	   |<   |j                  d|       t        |      |d<   t!        |       t        d|        t        |       y|dk(  rt        t	        |t
              r|j                  d      ni       }t        | dd      xs dj                         }|st#        d      ||d	   vrt#        d|       t        |d	         dk  rt#        d      |d	   |= |d   |k(  rt%        t'        |d	               |d<   |j                  d      |k(  rd|d<   t        |      |d<   t!        |       t        d|        yt#        d|       )z'Manage Mixture of Agents model presets.moa_commandNrA   >   lsrA   >   r`   	configurerT   r<   rU   rW   zConfigure MoA preset: z=Pick at least one reference model; choose Done when finished.r[   r   r   zAdd another reference model?zAdd anotherDonezConfigure aggregator model.r\   zSaved MoA preset: deleter7   zUsage: hermes moa delete <name>zUnknown MoA preset: z!Cannot delete the only MoA presetrV   zDeleted MoA preset: zUnknown moa subcommand: )r   getattrrf   r
   r]   r^   r1   r	   r   r   rA   r   appendrI   r%   
setdefaultr   
SystemExitr@   iter)argsra   subrT   preset_namerD   refsexistingr!   basechoices              r$   cmd_moary   U   s   
-C
$t
,
6C
nc
%%"ZT5J3775>PRStVT2jcgg>N6OjSjqqsi.$$[#i.EUAV2WX&{m45MN%'$67=2>$'#h-$78C=TDKK
4()1HC#$B]TZD[]^_F{  	+,w-&*"# *7;;|+D E&-I{#'5)#.E
C";-01c
h"ZT5J3775>PRStVT28b??A>??c)n,3K=ABBs9~!#@AA	N;' K/$(c)n)=$>C !77?#{2#%C )#.E
C$[M23
/u5
66rR   )r   )r   rC   r   z	list[str]r    r   returnr   )rz   zlist[dict[str, Any]])N)rD   zdict[str, str] | Nonerz   zdict[str, str])rN   dict[str, Any]rz   rC   )r`   r{   rz   None)rz   r|   )__doc__
__future__r   typingr   hermes_cli.configr   r   hermes_cli.inventoryr   r   hermes_cli.moa_configr	   r
   r%   r4   rI   rQ   rf   ry    rR   r$   <module>r      s8    4 "  6 J O"GN(@4 87rR   