
    Cj#                        S SK r S SKrS SKrS SKrS SKrS SKJrJr  S SKJ	r	  S SK
JrJrJr  S SKJrJrJrJrJr  S SKJrJrJrJr  SSKJrJrJr  SS	KJr  \S
   r S\!S\!4S jr" " S S
\\ RF                  5      r$ " S S\$5      r% " S S\$5      r& " S S\$5      r' " S S\\ RF                  5      r( " S S\(5      r) " S S\(5      r* " S S\(5      r+\\)\*-  \+-  \" SS94   r,S\$\(-  S-  S \-S\$4S! jr.g)"    N)	AwaitableCallable)suppress)PathPurePosixPathPureWindowsPath)	AnnotatedAnyClassVarLiteralcast)	BaseModel
ConfigDictFieldmodel_serializer   )SnapshotNotRestorableErrorSnapshotPersistErrorSnapshotRestoreError)DependenciesSnapshotBasevaluereturnc                    #    [         R                  " U 5      (       a  [        [        [           U 5      I S h  vN $ U $  N7fN)inspectisawaitabler   r   object)r   s    i/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/agents/sandbox/snapshot.py_maybe_awaitr       s5     5!!)F+U333L 4s   6A?Ac                     ^  \ rS rSr% \" SS9r\\S'   \\S'   0 r\	\
\\4      \S'   \S\SS	4U 4S
 jj5       r\S\SS 4S j5       r\" SS9S\S\
\\4   4S j5       r\S\S\S	-  4S j5       r\R*                  S	S.S\R.                  S\S	-  SS	4S jj5       r\R*                  S	S.S\S	-  S\R.                  4S jj5       r\R*                  S	S.S\S	-  S\4S jj5       rSrU =r$ )r      T)frozentypeid_subclass_registrykwargsr   Nc                   > [         TU ]  " S0 UD6  U R                  R                  S5      nUb  UR                  OS n[        U[        5      (       a  US:X  a  [        U R                   S35      e[        R                  R                  U5      nUb  X@La  [        SU SUR                   35      eU [        R                  U'   g )Nr$    z2 must define a non-empty string default for `type`zsnapshot type `z` is already registered by  )super__pydantic_init_subclass__model_fieldsgetdefault
isinstancestr	TypeError__name__r   r&   )clsr'   
type_fieldtype_defaultexisting	__class__s        r   r,   'SnapshotBase.__pydantic_init_subclass__$   s    *4V4%%))&1
-7-Cz)),,,0Bs||n,^_``2266|DH$7!,/J8K\K\J]^  9<''5    payloadc                 $   [        U[        5      (       a  U$ [        U[        5      (       aZ  UR                  S5      n[        U[        5      (       a%  U R                  U5      nUb  UR                  U5      $ [        SU S35      e[        S5      e)Nr$   zunknown snapshot type ``z9snapshot payload must be a SnapshotBase or object payload)	r0   r   dictr.   r1   _snapshot_class_for_typemodel_validate
ValueErrorr2   )r4   r;   snapshot_typesnapshot_classs       r   parseSnapshotBase.parse4   s    g|,,Ngt$$#KK/M---!$!=!=m!L!-)88AA6}oQGHHSTTr:   wrapmodehandlerc                     U" U 5      n[        U[        5      (       a  U R                  US'   [        [        [        [
        4   U5      $ Nr$   r0   r>   r$   r   r1   r
   selfrI   datas      r   _serialize_always_include_type+SnapshotBase._serialize_always_include_typeD   :    t}dD!!99DLDcND))r:   rB   c                 @    [         R                  R                  U5      $ r   )r   r&   r.   )r4   rB   s     r   r?   %SnapshotBase._snapshot_class_for_typeK   s    ..22=AAr:   dependenciesrO   rV   c                   #    g 7fr   r*   )rN   rO   rV   s      r   persistSnapshotBase.persistO   s
         c                   #    g 7fr   r*   rN   rV   s     r   restoreSnapshotBase.restoreT   s     WZrZ   c                   #    g 7fr   r*   r\   s     r   
restorableSnapshotBase.restorableW   s     UXrZ   r*   )r3   
__module____qualname____firstlineno__r   model_configr1   __annotations__r&   r   r>   SnapshotClassclassmethodr   r,   rD   r   r
   rP   r?   abcabstractmethodioIOBaser   rX   r]   boolr`   __static_attributes____classcell__)r8   s   @r   r   r      sa   T*L
IG=?c=&8!9:?<& <T < < UF U~ U U 6"*c *d38n * #* BS B]T=Q B B 	FJII0<t0C	  	CGZ\D-@ZBIIZ ZFJXt0CXtX Xr:   c                       \ rS rSr% Sr\S   \S'   \\S'   SS.S\R                  S\
S-  S	S4S
 jjrSS.S\
S-  S	\R                  4S jjrSS.S\
S-  S	\4S jjrS	\4S jrS	\4S jrSrg)LocalSnapshot[   localr$   	base_pathNrU   rO   rV   r   c                  #    UnU R                  5       nUR                  SUR                   S[        R                  " 5       R
                   S35      n UR                  R                  SSS9  UR                  S5       n[        R                  " X5        S S S 5        UR                  U5        g ! , (       d  f       N = f! [         aT  n[        [        5         UR                  5         S S S 5        O! , (       d  f       O= f[        U R                   XGS9UeS nAf["         a;    [        [        5         UR                  5         S S S 5        e ! , (       d  f       e = ff = f7f)N.z.tmpT)parentsexist_okwbsnapshot_idpathcause)_path	with_namenameuuiduuid4hexparentmkdiropenshutilcopyfileobjreplaceOSErrorr   unlinkr   r%   BaseException)rN   rO   rV   _r|   	temp_pathfes           r   rX   LocalSnapshot.persist`   s    zz|NNQtyyk4::<3C3C2DD#IJ		KKdT:%""4+ &d# &%  	W'"  " #""&477OUVV 	'"  " # #"	sr   AE&+C  B1C 0E&1
B?;C 
E#DC5,	D5
D	?DE#7E	E#
E	E##E&c                   #    UnU R                  5       n UR                  S5      $ ! [         a  n[        U R                  X4S9UeS nAff = f7f)Nrbrz   )r~   r   r   r   r%   )rN   rV   r   r|   r   s        r   r]   LocalSnapshot.restorer   sN     zz|	W99T?" 	W&477OUVV	Ws$   A' A
AAAAc                J   #    UnU R                  5       R                  5       $ 7fr   )r~   is_filerN   rV   r   s      r   r`   LocalSnapshot.restorablez   s     zz|##%%s   !#c                 <    U R                   U R                  5       -  $ r   )rt   	_filenamerN   s    r   r~   LocalSnapshot._path~   s    ~~ 000r:   c                    [        U R                  5      R                  n[        U R                  5      R                  nU R                  S;   d   U R                  U:w  d  U R                  U:w  a  [	        S5      eU R                   S3$ )N>   r)   rv   ..z.LocalSnapshot id must be a single path segmentz.tar)r   r%   r   r   rA   )rN   
posix_namewindows_names      r   r   LocalSnapshot._filename   si    "477+00
&tww/4477o%J)>$''\BYMNN''$r:   r*   )r3   rb   rc   rd   r$   r   rf   r   rk   rl   r   rX   r]   rm   r`   r~   r1   r   rn   r*   r:   r   rq   rq   [   s    $D''
$OTX ")) lT>Q ]a $ DH W\D-@ WBII W GK &t0C &t &1t 1 3  r:   rq   c                       \ rS rSr% Sr\S   \S'   SS.S\R                  S\	S-  SS4S	 jjr
SS.S\	S-  S\R                  4S
 jjrSS.S\	S-  S\4S jjrSrg)NoopSnapshot   noopr$   NrU   rO   rV   r   c                   #    X4ng 7fr   r*   )rN   rO   rV   r   s       r   rX   NoopSnapshot.persist   s      s   c                H   #    Un[        U R                  [        S5      S9e7f)Nz<noop>)r{   r|   )r   r%   r   r   s      r   r]   NoopSnapshot.restore   s     (TWW4>RRs    "c                   #    Ung7f)NFr*   r   s      r   r`   NoopSnapshot.restorable   s     s   r*   )r3   rb   rc   rd   r$   r   rf   rk   rl   r   rX   r]   rm   r`   rn   r*   r:   r   r   r      s    "D'&/"TX ")) lT>Q ]a  DH S\D-@ SBII S GK t0C t  r:   r   c                       \ rS rSr% Sr\S   \S'   \\S'   SS.S\R                  S\
S-  S	S4S
 jjrSS.S\
S-  S	\R                  4S jjrSS.S\
S-  S	\4S jjrS\S\
S-  S	\S\4   4S jrS	\4S jrSrg)RemoteSnapshot   remoter$   client_dependency_keyNrU   rO   rV   r   c                   #     U R                  SU5      I S h  vN n[        U" U R                  U5      5      I S h  vN   g  N) N! [         a)  n[	        U R                  U R                  5       US9UeS nAff = f7f)Nuploadrz   )_require_client_methodr    r%   	Exceptionr   _remote_path)rN   rO   rV   r   r   s        r   rX   RemoteSnapshot.persist   sx     	66xNNFvdggt4555 O5 	& GG&&( 		sH   A=A A#A AA A=A A 
A:$A55A::A=c                  #     U R                  SU5      I S h  vN n[        U" U R                  5      5      I S h  vN n[        U[        R                  5      (       d,  [	        U R                  U R                  5       [        S5      S9eU$  Nt NS! [         a)  n[	        U R                  U R                  5       US9UeS nAff = f7f)Ndownloadrz   z>Remote snapshot client download() must return an IOBase stream)
r   r    r%   r   r   r   r0   rk   rl   r2   )rN   rV   r   restoredr   s        r   r]   RemoteSnapshot.restore   s     	!88\RRH)(477*;<<H (BII..& GG&&( `a 
  S< 	& GG&&( 		sI   CB B"B BB ACB B 
C$C  CCc                   #    U R                  SU5      I S h  vN n[        U" U R                  5      5      I S h  vN n[        U5      $  N2 N7f)Nexists)r   r    r%   rm   )rN   rV   checkresults       r   r`   RemoteSnapshot.restorable   sB     11(LII#E$''N33F| J3s   AA"AAAAmethod_name.c                 .  #    Uc'  [        SU R                  < SU R                   S35      eUR                  U R                  SS9I S h  vN n[	        X1S 5      n[        U5      (       d  [        SU S35      e[        [        S[        4   U5      $  NH7f)	NzRemoteSnapshot(id=z:) requires session dependencies to resolve remote client `r=   r   )consumerz'Remote snapshot client must implement `z(snapshot_id, ...)`.)
RuntimeErrorr%   r   requiregetattrcallabler2   r   r   r   )rN   r   rV   clientmethods        r   r   %RemoteSnapshot._require_client_method   s      $TWWK 0""&"<"<!=Q@  $++D,F,FQa+bbd39+FYZ  HS&[)622 cs   AB
BA	Bc                 4    [        SU R                   S35      $ )Nz<remote:>)r   r   r   s    r   r   RemoteSnapshot._remote_path   s    ht99:!<==r:   r*   )r3   rb   rc   rd   r$   r   rf   r1   rk   rl   r   rX   r]   rm   r`   r   r   r   r   r   rn   r*   r:   r   r   r      s    &D'(
&TX 	")) 	lT>Q 	]a 	 DH \D-@ BII & GK t0C t 
33.:T.A3	#v+	3 >d >r:   r   c                   ~    \ rS rSr% \\S'   \" SS9S\S\\\4   4S j5       r	\
R                  S\S\4S	 j5       rS
rg)SnapshotSpec   r$   rF   rG   rI   r   c                     U" U 5      n[        U[        5      (       a  U R                  US'   [        [        [        [
        4   U5      $ rK   rL   rM   s      r   rP   +SnapshotSpec._serialize_always_include_type   rR   r:   r{   c                     g r   r*   rN   r{   s     r   buildSnapshotSpec.build   s    7:r:   r*   N)r3   rb   rc   rd   r1   rf   r   r
   r>   rP   ri   rj   r   r   rn   r*   r:   r   r   r      sT    
I6"*c *d38n * #* 	::: :r:   r   c                   F    \ rS rSr% Sr\S   \S'   \\S'   S\S\	4S jr
Srg	)
LocalSnapshotSpec   rs   r$   rt   r{   r   c                 (    [        XR                  S9$ )N)r%   rt   )rq   rt   r   s     r   r   LocalSnapshotSpec.build   s    ~~FFr:   r*   N)r3   rb   rc   rd   r$   r   rf   r   r1   r   r   rn   r*   r:   r   r   r      s,    $D''
$OG G Gr:   r   c                   <    \ rS rSr% Sr\S   \S'   S\S\4S jr	Sr
g)	NoopSnapshotSpec   r   r$   r{   r   c                     [        US9$ )N)r%   )r   r   s     r   r   NoopSnapshotSpec.build   s    {++r:   r*   Nr3   rb   rc   rd   r$   r   rf   r1   r   r   rn   r*   r:   r   r   r      s#    "D'&/", , ,r:   r   c                   F    \ rS rSr% Sr\S   \S'   \\S'   S\S\4S jr	Sr
g	)
RemoteSnapshotSpec   r   r$   r   r{   r   c                 (    [        XR                  S9$ )N)r%   r   )r   r   r   s     r   r   RemoteSnapshotSpec.build   s    D^D^__r:   r*   Nr   r*   r:   r   r   r      s-    &D'(
&` ` `r:   r   r$   )discriminatorspecr{   c                 t    [        U [        5      (       a  U $ U =(       d
    [        5       R                  U5      $ r   )r0   r   r   r   )r   r{   s     r   resolve_snapshotr     s.    $%%&$&--k::r:   )/ri   r   rk   r   r   collections.abcr   r   
contextlibr   pathlibr   r   r   typingr	   r
   r   r   r   pydanticr   r   r   r   errorsr   r   r   session.dependenciesr   r$   rg   r   r    ABCr   rq   r   r   r   r   r   r   SnapshotSpecUnionr1   r   r*   r:   r   <module>r      s   
  	   /  8 8 : : C C 
 /^$f  ;Y9cgg ;Y|, L , ^<  9>\ 9>x;9cgg ;G G,| ,` ` ((+==	! ;<,6= ;C ;T` ;r:   