
    Cj~&                     L   S SK r S SKrS SKJrJr  S SKJrJrJr  S SK	J
r
  S SKJrJrJrJr  S SKJr  SSKJrJrJrJr  SS	KJr  SS
KJr  SSKJrJr  SSKJrJ r J!r!J"r"  / SQr# " S S\\ RH                  5      r% " S S\%5      r& " S S\5      r' " S S\5      r( " S S\5      r)g)    N)IteratorMapping)PathPurePathPurePosixPath)Literal)	BaseModelFieldfield_serializerfield_validator)assert_never   )	BaseEntryDirMountresolve_workspace_path)InvalidManifestPathError)render_manifest_description)GroupUser)SandboxPathGrantcoerce_posix_pathposix_path_as_pathwindows_absolute_path)lsfindstatcatlessheadtaildugreprgwcsortcutcpteeechomkdirrmc                   @    \ rS rSr\R
                  S\4S j5       rSrg)EnvValue,   returnc                    #    g 7fN selfs    i/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/agents/sandbox/manifest.pyresolveEnvValue.resolve-   s     $'s   r3   N)	__name__
__module____qualname____firstlineno__abcabstractmethodstrr7   __static_attributes__r3       r6   r.   r.   ,   s    's' 'rA   r.   c                   .    \ rS rSr% \\S'   S\4S jrSrg)StrEnvValue1   valuer0   c                 "   #    U R                   $ 7fr2   rE   r4   s    r6   r7   StrEnvValue.resolve4   s     zzs   r3   N)r9   r:   r;   r<   r?   __annotations__r7   r@   r3   rA   r6   rC   rC   1   s    Js rA   rC   c                   J    \ rS rSr% Sr\S-  \S'   \" SS9r\	\S'   \
\S'   Srg)	EnvEntry8   NdescriptionFdefault	ephemeralrE   r3   )r9   r:   r;   r<   rM   r?   rI   r
   rP   boolr.   r@   r3   rA   r6   rK   rK   8   s$    "Kt"E*It*OrA   rK   c                   r    \ rS rSr% \" \S9r\\\\-  \	-  4   \
S'   S\\\	4   4S jrS\\\4   4S jrSrg)	Environment>   default_factoryrE   r0   c                    0 nU R                   R                  5        Hd  u  p#U=[        S` =b  u     [        [	        US9S9X'   M(    =[
        S` =b  u     [        US9X'   MD    [        S` =b  u   X1U'   MW     [        U5        Mf     U$ )Nr3   rG   )rE   itemsr?   rK   rC   r.   r   )r5   resultkeyrE   s       r6   
normalizedEnvironment.normalizedA   s{    &(****,JCSU"*51I"JFK XZ"*"7FK  Z"'3K   ' - rA   c                 
  #    U R                  5       nUR                  5       n[        R                  " U Vs/ s H  o1U   R                  R                  5       PM!     sn6 I S h  vN n[        [        X$SS95      $ s  snf  N7f)NF)strict)r[   keysasynciogatherrE   r7   dictzip)r5   r[   r_   rZ   valuess        r6   r7   Environment.resolveP   sl     __&
 ~~SW'XSWC3(=(=(E(E(GSW'XYYCU344 (YYs   5B&A<B$B%Br3   N)r9   r:   r;   r<   r
   rb   rE   r?   r.   rK   rI   r[   r7   r@   r3   rA   r6   rS   rS   >   sM    272ME4S8^h../MDh/ 5tCH~ 5rA   rS   c                      \ rS rSr% Sr\S   \S'   \" SS9r\	\S'   \" \
S9r\
\	\-  \4   \S'   \" \S9r\\S	'   \" \S9r\\   \S
'   \" \S9r\\   \S'   \" \S9r\\S4   \S'   \" S S9r\\	   \S'   \" SSS9\S\S\
\	\-  \4   4S j5       5       r\" SSS9S\\	\-  \4   S\
\	\4   4S j5       rS\
\	\-  \4   4S jr S)S\!S-  S\"\   4S jjr#S\\\$\4      4S jr%S\\\$\4      4S jr&S)S\!S-  S\"\   4S jjr'\(S\	\)-  S\4S  j5       r*\(S!\SS4S" j5       r+\(S!\S#\S\4S$ j5       r,\S\S\S\S-  4S% j5       r-S\.\\\4      4S& jr/S)S\!S-  S\	4S' jjr0S(r1g)*ManifestW   r   versionz
/workspacerN   rootrU   entriesenvironmentusersgroups.extra_path_grantsc                       [        [        5      $ r2   )list&DEFAULT_REMOTE_MOUNT_COMMAND_ALLOWLISTr3   rA   r6   <lambda>Manifest.<lambda>`   s
    %K LrA   remote_mount_command_allowlistbeforemoderE   r0   c                     Uc  0 $ [        U[        5      (       d!  [        S[        U5      R                   35      eUR                  5        VVs0 s H  u  p#U[        R                  " U5      _M     snn$ s  snnf )Nz(Artifact mapping must be a mapping, got )
isinstancer   	TypeErrortyper9   rX   r   parse)clsrE   rZ   entrys       r6   _parse_entriesManifest._parse_entriesc   sg     =I%))FtE{G[G[F\]^^>CkkmLm
Y__U++mLLLs   #A6json)	when_usedc                     0 nUR                  5        HF  u  p4[        U[        5      (       a  UR                  5       O
[	        U5      nUR                  SS9X%'   MH     U$ )Nr   rw   )rX   rz   r   as_posixr?   
model_dump)r5   rk   outrZ   r   key_strs         r6   _serialize_entriesManifest._serialize_entriesl   sR    !#!--/JC(23(=(=clln3s8G +++8CL * 
rA   c                 b    [        U R                  5      nU R                  5        H  u  p#M     U$ r2   )rb   rk   iter_entries)r5   	validated_path	_artifacts       r6   validated_entriesManifest.validated_entriest   s/    15dll1C	 $ 1 1 3E !4rA   depthNc                     UnU R                  5        VVs1 s H  u  p4UR                  (       d  M  UiM     snn$ s  snnf r2   )r   rP   )r5   r   _pathartifacts        r6   ephemeral_entry_pathsManifest.ephemeral_entry_pathsz   s4    +/+<+<+>U+>(BTBT+>UUUs   ;;c                 P   [        [        U R                  5      5      n/ nU R                  5        H`  u  p4[	        U[
        5      (       d  M  [        X5      nUR                  X5      nU R                  X5      nUb  UnUR                  XF45        Mb     UR                  S SS9  U$ )Nc                 2    [        U S   R                  5      $ )Nr   )lenparts)items    r6   rs   (Manifest.mount_targets.<locals>.<lambda>   s    Sa%7rA   T)rZ   reverse)r   r   rj   r   rz   r   r   _resolve_mount_path_for_root_normalize_in_workspace_pathappendr&   )r5   rj   mountsrel_pathr   dest
mount_pathnormalized_mount_paths           r6   mount_targetsManifest.mount_targets~   s    !"3DII">?+-"&"3"3"5Hh..)$9D!>>tJJ$($E$Ed$W!$02
MM801 #6 	7FrA   c                     U R                  5        VVs/ s H  u  pUR                  (       d  M  X4PM     snn$ s  snnf r2   )r   rP   )r5   r   r   s      r6   ephemeral_mount_targets Manifest.ephemeral_mount_targets   s5    7;7I7I7Kb7K^XxOaOa  7Kbbbs   ::c                 $   Un[        [        U R                  5      5      nU R                  US9nU R	                  5        H;  u  pV UR                  U5      nUR                  (       d  M*  UR                  U5        M=     U$ ! [         a     MN  f = f)N)r   )	r   r   rj   r   r   relative_to
ValueErrorr   add)r5   r   r   rj   skip_mountr   rel_mount_paths           r6   ephemeral_persistence_paths$Manifest.ephemeral_persistence_paths   s    !"3DII">?)))6"&">">"@F!+!7!7!= ###( #A 	  s   B
BBr   c                 v    [        U 5      =nb  [        UR                  5       SS9e[        [	        U 5      5      $ )Nabsoluterelreason)r   r   r   r   r   )r   windows_paths     r6   _coerce_rel_pathManifest._coerce_rel_path   s9    1$77LD*|/D/D/FzZZ!"3D"9::rA   r   c                    [        U 5      =nb  [        UR                  5       SS9e[        U 5      nUR	                  5       (       a  [        UR                  5       SS9eSUR
                  ;   a  [        UR                  5       SS9eg )Nr   r   ..escape_root)r   r   r   r   is_absoluter   )r   r   r   s      r6   _validate_rel_pathManifest._validate_rel_path   s~    1#66LC*|/D/D/FzZZ$S)!!*x/@/@/B:VV8>>!*x/@/@/B=YY "rA   originalc                   [        U 5      n[        U5      n[        U5      =nb  [        UR                  5       SS9eUR	                  5       (       a  [        UR                  5       SS9e/ nUR
                   HS  nUS;   a  M  US:X  a1  U(       d  [        UR                  5       SS9eUR                  5         MB  UR                  U5        MU     [        [        U6 5      $ )Nr   r   ) .r   r   )
r   r   r   r   r   r   popr   r   r   )r   r   r   original_pathr   normalized_partsparts          r6   _normalize_rel_path_within_root(Manifest._normalize_rel_path_within_root   s    $S))(31(;;LH*|/D/D/FzZZ!!*}/E/E/GPZ[[&(NNDy t|'2)224]  !$$&##D) # "-1A"BCCrA   c                    [        U5      n[        U5      =nb  [        UR                  5       SS9e[        U5      nUR	                  5       (       d9  U R                  [        U5      [        U5      S9nUR                  (       a  X-  $ U$  UR                  U5      nU R                  [        U5      [        U5      S9n[        U5      nUR                  (       a  X-  $ U$ ! [         a     g f = f)Nr   r   )r   )
r   r   r   r   r   r   r   r   r   r   )	r~   rj   r   	root_pathr   
path_posixnormalized_relr   root_as_paths	            r6   r   %Manifest._normalize_in_workspace_path   s    %d+	1$77LD*|/D/D/FzZZ&t,
%%'' @@":.+J7 A N -;,@,@4(JdJ	!--i8H <<x('
3 = 
 *)40>0D0D|,V,V  		s   C! !
C.-C.c              #     #    [        [        U R                  R                  5       5      5       VVs/ s H  u  pU R	                  U5      U4PM     nnnU(       a  UR                  5       u  pBU R                  U5        XB4v   [        U[        5      (       d  MF  [        [        UR                  R                  5       5      5       H*  u  pVX@R	                  U5      -  nUR                  Xv45        M,     U(       a  M  g g s  snnf 7fr2   )reversedrq   rk   rX   r   r   r   rz   r   childrenr   )r5   r   r   stackr   
child_namechild_artifactchild_rel_paths           r6   r   Manifest.iter_entries   s      #+40B0B0D+E"F
"F ""4((3"F 	 
 !&H##H-$$h,,.6tH<M<M<S<S<U7V.W*
!),A,A*,M!Mn=> /X e	
s   0DC?B*D=Dc                 ^    [        U R                  U R                  5       U R                  US9$ )uY  
print a nice fs representation of things inside root with inline descriptions
depth controls how deep the tree is rendered; None renders all levels
eg:

/workspace                      (root)
├── repo/                       # /workspace/repo — my repo
│   └── README.md               # /workspace/repo/README.md
├── data/                       # /workspace/data
│   └── config.json             # /workspace/data/config.json — config
├── mount-data/                 # /workspace/mount-data (mount)
└── notes.txt                   # /workspace/notes.txt
...
)rj   rk   coerce_rel_pathr   )r   rj   r   r   )r5   r   s     r6   describeManifest.describe   s0     +**, 11	
 	
rA   r3   )r   )2r9   r:   r;   r<   ri   r   rI   r
   rj   r?   rb   rk   r   r   rS   rl   rq   rm   r   rn   r   tuplero   r   ru   r   classmethodobjectr   r   r   r   r   intsetr   r   r   r   r   staticmethodr   r   r   r   r   r   r   r   r@   r3   rA   r6   rg   rg   W   s   GWQZl+D#++0+FGT#*i'(F$[AKAd3E4:35FDK56;E6Ru-s23R05L1"DI  YX.M6 Md3:y3H.I M  /M i62'#*i2G*H TRUW]R]M^  34d
I(=#> V3: Vc$i VtE%+$67 ceE4K.@)A ct CI  ;sX~ ;$ ; ;
 Z Z Z Z DT D D D D. W WD WTD[ W W0?huT9_'=> ? 
cDj 
 
 
rA   rg   )*r=   r`   collections.abcr   r   pathlibr   r   r   typingr   pydanticr	   r
   r   r   typing_extensionsr   rk   r   r   r   r   errorsr   manifest_renderr   typesr   r   workspace_pathsr   r   r   r   rr   ABCr.   rC   rK   rS   rg   r3   rA   r6   <module>r      s    
  - 1 1  H H * B B , 8  * &.(y#'' (
( y 5) 52k
y k
rA   