§
    øžyjG  ã                  ó†   — 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          ú8/home/ragecks/.hermes/hermes-agent/hermes_cli/moa_cmd.pyÚ_prompt_choicer(      s)  € ðØ9Ð9Ð9Ð9Ð9Ð9àÐ  t°gÈgÐVÑVÔVÐVøÝð 	ð 	ð 	Ý! $¨aÐ0Ñ0Ô0ð 	#ð 	#‰HˆC�Ý�S�/�/˜C�/�/Ñ"Ô"Ð"Ð"Ý�uÐ0Ð0 ¨!¡Ð0Ð0Ð0Ñ1Ô1×7Ò7Ñ9Ô9ˆØð 	ØˆNˆNˆNð	Ý�q�#�c $™iœi¨!™m­S°©X¬X¸©\Ñ:Ô:Ñ;Ô;Ð;Ð;Ð;øÝð 	ð 	ð 	ØˆNˆNˆNˆNˆNð	øøøð	øøø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 )NFTéÈ   )Úinclude_unconfiguredÚpicker_hintsÚcanonical_orderÚpricingÚcapabilitiesÚ
max_modelsÚ	providersc                óú   — g | ]x}|                      d ¦  «        rat          |                      d ¦  «        ¦  «                             ¦   «                              ¦   «         dk    ¯a|                      d¦  «        ¯v|‘ŒyS )ÚslugÚmoaÚmodels)Úgetr   r   Úlower©Ú.0Úps     r'   ú
<listcomp>z"_model_options.<locals>.<listcomp>+   s   € ð ð ð àØ�5Š5�‰=Œ=ðõ �—’�f‘”ÑÔ×$Ò$Ñ&Ô&×,Ò,Ñ.Ô.°%Ò7Ð7Ø�EŠE�(‰OŒOð 8ð 	
ð 8Ð7Ð7ó    )r   r   r7   )Úpayloadr2   s     r'   Ú_model_optionsr?      sl   € Ý"ÝÑÔð #ØØØØØðñ ô €Gð —’˜KÑ(Ô(Ð.¨B€Iðð àðñ ô ð r=   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   N©r7   )r:   r$   r;   Úcurrent_providers      €r'   ú	<genexpr>z_pick_slot.<locals>.<genexpr>:   s<   øè è € ÐUÐU‘��a°1·5²5¸±=´=ÐDTÒ3TÐ3TˆÐ3TÐ3TÐ3TÐ3TÐUÐUr=   r   c                ó”   — g | ]E}|                      d ¦  «        p|                      d¦  «        › d|                      d¦  «        › d�‘ŒFS )Únamer4   z  (ú)rG   r9   s     r'   r<   z_pick_slot.<locals>.<listcomp>=   sM   € Ð_Ð_Ð_ÐPQ˜Ÿš˜f™œÐ6¨¯ª¨v©¬ÐKÐK¸1¿5º5À¹=¼=ÐKÐKÐKÐ_Ð_Ð_r=   zSelect providerr6   z	Provider r4   z has no selectable modelsÚmodelzSelect model for )rD   rM   )	r?   ÚRuntimeErrorr7   Únextr   r(   ÚlistÚindexr   )
r@   r2   Úprovider_defaultÚprovider_rowsrD   r6   Úcurrent_modelÚmodel_defaultrM   rH   s
            @r'   Ú
_pick_slotrV   4   s�  ø€ ÝÑ Ô €IØð ]ÝÐ[Ñ\Ô\Ð\Ø˜ 2×*Ò*¨:°rÑ:Ô:ÐÝØUÐUÐUÐU�9 YÑ/Ô/ÐUÑUÔUØ	ñô Ðð `Ð_ÐU^Ð_Ñ_Ô_€MØ�Ð(9¸=ÐJZÑ[Ô[Ô\€HÝ�(—,’,˜xÑ(Ô(Ð.¨BÑ/Ô/€FØð XÝÐV x§|¢|°FÑ';Ô';ÐVÐVÐVÑWÔWÐWØ�] ×'Ò'¨°Ñ4Ô4€MØ3@ÀFÐ3JÐ3J�F—L’L Ñ/Ô/Ð/ÐPQ€MØ•>Ð"L°h·l²lÀ6Ñ6JÔ6JÐ"LÐ"LÈfÐVcÑdÔdÔe€EÝ˜HŸLšL¨Ñ0Ô0Ð6°BÑ7Ô7Å#ÀeÁ*Ä*ÐMÐMÐMr=   Úslotúdict[str, Any]c                ó¬   — | d         › d| d         › �}t          |                      d¦  «        pd¦  «                             ¦   «         }|r|› d|› d�n|S )NrD   ú:rM   Úreasoning_effortrE   z [reasoning=Ú])r   r7   r   )rW   ÚlabelÚefforts      r'   Ú_format_slotr_   H   sj   € Ø�JÔÐ1Ð1 $ w¤-Ð1Ð1€EÝ�—’Ð,Ñ-Ô-Ð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 )Nr5   z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ÚactiverK   ÚpresetÚmarkerr$   rW   Úaggs	            r'   Ú_print_configrs   N   sy  € Ý
µJ¸vÅtÑ4LÔ4LÐT˜vŸzšz¨%Ñ0Ô0Ð0ÐRTÑ
UÔ
U€CÝ	Ð
%Ñ&Ô&Ð&Ý	Ð
-�cÐ*Ô+Ð
-Ð
-Ñ.Ô.Ð.Ø�WŠW�_Ñ%Ô%Ð0¨€FÝ	Ð
'˜vÐ
'Ð
'Ñ(Ô(Ð(Ø˜Iœ×,Ò,Ñ.Ô.ð 4ð 4‰ˆˆfØ Ð$4Ô 5Ò5Ð5��¸3ˆÝÐ"�6Ð"Ð"˜DÐ"Ð"Ñ#Ô#Ð#ÝÐ#Ñ$Ô$Ð$Ý" 6Ð*<Ô#=ÀQÐGÑGÔGð 	6ð 	6‰IˆC�ÝÐ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                óv  — t          ¦   «         }t          | dd¦  «        pd}|dv rt          |¦  «         dS |dv �r&t          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          |	¦  «        }
t          |	pi                      dd¦  «        ¦  «        |
d<   |                     |
¦  «         |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_commandNrP   >   ÚlsrP   >   r`   Ú	configurer5   rK   rc   re   zConfigure MoA preset: z=Pick at least one reference model; choose Done when finished.ri   r   TÚenabledr   zAdd another reference model?zAdd anotherÚDonezConfigure aggregator model.rj   zSaved MoA preset: ÚdeleterE   zUsage: hermes moa delete <name>zUnknown MoA preset: z!Cannot delete the only MoA presetrd   zDeleted MoA preset: zUnknown moa subcommand: )r   Úgetattrrs   r
   rk   rl   r7   r	   r   r   rP   r"   rV   ÚboolÚappendr(   Ú
setdefaultr   Ú
SystemExitrO   Úiter)Úargsrn   Úsubr5   Úpreset_namer@   ÚrefsÚexistingr$   ÚbaseÚpickedÚchoices               r'   Úcmd_moar‰   ^   sÖ  € å
‰-Œ-€CÝ
�$˜ tÑ
,Ô
,Ð
6°€Cà
ˆnÐÐÝ�cÑÔÐØˆà
Ð%Ð%Ñ%Ý"µZÀÅTÑ5JÔ5JÐ#R 3§7¢7¨5¡>¤> >ÐPRÑSÔSˆÝ˜t V¨TÑ2Ô2Ðj°c·g²gÐ>NÑ6OÔ6OÐjÕSj×qÒqÑsÔsˆØ�i”.×$Ò$ [°#°i´.ÀÐEUÔAVÔ2WÑXÔXˆÝÐ4 {Ð4Ð4Ñ5Ô5Ð5ÝÐMÑNÔNÐNØ%'ˆÝ˜ŸšÐ$6Ñ7Ô7Ð=¸2Ñ>Ô>ˆØˆð	Ø$'­#¨h©-¬-Ò$7Ð$7�8˜C”=�=¸TˆDÝ Ñ%Ô%ˆFÝ $ d j¨b×%5Ò%5°iÀÑ%FÔ%FÑ GÔ GˆF�9ÑØ�KŠK˜ÑÔÐØ�1‰HˆCÝ#Ð$BÀ]ÐTZÐD[Ð]^Ñ_Ô_ˆFØ˜Š{ˆ{Øð	õ 	Ð+Ñ,Ô,Ð,Ý�w‘-”-ˆØ&*ˆÐ"Ñ#Ý *¨7¯;ª;°|Ñ+DÔ+DÑ EÔ Eˆ�ÑØ&-ˆˆIŒ�{Ñ#Ø�ŠÐ'¨Ñ5Ô5Ð5Ý)¨#Ñ.Ô.ˆˆE‰
Ý�CÑÔÐÝÐ0 ;Ð0Ð0Ñ1Ô1Ð1Ý�cÑÔÐØˆà
ˆh‚�Ý"µZÀÅTÑ5JÔ5JÐ#R 3§7¢7¨5¡>¤> >ÐPRÑSÔSˆÝ˜t V¨TÑ2Ô2Ð8°b×?Ò?ÑAÔAˆØð 	@ÝÐ>Ñ?Ô?Ð?Ø˜c )œnÐ,Ð,ÝÐA°KÐAÐAÑBÔBÐBÝˆs�9Œ~ÑÔ !Ò#Ð#ÝÐ@ÑAÔAÐAØ�	ŒN˜;Ð'ØÐÔ  KÒ/Ð/Ý$(­¨c°)¬nÑ)=Ô)=Ñ$>Ô$>ˆCÐ Ñ!Ø�7Š7�?Ñ#Ô# {Ò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@   rA   r   rB   )rW   rX   r   r   )r`   rX   r   ra   )r   ra   )Ú__doc__Ú
__future__r   Útypingr   Úhermes_cli.configr   r   Úhermes_cli.inventoryr   r   Úhermes_cli.moa_configr	   r
   r(   r?   rV   r_   rs   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ðð ð ð ð ð"ð ð ð ð.Nð Nð Nð Nð Nð(@ð @ð @ð @ð4ð 4ð 4ð 4ð :7ð :7ð :7ð :7ð :7ð :7r=   