§
    ÷žyj:  ã                   óL  — U d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	  ej
        e¦  «        Z e¦   «         Ze	ed<    ede¬¦  «        Zeed	<    ee¦  «                             ¦   «         j        j        Zd
edefd„Zdedz  defd„Zdd„Zdefd„Zdefd„Zdedz  fd„ZdS )a>  Single source of truth for the agent working directory.

`TERMINAL_CWD` is the runtime carrier for the configured working directory
(design #19214/#19242: `terminal.cwd` is bridged once to `TERMINAL_CWD` at
gateway/cron startup). The local-CLI backend deliberately leaves it unset and
relies on the launch dir. Reading it in one place keeps the system prompt, the
tool surfaces, and context-file discovery agreeing on where the agent lives.

Multi-session gateways can pin a logical cwd via the `_SESSION_CWD`
contextvar; CLI/cron fall through to `TERMINAL_CWD`/launch cwd.
é    N)Ú
ContextVarÚToken)ÚPath)ÚAnyÚ_UNSETÚHERMES_SESSION_CWD)ÚdefaultÚ_SESSION_CWDÚpÚreturnc                 ó‚   — 	 |                       ¦   «         } n# t          $ r Y dS w xY w| t          k    pt          | j        v S )NF)ÚresolveÚ	ExceptionÚ_PACKAGE_ROOTÚparents)r   s    ú7/home/ragecks/.hermes/hermes-agent/agent/runtime_cwd.pyÚ_is_install_treer   !   sO   € ðØ�IŠI‰KŒKˆˆøÝð ð ð Øˆuˆuðøøøà•ÒÐ;¥°!´)Ð!;Ð;s   ‚ —
%¤%Úcwdc                 ó^   — t                                | pd                     ¦   «         ¦  «        S )z,Pin the logical cwd for the current context.Ú )r
   ÚsetÚstrip)r   s    r   Úset_session_cwdr   ,   s&   € å×Ò˜S˜Y B×-Ò-Ñ/Ô/Ñ0Ô0Ð0ó    c                  ó:   — t                                d¦  «         d S ©Nr   )r
   r   © r   r   Úclear_session_cwdr   1   s   € Ý×Ò�RÑÔÐÐÐr   c                  óŒ   — t                                ¦   «         } | t          u rdS t          | ¦  «                             ¦   «         S r   )r
   Úgetr   Ústrr   )Úvalues    r   Ú_session_cwd_overrider#   5   s9   € Ý×ÒÑÔ€EØ•€€ØˆrÝˆu‰:Œ:×ÒÑÔÐr   c                  ó  — t          ¦   «         } | rRt          | ¦  «                             ¦   «         }|                     ¦   «         r|S t                               d| ¦  «         t          j                             dd¦  «         	                    ¦   «         }|rRt          |¦  «                             ¦   «         }|                     ¦   «         r|S t                               d|¦  «         t          t          j
        ¦   «         ¦  «        S ©Nz/configured working directory does not exist: %sÚTERMINAL_CWDr   zTERMINAL_CWD does not exist: %s)r#   r   Ú
expanduserÚis_dirÚloggerÚwarningÚosÚenvironr    r   Úgetcwd©Úoverrider   Úraws      r   Úresolve_agent_cwdr1   <   sÕ   € Ý$Ñ&Ô&€HØð TÝ�‰NŒN×%Ò%Ñ'Ô'ˆØ�8Š8‰:Œ:ð 	ØˆHÝ�ŠÐHÈ(ÑSÔSÐSÝ
Œ*�.Š.˜¨Ñ
,Ô
,×
2Ò
2Ñ
4Ô
4€CØ
ð ?Ý�‰IŒI× Ò Ñ"Ô"ˆØ�8Š8‰:Œ:ð 	ØˆHÝ�ŠÐ8¸#Ñ>Ô>Ð>Ý•”	‘”ÑÔÐr   c                  óÞ  — t          ¦   «         } | rUt          | ¦  «                             ¦   «         }|                     ¦   «         st                               d| ¦  «         n|S d S t          j                             dd¦  «         	                    ¦   «         }|rSt          |¦  «                             ¦   «         }|                     ¦   «         st                               d|¦  «         n|S d S r%   )
r#   r   r'   r(   r)   r*   r+   r,   r    r   r.   s      r   Úresolve_context_cwdr3   L   sÒ   € õ %Ñ&Ô&€HØð Ý�‰NŒN×%Ò%Ñ'Ô'ˆØ�xŠx‰zŒzð 	Ý�NŠNÐLÈhÑWÔWÐWÐWàˆHØˆtÝ
Œ*�.Š.˜¨Ñ
,Ô
,×
2Ò
2Ñ
4Ô
4€CØ
ð Ý�‰IŒI× Ò Ñ"Ô"ˆØ�xŠx‰zŒzð 	Ý�NŠNÐ<¸cÑBÔBÐBÐBàˆHØˆ4r   )r   N)Ú__doc__Úloggingr+   Úcontextvarsr   r   Úpathlibr   Útypingr   Ú	getLoggerÚ__name__r)   Úobjectr   Ú__annotations__r
   Ú__file__r   Úparentr   Úboolr   r!   r   r   r#   r1   r3   r   r   r   ú<module>r@      sˆ  ðð
ð 
ð 
ð €€€Ø 	€	€	€	Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€àˆf‰hŒh€ˆÐ Ð Ñ à%˜:Ð&:ÀFÐKÑKÔK€ˆjÐ KÐ KÑ Kð ��X‘”×&Ò&Ñ(Ô(Ô/Ô6€ð<˜ð < ð <ð <ð <ð <ð1˜˜t™ð 1¨ð 1ð 1ð 1ð 1ð
ð ð ð ð˜sð ð ð ð ð˜4ð ð ð ð ð ˜T D™[ð ð ð ð ð ð r   