+
    5mji                       ^ RI H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 ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIH t H!t!H"t"H#t# ^ RI$H%t% ]%! 4       t&Rt'R R lt( ! R R])4      t*R R lt+R R lt,R R lt-R$R R llt.R$R R llt/R$R R  llt0R! R" lt1]2R#8X  d
   ]1! 4        R# R# )%    )annotationsN)Path)IO)AccountRegistryAccountRegistryKind)ClaudeAuthOperation)ClaudeHealthClient)DeviceAuthFlow)DeviceAuthOperation)GrokAuthOperation)GrokHealthClient)AccountHealthClient)	Indicator)CodexHealthAdapterCodexLifecycleAdapterProviderServiceMapProviderServices)runtime_dirzcodex-account-switcher.lockc                    V ^8  d   QhRRRR/# )   default_slugstrreturndict )formats   "`/home/user/overdeck-private-tests/workstation-ai-broad/modules/systray/systray_codex_switcher.py__annotate__r   !   s            c                    R / RV R. RRR^dR/ /# )projectsdefaultfallback_chainfallback_triggerbroken_or_quota_exhaustedquota_exhausted_threshold_pctaccount_capsr   )r   s   &r   default_routing_rulesr(   !   s+    B<"7' r   c                      ] tR t^,tRtR# )RoutingRulesSetupRequiredErrorr   N)__name__
__module____qualname____firstlineno____static_attributes__r   r   r   r*   r*   ,   s    r   r*   c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   0   s      4 r   c                      \         P                  R R R7       \         #   \         d>    \        \        P
                  ! 4       4      R,          p T P                  R R R7       T u # i ; i)Tparentsexist_okz
systray-ai)TRAY_DIRmkdirOSErrorr   tempfile
gettempdir)fallbacks    r   _runtime_tray_dirr;   0   sX    td3 ++-.=td3s    AA'&A'c                    V ^8  d   QhRRRR/# )r   kindr   r   zdict[str, object]r   )r   s   "r   r   r   :   s      #6 ;L r   c                `   R V /p\        \        \        4      '       d   \        P                  R8X  d{   \        P
                  ! \        4      P                  pRV9   d   \        4       VR&   V \        P                  8X  d.   RV9   d'   \        P                  ! 4       R,          R,          VR&   V# )r=   account_registrybase_dirpi_agent_dirz.piagent)
isinstancer   typer,   inspect	signature
parametersr;   r   CODEXr   home)r=   kwargsrG   s   &  r   _account_registry_kwargsrK   :   s    !'F/4((_-G-GK]-]&&7BB
#!2!4F:&,,,:1M%)YY[5%87%BF>"Mr   c               $    V ^8  d   QhRRRRRR/# )r   pathr   contentr   r   Noner   )r   s   "r   r   r   E   s!     
 
 
s 
t 
r   c                >   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                  4      pRRR4       XP                  V 4       R#   + '       g   i     L#; i)Tr2   wzutf-8F)encodingdirdeleteN)parentr6   r8   NamedTemporaryFilewriter   namereplace)rM   rN   handle	temp_paths   &&  r   _atomic_writer\   E   s{    KKdT2		$	$KK	
 

 
W%	
 d
 
s   
'BB	c               (    V ^8  d   QhRRRRRRRR/# )	r   rM   r   known_slugszset[str]r   z
str | Noner   rO   r   )r   s   "r   r   r   R   s2     Z Z
Z%Z5?Z	Zr   c                   V P                  4       '       d   R # V'       g   \        V P                   R24      hVe   W!9  d   \        V4      ^ ,          p\	        V \
        P                  ! \        V4      ^R7      R,           4       R # )Nz' setup required: no accounts registered)indent
)existsr*   rX   sortedr\   jsondumpsr(   )rM   r^   r   s   &&&r   seed_routing_rulesrf   R   sn     {{}},yyk@A
 	
 |>k*1-$

#8#FqQTXXYr   c                    V ^8  d   QhRRRR/# )r   rM   zPath | Noner   zIO[str]r   )r   s   "r   r   r   `   s     	 	{ 	g 	r   c                b   V e   T M\        4       \        ,          pVP                  P                  RRR7       VP	                  R4      p \
        P                  ! V\
        P                  \
        P                  ,          4       V#   \         d    TP                  4        \        R4      hi ; i)NTr2   rQ   zsystray-ai is already running)r;   TRAY_LOCK_NAMErU   r6   openfcntlflockLOCK_EXLOCK_NBr7   closeRuntimeError)rM   	lock_pathrZ   s   &  r   acquire_single_instance_lockrr   `   s    (.?.AN.RI4$7^^C F<FEMMEMM9: M  <:;;<s   :B 'B.c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r   registryr   health_clientr   claude_registryzAccountRegistry | Nonegrok_registryr   z>tuple[ProviderServiceMap, DeviceAuthFlow, DeviceAuthOperation]r   )r   s   "r   r   r   l   sB     "R "R"R&"R ,"R *	"R
 D"Rr   c           	        \        4       p\        W4      p\        \        P                  V \        V4      \        V4      R 7      .pVe>   VP                  \        \        P                  V\        V4      \        4       R 7      4       Ve>   VP                  \        \        P                  V\        V4      \        4       R 7      4       \        V4      WE3# ))toolrt   	lifecyclehealth)r
   r   r   r   rH   r   r   appendCLAUDEr   r	   GROKr   r   r   )rt   ru   rv   rw   device_auth_flowdevice_auth_operation	providerss   &&&&   r   _build_provider_servicesr   l   s     &'/K$**+,AB%m4		
I "(//(-o>)+		
  (--&+M:')		
 i(*:QQr   c                   V ^8  d   QhRR/# )r   r   rO   r   )r   s   "r   r   r      s     9 9d 9r   c            
        \         P                  P                  R R4       \        4       p  \	        4       p\        R/ \        \        P                  4      B pVP                  4         VP                  4        Uu0 uF  qDP                   kK  	  pp\#        V R,          VVP%                  4       R7       \        R/ \        \        P(                  4      B pVP                  4         \#        V R,          VP                  4        Uu0 uF  qDP                   kK  	  upVP%                  4       R7       \        R/ \        \        P*                  4      B p \-        V4      P/                  RRR7       \3        4       p\5        VVVV4      w  rp\7        VVVVV	V
VR
7      pVP9                  4        VP;                  4        R#   \
         d@   p\        RT 2\        P                  R7       \        P                  ! ^4        Rp?ELRp?ii ; iu upi   \&         d@   p\        RT 2\        P                  R7       \        P                  ! ^4        Rp?ELRp?ii ; iu upi   \&         d*   p\        RT 2\        P                  R7        Rp?ELaRp?ii ; i  \0         d*   p\        R	T 2\        P                  R7        Rp?ELYRp?ii ; i)
CODEX_HOMENzsystray_codex_switcher: )filezrouting_rules.json)r^   r   zclaude_routing_rules.jsonzroy-grok)slugaliasz0systray_codex_switcher: grok bootstrap skipped: )rv   rw   provider_servicesr   r   r   )osenvironpopr;   rr   rp   printsysstderrexitr   rK   r   rH   migrate_legacylistr   rf   r   r*   r}   r~   r   import_from_legacy_home	Exceptionr   r   r   buildrun)runtime_tray_dir_lock_handleexcrt   accountr^   rv   rw   ru   r   r   r   	indicators                r   mainr      sj   JJNN<&(*35
 U!9:M:S:S!TUH	3;==?C?||?C33#!..0	
 &](@ATA[A[(\]O""$A::5D5I5I5KL5K'5KL(557	
 $Y&>?R?W?W&XYMY-(@@ 	A 	
 ()MAY	B>)> '#+)3I OOMMOi  (.SZZ@ D * (.SZZ@ M * A(.SZZ@@A  Y@FSZZXXYs   
F? )H ;H%H 'I# I
I# J ?H	
4HH	H I4III# #J.JJK%K		K__main__)N)3
__future__r   rE   rk   rd   r   r   r8   pathlibr   typingr   r?   r   r   claude_auth_operationr   claude_health_clientr	   device_authr
   r   r   grok_auth_operationr   grok_health_clientr   ru   r   r   r   r   r   r   r   r   runtime_pathsr   r5   ri   r(   rp   r*   r;   rK   r\   rf   rr   r   r   r+   r   r   r   <module>r      s    "    	 
    A 5 3 & 5 1 / -   & =.	\ 	
Z	"RJ9x zF r   