
    `gj                        d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	m
Z
  ej                  e      Zd
dZdddd	 	 	 	 	 	 	 dd	Zy)z8TLS verify resolution for httpx/OpenAI provider clients.    )annotationsN)Path)AnyOptionalc                p    | du ryt        | t              r!| j                         j                         dv ryy)NFT>   0noofffalse)
isinstancestrstriplower)
ssl_verifys    C/root/.hermes/venv/lib/python3.12/site-packages/agent/ssl_verify.py_coerce_insecurer      s7    U*c"z'7'7'9'?'?'AE`'`     )	ca_bundler   base_urlc                   t        |      rt        j                  d|xs d       y| xs dj                         xs t	        j
                  dd      j                         xsp t	        j
                  dd      j                         xsJ t	        j
                  dd      j                         xs$ t	        j
                  dd      j                         }|rmt        t        |      j                               }t        j                  j                  |      rt        j                  |	      S t        j                  d
|       y)u  Resolve httpx ``verify`` for provider HTTP clients.

    Priority:
    1. ``ssl_verify: false`` — disable verification (local dev only)
    2. explicit ``ca_bundle`` (per-provider ``ssl_ca_cert`` config field)
    3. ``HERMES_CA_BUNDLE``, ``SSL_CERT_FILE``, ``REQUESTS_CA_BUNDLE``,
       ``CURL_CA_BUNDLE`` env vars
    4. ``True`` (httpx/certifi default)

    ``base_url`` is used only for the insecure-mode warning message.
    u   TLS certificate verification DISABLED (ssl_verify: false) for %s — this is intended for local development only and is unsafe on any network you do not fully control.za custom provider endpointFr   HERMES_CA_BUNDLESSL_CERT_FILEREQUESTS_CA_BUNDLECURL_CA_BUNDLE)cafileuJ   CA bundle path does not exist: %s — falling back to default certificatesT)r   loggerwarningr   osgetenvr   r   
expanduserpathisfilesslcreate_default_context)r   r   r   effective_caca_paths        r   resolve_httpx_verifyr(      s   " 
#0 44		
  
b! 	399',224	399_b)//1	3 99)2.446	3 99%r*002  d<(335677>>'"--W==X	
 r   )r   r   returnbool)r   zOptional[str]r   r   r   r   r)   zbool | ssl.SSLContext)__doc__
__future__r   loggingr   r$   pathlibr   typingr   r   	getLogger__name__r   r   r(    r   r   <module>r3      sg    > "  	 
   			8	$  $	)) ) 	)
 )r   