
    opj                    v    d Z ddlmZ ddlZddlmZmZ  ej                  e      Z	dZ
d	dZd
dZ	 d	 	 	 ddZy)zConfiguration helpers for the Abacus AI image generation provider.

Resolves API credentials and image_gen config from Hermes' config.yaml
and environment variables.
    )annotationsN)AnyDictzhttps://routellm.abacus.ai/v1c                     	 ddl m}   |        }t        |t              r|j	                  d      nd}t        |t              r|S i S # t
        $ r"}t        j                  d|       i cY d}~S d}~ww xY w)z7Read the ``image_gen`` section from Hermes config.yaml.r   load_config	image_genNz#could not load image_gen config: %s)hermes_cli.configr   
isinstancedictget	Exceptionloggerdebug)r   cfgsectionexcs       3/root/.hermes/plugins/image_gen/abacus_ai/config.pyload_image_gen_configr      sb    1m*4S$*?#''+&T$Wd3w;; :C@	s$   AA A 	A1A,&A1,A1c                    	 ddl m}   |        }|j                  dg       }t        |t              r|D ]  }t        |t
              s|j                  d      dk(  s)t        |j                  dt                    j                         j                  d      }t        |j                  dd	            j                         }|s||fc S  dd
l}|j                  j                  dd	      j                         }|j                  j                  dt              j                         j                  d      }|r||fS y# t        $ r Y }w xY w)a  Resolve ``(base_url, api_key)`` for Abacus AI.

    Resolution order:
      1. ``custom_providers`` section in ``config.yaml`` (name: ``abacus-ai``)
      2. ``ABACUS_AI_API_KEY`` / ``ABACUS_AI_BASE_URL`` env vars

    Returns ``("", "")`` when no credentials are found.
    r   r   custom_providersnamez	abacus-aibase_url/api_key NABACUS_AI_API_KEYABACUS_AI_BASE_URL)r   r   )r
   r   r   r   listr   strABACUS_AI_DEFAULT_BASE_URLstriprstripr   osenviron)r   r   customproviderr   r   r$   s          r   resolve_credentialsr(      s*   1m+R0fd#" 1x. V,; $LL *,F
   "(,,y""=>DDFG'00!1* jjnn0"5;;=G


+-GH		 
     s+   AD= D= A'D= D= 
D= =	E	E	c                |   ddl }t        | t              r!| j                         r| j                         gS |j                  j                  dd      j                         }|r|gS t               }t        |j                  d      t              r|j                  d      ni }t        |t              rB|j                  d      }t        |t              r!|j                         r|j                         gS |j                  d      }t        |t              r!|j                         r|j                         gS ddlm	} |gS )	z:Resolve model chain: explicit -> config -> env -> default.r   NABACUS_AI_IMAGE_MODELr   	abacus_aimodel   )DEFAULT_MODEL)
r$   r   r    r"   r%   r   r   r   modelsr.   )explicitr$   env_overrider   scopedvaluetopr.   s           r   resolve_model_chainr5   Q   s     (C X^^%5 !!::>>"92>DDFL~

!C *377;+? FB  &$

7#eS!ekkmKKM?"
'''
C#s				}%?    )returnzDict[str, Any])r7   ztuple[str, str])N)r0   z
str | Noner7   z	list[str])__doc__
__future__r   loggingtypingr   r   	getLogger__name__r   r!   r   r(   r5    r6   r   <module>r?      sT    #  			8	$ = 
/f  r6   