
    *"hjEH                        d Z ddlmZ ddlZddlmZ ddlmZ  ee      j                         j                  ZdZdZh dZh d	Zdd
Z e        ddddZddZddZe G d d             Zy)z
Configuration dataclass for the Evolve Server.

On import, automatically loads ``evolve_server/.env`` (if present) via
``python-dotenv`` so that all config values can live in a single ``.env``
file rather than being exported in the shell.
    )annotationsN)	dataclass)Pathhttps://api.openai.com/v1zgpt-5.4>   draftdirectreview>   offpollcallbackc                     	 ddl m}  t        t              j                         j                  dz  }|j                         r | |d       yy# t        $ r Y yw xY w)z3Best-effort load of the ``.env`` next to this file.r   )load_dotenvNz.envF)override)dotenvr   ImportErrorr   __file__resolveparentis_file)r   env_paths     4/root/.hermes/SkillClaw/evolve_server/core/config.py_load_dotenvr      sX    & H~%%'..7HHu-   s   A 	AA defaultc                b    |D ])  }t         j                  j                  |      }|dvs'|c S  | S )NNr   osenvironget)r   namesnamevalues       r   
_first_envr%   $   s7     

t$
"L N    c                    t        dd      j                         j                         }|r|S |ryt        d dD              ry| s|ryy)	NEVOLVE_STORAGE_BACKENDr   r   localc              3  Z   K   | ]#  }t         j                  j                  |       % y w)Nr   ).0r#   s     r   	<genexpr>z)_infer_storage_backend.<locals>.<genexpr>2   s%       	

ts   )+)EVOLVE_OSS_ENDPOINTEVOLVE_OSS_BUCKETEVOLVE_OSS_KEY_IDEVOLVE_OSS_KEY_SECRETosss3)r%   striplowerany)endpointbucket
local_rootbackends       r   _infer_storage_backendr:   ,   sV    12>DDFLLNG
 
  6r&   c                h    t        | xs d      j                         j                         }||v r|S |S r   )strr3   r4   )r$   allowedr   
normalizeds       r   _normalize_choicer?   A   s4    U[b!'')//1J#w.:;G;r&   c                  .   e Zd ZU dZded<   dZded<   dZded<   dZded<   dZded<   dZ	ded	<   dZ
ded
<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   d Zded!<   d"Zd#ed$<   d%Zded&<   d'Zd#ed(<   d"Zd#ed)<   d'Zd#ed*<   d+Zded,<   d-Zded.<   d/Z ded0<   d/Z!ded1<   d+Z"ded2<   d/Z#ded3<   dZ$ded4<   dZ%ded5<   dZ&ded6<   d7Z'ded8<   dZ(ded9<   dZ)ded:<   dZ*ded;<   d<Z+ded=<   d>Z,ded?<   d@Z-dedA<   dZ.dedB<   dZ/dedC<   dDZ0dedE<   dFZ1dedG<   dHZ2dedI<   dJZ3dedK<   dLZ4dedM<   dZ5dedN<   d"Z6d#edO<   dDZ7dedP<   dZ8dedQ<   dZ9dedR<   dWdSZ:e;dXdT       Z<e;dXdU       Z=yV)YEvolveServerConfigworkflowr<   enginer   storage_backendstorage_endpointstorage_bucketstorage_access_key_idstorage_secret_access_keystorage_regionstorage_session_tokenoss_endpoint
oss_bucketoss_access_key_idoss_access_key_secretr   group_idr8   llm_api_keyr   llm_base_urlgpt-4o	llm_modeli intllm_max_tokensg?floatllm_temperatureopenai-completionsllm_api_typedynamic_edit_conservativeevolve_strategyTbooluse_success_feedback   evolve_batch_sizeFreject_rewriteuse_session_judgeuse_skill_verifierg      ?skill_verifier_min_scorer   publish_mode   validation_required_resultsvalidation_required_approvalsvalidation_min_mean_scorevalidation_max_rejectionsdebug_dump_dirskill_storage_backendnacos_serverpublicnacos_namespace_idnacos_access_tokennacos_usernamenacos_passwordlatestnacos_labelr	   nacos_publish_moder   skill_reload_modeproxy_reload_urlproxy_reload_api_keyiX  interval_secondsiS"  	http_portevolve_history.jsonlhistory_pathevolve_processed.jsonprocessed_log_pathopenclawopenclaw_binopenclaw_homefreshagent_timeoutworkspace_rootagents_md_pathc           
     X   t        | j                  xs d      j                         j                         xs d| _        t	        dt        dt        | j                  xs d                  | _        t        | j                  xs d      j                         j                         xs d| _        | j                  dvrd| _        t        | j                  t        d      | _
        t        | j                  t        d      | _        t	        dt        | j                  xs d            | _        t	        dt        | j                   xs d            | _        t	        dt        dt        | j"                  xs d                  | _        t	        dt        | j$                  xs d            | _        | j                  d	k(  rn| j&                  r| j&                  d
k(  rt(        | _        | j*                  st        t,        dz        | _        | j.                  st        t,        dz        | _        y y y )NrB   g        g      ?r   >   r   	validatedr	   r   re   agentrR   z.openclaw_homeagent_workspace)r<   rC   r3   r4   maxminrV   rc   rd   r?   rt   _NACOS_PUBLISH_MODESru   _SKILL_RELOAD_MODESrT   rf   rg   rh   ri   rS   _DEFAULT_AGENT_EVOLVE_MODELr   _PACKAGE_DIRr   )selfs    r   __post_init__z EvolveServerConfig.__post_init__   s   $++34::<BBDR
(+U488?C@A)
%   1 1 =X>DDFLLNZRZ$;; (D"3D4K4KMack"l!243I3IK^`f!g+.q#d6V6V6[Z[2\+](-0C8Z8Z8_^_4`-a*),U499@SAB*
& *-QD4R4R4WVW0X)Y&;;'!>>T^^x%?!<%%%(8H)H%I"&&&),9J*J&K# ' "r&   c                   t        dd      }t        dd      }t        dd      }t        dd      }t        d	      }t        d
      }t        dd      }t        |||      }t        dd      j                         j                         xs d}	t        j
                  j                  dd      }
t        j
                  j                  dd      }t        j
                  j                  dd      }t        j
                  j                  dd      }|	dk(  rDt        ddd|
      }
t        dd|xs t              }t        dt              }t        ddd      } | di d|	d |d!|d"|d#|d$|d%|d&|d'|d(|d)|d*|d+t        j
                  j                  d,d-      d.|d/|
d0|d1|d2t        t        j
                  j                  d3d4            d5t        t        j
                  j                  d6d7            d8|d9t        j
                  j                  d:d;      d<t        j
                  j                  d=d>      j                         d?vd@t        t        j
                  j                  dAdB            dCt        j
                  j                  dDdE      j                         dFv dGt        j
                  j                  dHd>      j                         d?vdIt        j
                  j                  dJdE      j                         dFv dKt        t        j
                  j                  dLdM            dNt        j
                  j                  dOdP      dQt        t        j
                  j                  dRd>            dSt        t        j
                  j                  dTd>            dUt        t        j
                  j                  dVdM            dWt        t        j
                  j                  dXd>            dYt        j
                  j                  dZd      d[t        j
                  j                  d\d      d]t        j
                  j                  d^d_      d`t        j
                  j                  dad      dbt        j
                  j                  dcd      ddt        j
                  j                  ded      dft        j
                  j                  dgdh      dit        j
                  j                  djdk      dlt        j
                  j                  dmdn      dot        j
                  j                  dpd      dqt        j
                  j                  drd      dst        t        j
                  j                  dtdu            dvt        t        j
                  j                  dwdx            dyt        j
                  j                  dzd{      d|t        j
                  j                  d}d~      dt        j
                  j                  dd      dt        j
                  j                  dd      dt        j
                  j                  dd>      j                         d?vdt        t        j
                  j                  ddu            dt        j
                  j                  dd      dt        j
                  j                  dd      S )a  Populate every field from environment variables.

        The ``.env`` file has already been loaded into ``os.environ`` by
        ``_load_dotenv()`` at module-import time, so a plain
        ``os.environ.get`` picks up both shell exports and ``.env`` values.
        EVOLVE_STORAGE_ENDPOINTr-   EVOLVE_STORAGE_BUCKETr.   EVOLVE_STORAGE_ACCESS_KEY_IDr/    EVOLVE_STORAGE_SECRET_ACCESS_KEYr0   EVOLVE_STORAGE_REGIONEVOLVE_STORAGE_SESSION_TOKENEVOLVE_STORAGE_LOCAL_ROOTEVOLVE_LOCAL_ROOTEVOLVE_ENGINErB   r   OPENAI_API_KEYr   OPENAI_BASE_URLr   EVOLVE_MODELrR   EVOLVE_LLM_API_TYPErX   r   AGENT_EVOLVE_LLM_API_KEYAGENT_EVOLVE_API_KEYAGENT_EVOLVE_LLM_BASE_URLAGENT_EVOLVE_BASE_URLAGENT_EVOLVE_MODELAGENT_EVOLVE_LLM_API_TYPErC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   EVOLVE_GROUP_IDr   r8   rP   rQ   rS   rU   EVOLVE_LLM_MAX_TOKENS100000rW   EVOLVE_LLM_TEMPERATUREz0.4rY   r[   EVOLVE_STRATEGYrZ   r]   EVOLVE_USE_SUCCESS_FEEDBACK1>   0nofalser_   EVOLVE_BATCH_SIZE20r`   EVOLVE_REJECT_REWRITEr   >   r   yestruera   EVOLVE_USE_SESSION_JUDGErb   EVOLVE_USE_SKILL_VERIFIERrc   EVOLVE_SKILL_VERIFIER_MIN_SCORE0.75rd   EVOLVE_PUBLISH_MODEr   rf   "EVOLVE_VALIDATION_REQUIRED_RESULTSrg   $EVOLVE_VALIDATION_REQUIRED_APPROVALSrh    EVOLVE_VALIDATION_MIN_MEAN_SCOREri    EVOLVE_VALIDATION_MAX_REJECTIONSrk   EVOLVE_SKILL_STORAGE_BACKENDrl   EVOLVE_NACOS_SERVERrn   EVOLVE_NACOS_NAMESPACE_IDrm   ro   EVOLVE_NACOS_ACCESS_TOKENrp   EVOLVE_NACOS_USERNAMErq   EVOLVE_NACOS_PASSWORDrs   EVOLVE_NACOS_LABELrr   rt   EVOLVE_NACOS_PUBLISH_MODEr	   ru   EVOLVE_SKILL_RELOAD_MODEr   rv   EVOLVE_PROXY_RELOAD_URLrw   EVOLVE_PROXY_RELOAD_API_KEYrx   EVOLVE_INTERVAL600ry   EVOLVE_PORT8787r{   EVOLVE_HISTORY_LOGrz   r}   EVOLVE_PROCESSED_LOGr|   r   AGENT_EVOLVE_OPENCLAW_BINr~   r   AGENT_EVOLVE_OPENCLAW_HOMEr   AGENT_EVOLVE_FRESHr   AGENT_EVOLVE_TIMEOUTr   AGENT_EVOLVE_WORKSPACE_ROOTr   AGENT_EVOLVE_AGENTS_MD )r%   r:   r3   r4   r   r    r!   _DEFAULT_AGENT_EVOLVE_BASE_URLr   rT   rV   )clsrE   rF   rG   rH   rI   rJ   r8   rD   rC   rP   rQ   rS   rY   s                 r   from_envzEvolveServerConfig.from_env   sa    &&?AVW#$;=PQ *+IK^ _$./QSj$k!#$;< *+I J ;=PQ
01A>S]^OZ@FFHNNP^T^jjnn%5r:zz~~&79TUJJNN>8<	zz~~&;=QRW$*& #	K &+'$F(FL
 #$3I &+%,L  6
6
+6
 .6
 *	6

 #86
 '@6
 *6
 #86
 *6
 &6
 46
 #<6
 ZZ^^$5yA6
 "6
 $6
  &!6
"  #6
$ rzz~~.ExPQ%6
& ""**..1I5"QR'6
( &)6
* JJNN+<>YZ+6
, "$0Ms!S!Y!Y![cw!w-6
. ""**..1Dd"KL/6
0 ::>>*A3GMMOSgg16
2 !jjnn-GMSSU]qq36
4  "zz~~.I3OUUW[oo56
6 &+2::>>:[]c+d%e76
8 (=xH96
: ),BJJNN;_ad,e(f;6
< +.bjjnn=ceh.i*j=6
> ',BJJNN;]_e,f&g?6
@ '*"**..9[]`*a&bA6
B #%**..1OQS"TC6
D (=rBE6
F  "zz~~.I8TG6
H  "zz~~.I2NI6
J ::>>*A2FK6
L ::>>*A2FM6
N 

';XFO6
P  "zz~~.I8TQ6
R !jjnn-GPS6
T  ZZ^^,ErJU6
V "$0Mr!RW6
X !0A5!IJY6
Z "**..?@[6
\ (<>TU]6
^  "zz~~.DF]^_6
` (CZPa6
b **..)ErJc6
d **..!5s;AACK__e6
f bjjnn-CUKLg6
h ::>>*GLi6
j ::>>*BBGk6
 6	
r&   c                r   t        dd      j                         j                         xs d}t        t	        |dd      xs d      j                         j                         }t        t	        |dd      xs d      j                         j                         xs |}t        t	        |dd      xs d      j                         j                         }t        t	        |dd      xs t	        |d	d      xs d      }|d
k(  r|sdn|}t        t	        |dd      xs t	        |dd      xs d      }t        t	        |dd      xs t	        |dd      xs d      }	t        t	        |dd      xs t	        |dd      xs d      }
t        t	        |dd      xs  t
        j                  j                  dd            }|j                  xs |j                  }|j                  xs |j                  }t
        j                  j                  d|j                  xs d      }t
        j                  j                  dd      }|dk(  rDt        ddd|      }t        dd|xs t              }t        dt              }t        ddd      }t        dd      }|s%|r|}n |rd }n|r|d
k7  r|}n|s|r|d
k7  rd!|v rd"nd#}t        t	        |d$d      xs d      }|s|d
k(  r|d
k(  r|} | di d%|d&|d'|d(|d)|	d*|
d+t        t	        |d,d      xs d      d-t        t	        |d.d      xs d      d/|d0|d1|	d2|
d3|j                  d4|d5|d6|d7|d8|d9t
        j                  j                  d:d;      d<t
        j                  j                  d=d>      j                         d?vd@t!        t
        j                  j                  dAdB            dCt
        j                  j                  dDdE      j                         dFv dGt
        j                  j                  dHd>      j                         d?vdIt
        j                  j                  dJdE      j                         dFv dKt#        t
        j                  j                  dLdM            dNt
        j                  j                  dOdP      dQt!        t
        j                  j                  dRd>            dSt!        t
        j                  j                  dTd>            dUt#        t
        j                  j                  dVdM            dWt!        t
        j                  j                  dXd>            dY|d
k(  rd
nddZ|d[t        t	        |d\d      xs d]      d^t        t	        |d_d      xs d      d`t        t	        |dad      xs d      dbt        t	        |dcd      xs d      ddt        t	        |ded      xs df      dgt        t	        |dhd      xs di      djt        t	        |dkd      xs dl      dmt        t	        |dnd      xs d      dot        t	        |dpd      xs d      dqt
        j                  j                  drds      dtt
        j                  j                  dud      dvt
        j                  j                  dwd>      j                         d?vdxt!        t
        j                  j                  dydz            d{t
        j                  j                  d|d      d}t
        j                  j                  d~d      S )zJBuild from an existing ``SkillClawConfig`` (reuse sharing + LLM settings).r   rB   r   sharing_backendr   sharing_skill_backendsharing_session_backendsharing_endpointsharing_oss_endpointnacossharing_bucketsharing_oss_bucketsharing_access_key_idsharing_oss_access_key_idsharing_secret_access_keysharing_oss_access_key_secretsharing_local_rootr   r   rR   r   rX   r   r   r   r   r   r   r   r   r(   r)   zaliyuncs.comr1   r2   sharing_nacos_serverrC   rD   rE   rF   rG   rH   rI   sharing_regionrJ   sharing_session_tokenrK   rL   rM   rN   rO   r8   rP   rQ   rS   rY   r[   r   rZ   r]   r   r   >   r   r   r   r_   r   r   r`   r   r   >   r   r   r   ra   r   rb   r   rc   r   r   rd   r   r   rf   r   rg   r   rh   r   ri   r   rk   rl   rn   sharing_nacos_namespace_idrm   ro   sharing_nacos_access_tokenrp   sharing_nacos_usernamerq   sharing_nacos_passwordrs   sharing_nacos_labelrr   rt   sharing_nacos_publish_moder	   ru   sharing_skill_reload_moder   rv   evolve_proxy_reload_urlrw   proxy_api_keyr   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   )r%   r3   r4   r<   getattrr   r    r!   rP   prm_api_keyllm_api_baseprm_urlllm_model_idr   r   sharing_group_idrT   rV   )r   configrC   r   skill_backendsession_backendr   rE   rF   rG   rH   r8   rP   rQ   rS   rY   rD   rl   s                     r   from_skillclaw_configz(EvolveServerConfig.from_skillclaw_config  sq    OZ@FFHNNP^T^gf.?DJKQQSYY[GF,CRHNBOUUW]]_rcrgf.GLRPRSYY[aacF.3hwvG]_a7bhfh
 "1G!;O2YiWV-=rBugfVjlnFousuv #F3R8rGFLgik<lrpr!
 %(F7< v>C%
!
 )=rBmbjjnnUhjlFmn
((>F,>,>**<fnnJJNN>63F3F3R(S	zz~~&;=QRW$*& #	K &+'$F(FL
 #$3I &+%,L %%=rJ"1") _%?"1 $4/W:T+9=M+M%SW76+A2FL"M7 :}PW?W+L 0
0
+0
 .0
 *	0

 #80
 '@0
 wv/?DJK0
 #&gf6Mr&R&XVX"Y0
 *0
 &0
 40
 #<0
 ,,0
 "0
 $0
  &!0
"  #0
$ &%0
& JJNN+<>YZ'0
( "$0Ms!S!Y!Y![cw!w)0
* ""**..1Dd"KL+0
, ::>>*A3GMMOSgg-0
. !jjnn-GMSSU]qq/0
0  "zz~~.I3OUUW[oo10
2 &+2::>>:[]c+d%e30
4 (=xH50
6 ),BJJNN;_ad,e(f70
8 +.bjjnn=ceh.i*j90
: ',BJJNN;]_e,f&g;0
< '*"**..9[]`*a&b=0
> .;g-E'2?0
@ &A0
B  #763OQS#T#`X`aC0
D  #763OQS#T#ZXZ[E0
F wv/GLRPRSG0
H wv/GLRPRSI0
J GF,A2FR(SK0
L  #763OQS#T#`X`aM0
N "'&2Mr"R"\V\]O0
P !1JB!O!USUVQ0
R "%WV_b%I%OR!PS0
T (CZPU0
V **..)ErJW0
X **..!5s;AACK__Y0
Z bjjnn-CUKL[0
\ ::>>*GL]0
^ ::>>*BBG_0
 0	
r&   NreturnNone)r   z'EvolveServerConfig')>__name__
__module____qualname__rC   __annotations__rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r8   rP   rQ   rS   rU   rW   rY   r[   r]   r_   r`   ra   rb   rc   rd   rf   rg   rh   ri   rj   rk   rl   rn   ro   rp   rq   rs   rt   ru   rv   rw   rx   ry   r{   r}   r   r   r   r   r   r   r   classmethodr   r   r   r&   r   rA   rA   F   sy   FC OScNC!#3#%'s'NC!#3# L#Js!#3#HcJ K3L#3Is NC  OU ,L#,6OS6!%$%  s ND "t"$$&*e* L# '(()*!3*'+u+%&s&NC "$3#L#&&  NCNCK&&#s#c "#"  cIs /L#.55 #L#"M3E4M3NCNCL4 b
 b
H n
 n
r&   rA   r   )r"   r<   r   r<   r   r<   )r6   r<   r7   r<   r8   r<   r   r<   )r$   r<   r=   zset[str]r   r<   r   r<   )__doc__
__future__r   r   dataclassesr   pathlibr   r   r   r   r   r   r   r   r   r   r%   r:   r?   rA   r   r&   r   <module>r     s    # 	 ! H~%%'..!< ' 4 1 .  ,. *<
 w
 w
 w
r&   