+
    „WÝj=>  ã                  ó  € R t ^ RIHt ^ RIt^ RIt^ RIt]P                  ! ]4      tR t	R R lt
R R ltRR	R
R R R 3RRRR R R 33tR R ltR R ltR R ltR R ltRR/R R lltRR/R ltRR/R ltRR/R  R! lltR# )"aB  The interactive ``hermes plugins`` composite UI: general-plugin checkboxes (saved through the one
admission authority) and the memory-provider / context-engine category pickers.

Sibling of :mod:`hermes_cli.plugins_cmd` (the facade re-exports the names other modules use and is
imported late here, never at module level).
)ÚannotationsNc                 ó   € ^ RI Hp  V # )z`The facade, read at call time: tests patch ``plugins_cmd.<name>`` and sibling calls must see it.©Úplugins_cmd)Ú
hermes_clir   r   s    ÚQC:\Users\johnn\AppData\Local\hermes\hermes-agent\hermes_cli\plugins_cmd_toggle.pyÚ_pcr      s   € å&ØÐó    c               ó   € V ^8„  d   QhRR/# ©é   Úreturnzlist[tuple[str, str]]© )Úformats   "r   Ú__annotate__r      s   € ÷ ñ Ð$9ñ r	   c                 ó‚   €  ^ RI Hp  V ! 4        UUUu. uF	  w  rq1V3NK  	  uppp# u upppi   \         d    . u # i ; i)z>``[(name, description), ...]`` for available memory providers.)Údiscover_memory_providers)Úplugins.memoryr   Ú	Exception)r   ÚnameÚdescÚ_avails       r   Ú_discover_memory_providersr      sB   € ðÝ<Ù7PÔ7RÕSÑ7RÑ!3 ¨V�t“Ñ7RÓSÐSùÔSøÜô ØŠ	ðús   ‚. “'¢. §. ®>½>c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r       s   € ÷ !ñ !Ð#8ñ !r	   c                 ój  € / p  ^ RI Hp V! 4        F  w  r#pV P                  W#4       K  	   ^ RIHpHp V! 4        V! 4       pV'       d0   \        VRR4      '       d   V P                  VP                  R4       \        T P                  4       4      #   \         d     Lti ; i  \         d     L7i ; i)z´``[(name, description), ...]`` for repo-shipped context engines plus the plugin-registered
one (``ctx.register_context_engine``); repo-shipped descriptions win on a name collision.)Údiscover_context_engines)Údiscover_pluginsÚget_plugin_context_enginer   Nzinstalled plugin)Úplugins.context_enginer   Ú
setdefaultr   Úhermes_cli.pluginsr   r   Úgetattrr   ÚlistÚitems)Úenginesr   r   r   r   r   r   Úplugin_engines           r   Ú_discover_context_enginesr&       s©   € ð !€GðÝCÙ":Ö"<ÑˆD˜Ø×Ñ˜tÖ*ñ #=ðßRÙÔÙ1Ó3ˆßœW ]°F¸D×AÒAØ×Ñ˜}×1Ñ1Ð3EÔFô �—‘“Ó Ð øô ô Ùðûô ô Ùðús(   „(B ­B$ Á/B$ ÂB!Â B!Â$B2Â1B2zMemory Providerúbuilt-inÚ c                 ó2   € \        4       P                  4       # ©N)r   Ú_get_current_memory_providerr   r	   r   Ú<lambda>r,   8   s   € ´³×0RÑ0RÔ0Tr	   c                 ó   € \        4       # r*   )r   r   r	   r   r,   r,   9   s   € Ô'Ô)r	   c                ó4   € \        4       P                  V 4      # r*   )r   Ú_save_memory_provider©Úvs   &r   r,   r,   9   s   € ´S³U×5PÑ5PÐQRÔ5Sr	   zContext EngineÚ
compressorc                 ó2   € \        4       P                  4       # r*   )r   Ú_get_current_context_enginer   r	   r   r,   r,   :   s   € ¼3»5×;\Ñ;\Ô;^r	   c                 ó2   € \        4       P                  4       # r*   )r   r&   r   r	   r   r,   r,   ;   s   € ŒS‹U×,Ñ,Ô.r	   c                ó4   € \        4       P                  V 4      # r*   )r   Ú_save_context_enginer0   s   &r   r,   r,   ;   s   € ¼#»%×:TÑ:TÐUVÔ:Wr	   c               ó   € V ^8„  d   QhRR/# )r   r   Úboolr   )r   s   "r   r   r   ?   s   € ÷ ñ  dñ r	   c                óÎ  a€ ^ RI Hp V w  r#porVS! 4       oV! 4       pV.V UU	u. uF  w  r‰VNK	  	  up	p,           p
V R2.V UUu. uF  w  r‹V'       d   V RV 2MTNK  	  upp,           pSV
9  d&   V
P                  S4       VP                  S R24       \        V3R l\	        V
4       4       4      pW¡! V R2WÍR7      ,          pVS8X  d   R# V! V4       R	# u up	pi u uppi )
zÞRadio picker for one ``_PROVIDER_CATEGORY_SPECS`` row: the built-in default first, then the
discovered choices; a current value not among them is appended as ``(not found)``. Saves and
returns True when the choice changed.)Úcurses_radiolistz
 (default)õ    â€” z (not found)c              3  ó>   <"  € T F  w  rVS8X  g   K  Vx € K  	  R # 5ir*   r   )Ú.0Úir   Úcurrents   &  €r   Ú	<genexpr>Ú+_configure_category_spec.<locals>.<genexpr>L   s   øé € ÐHÑ$4™˜¸À¹—1’1Ó$4ùs   ƒ“
z (select one))Útitler#   ÚselectedFT)Úhermes_cli.curses_uir;   ÚappendÚmaxÚ	enumerate)Úspecr;   rC   Údefault_labelÚdefault_nameÚdiscoverÚsaveÚchoicesr   Ú_descÚnamesr   r#   rD   Ú	new_valuer@   s   &              @r   Ú_configure_category_specrR   ?   sð   ø€ õ 6ØBFÑ?€E˜,¨°Ù‹i€GÙ‹j€GØˆN±gÔ>±g¡{ t›d±gÒ>Õ>€EØˆ˜jÐ)Ð*ÑjqÔ-rÑjqÑ\fÐ\`Ï°°°h¸t¸fÑ.EÐSWÒ.WÑjqÒ-rÕr€EØ�eÔØ�‰�WÔØ�‰˜�y Ð-Ô.ÜÔH¤I¨eÔ$4ÓHÓH€HØÐ&°¨w°mÐ-DÈEÔeÕf€IØ�GÔÙÙˆ„OÙùó ?ùÛ-rs   ¤CÁC!c               ó   € V ^8„  d   QhRR/# )r   r   r"   r   )r   s   "r   r   r   T   s   € ÷ vñ v˜dñ vr	   c            	     ó¶   € \          U u. uFD  q ^ ,          V ^,          ! 4       ;'       g
    V ^,          \        P                  ! \        V 4      3NKF  	  up # u up i )zJ``[(title, current_label, configure_fn), ...]`` rows for the composite UI.)Ú_PROVIDER_CATEGORY_SPECSÚ	functoolsÚpartialrR   )Úss    r   Ú_provider_categoriesrY   T   sD   € å\tÓuÑ\tÐWXˆq�T�1�Q–4“6—>�>˜Q˜q�T¤9×#4Ò#4Ô5MÈqÓ#QÓRÑ\tÑuÐuùÒus
   ‰ Aª)Ac               ó   € V ^8„  d   QhRR/# ©r   r   ÚNoner   )r   s   "r   r   r   Y   s   € ÷ Qñ Q�Dñ Qr	   c                 óà  € \        4       P                  4       p \        4       P                  4       p\        4       P                  4       p\        4       P	                  4       p\        4       P                  4       pV Uu. uF  qU^,          NK  	  ppV UUU	U
UUu. uF(  w  rxršr¼V	'       d   V RV	 2MTV
R8X  d   RMR,           NK*  	  ppp
p	ppp\        WV4      p\        4       P                  4       p\        P                  P                  4       '       g   V P                  R4       R#  ^ RIp\        VWmWäWðVR7       R# u upi u uppp
p	ppi   \         d    \        YmYäYðTR7        R# i ; i)uJ   Interactive composite UI â€” general plugins + provider plugin categories.r<   Úbundledz
 [bundled]r(   z0[dim]Interactive mode requires a terminal.[/dim]N©Úexpected_config)r   Ú_consoleÚ_discover_all_pluginsÚ_plugin_selection_versionÚ_get_enabled_setÚ_get_disabled_setÚ_effective_plugin_selectionrY   ÚsysÚstdinÚisattyÚprintÚcursesÚ_run_composite_uiÚImportErrorÚ_run_composite_fallback)ÚconsoleÚentriesr`   Úenabled_setÚdisabled_setÚentryÚplugin_keysr   Ú_versionÚdescriptionÚsourceÚ_dÚ_keyÚplugin_labelsÚplugin_selectedÚ
categoriesrk   s                    r   Ú
cmd_toggler}   Y   sY  € ä‹e�n‰nÓ€GÜ‹e×)Ñ)Ó+€GÜ“e×5Ñ5Ó7€OÜ“%×(Ñ(Ó*€KÜ“5×*Ñ*Ó,€Lñ
 *1Ó1© ˜—8�8©€KÐ1ñ >E÷ð á=DÑ9ˆD˜K°÷ ,7ˆDˆ6�˜+˜Ñ	'¸DÐU[Ð_hÔUhÁ\Ðnp×qÐqÙ=Dð õ ô 2°'ÈÓU€OÜ“×+Ñ+Ó-€Jä�9‰9×Ñ×ÒØ�‰ÐHÔIÙðQÛÜ˜& +¸oÐ]gð  CR÷  	Sùò 2ù÷øô ô QÜ ¸OÐ[eð  AP÷  	Qð  	QðQús   Á=E Â.EÄ*E ÅE-Å,E-c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚenabledÚsetÚdisabledr   r   )r   s   "r   r   r   w   s&   € ÷ rñ r°#ð rÀð rÈñ rr	   c           
     ó¨   € ^ RI Hp \        4       P                  4       p\	        V 4       UUu0 uF  w  rVV! WaW$4      R8X  g   K  VkK  	  upp# u uppi )u§   Row indices ticked on open: the load-time rule, not list membership â€” bundled platforms,
backends and model providers are active without a ``plugins.enabled`` entry.)Ú_entry_statusr   )Úhermes_cli.plugins_cmd_listingrƒ   r   Ú_category_active_namesrH   )rp   r   r�   rƒ   Úactiver?   rs   s   &&&    r   rf   rf   w   sJ   € õ =Ü‹U×)Ñ)Ó+€FÜ'¨Ô0ÔqÑ0‘(�!±MÀ%ÐRZÓ4cÐgpÑ4p�AˆAÑ0ÒqÐqùÓqs   ­AÁAr`   c               ó   € V ^8„  d   QhRR/# )r   r   ztuple[list, list]r   )r   s   "r   r   r      s   € ÷ !ñ !Ðbsñ !r	   c               óÄ  € \        W,
          4       Uu. uF  qPV,          NK  	  pp\        W1,
          4       Uu. uF  qPV,          NK  	  ppV'       g   V'       g   . . 3# Vf   \        4       P                  4       p\        \        4       P	                  4       4      \        V4      r˜\        4       P                  4       p
VR3VR33 FB  w  r¼V F7  p\        4       P                  W‰V\        4       P                  WÚ4      VR7       K9  	  KD  	  \        4       P                  W‰RVR7       \        P                  RT;'       g    RT;'       g    R4       Wg3# u upi u upi )ak  Write only the rows flipped this session; returns the ``(turned_on, turned_off)`` keys.

Untouched rows are never persisted, so a never-ticked row is not mistaken for an explicit untick
and list entries for plugins the picker didn't show survive. Canonical key only, with every alias
purged from the opposing list like ``hermes plugins enable/disable`` (#40190).
TF)ÚenablezSave plugin selection)Úactionr`   z'plugins picker: enabled %s; disabled %sÚnone)Úsortedr   rc   r€   rd   rb   Ú_apply_activationÚ_plugin_aliasesÚ_admit_and_save_plugin_setsÚloggerÚinfo)rt   Úchosenr�   Úinitialr`   r?   Ú	turned_onÚ
turned_offÚnew_enabledÚnew_disabledrp   Úkeysr‰   Úkeys   &&&&$         r   Ú_persist_plugin_selectionrš      s<  € ô *0°Õ0@Ô)AÓBÑ)A A˜Q—�Ñ)A€IÐBÜ*0°Õ1AÔ*BÓCÑ*B Q˜a—.�.Ñ*B€JÐCßŸØ�2ˆvˆØÒÜ›%×9Ñ9Ó;ˆÜ #¤C£E×$:Ñ$:Ó$<Ó =¼sÀ8»}�Ü‹e×)Ñ)Ó+€GØ# TÐ*¨Z¸Ð,?Ó@‰ˆÛˆCÜ‹E×#Ñ# K¸sÄCÃE×DYÑDYÐZ]ÓDgÐpvÐ#Öwó ñ Aô
 ƒE×%Ñ% kÐH_ð  rAÐ%ô  BÜ
‡K�KÐ9¸9×;NÐ;NÈÐPZ×PdÐPdÐ^dÔeØÐ Ð ùò CùÚCs
   ”EºEc               óò  a aaaaaaaaaaaaaa€ ^ RI HoHp \        V4      o\	        V4      \	        S4      uooSS,           oRoS P
                  \        R4      3V3R l3S P                  \        R4      3V3R l3S P                  \        R4      3V3R l3S P                  \        R	4      3R
 3S P                  3R 3S P                  3V3R l33 U	U
Uu/ uF  w  ršV	 F  pWºbK  	  K  	  upp
p	oV 3R loV 3R loVV 3R loVVV V3R loVVVVV VVV3R loVVVVVVV VVVV3R lpS P                  V4       V! 4        ^ RIHp  \        VSWCVR7      w  rïT'       g	   T'       d,   TP!                  R\	        T4       R\	        T4       R24       MS^ 8”  d   TP!                  R4       S'       dO   TP!                  R\#        4       P%                  4       ;'       g    R R\#        4       P'                  4        R24       S^ 8”  g	   S'       d   TP!                  R 4       TP!                  4        R# u upp
p	i   T d1   pTP!                  RT 24       TP!                  R4        Rp?R# Rp?ii ; i)!z<Custom curses screen with checkboxes + category action rows.)Ú_addnstrÚflush_stdinFÚkc                ó$   <€ V ^,
          S,          # ©é   r   ©ÚcÚpÚtotal_itemss   &&€r   r,   Ú#_run_composite_ui.<locals>.<lambda>¢   s   ø€ °a¸!µe¸{Ö5Jr	   Újc                ó$   <€ V ^,           S,          # r    r   r¢   s   &&€r   r,   r¦   £   s   ø€ ¸¸A½ÀÖ7Lr	   Úfc                ó6   <€ \        S^,
          W,           4      # r    )Úminr¢   s   &&€r   r,   r¦   ¤   s   ø€ ¼¸KÈ!½OÈQÍUÔ8Sr	   Úbc                ó&   € \        ^ W,
          4      # ©é    )rG   ©r£   r¤   s   &&r   r,   r¦   ¥   s   € ¼¸A¸q½u¼r	   c                ó   € ^ # r®   r   r°   s   &&r   r,   r¦   ¦   s   € ©ar	   c                ó   <€ S^,
          # r    r   r¢   s   &&€r   r,   r¦   §   s	   ø€ ¨[¸1®_r	   c                 óD  <€ SP                  4       '       d‰   SP                  4        SP                  4        SP                  ^8”  d   ^MSP                  p ^SP
                  3^SP                  3^SP                  3^V 33 F  w  rSP                  WR4       K  	  R# R# )é   Néÿÿÿÿ)	Ú
has_colorsÚstart_colorÚuse_default_colorsÚCOLORSÚCOLOR_WHITEÚCOLOR_GREENÚCOLOR_YELLOWÚ
COLOR_CYANÚ	init_pair)ÚgrayÚpairÚfgrk   s      €r   Ú_init_colorsÚ'_run_composite_ui.<locals>._init_colors¬   s—   ø€ Ø×Ñ×ÒØ×ÑÔ Ø×%Ñ%Ô'ØŸ™¨Ô)‘1¨v×/AÑ/AˆDØ ×!3Ñ!3Ð4°q¸&×:MÑ:MÐ6NÐQRÐTZ×TeÑTeÐPfÐijÐlpÐhqÓr‘�Ø× Ñ  ¨2Ö.ó sñ	 r	   c                ód   <€ SP                  4       '       d   V SP                  V4      ,          # T # r*   )r¶   Ú
color_pair)ÚbaserÀ   rk   s   &&€r   Ú_attrÚ _run_composite_ui.<locals>._attr´   s,   ø€ Ø17×1BÑ1B×1DÒ1Dˆt�f×'Ñ'¨Ó-Õ-ÐNÈ$ÐNr	   c                ót   <€ W8X  d   RMRpRV RV  2W8X  d   S! SP                   V4      3# SP                  3# )zKOne navigable body row: arrow marker + bold color when *idx* is the cursor.u   â†’Ú )ÚA_BOLDÚA_NORMAL)ÚtextÚidxÚcursorrÀ   ÚarrowrÇ   rk   s   &&&& €€r   Ú_rowÚ_run_composite_ui.<locals>._row·   sD   ø€ àœM‘¨sˆØ�E�7˜!˜D˜6Ð"À#Ä-¡E¨&¯-©-¸Ó$>ÐeÐeÐU[×UdÑUdÐeÐer	   c                óh  <€ SP                  4        SV ,          w  rpV! 4       '       d/   RoV\        4       P                  4       V ,          ^,          V3SV &   SP                  4       pSP	                  4        SP                  4        VP                  R4       S! 4        SP                  ^ 4       V# )zJLeave curses, run the category's picker, refresh its row, re-enter curses.T)Úendwinr   rY   ÚinitscrÚnoechoÚcbreakÚkeypadÚcurs_set)	ÚciÚcat_nameÚ_cat_curÚcat_fnÚstdscrrÂ   r|   rk   Úproviders_changeds	   &    €€€€r   Ú_configure_categoryÚ._run_composite_ui.<locals>._configure_category¼   sŽ   ø€ ð 	�‰ŒØ%/°¥^Ñ"ˆ˜FÙ�8Š8Ø $ÐØ&¬«×(BÑ(BÓ(DÀRÕ(HÈÕ(KÈVÐTˆJ�r‰NØ—‘Ó!ˆØ�‰ŒØ�‰ŒØ�‰�dÔÙŒØ�‰˜ÔØˆr	   c                óJ  <€ . pS^ 8”  d„   VP                  RS
! SP                  ^4      34       \        V\        SV\	        V^ 4      ,           4      4       F4  pVS9   d   RMRpVP                  S! RV RSV,           2W@^4      4       K6  	  VP                  RSP
                  34       S^ 8”  dj   VP                  RS
! SP                  ^4      34       T\        S4       UUUU	u. uF"  w  pw  rxp	S! RVR	 R
V 2SV,           V ^4      NK$  	  up	ppp,          pV# u up	pppi )z3Body rows as (text, attr); "" is a blank separator.z  General Pluginsu   âœ“rÊ   Ú[z] r(   z  Provider Pluginsú  z<24u    â–¸ )rF   rË   Úranger«   rG   rÌ   rH   )rÏ   Úscroll_offsetÚvisible_rowsÚlinesr?   ÚcheckrÚ   rÛ   Úcat_currentÚ_cat_fnrÇ   rÑ   r|   r’   rk   Ún_categoriesÚ	n_pluginsrz   s   &&&       €€€€€€€€r   Ú_body_linesÚ&_run_composite_ui.<locals>._body_linesÌ   s"  ø€ àˆØ�qŒ=Ø�L‰LÐ-©u°V·]±]ÀAÓ/FÐGÔHÜ˜=¬#¨i¸ÌÈ\Ð[\ÓI]Õ9]Ó*^Ö_�Ø$%¨¤K™°S�Ø—‘™T A e W¨B¨}¸QÕ/?Ð.@Ð"AÀ1ÈaÓPÖQñ `ð 	�‰�b˜&Ÿ/™/Ð*Ô+Ø˜!ÔØ�L‰LÐ.±°f·m±mÀQÓ0GÐHÔIØä<EÀjÔ<Qöá<QÑ8�BÑ8˜°ñ �r˜( 3˜ x°¨}Ð=¸yÈ2½~ÈvÐWXÖYÙ<Qôõ ˆEð ˆùõ	s   Ã'(Dc                óÈ  <€ SP                  ^ 4       S! 4        ^ ;r V P                  4        V P                  4       w  r4S! V ^ ^ RV^,
          S! SP                  ^4      4       S! V ^^ RV^,
          SP                  4       V^,
          pW8  d   TpMWV,           8¼  d   W,
          ^,           pS! WV4      p\        VR\        ^ V^,
          4       ^R7       F$  w  pw  r‰V'       g   K  S! W^ W„^,
          V	4       K&  	  V P                  4        V P                  4       p
V
S9   d/   S^ 8”  d%   SV
,          ! V\        ^V^,
          4      4      pEK8  EK;  V
\        R4      8X  g   V
SP                  ^
^09   dR   VS8¼  d$   VS,
          S8  d   S! VS,
          4      p EK†  EK‰  V
\        R4      8X  d   SP                  V04       EK®  R# V
^\        R4      09   g   EKÅ  R# )r¯   ÚPluginsuV     â†‘â†“/j/k navigate  PgUp/PgDn page  SPACE toggle  ENTER configure/confirm  ESC doneN)ÚstartrÊ   Úq)rÙ   ÚclearÚgetmaxyxrË   ÚA_DIMrH   rG   ÚrefreshÚgetchÚordÚ	KEY_ENTERÚsymmetric_difference_update)rÞ   rÏ   ræ   Úmax_yÚmax_xrç   rè   ÚyrÍ   Úattrr™   rœ   rÇ   rî   rà   rÂ   r’   rk   rì   rí   Únavr¥   s   &          €€€€€€€€€€€r   Ú_drawÚ _run_composite_ui.<locals>._drawÝ   s°  ø€ Ø�‰˜ÔÙŒØ!"Ð"ˆØØ�L‰LŒNØ!Ÿ?™?Ó,‰LˆEÙ�V˜Q  9¨e°a­i¹¸v¿}¹}ÈaÓ9PÔQÙØ˜˜1ÐvØ˜•	˜6Ÿ<™<ô)ð ! 1�9ˆLØÔ%Ø &‘Ø¨<Õ7Ô7Ø &Õ 5¸Õ 9�Ù °|ÓDˆEÜ#,¨UÐ3F´S¸¸EÀA½IÓ5FÐ-GÈq×#Q‘�‘<�Dß‘4Ù˜V¨¨4¸µ¸DÖAñ $Rð �N‰NÔØ—,‘,“.ˆCà�cŒzØ ”?Ø  žX f¬c°!°U¸QµYÓ.?Ó@“Fò #àœ˜C›” C¨F×,<Ñ,<¸bÀ"Ð+EÔ$EØ˜YÔ&à 	Õ)¨LÔ8Ù!4°V¸iÕ5GÓ!H›ò 9àœC ›H”_Ø×6Ñ6¸°x×@áØ˜œS ›X˜×&Ùr	   ©ÚAdmissionRefusedr_   u4   [red]âœ—[/red] Plugin selection refused, not saved: zp[dim]config.yaml and the active environment are unchanged. Run `hermes pm install` to resolve, then retry.[/dim]Nu%   
[green]âœ“[/green] General plugins: z turned on, z turned off.z&
[dim]General plugins unchanged.[/dim]u*   [green]âœ“[/green] Memory provider: [bold]r'   z[/bold]  Context engine: [bold]z[/bold]z/[dim]Changes take effect on next session.[/dim])rE   rœ   r�   r€   ÚlenÚKEY_UPrù   ÚKEY_DOWNÚ	KEY_NPAGEÚ	KEY_PPAGEÚKEY_HOMEÚKEY_ENDÚwrapperÚhermes_cli.plugins_admissionr  rš   rj   r   r+   r4   )rk   rt   rz   r{   r�   r|   ro   r`   r�   r˜   Úmover™   r  r  r”   r•   Úexcrœ   rÇ   rî   rà   rÂ   rÑ   r’   rì   rí   r   rß   r¥   s   f&f&&f&$         @@@@@@@@@@@@r   rl   rl   ˜   sF  ÿþ€ ç:Ü�Ó!€FÜ! +Ó.´°J³Ð€Iˆ|Ø˜lÕ*€KØÐð �m‰mœS ›XÐ&Ô(JÐKØ�o‰oœs 3›xÐ(Ô*LÐMØ×Ñ¤ C£Ð)Ô+SÐTØ×Ñ¤ C£Ð)Ñ+EÐFØ�o‰oÐ¡Ð0Ø�n‰nÐÔ <Ð=ñ
õñ
‰JˆDó ˆCð 	Š	ñ ñ 	ñ
ó€Cõ/õOöf÷
ð ÷ ô ÷"$÷ $ðL ‡N�N�5ÔÙ„Må=ð	Ü 9¸+ÀvÈxØJYô![Ñˆ	÷ —JØ�‰Ø7¼¸I»Ð7GÀ|ÔTWÐXbÓTcÐSdÐdpÐqõ	sà	�QŒØ�‰Ð?Ô@ßØ�‰Ø;¼C»E×<^Ñ<^Ó<`×<nÐ<nÐdnÐ;oð p%Ü%(£U×%FÑ%FÓ%HÐ$IÈðRô	Sð �1„}×)Ø�‰ÐGÔHØ‡M�M†Oùô}øðX ô Ø�‰ÐLÈSÈEÐRÔSØ�‰ðDô	
õ 	ûðús   ÃH8ÅH? È?I6É%I1É1I6c          
     óà  € ^ RI HpHp \        V! RVP                  4      4       V '       Ed'   \        V4      p	\        V! RVP                  4      4       \        V! RVP                  4      4        \        V4       F<  w  r«W©9   d   V! RVP                  4      MRp\        RV RV
^,           R	 R
V 24       K>  	  \        4         \        V! RVP                  4      4      P                  4       pV'       g   MK\        V4      ^,
          p^ Tu;8:  d   \        V 4      8  d   M MV	P                  V04       \        4        KÕ  \#        W	W2VR7       V'       dÐ   \        V! RVP                  4      4       \        V4       F&  w  pw  ppp\        RV^,            R
V RV R24       K(  	  \        4         \        V! RVP                  4      4      P                  4       pV'       dB   \        V4      ^,
          p^ Tu;8:  d   \        V4      8  d   M MWO,          ^,          ! 4        \        4        R#   \        \        \         3 d     R# i ; i  \        \        \         3 d     LAi ; i)z1Text-based fallback for the composite plugins UI.)ÚColorsÚcolorz

  Pluginsz
  General Pluginsz&  Toggle by number, Enter to confirm.
u   [âœ“]z[ ]rä   rÊ   z>2z. z"  Toggle # (or Enter to confirm): Nr_   z
  Provider Pluginsz [Ú]z"  Configure # (or Enter to skip): )Úhermes_cli.colorsr  r  rj   ÚYELLOWr€   ÚDIMrH   ÚGREENÚinputÚstripÚintr  rû   Ú
ValueErrorÚKeyboardInterruptÚEOFErrorÚ_save_plugin_selection_fallback)rt   rz   r{   r�   r|   ro   r`   r  r  r’   r?   ÚlabelÚmarkerÚvalrÎ   rÚ   rÛ   rê   rë   s   &&&&&&$            r   rn   rn      s÷  € ç/Ü	‰%�˜vŸ}™}Ó
-Ô.ß€{Ü�_Ó%ˆÜ‰eÐ)¨6¯=©=Ó9Ô:Ü‰eÐ=¸v¿z¹zÓJÔKØÜ% mÖ4‘�Ø<=¼K™˜z¨6¯<©<Ô8ÈU�Ü˜˜6˜( ! A¨¥E¨" :¨R°¨wÐ7Ö8ñ 5ô ŒGðÜ™EÐ"FÈÏ
É
ÓSÓT×ZÑZÓ\�ßØÜ˜#“h •l�Ø˜Ö.œc +Ó.×.Ø×6Ñ6¸°uÔ=ô ŽGÜ'¨¸XÐhwÕxçÜ‰eÐ*¨F¯M©MÓ:Ô;Ü4=¸jÖ4IÑ0ˆBÑ0�˜;¨Ü�B�r˜A•v�h˜b  
¨"¨[¨M¸Ð;Ö<ñ 5JäŒð	Ü™ÐBÀFÇJÁJÓOÓP×VÑVÓXˆCßÜ˜“X •\�Ø˜Ö,œS ›_×,Ø•N 1Ö%Ô'ô 
†Gøô% Ô 1´8Ð<ô Úðûô  Ô-¬xÐ8ô 	Ùð	ús7   Ã2H7 Ã;,H7 Ä(H7 Æ8AI ÈI È7IÉIÉI-É,I-c               ó   € V ^8„  d   QhRR/# r[   r   )r   s   "r   r   r   I  s   € ÷ Iñ IÐhlñ Ir	   c               óŒ   € ^ RI Hp  \        WW#VR7       R#   T d%   p\        RT 24       \        R4        Rp?R# Rp?ii ; i)zDThe text fallback's save: same admission authority, refusal printed.r  r_   z'  Plugin selection refused, not saved: z7  config.yaml and the active environment are unchanged.N)r  r  rš   rj   )rt   r’   r�   r“   r`   r  r  s   &&&&$  r   r  r  I  sF   € å=ðIÜ! +°xÐZi×jøØô IÜÐ7¸°uÐ=Ô>ÜÐG×HÒHûðIús   ˆ ˜AŸ>¾A)Ú__doc__Ú
__future__r   rV   Úloggingrg   Ú	getLoggerÚ__name__r�   r   r   r&   rU   rR   rY   r}   rf   rš   rl   rn   r  r   r	   r   Ú<module>r)     sÈ   ðñõ #ã Û Û 
à	×	Ò	˜8Ó	$€òõõ!ð0 ˜
 BÑ(TÙ)Ñ+SðUà�| \Ñ3^Ù.Ñ0WðYðÐ õõ*võ
Qõ<rð!ÐY]÷ !ð2Eð  ~Bô EðP&Ð{ô &ðRIÐ_c÷ Iñ Ir	   