+
    D#j                       a  0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHtHt ^ R	IHtHtHt ^ R
IHt RR3RR4RR5RR6RR7RR8RR9/t R R lt!R R lt"Rt# ! R R]4      t$ ! R R]%]4      t&]! RR7       ! R R4      4       t']! RR7       ! R R 4      4       t(] ! R! R"4      4       t) ! R# R$]4      t*R%t+R&0t,]*PZ                  R']*P\                  R(/t/R)]0R*&   ]*PZ                  R+]*P\                  R,]*Pb                  R-/t2R)]0R.&   ] ! R/ R04      4       t3 ! R1 R24      t4R# ):    )annotationsN)contextmanager)	dataclass)UTCdatetime)Enum)Path)Any	TypedDict)AccountLockedErrorAccountLockStoreaccount_key)runtime_diraccount_uuid_ofpinned_account_uuidROTATION_BACKUP_DIRClaudeTokenIdentity
PiAuthSyncSharedClaudeStateSharedCodexStatec                    V ^8  d   QhRRRR/#    namestrreturnr
    )formats   "a/home/user/overdeck-private-tests/subrouter-s5-systray-latest/modules/systray/account_registry.py__annotate__r    #   s      s s     c                    V \        4       9   d   \        4       V ,          # \        V ,          w  r\        \        W.R 7      V4      pV\        4       V &   V# ))fromlist)globals_LAZY_SYMBOLSgetattr
__import__)r   module_namesymbol_namevalues   &   r   _lazy_symbolr+   #   sH    wyy,T2KJ{]C[QEGIdOLr!   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r    r    ,   s      c c r!   c                D    V \         9  d   \        V 4      h\        V 4      # N)r%   AttributeErrorr+   )r   s   &r   __getattr__r0   ,   s     = T""r!   zhttps://api.openai.com/authc                  ,    ] tR t^5t$ R]R&   R]R&   RtR# )RegistryStatezlist[dict[str, object]]accountsz	list[str]deleted_legacy_slugsr   N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r   r!   r   r2   r2   5   s    %%##r!   r2   c                  "    ] tR t^:tRtRtRtRtR# )AuthorityModenativezsubrouter-dark	subrouterr   N)r5   r6   r7   r8   NATIVESUBROUTER_DARK	SUBROUTERr:   r   r!   r   r<   r<   :   s    F%NIr!   r<   T)frozenc                      ] tR t^@t$ R]R&   R]R&   R]R&   R]R&   R]R&   R	tR
]R&   R R lt]R R l4       tR R lt	Rt
R# )AuthorityBindingr<   moder   authority_nameroute_idproviderr	   proxy_grant_refFboolquiescedc                   V ^8  d   QhRR/# r   r   Noner   )r   s   "r   r    AuthorityBinding.__annotate__I   s     L Lt Lr!   c                	H   \        V P                  \        4      '       g   \        R 4      h\        P
                  ! RV P                  4      '       g   \        R4      h\        P
                  ! RV P                  4      '       g   \        R4      hV P                  R	9  d   \        R4      h\        V P                  \        4      '       d!   V P                  P                  4       '       g   \        R4      h\        V P                  \        4      '       g   \        R4      hR# )
!authority binding mode is invalidz[A-Za-z0-9][A-Za-z0-9_-]{0,63}z!authority binding name is invalidz[A-Za-z0-9][A-Za-z0-9_-]{0,127}z%authority route identifier is invalidz%authority binding provider is invalid0authority proxy grant reference must be absolute+authority binding quiesced state is invalidN>   codexclaude)
isinstancerE   r<   
ValueErrorre	fullmatchrF   rG   rH   rI   r	   is_absoluterK   rJ   selfs   &r   __post_init__AuthorityBinding.__post_init__I   s    $))]33@AA||=t?R?RSS@AA||>NNDEE== 33DEE$..55T=Q=Q=]=]=_=_OPP$--..JKK /r!   c               $    V ^8  d   QhRRRRRR/# )r   r*   objectrH   r   r   z'AuthorityBinding | None'r   )r   s   "r   r    rO   X   s"     0
 0
f 0
3 0
;T 0
r!   c          	     	<   Vf   R # \        V\        4      '       g   \        R4      h0 RmpVR0,          pV\        V4      8:  d   \        V4      V8:  g   \        R4      h \	        VR,          4      pT\        P                  8X  d   \        R
4      hR Uu/ uF  pYqT,          bK  	  pp\        ;QJ d*    R TP                  4        4       F  '       g   K   RM	  RM! R TP                  4        4       4      '       d   \        R4      hTR,          T8w  d   \        R4      h\        ;QJ d    R T 4       F  '       g   K   RM	  RM! R T 4       4      '       d   \        R4      hTP                  RR4      p	\        T	\        4      '       g   \        R4      h\        TR,          4      p
T
P                  4       '       g   \        R4      hT ! TTR,          TR,          TR,          T
T	R7      #   \
        \        3 d   p\        R	4      ThR p?ii ; iu upi )Nz#authority binding must be an objectrE   rF   rG   rH   rI   rK   z/authority binding has unknown or missing fieldsrQ   +native accounts must omit authority_bindingc              3     "   T F7  p\        V\        4      '       * ;'       g    VP                  4       '       * x  K9  	  R # 5ir.   )rV   r   strip.0items   & r   	<genexpr>-AuthorityBinding.from_dict.<locals>.<genexpr>q   s.     Y:dC((<<

,<<s
    AATFz2authority binding fields must be non-empty strings:authority binding provider does not match account providerc              3  X   "   T F   pR F  pW!P                  4       9   x  K  	  K"  	  R# 5i)tokenN)rl   secretpasswordkey_hash)lower)rf   keymarkers   &  r   rh   ri   u   s-      
E iik!E "s   (*z2authority binding cannot contain credential fieldsrS   rR   rE   rF   rG   rH   rI   rK   >   rE   rH   rG   rF   rI   )rF   rG   rH   rI   )rV   dictrW   setr<   	TypeErrorr?   anyvaluesgetrJ   r	   rZ   )clsr*   rH   requiredallowedrE   excrq   fieldsrK   	grant_refs   &&$        r   	from_dictAuthorityBinding.from_dictW   s   =%&&BCC
 j\)3u:%SZ7-BNOO	K v/D ='''JKK U
T sOT 	 
 3YY333YYYYQRR*)YZZ3 

333 

 
 

 QRR99Z/(D))JKK 123	$$&&OPP!"23J'J'%
 	
1 :& 	K@AsJ	K
s   "G4 H4HHHc                   V ^8  d   QhRR/# )r   r   zdict[str, str | bool]r   )r   s   "r   r    rO      s     
 
. 
r!   c                	    R V P                   P                  RV P                  RV P                  RV P                  R\        V P                  4      RV P                  /# rs   )rE   r*   rF   rG   rH   r   rI   rK   r[   s   &r   as_dictAuthorityBinding.as_dict   sO    DIIOOd11s4#7#78
 	
r!   r   N)r5   r6   r7   r8   r9   rK   r]   classmethodr   r   r:   r   r!   r   rD   rD   @   sM    
MMHdL 0
 0
d
 
r!   rD   c                  B    ] tR t^t$ R]R&   R]R&   ]R R l4       tRtR# )
AccountRefr   toolslugc                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r    AccountRef.__annotate__   s     * *S *r!   c                	8    V P                    R V P                   2# ):)r   r   r[   s   &r   rq   AccountRef.key   s    ))Adii[))r!   r   N)r5   r6   r7   r8   r9   propertyrq   r:   r   r!   r   r   r      s    
I
I* *r!   r   c                      ] tR t^t$ R]R&   R]R&   R]R&   R]R&   R]R	&   R]R
&   R]R&   R R lt]R R l4       t]R R l4       t]R R l4       t	]R R l4       t
RtR# )Accountr   refr   aliasr	   account_home
str | Noneemailplan
account_idAuthorityBinding | Noneauthority_bindingc               $    V ^8  d   QhRRRRRR/# )r   argsr`   kwargsr   rN   r   )r   s   "r   r    Account.__annotate__   s-     J3 J3J3 J3 
	J3r!   c                	p   V'       d   \        V4      ^8X  d[   \        V^ ,          \        4      '       d>   / VCRV^ ,          RV^,          RV^,          RV^,          RV^,          RV^,          /CpMu\        V4      ^8X  d[   \        V^ ,          \        4      '       d>   / VCRV^ ,          RV^,          RV^,          RV^,          RV^,          RV^,          /CpM\	        R	4      hVP                  RR
4      pVP                  RR
4      pVP                  RR
4      pVP                  RR
4      pVP                  RR
4      pVP                  RR
4      pVP                  RR
4      p	VP                  RR
4      p
VP                  RR
4      pVP                  RR
4      pV'       d)   RP                  \        V4      4      p\	        RV 24      hVfV   \        V\        4      '       d	   V'       g   \	        R4      h\        \        V\        4      '       d   V'       d   TMRV4      p\        V\        4      '       g   \	        R4      hVf   TpVf   \	        R4      h\        V\        4      '       d	   V'       g   \	        R4      h\        V\        4      '       g   \        V4      pW0n	        W`n
        Wpn        \        V	\        4      '       g   V	f   T	M
\        V	4      V n        \        V
\        4      '       g   V
f   T
M
\        V
4      V n        \        V\        4      '       g   Vf   TM
\        V4      V n        Ver   \        V\        4      '       g   \	        R4      hVP                   \"        P$                  8X  d   \'        R4      hVP(                  VP*                  8w  d   \'        R4      hWn        R
# )   r   r   r   r   r   r   r   
codex_homez9Account expects either AccountRef or slug-based argumentsNr   r   z, z"Account got unexpected arguments: zAccount requires ref or slugrT   z!Account ref must be an AccountRefz+Account requires account_home or codex_homezAccount requires aliasz5Account authority_binding must be an AuthorityBindingrb   rj   )lenrV   r   r   rv   popjoinsortedr	   r   r   r   r   r   r   rD   rE   r<   r?   rW   rH   r   r   )r\   r   r   r   r   r   r   r   r   r   r   r   r   
unexpecteds   &*,           r   __init__Account.__init__   s%   
 4yA~*T!Wj"A"A47T!W"DGT!WDG $q' TaJtAw$<$<DGT!W $q'T!WDG $q'   [\\jj%zz&$'zz&$'

7D)zz.$7ZZd3


7D)zz&$'ZZd3
"JJ':DA6&>2J@MNN;dC(( >??Zc%:%:tTRVWC#z**?@@%LIJJ%%%U455,---L
((44U3u:
&tS11T\Ds4y	$Z559KJQTU_Q` 	 (/1ABB WXX %%)=)== !NOO ))SXX5 !]^^!2r!   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r    r            c r!   c                	.    V P                   P                  # r.   )r   r   r[   s   &r   r   Account.slug       xx}}r!   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r    r      r   r!   c                	.    V P                   P                  # r.   )r   r   r[   s   &r   r   Account.tool   r   r!   c                   V ^8  d   QhRR/# r   r   r	   r   )r   s   "r   r    r      s     ! !D !r!   c                	    V P                   # r.   )r   r[   s   &r   r   Account.codex_home   s       r!   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r    r     s      # r!   c                	.    V P                   P                  # r.   )r   rq   r[   s   &r   tray_keyAccount.tray_key  s    xx||r!   )r   r   r   r   r   r   r   N)r5   r6   r7   r8   r9   r   r   r   r   r   r   r:   r   r!   r   r   r      s    	OJ
..J3X     ! !  r!   r   c                  "    ] tR tRtRtRtRtRtR# )AccountRegistryKindi  rT   rU   grokr   N)r5   r6   r7   r8   CODEXCLAUDEGROKr:   r   r!   r   r   r     s    EFDr!   r   zroy-grokdynamiczrouting_rules.jsonzclaude_routing_rules.jsonzdict[AccountRegistryKind, str]ROUTING_RULES_FILENAMESzhealth_cache.jsonzclaude_health_cache.jsonzgrok_health_cache.jsonHEALTH_CACHE_FILENAMESc                      ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R]R	&   R
tR]R&   R R ltR R ltR R ltR R lt	Rt
R# )StagedAccounti  z'AccountRegistry'registryr   r   r   r	   r   _staged_dirFrJ   _closedc                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r    StagedAccount.__annotate__"  s     : : :r!   c                	X    V P                  4        V P                  P                  V 4      # r.   )_ensure_openr   _commit_staged_accountr[   s   &r   commitStagedAccount.commit"  s#    }}33D99r!   c                   V ^8  d   QhRR/# rM   r   )r   s   "r   r    r   &  s     5 5$ 5r!   c                	\    V P                  4        V P                  P                  V 4       R # r.   )r   r   _rollback_staged_accountr[   s   &r   rollbackStagedAccount.rollback&  s     ..t4r!   c                   V ^8  d   QhRR/# rM   r   )r   s   "r   r    r   *  s     @ @d @r!   c                	@    V P                   '       d   \        R 4      hR# )zstaged account already closedN)r   RuntimeErrorr[   s   &r   r   StagedAccount._ensure_open*  s    <<<>?? r!   c                   V ^8  d   QhRR/# rM   r   )r   s   "r   r    r   .  s      d r!   c                	    R V n         R# )TNr   r[   s   &r   _mark_closedStagedAccount._mark_closed.  s	    r!   r   N)r5   r6   r7   r8   r9   r   r   r   r   r   r:   r   r!   r   r   r     sB    J
IGT:5@ r!   r   c                     ] tR tRtRR]P
                  RRRR3R R lltR R ltR R ltR	 R
 lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR! R" l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/ ltR0 R1 ltR2 R3 ltRR4 R5 lltR6 R7 ltRR8 R9 llt R: R; lt!R< R= lt"R> R? lt#R@ RA lt$RB RC lt%RD RE lt&]'RF RG l4       t(]'RH RI l4       t)RJ RK lt*RRL RM llt+RRN RO llt,RP RQ lt-RR RS lt.Rt/RT RU lt0RV RW lt1]'RX RY l4       t2RZ R[ lt3]'R\ R] l4       t4]'R^ R_ l4       t5]'R` Ra l4       t6]'Rb Rc l4       t7Rd Re lt8Rf Rg lt9]:Rh Ri l4       t;Rj Rk lt<Rl Rm lt=Rn Ro lt>Rp Rq lt?Rr Rs lt@Rt Ru ltARv Rw ltBRx Ry ltC]'Rz R{ l4       tD]'R| R} l4       tE]'R~ R l4       tFR R ltGR R ltH]'RR R ll4       tIRtJR# )AccountRegistryi2  Nc               8    V ^8  d   QhRRRRRRRRRRRRR	RR
R/# )r   base_dirzPath | Nonelegacy_codex_homekindr   legacy_claude_homeactive_claude_jsonlegacy_grok_homepi_agent_dirr   rN   r   )r   s   "r   r    AccountRegistry.__annotate__3  sd     H= H=H= 'H= "	H=
 (H= (H= &H= "H= 
H=r!   c                	4   \         P                  ! 4       pVe   TM	\        4       V n        Ve   TMVR,          V n        Ve   TMVR,          V n        Ve   TMVR,          V n        Ve   TMV P
                  P                  R,          V n        W0n	        V\        P                  8X  d   \        R4      p	V P                  R,          V n        V P                  R,          V n        V P                  R,          V n        R	V n        V	! V P
                  V P                  R
7      V n        MV\        P$                  8X  dX   V P                  R,          V n        V P                  R,          V n        V P                  R,          V n        RV n        R V n        M}\        R4      p	V P                  R,          V n        V P                  R,          V n        V P                  R,          V n        RV n        V	! V P                  V P                  R7      V n        Ve;   V\        P&                  8X  d&   \        R4      p
V
! VV P                  R7      V n        MR V n        \*        P-                  V4      pVf   R MV P                  V,          V n        V P                  \0        V,          ,          V n        \5        V P                  4      V n        V P                  R,          V n        V P                  P;                  RRR7       V P                  P;                  RRR7       R # )Nz.codexz.claudez.grok.claude.jsonr   zclaude-accountszclaude_accounts.jsonclaude_default_slugCLAUDE_HOME)shared_homeaccounts_dirzgrok-accountszgrok_accounts.jsongrok_default_slug	GROK_HOMEr   r3   zaccounts.jsondefault_slug
CODEX_HOME)r   r   r   )	agent_dirr   z.registry.lockTparentsexist_ok)r	   homer   r   r   r   r   parentr   r   r   r   r+   r   registry_pathdefault_path_account_home_name_shared_codex_stater   r   _pi_auth_syncr   ry   routing_rules_pathr   health_cache_pathr   _account_locks
_lock_pathmkdir)r\   r   r   r   r   r   r   r   	user_homeshared_state_clspi_auth_sync_clsrouting_rules_filenames   &&&&&&&&    r   r   AccountRegistry.__init__3  s    IIK	$,$8km!2!>IPXDX 	 #5"@iR[F[ 	 !1 <)gBU 	
 "- ((//.@ 	
 	&---+,?@ $0A AD!%1G!GD $0E ED&3D#'7 33!..(D$ (--- $ ?D!%1E!ED $0C CD&1D#'+D$+,>? $
 :D!%!@D $ >D&2D#'7"&"8"8!..(D$ #0C0I0I(I+L9!1&!.."D
 "&D!8!<!<T!B*2DH^8^ 	 "&1G1M!M.t}}=++.>>D48t<r!   c                   V ^8  d   QhRR/# rM   r   )r   s   "r   r    r   }  s     ( ( (r!   c                	   V P                   \        P                  8X  d   V P                  4        R # V P	                  4       pVR,           Uu0 uF  q"R,          kK  	  pp\        VR,          4      p\        V P                  P                  R4      4       F  pVP                  \        R4      \        R4      )  pWc9   g.   Wd9   g(   V P                  V,          P                  4       '       d   KZ  V P                  V,          R,          pVP                  RR	R
7       \        P                  ! WWR,          4       V P!                  V4       VR,          P#                  RVRV/4       VP%                  V4       K  	  V P'                  V4       V P(                  P                  4       '       d   R # V P+                  V P                  R,          4      pVP-                  R4      p	V	f   R # VR,           Fy  pV P+                  V P                  VR,          ,          R,          R,          4      p
V
P-                  R4      V	8X  g   KR  V P/                  V P(                  VR,           R24        R # 	  R # u upi )Nr3   r   r4   zauth.*.jsonzauth.z.jsonr   TFr   	auth.jsonr   r   
)r   r   r   _migrate_legacy_claude_read_registryru   r   r   globr   r   r   existsr  shutilcopy2sync_shared_linksappendadd_write_registryr   _decode_auth_filery   _atomic_write_text)r\   r   entryknown_slugsr4   legacy_authr   r   current_auth_payloadcurrent_account_idpayloads   &          r   migrate_legacyAccountRegistry.migrate_legacy}  s   99+222'')&&(2::2FG2FV}}2FG"8,B#CD!$"8"8"="=m"LMK##CLCL=AD#/%%,4466,,t3lBLte<LL[&@A""<0Z ''w(EFOOD! N  	X&##%%#55d6L6L{6Z[155lC%j))E,,!!E&M1L@;NG {{<(,>>''(9(9eFm_B;OP *; Hs   I0c                   V ^8  d   QhRR/# rM   r   )r   s   "r   r    r     s     *D *D *Dr!   c                	  a V P                   R ,          pVP                  4       '       g   R# V P                  4       pVR,          '       d   V P                  P                  4       '       g]   VR,          ^ ,          P	                  R4      p\        V\        4      '       d(   V'       d    V P                  V P                  V R24       R#  VP                  4       pV P                  P                  4       pWE8X  g   VP                  V4      '       d   R#  T P                  T P                  4      pT P                  T4      o\        T3R lTR,           4       R4      pTe
   TR,          MT P!                  S4      pTR,           U	u0 uF  qR,          kK  	  p
p	Y9  d   T P                  T,          P                  4       '       g   T P                  T,          R,          pTP#                  RRR	7       \$        P&                  ! YR ,          4       T P                  P                  4       '       d)   \$        P&                  ! T P                  TR
,          4       TR,          P)                  RTRS/4       T P+                  T4       T P                  P                  4       '       g"   T P                  T P                  T R24       R# R#   \         d     R# i ; iu up	i ).credentials.jsonNr3   r   r  c              3  V   <"   T F  qP                  R 4      S8X  g   K  Vx  K   	  R# 5i)r   Nry   )rf   r  r   s   & r   rh   9AccountRegistry._migrate_legacy_claude.<locals>.<genexpr>  s#     T 4u		'8Je8SUU 4s   )
)r   TFr   claude.jsonr   )r   r  r  r   ry   rV   r   r  resolver   is_relative_toOSError_decode_claude_filer   _legacy_claude_aliasnextnew_slugr  r  r  r  r  )r\   credentials_pathr   
first_slugcredentials_realpathaccounts_realpathmetadataexisting_entryr   r  r  claude_homer   s   &           @r   r  &AccountRegistry._migrate_legacy_claude  sl   225HH&&((&&(J$$++--%j1!488@
j#..:++D,=,=*R?PQ	#3#;#;#=  $ 1 1 9 9 ;#8<P<_<_!= = = ++D,C,CD))(3T 4T
 *8)C~f%W\I]2::2FG2FV}}2FG"D,=,=,D+L+L+N+N++d2]BKdU;LL)9L+LM&&--//T44kM6QRZ ''w(FG  *  ''))##D$5$5$r{C *+  		 Hs   AK	 K	KKc                   V ^8  d   QhRR/# )r   r   zlist[Account]r   )r   s   "r   r    r     s     F Fm Fr!   c                	   V P                  4       R ,          pV P                  \        P                  8X  d*   V Uu. uF  q P	                  V4      '       g   K  VNK  	  ppV Uu. uF  q P                  V4      NK  	  up# u upi u upi )r3   )r  r   r   r   _should_list_claude_account_account_from_entry)r\   entriesr  s   &  r   listAccountRegistry.list  sq    %%'
399+222*1]'5U5UV[5\uu'G]=DEWE((/WEE ^Es   B B $Bc               $    V ^8  d   QhRRRRRR/# )r   r   r   bindingr   r   r   r   )r   s   "r   r    r     s$      "9	r!   c                	`   Ve1   VP                   V P                  P                  8w  d   \        R4      hVe+   VP                  \
        P                  8X  d   \        R4      hV P                  4       ;_uu_ 4        V P                  4       pVR,           Fq  pVP                  R4      V8w  d   K  Vf   VP                  RR 4       MVP                  4       VR&   V P                  V4       V P                  V4      u uuR R R 4       # 	  R R R 4       \        V4      h  + '       g   i     L; i)Nz2authority binding provider does not match registryrb   r3   r   r   )rH   r   r*   rW   rE   r<   r?   _account_root_lockr  ry   r   r   r  r9  KeyError)r\   r   r>  r   r  s   &&&  r   set_authority_binding%AccountRegistry.set_authority_binding  s     7#3#3tyy#FQRR7<<=3G3G#GJKK$$&&**,H!*--99V$,?II148181BE-.$$X.//66 '&- ' tn '&s   ;BDDD-	c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r    r     s     / /j /r!   c                	   V P                   P                  4       '       g   R # V P                   P                  RR7      P                  4       pV'       g   R # V P	                  4        Uu0 uF  q"P
                  kK  	  ppW9   d   V# R # u upi Nutf-8encoding)r   r  	read_textrd   r;  r   )r\   r   accountknowns   &   r   r   AccountRegistry.default_slug  sr      ''))  **G*<BBD-1YY[9['[9}t.$. :s   )B	c                    V ^8  d   QhRRRR/# r   r   r   r   rJ   r   )r   s   "r   r    r     s     D Dc Dd Dr!   c                	b    V P                   P                  V P                  P                  V4      # r.   )r   	is_lockedr   r*   r\   r   s   &&r   rR  AccountRegistry.is_locked  s#    "",,TYY__dCCr!   c                   V ^8  d   QhRR/# )r   r   zfrozenset[str]r   )r   s   "r   r    r     s     A An Ar!   c                	`    V P                   P                  V P                  P                  4      # r.   )r   locked_slugsr   r*   r[   s   &r   rW  AccountRegistry.locked_slugs  s!    ""//		@@r!   c               $    V ^8  d   QhRRRRRR/# )r   r   r   lockedrJ   r   r   )r   s   "r   r    r     s!     ' 's 'D 'T 'r!   c                	   V P                  4       ;_uu_ 4        V P                  4       R ,           Uu0 uF  q3R,          kK  	  ppW9  d   \        V4      hV P                  P	                  V P
                  P                  W4      pV'       g    RRR4       R# V P                  4       V8X  d-   V'       d   V P                  V4       M V P                  V4       V P                  4         RRR4       R# u upi   \         d   pRpRp T P                  P	                  T P
                  P                  TR4       M  \         d   p	T	p Rp	?	MRp	?	ii ; i T P                  T4       M  \         d   p
T
p Rp
?
MRp
?
ii ; iTe   \        R4      ThTe'   \        TR4      '       d   TP                  RT 24       h Rp?ii ; i  + '       g   i     R# ; i)r3   r   NFTz6failed to restore account lock after activation failedadd_notezBaccount was re-locked, but active credential cleanup also failed: )r@  r  rA  r   
set_lockedr   r*   _read_default_pointer_deactivate_locked_account_sync_active_links	Exceptionr   hasattrr\  _touch_ratelimit_wake)r\   r   rZ  r  r  changedr}   relock_errorcleanup_errorrestore_exccleanup_excs   &&&        r   r]  AccountRegistry.set_locked  s   $$&&6:6I6I6KJ6WX6WU==6WKX&tn$))44TYY__dSG '& ))+t3 33D9//5, &&(M '&X % 9=:>7 //::499??DRVW( 7+6L78 ;;DA( 8,7M8'3". X##/0 )4j9Q9QLL!++8/!; )! '&&s   GC6AGG7G
C;G6G;GF?1D=<F?=E	E	
F?E	F?E*)F?*F	5E<	7F?<F	>F??GGG	c                    V ^8  d   QhRRRR/# )r   rL  r   r   rN   r   )r   s   "r   r    r   %  s      7 t r!   c                	   V P                  4       ;_uu_ 4        V P                  VP                  4      '       d,   \        V P                  P
                  VP                  34      hV P                  4       pV P                  VP                  4        V P                  VP                  4        R R R 4       R #   \         d%    T P                  T4       T P                  T4       h i ; i  + '       g   i     R # ; ir.   )
r@  rR  r   r   r   r*   r^  _write_default_slugr`  ra  )r\   rL  previouss   && r   set_defaultAccountRegistry.set_default%  s    $$&&~~gll++(7<</JJ113H$$W\\2''5 '&  ((2''1 '&&s   A8C*B88/C''C**C;	c               $    V ^8  d   QhRRRRRR/# )r   r   r   	new_aliasr   r   )r   s   "r   r    r   2  s!      3 3 3 r!   c                	6  a VP                  4       pV'       g   \        R 4      hV P                  4       ;_uu_ 4        V P                  4       p\	        V3R lVR,           4       R4      pVf   \        S4      hV P                  W#R,          SR7       V P                  S4      '       d   SMV P                  VSR7      pVS8X  d"   W$R&   V P                  V4       SuuRRR4       # V P                  VSWR4       VuuRRR4       #   + '       g   i     R# ; i)zaccount label must not be emptyc              3  F   <"   T F  qR ,          S8X  g   K  Vx  K  	  R# 5ir   Nr   )rf   er   s   & r   rh   )AccountRegistry.rename.<locals>.<genexpr>8  s     O%9vY$=N!!%9s   !
!r3   Nown_slugr   )rd   rW   r@  r  r,  rA  _reject_name_collision_slug_is_pinnedr-  r  _reslug)r\   r   rq  r   r  r-  s   &f&   r   renameAccountRegistry.rename2  s    OO%	>??$$&&**,HOXj%9OQUVE}tn$''	J3GRV'W ''-- ]]9t]< 
 4!*g$$X. '& LL4=! '&&&s   B D(DD	c                    V ^8  d   QhRRRR/# rP  r   )r   s   "r   r    r   H  s     
 
C 
D 
r!   c                	    V P                   \        P                  8H  ;'       d4    V\        8H  ;'       d#    \        P
                  P                  R 4      R8g  # )SYSTRAY_ALLOW_ROY_GROK_MUTATION1)r   r   r   PROTECTED_GROK_SLUGosenvironry   rS  s   &&r   rz  AccountRegistry._slug_is_pinnedH  sQ    II,111 I I++I I

@ASH	
r!   c          
     ,    V ^8  d   QhRRRRRRRRRR/# )	r   r   r2   r   r   r-  rq  r   rN   r   )r   s   "r   r    r   O  s<     - -- - 	-
 - 
-r!   c           	     	v   V P                   V,          pV P                   V,          pVP                  4       '       g   VP                  4       '       d   \        R V 24      hRVR,           Uu. uF  pVR,          V8X  d   / VCRVRV/CMTNK  	  upRVR,           Uu. uF  qV8w  g   K  VNK  	  up/p	V P	                  4       p
W8X  d   TMT
pV P                  4       pV P                  P                  4       p\        V P                  P                  V4      p\        V P                  P                  V4      pWV9   WV9   /pVP                  4       pV'       d   \        P                  ! WV4        V P                  P                  V P                  P                  W#4       V P                  W4       V P                  W#4       R# u upi u upi   \          d^    T'       d   \        P                  ! Ye4       T P#                  T4       T P                  P%                  T4       T P                  Y4       h i ; i)z"account directory already in use: r3   r   r   r4   N)r   r  
is_symlinkFileExistsErrorr^  _read_sidecar_stater   locked_keysr   r   r*   r  replacerekey_write_account_state_rekey_sidecar_statera  _restore_sidecar_staterestore_key_states)r\   r   r   r-  rq  account_dir
target_dirru  deletednext_registryprevious_defaultnext_defaultsidecarslock_snapshotold_lock_keynew_lock_keylock_statesmoveds   &&&&&             r   r{  AccountRegistry._reslugO  s	    ''$.&&1
*"7"7"9"9!$Fxj"QRR !*--A @AyD?P;1;fh;VWW- #'/0F'G%'GGV^K^'G%(
  557#3#;xAQ++-++779"499??D9"499??H=-7-7

 ""$JJ{/
	%%diiootF%%mB%%d53%,  	

:3''122;?%%hA	s&   -#GG
+G
2AG H8#AH8c                   V ^8  d   QhRR/# )r   r   ztuple[Path, ...]r   )r   s   "r   r    r   ~  s       0 r!   c                	    V P                   .pV P                  e   VP                  V P                  4       \        V4      # r.   )r   r   r  tuple)r\   pathss   & r   _sidecar_pathsAccountRegistry._sidecar_paths~  s8    ''("".LL001U|r!   c                   V ^8  d   QhRR/# )r   r   dict[Path, str | None]r   )r   s   "r   r    r     s      %; r!   c                	    / pV P                  4        F  p VP                  R R7      W&   K  	  V#   \         d	    RY&    K0  i ; i)rH  rI  N)r  rK  r)  )r\   statepaths   &  r   r  #AccountRegistry._read_sidecar_state  sP    (*'')D#"nngn> *
   #"#s   1AAc                    V ^8  d   QhRRRR/# )r   r  r  r   rN   r   )r   s   "r   r    r     s     7 7,B 7t 7r!   c                	    VP                  4        F-  w  r#Vf   V P                  V4       K  V P                  W#4       K/  	  R # r.   )items_remove_pathr  )r\   r  r  contents   &&  r   r  &AccountRegistry._restore_sidecar_state  s5    "[[]MD!!$'''6	 +r!   c               $    V ^8  d   QhRRRRRR/# r   r   r   r-  r   rN   r   )r   s   "r   r    r     s!     2 2 2 2 2r!   c                	J    V P                  W4       V P                  W4       R # r.   )_rekey_health_cache_rekey_routing_rules)r\   r   r-  s   &&&r   r  $AccountRegistry._rekey_sidecar_state  s      0!!$1r!   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r    r     s!     
 
 
s 
t 
r!   c                	    V P                  V P                  4      pW9  d   R # VP                  V4      W2&   V P                  V P                  \        P
                  ! VRR7      4       R # )NT)	sort_keys)_load_json_objectr   r   r  jsondumps)r\   r   r-  r  s   &&& r   r  #AccountRegistry._rekey_health_cache  sV    (()?)?@#KK-""DJJw$$G	
r!   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r    r     s!         r!   c                	@   V P                   f   R # V P                  V P                   4      pV'       g   R # RpVP                  R4      p\        V\        4      '       dN   VP                  4        F9  p\        V\        4      '       g   K  VP                  R4      V8X  g   K3  W&R&   RpK;  	  VP                  R4      V8X  d   W#R&   RpVP                  R4      p\        V\        4      '       d&   W9   d    V Uu. uF  qV8X  d   TMTNK  	  upVR&   RpVP                  R4      p	\        V	\        4      '       d   W9   d   V	P                  V4      W&   RpV'       d<   V P                  V P                   \        P                  ! V^R7      R	,           4       R # R # u upi )
NFprojectsrL  Tdefaultfallback_chainaccount_capsindentr  )r   r  ry   rV   rt   rx   r;  r   r  r  r  )
r\   r   r-  rulesrd  r  routechainrg   capss
   &&&       r   r  $AccountRegistry._rekey_routing_rules  s\   ""*&&t'>'>?99Z(h%%!*eT**uyy/Ct/K'/)$"G + 99Y4'')G		*+eT""t}V[&\V[d4<xT'IV[&\E"#Gyy(dD!!dl!XXd^DNG##''E!)Dt)K  ']s   9Fc                    V ^8  d   QhRRRR/# r   r   r   r   rN   r   )r   s   "r   r    r     s     

 

 

 

r!   c                	b   V P                   f   R # V P                  V P                   4      pV'       d   VP                  R4      MR p\        V\        4      '       d   W9  d   R # VP                  V4       V P                  V P                   \        P                  ! V^R7      R,           4       R # )Nr  r  r  )	r   r  ry   rV   rt   r   r  r  r  )r\   r   r  r  s   &&  r   _drop_routing_rules_account+AccountRegistry._drop_routing_rules_account  s    ""*&&t'>'>?,1uyy(t$%%)9##TZZa%@4%G	
r!   rx  c               (    V ^8  d   QhRRRRRRRR/# )	r   r   r   r3   list[dict[str, str]]rx  r   r   rN   r   )r   s   "r   r    r     s8     N NN 'N
 N 
Nr!   c               	Z   VP                  4       pT\         Uu0 uF  qUP                  4       kK  	  up9   d   \        R V 24      hV FY  pVR,          V8X  d   K  VR,          P                  4       V8X  g   VR,          P                  4       V8X  g   KM  \        RV 24      h	  R# u upi )zreserved account name: r   r   zaccount name already in use: N)casefoldRESERVED_SLUGSrW   r  )r\   r   r3   rx  cfreservedr  s   &&&$   r   ry  &AccountRegistry._reject_name_collision  s     ]]_nEn(##%nEE6tf=>>EV}(V}%%'2-w1H1H1Jb1P%(EdV&LMM	  Fs   B(c                    V ^8  d   QhRRRR/# )r   rl   r   r   r   r   )r   s   "r   r    r     s      3 : r!   c                	,   VP                  4       pV'       g   R # V P                  4       R,          pV F  pVR,          V8X  g   K  VR,          u # 	  VP                  4       pV F*  pVR,          P                  4       V8X  g   K!  VR,          u # 	  R # )Nr3   r   r   )rd   r  r  )r\   rl   r3   r  r  s   &&   r   resolve_profile_token%AccountRegistry.resolve_profile_token  s    &&(4EV}%V}$  ^^EW~&&(B.V}$  r!   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r    r     s     -* -*3 -*4 -*r!   c                	    V P                   \        P                  8X  d;   V\        8X  d0   \        P
                  P                  R 4      R8w  d   \        R4      hV P                  4       ;_uu_ 4        V P                  4       pVR,          pV Uu. uF  qDR,          V8w  g   K  VNK  	  pp\        V4      \        V4      8X  d   \        V4      hV P                  V,          pV P                  RV R\        P                  ! 4       P                   2,          pV P!                  4       pV P#                  WXVR7      p	/ VCRTRV P                   \        P$                  8X  d   \'        0 VR,          mVk4      MVR,          /Cp
V P)                  4       p\+        V P                   P,                  V4      pWP.                  P1                  4       9   p\        P2                  ! Wg4        V P5                  W4       V P7                  V4       V P.                  P9                  V P                   P,                  V4       \B        PD                  ! T4       R	R	R	4       R	# u upi   \:         d    TP=                  4       '       d-   TP=                  4       '       g   \        P2                  ! Yv4       T P?                  T4       T P.                  PA                  Y/4       T P5                  Y(4       h i ; i  + '       g   i     R	# ; i)
r  r  zFroy-grok is protected; set SYSTRAY_ALLOW_ROY_GROK_MUTATION=1 to remover3   r   .z.quarantine-)removed_slugr4   N)#r   r   r   r  r  r  ry   PermissionErrorr@  r  r   rA  r   uuiduuid4hexr^  _select_default_slugr   r   r  r   r*   r   r  r  r  r  dropra  r  r  r  r  rmtree)r\   r   r   current_accountsr  new_accountsr  quarantine_dirr  r  r  r  lock_keylock_was_sets   &&            r   removeAccountRegistry.remove  s~   II,111++

@ASH!X  $$&&**,H'
3/?Y/?e=TXCXEE/?LY< C(8$99tn$++d2K!..1TF,tzz|GWGWFX1YYN#99;44\bf4gLL&yy$7$=$== DX&<=DtDE!"89M //1H"499??D9H#':':'F'F'HHLJJ{3
))-F006##(($? MM.)I '& Z4  !((**;3E3E3G3GJJ~;++H5##667OP))(E; '&&sK   2K,I$I*D:K,%AI7K,K, K)=K)AK))K,,K=	c                    V ^8  d   QhRRRR/# )r   rawr   r   r   )r   s   "r   r    r     s      # # r!   c           
     	    \         P                  ! R R\         P                  ! RRVP                  4       P                  4       4      4      P                  R4      pV'       g   \	        R4      hV# )z-+-z
[^a-z0-9]+zaccount slug cannot be empty)rX   subrd   rp   rW   )r\   r  bases   && r   normalize_slugAccountRegistry.normalize_slug  sP    vveS"&&SYY[=N=N=P"QRXXY\];<<r!   c               $    V ^8  d   QhRRRRRR/# )r   r   r   rx  r   r   r   )r   s   "r   r    r     s!     " "c "Z "3 "r!   c                	R    V P                  V4      pV\        9   d   \        RV 24      hV P                  4       R,           Uu0 uF  pVR,          V8w  g   K  VR,          kK  	  ppW59  d   V# ^pV RV 2V9   d   V^,          pK  V RV 2#   \         d    R p Li ; iu upi )rL  reserved account slug: r3   r   r  )r  rW   r  r  )r\   r   rx  r  r  rM  suffixs   &&&    r   r-  AccountRegistry.new_slug  s    	&&u-D >!6tf=>> ,,.z:
:V}( E&MM: 	 

 Kax E)aKFq!!  	D	
s   B B$B$B! B!c               $    V ^8  d   QhRRRRRR/# )r   r   r   r   r   r	   r   )r   s   "r   r    r   0  s!      C   r!   c                	p   V\         9   d   \        R V 24      hV P                  4       ;_uu_ 4        V P                  4       pV P	                  W#R,          VR7       V P
                  V,          V P                  ,          pVP                  RRR7       V P                  \        P                  8X  d   V P                  V4       VR,          P                  RVRV/4       VR,           Uu. uF  pWQ8w  g   K  VNK  	  upVR&   V P                  V4       R	R	R	4       V# u upi   + '       g   i     X# ; i)
r  r3   rw  TFr   r   r   r4   N)r  rW   r@  r  ry  r   r   r  r   r   r   r  r  r  )r\   r   r   r   r   deleted_slugs   &&&   r   add_dirAccountRegistry.add_dir0  s#   >!6tf=>>$$&&**,H''
/Cd'S,,t3d6M6MMLte<yy/555&&|4Z ''w(FG %--C$D0$DL' $D0H+,
   * ' 0 '& s$   B9D$+D8D>D$D$$D5	c               $    V ^8  d   QhRRRRRR/# )r   r   r   r   r   r   r   r   )r   s   "r   r    r   C  s!     
 
s 
* 
 
r!   c           	     	n   V P                  4       ;_uu_ 4        V P                  4       pVf   V P                  V4      pMV P                  V4      pV\        9   d   \        RV 24      hVR,           Uu0 uF  qDR,          kK  	  ppW%9   g(   V P                  V,          P                  4       '       d   \        V4      hV P                  WR,          VR7       \        \        P                  ! RV R2V P                  R7      4      pW`P                  ,          p VP                  RR	R
7       V P                  \         P"                  8X  d   V P%                  V4       R R R 4       \-        T TTXXR7      # u upi   \&         d    \(        P*                  ! TRR7       h i ; i  + '       g   i     LM; i)Nr  r3   r   rw  r  z.staged-)prefixdirTFr   ignore_errors)r   r   r   r   r   )r@  r  r-  r  r  rW   r   r  r  ry  r	   tempfilemkdtempr   r  r   r   r   r  ra  r  r  r   )r\   r   r   r   r  r  
staged_dirr   s   &&&     r   	stage_addAccountRegistry.stage_addC  s   $$&&**,H|}}U+**40>)$'>tf%EFF:B::NO:NV}}:NO&4+<+<t+C*K*K*M*M)$//''
/Cd'Sh..$x6HdN_N_`aJ%(?(??L""4%"@99 3 9 99**<8# '* %"
 	
 P  j=% '&s8   AF$5E7.F$5A&F$AE<7F$<%F!!F$$F4	c                    V ^8  d   QhRRRR/# )r   r   r	   r   
list[Path]r   )r   s   "r   r    r   a  s     H Hd Hz Hr!   c                	X    V P                   f   . # V P                   P                  V4      # r.   )r   r  )r\   r   s   &&r   r  !AccountRegistry.sync_shared_linksa  s*    ##+I''99,GGr!   c                   V ^8  d   QhRR/# )r   r   r  r   )r   s   "r   r    r   f  s     @ @z @r!   c                	V    V P                   f   . # V P                   P                  4       # r.   )r   sync_all_shared_linksr[   s   &r   r  %AccountRegistry.sync_all_shared_linksf  s(    ##+I''==??r!   c                   V ^8  d   QhRR/# )r   r   r2   r   )r   s   "r   r    r   k  s     
 
 
r!   c           
     	   V P                   P                  4       '       g   R . R. /# \        P                  ! V P                   P	                  RR7      4      pVP                  R 4      pVP                  R. 4      p\        V\        4      '       d   \        V\        4      '       g   R . R. /# R \        V4      RV Uu. uF  p\        V\        4      '       g   K  VNK  	  up/# u upi )r3   r4   rH  rI  )	r   r  r  loadsrK  ry   rV   r;  r   )r\   datar3   r4   r   s   &    r   r  AccountRegistry._read_registryk  s    !!((**$:B??zz$,,666HI88J'#xx(>C(D))<PRV1W1W$:B??X"!5%!5D#9N!5%
 	
%s   <C#
C#
c                    V ^8  d   QhRRRR/# )r   r   r2   r   rN   r   )r   s   "r   r    r   z  s     
 
 
$ 
r!   c           	     	z    V P                  V P                  \        P                  ! V^RR7      R,           4       R# )r   F)r  r  r  N)r  r   r  r  )r\   r   s   &&r   r  AccountRegistry._write_registryz  s.    JJxU;dB	
r!   c                    V ^8  d   QhRRRR/# )r   r  dict[str, object]r   r   r   )r   s   "r   r    r     s     
 
): 
w 
r!   c                	h   VP                  R 4      pVP                  R4      p\        V\        4      '       d'   V'       d   \        V\        4      '       d	   V'       g   \        R4      hV P                  V,          V P
                  ,          pV P                  WB4      p\        \        V P                  P                  V4      VVVP                  R4      VP                  R4      VP                  R4      \        P                  VP                  R4      V P                  P                  R7      R7      # )	r   r   z!account registry entry is invalidr   r   r   r   )rH   )r   r   r   r   r   r   r   )ry   rV   r   rW   r   r   _read_account_metadatar   r   r   r*   rD   r   )r\   r  r   r   r   r  s   &&    r   r9  #AccountRegistry._account_from_entry  s    yy 		'"$$$D
5#8N8NV[@AA((4/$2I2II--lA499??D1%++g&V${{<0.88		-. 9 

 
	
r!   c                    V ^8  d   QhRRRR/# )r   r  r  r   rJ   r   )r   s   "r   r    r     s     E E1B Et Er!   c                	v   VP                  R 4      p\        V\        4      '       d	   V'       g   R# V P                  V,          V P                  ,          pVR,          p \
        P                  ! VP                  RR7      4      pT P                  T4      '       g   R# T P                  T4      '       d   R# T P                  Y24      p\        ;QJ d*    R TP                  4        4       F  '       g   K   R# 	  R# ! R TP                  4        4       4      #   \        \
        P                  3 d     R# i ; i)r   Fr"  rH  rI  Tc              3  (   "   T F  qR Jx  K
  	  R # 5ir.   r   )rf   r*   s   & r   rh   >AccountRegistry._should_list_claude_account.<locals>.<genexpr>  s     D2C$2Cs   )ry   rV   r   r   r   r  r  rK  r)  JSONDecodeError_contains_token_key_contains_non_empty_tokenr  rw   rx   )r\   r  r   r   r.  r  r2  s   &&     r   r8  +AccountRegistry._should_list_claude_account  s    yy $$$D((4/$2I2II'*==	jj!1!;!;W!;!MNG ''00))'22..|BsD(//2CDssDsDsD(//2CDDD --. 		s    &D D87D8c                    V ^8  d   QhRRRR/# r   r*   r`   r   rJ   r   )r   s   "r   r    r     s     	 	6 	d 	r!   c                	   \        V \        4      '       df   V P                  4        FQ  w  r\        V\        4      '       d   R VP	                  4       9   d    R# \
        P                  V4      '       g   KP   R# 	  \        V \        4      '       d5   \        ;QJ d    R V  4       F  '       g   K   R# 	  R# ! R V  4       4      # R# )rl   Tc              3  L   "   T F  p\         P                  V4      x  K  	  R # 5ir.   )r   r%  re   s   & r   rh   6AccountRegistry._contains_token_key.<locals>.<genexpr>  s     SUT::4@@U   "$F)	rV   rt   r  r   rp   r   r%  r;  rw   r*   rq   nesteds   &  r   r%  #AccountRegistry._contains_token_key  s    eT""${{}c3''Gsyy{,B"66v>>	  -
 eT""3SUS33S3S3SUSSSr!   c                    V ^8  d   QhRRRR/# r)  r   )r   s   "r   r    r     s     
 
 
D 
r!   c                	   \        V \        4      '       d   V P                  4        F}  w  r\        V\        4      '       dE   R VP	                  4       9   d0   \        V\        4      '       d   VP                  4       '       d    R# \        P                  V4      '       g   K|   R# 	  \        V \        4      '       d5   \        ;QJ d    R V  4       F  '       g   K   R# 	  R# ! R V  4       4      # R# )rl   Tc              3  L   "   T F  p\         P                  V4      x  K  	  R # 5ir.   )r   r&  re   s   & r   rh   <AccountRegistry._contains_non_empty_token.<locals>.<genexpr>  s      YSX4@@FFSXr-  F)
rV   rt   r  r   rp   rd   r   r&  r;  rw   r.  s   &  r   r&  )AccountRegistry._contains_non_empty_token  s    eT""${{}c3''Gsyy{,B!&#..6<<>>#"<<VDD  - eT""3YSXY33Y3Y3YSXYYYr!   c               $    V ^8  d   QhRRRRRR/# )r   r   r	   r   r   r   dict[str, str | None]r   )r   s   "r   r    r     s)     M M M(+M	Mr!   c                	  a V P                   \        P                  8X  dw   V P                  VR ,          4      oV P	                  VR,          4      pR Uu/ uF9  pTSP                  V4      e   SP                  V4      MVP                  V4      bK;  	  up# V P                   \        P                  8X  du   V P                  VR ,          4      o\        ;QJ d    V3R lR 4       F  '       g   K   RM	  RM! V3R lR 4       4      '       d   S# V P                  VR,          VR7      # V P                  VR,          VR7      # u upi )zaccount_identity.jsonr&  c              3  F   <"   T F  pSP                  V4      x  K  	  R # 5ir.   r$  )rf   rq   identity_payloads   & r   rh   9AccountRegistry._read_account_metadata.<locals>.<genexpr>  s"     X8W#'',,8Ws   !TFr
  )r   )r   r   r   )
r   r   r   _decode_account_identity_filer*  ry   r   rw   _decode_grok_auth_filer  )r\   r   r   legacy_payloadrq   r:  s   &&&  @r   r  &AccountRegistry._read_account_metadata  s9    99+222#AA66  "55l]6RSN
 ;	 ;C #'',8 &))#.#'',- ;	  99+000#AA66  sX8WXsssX8WXXX''..|k/IPT.UU%%l[&@t%LLs   ?Ec               $    V ^8  d   QhRRRRRR/# r   r  r	   r   r   r   r7  r   )r   s   "r   r    r     s'     G G4 Gz GMb Gr!   c           
     	v    \         P                  ! VP                  R R7      4      p\        V\        4      '       g   \        R4      hVP                  4        F  p\        V\        4      '       g   K  VP                  R4      pVP                  R4      ;'       g    VP                  R4      pR\        V\        4      '       d   TMRRRR	\        V\        4      '       d   TMR/u # 	  \        R
4      h  \         d8   pTe"   \        RT RT 2\        P                  R7       RRRRR	R/u Rp?# Rp?ii ; i)rH  rI  znot an objectr   principal_iduser_idNr   r   r   zno auth entryz(failed to decode grok auth for account '': file)r  r  rK  rV   rt   rW   rx   ry   r   ra  printsysstderr)r\   r  r   r  r  r   r   r}   s   &&&     r   r=  &AccountRegistry._decode_grok_auth_file  s   	Gjj!ABGgt,, 11 )!%..		'*"YY~6NN%))I:N
j&<&<U$F 
:s0K0K*QU  * _-- 	G@c#OVYV`V`aT66<FF	Gs+   BC6 AC6 )C6 6D8,D3-D83D8c               $    V ^8  d   QhRRRRRR/# rA  r   )r   s   "r   r    r     s'     E Ed E* EH] Er!   c           	     	    \         P                  ! VP                  R R7      4      pVR,          R,          pVP                  R4      p\	        V4      ^8  d   \        R4      hV P                  V^,          4      pVP                  \        4      p\        V\        4      '       g   / pV P                  VP                  R4      VP                  R4      VP                  R4      VP                  R	4      VP                  R4      4      pR
VP                  R
4      RVRVP                  R4      /#   \         d8   p	Te"   \        RT RT	 2\        P                  R7       R
RRRRR/u Rp	?	# Rp	?	ii ; i)rH  rI  tokensid_tokenr  zinvalid jwtchatgpt_plan_typer   subscription_typesubscriptionTyper   r   chatgpt_account_idNz(failed to decode auth.json for account 'rE  rF  )r  r  rK  splitr   rW   _decode_jwt_payloadry   AUTH_NAMESPACErV   rt   _normalize_codex_planra  rH  rI  rJ  )
r\   r  r   r  rl   partsdecodedauth_claimsr   r}   s
   &&&       r   r  !AccountRegistry._decode_auth_file  sQ   	Ejj!ABGH%j1EKK$E5zA~ //..uQx8G!++n5Kk400 -- 34' 34 23F#D W-koo.BC 
  	E@c#OVYV`V`aT64tDD	Es   D,D/ /E1:,E,&E1,E1c                    V ^8  d   QhRRRR/# r   r  r	   r   r7  r   )r   s   "r   r    r     s     
 
$ 
;P 
r!   c           	     	    \         P                  ! VP                  R R7      4      p\        T\        4      '       g	   RRRRRR/# TP                  R4      pTP                  R4      pTP                  R4      pR\        T\        4      '       d   TMRR\        T\        4      '       d   TMRR\        T\        4      '       d   T/# R/#   \        \         P                  3 d    RRRRRR/u # i ; i)rH  rI  r   Nr   r   org_idrQ  	r  r  rK  r)  r$  rV   rt   ry   r   )r\   r  r  r   r   r   s   &&    r   r<  -AccountRegistry._decode_account_identity_file  s    	Ejj!ABG '4((T64tDDG$[[*
{{./j44U$JtS11Dt
:s(C(C*
 	
 JN
 	
 --. 	ET64tDD	Es   &C
 
#C0/C0c                    V ^8  d   QhRRRR/# r]  r   )r   s   "r   r    r     s     
 
 
1F 
r!   c           	     	p    \         P                  ! VP                  R R7      4      p\        T\        4      '       g	   RRRRRR/# TP                  R4      p\        T\        4      '       g   / pTP                  R4      p\        T\        4      '       g   TP                  R4      pTP                  R4      p\        T\        4      '       g   TP                  R	4      p\        T\        4      '       g   TP                  R4      pTP                  R
4      p\        T\        4      '       g   TP                  R4      pR\        T\        4      '       d   TMRR\        T\        4      '       d   TMRR\        T\        4      '       d   T/# R/#   \        \         P                  3 d    RRRRRR/u # i ; i)rH  rI  r   Nr   r   oauthAccountemailAddressorganizationRateLimitTierseatTieraccountUuiduserIDr`  )r\   r  r  oauth_accountr   r   r   s   &&     r   r*  #AccountRegistry._decode_claude_file  s   	Ejj!ABG '4((T64tDDN3-..M!!.1%%%KK/E  !<=$$$ $$Z0D$$$;;v&D"&&}5
*c** X.Jj44U$JtS11Dt
:s(C(C*
 	
 JN
 	
+ --. 	ET64tDD	Es   &F #F54F5c                    V ^8  d   QhRRRR/# )r   r   r	   r   rJ   r   )r   s   "r   r    r   C  s      $ 4 r!   c                	x   V P                   \        P                  8w  d   R # V P                  V P                  4      pV P
                   Uu/ uF  pW29   g   K  W2V,          bK  	  ppV P                  V4      pVP                  4       '       dC    \        P                  ! VP                  RR7      4      p\        T\        4      '       g   R # TpM/ p/ VCVCRR/CpW8X  d   R# V P                  V\        P                   ! V^R7      R,           4       R# u upi   \        \        P                  3 d     R # i ; i)FrH  rI  hasCompletedOnboardingTr  r  )r   r   r   r  r   _FIRST_RUN_SUPPRESSOR_KEYS_claude_metadata_pathr  r  r  rK  r)  r$  rV   rt   r  r  )	r\   r   sourcerq   flagstargetloadedr  mergeds	   &&       r   _seed_first_run_flags%AccountRegistry._seed_first_run_flagsC  s'    99+222''(?(?@ 66
6} C6 	 

 ++L9==??F$4$4g$4$FG fd++GGEEEWE&>E

6!(Dt(KL)
 T112 s   DD&D D98D9c                   V ^8  d   QhRR/# rM   r   )r   s   "r   r    r   b  s     
 
 
r!   c                	   V P                   R ,          pVP                  4       '       g   R# V P                   R,          pVP                  RRR7       \        P                  ! \
        4      P                  R4      p\        P                  ! WRV 2,          4       \        VP                  R4      RR7      pVR	,           F  pVP                  4        K  	  R# )
zsettings.jsonNbackupsTr   z%Y%m%dT%H%M%S.%fZzsettings.json.zsettings.json.*)reverse:   NN)r   r  r  r   nowr   strftimer  copyfiler   r  unlink)r\   settingsbackups_dir	timestamprz  stales   &     r   _backup_claude_settings'AccountRegistry._backup_claude_settingsb  s    **_<  --	9$6LL%../BC	.0L"LM))*;<dKR[[ELLN !r!   c                    V ^8  d   QhRRRR/# )r   r  r	   r   rt   r   )r   s   "r   r    r   o  s     < < < <r!   c                	     \         P                  ! V P                  R R7      4      p\        T\        4      '       d   T# / #   \        \         P                  3 d    / u # i ; i)rH  rI  )r  r  rK  r)  r$  rV   rt   )r  r  s   & r   r  !AccountRegistry._load_json_objectn  sZ    	jj!ABG %Wd33w;; --. 	I	s   &A A"!A"c                    V ^8  d   QhRRRR/# )r   r2  r7  r   r   r   )r   s   "r   r    r   v  s      -B s r!   c                	    VP                  R 4      p\        V\        4      '       d0   VP                  4       '       d   VP	                  R^4      ^ ,          # R# )r   @legacy)ry   rV   r   rd   rT  )r\   r2  r   s   && r   r+  $AccountRegistry._legacy_claude_aliasv  s@    W%eS!!ekkmm;;sA&q))r!   c                    V ^8  d   QhRRRR/# )r   
candidatesr`   r   r   r   )r   s   "r   r    r   }  s     
 
6 
j 
r!   c                 	    V  FN  p\        V\        4      '       g   K  VP                  4       pV'       g   K5  VP                  4       R 8X  d   KL  Vu # 	  R# )profileN)rV   r   rd   rp   )r  	candidate
normalizeds   *  r   rW  %AccountRegistry._normalize_codex_plan|  sM    #Ii--"*J!Y. $ r!   c                    V ^8  d   QhRRRR/# )r   segmentr   r   rt   r   )r   s   "r   r    r     s     0 0S 0T 0r!   c                	    R \        V 4      ) ^,          ,          p\        P                  ! W,           4      p\        P                  ! VP                  R4      4      # )=rH  )r   base64urlsafe_b64decoder  r  decode)r  paddingr  s   &  r   rU  #AccountRegistry._decode_jwt_payload  sB    #g,*+''(9:zz$++g.//r!   c               $    V ^8  d   QhRRRRRR/# )r   r  r	   r  r   r   rN   r   )r   s   "r   r    r     s!     
$ 
$ 
$ 
$ 
$r!   c                	8   V P                   P                  R R R7       \        P                  ! RRV P                   RR7      ;_uu_ 4       pVP	                  V4       VP
                  pRRR4       \        P                  ! XV 4       R#   + '       g   i     L); i)Tr   wrH  F)rJ  r  deleteN)r   r  r  NamedTemporaryFilewriter   r  r  )r  r  handle	temp_names   &&  r   r  "AccountRegistry._atomic_write_text  sv    $6((	
 

 LL!I
 	

9d#
 
s   
B		B	c               $    V ^8  d   QhRRRRRR/# )r   rq  r	   rs  r   rN   r   )r   s   "r   r    r     s!     & & &d &t &r!   c                	   V P                  4       '       g   \        V 4      hVP                  P                  R R R7       VP                  RVP                   R\
        P                  ! 4        2,          pVP                  4       '       g   VP                  4       '       d   VP                  4        VP                  V 4       \
        P                  ! W!4       R# )Tr   r  z.tmp-N)r  FileNotFoundErrorr   r  r   r  getpidr  r  
symlink_tor  )rq  rs  	temp_paths   && r   _atomic_symlinkAccountRegistry._atomic_symlink  s    }}#F++D48MMa}E"))+$GG	!5!5!7!7V$


9%r!   c                    V ^8  d   QhRRRR/# )r   stagedr   r   r   r   )r   s   "r   r    r     s     V V] Vw Vr!   c                	   V P                  VP                  4       V P                  VP                  ,          pV P	                  4       ;_uu_ 4        V P                  4       pVR ,           Uu0 uF  qDR,          kK  	  ppVP                  V9   g   VP                  4       '       d   \        VP                  4      hV P                  VP                  VR ,          VP                  R7       \        P                  ! VP                  V4        VR ,          P                  RVP                  RVP                  /4       VR,           Uu. uF  pWaP                  8w  g   K  VNK  	  upVR&   V P                  V4        RRR4       TP!                  4        T P#                  RTP                  RTP                  /4      # u upi u upi   \         d#    \        P                  ! Y!P                  4       h i ; i  + '       g   i     L; i)r3   r   rw  r   r4   N)rv  r   r   r   r@  r  r  r  ry  r   r  r  r   r  r  ra  r   r9  )r\   r  	final_dirr   r  r  r  s   &&     r   r   &AccountRegistry._commit_staged_account  s   ""6#6#67%%3	$$&&**,H6>z6JK6JU==6JKK{{k)Y-=-=-?-?%fkk22''$ (  JJv))95
$++VV[['6<<,XY )11G(H4(H#{{2 !L(H4/0
 $$X.' '0 	''gv||(TUU/ L4  

9&8&89) '&sO   G8-F>>(G8'A%G8;GGG%G>G8G-G55G88H	c                    V ^8  d   QhRRRR/# )r   r  r   r   rN   r   )r   s   "r   r    r     s      }  r!   c                	j    \         P                  ! VP                  R R7       VP                  4        R# )Tr  N)r  r  r   r   )r\   r  s   &&r   r   (AccountRegistry._rollback_staged_account  s"    f((=r!   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r    r     s     < <D <r!   c              #  	(  "   V P                   P                  R R R7       V P                  P                  RRR7      ;_uu_ 4       p\        P
                  ! VP                  4       \        P                  4        V P                  x  \        P
                  ! VP                  4       \        P                  4        RRR4       R#   \        P
                  ! TP                  4       \        P                  4       i ; i  + '       g   i     R# ; i5i)Tr   za+rH  rI  N)	r   r  r  openfcntlflockfilenoLOCK_EXLOCK_UN)r\   r  s   & r   r@  "AccountRegistry._account_root_lock  s     t<__!!$!99VKK7<oo%FMMOU]]; :9
 FMMOU]]; :99s6   AD4C>:C3C><
D5C;;C>>D			Dc               $    V ^8  d   QhRRRRRR/# )r   r   r2   r   r   r   rN   r   )r   s   "r   r    r     s"     2 2] 2* 2Y] 2r!   c                	    VR J;'       d    V P                  V4      pV P                  V4       V P                  V4       V'       d   V P                  V4       R # V P	                  V4       R # r.   )rR  r  rl  r_  r`  )r\   r   r   default_lockeds   &&& r   r  $AccountRegistry._write_account_state  sX    %T1RRdnn\6RX&  .++L9##L1r!   c                    V ^8  d   QhRRRR/# r   r   r   r   rN   r   )r   s   "r   r    r     s     @ @
 @t @r!   c                	    Vf   V P                  V P                  4       R # V P                  V P                  V R24       R # )Nr  )r  r   r  rS  s   &&r   rl  #AccountRegistry._write_default_slug  s:    <d//0 1 1dV2;?r!   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r    r     s     .% .%z .%d .%r!   c                	   Vf   V P                  4        R # V P                  V4      '       d   V P                  4        R # V P                  V,          V P                  ,          pV P                  \
        P                  8X  d   V P                  V4       V P                  4        V P                  4        V P                  VR,          V P                  R,          4       V P                  V4      pVP                  4       '       d   V P                  W0P                  4       MV P                  V P                  RR7       V P!                  4        R # V P                  \
        P"                  8X  d+   V P%                  VR,          4       V P!                  4        R # R pV P&                  e   V P&                  P)                  V4      pV P*                  R,          pVP-                  4       '       d   VP/                  4       MR pV P                  VR,          V4       Ve    V P&                  P1                  V4       V P!                  4        R #   \2         d    Te   T P                  Ye4       h i ; i)Nr"  Tsymlink_onlyr
  )_clear_active_linksrR  r   r   r   r   r   rv  r  _preserve_live_claude_grantr  r   rp  r  r   r  rc  r   _activate_grok_authr   preparer   r  readlinkactivatera  )r\   r   r   claude_json	pi_target
codex_linkprevious_codex_targets   &&     r   r`  "AccountRegistry._sync_active_links  s   <$$&>>$$$&((4/$2I2II99+222&&|4((*,,.  22''*== 44\BK!!##$$[2I2IJ!!$"9"9!M&&(99+000$$\K%?@&&(	) **2248I++k9
9C9N9N9P9P
 3 3 5VZ\K7D ""++I6
 	""$	  (4(()>Ks   I
 
"I,c                   V ^8  d   QhRR/# rM   r   )r   s   "r   r    r     s          T   r!   c                   V P                   R,          pVP                  4       '       g   VP                  4       '       g   R# \        R4      p\        R4      p VP	                  RR7      pT! 4       P                  T4      pTf   R# T P                  4        FX  pT! TP                  4      T8w  d   K  TP                  R,          pT P                  Yt4       \        P                  ! TR4        R# 	  \        R4      pTR	T R2,          p	T P                  Y4       \        P                  ! T	R4       R#   \
         d     R# i ; i)
a  Hand a vendor-written live grant back to its account before a symlink replaces it.

The Claude CLI replaces the activation symlink with a regular file whenever it writes
tokens, so the grant it rotates lives only in the live home until the next activation.
r"  Nr   r   rH  rI    r   z
unclaimed-)r   r  is_filer+   rK  r)  account_uuid_forr;  r   r  r  chmod)
r\   livepinnedtoken_identity_clsr  
owner_uuidrL  rs  
rescue_dirrescues
   &         r   r  +AccountRegistry._preserve_live_claude_grant  s     &&)<<??DLLNN34)*?@	nngn6G ()::4@
yy{Gg**+z9)),??F##F4HHVU# # ""78

:,6GHH0
%  		s   D5 5EEc                    V ^8  d   QhRRRR/# )r   account_authr	   r   rN   r   )r   s   "r   r    r   4  s     3 3 3 3r!   c                   VP                  4       '       g   \        V4      hV P                  R,          pV P                  P                  RRR7       VP	                  4       '       dK   VP                  4       '       g5    VP                  4       VP                  4       8w  d   \        RV R24      h V P                  W4       R#   \         d   p\        RT 24      ThRp?ii ; i)a  Point ~/.grok/auth.json at account auth without losing a real file.

If legacy auth is a real file (not a symlink), it is left in place only
when content already matches the account file; otherwise we refuse to
clobber unless the account file was populated from that same content.
r
  Tr   zMrefusing to replace real ~/.grok/auth.json that differs from account auth at z; copy-import firstz cannot compare grok auth files: N)
r  r  r   r  r  r  
read_bytesr   r)  r  )r\   r  r  r}   s   &&  r   r  #AccountRegistry._activate_grok_auth4  s     ##%%#L11&&4##D4#@==??6#4#4#6#6V$$&,*A*A*CC&++7.8KM  D 	\2  V"%EcU#KLRUUVs   ?2C C$CC$c                   V ^8  d   QhRR/# rM   r   )r   s   "r   r    r   K  s      t r!   c                	n     V P                   R ,          P                  4        R#   \         d     R# i ; i)zratelimit-wakeN)r   touchr)  r[   s   &r   rc  %AccountRegistry._touch_ratelimit_wakeK  s/    	]]--446 		s   !% 44c                   V ^8  d   QhRR/# rM   r   )r   s   "r   r    r   T  s     
. 
.T 
.r!   c                	   V P                   \        P                  8X  dD   V P                  V P                  R ,          RR7       V P                  V P
                  RR7       R# V P                   \        P                  8X  d'   V P                  V P                  R,          RR7       R# V P                  V P                  R,          RR7       V P                  e   V P                  P                  4        R# R# )r"  Tr  Nr
  )r   r   r   r  r   r   r   r   r   r   clear_activer[   s   &r   r  #AccountRegistry._clear_active_linksT  s    99+222d558KKZ^_d55DI99+000d33kAPTU$00;>TR)++- *r!   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r    r   `  s     #% #%s #%t #%r!   c                   V P                   V,          V P                  ,          pV P                  \        P                  8X  dh   V P                  V P                  R,          VR,          4       V P                  V P                  V P                  V4      4       V P                  4        R# V P                  \        P                  8X  d=   V P                  V P                  R,          VR,          4       V P                  4        R# V P                  V P                  R,          VR,          4       V P                  e   V P                  P                  4        V P                  4        R# )a\  Remove live credentials while preserving vendor-rotated regular files.

The vendor CLIs may replace an activation symlink with a regular credential
file. Merely removing symlinks would leave that account directly usable after
it was locked, so a regular live file is atomically moved back into the selected
account before the live path is removed.
r"  Nr
  )r   r   r   r   r   _deactivate_live_pathr   r   rp  rc  r   r   r   r   r  )r\   r   r   s   && r   r_  *AccountRegistry._deactivate_locked_account`  s(    ((4/$2I2II99+222&&''*==22 &&''**<8 &&(99+000&&%%3{* &&(""""[0;&	
 )++-""$r!   c               $    V ^8  d   QhRRRRRR/# )r   activer	   account_copyr   rN   r   )r   s   "r   r    r     s!     & &d &$ &4 &r!   c                	   V P                  4       '       d   V P                  4        R # V P                  4       '       g   R # V P                  4       '       g   \	        RV  24      hVP
                  P                  RRR7        \        P                  ! W4       \        P                   ! TR4       R #   \         Ed   pTP                  \        P                  8w  d   h TP
                  RTP                   R\        P                  ! 4        2,          p \        P                  ! Y4       \        P                  ! Y14       T P                  4        TP                  4       '       g   TP                  4       '       d   TP                  4         R p?L  TP                  4       '       g   TP                  4       '       d   TP                  4        i i ; iR p?ii ; i)Nz4refusing to remove non-file active credential path: Tr   r  z.lock-move-r  )r  r  r  r  r   r   r  r  r  r)  errnoEXDEVr   r  r  r  r  )r  r  r}   	temporarys   &&  r   r  %AccountRegistry._deactivate_live_path  s[   MMO}}~~!UV\U]^__!!$!>	'JJv, 	u%  
	'yyEKK'$++,2C2C1DKPRPYPYP[}.]]I'V/

93##%%)=)=)?)?$$& ##%%)=)=)?)?$$& *@
	's=   B2 2G>AG<F+G=G,G?GGGc                    V ^8  d   QhRRRR/# )r   r   r	   r   r   )r   s   "r   r    r     s     , ,D ,T ,r!   c                	`    V R ,          p\         P                  V4      '       d   V# V R,          # )r   r&  )r   _has_claude_oauth_metadata)r   
dot_configs   & r   rp  %AccountRegistry._claude_metadata_path  s.    !N2
55jAAm++r!   c                    V ^8  d   QhRRRR/# )r   r  r	   r   rJ   r   )r   s   "r   r    r     s     / / /$ /r!   c                	    \         P                  ! V P                  R R7      4      p\        T\        4      '       g   R# TP                  R4      p\        T\        4      #   \        \         P                  3 d     R# i ; i)rH  rI  Frd  )r  r  rK  r)  r$  rV   rt   ry   )r  r  rj  s   &  r   r   *AccountRegistry._has_claude_oauth_metadata  sl    	jj!ABG '4((N3-.. --. 		s   &A! !B ?B c                   V ^8  d   QhRR/# rE  r   )r   s   "r   r    r     s      z r!   c                	    V P                   P                  4       '       g   R # V P                   P                  RR7      P                  4       pT;'       g    R # rG  )r   r  rK  rd   rS  s   & r   r^  %AccountRegistry._read_default_pointer  sH      ''))  **G*<BBD||tr!   c               (    V ^8  d   QhRRRRRRRR/# )r   r3   r  r  r   r  r   r   r   )r   s   "r   r    r     s2     	  	 &	  %	  		 
 
	 r!   c                	    V Uu0 uF  qDR ,          kK  	  ppW#8X  g   W%9  d   V'       d   V^ ,          R ,          # R# V# u upi rt  r   )r\   r3   r  r  r  remaining_slugss   &&&&  r   r  $AccountRegistry._select_default_slug  sJ     7??hU==h?+/?/V*28A;v&<< @s   A c               $    V ^8  d   QhRRRRRR/# )r   r  r	   r  rJ   r   rN   r   )r   s   "r   r    r     s!      4 t  r!   c                	    V'       d   V P                  4       '       g   R # V P                  4       '       g   V P                  4       '       d   V P                  4        R # R # r.   )r  r  r  )r  r  s   &&r   r  AccountRegistry._remove_path  s9     1 1;;==DOO--KKM .r!   )r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r.   )rn  lastOnboardingVersionmigrationVersion'officialMarketplaceAutoInstallAttempted officialMarketplaceAutoInstalledopusProMigrationCompletesonnet1m45MigrationComplete$hasResetAutoModeOptInForDefaultOfferinstallMethodautoUpdatesautoUpdatesProtectedForNative)F)Kr5   r6   r7   r8   r   r   r   r  r  r;  rB  r   rR  rW  r]  rn  r|  rz  r{  r  r  r  r  r  r  r  ry  r  r  r  r-  r  r	  r  r  r  r  r9  r8  staticmethodr%  r&  r  r=  r  r<  r*  ro  rv  r  r  r+  rW  rU  r  r  r   r   r   r@  r  rl  r`  r  r  rc  r  r_  r  rp  r   r^  r  r  r:   r   r!   r   r   r   2  sB    !%)-$7$=$=*.*.(,$(H=T(T*DXF(/DA'R,
-^72
:

N
  $N -*^"&&
<H
@



&E" 	 	 
 
M.G*E8
$
<">
 < < 
 
 0 0
 
$ 
$ & &V< < <2@.%`  D3.
.#%J & &0 , , / /	   r!   r   )claude_credentialsr   )r  r   )claude_health_clientr   )claude_identityr   )pi_auth_syncr   )shared_claude_stater   )shared_codex_stater   )5__conditional_annotations__
__future__r   r  r  r  r  r  rX   r  rI  r  r  
contextlibr   dataclassesr   r   r   enumr   pathlibr	   typingr
   r   account_lockr   r   r   runtime_pathsr   r%   r+   r0   rV  r2   r   r<   rD   r   r   r   r  r  r   r   r   r9   r   r   r   r   )r!  s   @r   <module>r*     s   " "     	 	  
   % ! "   ! J J % @HJE0EB /$I $
C  $Q
 Q
 Q
h $* * * c c cL$  ! 3 ;; 7 
 2 :6: 6    0T Tr!   