+
    D#j                    <  a  0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
HtHt ^ RIHt RtR]R&   R	tR]R
&   RtR]R&   RtR]R&   ]! 0 Rm4      tR]R&   ]	! RRR7       ! R R4      4       tR R lt ! R R]4      t ! R R]P2                  ]4      t. ROtR# )    )annotationsN)	dataclass)BaseHTTPRequestHandler
HTTPServer)Finalzapi.anthropic.comz
Final[str]ANTHROPIC_HOSTzgpt-CODEX_MODEL_PREFIXz
anthropic.PICKER_MODEL_PREFIXg      @zFinal[float]UPSTREAM_TIMEOUT_SECSzFinal[frozenset[str]]
HOP_BY_HOPT)frozenslotsc                  ,    ] tR t^t$ R]R&   R]R&   RtR# )RouteTargetboolcodexz
str | Nonemodel N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r       _/home/user/overdeck-private-tests/subrouter-s5-systray-latest/modules/systray/claudex_router.pyr   r      s    Kr   r   c                    V ^8  d   QhRRRR/# )   r   objectreturnr   r   )formats   "r   __annotate__r"   "   s     $ $ $; $r   c                
   \        V \        4      '       g   \        R R4      # V P                  \        4      '       d   V \        \        4      R MT pVP                  \        4      '       d   \        RV4      # \        R R4      # )FNT)
isinstancestrr   
startswithr
   lenr	   )r   bares   & r   route_targetr)   "   sm    eS!!5$''050@0@AT0U0U5()+,[`D)**4&&ud##r   c                      ] tR t^+t$ RtR]R&   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tR# ) _HandlerzHTTP/1.1HybridRouterserverc                   V ^8  d   QhRR/# r   r    Noner   )r!   s   "r   r"   _Handler.__annotate__/   s       r   c                	(    V P                  R 4       R# r   N_forwardselfs   &r   do_GET_Handler.do_GET/       cr   c                   V ^8  d   QhRR/# r/   r   )r!   s   "r   r"   r1   2   s      4 r   c                	(    V P                  R 4       R# r3   r4   r6   s   &r   	do_DELETE_Handler.do_DELETE2   r:   r   c                   V ^8  d   QhRR/# r/   r   )r!   s   "r   r"   r1   5   s     ) ) )r   c                	D    V P                  V P                  4       4       R # Nr5   
_read_bodyr6   s   &r   do_POST_Handler.do_POST5       doo'(r   c                   V ^8  d   QhRR/# r/   r   )r!   s   "r   r"   r1   8   s     ) ) )r   c                	D    V P                  V P                  4       4       R # rA   rB   r6   s   &r   do_PUT_Handler.do_PUT8   rF   r   c                   V ^8  d   QhRR/# r/   r   )r!   s   "r   r"   r1   ;   s     ) )$ )r   c                	D    V P                  V P                  4       4       R # rA   rB   r6   s   &r   do_PATCH_Handler.do_PATCH;   rF   r   c               $    V ^8  d   QhRRRRRR/# )r   r!   r%   argsr   r    r0   r   )r!   s   "r   r"   r1   >   s!      # f  r   c                	    R # rA   r   )r7   r!   rP   s   &&*r   log_message_Handler.log_message>       r   c                   V ^8  d   QhRR/# )r   r    bytesr   )r!   s   "r   r"   r1   A   s      E r   c                	    V P                   P                  R 4      pVf   R#  V P                  P                  \	        V4      4      #   \
         d     R# i ; i)content-lengthr   )headersgetrfilereadint
ValueError)r7   lengths   & r   rC   _Handler._read_bodyA   sM    !!"23>	::??3v;// 		s   #A AAc                    V ^8  d   QhRRRR/# )r   bodyrV   r    r0   r   )r!   s   "r   r"   r1   J   s      U t r   c           	     	6   V P                  V4      w  r V P                  V4      p TP	                  T P
                  T P                  YP                  Y4      R7       TP                  4       pT P                  T4       TP                  4        R#   \         d!   pT P                  R RT 24        Rp?R# Rp?ii ; i  \        \        P                  P                  3 d    pT P                  R RT 24        Rp?LRp?ii ; i  TP                  4        i ; i)i  z)claudex router: upstream connect failed: N)rb   rY   z)claudex router: upstream request failed: )_rewrite_for_codex_connectOSError_send_error_jsonrequestcommandpath_upstream_headersgetresponse_relayhttpclientHTTPExceptionclose)r7   rb   r   
connectionexcresponses   &&    r   r5   _Handler._forwardJ   s   --d3	u-J		diid<R<RSW<_   "--/HKK!   	!!#)RSVRW'XY	 223 	Z!!#)RSVRW'XYY	Z sA   B AB? B<B77B<?%D$C>9D >DD Dc                    V ^8  d   QhRRRR/# )r   rb   rV   r    ztuple[bytes, bool]r   )r!   s   "r   r"   r1   \   s     9 9u 91C 9r   c                	   V'       g   VR 3#  \         P                  ! V4      p\	        T\
        4      '       g   TR 3# \        TP                  R4      4      pTP                  '       d   TP                  f   TR 3# TP                  TR&   \         P                  ! T4      P                  R4      R3#   \        \         P                  3 d    TR 3u # i ; i)Fr   utf-8T)jsonloadsUnicodeDecodeErrorJSONDecodeErrorr$   dictr)   rZ   r   r   dumpsencode)r7   rb   payloadtargets   &&  r   rd   _Handler._rewrite_for_codex\   s    ;	jj&G '4((;gkk'23|||v||3;!<<zz'"))'2D88 #D$8$89 	;	s   B2 2CCc                    V ^8  d   QhRRRR/# )r   r   r   r    http.client.HTTPConnectionr   )r!   s   "r   r"   r1   k   s     / /d /'A /r   c                	z    V'       d   V P                   P                  4       # V P                   P                  4       # rA   )r-   connect_codexconnect_anthropic)r7   r   s   &&r   re   _Handler._connectk   s+    ;;,,..{{,,..r   c               $    V ^8  d   QhRRRRRR/# )r   rb   rV   r   r   r    zdict[str, str]r   )r!   s   "r   r"   r1   p   s!     
 
e 
D 
^ 
r   c                	l   V P                   P                  4        UUu/ uF9  w  r4VP                  4       \        9  g   K   VP                  4       R9  g   K7  W4bK;  	  pppV'       d   RV P                  P
                   2M\        VR&   RVR&   V'       d   \        \        V4      4      VR&   V# u uppi )hostz
127.0.0.1:HostidentityzAccept-EncodingContent-Length)r   rX   )	rY   itemslowerr   r-   
codex_portr   r%   r'   )r7   rb   r   keyvaluerY   s   &&&   r   rk   _Handler._upstream_headersp   s     #ll002
2
yy{*, 14D^1^ CJ2 	 

 DIJt{{'='=&>?n%/!"(+CIG$%
s   B0 B0B0c                    V ^8  d   QhRRRR/# )r   rt   zhttp.client.HTTPResponser    r0   r   )r!   s   "r   r"   r1   |   s     ) )7 )D )r   c                	   VP                  R 4      pV P                  VP                  4       VP                  4        FF  w  r4VP	                  4       \
        9   g   VP	                  4       R 8X  d   K5  V P                  W44       KH  	  Ve   V P                  RV4       MV P                  RR4       V P                  4        V P                  R8X  g   VP                  R9   d   R#   VP                  R4      pV'       g   MVfF   V P                  P                  \        V4      R R	2P                  4       V,           R
,           4       MV P                  P                  V4       V P                  P                  4        K  Vf8   V P                  P                  R4       V P                  P                  4        R# R#   \        \         3 d    RT n         R# i ; i)rX   Nr   zTransfer-EncodingchunkedHEADTi    xz
s   
s   0

)   i0  )	getheadersend_responsestatus
getheadersr   r   send_headerend_headersri   r\   wfilewriter'   r   flushBrokenPipeErrorConnectionResetErrorclose_connection)r7   rt   content_lengthr   r   chunks   &&    r   rm   _Handler._relay|   sy   !++,<=8??+"--/JCyy{j(CIIK;K,KS( 0 %-~>0)<<<6!X__
%B	) d+!)JJ$$E
1~T%:%A%A%Ce%Kg%UVJJ$$U+

  "%

  .

  " &  !56 	)$(D!	)s   %F= ?B:F= =GGc               $    V ^8  d   QhRRRRRR/# )r   r   r]   messager%   r    r0   r   )r!   s   "r   r"   r1      s!     ) )s )S )T )r   c           	     	   \         P                  ! R RRR RRV//4      P                  R4      p V P                  V4       V P	                  RR4       V P	                  R\        \        V4      4      4       V P                  4        V P                  P                  V4       R	#   \        \        3 d    RT n         R	# i ; i)
typeerror	api_errorr   rx   zContent-Typezapplication/jsonr   TN)ry   r~   r   r   r   r%   r'   r   r   r   r   r   r   )r7   r   r   r   s   &&& r   rg   _Handler._send_error_json   s    **WgY'PQ

&/ 		)v&^-?@-s3w</@AJJW%!56 	)$(D!	)s   A2B# #B?>B?)r   N)r   r   r   r   protocol_versionr   r8   r=   rD   rI   rM   rR   rC   r5   rd   re   rk   rm   rg   r   r   r   r   r+   r+   +   sT    !)))$9/

)<) )r   r+   c                     a  ] tR t^tRtRtR V 3R llt]R R l4       t]R R l4       t	R	 R
 lt
R R ltR R ltR R ltR R ltRtV ;t# )r,   TFc                    V ^8  d   QhRRRR/# )r   r   r]   r    r0   r   )r!   s   "r   r"   HybridRouter.__annotate__   s     5 53 54 5r   c                	J   < \         SV `  R\        4       Wn        RV n        R# )	127.0.0.1N)r   r   )super__init__r+   r   _thread)r7   r   	__class__s   &&r   r   HybridRouter.__init__   s    )84$04r   c                   V ^8  d   QhRR/# )r   r    r]   r   )r!   s   "r   r"   r      s     + +c +r   c                	:    \        V P                  ^,          4      # )   )r]   server_addressr6   s   &r   portHybridRouter.port   s    4&&q)**r   c                   V ^8  d   QhRR/# )r   r    r%   r   )r!   s   "r   r"   r      s     / /# /r   c                	     R V P                    2# )zhttp://127.0.0.1:)r   r6   s   &r   base_urlHybridRouter.base_url   s    "499+..r   c                   V ^8  d   QhRR/# r   r    r   r   )r!   s   "r   r"   r      s     
 
9 
r   c                	b    \         P                  P                  R V P                  \        R7      # )r   timeout)rn   ro   HTTPConnectionr   r   r6   s   &r   r   HybridRouter.connect_codex   s*    {{))2G * 
 	
r   c                   V ^8  d   QhRR/# r   r   )r!   s   "r   r"   r      s     Z Z#= Zr   c                	T    \         P                  P                  \        \        R 7      # )r   )rn   ro   HTTPSConnectionr   r   r6   s   &r   r   HybridRouter.connect_anthropic   s    {{**>CX*YYr   c                   V ^8  d   QhRR/# r/   r   )r!   s   "r   r"   r      s      t r   c                	    V P                   e   \        R4      h\        P                  ! V P                  RR7      V n         V P                   P                  4        R # )Nzclaudex router already startedT)r   daemon)r   RuntimeError	threadingThreadserve_foreverstartr6   s   &r   r   HybridRouter.start   sB    <<#?@@ ''t/A/A$Or   c                   V ^8  d   QhRR/# r/   r   )r!   s   "r   r"   r      s      d r   c                	    V P                  4        V P                  e$   V P                  P                  ^R7       R V n        V P                  4        R # )Nr   )shutdownr   joinserver_closer6   s   &r   stopHybridRouter.stop   s=    <<#LLa(DLr   c               $    V ^8  d   QhRRRRRR/# )r   rh   r   client_addressr    r0   r   )r!   s   "r   r"   r      s!      F F t r   c                	    R # rA   r   )r7   rh   r   s   &&&r   handle_errorHybridRouter.handle_error   rT   r   )r   r   )r   r   r   r   daemon_threadsallow_reuse_addressr   propertyr   r   r   r   r   r   r   r   __classcell__)r   s   @r   r,   r,      s_    N5 5
 + + / /

Z r   r,   >   tetrailerupgraderr   
keep-alivetransfer-encodingproxy-authenticateproxy-authorization)r   r	   r,   r
   r   r)   )__conditional_annotations__
__future__r   http.clientrn   ry   socketserverr   dataclassesr   http.serverr   r   typingr   r   r   r	   r
   r   	frozensetr   r   r)   r+   ThreadingMixInr,   __all__)r   s   @r   <module>r      s    " "     ! : 0
 0!' J '". Z .&+ | +$- 	/ 	%
! 	 $d#  $
$z)% z)z'<..
 'Tr   