
     Yj+                        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dS )%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_configtitlestrrows	list[str]defaultintreturnc           
        	 ddl m}  || |||          S # t          $ r t          |d          D ]\  }}t	          | d|            t          |  d|dz    d                                          }|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lenr   
ValueError)r   r   r   r   idxrowraws          GC:\Users\server\AppData\Local\hermes\hermes-agent\hermes_cli\moa_cmd.py_prompt_choicer(      s)   999999tggVVVV 	 	 	!$a000 	# 	#HCS//C//""""u00!000117799 	NNN	q#c$ii!mSXX\::;;;;; 	 	 	NNNNN		s.    A#C==B=:C=C	CCClist[dict[str, Any]]c            	         t          t                      dddddd          } |                     d          pg }d |D             S )NT   )include_unconfiguredpicker_hintscanonical_orderpricingcapabilities
max_models	providersc                f    g | ].}|                     d           |                     d          ,|/S )slugmodelsget.0ps     r'   
<listcomp>z"_model_options.<locals>.<listcomp>(   s6    FFF!AEE&MMFaeeHooFAFFF    )r   r   r7   )payloadr2   s     r'   _model_optionsr>      s]    "!  G K((.BIFFyFFFFr<   Ncurrentdict[str, str] | Nonedict[str, str]c                  	 t                      }|st          d          | pi                     dd          	t          	fdt	          |          D             d          }d |D             }|t          d||                   }t          |                    d          pg           }|s&t          d	|                    d
           d          | pi                     dd          }||v r|                    |          nd}|t          d|                    d
           ||                   }t          |                    d
          pd          t          |          dS )Nz>No configured model providers found. Run `hermes model` first.provider c              3  T   K   | ]"\  }}|                     d           k    |V  #dS )r4   Nr6   )r9   r$   r:   current_providers      r'   	<genexpr>z_pick_slot.<locals>.<genexpr>1   s<      UUa155==DT3T3T3T3T3T3TUUr<   r   c                    g | ]E}|                     d           p|                     d           d|                     d           dFS )namer4   z  ()r6   r8   s     r'   r;   z_pick_slot.<locals>.<listcomp>4   sM    ___PQf6vKK155==KKK___r<   zSelect providerr5   z	Provider r4   z has no selectable modelsmodelzSelect model for )rC   rK   )	r>   RuntimeErrorr7   nextr   r(   listindexr   )
r?   r2   provider_defaultprovider_rowsrC   r5   current_modelmodel_defaultrK   rF   s
            @r'   
_pick_slotrT   +   s     I ][\\\2**:r::UUUU9Y//UUU	  `_U^___M(9=JZ[[\H(,,x((.B//F XVx||F';';VVVWWW]''44M3@F3J3JFLL///PQM>"Lhll66J6J"L"LfVcddeEHLL006B77#e**MMMr<   slotdict[str, Any]c                    | d          d| d          }t          |                     d          pd                                          }|r| d| dn|S )NrC   :rK   reasoning_effortrD   z [reasoning=])r   r7   r   )rU   labelefforts      r'   _format_slotr]   ?   sj    J11$w-11E,--344::<<F.4?e******%?r<   configNonec           
        t          t          | t                    r|                     d          ni           }t	          d           t	          d|d                     |                    d          pd}t	          d|            |d                                         D ]\  }}||d         k    rd	nd
}t	          d| d
|            t	          d           t          |d         d          D ]'\  }}t	          d| dt          |                      (|d         }t	          dt          |                      d S )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dictr7   r   itemsr   r]   )	r^   cfgactiverI   presetmarkerr$   rU   aggs	            r'   _print_configrr   E   sy   
Jvt4L4LTvzz%000RT
U
UC	
%&&&	
-c*+
-
-...WW_%%0F	
'v
'
'(((I,,.. 4 4f$4 5553"6""D""####$$$"6*<#=QGGG 	6 	6IC444T 2 2445555\"2|C002233334 4r<   c                "   t                      }t          | dd          pd}|dv rt          |           dS |dv rt          t	          |t
                    r|                    d          ni           }t          | dd          p|                    d          pt                                          }|d	                             ||d	         |d                            }t          d
|            t          d           g }t          |                    d          pg           }d}	 |t          |          k     r||         nd}	|                    t          |	                     |dz  }t          dddgd          }
|
dk    rn_t          d           t          |          }||d<   t          |                    d                    |d<   ||d	         |<   |                    d|           t          |          |d<   t!          |           t          d|            t          |           dS |dk    r@t          t	          |t
                    r|                    d          ni           }t          | dd          pd                                }|st#          d          ||d	         vrt#          d|           t          |d	                   dk    rt#          d          |d	         |= |d         |k    r%t%          t'          |d	                             |d<   |                    d          |k    rd|d<   t          |          |d<   t!          |           t          d|            dS t#          d|           )z'Manage Mixture of Agents model presets.moa_commandNrN   >   lsrN   >   r^   	configurera   rI   rb   rd   zConfigure MoA preset: z=Pick at least one reference model; choose Done when finished.rh   r   Tr   zAdd another reference model?zAdd anotherDonezConfigure aggregator model.ri   zSaved MoA preset: deleterD   zUsage: hermes moa delete <name>zUnknown MoA preset: z!Cannot delete the only MoA presetrc   zDeleted MoA preset: zUnknown moa subcommand: )r   getattrrr   r
   rj   rk   r7   r	   r   r   rN   r"   appendrT   r(   
setdefaultr   
SystemExitrM   iter)argsrm   subra   preset_namer?   refsexistingr$   basechoices              r'   cmd_moar   U   s   
--C
$t
,
,
6C
nc
%%%"ZT5J5J#R3775>>>PRSStVT22jcgg>N6O6OjSjqqssi.$$[#i.EUAV2WXX4{44555MNNN%'$677=2>>	$'#h--$7$78C==TDKK
4(()))1HC#$B]TZD[]^__F{{	 	+,,,w--&*"# *7;;|+D+D E E&-I{#'555)#..E
C0;00111c
h"ZT5J5J#R3775>>>PRSStVT228b??AA 	@>???c)n,,AKAABBBs9~!##@AAA	N;' K//$(c)n)=)=$>$>C !77?##{22#%C )#..E
C2[22333
555
6
66r<   )r   )r   r   r   r   r   r   r   r   )r   r)   )N)r?   r@   r   rA   )rU   rV   r   r   )r^   rV   r   r_   )r   r_   )__doc__
__future__r   typingr   hermes_cli.configr   r   hermes_cli.inventoryr   r   hermes_cli.moa_configr	   r
   r(   r>   rT   r]   rr   r    r<   r'   <module>r      s   4 4 " " " " " "       6 6 6 6 6 6 6 6 J J J J J J J J O O O O O O O O    "G G G GN N N N N(@ @ @ @4 4 4 4 87 87 87 87 87 87r<   