+
    5mj["                    D  a  0 t $ ^ RIHt ^ RI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]P6                  ]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codex
str | Nonemodel N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r       Y/home/user/overdeck-private-tests/workstation-ai-broad2/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__0   s       r   c                	(    V P                  R 4       R# r   N_forwardselfs   &r   do_GET_Handler.do_GET0       cr   c                   V ^8  d   QhRR/# r0   r   )r"   s   "r   r#   r2   3   s      4 r   c                	(    V P                  R 4       R# r4   r5   r7   s   &r   	do_DELETE_Handler.do_DELETE3   r;   r   c                   V ^8  d   QhRR/# r0   r   )r"   s   "r   r#   r2   6   s     ) ) )r   c                	D    V P                  V P                  4       4       R # Nr6   
_read_bodyr7   s   &r   do_POST_Handler.do_POST6       doo'(r   c                   V ^8  d   QhRR/# r0   r   )r"   s   "r   r#   r2   9   s     ) ) )r   c                	D    V P                  V P                  4       4       R # rB   rC   r7   s   &r   do_PUT_Handler.do_PUT9   rG   r   c                   V ^8  d   QhRR/# r0   r   )r"   s   "r   r#   r2   <   s     ) )$ )r   c                	D    V P                  V P                  4       4       R # rB   rC   r7   s   &r   do_PATCH_Handler.do_PATCH<   rG   r   c               $    V ^8  d   QhRRRRRR/# )r   r"   r&   argsr    r!   r1   r   )r"   s   "r   r#   r2   ?   s!      # f  r   c                	    R # rB   r   )r8   r"   rQ   s   &&*r   log_message_Handler.log_message?       r   c                   V ^8  d   QhRR/# )r   r!   bytesr   )r"   s   "r   r#   r2   B   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)r8   lengths   & r   rD   _Handler._read_bodyB   sM    !!"23>	::??3v;// 		s   #A AAc                    V ^8  d   QhRRRR/# )r   bodyrW   r!   r1   r   )r"   s   "r   r#   r2   K   s      U t r   c           	     	n   V P                  V4      w  r V P                  V4      p TP	                  T P
                  T P                  P                  T P                  TR7      TT 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)r   )rc   rZ   z)claudex router: upstream request failed: )_rewrite_for_codex_connectOSError_send_error_jsonrequestcommandr.   upstream_pathpath_upstream_headersgetresponse_relayhttpclientHTTPExceptionclose)r8   rc   r   
connectionexcresponses   &&    r   r6   _Handler._forwardK   s   --d3	u-J	))$))5)A..t;	   "--/HKK!   	!!#)RSVRW'XY	 223 	Z!!#)RSVRW'XYY	Z sA   B- A4C -C8CC%D DD" DD" "D4c                    V ^8  d   QhRRRR/# )r   rc   rW   r!   ztuple[bytes, bool]r   )r"   s   "r   r#   r2   `   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*   r[   r   r   dumpsencode)r8   rc   payloadtargets   &&  r   re   _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#   r2   o   s     / /d /'A /r   c                	z    V'       d   V P                   P                  4       # V P                   P                  4       # rB   )r.   connect_codexconnect_anthropic)r8   r   s   &&r   rf   _Handler._connecto   s+    ;;,,..{{,,..r   c               $    V ^8  d   QhRRRRRR/# )r   rc   rW   r   r   r!   zdict[str, str]r   )r"   s   "r   r#   r2   t   s!      e D ^ r   c                	   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 P                  P                  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   rY   )	rZ   itemslowerr   r.   
codex_portanthropic_host_headerr&   r(   )r8   rc   r   keyvaluerZ   s   &&&   r   rm   _Handler._upstream_headerst   s     #ll002
2
yy{*, 14D^1^ CJ2 	 
  //0122 	
 &0!"(+CIG$%
s   C  C C c                    V ^8  d   QhRRRR/# )r   rv   zhttp.client.HTTPResponser!   r1   r   )r"   s   "r   r#   r2      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)rY   Nr   zTransfer-EncodingchunkedHEADTi    xz
s   
s   0

)   i0  )	getheadersend_responsestatus
getheadersr   r   send_headerend_headersrj   r]   wfilewriter(   r   flushBrokenPipeErrorConnectionResetErrorclose_connection)r8   rv   content_lengthr   r   chunks   &&    r   ro   _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!   r1   r   )r"   s   "r   r#   r2      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   rz   zContent-Typezapplication/jsonr   TN)r{   r   r   r   r   r&   r(   r   r   r   r   r   r   )r8   r   r   r   s   &&& r   rh   _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   r9   r>   rE   rJ   rN   rS   rD   r6   re   rf   rm   ro   rh   r   r   r   r   r,   r,   ,   sT    !)))*9/
 )<) )r   r,   c                     a  ] tR t^tRtRtRR/R V 3R l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 R ltRtV ;t# )r-   TFanthropic_base_urlNc               $    V ^8  d   QhRRRRRR/# )r   r   r^   r   r   r!   r1   r   )r"   s   "r   r#   HybridRouter.__annotate__   s"     5 53 5z 5UY 5r   c               	*  < \         SV `  R\        4       Wn        \        P
                  P                  T;'       g
    R\         24      pVP                  R	9  gS   VP                  '       dA   VP                  f3   VP                  f%   VP                  '       g   VP                  '       d   V P                  4        \        R4      hVP                  V n        VP                  V n        VP$                  ;'       g    VP                  R8X  d   RM^PV n        VP(                  P+                  R4      V n        VP                  R8X  d   RM^PpV P&                  V8X  d   V P"                  MV P"                   RV P&                   2V n        RV n        R# )
	127.0.0.1zhttps://httpsNz#invalid Anthropic upstream base URLi  /:)r   r   >   rp   r   )super__init__r,   r   urllibparseurlsplitr   schemehostnameusernamepasswordqueryfragmentserver_closer_   anthropic_schemeanthropic_hostportanthropic_portrl   rstripanthropic_path_prefixr   _thread)r8   r   r   parseddefault_port	__class__s   &&$  r   r   HybridRouter.__init__   s<   )84$&&'9'X'XxGW=XYMM!22???**|||BCC &$oo$kkVVV]]g5McSU%+[[%7%7%<"$mmw6sB ""l2 ''($*=*=)>? 	"
 15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_addressr7   s   &r   r   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   r7   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)rp   rq   HTTPConnectionr   r   r7   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     
 
#= 
r   c                	    V P                   R 8X  d   \        P                  P                  M\        P                  P                  pV! V P
                  V P                  \        R7      # )r   r   )r   rp   rq   HTTPSConnectionr   r   r   r   )r8   connection_clss   & r   r   HybridRouter.connect_anthropic   sV     $$/ KK''++ 	
 !4!4>S
 	
r   c               $    V ^8  d   QhRRRRRR/# )r   request_pathr&   r   r   r!   r   )r"   s   "r   r#   r      s!     7 7# 7 7# 7r   c               	    V'       g   V P                   '       g   V# VP                  R 4      '       d   TMR V 2pV P                    V 2# )r   )r   r'   )r8   r   r   suffixs   &&$ r   rk   HybridRouter.upstream_path   sJ    222!-!8!8!=!=Q|nCU,,-fX66r   c                   V ^8  d   QhRR/# r0   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startr7   s   &r   r   HybridRouter.start   sB    <<#?@@ ''t/A/A$Or   c                   V ^8  d   QhRR/# r0   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   joinr   r7   s   &r   stopHybridRouter.stop   s=    <<#LLa(DLr   c               $    V ^8  d   QhRRRRRR/# )r   ri   r    client_addressr!   r1   r   )r"   s   "r   r#   r      s!      F F t r   c                	    R # rB   r   )r8   ri   r   s   &&&r   handle_errorHybridRouter.handle_error   rU   r   )r   r   r   r   r   r   r   )r   r   r   r   daemon_threadsallow_reuse_addressr   propertyr   r   r   r   rk   r   r   r  r   __classcell__)r   s   @r   r-   r-      sj    N5D 5 54 + + / /


7 r   r-   >   tetrailerupgradert   
keep-alivetransfer-encodingproxy-authenticateproxy-authorization)r   r	   r-   r
   r   r*   )__conditional_annotations__
__future__r   http.clientrp   r{   socketserverr   urllib.parser   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#  $
$A)% A)HI<..
 IXr   