ó
    |¤jgo  ã                  óî   • S r SSKJr  SSKrSSKrSSKJr  SSKJr  SSK	J
r
  \" 5       rSS jrSS jrSS	 jrSS
 jrSS jrSS jrSS jrSSS jjrSSS jjrSS jrSSS jjrSS jrSS jrSS jrg)zJConfiguration-related command handlers (privacy, theme, directives,
rule).é    )ÚannotationsN)ÚConsole)ÚTHEME_PRESETS)ÚConfigc                ó   ^• U R                  5       R                  5       nU4S jn[        U5      S:  a  U" 5         gUS   R                  5       nUS:X  Ga  STl        TR                  5         SSKJn  U" 5       R                  S5        SS	K	J
n  SS
KJn  U" 5       nUR                  5        V	s/ s H0  o™R                  R                  S5      (       d  M$  U	R                  PM2     n
n	U
 H  nUR!                  U5        M     ["        R%                  S5        ["        R%                  S5        U(       d  U
(       a%  ["        R%                  SU[        U
5      -    S35        ["        R%                  S5        gUS:X  a\  STl        TR                  5         SSKJn  U" 5       R                  S5        SSKJn  SSK	Jn  U" TUS9  ["        R%                  S5        gUS:X  a  U" 5         g["        R%                  S5        gs  sn	f )zManage privacy mode.c                 ó,  >• TR                   (       a  SOSn [        R                  SU  35        TR                   (       aU  [        R                  S5        [        R                  S5        [        R                  S5        [        R                  S5        g g )Nu   ðŸ”’ Enabledu   ðŸ”“ Disabledz[bold]Privacy mode:[/bold] uM     [dim]âœ“ Cloud capabilities disabled (profile, kb, cloud memory, mcp)[/dim]u.     [dim]âœ“ Scheduled tasks (cron) paused[/dim]uH     [dim]âœ“ Audit log redacted (tool args and user input truncated)[/dim]uf     [yellow]âš  LLM API calls are uncontrolled; conversation content is still sent to the model[/yellow])Úprivacy_modeÚconsoleÚprint)ÚstatusÚconfigs    €Ú°C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\dashscope/acli/cli/handlers_config.pyÚ_print_statusÚ._handle_privacy_command.<locals>._print_status   sy   ø€ Ø#)×#6×#6‘¸OˆÜ�‰Ð3°F°8Ð<Ô=Ø××Ü�M‰Mð9ôô �M‰MÐJÔKÜ�M‰Mð#ôô �M‰MðKõð ó    é   Né   ÚonTr   )Úget_audit_logger)Ú!unregister_cloud_capability_tools)ÚregistryÚmcp_u'   [green]âœ“ Privacy mode enabled[/green]uI     [dim]Cloud capabilities disabled Â· cron paused Â· audit redacted[/dim]z  [dim]Revoked z cloud tools[/dim]z3  [yellow]Note: LLM API calls uncontrolled[/yellow]ÚoffF)Ú_connect_mcp)Úregister_platform_tools)Úconnect_mcp_fnu(   [green]âœ“ Privacy mode disabled[/green]r   z*[dim]Usage: /privacy [on|off|status][/dim])ÚstripÚsplitÚlenÚlowerr	   Úsave_workspaceÚdashscope.acli.auditr   Úset_privacy_modeÚdashscope.acli.tools.platformr   Údashscope.acli.tools.registryr   Ú
list_toolsÚnameÚ
startswithÚ
unregisterr
   r   Údashscope.acli.cli.mcpr   r   )Úcmdr   Úpartsr   Úsubr   r   r   ÚremovedÚtÚ	mcp_namesr'   r   r   s    `            r   Ú_handle_privacy_commandr1      s¨  ø€ à�I‰I‹K×ÑÓ€Eõô$ ˆ5ƒz�Aƒ~ÙŒØà
�‰(�.‰.Ó
€Cà
ˆd„{Ø"ˆÔØ×ÑÔÝ9áÓ×+Ñ+¨DÔ1õ	
õ 	;á3Ó5ˆà$×/Ñ/Ô1ó
Ú1�q·V±V×5FÑ5FÀv×5N‹FˆA�FŒFÑ1ð 	ð 
ó ˆDØ×Ñ Ö%ñ ä�‰Ð?Ô@Ü�‰ð#ô	
ö –iÜ�M‰MØ! '¬C°	«NÑ":Ð!;ð <$ð %ôô 	�‰ÐKÔLØà
ˆeƒ|Ø#ˆÔØ×ÑÔÝ9áÓ×+Ñ+¨EÔ2õ 	8ÝIá °|ÒDÜ�‰Ð@ÔAØà
ˆhƒÙŒØä‡M�MÐ>Õ?ùòK
s   Â/#G;ÃG;c                ó¬  • SSK Jn  U R                  5       R                  5       n[	        U5      S:”  a  US   R                  5       OSnUS:X  aS  SUl        UR                  5         UR                  S5        [        R                  S5        [        R                  S5        g	US
:X  a>  SUl        UR                  5         UR                  S5        [        R                  S5        g	US:X  aT  UR                  (       a  SOSn[        R                  SU 35        UR                  (       a  [        R                  S5        g	[        R                  S5        g	)zIToggle debug mode: record full LLM request payloads in the session
trace.r   )Údebuglogr   r   r   Tu%   [green]âœ“ Debug mode enabled[/green]zV  [dim]Full prompts will be recorded to the session trace (/log, /trace to view)[/dim]Nr   Fu&   [green]âœ“ Debug mode disabled[/green]ÚEnabledÚDisabledz[bold]Debug mode:[/bold] zd  [dim]Full prompts of every LLM call are recorded to the session trace (/log, /trace to view)[/dim]z([dim]Usage: /debug [on|off|status][/dim])Údashscope.aclir3   r   r   r   r    Údebugr!   Úset_debug_enabledr
   r   )r+   r   r3   r,   r-   r   s         r   Ú_handle_debug_commandr9   f   s  € õ (à�I‰I‹K×ÑÓ€EÜ! %›j¨1›nˆ%�‰(�.‰.Ô
°(€Cà
ˆdƒ{ØˆŒØ×ÑÔØ×"Ñ" 4Ô(Ü�‰Ð=Ô>Ü�‰ð+ô	
ð 	à
ˆeƒ|ØˆŒØ×ÑÔØ×"Ñ" 5Ô)Ü�‰Ð>Ô?Øà
ˆhƒØ$ŸlŸl‘°
ˆÜ�‰Ð1°&°Ð:Ô;Ø�<�<Ü�M‰MðAôð 	ä‡M�MÐ<Õ=r   c               óä  • / nU  HØ  nUR                  SS5      nUR                  S5      nUc  SnO/[        U[        5      (       d  [        R                  " US[        S9nU(       d  [        U5      S:”  a  US S S-   nUR                  S	U S
U 35        UR                  S5      nU(       d  Mª  [        R                  " US[        S9nUR                  SU 35        MÚ     SR                  U5      $ )NÚroleÚ?ÚcontentÚ F©Úensure_asciiÚdefaultiô  u    â€¦(truncated)z
[z]
Ú
tool_callsz  tool_calls: Ú
)ÚgetÚ
isinstanceÚstrÚjsonÚdumpsr   ÚappendÚjoin)ÚmsgsÚfullÚlinesÚmr;   r=   rB   Úcallss           r   Ú_messages_textrP   �   sÙ   € Ø€EÛˆØ�u‰u�V˜SÓ!ˆØ—%‘%˜	Ó"ˆØ‰?Ø‰GÜ˜G¤S×)Ñ)Ü—j’j °uÄcÑJˆGÞœ˜G› sÓ*Ø˜d˜s�mÐ&7Ñ7ˆGØ�‰�s˜4˜&  G 9Ð-Ô.Ø—U‘U˜<Ó(ˆ
ßˆ:Ü—J’J˜z¸ÄsÑKˆEØ�L‰L˜>¨%¨Ð1Ö2ñ ð �9‰9�UÓÐr   c                ó¬  • [        U [        5      (       d  g/ nU R                  S5      =(       d    U R                  S5      nU(       a8  SU 3nU R                  S5      (       a  USU S    S3-  nUR                  U5        U R                  S5      =(       d    U R                  S	5      nU(       a  UR                  S
U 35        SR	                  U5      $ )Nr>   Úinput_tokensÚprompt_tokensu   â†‘Úcached_tokensz (z cached)Úoutput_tokensÚcompletion_tokensu   â†“Ú )rE   ÚdictrD   rI   rJ   )Úusager,   ÚinpÚsÚouts        r   Ú_usage_textr]       s´   € Ü�eœT×"Ñ"ØØ€EØ
�)‰)�NÓ
#×
A u§y¡y°Ó'A€CÞ
Ø�#�ˆKˆØ�9‰9�_×%Ñ%Ø�2�e˜OÑ,Ð-¨XÐ6Ñ6ˆAØ�‰�QŒØ
�)‰)�OÓ
$×
F¨¯	©	Ð2EÓ(F€CÞ
Ø�‰�s˜3˜%�[Ô!Ø�8‰8�E‹?Ðr   c          
     ó”  • [        U R                  SS5      5      SS R                  SS5      nU R                  SS5      nU R                  S	/ 5      nS
U SU SU S[        U5       3nU R                  SS5      nU(       a  USUS-  S S3-  n[	        U R                  S5      5      nU(       a  USU 3-  nUS-  nU[        XRS9-   $ )zERender one llm_call trace event; truncate message bodies unless full.Ú	timestampr>   Né   ÚTrW   Úmodelr<   Úmessagesõ   â”�â”�â”� #z  model=z  messages=Úduration_msr   ú  éè  ú.1fr[   rY   õ
    â”�â”�â”�©rL   )rF   rD   Úreplacer   r]   rP   )	ÚrecÚidxrL   Útsrb   rK   ÚheaderÚdurrY   s	            r   Ú_log_record_textrq   °   sÚ   € ä	ˆS�W‰W�[ "Ó%Ó	& s¨Ð	+×	3Ñ	3°C¸Ó	=€BØ�G‰G�G˜SÓ!€EØ�7‰7�:˜rÓ"€DØ˜3˜%˜q   H¨U¨G°;¼sÀ4»y¸kÐJ€FØ
�'‰'�- Ó
#€CÞ
Ø�B�s˜T‘z #Ð& aÐ(Ñ(ˆÜ˜Ÿ™ Ó(Ó)€EÞØ�B�u�g�,ÑˆØ
ˆlÑ€FØ”N 4Ñ3Ñ3Ð3r   c                 ó„   • SSK n [        R                  U R                  L =(       a    U R                  R	                  5       $ )z«True only when the module console writes to a real terminal (CLI mode).

In the TUI the console is captured into a buffer, and a pager would fight
Textual for the screen.
r   N)Úsysr
   ÚfileÚstdoutÚisatty)rs   s    r   Ú	_can_pagerw   À   s,   € ó ä�<‰<˜3Ÿ:™:Ð%×=¨#¯*©*×*;Ñ*;Ó*=Ð=r   c                óê   • SSK n UR                  SS/U R                  S5      UR                  SS9nUb  UR                  S:w  a  [        R                  U SSS9  gg! [        [
        4 a    Sn N>f = f)	u  Page text through less (scroll â†‘/â†“, search with /); print inline
if unavailable.

rich's console.pager() routes through pydoc, whose no-arg `(less)` probe
fails on macOS ("Missing filename") and degrades to a plain dump â€” so
invoke less directly on piped stdin instead.
r   NÚlessz-Rúutf-8F)ÚinputÚstderrÚcheck)ÚmarkupÚ	highlight)	Ú
subprocessÚrunÚencodeÚDEVNULLÚFileNotFoundErrorÚOSErrorÚ
returncoder
   r   )Útextr€   Úprocs      r   Ú
_page_textr‰   Ë   s‚   € ó ðØ�~‰~Ø�TˆNØ—+‘+˜gÓ&Ø×%Ñ%Øð	 ð 
ˆð �|�t—‘¨!Ó+Ü�‰�d 5°EˆÒ:ð ,øô œwÐ'ó ØŠðús   †-A ÁA2Á1A2c                óÆ   • U b  [        U SS 5      OS nUc  / $ [        UR                  5       5      nUb(  U Vs/ s H  oDR                  S5      U:X  d  M  UPM     nnU$ s  snf )NÚtrace_loggerÚevent)ÚgetattrÚlistÚiter_eventsrD   )ÚagentÚ
event_typeÚtracerÚeventsÚes        r   Ú_trace_eventsr•   â   sk   € à05Ñ0AŒ��~ tÔ,Àtð ð �~Øˆ	Ü�&×$Ñ$Ó&Ó'€FØÑÙ#ÓDšV˜§u¡u¨W£~¸Ñ'C—!™VˆÐDØ€Mùò Es   ¸AÁAc           
     ó  • U R                  5       R                  SS5      n[        U5      S:”  a  US   OSnUb  [        USS5      OSnUS:X  a)  Ub  UR	                  5         [
        R                  S5        g[        US5       Vs/ s H  oUR                  S	5      (       d  M  UPM     nnUS
:X  a¤  [        U5      S:”  a  US   R                  5       OSnU(       d  [
        R                  S5        gUR                  5       nU Vs/ s H3  nU[        R                  " US[        S9R                  5       ;   d  M1  UPM5     nnSU S[        U5       S3n	OlUS:X  aP  Sn
[        U5      S:”  a*   [        US   R                  5       5      n
U
S::  a  [        e Xj* S nS[        U5       S3n	O[
        R                  S5        gU(       d  [
        R                  S5        g[        USS5      n U(       a  UR                  5       R                   S-  OSn[%        5       (       a9  U	 SU SU S3SR'                  S [)        U5       5       5      -   n[+        U5        g[
        R                  S U	 S!U SU S"35        [)        U5       H$  u  pï[
        R                  [-        XþS-   SS#9SS$9  M&     [
        R                  S%5        gs  snf s  snf ! [         a    [
        R                  S5         gf = f! ["         a    Sn Níf = f)&zÏView recorded LLM request prompts: /log [tail [N] | search <kw> |
clear].

Data source: llm_call trace events that carry the full message payload,
which are only recorded while debug mode is on (/debug on).
Nr   r   Útailr‹   Úclearõ(   [green]âœ“ Session trace cleared[/green]Úllm_callrc   Úsearchr>   z-[yellow]Usage: /log search <keyword>[/yellow]Fr?   zLLM request search "ú" (ú hits)é   r   z<[yellow]Usage: /log tail [N] (N = positive integer)[/yellow]úLast z LLM requestsz<[dim]Usage: /log [tail [N] | search <keyword> | clear][/dim]zC[dim]No full prompts recorded yet (/debug on, then ask again)[/dim]Ú
trace_fileé   ú  (ú, ú KB)

ú

c              3  ó@   #   • U  H  u  p[        X!S -   SS9v •  M     g7f©r   Trj   N)rq   )Ú.0ÚiÚrs      r   Ú	<genexpr>Ú&_handle_log_command.<locals>.<genexpr>3  s#   é € ð E
Ú>O±d°aÔ˜Q A¡¨DÖ1Ò>Oùó   ‚ú[bold]ú[/bold] [dim](ú
 KB)[/dim]rj   ©r~   z8[dim]Content truncated; page full logs in CLI mode[/dim])r   r   r   r�   r˜   r
   r   r•   rD   r    rG   rH   rF   ÚintÚ
ValueErrorÚstatÚst_sizer…   rw   rJ   Ú	enumerater‰   rq   )r+   r�   r,   r-   r’   r”   r“   ÚkeywordÚkwro   ÚlimitÚpathÚsize_kbr‡   r©   rª   s                   r   Ú_handle_log_commandr¼   î   sé  € ð �I‰I‹K×Ñ˜d AÓ&€EÜ˜%“j 1“nˆ%�Š(¨&€Cð 16Ñ0AŒ��~ tÔ,Àtð ð ˆgƒ~ØÑØ�L‰LŒNÜ�‰Ð@ÔAØä& u¨jÔ9ÓOÒ9�A¿U¹UÀ:×=N�aÑ9€FÐOà
ˆhƒÜ&)¨%£j°1£n�%˜‘(—.‘.Ô"¸"ˆÞÜ�M‰MÐIÔJØØ�]‰]‹_ˆñ ó
â�Ø”T—Z’Z °¼sÑC×IÑIÓKÑK÷ Ùð 	ð 
ð
 (¨ y°´C¸³K°=ÀÐG‰Ø	�‹ØˆÜˆu‹:˜‹>ð	Ü˜E !™HŸN™NÓ,Ó-�Ø˜A“:Ü$Ð$ð ð ˜˜�ˆØœ˜V›˜ ]Ð3‰ä�‰ØJô	
ð 	æÜ�‰ð0ô	
ð 	ä�6˜<¨Ó.€DðÞ15�$—)‘)“+×%Ñ%¨Ò-¸1ˆô ‡{�{Ø�˜˜T˜F " W I¨XÐ6¸¿¹ñ E
Ü>GÈÔ>OóE
ó :
ñ 
ˆô 	�4Õä�‰Ø�V�H˜N¨4¨&°°7°)¸:ÐFô	
ô ˜fÖ%‰DˆAÜ�M‰MÔ*¨1°!©e¸%Ñ@ÈˆMÓOñ &ä�‰ØFõ	
ùòw Pùò
øô ó Ü—‘ð6ôñ ðûô0 ó ØŠðús<   ÂKÂ#KÄ0KÄ:KÅ-(K Ç,&K1 ËK.Ë-K.Ë1L Ë?L c               ó@  • U R                  SS5      nSUS-  S S3nU R                  SS5      nUS	:X  GaL  S
U SU S3/nU R                  S5      (       a  UR                  SU S    35        UR                  SU R                  SS5       35        [        U R                  S5      5      nU(       a  UR                  U5        U R                  SS5      nU(       a  UR                  US-  S S35        U R                  S5      =(       d    / n	U	(       a3  SR                  S U	 5       5      n
U
(       a  UR                  SU
 35        SR                  U5      S-   nU R                  S5      nU(       a  U[	        XÂS9-   $ U$ US:X  aË  U R                  S5      (       a  SOSnU R                  SS5      n[
        R                  " U R                  S 0 5      S![        S"9nU(       d  [        U5      S#:”  a  US$S# S%-   nU R                  S&S'5      nU(       d  [        U5      S#:”  a  US$S# S%-   nS
U SU S(U R                  S)S5       S*U S+U S,U S-U 3$ US.:X  af  U R                  5        VVs0 s H  u  nnUS/;  d  M  UU_M     nnn[
        R                  " US![        S"9nS
U SU S0U R                  S1S5       S*U 3$ [
        R                  " U R                  5        VVs0 s H  u  nnUS/;  d  M  UU_M     snnS![        S"9nS
U SU SU S*U 3$ s  snnf s  snnf )2zERender one trace event compactly; full mode expands llm_call prompts.Ú
elapsed_msr   z[+rg   rh   zs]rŒ   r<   rš   rd   rW   z	 llm_callrb   zmodel=zmsgs=Úmessage_countrY   re   r[   rB   r£   c              3  ó†   #   • U  H7  n[        U[        5      (       d  M  [        UR                  S S5      5      v •  M9     g7f)r'   r<   N)rE   rX   rF   rD   )r¨   r/   s     r   r«   Ú$_trace_event_text.<locals>.<genexpr>U  s2   é € ð Ú14¨A¼
À1Äd×8KÓ'”�A—E‘E˜& #Ó&×'Ð'²ùs
   ‚AŸ"Au   â†’ rf   ri   rc   rj   Útool_executionÚsuccessu   âœ“u   âœ—Ú	argumentsFr?   éx   Nu    â€¦Úresult_previewr>   z tool Útoolu    Â· zms z	
  args: z
  result: Údecision)r_   r¾   rŒ   z
 decision Útype)
rD   rI   r]   rJ   rP   rG   rH   rF   r   Úitems)Úevrm   rL   ÚelapsedÚstamprŒ   r,   rY   rp   ÚtcsÚnamesro   rK   ÚokÚargsÚpreviewÚkÚvÚdetailsÚbodys                       r   Ú_trace_event_textr×   B  sG  € à�f‰f�\ 1Ó%€GØ�˜4‘ Ð$ BÐ'€EØ�F‰F�7˜CÓ €Eà�
ÔØ˜s˜e 1 U G¨9Ð5Ð6ˆØ�6‰6�'�?‰?Ø�L‰L˜6 " W¡+ Ð/Ô0Ø�‰�u˜RŸV™V O°QÓ7Ð8Ð9Ô:Ü˜BŸF™F 7›OÓ,ˆÞØ�L‰L˜ÔØ�f‰f�] AÓ&ˆÞØ�L‰L˜C $™J sÐ+¨1Ð-Ô.Ø�f‰f�\Ó"×( bˆÞØ—I‘Iñ Ù14óó ˆEö Ø—‘˜t E 7˜^Ô,Ø—‘˜5Ó! LÑ0ˆØ�v‰v�jÓ!ˆÞØœN¨4Ñ;Ñ;Ð;ØˆàÐ Ó Ø—f‘f˜Y×'Ñ'‰U¨UˆØ�f‰f�] AÓ&ˆÜ�zŠzØ�F‰F�; Ó#ØÜñ
ˆö
 œ˜D›	 C›Ø˜˜�: Ñ&ˆDØ—&‘&Ð)¨2Ó.ˆÞœ˜G› sÓ*Ø˜d˜s�m fÑ,ˆGà˜#˜˜a ˜w f¨R¯V©V°F¸CÓ-@Ð,AÀÀcÀUÈ#ÈbÈTð RØ�f˜L¨¨	ð3ð	
ð
 �
Óð Ÿ™œ
ô
â"‘��1ØÐ<Ñ<ó ˆAˆqŠDÙ"ð 	ñ 
ô
 �zŠz˜'°¼sÑCˆØ˜S˜E  5 '¨°B·F±F¸6À3Ó4GÐ3HÈÈTÈFÐSÐSä�:Š:ð Ÿ™œ
ô	
â"‘��1ØÐ<Ñ<ó ˆAˆqŠDÙ"ò	
ð
 Üñ€Dð ˜˜˜Q˜u˜g Q u g¨T°$°Ð8Ð8ùó#
ùó	
s   É,LÉ=LË"L
Ë3L
c           	     ó:  • U R                  5       R                  SS5      n[        U5      S:”  a  US   OSnUb  [        USS5      OSnUS:X  a)  Ub  UR	                  5         [
        R                  S5        gUS:X  aj  [        U5      S:”  a  US   R                  5       OS	nU(       d  [
        R                  S
5        gUb  UR                  U5      O/ nSU S[        U5       S3nO}US:X  aa  Sn[        U5      S:”  a*   [        US   R                  5       5      nUS::  a  [        e Ub  UR                  U5      O/ nS[        U5       S3nO[
        R                  S5        gU(       d  [
        R                  S5        g[        USS5      n	 U	(       a  U	R                  5       R                  S-  OSn
[        5       (       a9  U SU	 SU
 S3SR                  S [!        U5       5       5      -   n[#        U5        g[
        R                  SU SU	 SU
 S35        [!        U5       H$  u  pÍ[
        R                  [%        XÜS-   SS 9SS!9  M&     [
        R                  S"5        g! [         a    [
        R                  S5         gf = f! [         a    Sn
 Nãf = f)#zÎView the session execution trace: /trace [tail [N] | search <kw> |
clear].

Lightweight events (LLM call latency/usage, tool call latency,
decision points) are always recorded; full prompts need /debug on.
Nr   r   r—   r‹   r˜   r™   r›   r>   z/[yellow]Usage: /trace search <keyword>[/yellow]zTrace search "rœ   r�   é   r   z>[yellow]Usage: /trace tail [N] (N = positive integer)[/yellow]rŸ   z trace eventsz>[dim]Usage: /trace [tail [N] | search <keyword> | clear][/dim]z[[dim]No trace records yet (recorded automatically once this conversation makes calls)[/dim]r    r¡   r¢   r£   r¤   r¥   c              3  ó@   #   • U  H  u  p[        X!S -   SS9v •  M     g7fr§   )r×   )r¨   r©   r”   s      r   r«   Ú(_handle_trace_command.<locals>.<genexpr>Æ  s%   é € ð E
â)‘�ô ˜a Q¡¨TÖ2Ú)ùr­   r®   r¯   r°   Frj   r±   z9[dim]Content truncated; page full trace in CLI mode[/dim])r   r   r   r�   r˜   r
   r   Úsearch_eventsr²   r³   Útail_eventsr´   rµ   r…   rw   rJ   r¶   r‰   r×   )r+   r�   r,   r-   r’   r·   r“   ro   r¹   rº   r»   r‡   r©   r”   s                 r   Ú_handle_trace_commandrÞ   ‡  s˜  € ð �I‰I‹K×Ñ˜d AÓ&€EÜ˜%“j 1“nˆ%�Š(¨&€Cð 16Ñ0AŒ��~ tÔ,Àtð ð ˆgƒ~ØÑØ�L‰LŒNÜ�‰Ð@ÔAØà
ˆhƒÜ&)¨%£j°1£n�%˜‘(—.‘.Ô"¸"ˆÞÜ�M‰MÐKÔLØØ28Ñ2D�×%Ñ% gÔ.È"ˆØ! ' ¨#¬c°&«k¨]¸&ÐA‰Ø	�‹ØˆÜˆu‹:˜‹>ð	Ü˜E !™HŸN™NÓ,Ó-�Ø˜A“:Ü$Ð$ð ð /5Ñ.@�×#Ñ# EÔ*ÀbˆØœ˜V›˜ ]Ð3‰ä�‰ðô	
ð 	æÜ�‰ð3ô	
ð 	ä�6˜<¨Ó.€DðÞ15�$—)‘)“+×%Ñ%¨Ò-¸1ˆô ‡{�{Ø�˜˜T˜F " W I¨XÐ6¸¿¹ñ E
ä! &Ô)óE
ó :
ñ 
ˆô 	�4Õä�‰Ø�V�H˜N¨4¨&°°7°)¸:ÐFô	
ô ˜fÖ%‰DˆAÜ�M‰MÜ! !¨¡U°Ñ7Øð ó ñ &ô
 	�‰ØGõ	
øôW ó Ü—‘ð6ôñ ðûô2 ó ØŠðús$   Ä (I& Æ&J É&JÊJÊJÊJc                óþ  ^• U R                  5       R                  SS9n[        U5      S:  a’  [        U4S j[        R
                  " 5        5       S5      n[        R                  SU 35        [        R                  SSR                  [        R                  " 5       5       S35        [        R                  S	5        g
US   R                  5       nUS:X  a}  [        U4S j[        R
                  " 5        5       S5      n[        R                  SU 35        [        R                  SSR                  [        R                  " 5       5       S35        g
US:X  aë  [        U5      S:”  a  US   R                  5       OSnU(       a
  U[        ;  aU  [        R                  SU S35        [        R                  SSR                  [        R                  " 5       5       S35        g
[        R                  " [        U   5      Tl        TR                  5         [        R                  SU S35        [        R                  S5        g
UnU[        ;   aa  [        R                  " [        U   5      Tl        TR                  5         [        R                  SU S35        [        R                  S5        g
[        U5      S:¼  ag  UTR                  ;   aW  US   TR                  U'   TR                  5         [        R                  SU SUS    S35        [        R                  S5        g
[        R                  SU S35        [        R                  SSR                  [        R                  " 5       5       S35        g
)zManage UI theme settings.r   ©Úmaxsplitc              3  óP   >#   • U  H  u  pUTR                   :X  d  M  Uv •  M     g 7f©N©Útheme©r¨   r'   Úpresetr   s      €r   r«   Ú(_handle_theme_command.<locals>.<genexpr>Þ  ó(   øé € ð â$9‘L�DØ˜VŸ\™\Ñ)÷ ‘Ú$9ùó   ƒ&�	&Úcustomz[bold]Current theme:[/bold] z[dim]Available presets: r£   ú[/dim]zX[dim]Usage: /theme list | /theme set <name> | /theme <name> | /theme <key> <color>[/dim]Nr   rŽ   c              3  óP   >#   • U  H  u  pUTR                   :X  d  M  Uv •  M     g 7frã   rä   ræ   s      €r   r«   rè   ô  ré   rê   Úsetr>   z[red]Unknown theme: ú[/red]z[dim]Available: u   [green]âœ“ Theme switched to: ú[/green]z%[dim]Takes effect after restart[/dim]rž   u   [green]âœ“ Set z = z![red]Unknown theme or attribute: )r   r   r   Únextr   rÊ   r
   r   rJ   Úkeysr    ÚcopyÚdeepcopyrå   r!   )r+   r   r,   Úcurrent_namer-   Ú
theme_names    `    r   Ú_handle_theme_commandr÷   Ù  så  ø€ à�I‰I‹K×Ñ qÐÐ)€EÜ
ˆ5ƒz�Aƒ~Üôä$1×$7Ò$7Ô$9óð
 ó
ˆô 	�‰Ð4°\°NÐCÔDÜ�‰Ø&Ø�y‰yœ×+Ò+Ó-Ó.Ð/¨vð7ô	
ô 	�‰ð2ô	
ð 	à
�‰(�.‰.Ó
€Cà
ˆfƒ}Üôä$1×$7Ò$7Ô$9óð
 ó
ˆô 	�‰Ð4°\°NÐCÔDÜ�‰Ø&Ø�y‰yœ×+Ò+Ó-Ó.Ð/¨vð7ô	
ð 	à
ˆeƒ|Ü),¨U«°a«�U˜1‘X—^‘^Ô%¸Rˆ
Þ˜Z¬}Ó<Ü�M‰MÐ0°°¸FÐCÔDÜ�M‰MØ" t§y¡y´×1CÒ1CÓ1EÓ'FÐ&GÀvÐNôð ô —}’}¤]°:Ñ%>Ó?ˆŒØ×ÑÔÜ�‰Ð6°z°lÀ(ÐKÔLÜ�‰Ð=Ô>Øð €JØ”]Ó"Ü—}’}¤]°:Ñ%>Ó?ˆŒØ×ÑÔÜ�‰Ð6°z°lÀ(ÐKÔLÜ�‰Ð=Ô>Øô ˆ5ƒz�Qƒ˜3 &§,¡,Ó.Ø! !™Hˆ�‰�SÑØ×ÑÔÜ�‰˜¨ u¨C°°a±¨z¸ÐBÔCÜ�‰Ð=Ô>Øä‡M�MÐ5°j°\ÀÐHÔIÜ‡M�MØ
" t§y¡y´×1CÒ1CÓ1EÓ'FÐ&GÀvÐNõr   c                óZ  • U R                  5       R                  SS9n[        U5      S:  aŒ  UR                  (       d  [        R                  S5        OO[        R                  S5        [        UR                  S5       H   u  p4[        R                  SU SU 35        M"     [        R                  S5        g	US   R                  5       nUR                  S
5      (       aˆ  USS	 R                  5       nU(       d  [        R                  S5        g	UR                  R                  U5        UR                  5         [        R                  S[        UR                  5       S35        g	UR                  S5      (       a¦   [        USS	 R                  5       5      S-
  nSUs=::  a  [        UR                  5      :  aH  O  OEUR                  R                  U5      nUR                  5         [        R                  SU S35        g	[        R                  SUS-    S35         g	US:X  aY  [        UR                  5      n	UR                  R                  5         UR                  5         [        R                  SU	 S35        g	US:X  a‡  SSKJn
  U
" S5      nU(       d  [        R                  S5        g	[        R                  S5        U H@  n[        R                  SUS     S!US"    35        [        R                  S#US$    S%35        MB     g	UR                  S&5      (       aZ  US'S	 R                  5       nSS(KJn  U" XÑ5      (       a  [        R                  S)U S*35        g	[        R                  S+U S,35        g	UR                  S-5      (       aZ  US'S	 R                  5       nSS.KJn  U" U5      (       a  [        R                  S/U S035        g	[        R                  S+U S,35        g	[        R                  S15        g	! [         a    [        R                  S5         g	f = f)2z=Manage custom directives (rules injected into system prompt).r   rà   r   z#[dim]No custom directives yet[/dim]z[bold]Custom directives:[/bold]rf   ú. ud  
[dim]Usage:
  /directives add <text>       â€” add a directive
  /directives rm <num>         â€” remove a directive
  /directives clear            â€” clear all directives
  /directives proposals        â€” view auto-learned proposals
  /directives accept <id>      â€” accept proposal as a rule
  /directives reject <id>      â€” reject a proposal[/dim]Núadd é   z([red]Please provide directive text[/red]u   [green]âœ“ Directive added (z total)[/green]úrm rž   r   u   [green]âœ“ Removed: rð   ú[red]Invalid number: rï   ú([red]Please provide a valid number[/red]r˜   u   [green]âœ“ Cleared z directives[/green]Ú	proposals)Úlist_proposed_directivesÚpendingz([dim]No auto-learned proposals yet[/dim]z([bold]Behavior pattern proposals:[/bold]z  [Úidz] Ú	directivez	    [dim]Ú	rationalerì   zaccept é   )Úaccept_directiveu   [green]âœ“ Accepted proposal z as a rule[/green]z[red]Proposal z# not found or already handled[/red]zreject )Úreject_directiveu   [yellow]âœ— Rejected proposal z	[/yellow]zD[dim]Usage: /directives [add|rm|clear|proposals|accept|reject][/dim])r   r   r   Úuser_directivesr
   r   r¶   r(   rI   r!   r²   Úpopr³   r˜   Ú)dashscope.acli.memory.directives_learningr   r  r  )r+   r   r,   r©   r  r-   r‡   rm   r.   Úcountr   rÿ   ÚpÚproposal_idr  r  s                   r   Ú_handle_directives_commandr  )  s¹  € à�I‰I‹K×Ñ qÐÐ)€EÜ
ˆ5ƒz�Aƒ~Ø×%×%Ü�M‰MÐ?Õ@ä�M‰MÐ;Ô<Ü )¨&×*@Ñ*@À!Ö D‘�Ü—‘  1 # R¨	 {Ð3Ö4ñ !Eä�‰ðIô	
ð 	à
�‰(�.‰.Ó
€Cà
‡~�~�f×ÑØ�1�2ˆw�}‰}‹ˆÞÜ�M‰MÐDÔEØØ×Ñ×%Ñ% dÔ+Ø×ÑÔÜ�‰ðÜ�F×*Ñ*Ó+Ð,¨Oð=ô	
ð 	à
‡~�~�e×Ñð		FÜ�c˜!˜"�g—m‘m“oÓ&¨Ñ*ˆCØ�CÕ5œ#˜f×4Ñ4Ó5Ö5Ø ×0Ñ0×4Ñ4°SÓ9�Ø×%Ñ%Ô'Ü—‘Ð 4°W°I¸XÐFÔGð
 	ô —‘Ð 5°c¸A±g°Y¸fÐEÕFð 	à
ˆgƒ~Ü�F×*Ñ*Ó+ˆØ×Ñ×$Ñ$Ô&Ø×ÑÔÜ�‰Ð+¨E¨7Ð2EÐFÔGØà
ˆkÓõ	
ñ -¨YÓ7ˆ	ÞÜ�M‰MÐDÔEð 	ô	 �M‰MÐDÔEÛ�Ü—‘  A d¡G 9¨B¨q°©~Ð.>Ð?Ô@Ü—‘ 	¨!¨K©.Ð)9¸Ð@ÖAñ ð 	à
‡~�~�i× Ñ Ø˜!˜"�g—m‘m“oˆÝNá˜K×0Ñ0Ü�M‰MØ/°¨}ð =$ð %ôð 	ô	 �M‰MØ   ð .(ð )ôð 	à
‡~�~�i× Ñ Ø˜!˜"�g—m‘m“oˆÝNá˜K×(Ñ(Ü�M‰MØ0°°¸YÐGôð 	ô	 �M‰MØ   ð .(ð )ôð 	ä‡M�Mð	7õøôs ó 	FÜ�M‰MÐDÕEØð	Fús   ÆBP ÈP ÐP*Ð)P*c                ó
  ^^^• SSK Jm  TS-  mU R                  5       R                  SS9nS:U4S jjmS;UU4S jjnU4S jn[	        U5      S	:  a  U" 5         [
        R                  S
5        gUS   R                  5       nUS:X  a  U" 5         gUR                  S5      (       am  USS R                  5       nU(       d  [
        R                  S5        gT" 5       nUR                  USS.5        U" U5        [
        R                  SU S35        gUS:X  a�  TR                  5       (       d   TR                  SSS9  TR                  SSS9  SSKnUR                  R                  SS5      n	UR                  U	 ST 35        [
        R                  S5        gUR                  S5      (       aÆ  USS R                  5       n
U
R                  SS9n[	        U5      S	:  a  [
        R                  S5        g [!        US   5      S-
  nUS   nT" 5       nUS:  d  U[	        U5      :¼  a  [
        R                  S!US-    S"35        gX×U   S#'   U" U5        [
        R                  S$US-    S%U S35        gUR                  S&5      (       a‡  US'S R                  5       n [!        U5      S-
  nT" 5       nUS:  d  U[	        U5      :¼  a  [
        R                  S!US-    S"35        gSX|   S('   U" U5        [
        R                  S)US-    S35        gUR                  S*5      (       a‡  US+S R                  5       n [!        U5      S-
  nT" 5       nUS:  d  U[	        U5      :¼  a  [
        R                  S!US-    S"35        gS,X|   S('   U" U5        [
        R                  S-US-    S35        gUS.:X  d3  UR                  S/5      (       d  US0:X  d  UR                  S15      (       Ga  T" 5       nU(       d  [
        R                  S25        gUR                  S/5      (       a  US'S R                  5       nO,UR                  S15      (       a  US3S R                  5       nOSnU(       d  [
        R                  S45        g [!        U5      S-
  nUS:  d  U[	        U5      :¼  a  [
        R                  S!US-    S"35        gUR%                  U5      nU" U5        [
        R                  S5UR                  S#S5       S35        gUS6:X  aQ  TR                  5       (       a&  TR'                  5         [
        R                  S75        g[
        R                  S85        g[
        R                  S95        g! ["         a    [
        R                  S 5         gf = f! ["         a    [
        R                  S 5         gf = f! ["         a    [
        R                  S 5         gf = f! ["         a    [
        R                  S 5         gf = f)<z+Manage workspace rules (.acli/rules.jsonl).r   )ÚWORKSPACE_DIRzrules.jsonlr   rà   c                 óh  >• TR                  5       (       d  / $ / n TR                  SS9R                  5        H[  nUR                  5       nU(       d  M   [        R
                  " U5      n[        U[        5      (       d  MJ  U R                  U5        M]     U $ ! [        R                   a     Mx  f = f)Nrz   ©Úencoding)
ÚexistsÚ	read_textÚ
splitlinesr   rG   ÚloadsÚJSONDecodeErrorrE   rX   rI   )ÚentriesÚlineÚentryÚ
rules_files      €r   Ú_load_entriesÚ+_handle_rule_command.<locals>._load_entriesœ  sž   ø€ Ø× Ñ ×"Ñ"ØˆIØ ˆØ×(Ñ(°'Ð(Ð:×EÑEÖGˆDØ—:‘:“<ˆDÞÙðÜŸ
š
 4Ó(�ô ˜%¤×&Ó&Ø—‘˜uÖ%ñ Hð ˆøô	 ×'Ñ'ó Úðús   ÁBÂB1Â0B1c                ór   >• TR                  SSS9  TR                  SR                  S U  5       5      SS9  g )NT©ÚparentsÚexist_okr>   c              3  óR   #   • U  H  n[         R                  " US S9S-   v •  M     g7f)F)r@   rC   N)rG   rH   )r¨   r”   s     r   r«   Ú>_handle_rule_command.<locals>._save_entries.<locals>.<genexpr>¯  s    é € ÐNÂgÀ”D—J’J˜q¨uÑ5¸Ö<Âgùs   ‚%'rz   r  )ÚmkdirÚ
write_textrJ   )r  r  r  s    €€r   Ú_save_entriesÚ+_handle_rule_command.<locals>._save_entries¬  s>   ø€ Ø×Ñ D°4ÐÑ8Ø×ÑØ�G‰GÑNÁgÓNÓNØð 	ò 	
r   c            	     ó8  >• T" 5       n U (       d  [         R                  S5        g [         R                  S5        [        U S5       HP  u  pUR                  SS5      nUR                  SS5      (       a  SOS	n[         R                  S
U SU SU 35        MR     g )Nz,[dim]No workspace rules configured yet[/dim]z[bold]Workspace rules:[/bold]r   r‡   r>   ÚenabledTu   [green]âœ“[/green]u   [dim]âœ—[/dim]rf   rW   rù   )r
   r   r¶   rD   )r  r©   r  r‡   r*  r  s        €r   Ú_print_rulesÚ*_handle_rule_command.<locals>._print_rules³  sŽ   ø€ Ù“/ˆÞÜ�M‰MÐHÔIØÜ�‰Ð5Ô6Ü! '¨1Ö-‰HˆAØ—9‘9˜V RÓ(ˆDð —9‘9˜Y¨×-Ñ-ñ %à%ð ô
 �M‰M˜B˜w˜i q¨¨¨2¨d¨VÐ4Ö5ò .r   r   u¨  
[dim]Usage:
  /rule list                 â€” list rules
  /rule add <text>           â€” add a rule
  /rule remove <num>         â€” remove a rule (alias: rm)
  /rule edit                 â€” open rules file in an editor
  /rule edit <num> <text>    â€” edit the given rule
  /rule enable <num>         â€” enable a rule
  /rule disable <num>        â€” disable a rule
  /rule clear                â€” clear all rules[/dim]NrŽ   rú   rû   z#[red]Please provide rule text[/red]T)r‡   r*  u   [green]âœ“ Rule added: rð   Úeditr   r>   rz   r  ÚEDITORÚnanorW   u%   [green]âœ“ Rules file updated[/green]zedit rÙ   z-[red]Usage: /rule edit <num> <new text>[/red]rþ   rý   rï   r‡   u   [green]âœ“ Updated rule #z: zenable r  r*  u   [green]âœ“ Enabled rule #zdisable é   Fu   [green]âœ“ Disabled rule #Úremovezremove Úrmrü   z[dim]No rules to remove[/dim]rž   zE[red]Please provide a number, e.g. /rule remove 1 or /rule rm 1[/red]u   [green]âœ“ Removed rule: r˜   u    [green]âœ“ Rules cleared[/green]z[dim]No rules to clear[/dim]zY[dim]Usage: /rule [list|add|remove(rm)|edit|edit <num> <text>|enable|disable|clear][/dim])Úreturnú
list[dict])r  r4  r3  ÚNone)Údashscope.acli.configr  r   r   r   r
   r   r(   rI   r  r%  r&  ÚosÚenvironrD   Úsystemr²   r³   r	  Úunlink)r+   r   r,   r'  r+  r-   r‡   r  r7  ÚeditorÚrestÚparts2rm   Únew_textÚnum_partr.   r  r  r  s                   @@@r   Ú_handle_rule_commandr@  •  s€  ú€ å3à Ñ.€JØ�I‰I‹K×Ñ qÐÐ)€E÷÷ 
ð 
õ6ô ˆ5ƒz�Aƒ~ÙŒÜ�‰ðEô
	
ð 	à
�‰(�.‰.Ó
€Cà
ˆfƒ}ÙŒØà
‡~�~�f×ÑØ�1�2ˆw�}‰}‹ˆÞÜ�M‰MÐ?Ô@ØÙ“/ˆØ�‰ °Ñ6Ô7Ù�gÔÜ�‰Ð/°¨v°XÐ>Ô?Øà
ˆfƒ}Ø× Ñ ×"Ñ"Ø×Ñ¨°tÐÑ<Ø×!Ñ! "¨wÐ!Ñ7Ûà—‘—‘ ¨&Ó1ˆØ
�	‰	�V�H˜A˜j˜\Ð*Ô+Ü�‰Ð=Ô>Øà
‡~�~�g×ÑØ�1�2ˆw�}‰}‹ˆØ—‘ Q�Ð'ˆÜˆv‹;˜‹?Ü�M‰MÐIÔJØð	Ü�f˜Q‘i“. 1Ñ$ˆCð ˜!‘9ˆÙ“/ˆØ�‹7�cœS ›\Ó)Ü�M‰MÐ1°#¸±'°¸&ÐAÔBØØ'�‰�VÑÙ�gÔÜ�‰Ð1°#¸±'°¸"¸X¸JÀhÐOÔPØà
‡~�~�i× Ñ Ø�q�r�7—=‘=“?ˆð	Ü�h“- !Ñ#ˆCñ  “/ˆØ�‹7�cœS ›\Ó)Ü�M‰MÐ1°#¸±'°¸&ÐAÔBØØ"&ˆ‰�YÑÙ�gÔÜ�‰Ð1°#¸±'°¸(ÐCÔDØà
‡~�~�j×!Ñ!Ø�q�r�7—=‘=“?ˆð	Ü�h“- !Ñ#ˆCñ  “/ˆØ�‹7�cœS ›\Ó)Ü�M‰MÐ1°#¸±'°¸&ÐAÔBØØ"'ˆ‰�YÑÙ�gÔÜ�‰Ð2°3¸±7°)¸8ÐDÔEØð 	ˆx‹Ø�>‰>˜)×$Ñ$Ø�$‹;Ø�>‰>˜%× Ò á“/ˆÞÜ�M‰MÐ9Ô:ØØ�>‰>˜)×$Ñ$Ø˜1˜2�w—}‘}“‰HØ�^‰^˜E×"Ñ"Ø˜1˜2�w—}‘}“‰HàˆHÞÜ�M‰Mð&ôð ð	Ü�h“- !Ñ#ˆCð �‹7�cœS ›\Ó)Ü�M‰MÐ1°#¸±'°¸&ÐAÔBØØ—+‘+˜cÓ"ˆÙ�gÔÜ�‰Ø'¨¯©°F¸BÓ(?Ð'@ÀÐIô	
ð 	à
ˆgƒ~Ø×Ñ×ÑØ×ÑÔÜ�M‰MÐ<Ô=ð 	ô �M‰MÐ8Ô9Øä‡M�Mð	-õøôu ó 	Ü�M‰MÐDÔEÙð	ûô" ó 	Ü�M‰MÐDÔEÙð	ûô  ó 	Ü�M‰MÐDÔEÙð	ûôH ó 	Ü�M‰MÐDÔEÙð	úsH   Ç8U1 Ê V Ì=V; ÒW  Õ1VÖVÖV8Ö7V8Ö;W×W× XØX)r+   rF   r   r   r3  r5  )rK   rŽ   rL   Úboolr3  rF   )r3  rF   )rl   rX   rm   r²   rL   rA  r3  rF   )r3  rA  )r‡   rF   r3  r5  rã   )r‘   z
str | Noner3  r4  )r+   rF   r3  r5  )rË   rX   rm   r²   rL   rA  r3  rF   )Ú__doc__Ú
__future__r   ró   rG   Úrich.consoler   Údashscope.acli.cli.constantsr   r6  r   r
   r1   r9   rP   r]   rq   rw   r‰   r•   r¼   r×   rÞ   r÷   r  r@  © r   r   Ú<module>rG     sz   ðñ
õ
 #ã Û å  å 6Ý (á
‹)€ôO@ôd$>ôNô&ô 4ô >ô;ö.	öQ
ôhB9öJO
ôdMô`iõX}r   